Explorar el Código

fix 推广链接公众号授权登录统计

zoujiajian hace 3 años
padre
commit
c4882d6742

+ 26 - 0
netflix-dao/src/main/java/com/cyksj/model/dto/GzhBodyDto.java

@@ -0,0 +1,26 @@
+package com.cyksj.model.dto;
+
+import lombok.Getter;
+import lombok.Setter;
+import lombok.experimental.Accessors;
+
+/*
+ *项目名: netflix
+ *文件名: GzhBodyDto
+ *创建者: JavaZou
+ *创建时间:2023/2/28 15:49
+ */
+@Getter
+@Setter
+@Accessors(chain = true)
+public class GzhBodyDto {
+	/**
+	 * 分销用户id
+	 */
+	private Long sharedId;
+
+	/**
+	 * 推广id
+	 */
+	private Long popularizeId;
+}

+ 15 - 4
netflix-service/src/main/java/com/cyksj/service/gzh/factory/EventMsgService.java

@@ -5,11 +5,13 @@ import cn.hutool.core.util.StrUtil;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.cyksj.common.constant.Constant;
 import com.cyksj.common.util.Codec;
+import com.cyksj.common.util.Jsons;
 import com.cyksj.config.WeChatConfig;
 import com.cyksj.mapper.UserMapper;
 import com.cyksj.mapper.WxAppMapper;
 import com.cyksj.mapper.WxSyncLogMapper;
 import com.cyksj.mapper.gzh.UserGzhRelationMapper;
+import com.cyksj.model.dto.GzhBodyDto;
 import com.cyksj.model.dto.GzhUnionidUserinfo;
 import com.cyksj.model.dto.MsgEvent;
 import com.cyksj.model.entity.User;
@@ -115,10 +117,19 @@ public class EventMsgService implements GzhMsgService {
 			user.setUnionid(info.getUnionid());
 			userMapper.insert(user);
 
-			Object sharedIdObj = redisService.get(RedisService.key.WX_GZH_QRCODE_SHARED_LOGIN.getNameFormat(sceneKey));
-			if (sharedIdObj != null) {
-				Long sharedId = Long.parseLong(sharedIdObj.toString());
-				distributeService.saveDistributionInvitation(sharedId, user.getId());
+			Object gzhDtoObj = redisService.get(RedisService.key.WX_GZH_QRCODE_SHARED_LOGIN.getNameFormat(sceneKey));
+			if (gzhDtoObj != null) {
+				GzhBodyDto gzhBodyDto = Jsons.parseObject(gzhDtoObj, GzhBodyDto.class);
+				Long sharedId = gzhBodyDto.getSharedId();
+				if (sharedId != null) {
+					distributeService.saveDistributionInvitation(sharedId, user.getId());
+				}
+				Long popularizeId = gzhBodyDto.getPopularizeId();
+				if (popularizeId != null) {
+					userMapper.update(null, Wrappers.lambdaUpdate(User.class)
+							.eq(User::getId, user.getId())
+							.set(User::getPopularizeId, popularizeId));
+				}
 			}
 
 			saveGzhUserRelation(msgEvent, user.getId(), openId, info.getUnionid(), sceneKey);

+ 1 - 1
netflix-service/src/main/java/com/cyksj/service/wechat/WeChatService.java

@@ -77,7 +77,7 @@ public interface WeChatService {
      * 获取公众号带参数的临时二维码
      * @return
      */
-    WxGzhQrCodeTicketRep getWxGzhQrCode(Long sharedId) throws Exception;
+    WxGzhQrCodeTicketRep getWxGzhQrCode(Long sharedId, Long popularizeId) throws Exception;
 
     /**
      * 获取公众号带参数的永久二维码

+ 5 - 3
netflix-service/src/main/java/com/cyksj/service/wechat/impl/WeChatServiceImpl.java

@@ -479,7 +479,7 @@ public class WeChatServiceImpl implements WeChatService {
     }
 
     @Override
-    public WxGzhQrCodeTicketRep getWxGzhQrCode(Long sharedId) throws Exception {
+    public WxGzhQrCodeTicketRep getWxGzhQrCode(Long sharedId, Long popularizeId) throws Exception {
         String gzhQrCodeUrl = String.format("https://api.weixin.qq.com/cgi-bin/qrcode/create?access_token=%s", this.getAccessToken());
         //scene_str:场景值ID(字符串形式的ID),字符串类型,长度限制为1到64
         String scene_str = RandomUtil.randomString(16);
@@ -496,9 +496,11 @@ public class WeChatServiceImpl implements WeChatService {
         if (200 != response.statusCode()) {
             throw BusinessRuntimeException.getInstance("获取微信登录二维码失败: " + response.body());
         }
-
+        GzhBodyDto gzhBodyDto = new GzhBodyDto()
+                .setSharedId(sharedId)
+                .setPopularizeId(popularizeId);
         if (sharedId != null) {
-            redisService.set(RedisService.key.WX_GZH_QRCODE_SHARED_LOGIN.getNameFormat(scene_str), sharedId, RedisService.key.WX_GZH_QRCODE_SHARED_LOGIN.getTimeout());
+            redisService.set(RedisService.key.WX_GZH_QRCODE_SHARED_LOGIN.getNameFormat(scene_str), Jsons.toJson(gzhBodyDto), RedisService.key.WX_GZH_QRCODE_SHARED_LOGIN.getTimeout());
         }
 
         JSONObject re = Jsons.parseObject(response.body(), JSONObject.class);

+ 2 - 2
netflix-web/src/main/java/com/cyksj/web/controller/user/AuthorizationController.java

@@ -247,9 +247,9 @@ public class AuthorizationController {
      * 网页扫描微信公众号二维码 临时凭证ticket  关注后登录
      */
     @GetMapping("/wx/gzh/login/qrCode")
-    public Result<WxGzhQrCodeTicketRep> getWxGzhQrCode(Long sharedId) throws Exception {
+    public Result<WxGzhQrCodeTicketRep> getWxGzhQrCode(Long sharedId, Long popularizeId) throws Exception {
         //获取gzh带参数的二维码
-        WxGzhQrCodeTicketRep result = weChatService.getWxGzhQrCode(sharedId);
+        WxGzhQrCodeTicketRep result = weChatService.getWxGzhQrCode(sharedId, popularizeId);
         return GatewayResponse.SUCCESS.newBuilder().toResult(result);
     }