提交修改

This commit is contained in:
quyixiao 2025-12-26 09:34:02 +08:00
parent 2d8e53efc0
commit 6c13b4ccac
14 changed files with 597 additions and 201 deletions

View File

@ -0,0 +1,37 @@
package com.heyu.api.data.dao.vv;
/**
* <p>
* 推广码 服务类
* </p>
*
* @author quyixiao
* @since 2025-12-26
*/
import com.heyu.api.data.entity.vv.VvPromoterCodeEntity;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
@Mapper
public interface VvPromoterCodeDao extends BaseMapper<VvPromoterCodeEntity> {
VvPromoterCodeEntity selectVvPromoterCodeById(@Param("id")Long id);
Long insertVvPromoterCode(VvPromoterCodeEntity vvPromoterCode);
Long insertOrUpdateVvPromoterCode(VvPromoterCodeEntity vvPromoterCode);
int updateVvPromoterCodeById(VvPromoterCodeEntity vvPromoterCode);
int updateCoverVvPromoterCodeById(VvPromoterCodeEntity vvPromoterCode);
int deleteVvPromoterCodeById(@Param("id")Long id);
VvPromoterCodeEntity selectVvPromoterCodeByCode(String promoterCode);
}

View File

@ -0,0 +1,182 @@
package com.heyu.api.data.entity.vv;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import com.lz.mybatis.plugin.annotations.AS;
import java.math.BigDecimal;
import java.util.Date;import java.util.Date;
/**
*推广码
* @author quyixiao
* @since 2025-12-26
*/
@Data
@TableName("vv_promoter_code")
public class VvPromoterCodeEntity implements java.io.Serializable {
private static final long serialVersionUID = 1L;
public final static String CLASS_NAME ="com.heyu.api.data.entity.vv.VvPromoterCodeEntity:";
public final static String all = CLASS_NAME + "*";
public final static String id_ = CLASS_NAME + "id"; //
public final static String is_delete = CLASS_NAME + "is_delete"; // 是否删除0 1 删除
public final static String create_time = CLASS_NAME + "create_time"; // 创建时间
public final static String modify_time = CLASS_NAME + "modify_time"; // 修改时间
public final static String create_timestamp = CLASS_NAME + "create_timestamp"; // 时间毫秒值
public final static String promoter_code = CLASS_NAME + "promoter_code"; // 推广码
public final static String content_ = CLASS_NAME + "content"; // 推广内容
public final static String buyer_id = CLASS_NAME + "buyer_id"; // 买家id
//
@TableId(value = "id", type = IdType.AUTO)
private Long id;
//是否删除0 1 删除
private Integer isDelete;
//创建时间
private Date createTime;
//修改时间
private Date modifyTime;
//时间毫秒值
private Long createTimestamp;
//推广码
private String promoterCode;
//推广内容
private String content;
//买家id
private Long buyerId;
/**
*
* @return
*/
public Long getId() {
return id;
}
/**
*
* @param id
*/
public void setId(Long id) {
this.id = id;
}
/**
* 是否删除0 1 删除
* @return
*/
public Integer getIsDelete() {
return isDelete;
}
/**
* 是否删除0 1 删除
* @param isDelete
*/
public void setIsDelete(Integer isDelete) {
this.isDelete = isDelete;
}
/**
* 创建时间
* @return
*/
public Date getCreateTime() {
return createTime;
}
/**
* 创建时间
* @param createTime
*/
public void setCreateTime(Date createTime) {
this.createTime = createTime;
}
/**
* 修改时间
* @return
*/
public Date getModifyTime() {
return modifyTime;
}
/**
* 修改时间
* @param modifyTime
*/
public void setModifyTime(Date modifyTime) {
this.modifyTime = modifyTime;
}
/**
* 时间毫秒值
* @return
*/
public Long getCreateTimestamp() {
return createTimestamp;
}
/**
* 时间毫秒值
* @param createTimestamp
*/
public void setCreateTimestamp(Long createTimestamp) {
this.createTimestamp = createTimestamp;
}
/**
* 推广码
* @return
*/
public String getPromoterCode() {
return promoterCode;
}
/**
* 推广码
* @param promoterCode
*/
public void setPromoterCode(String promoterCode) {
this.promoterCode = promoterCode;
}
/**
* 推广内容
* @return
*/
public String getContent() {
return content;
}
/**
* 推广内容
* @param content
*/
public void setContent(String content) {
this.content = content;
}
/**
* 买家id
* @return
*/
public Long getBuyerId() {
return buyerId;
}
/**
* 买家id
* @param buyerId
*/
public void setBuyerId(Long buyerId) {
this.buyerId = buyerId;
}
@Override
public String toString() {
return "VvPromoterCodeEntity{" +
",id=" + id +
",isDelete=" + isDelete +
",createTime=" + createTime +
",modifyTime=" + modifyTime +
",createTimestamp=" + createTimestamp +
",promoterCode=" + promoterCode +
",content=" + content +
",buyerId=" + buyerId +
"}";
}
}

