Pārlūkot izejas kodu

coding:广告线索

zhangqin 1 nedēļu atpakaļ
vecāks
revīzija
bd8ea476f4

+ 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());

+ 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);