Преглед изворни кода

Merge remote-tracking branch 'origin/master'

yfh пре 1 недеља
родитељ
комит
c672e581a3

+ 14 - 6
fs-ad-new-api/src/main/java/com/fs/app/controller/WeChatController.java

@@ -9,14 +9,12 @@ import com.fs.app.facade.CallbackProcessingFacadeService;
 import com.fs.common.constant.SystemConstant;
 import com.fs.common.result.Result;
 import com.fs.newAdv.domain.AdvMiniConfig;
+import com.fs.newAdv.dto.req.updateNickNameReq;
 import com.fs.newAdv.service.IAdvMiniConfigService;
 import com.fs.wx.miniapp.config.WxMaProperties;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RequestParam;
-import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.bind.annotation.*;
 
 import java.time.LocalDateTime;
 import java.util.HashMap;
@@ -67,9 +65,9 @@ public class WeChatController {
                 }
                 Map<String, Object> map = new HashMap<>();
                 Map<String, Object> map2 = new HashMap<>();
-                map2.put("path", "pages/home/productList");
+                map2.put("path", "/pages_ad/index");
                 map2.put("query", "traceId=" + traceId);
-                    map2.put("env_version", "trial");
+                map2.put("env_version", "trial");
                 map.put("jump_wxa", map2);
                 map.put("is_expire", false);
                 HttpResponse execute = HttpRequest.post("https://api.weixin.qq.com/wxa/generatescheme?access_token=" + access_token)
@@ -87,4 +85,14 @@ public class WeChatController {
         }
         return Result.success("");
     }
+
+    /**
+     * 更新用户昵称
+     * @return
+     */
+    @PostMapping("/updateNickName")
+    public Result<String> updateNickName(@RequestBody updateNickNameReq req) {
+        facadeService.updateNickName(req);
+        return Result.success("");
+    }
 }

+ 3 - 0
fs-ad-new-api/src/main/java/com/fs/app/facade/CallbackProcessingFacadeService.java

@@ -2,6 +2,7 @@ package com.fs.app.facade;
 
 import com.fs.newAdv.dto.req.QwExternalIdBindTrackReq;
 import com.fs.newAdv.dto.req.WeChatLandingIndexReq;
+import com.fs.newAdv.dto.req.updateNickNameReq;
 import com.fs.newAdv.dto.res.LandingIndexRes;
 
 import java.util.Map;
@@ -30,4 +31,6 @@ public interface CallbackProcessingFacadeService {
     LandingIndexRes getWxLandingIndexBySiteId(WeChatLandingIndexReq req);
 
     void qwExternalIdBindTrack(QwExternalIdBindTrackReq req);
+
+    void updateNickName(updateNickNameReq req);
 }

+ 15 - 3
fs-ad-new-api/src/main/java/com/fs/app/facade/CallbackProcessingFacadeServiceImpl.java

@@ -7,7 +7,6 @@ import cn.hutool.json.JSONArray;
 import cn.hutool.json.JSONObject;
 import cn.hutool.json.JSONUtil;
 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
-import com.fs.common.exception.base.BusinessException;
 import com.fs.common.utils.RedisUtil;
 import com.fs.common.utils.SnowflakeUtil;
 import com.fs.newAdv.domain.LandingPageTemplate;
@@ -15,6 +14,7 @@ import com.fs.newAdv.domain.Lead;
 import com.fs.newAdv.domain.Site;
 import com.fs.newAdv.dto.req.QwExternalIdBindTrackReq;
 import com.fs.newAdv.dto.req.WeChatLandingIndexReq;
+import com.fs.newAdv.dto.req.updateNickNameReq;
 import com.fs.newAdv.dto.res.LandingIndexRes;
 import com.fs.newAdv.enums.AdvertiserTypeEnum;
 import com.fs.newAdv.integration.adapter.IAdvertiserAdapter;