View File

@ -10,7 +10,7 @@ import java.util.Date;import java.util.Date;
/** /**
*推广者 *推广者
* @author quyixiao * @author quyixiao
* @since 2025-11-21 * @since 2025-12-26
*/ */
@Data @Data
@ -31,6 +31,7 @@ private static final long serialVersionUID = 1L;
public final static String type_ = CLASS_NAME + "type"; // link,qrcode等 public final static String type_ = CLASS_NAME + "type"; // link,qrcode等
public final static String buyer_info = CLASS_NAME + "buyer_info"; // 活动信息 public final static String buyer_info = CLASS_NAME + "buyer_info"; // 活动信息
public final static String promoter_url = CLASS_NAME + "promoter_url"; // 相关的url public final static String promoter_url = CLASS_NAME + "promoter_url"; // 相关的url
public final static String promoter_code = CLASS_NAME + "promoter_code"; // 推广码
// //
@TableId(value = "id", type = IdType.AUTO) @TableId(value = "id", type = IdType.AUTO)
private Long id; private Long id;
@ -52,6 +53,8 @@ private static final long serialVersionUID = 1L;
private String buyerInfo; private String buyerInfo;
//相关的url //相关的url
private String promoterUrl; private String promoterUrl;
//推广码
private String promoterCode;
/** /**
* *
* @return * @return
@ -202,6 +205,21 @@ private static final long serialVersionUID = 1L;
this.promoterUrl = promoterUrl; this.promoterUrl = promoterUrl;
} }
/**
* 推广码
* @return
*/
public String getPromoterCode() {
return promoterCode;
}
/**
* 推广码
* @param promoterCode
*/
public void setPromoterCode(String promoterCode) {
this.promoterCode = promoterCode;
}
@Override @Override
public String toString() { public String toString() {
return "VvPromoterEntity{" + return "VvPromoterEntity{" +
@ -215,6 +233,7 @@ private static final long serialVersionUID = 1L;
",type=" + type + ",type=" + type +
",buyerInfo=" + buyerInfo + ",buyerInfo=" + buyerInfo +
",promoterUrl=" + promoterUrl + ",promoterUrl=" + promoterUrl +
",promoterCode=" + promoterCode +
"}"; "}";
} }
} }

View File

