From 6c13b4ccac1c347e381cc67fd444012f90c1b003 Mon Sep 17 00:00:00 2001 From: quyixiao <2621048238@qq.com> Date: Fri, 26 Dec 2025 09:34:02 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8F=90=E4=BA=A4=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../api/data/dao/vv/VvPromoterCodeDao.java | 37 ++++ .../data/entity/vv/VvPromoterCodeEntity.java | 182 ++++++++++++++++++ .../api/data/entity/vv/VvPromoterEntity.java | 21 +- .../impl/vv/VvPromoterCodeServiceImpl.java | 68 +++++++ .../service/vv/VvPromoterCodeService.java | 34 ++++ .../resources/mapper/vv/VvPromoterCodeDao.xml | 6 + .../java/com/test/xxx/MysqlMain_insert.java | 2 +- .../java/com/test/xxx/MysqlMain_update.java | 2 +- .../request/mm/order/VvActivityDTO.java | 19 +- .../controller/vv/AppActivityController.java | 119 ------------ .../vv/AppPromoterCodeController.java | 117 +++++++++++ .../vv/AppPromoterCodeParseController.java | 59 ++++++ .../controller/vv/AppPromoterController.java | 71 ------- .../controller/vv/AppUserLoginController.java | 61 +++++- 14 files changed, 597 insertions(+), 201 deletions(-) create mode 100644 api-mapper/src/main/java/com/heyu/api/data/dao/vv/VvPromoterCodeDao.java create mode 100644 api-mapper/src/main/java/com/heyu/api/data/entity/vv/VvPromoterCodeEntity.java create mode 100644 api-mapper/src/main/java/com/heyu/api/data/service/impl/vv/VvPromoterCodeServiceImpl.java create mode 100644 api-mapper/src/main/java/com/heyu/api/data/service/vv/VvPromoterCodeService.java create mode 100644 api-mapper/src/main/resources/mapper/vv/VvPromoterCodeDao.xml delete mode 100644 api-web/api-interface/src/main/java/com/heyu/api/controller/vv/AppActivityController.java create mode 100644 api-web/api-interface/src/main/java/com/heyu/api/controller/vv/AppPromoterCodeController.java create mode 100644 api-web/api-interface/src/main/java/com/heyu/api/controller/vv/AppPromoterCodeParseController.java delete mode 100644 api-web/api-interface/src/main/java/com/heyu/api/controller/vv/AppPromoterController.java diff --git a/api-mapper/src/main/java/com/heyu/api/data/dao/vv/VvPromoterCodeDao.java b/api-mapper/src/main/java/com/heyu/api/data/dao/vv/VvPromoterCodeDao.java new file mode 100644 index 0000000..0aa187c --- /dev/null +++ b/api-mapper/src/main/java/com/heyu/api/data/dao/vv/VvPromoterCodeDao.java @@ -0,0 +1,37 @@ +package com.heyu.api.data.dao.vv; +/** +*

+* 推广码 服务类 +*

+* +* @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 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); +} \ No newline at end of file diff --git a/api-mapper/src/main/java/com/heyu/api/data/entity/vv/VvPromoterCodeEntity.java b/api-mapper/src/main/java/com/heyu/api/data/entity/vv/VvPromoterCodeEntity.java new file mode 100644 index 0000000..589c1f0 --- /dev/null +++ b/api-mapper/src/main/java/com/heyu/api/data/entity/vv/VvPromoterCodeEntity.java @@ -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 + + "}"; + } +} \ No newline at end of file diff --git a/api-mapper/src/main/java/com/heyu/api/data/entity/vv/VvPromoterEntity.java b/api-mapper/src/main/java/com/heyu/api/data/entity/vv/VvPromoterEntity.java index fe91f0c..499ee61 100644 --- a/api-mapper/src/main/java/com/heyu/api/data/entity/vv/VvPromoterEntity.java +++ b/api-mapper/src/main/java/com/heyu/api/data/entity/vv/VvPromoterEntity.java @@ -10,7 +10,7 @@ import java.util.Date;import java.util.Date; /** *推广者 * @author quyixiao -* @since 2025-11-21 +* @since 2025-12-26 */ @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 buyer_info = CLASS_NAME + "buyer_info"; // 活动信息 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) private Long id; @@ -52,6 +53,8 @@ private static final long serialVersionUID = 1L; private String buyerInfo; //相关的url private String promoterUrl; + //推广码 + private String promoterCode; /** * * @return @@ -202,6 +205,21 @@ private static final long serialVersionUID = 1L; this.promoterUrl = promoterUrl; } + /** + * 推广码 + * @return + */ + public String getPromoterCode() { + return promoterCode; + } + /** + * 推广码 + * @param promoterCode + */ + public void setPromoterCode(String promoterCode) { + this.promoterCode = promoterCode; + } + @Override public String toString() { return "VvPromoterEntity{" + @@ -215,6 +233,7 @@ private static final long serialVersionUID = 1L; ",type=" + type + ",buyerInfo=" + buyerInfo + ",promoterUrl=" + promoterUrl + + ",promoterCode=" + promoterCode + "}"; } } \ No newline at end of file diff --git a/api-mapper/src/main/java/com/heyu/api/data/service/impl/vv/VvPromoterCodeServiceImpl.java b/api-mapper/src/main/java/com/heyu/api/data/service/impl/vv/VvPromoterCodeServiceImpl.java new file mode 100644 index 0000000..80934c7 --- /dev/null +++ b/api-mapper/src/main/java/com/heyu/api/data/service/impl/vv/VvPromoterCodeServiceImpl.java @@ -0,0 +1,68 @@ +package com.heyu.api.data.service.impl.vv; +/** +*