@@ -112,7 +112,7 @@ public class CallbackProcessingFacadeServiceImpl implements CallbackProcessingFa
                 clickId = "ylrz_test";
         }
         if (StrUtil.isEmpty(clickId)) {
-            clickId = "ylrz_test"+ IdUtil.randomUUID();
+            clickId = "ylrz_test" + IdUtil.randomUUID();
         }
 
         return clickId;
@@ -120,7 +120,7 @@ public class CallbackProcessingFacadeServiceImpl implements CallbackProcessingFa
 
     @Override
     @Transactional(rollbackFor = Exception.class)
-    public LandingIndexRes getLandingIndexBySiteId(String viewUrl,Map<String, String> allParams) {
+    public LandingIndexRes getLandingIndexBySiteId(String viewUrl, Map<String, String> allParams) {
         // 站点信息
         String paramsSiteId = allParams.get("siteId");
         if (ObjectUtil.isEmpty(paramsSiteId)) {
@@ -304,4 +304,16 @@ public class CallbackProcessingFacadeServiceImpl implements CallbackProcessingFa
         // 广告线索处理
         leadService.updateAddMemberLead(req.getQwExternalId(), req.getUnionid());
     }
+
+    @Override
+    public void updateNickName(updateNickNameReq req) {
+        Lead byTraceId = leadService.getByTraceId(req.getTraceId());
+        if (ObjectUtil.isEmpty(byTraceId)) {
+            log.error("更新昵称失败,未找到线索:{}", req);
+        }
+        Lead update = new Lead();
+        update.setId(byTraceId.getId());
+        update.setWeiChatName(req.getNickName());
+        leadService.updateById(update);
+    }
 }

+ 1 - 1
fs-ad-new-api/src/main/resources/application.yml

@@ -4,7 +4,7 @@ server:
 # Spring配置
 spring:
   profiles:
-    active: dev
+    active: druid-ylrz
 #    active: druid-ylrz
 
 #

+ 4 - 4
fs-qw-api/src/main/java/com/fs/app/service/QwDataCallbackService.java

@@ -228,15 +228,13 @@ public class QwDataCallbackService {
                                     String qwApiExternal = redisCache.getCacheObject(cacheKey);
                                     if (StringUtil.strIsNullOrEmpty(qwApiExternal)) {
                                         try {
-                                            String externalUserID = root.getElementsByTagName("ExternalUserID").item(0).getTextContent();
-                                            String userID = root.getElementsByTagName("UserID").item(0).getTextContent();
                                             // 5. 新增用户
-                                            qwExternalContactService.insertQwExternalContactByExternalUserId(externalUserID,userID,null,corpId,State,WelcomeCode);
+                                            qwExternalContactService.insertQwExternalContactByExternalUserId(root.getElementsByTagName("ExternalUserID").item(0).getTextContent(),root.getElementsByTagName("UserID").item(0).getTextContent(),null,corpId,State,WelcomeCode);
                                             // 6. 业务逻辑执行成功后,写入 Redis 缓存(有效期 10 分钟)
                                             redisCache.setCacheObject(cacheKey, "1", 10, TimeUnit.MINUTES);
 
                                             // 广告线索处理
-                                            leadService.updateAddMemberLead(externalUserID,userID,corpId,State);
+                                            leadService.updateAddMemberLead(root.getElementsByTagName("ExternalUserID").item(0).getTextContent(),root.getElementsByTagName("UserID").item(0).getTextContent(),corpId,State);
                                         } catch (Exception e) {
                                             // 7. 业务逻辑失败时,删除缓存
                                             redisCache.deleteObject(cacheKey);
@@ -261,6 +259,8 @@ public class QwDataCallbackService {
                             break;
                         case "del_follow_user":
                             qwExternalContactService.deletefollowUserByExternalUserId(root.getElementsByTagName("ExternalUserID").item(0).getTextContent(),root.getElementsByTagName("UserID").item(0).getTextContent(),corpId);
+                            // 广告线索处理
+                            leadService.updateDeleteMemberLead(root.getElementsByTagName("ExternalUserID").item(0).getTextContent(),root.getElementsByTagName("UserID").item(0).getTextContent(),corpId);
                             break;
                         case "transfer_fail":
                             qwExternalContactService.transferFailByExternalUserId(root.getElementsByTagName("ExternalUserID").item(0).getTextContent(),root.getElementsByTagName("UserID").item(0).getTextContent(),corpId,root.getElementsByTagName("FailReason").item(0).getTextContent());

+ 12 - 0
fs-service/src/main/java/com/fs/newAdv/dto/req/updateNickNameReq.java

@@ -0,0 +1,12 @@
+package com.fs.newAdv.dto.req;
+
+import lombok.Data;
+
+import java.io.Serializable;
+
+@Data
+public class updateNickNameReq implements Serializable {
+    private static final long serialVersionUID = 1L;
+    private String nickName;
+    private String traceId;
+}

+ 7 - 1
fs-service/src/main/java/com/fs/newAdv/service/ILeadService.java

@@ -17,6 +17,7 @@ public interface ILeadService extends IService<Lead> {
 
     Lead getByTraceId(String traceId);
     Lead getByClickId(String clickId);
+    Lead getByExternalId(Long externalId);
 
     /**
      * 用户加企业群线索处理
@@ -35,6 +36,11 @@ public interface ILeadService extends IService<Lead> {
      * 用户添加企业微信线索处理
      */
     void updateAddMemberLead(String externalUserID,String userID,String corpId,String State);
+
+    /**
+     * 用户删除企业微信线索处理
+     */
+    void updateDeleteMemberLead(String externalUserID,String userID,String corpId);
     /**
      * 小程序授权线索处理
      * @param traceId
@@ -42,7 +48,7 @@ public interface ILeadService extends IService<Lead> {
      * @param mpOpenId
      * @param phone
      */
-    void weChatAuthorizationLead(String traceId, String unionId, String maOpenId, String phone);
+    void weChatAuthorizationLead(String traceId, String unionId, String maOpenId, String phone,Long userId);
 
     /**
      * 小程序获取头像昵称线索处理

+ 30 - 2
fs-service/src/main/java/com/fs/newAdv/service/impl/LeadServiceImpl.java

@@ -60,6 +60,16 @@ public class LeadServiceImpl extends ServiceImpl<LeadMapper, Lead> implements IL
         return list.isEmpty() ? null : list.get(0);
     }
 
+    @Override
+    public Lead getByExternalId(Long externalId) {
+        List<Lead> list = this.list(new LambdaQueryWrapper<Lead>()
+                .eq(Lead::getExternalId, externalId));
+        if (list.size() > 1) {
+            log.error("查询投流外部联系人信息不唯一:{}", externalId);
+        }
+        return list.isEmpty() ? null : list.get(0);
+    }
+
     @Override
     @Async
     public void updateGroupAddMemberLead(String name, String chatId, String corpId, String unionid) {
@@ -111,6 +121,23 @@ public class LeadServiceImpl extends ServiceImpl<LeadMapper, Lead> implements IL
         this.updateAddMemberLead(qwExternalContact);
     }
 
+    @Override
+    public void updateDeleteMemberLead(String externalUserID, String userID, String corpId) {
+        QwExternalContact qwExternalContact = qwExternalContactMapper.selectQwExternalByExternalIdAndCompanyIdToIdAndFs(externalUserID, userID, corpId);
+        if (qwExternalContact != null) {
+            Lead byExternalId = this.getByExternalId(qwExternalContact.getId());
+            if (ObjectUtil.isEmpty(byExternalId)) {
+                return;
+            }
+            log.info("用户删除微线索信息:{}", byExternalId.getTraceId());
+            Lead tempLead = new Lead();
+            tempLead.setId(byExternalId.getId());
+            tempLead.setWechatDelete(1);
+            this.updateById(tempLead);
+        }
+
+    }
+
     private void updateAddMemberLead(QwExternalContact qwExternalContact) {
         log.info("用户加微线索信息:{}", qwExternalContact);
         LambdaQueryWrapper<Lead> last = new LambdaQueryWrapper<Lead>();
@@ -143,8 +170,8 @@ public class LeadServiceImpl extends ServiceImpl<LeadMapper, Lead> implements IL
 
     @Override
     @Async
-    public void weChatAuthorizationLead(String traceId, String unionId, String maOpenId, String phone) {
-        log.info("用户微信授权线索信息:{} {} {} {}", traceId, unionId, phone, maOpenId);
+    public void weChatAuthorizationLead(String traceId, String unionId, String maOpenId, String phone, Long userId) {
+        log.info("用户微信授权线索信息:{} {} {} {} {}", traceId, unionId, phone, maOpenId, userId);
         Lead byTraceId = this.getByTraceId(traceId);
         if (byTraceId == null) {
             return;
@@ -154,6 +181,7 @@ public class LeadServiceImpl extends ServiceImpl<LeadMapper, Lead> implements IL
                 .set(ObjectUtil.isNotEmpty(unionId), Lead::getUnionid, unionId)
                 .set(ObjectUtil.isNotEmpty(phone), Lead::getPhone, phone)
                 .set(ObjectUtil.isNotEmpty(maOpenId), Lead::getOpenid, maOpenId)
+                .set(ObjectUtil.isNotEmpty(userId), Lead::getSystemUserId, userId)
                 .set(Lead::getMiniAuth, 1));
         if (ObjectUtil.isNotEmpty(byTraceId.getLandingPageTs()) && byTraceId.getLandingPageTs().toLocalDate().isEqual(LocalDate.now())) {
             // 微信授权且当日创建事件

+ 7 - 2
fs-user-app/src/main/java/com/fs/app/controller/store/WxUserScrmController.java

@@ -5,6 +5,7 @@ import cn.binarywang.wx.miniapp.bean.WxMaJscode2SessionResult;
 import cn.binarywang.wx.miniapp.bean.WxMaPhoneNumberInfo;
 import cn.binarywang.wx.miniapp.bean.WxMaUserInfo;
 import cn.hutool.core.date.DateTime;
+import cn.hutool.core.util.ObjectUtil;
 import com.fs.app.annotation.Login;
 import com.fs.app.controller.AppBaseController;
 import com.fs.app.utils.JwtUtils;
@@ -237,7 +238,11 @@ public class WxUserScrmController extends AppBaseController {
     @ApiOperation("获取微信小程序用户信息")
     @PostMapping("/getWeixinInfo")
     public R getWeixinInfo(@RequestBody LoginMpWxParam param) {
-        final WxMaService wxService = WxMaConfiguration.getMaService(maProperties.getConfigs().get(0).getAppid());
+        String appid = maProperties.getConfigs().get(0).getAppid();
+        if (ObjectUtil.isNotEmpty(param.getTraceId()) && ObjectUtil.isNotEmpty(param.getAppId())){
+            appid = param.getAppId();
+        }
+        final WxMaService wxService = WxMaConfiguration.getMaService(appid);
         try {
             WxMaJscode2SessionResult session = wxService.getUserService().getSessionInfo(param.getCode());
             // 用户信息校验
@@ -375,7 +380,7 @@ public class WxUserScrmController extends AppBaseController {
             userService.handleFsUserWx(user,loginMaWxParam,session);
             String token = jwtUtils.generateToken(user.getUserId());
             // 广告线索
-            leadService.weChatAuthorizationLead(param.getTraceId(), session.getUnionid(),session.getOpenid(),user.getPhone());
+            leadService.weChatAuthorizationLead(param.getTraceId(), session.getUnionid(),session.getOpenid(),user.getPhone(),user.getUserId());
             return R.ok("登录成功").put("token",token).put("user", user);
         } catch (WxErrorException e) {
             //this.logger.error(e.getMessage(), e);