@ -0,0 +1,68 @@
package com.heyu.api.data.service.impl.vv;
/**
* <p>
* 推广码 服务类
* </p>
*
* @author quyixiao
* @since 2025-12-26
*/
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.heyu.api.data.dao.vv.VvPromoterCodeDao;
import com.heyu.api.data.entity.vv.VvPromoterCodeEntity;
import com.heyu.api.data.service.vv.VvPromoterCodeService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@Service
public class VvPromoterCodeServiceImpl extends ServiceImpl<VvPromoterCodeDao, VvPromoterCodeEntity> implements VvPromoterCodeService {
@Autowired
private VvPromoterCodeDao vvPromoterCodeDao;
@Override
public VvPromoterCodeEntity selectVvPromoterCodeById(Long id){
return vvPromoterCodeDao.selectVvPromoterCodeById(id);
}
@Override
public Long insertVvPromoterCode(VvPromoterCodeEntity vvPromoterCode){
return vvPromoterCodeDao.insertVvPromoterCode(vvPromoterCode);
}
@Override
public Long insertOrUpdateVvPromoterCode(VvPromoterCodeEntity vvPromoterCode){
return vvPromoterCodeDao.insertOrUpdateVvPromoterCode(vvPromoterCode);
}
@Override
public int updateVvPromoterCodeById(VvPromoterCodeEntity vvPromoterCode){
return vvPromoterCodeDao.updateVvPromoterCodeById(vvPromoterCode);
}
@Override
public int updateCoverVvPromoterCodeById(VvPromoterCodeEntity vvPromoterCode){
return vvPromoterCodeDao.updateCoverVvPromoterCodeById(vvPromoterCode);
}
@Override
public int deleteVvPromoterCodeById(Long id){
return vvPromoterCodeDao.deleteVvPromoterCodeById(id);
}
}

View File

@ -0,0 +1,34 @@
package com.heyu.api.data.service.vv;
/**
* <p>
* 推广码 服务类
* </p>
*
* @author quyixiao
* @since 2025-12-26
*/
import com.baomidou.mybatisplus.extension.service.IService;
import com.heyu.api.data.entity.vv.VvPromoterCodeEntity;
public interface VvPromoterCodeService extends IService<VvPromoterCodeEntity> {
VvPromoterCodeEntity selectVvPromoterCodeById(Long id);
Long insertVvPromoterCode(VvPromoterCodeEntity vvPromoterCode);
Long insertOrUpdateVvPromoterCode(VvPromoterCodeEntity vvPromoterCode);
int updateVvPromoterCodeById(VvPromoterCodeEntity vvPromoterCode);
int updateCoverVvPromoterCodeById(VvPromoterCodeEntity vvPromoterCode);
int deleteVvPromoterCodeById(Long id);
}

View File

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.heyu.api.data.dao.vv.VvPromoterCodeDao">
</mapper>

View File