+* 推广码 服务类 +*

+* +* @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 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); + } + + + +} diff --git a/api-mapper/src/main/java/com/heyu/api/data/service/vv/VvPromoterCodeService.java b/api-mapper/src/main/java/com/heyu/api/data/service/vv/VvPromoterCodeService.java new file mode 100644 index 0000000..366455a --- /dev/null +++ b/api-mapper/src/main/java/com/heyu/api/data/service/vv/VvPromoterCodeService.java @@ -0,0 +1,34 @@ +package com.heyu.api.data.service.vv; +/** +*

+* 推广码 服务类 +*

+* +* @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 selectVvPromoterCodeById(Long id); + + + Long insertVvPromoterCode(VvPromoterCodeEntity vvPromoterCode); + + + Long insertOrUpdateVvPromoterCode(VvPromoterCodeEntity vvPromoterCode); + + + int updateVvPromoterCodeById(VvPromoterCodeEntity vvPromoterCode); + + + int updateCoverVvPromoterCodeById(VvPromoterCodeEntity vvPromoterCode); + + + int deleteVvPromoterCodeById(Long id); + + +} \ No newline at end of file diff --git a/api-mapper/src/main/resources/mapper/vv/VvPromoterCodeDao.xml b/api-mapper/src/main/resources/mapper/vv/VvPromoterCodeDao.xml new file mode 100644 index 0000000..4c0530e --- /dev/null +++ b/api-mapper/src/main/resources/mapper/vv/VvPromoterCodeDao.xml @@ -0,0 +1,6 @@ + + + + + + diff --git a/api-mapper/src/test/java/com/test/xxx/MysqlMain_insert.java b/api-mapper/src/test/java/com/test/xxx/MysqlMain_insert.java index 327f9b6..1ba17cc 100644 --- a/api-mapper/src/test/java/com/test/xxx/MysqlMain_insert.java +++ b/api-mapper/src/test/java/com/test/xxx/MysqlMain_insert.java @@ -94,7 +94,7 @@ public class MysqlMain_insert { List list = new ArrayList(); - list.add(new TablesBean("vv_front_page")); + list.add(new TablesBean("vv_promoter_code")); diff --git a/api-mapper/src/test/java/com/test/xxx/MysqlMain_update.java b/api-mapper/src/test/java/com/test/xxx/MysqlMain_update.java index 89f0660..c14ea2b 100644 --- a/api-mapper/src/test/java/com/test/xxx/MysqlMain_update.java +++ b/api-mapper/src/test/java/com/test/xxx/MysqlMain_update.java @@ -48,7 +48,7 @@ public class MysqlMain_update { } List list = new ArrayList(); - list.add(new TablesBean("vv_front_page")); + list.add(new TablesBean("vv_promoter")); Map map = MysqlUtil2ShowCreateTable.getComments(); for (int i = 0; i < list.size(); i++) { diff --git a/api-third/src/main/java/com/heyu/api/alibaba/request/mm/order/VvActivityDTO.java b/api-third/src/main/java/com/heyu/api/alibaba/request/mm/order/VvActivityDTO.java index 3f83bc3..a0dc2bd 100644 --- a/api-third/src/main/java/com/heyu/api/alibaba/request/mm/order/VvActivityDTO.java +++ b/api-third/src/main/java/com/heyu/api/alibaba/request/mm/order/VvActivityDTO.java @@ -1,18 +1,29 @@ package com.heyu.api.alibaba.request.mm.order; -import com.heyu.api.data.entity.vv.VvActivityEntity; import lombok.Data; @Data -public class VvActivityDTO extends VvActivityEntity { +public class VvActivityDTO{ /*** * 过期时间 */ private Long activityExpiredTime; /*** - * 推广者id + * 推广者id,默认是buyerId */ - private Long promoterId; + private Long buyerId; + + + + /*** + * 活动id + */ + private Long activityId; + + /*** + * + */ + private String promoterCode; } diff --git a/api-web/api-interface/src/main/java/com/heyu/api/controller/vv/AppActivityController.java b/api-web/api-interface/src/main/java/com/heyu/api/controller/vv/AppActivityController.java deleted file mode 100644 index 627eac7..0000000 --- a/api-web/api-interface/src/main/java/com/heyu/api/controller/vv/AppActivityController.java +++ /dev/null @@ -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 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(); - } - - -} diff --git a/api-web/api-interface/src/main/java/com/heyu/api/controller/vv/AppPromoterCodeController.java b/api-web/api-interface/src/main/java/com/heyu/api/controller/vv/AppPromoterCodeController.java new file mode 100644 index 0000000..2b26fcf --- /dev/null +++ b/api-web/api-interface/src/main/java/com/heyu/api/controller/vv/AppPromoterCodeController.java @@ -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); + } + +} \ No newline at end of file diff --git a/api-web/api-interface/src/main/java/com/heyu/api/controller/vv/AppPromoterCodeParseController.java b/api-web/api-interface/src/main/java/com/heyu/api/controller/vv/AppPromoterCodeParseController.java new file mode 100644 index 0000000..b1f9956 --- /dev/null +++ b/api-web/api-interface/src/main/java/com/heyu/api/controller/vv/AppPromoterCodeParseController.java @@ -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(); + + } +} \ No newline at end of file diff --git a/api-web/api-interface/src/main/java/com/heyu/api/controller/vv/AppPromoterController.java b/api-web/api-interface/src/main/java/com/heyu/api/controller/vv/AppPromoterController.java deleted file mode 100644 index 5059399..0000000 --- a/api-web/api-interface/src/main/java/com/heyu/api/controller/vv/AppPromoterController.java +++ /dev/null @@ -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(); - - } -} \ No newline at end of file diff --git a/api-web/api-interface/src/main/java/com/heyu/api/controller/vv/AppUserLoginController.java b/api-web/api-interface/src/main/java/com/heyu/api/controller/vv/AppUserLoginController.java index 1154b73..367bd1c 100644 --- a/api-web/api-interface/src/main/java/com/heyu/api/controller/vv/AppUserLoginController.java +++ b/api-web/api-interface/src/main/java/com/heyu/api/controller/vv/AppUserLoginController.java @@ -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.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.dto.BuyerDTO; import com.heyu.api.data.dto.WeiChatLoginDTO; 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.service.impl.AppBaseRequest; 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.RestController; +import java.util.LinkedList; +import java.util.List; import java.util.Random; @Slf4j @@ -41,6 +48,18 @@ public class AppUserLoginController { private WeChatUtils weChatUtils; + @Autowired + private VvPromoterBuyerDao vvPromoterBuyerDao; + + + @Autowired + private VvPromoterDao vvPromoterDao; + + + @Autowired + private VvActivityDao vvActivityDao; + + // http://localhost:8888/app/user/login @RequestMapping("/login") @Describe("微信用户登录") @@ -49,7 +68,6 @@ public class AppUserLoginController { if (weiChatLoginDTO == null) { return R.error("code 失效"); } - VvBuyerEntity target = vvBuyerDao.selectVvBuyerOpenId(weiChatLoginDTO.getOpenid()); if (target == null) { target = new VvBuyerEntity(); @@ -61,7 +79,6 @@ public class AppUserLoginController { vvBuyerDao.insertOrUpdateVvBuyer(target); // 默认24 小时 BuyerDTO buyerDTO = buildBuyerLoginInfoCacheRedisDB(target, RedisUtils.DEFAULT_EXPIRE, null); - replaceActivityInfo(request, "/app/user/login"); 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 promoterBuyerIdList = new LinkedList<>(); + promoterBuyerIdList.add(vvActivityDTO.getBuyerId()); + + List 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 @RequestMapping("/target/login") @Describe("目标用户登录") @@ -122,8 +177,6 @@ public class AppUserLoginController { } - - public void replaceActivityInfo(AppBaseRequest request, String uri) { String activityTokenInfo = redisUtils.get(ApiConstants.token_activity + request.getToken()); if (StringUtils.isNotEmpty(activityTokenInfo)) {