@ -94,7 +94,7 @@ public class MysqlMain_insert {
List<TablesBean> list = new ArrayList<TablesBean>(); List<TablesBean> list = new ArrayList<TablesBean>();
list.add(new TablesBean("vv_front_page")); list.add(new TablesBean("vv_promoter_code"));

View File

@ -48,7 +48,7 @@ public class MysqlMain_update {
} }
List<TablesBean> list = new ArrayList<TablesBean>(); List<TablesBean> list = new ArrayList<TablesBean>();
list.add(new TablesBean("vv_front_page")); list.add(new TablesBean("vv_promoter"));
Map<String, String> map = MysqlUtil2ShowCreateTable.getComments(); Map<String, String> map = MysqlUtil2ShowCreateTable.getComments();
for (int i = 0; i < list.size(); i++) { for (int i = 0; i < list.size(); i++) {

View File

@ -1,18 +1,29 @@
package com.heyu.api.alibaba.request.mm.order; package com.heyu.api.alibaba.request.mm.order;
import com.heyu.api.data.entity.vv.VvActivityEntity;
import lombok.Data; import lombok.Data;
@Data @Data
public class VvActivityDTO extends VvActivityEntity { public class VvActivityDTO{
/*** /***
* 过期时间 * 过期时间
*/ */
private Long activityExpiredTime; private Long activityExpiredTime;
/*** /***
* 推广者id * 推广者id,默认是buyerId
*/ */
private Long promoterId; private Long buyerId;
/***
* 活动id
*/
private Long activityId;
/***
*
*/
private String promoterCode;
} }

View File

@ -1,119 +0,0 @@
package com.heyu.api.controller.vv;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.heyu.api.alibaba.request.mm.ActivityUtils;
import com.heyu.api.alibaba.request.mm.order.PromoterBuyerInfoDTO;
import com.heyu.api.alibaba.request.mm.order.VvActivityDTO;
import com.heyu.api.alibaba.request.vv.AppActivityRequest;
import com.heyu.api.common.annotation.AppLogin;
import com.heyu.api.common.annotation.Describe;
import com.heyu.api.data.constants.ApiConstants;
import com.heyu.api.data.dao.vv.VvActivityDao;
import com.heyu.api.data.dao.vv.VvBuyerDao;
import com.heyu.api.data.dao.vv.VvPromoterBuyerDao;
import com.heyu.api.data.dao.vv.VvPromoterDao;
import com.heyu.api.data.entity.vv.VvActivityEntity;
import com.heyu.api.data.entity.vv.VvBuyerEntity;
import com.heyu.api.data.entity.vv.VvPromoterBuyerEntity;
import com.heyu.api.data.entity.vv.VvPromoterEntity;
import com.heyu.api.data.utils.DateUtils;
import com.heyu.api.data.utils.R;
import com.heyu.api.data.utils.RedisUtils;
import com.heyu.api.data.utils.StringUtils;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.Date;
import java.util.List;
@Slf4j
@RestController
@RequestMapping("/app/activity")
@AppLogin
public class AppActivityController {
@Autowired
private RedisUtils redisUtils;
@Autowired
private VvActivityDao vvActivityDao;
@Autowired
private VvPromoterDao vvPromoterDao;
@Autowired
private VvPromoterBuyerDao vvPromoterBuyerDao;
@Autowired
private VvBuyerDao vvBuyerDao;
/***
* 列表
* /app/buyer/info
*/
@Describe("访问推广链接")
@RequestMapping("/register")
public R register(@RequestBody AppActivityRequest request) {
VvPromoterEntity vvPromoterEntity = vvPromoterDao.selectVvPromoterById(request.getPromoterId());
if (vvPromoterEntity == null) {
return R.error("推广信息不存在");
}
Long activityId = vvPromoterEntity.getActivityId();
if (vvPromoterEntity.getActivityId() == null) {
activityId = 2L;
}
VvActivityEntity vvActivityEntity = vvActivityDao.selectVvActivityById(activityId);
String activityInfo = redisUtils.get(ApiConstants.token_activity + request.getToken());
VvActivityDTO vvActivityOldDTO = null;
if (StringUtils.isNotEmpty(activityInfo)) {
vvActivityOldDTO = JSONObject.parseObject(activityInfo, VvActivityDTO.class);
}
PromoterBuyerInfoDTO promoterBuyerInfoDTO = JSONObject.parseObject(JSON.toJSONString(vvActivityOldDTO), PromoterBuyerInfoDTO.class);
VvBuyerEntity wasBuyerEntity = vvBuyerDao.selectVvBuyerById(promoterBuyerInfoDTO.getWasBuyerId());
List<VvBuyerEntity> promoterBuyerList = vvBuyerDao.selectVvBuyerByIdList(promoterBuyerInfoDTO.getPromoterBuyerIdList());
for (VvBuyerEntity promoterBuyerEntity : promoterBuyerList) {
VvPromoterBuyerEntity vvPromoterBuyerEntity = new VvPromoterBuyerEntity();
vvPromoterBuyerEntity.setPromoterId(request.getPromoterId());
vvPromoterBuyerEntity.setPromoterBuyerId(promoterBuyerEntity.getId());
vvPromoterBuyerEntity.setPromoterBuyerName(promoterBuyerEntity.getBuyerName());
vvPromoterBuyerEntity.setPromoterBuyerPhone(promoterBuyerEntity.getBuyerPhone());
vvPromoterBuyerEntity.setPromoterBuyerWeixin(promoterBuyerEntity.getBuyerWeixin());
vvPromoterBuyerEntity.setWasBuyerId(wasBuyerEntity.getId());
vvPromoterBuyerEntity.setWasBuyerName(wasBuyerEntity.getBuyerName());
vvPromoterBuyerEntity.setWasBuyerPhone(wasBuyerEntity.getBuyerPhone());
vvPromoterBuyerEntity.setWasBuyerWeixin(wasBuyerEntity.getBuyerWeixin());
vvPromoterBuyerDao.insertOrUpdateVvPromoterBuyer(vvPromoterBuyerEntity);
}
if (StringUtils.isNotEmpty(request.getToken())) {
VvActivityDTO vvActivityDTO = new VvActivityDTO();
BeanUtils.copyProperties(vvActivityEntity, vvActivityDTO);
vvActivityDTO = ActivityUtils.bestActivityDTO(vvActivityDTO, vvActivityOldDTO);
Date endTime = DateUtils.addMinutes(new Date(), 30);
vvActivityDTO.setActivityExpiredTime(endTime.getTime());
vvActivityDTO.setPromoterId(request.getPromoterId());
redisUtils.set(ApiConstants.token_activity + request.getToken(), JSON.toJSONString(vvActivityDTO), RedisUtils.thirty_minute);
return R.ok().setData(vvActivityEntity);
}
return R.ok();
}
}

View File

@ -0,0 +1,117 @@
package com.heyu.api.controller.vv;
import com.alibaba.fastjson.JSON;
import com.heyu.api.alibaba.request.mm.order.VvActivityDTO;
import com.heyu.api.alibaba.request.vv.AppCreatePromoterCodeRequest;
import com.heyu.api.alibaba.request.vv.AppCreatePromoterLinkRequest;
import com.heyu.api.alibaba.request.vv.resp.AppCreatePromoterCodeResp;
import com.heyu.api.alibaba.request.vv.resp.AppCreatePromoterLinkResp;
import com.heyu.api.common.annotation.AppLogin;
import com.heyu.api.common.annotation.Describe;
import com.heyu.api.data.dao.vv.*;
import com.heyu.api.data.entity.vv.VvPromoterCodeEntity;
import com.heyu.api.data.utils.MD5Utils;
import com.heyu.api.data.utils.R;
import com.heyu.api.data.utils.RedisUtils;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.Random;
@Slf4j
@RestController
@RequestMapping("/app")
@AppLogin
public class AppPromoterCodeController {
@Autowired
private VvPromoterCodeDao vvPromoterCodeDao;
@Value("${eb.config.weixin.pay.appid}")
private String appid;
@Autowired
private RedisUtils redisUtils;
@Autowired
private VvActivityDao vvActivityDao;
@Autowired
private VvPromoterDao vvPromoterDao;
@Autowired
private VvPromoterBuyerDao vvPromoterBuyerDao;
@Autowired
private VvBuyerDao vvBuyerDao;
/***
* 列表
* http://localhost:8888/app/create/promoter/code
*/
@Describe("创建推广码")
@RequestMapping("/create/promoter/code")
public R promoterCode(@RequestBody AppCreatePromoterCodeRequest request) {
VvActivityDTO vvActivityDTO = getPromoterCode(request.getBuyerId());
insertPromoterCode(vvActivityDTO);
AppCreatePromoterCodeResp promoterCodeResp = new AppCreatePromoterCodeResp();
promoterCodeResp.setPromoterCode(vvActivityDTO.getPromoterCode());
return R.ok().setData(promoterCodeResp);
}
/***
* 列表
* http://localhost:8888/app/create/promoter/link
*
* weixin://dl/business/?appid=wx078a627fc7c5f8e6&path=pages/index/index
*/
@Describe("创建推广链接")
@RequestMapping("/create/promoter/link")
public R promoterlink(@RequestBody AppCreatePromoterLinkRequest request) {
AppCreatePromoterLinkResp promoterLinkResp = new AppCreatePromoterLinkResp();
VvActivityDTO vvActivityDTO = getPromoterCode(request.getBuyerId());
String url = "weixin://dl/business/?appid="+appid+"&path=pages/index/index?promoterCode=" + vvActivityDTO.getPromoterCode();
promoterLinkResp.setPromoterLink(url);
insertPromoterCode(vvActivityDTO);
return R.ok().setData(promoterLinkResp);
}
public VvActivityDTO getPromoterCode(Long buyerId) {
Random random = new Random(100000000L);
VvActivityDTO vvActivityDTO = new VvActivityDTO();
vvActivityDTO.setBuyerId(buyerId);
vvActivityDTO.setActivityId(2L);
String promoteCode = MD5Utils.encode(System.nanoTime() + random.nextInt() + "" + buyerId);
vvActivityDTO.setPromoterCode(promoteCode);
return vvActivityDTO;
}
public void insertPromoterCode(VvActivityDTO vvActivityDTO){
VvPromoterCodeEntity vvPromoterCode = new VvPromoterCodeEntity();
vvPromoterCode.setPromoterCode(vvActivityDTO.getPromoterCode());
vvPromoterCode.setContent(JSON.toJSONString(vvActivityDTO));
vvPromoterCode.setBuyerId(vvActivityDTO.getBuyerId());
vvPromoterCode.setCreateTimestamp(System.currentTimeMillis());
vvPromoterCodeDao.insert(vvPromoterCode);
}
}

View File

@ -0,0 +1,59 @@
package com.heyu.api.controller.vv;
import com.alibaba.fastjson.JSON;
import com.heyu.api.alibaba.request.mm.order.VvActivityDTO;
import com.heyu.api.alibaba.request.vv.AppParsePromoterRequest;
import com.heyu.api.common.annotation.Describe;
import com.heyu.api.data.constants.ApiConstants;
import com.heyu.api.data.dao.vv.VvActivityDao;
import com.heyu.api.data.dao.vv.VvPromoterCodeDao;
import com.heyu.api.data.entity.vv.VvActivityEntity;
import com.heyu.api.data.entity.vv.VvPromoterCodeEntity;
import com.heyu.api.data.utils.R;
import com.heyu.api.data.utils.RedisUtils;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@Slf4j
@RestController
@RequestMapping("/app")
public class AppPromoterCodeParseController {
@Autowired
private VvPromoterCodeDao vvPromoterCodeDao;
@Autowired
private RedisUtils redisUtils;
@Autowired
private VvActivityDao vvActivityDao;
/***
* 列表
* http://localhost:8888/app/parse/promoter/code
*/
@Describe("创建推广链接")
@RequestMapping("/parse/promoter/code")
public R parsePromoterCode(@RequestBody AppParsePromoterRequest request) {
VvPromoterCodeEntity promoterCodeEntity = vvPromoterCodeDao.selectVvPromoterCodeByCode(request.getPromoterCode());
if(promoterCodeEntity == null){
return R.error("promoterCode 不存在");
}
String content = promoterCodeEntity.getContent();
VvActivityDTO vvActivityDTO = JSON.parseObject(content, VvActivityDTO.class);
VvActivityEntity vvActivityEntity = vvActivityDao.selectVvActivityById(vvActivityDTO.getActivityId());
if(vvActivityEntity ==null){
log.info("vvActivityEntity is null");
return R.ok();
}
redisUtils.set(ApiConstants.token_activity + request.getToken(), JSON.toJSONString(vvActivityDTO), RedisUtils.thirty_minute);
return R.ok();
}
}

View File

@ -1,71 +0,0 @@
package com.heyu.api.controller.vv;
import com.heyu.api.alibaba.request.vv.AppCreatePromoterCodeRequest;
import com.heyu.api.alibaba.request.vv.AppCreatePromoterLinkRequest;
import com.heyu.api.alibaba.request.vv.AppParsePromoterRequest;
import com.heyu.api.alibaba.request.vv.resp.AppCreatePromoterCodeResp;
import com.heyu.api.alibaba.request.vv.resp.AppCreatePromoterLinkResp;
import com.heyu.api.common.annotation.AppLogin;
import com.heyu.api.common.annotation.Describe;
import com.heyu.api.data.dao.vv.VvPromoterBuyerDao;
import com.heyu.api.data.utils.R;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@Slf4j
@RestController
@RequestMapping("/app")
@AppLogin
public class AppPromoterController {
@Autowired
private VvPromoterBuyerDao vvPromoterBuyerDao;
/***
* 列表
* http://localhost:8888/app/create/promoter/code
*/
@Describe("创建推广码")
@RequestMapping("/create/promoter/code")
public R promoterCode(@RequestBody AppCreatePromoterCodeRequest request) {
AppCreatePromoterCodeResp promoterCodeResp = new AppCreatePromoterCodeResp();
promoterCodeResp.setPromoterCode("1111111111111");
return R.ok().setData(promoterCodeResp);
}
/***
* 列表
* http://localhost:8888/app/create/promoter/link
*/
@Describe("创建推广链接")
@RequestMapping("/create/promoter/link")
public R promoterlink(@RequestBody AppCreatePromoterLinkRequest request) {
AppCreatePromoterLinkResp promoterLinkResp = new AppCreatePromoterLinkResp();
promoterLinkResp.setPromoterLink("1111111111111");
return R.ok().setData(promoterLinkResp);
}
/***
* 列表
* http://localhost:8888/app/parse/promoter/code
*/
@Describe("创建推广链接")
@RequestMapping("/parse/promoter/code")
public R parsePromoterCode(@RequestBody AppParsePromoterRequest request) {
return R.ok();
}
}

View File

@ -10,10 +10,15 @@ import com.heyu.api.alibaba.request.mm.order.VvActivityDTO;
import com.heyu.api.alibaba.request.vv.AppUserLoginRequest; import com.heyu.api.alibaba.request.vv.AppUserLoginRequest;
import com.heyu.api.common.annotation.Describe; import com.heyu.api.common.annotation.Describe;
import com.heyu.api.data.constants.ApiConstants; import com.heyu.api.data.constants.ApiConstants;
import com.heyu.api.data.dao.vv.VvActivityDao;
import com.heyu.api.data.dao.vv.VvBuyerDao; import com.heyu.api.data.dao.vv.VvBuyerDao;
import com.heyu.api.data.dao.vv.VvPromoterBuyerDao;
import com.heyu.api.data.dao.vv.VvPromoterDao;
import com.heyu.api.data.dto.BuyerDTO; import com.heyu.api.data.dto.BuyerDTO;
import com.heyu.api.data.dto.WeiChatLoginDTO; import com.heyu.api.data.dto.WeiChatLoginDTO;
import com.heyu.api.data.entity.vv.VvBuyerEntity; import com.heyu.api.data.entity.vv.VvBuyerEntity;
import com.heyu.api.data.entity.vv.VvPromoterBuyerEntity;
import com.heyu.api.data.entity.vv.VvPromoterEntity;
import com.heyu.api.data.enums.UserLoginFlagEnums; import com.heyu.api.data.enums.UserLoginFlagEnums;
import com.heyu.api.data.service.impl.AppBaseRequest; import com.heyu.api.data.service.impl.AppBaseRequest;
import com.heyu.api.data.utils.*; import com.heyu.api.data.utils.*;
@ -23,6 +28,8 @@ import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RestController;
import java.util.LinkedList;
import java.util.List;
import java.util.Random; import java.util.Random;
@Slf4j @Slf4j
@ -41,6 +48,18 @@ public class AppUserLoginController {
private WeChatUtils weChatUtils; private WeChatUtils weChatUtils;
@Autowired
private VvPromoterBuyerDao vvPromoterBuyerDao;
@Autowired
private VvPromoterDao vvPromoterDao;
@Autowired
private VvActivityDao vvActivityDao;
// http://localhost:8888/app/user/login // http://localhost:8888/app/user/login
@RequestMapping("/login") @RequestMapping("/login")
@Describe("微信用户登录") @Describe("微信用户登录")
@ -49,7 +68,6 @@ public class AppUserLoginController {
if (weiChatLoginDTO == null) { if (weiChatLoginDTO == null) {
return R.error("code 失效"); return R.error("code 失效");
} }
VvBuyerEntity target = vvBuyerDao.selectVvBuyerOpenId(weiChatLoginDTO.getOpenid()); VvBuyerEntity target = vvBuyerDao.selectVvBuyerOpenId(weiChatLoginDTO.getOpenid());
if (target == null) { if (target == null) {
target = new VvBuyerEntity(); target = new VvBuyerEntity();
@ -61,7 +79,6 @@ public class AppUserLoginController {
vvBuyerDao.insertOrUpdateVvBuyer(target); vvBuyerDao.insertOrUpdateVvBuyer(target);
// 默认24 小时 // 默认24 小时
BuyerDTO buyerDTO = buildBuyerLoginInfoCacheRedisDB(target, RedisUtils.DEFAULT_EXPIRE, null); BuyerDTO buyerDTO = buildBuyerLoginInfoCacheRedisDB(target, RedisUtils.DEFAULT_EXPIRE, null);
replaceActivityInfo(request, "/app/user/login");
return R.ok().put("buyer", buyerDTO); return R.ok().put("buyer", buyerDTO);
} }
@ -85,6 +102,44 @@ public class AppUserLoginController {
} }
public void insert(String token,Long wasBuyerId) {
String activityInfo = redisUtils.get(ApiConstants.token_activity + token);
VvActivityDTO vvActivityDTO = null;
if (StringUtils.isNotEmpty(activityInfo)) {
vvActivityDTO = JSONObject.parseObject(activityInfo, VvActivityDTO.class);
VvBuyerEntity wasBuyerEntity = vvBuyerDao.selectVvBuyerById(wasBuyerId);
List<Long> promoterBuyerIdList = new LinkedList<>();
promoterBuyerIdList.add(vvActivityDTO.getBuyerId());
List<VvBuyerEntity> promoterBuyerList = vvBuyerDao.selectVvBuyerByIdList(promoterBuyerIdList);
VvPromoterEntity vvPromoter = new VvPromoterEntity();
vvPromoter.setActivityId(vvActivityDTO.getActivityId());
for (VvBuyerEntity promoterBuyerEntity : promoterBuyerList) {
VvPromoterBuyerEntity vvPromoterBuyerEntity = new VvPromoterBuyerEntity();
vvPromoterBuyerEntity.setPromoterId(null);
vvPromoterBuyerEntity.setPromoterBuyerId(promoterBuyerEntity.getId());
vvPromoterBuyerEntity.setPromoterBuyerName(promoterBuyerEntity.getBuyerName());
vvPromoterBuyerEntity.setPromoterBuyerPhone(promoterBuyerEntity.getBuyerPhone());
vvPromoterBuyerEntity.setPromoterBuyerWeixin(promoterBuyerEntity.getBuyerWeixin());
vvPromoterBuyerEntity.setWasBuyerId(wasBuyerEntity.getId());
vvPromoterBuyerEntity.setWasBuyerName(wasBuyerEntity.getBuyerName());
vvPromoterBuyerEntity.setWasBuyerPhone(wasBuyerEntity.getBuyerPhone());
vvPromoterBuyerEntity.setWasBuyerWeixin(wasBuyerEntity.getBuyerWeixin());
vvPromoterBuyerDao.insertOrUpdateVvPromoterBuyer(vvPromoterBuyerEntity);
}
}
}
// http://localhost:8888/app/user/target/login // http://localhost:8888/app/user/target/login
@RequestMapping("/target/login") @RequestMapping("/target/login")
@Describe("目标用户登录") @Describe("目标用户登录")
@ -122,8 +177,6 @@ public class AppUserLoginController {
} }
public void replaceActivityInfo(AppBaseRequest request, String uri) { public void replaceActivityInfo(AppBaseRequest request, String uri) {
String activityTokenInfo = redisUtils.get(ApiConstants.token_activity + request.getToken()); String activityTokenInfo = redisUtils.get(ApiConstants.token_activity + request.getToken());
if (StringUtils.isNotEmpty(activityTokenInfo)) { if (StringUtils.isNotEmpty(activityTokenInfo)) {