吴树波 2 veckor sedan
förälder
incheckning
88261b6a0d

+ 1 - 0
fs-service/src/main/java/com/fs/qw/service/IQwExternalContactService.java

@@ -250,6 +250,7 @@ public interface IQwExternalContactService extends IService<QwExternalContact> {
     List<QwUserDelLossLogVO> selectQwUserDelLossLogList(QwUserDelLossLogParam param);
 
     void updateQwExternalContactStatusById(QwExternalContact qwExternalContact);
+    List<QwExternalContact> selectQwUserAndLevel(List<Long> qwUserIdList, List<String> levelList, boolean isReg);
 
     R getRepeat(RepeatParam param);
     List<QwExternalContactVO> selectQwExternalContactListVONewSys(QwExternalContactParam qwExternalContact);

+ 389 - 372
fs-service/src/main/java/com/fs/qw/service/impl/QwExternalContactServiceImpl.java

@@ -566,8 +566,8 @@ public class QwExternalContactServiceImpl extends ServiceImpl<QwExternalContactM
     }
 
     private void chackSyncContactUserTag(QwExternalContact contact,QwUser qwUser,
-                              LocalDate currentDate,LocalTime localTime,Set<String> combinedTagsSet,
-                              ExternalContact externalContact){
+                                         LocalDate currentDate,LocalTime localTime,Set<String> combinedTagsSet,
+                                         ExternalContact externalContact){
 
         String externalUserId = externalContact.getExternal_userid();
         String corpId = contact.getCorpId();
@@ -1133,7 +1133,7 @@ public class QwExternalContactServiceImpl extends ServiceImpl<QwExternalContactM
                             for (QwCustomer qwCustomer : customer) {
                                 if (qwCustomer.getErrcode() == 0) {
                                     QwExternalContactTransferLog qwExternalContactTransferLog = new QwExternalContactTransferLog();
-                                   // qwExternalContactTransferLog.setCompanyId(param.getCorpId());
+                                    // qwExternalContactTransferLog.setCompanyId(param.getCorpId());
                                     qwExternalContactTransferLog.setExternalContactId(id);
                                     qwExternalContactTransferLog.setCompanyUserId(qwExternalContact.getCompanyUserId());
                                     qwExternalContactTransferLog.setCreateTime(new Date());
@@ -1198,7 +1198,7 @@ public class QwExternalContactServiceImpl extends ServiceImpl<QwExternalContactM
                             for (QwCustomer qwCustomer : customer) {
                                 if (qwCustomer.getErrcode() == 0) {
                                     QwExternalContactTransferLog qwExternalContactTransferLog = new QwExternalContactTransferLog();
-                                   // qwExternalContactTransferLog.setCompanyId(param.getCorpId());
+                                    // qwExternalContactTransferLog.setCompanyId(param.getCorpId());
                                     qwExternalContactTransferLog.setExternalContactId(id);
                                     qwExternalContactTransferLog.setCompanyUserId(qwExternalContact.getCompanyUserId());
                                     qwExternalContactTransferLog.setCreateTime(new Date());
@@ -1439,7 +1439,7 @@ public class QwExternalContactServiceImpl extends ServiceImpl<QwExternalContactM
             // 1. 批量查询所有用户数据
             List<QwExternalContact> contacts;
             try {
-                 contacts = fsCourseWatchLogMapper.selectQwWatchLogFomExtContact(param.getLogIds());
+                contacts = fsCourseWatchLogMapper.selectQwWatchLogFomExtContact(param.getLogIds());
                 if (contacts == null || contacts.isEmpty()) {
                     return R.error("成功:0,失败:" + param.getLogIds().size());
                 }
@@ -1907,7 +1907,7 @@ public class QwExternalContactServiceImpl extends ServiceImpl<QwExternalContactM
         qwEditUserTagParam.setAdd_tag(addTag);
         QwResult qwResult = qwApiService.editUserTag(qwEditUserTagParam, corpId);
         if (qwResult.getErrcode()==0){
-             allTags = Stream.concat(addTag.stream(), extTagIds.stream())
+            allTags = Stream.concat(addTag.stream(), extTagIds.stream())
                     .distinct()
                     .collect(Collectors.toList());
             addAutoTagsLogs(qwAutoTags.getId(),qwUser,qwExternalContact,addTag);
@@ -2445,7 +2445,7 @@ public class QwExternalContactServiceImpl extends ServiceImpl<QwExternalContactM
 //                    adHtmlClickLogService.upload(contact.getState(), AdUploadType.REGISTERED, e -> contact.setUploadRegisterStatus(1));
                     qwExternalContactMapper.updateQwExternalContact(qwe2);
 
-                     //更新用户记录
+                    //更新用户记录
                     qwAppContactWay.setStatus(2);
                     qwAppContactWayMapper.updateQwAppContactWay(qwAppContactWay);
 
@@ -2672,65 +2672,65 @@ public class QwExternalContactServiceImpl extends ServiceImpl<QwExternalContactM
                         }
                     }
 
-                        // 如果有匹配的规则,使用 combinedTagsList
-                        if (isMatch || isContactWay) {
-                            // 转换一下分时段-符合 条件的 列表
-                            List<String> combinedTags = new ArrayList<>(combinedTagsItem);
-                            qwAutoTagsLogs.setEffectiveRules(JSON.toJSONString(combinedTags));
-                            qwAutoTagsLogs.setAddTime(new Date());
-                            qwAutoTagsLogs.setCompanyId(qwUser.getCompanyId());
-                            qwAutoTagsLogs.setCorpId(qwUser.getCorpId());
-
-                            //有标签
-                            if (isWay && wayId.getIsTag() == 1) {
-                                //渠道活码的标签
-                                List<String> wayTags = JSON.parseArray(wayId.getTags(), String.class);
-                                //总添加标签
+                    // 如果有匹配的规则,使用 combinedTagsList
+                    if (isMatch || isContactWay) {
+                        // 转换一下分时段-符合 条件的 列表
+                        List<String> combinedTags = new ArrayList<>(combinedTagsItem);
+                        qwAutoTagsLogs.setEffectiveRules(JSON.toJSONString(combinedTags));
+                        qwAutoTagsLogs.setAddTime(new Date());
+                        qwAutoTagsLogs.setCompanyId(qwUser.getCompanyId());
+                        qwAutoTagsLogs.setCorpId(qwUser.getCorpId());
+
+                        //有标签
+                        if (isWay && wayId.getIsTag() == 1) {
+                            //渠道活码的标签
+                            List<String> wayTags = JSON.parseArray(wayId.getTags(), String.class);
+                            //总添加标签
 //                                combinedTagsSet.addAll(wayTags);
-                                combinedTagsSet = new HashSet<>(wayTags);
-                                logger.info("渠道活码标签,{}===============,打的标签={}", wayTags,combinedTagsSet);
-                            }
+                            combinedTagsSet = new HashSet<>(wayTags);
+                            logger.info("渠道活码标签,{}===============,打的标签={}", wayTags,combinedTagsSet);
+                        }
 
-                            //总标签 转换回列表
-                            List<String> combinedTagsList = new ArrayList<>(combinedTagsSet);
-                            // 设置标签
-                            qwEditUserTagParam.setAdd_tag(combinedTagsList);
-                            // 企微加标签
-                            QwResult qwResult = qwApiService.editUserTag(qwEditUserTagParam, corpId);
+                        //总标签 转换回列表
+                        List<String> combinedTagsList = new ArrayList<>(combinedTagsSet);
+                        // 设置标签
+                        qwEditUserTagParam.setAdd_tag(combinedTagsList);
+                        // 企微加标签
+                        QwResult qwResult = qwApiService.editUserTag(qwEditUserTagParam, corpId);
 
-                            logger.info("自动添加标签的状态:"+qwResult.getErrcode()+"|"+qwResult.getErrmsg()+"|qwEditUserTagParam--"+qwEditUserTagParam);
+                        logger.info("自动添加标签的状态:"+qwResult.getErrcode()+"|"+qwResult.getErrmsg()+"|qwEditUserTagParam--"+qwEditUserTagParam);
 
-                            if (qwResult.getErrcode()==0){
-                                // 用户存标签
-                                qwExternalContact.setTagIds(JSON.toJSONString(combinedTagsList));
-                                qwAutoTagsLogsMapper.insertOrUpdateQwAutoTagsLogs(qwAutoTagsLogs);
+                        if (qwResult.getErrcode()==0){
+                            // 用户存标签
+                            qwExternalContact.setTagIds(JSON.toJSONString(combinedTagsList));
+                            qwAutoTagsLogsMapper.insertOrUpdateQwAutoTagsLogs(qwAutoTagsLogs);
 
-                                logger.info("分时段里符合的标签-自动SOP条件:"+combinedTagsList+"|"+qwUser.getQwUserId()+"|"+externalUserID);
+                            logger.info("分时段里符合的标签-自动SOP条件:"+combinedTagsList+"|"+qwUser.getQwUserId()+"|"+externalUserID);
 
-                                //检查sop进营期
-                                checkHaveQwSop(combinedTagsSet, qwUser, corpId,combinedTagsList, userID, externalUserID,
-                                        externalContact, contact, currentDate,  localTime);
-                            }
-                            else if (qwResult.getErrcode()==45035){
-                                //加入补偿机制
-                                insertQwExternalErrRetryTool(corpId,JSON.toJSONString(qwEditUserTagParam),1,qwResult.getErrmsg());
-                                logger.info("自动添加标签添加失败-已加入补偿机制中:"+qwEditUserTagParam);
-                            }
+                            //检查sop进营期
+                            checkHaveQwSop(combinedTagsSet, qwUser, corpId,combinedTagsList, userID, externalUserID,
+                                    externalContact, contact, currentDate,  localTime);
+                        }
+                        else if (qwResult.getErrcode()==45035){
+                            //加入补偿机制
+                            insertQwExternalErrRetryTool(corpId,JSON.toJSONString(qwEditUserTagParam),1,qwResult.getErrmsg());
+                            logger.info("自动添加标签添加失败-已加入补偿机制中:"+qwEditUserTagParam);
+                        }
 
-                        } else {
-                            // 转换回列表
-                            List<String> combinedTagsList = new ArrayList<>(combinedTagsSet);
+                    } else {
+                        // 转换回列表
+                        List<String> combinedTagsList = new ArrayList<>(combinedTagsSet);
 
-                            logger.info("不符合分时段条件2--看全部标签是否有符合的11111:"+combinedTagsList+"|"+externalUserID+"|"+userID+"|"+corpId);
+                        logger.info("不符合分时段条件2--看全部标签是否有符合的11111:"+combinedTagsList+"|"+externalUserID+"|"+userID+"|"+corpId);
 
-                            try {
-                                //检查sop进营期
-                                checkHaveQwSop(combinedTagsSet, qwUser, corpId,combinedTagsList, userID, externalUserID,
-                                        externalContact, contact, currentDate,  localTime);
-                            }catch (Exception e){
-                                logger.error("用自带标签入营期出错"+combinedTagsList+"|"+externalUserID+"|"+userID+"|"+corpId);
-                            }
+                        try {
+                            //检查sop进营期
+                            checkHaveQwSop(combinedTagsSet, qwUser, corpId,combinedTagsList, userID, externalUserID,
+                                    externalContact, contact, currentDate,  localTime);
+                        }catch (Exception e){
+                            logger.error("用自带标签入营期出错"+combinedTagsList+"|"+externalUserID+"|"+userID+"|"+corpId);
                         }
+                    }
                 }
                 else {
                     try {
@@ -2762,14 +2762,14 @@ public class QwExternalContactServiceImpl extends ServiceImpl<QwExternalContactM
 //                            if (!StringUtil.strIsNullOrEmpty(tagRemark)){
 //                                qwExternalContact.setRemark(externalContact.getName() + "-" + wayId.getRemark()+"-"+tagRemark);
 //                            }else {
-                                qwExternalContact.setRemark(externalContact.getName() + "-" + wayId.getRemark());
+                            qwExternalContact.setRemark(externalContact.getName() + "-" + wayId.getRemark());
 //                            }
 
                         } else {
 //                            if (!StringUtil.strIsNullOrEmpty(tagRemark)){
 //                                qwExternalContact.setRemark(tagRemark+"-"+wayId.getRemark() + "-" + externalContact.getName());
 //                            }else {
-                                qwExternalContact.setRemark(wayId.getRemark() + "-" + externalContact.getName());
+                            qwExternalContact.setRemark(wayId.getRemark() + "-" + externalContact.getName());
 //                            }
 
                         }
@@ -2907,6 +2907,7 @@ public class QwExternalContactServiceImpl extends ServiceImpl<QwExternalContactM
                     asyncQwAiChatSopService.executeQwAiChatSop(qwSopAutoByTags,userID,qwUser,externalUserID
                             ,externalContact.getName(),contact.getId(),contact.getFsUserId(),currentDate,localTime);
                 }
+
                 //aiSop任务
 //                List<QwSopRuleTimeVO> qwSopAiRuleTimeVOS = qwSopMapper.selectQwAiSopAutoByTagsByForeach(qwSopAutoByTags);
 //                if (qwSopAiRuleTimeVOS != null && !qwSopAiRuleTimeVOS.isEmpty()){
@@ -3338,10 +3339,10 @@ public class QwExternalContactServiceImpl extends ServiceImpl<QwExternalContactM
     }
 
     /**
-    * 检查是否有sop任务
-    */
+     * 检查是否有sop任务
+     */
     public void checkHaveQwSopNew(QwUser qwUser,List<String> combinedTagsList,QwExternalContact contact,
-                               LocalDate currentDate, LocalTime localTime){
+                                  LocalDate currentDate, LocalTime localTime){
         if (!combinedTagsList.isEmpty()){
             //分时段里符合的标签-再用来创建自动SOP+(总标签)
             QwSopAutoByTags qwSopAutoByTags=new QwSopAutoByTags();
@@ -3459,10 +3460,10 @@ public class QwExternalContactServiceImpl extends ServiceImpl<QwExternalContactM
     }
 
     /**
-    * 检查是否在 在职继承 里
-    */
+     * 检查是否在 在职继承 里
+     */
     public int qwSopRuleTimeToolsCheckJobTransfer(QwSopRuleTimeVO ruleTimeVO,String corpId,String userID,String externalUserID,
-                                                      SopUserLogs userLogs,SopUserLogsInfo logsInfoNew,SopUserLogsParamByDate userLogsParamByDate){
+                                                  SopUserLogs userLogs,SopUserLogsInfo logsInfoNew,SopUserLogsParamByDate userLogsParamByDate){
 
         QwExternalContactTransferLog transferLogParam=new QwExternalContactTransferLog();
         transferLogParam.setCorpId(corpId);
@@ -4337,9 +4338,9 @@ public class QwExternalContactServiceImpl extends ServiceImpl<QwExternalContactM
     @Override
     public void deletefollowUserByExternalUserId(String externalUserID, String userID, String corpId) {
 
-        //客户删除销售-找这个销售的sop任务中所有的营期里有没有这个客户,删了(暂时不要删-这种流失的有些一样能发消息)
-//        sopUserLogsInfoMapper.deleteByQwUserIdAndCorpIdToContactId(userID,corpId, externalUserID);
-//        logger.error("客户删除销售-"+"|"+externalUserID+"|"+userID+"|"+corpId);
+        //客户删除销售-找这个销售的sop任务中所有的营期里有没有这个客户-流失客户删除
+        sopUserLogsInfoMapper.deleteByQwUserIdAndCorpIdToContactId(userID,corpId, externalUserID);
+        logger.error("客户删除销售-"+"|"+externalUserID+"|"+userID+"|"+corpId);
 
         QwExternalContact qwExternalContact = qwExternalContactMapper.selectQwExternalContactUserIdAndExternalIdAndCompanyId(externalUserID, userID, corpId);
         if (qwExternalContact != null) {
@@ -4372,23 +4373,23 @@ public class QwExternalContactServiceImpl extends ServiceImpl<QwExternalContactM
     @Override
     public void transferFailByExternalUserId(String externalUserID, String userID, String corpId, String failReason) {
 
-            Integer status = 0;
-            if (failReason.equals("customer_limit_exceed")) {
-                status = 4;
-            } else {
-                status = 3;
-            }
+        Integer status = 0;
+        if (failReason.equals("customer_limit_exceed")) {
+            status = 4;
+        } else {
+            status = 3;
+        }
 
-            QwExternalContactTransferLog qwExternalContactTransferLog = new QwExternalContactTransferLog();
-            qwExternalContactTransferLog.setTakeoverUserId(userID);
-            qwExternalContactTransferLog.setExternalUserId(externalUserID);
-            qwExternalContactTransferLog.setCorpId(corpId);
+        QwExternalContactTransferLog qwExternalContactTransferLog = new QwExternalContactTransferLog();
+        qwExternalContactTransferLog.setTakeoverUserId(userID);
+        qwExternalContactTransferLog.setExternalUserId(externalUserID);
+        qwExternalContactTransferLog.setCorpId(corpId);
 
-            List<QwExternalContactTransferLog> qwExternalContactTransferLogs = qwExternalContactTransferLogMapper.selectQwExternalContactTransferLogList(qwExternalContactTransferLog);
-            for (QwExternalContactTransferLog externalContactTransferLog : qwExternalContactTransferLogs) {
-                externalContactTransferLog.setStatus(status);
-                qwExternalContactTransferLogMapper.updateQwExternalContactTransferLog(externalContactTransferLog);
-            }
+        List<QwExternalContactTransferLog> qwExternalContactTransferLogs = qwExternalContactTransferLogMapper.selectQwExternalContactTransferLogList(qwExternalContactTransferLog);
+        for (QwExternalContactTransferLog externalContactTransferLog : qwExternalContactTransferLogs) {
+            externalContactTransferLog.setStatus(status);
+            qwExternalContactTransferLogMapper.updateQwExternalContactTransferLog(externalContactTransferLog);
+        }
 
         // 跨公司接替回调处理
         List<QwExternalContactTransferCompanyAuditUser> auditUserList = transferCompanyAuditUserMapper.selectListByExtIdAndTakeoverUserIdAndCorpId(externalUserID, userID, corpId);
@@ -4954,7 +4955,7 @@ public class QwExternalContactServiceImpl extends ServiceImpl<QwExternalContactM
 
     @Override
     public QwExternalContact getQwExternalContactDetails(QwExternalContactHParam contactHParam) {
-         return    qwExternalContactMapper.getQwExternalContactDetails(contactHParam);
+        return    qwExternalContactMapper.getQwExternalContactDetails(contactHParam);
     }
 
 
@@ -5314,264 +5315,264 @@ public class QwExternalContactServiceImpl extends ServiceImpl<QwExternalContactM
         List<String> externalUserid = redisCache.getCacheObject("qwUserIds:" + qwUser.getId());
         if(StringUtils.isNotEmpty(externalUserid)&&externalUserid.size()>0){
             String userID = qwUser.getQwUserId();
-                //库里的
-                List<String> qwExternalContactList = qwExternalContactMapper.selectQwExternalContactListAllNoDel(qwUser.getQwUserId(), qwUser.getCorpId());
-                List<String> addList = externalUserid.stream()
-                        .filter(externalUserId -> !qwExternalContactList.contains(externalUserId))
-                        .collect(Collectors.toList());
-                String qwUserId = qwUser.getQwUserId();
-                String corpId = qwUser.getCorpId();
-                Long companyId = qwUser.getCompanyId();
-                if (addList!=null&&addList.size()<50){
-                    for (String ext : addList) {
-                        String externalUserID = ext;
-                        QwExternalContact qwExternalContact = qwExternalContactMapper.selectQwExternalContactUserIdAndExternalIdAndCompanyId(ext, qwUser.getQwUserId(), qwUser.getCorpId());
-
-                        if (qwExternalContact == null) {
-                            QwExternalContactResult followUsers = qwApiService.getExternalcontact(ext, qwUser.getCorpId());
-                            ExternalContact externalContact = followUsers.getExternal_contact();
-                            List<FollowUser> followUser = followUsers.getFollow_user();
-                            for (FollowUser followInfo : followUser) {
-                                if (followInfo.getUserid().equals(qwUserId)) {
-                                    LocalDate currentDate = LocalDate.now();
-                                    // 获取当前系统时间 (HH:mm)
-                                    LocalTime localTime = LocalTime.now();
-                                    qwExternalContact = new QwExternalContact();
-                                    qwExternalContact.setUserId(qwUserId); // 设置属于用户ID
-                                    qwExternalContact.setExternalUserId(ext); // 设置外部联系人ID
-                                    qwExternalContact.setCorpId(corpId); // 设置企业ID
-                                    qwExternalContact.setCompanyId(companyId); // 设置公司ID
-                                    qwExternalContact.setCompanyUserId(qwUser.getCompanyUserId());
-                                    qwExternalContact.setQwUserId(qwUser.getId());
-                                    qwExternalContact.setName(externalContact.getName()); // 设置名称
-                                    qwExternalContact.setAvatar(externalContact.getAvatar()); // 设置头像
-                                    qwExternalContact.setType(externalContact.getType()); // 设置外部联系人类型(1微信用户,2企业微信用户)
-                                    qwExternalContact.setGender(externalContact.getGender()); // 设置性别 (0-未知, 1-男性, 2-女性)
-                                    qwExternalContact.setUnionid(externalContact.getUnionid());
-                                    qwExternalContact.setDescription(followInfo.getDescription()); // 设置描述信息
-                                    qwExternalContact.setRemark(followInfo.getRemark());
-                                    List<Tag> tags = followInfo.getTags();
-                                    List<String> tagIds = tags.stream()
-                                            .map(Tag::getTag_id)
-                                            .collect(Collectors.toList());
-                                    Set<String> combinedTagsSet = new HashSet<>(tagIds);
-                                    qwExternalContact.setTagIds(JSON.toJSONString(tagIds)); // 设置标签ID
-                                    qwExternalContact.setRemarkMobiles(JSON.toJSONString(followInfo.getRemark_mobiles())); // 设置备注电话号码
-                                    qwExternalContact.setState(followInfo.getState());
-                                    if (followInfo.getState() != null && !followInfo.getState().isEmpty()) {
-                                        String s = "way:" + corpId + ":";
-                                        if (followInfo.getState().contains(s)) {
-                                            String wayId = followInfo.getState().substring(followInfo.getState().indexOf(s) + s.length());
-                                            qwExternalContact.setWayId(Long.parseLong(wayId));
-                                        }
+            //库里的
+            List<String> qwExternalContactList = qwExternalContactMapper.selectQwExternalContactListAllNoDel(qwUser.getQwUserId(), qwUser.getCorpId());
+            List<String> addList = externalUserid.stream()
+                    .filter(externalUserId -> !qwExternalContactList.contains(externalUserId))
+                    .collect(Collectors.toList());
+            String qwUserId = qwUser.getQwUserId();
+            String corpId = qwUser.getCorpId();
+            Long companyId = qwUser.getCompanyId();
+            if (addList!=null&&addList.size()<50){
+                for (String ext : addList) {
+                    String externalUserID = ext;
+                    QwExternalContact qwExternalContact = qwExternalContactMapper.selectQwExternalContactUserIdAndExternalIdAndCompanyId(ext, qwUser.getQwUserId(), qwUser.getCorpId());
+
+                    if (qwExternalContact == null) {
+                        QwExternalContactResult followUsers = qwApiService.getExternalcontact(ext, qwUser.getCorpId());
+                        ExternalContact externalContact = followUsers.getExternal_contact();
+                        List<FollowUser> followUser = followUsers.getFollow_user();
+                        for (FollowUser followInfo : followUser) {
+                            if (followInfo.getUserid().equals(qwUserId)) {
+                                LocalDate currentDate = LocalDate.now();
+                                // 获取当前系统时间 (HH:mm)
+                                LocalTime localTime = LocalTime.now();
+                                qwExternalContact = new QwExternalContact();
+                                qwExternalContact.setUserId(qwUserId); // 设置属于用户ID
+                                qwExternalContact.setExternalUserId(ext); // 设置外部联系人ID
+                                qwExternalContact.setCorpId(corpId); // 设置企业ID
+                                qwExternalContact.setCompanyId(companyId); // 设置公司ID
+                                qwExternalContact.setCompanyUserId(qwUser.getCompanyUserId());
+                                qwExternalContact.setQwUserId(qwUser.getId());
+                                qwExternalContact.setName(externalContact.getName()); // 设置名称
+                                qwExternalContact.setAvatar(externalContact.getAvatar()); // 设置头像
+                                qwExternalContact.setType(externalContact.getType()); // 设置外部联系人类型(1微信用户,2企业微信用户)
+                                qwExternalContact.setGender(externalContact.getGender()); // 设置性别 (0-未知, 1-男性, 2-女性)
+                                qwExternalContact.setUnionid(externalContact.getUnionid());
+                                qwExternalContact.setDescription(followInfo.getDescription()); // 设置描述信息
+                                qwExternalContact.setRemark(followInfo.getRemark());
+                                List<Tag> tags = followInfo.getTags();
+                                List<String> tagIds = tags.stream()
+                                        .map(Tag::getTag_id)
+                                        .collect(Collectors.toList());
+                                Set<String> combinedTagsSet = new HashSet<>(tagIds);
+                                qwExternalContact.setTagIds(JSON.toJSONString(tagIds)); // 设置标签ID
+                                qwExternalContact.setRemarkMobiles(JSON.toJSONString(followInfo.getRemark_mobiles())); // 设置备注电话号码
+                                qwExternalContact.setState(followInfo.getState());
+                                if (followInfo.getState() != null && !followInfo.getState().isEmpty()) {
+                                    String s = "way:" + corpId + ":";
+                                    if (followInfo.getState().contains(s)) {
+                                        String wayId = followInfo.getState().substring(followInfo.getState().indexOf(s) + s.length());
+                                        qwExternalContact.setWayId(Long.parseLong(wayId));
                                     }
-                                    qwExternalContact.setCreateTime(new Date());
-                                    qwExternalContact.setRemarkCorpName(followInfo.getRemark_corp_name()); // 设置备注企业名称
-                                    qwExternalContact.setAddWay(followInfo.getAdd_way()); // 设置来源
-                                    qwExternalContact.setOperUserid(followInfo.getOper_userid()); // 设置oper用户ID
-                                    qwExternalContactMapper.insertQwExternalContact(qwExternalContact);
-                                    SyncAddSendWelcome(qwExternalContact, qwUser, qwUser.getCorpId());
-                                    //发送好友欢迎语
+                                }
+                                qwExternalContact.setCreateTime(new Date());
+                                qwExternalContact.setRemarkCorpName(followInfo.getRemark_corp_name()); // 设置备注企业名称
+                                qwExternalContact.setAddWay(followInfo.getAdd_way()); // 设置来源
+                                qwExternalContact.setOperUserid(followInfo.getOper_userid()); // 设置oper用户ID
+                                qwExternalContactMapper.insertQwExternalContact(qwExternalContact);
+                                SyncAddSendWelcome(qwExternalContact, qwUser, qwUser.getCorpId());
+                                //发送好友欢迎语
 //
-                                    QwAutoTags qwAutoTags = qwAutoTagsMapper.selectQwAutoTagsByIdJSON(corpId, qwUser.getId());
-
-                                    QwExternalContact contact = qwExternalContact;
-
-
-                                    if (qwAutoTags != null) {
-                                        QwAutoTagsLogs qwAutoTagsLogs = new QwAutoTagsLogs();
-                                        qwAutoTagsLogs.setAutoTagId(qwAutoTags.getId());
-                                        qwAutoTagsLogs.setType(3L);
-                                        qwAutoTagsLogs.setQwUserid(qwUser.getId());
-                                        qwAutoTagsLogs.setExternalUserId(ext);
-
-                                        List<QwAutoTagsRulesTags> qwAutoTagsRulesTagsList = JSON.parseArray(qwAutoTags.getRulesTags(), QwAutoTagsRulesTags.class);
-                                        boolean isMatch = false;
-                                        //存分时段里符合条件的标签
-                                        Set<String> combinedTagsItem = new HashSet<>();
-                                        // 获取今天的星期数
-                                        DayOfWeek today = LocalDate.now().getDayOfWeek();
-                                        int todayIndex = today.getValue(); // 1: Monday, 2: Tuesday, ..., 7: Sunday
-                                        // 获取当前时间
-                                        LocalTime now = LocalTime.now();
-                                        // 遍历所有规则
-                                        String tagRemark = null;
-                                        for (QwAutoTagsRulesTags rulesTags : qwAutoTagsRulesTagsList) {
-
-                                            List<String> tagsItem = rulesTags.getTags();
-                                            List<Integer> week = rulesTags.getWeek();
-                                            String startTime = rulesTags.getStartTime();
-                                            String endTime = rulesTags.getEndTime();
-                                            String remarks = rulesTags.getRemarks();
-
-                                            // 检查今天是否在 week 集合中
-                                            boolean isTodayInWeek = week.contains(todayIndex);
-                                            // 转换时间字符串为 LocalTime
-                                            LocalTime start = LocalTime.parse(startTime);
-                                            LocalTime end = LocalTime.parse(endTime.equals("24:00") ? "23:59:59" : endTime);
-                                            // 检查当前时间是否在 startTime 和 endTime 之间
-                                            boolean isNowInTimeRange = !now.isBefore(start) && !now.isAfter(end);
-                                            // 如果当前时间和日期匹配规则,将 tagsItem 添加到 combinedTagsSet 中
-                                            if (isTodayInWeek && isNowInTimeRange) {
-
-                                                combinedTagsSet.addAll(tagsItem);
-                                                combinedTagsItem.addAll(tagsItem);
-                                                isMatch = true;
-                                                //如果备注不为空
-                                                if (rulesTags.getIsDay()!=null&&rulesTags.getIsDay()==1){
-                                                    String DayDate = LocalDate.now().format(DateTimeFormatter.ofPattern("yyMMdd"));
-                                                    tagRemark=DayDate.substring(1);
-                                                }
-                                                //如果备注不为空
-                                                if (!StringUtil.strIsNullOrEmpty(remarks)){
-                                                    tagRemark = (tagRemark==null?"":(tagRemark+ "-") ) +remarks;
-                                                }
+                                QwAutoTags qwAutoTags = qwAutoTagsMapper.selectQwAutoTagsByIdJSON(corpId, qwUser.getId());
+
+                                QwExternalContact contact = qwExternalContact;
+
+
+                                if (qwAutoTags != null) {
+                                    QwAutoTagsLogs qwAutoTagsLogs = new QwAutoTagsLogs();
+                                    qwAutoTagsLogs.setAutoTagId(qwAutoTags.getId());
+                                    qwAutoTagsLogs.setType(3L);
+                                    qwAutoTagsLogs.setQwUserid(qwUser.getId());
+                                    qwAutoTagsLogs.setExternalUserId(ext);
+
+                                    List<QwAutoTagsRulesTags> qwAutoTagsRulesTagsList = JSON.parseArray(qwAutoTags.getRulesTags(), QwAutoTagsRulesTags.class);
+                                    boolean isMatch = false;
+                                    //存分时段里符合条件的标签
+                                    Set<String> combinedTagsItem = new HashSet<>();
+                                    // 获取今天的星期数
+                                    DayOfWeek today = LocalDate.now().getDayOfWeek();
+                                    int todayIndex = today.getValue(); // 1: Monday, 2: Tuesday, ..., 7: Sunday
+                                    // 获取当前时间
+                                    LocalTime now = LocalTime.now();
+                                    // 遍历所有规则
+                                    String tagRemark = null;
+                                    for (QwAutoTagsRulesTags rulesTags : qwAutoTagsRulesTagsList) {
+
+                                        List<String> tagsItem = rulesTags.getTags();
+                                        List<Integer> week = rulesTags.getWeek();
+                                        String startTime = rulesTags.getStartTime();
+                                        String endTime = rulesTags.getEndTime();
+                                        String remarks = rulesTags.getRemarks();
+
+                                        // 检查今天是否在 week 集合中
+                                        boolean isTodayInWeek = week.contains(todayIndex);
+                                        // 转换时间字符串为 LocalTime
+                                        LocalTime start = LocalTime.parse(startTime);
+                                        LocalTime end = LocalTime.parse(endTime.equals("24:00") ? "23:59:59" : endTime);
+                                        // 检查当前时间是否在 startTime 和 endTime 之间
+                                        boolean isNowInTimeRange = !now.isBefore(start) && !now.isAfter(end);
+                                        // 如果当前时间和日期匹配规则,将 tagsItem 添加到 combinedTagsSet 中
+                                        if (isTodayInWeek && isNowInTimeRange) {
+
+                                            combinedTagsSet.addAll(tagsItem);
+                                            combinedTagsItem.addAll(tagsItem);
+                                            isMatch = true;
+                                            //如果备注不为空
+                                            if (rulesTags.getIsDay()!=null&&rulesTags.getIsDay()==1){
+                                                String DayDate = LocalDate.now().format(DateTimeFormatter.ofPattern("yyMMdd"));
+                                                tagRemark=DayDate.substring(1);
+                                            }
+                                            //如果备注不为空
+                                            if (!StringUtil.strIsNullOrEmpty(remarks)){
+                                                tagRemark = (tagRemark==null?"":(tagRemark+ "-") ) +remarks;
                                             }
                                         }
-                                        QwExternalContact qu = new QwExternalContact();
-                                        if (tagRemark != null) {
-                                            qu.setRemark(tagRemark + "-" + externalContact.getName());
-                                            QwExternalContactRemarkParam param = new QwExternalContactRemarkParam();
-                                            param.setRemark(qu.getRemark());
-                                            param.setUserid(userID);
-                                            param.setExternal_userid(externalUserID);
-                                            QwExternalContactRemarkResult remarkResult = qwApiService.externalcontactRemark(param, qwExternalContact.getCorpId());
-                                        }
+                                    }
+                                    QwExternalContact qu = new QwExternalContact();
+                                    if (tagRemark != null) {
+                                        qu.setRemark(tagRemark + "-" + externalContact.getName());
+                                        QwExternalContactRemarkParam param = new QwExternalContactRemarkParam();
+                                        param.setRemark(qu.getRemark());
+                                        param.setUserid(userID);
+                                        param.setExternal_userid(externalUserID);
+                                        QwExternalContactRemarkResult remarkResult = qwApiService.externalcontactRemark(param, qwExternalContact.getCorpId());
+                                    }
+
+                                    // 如果有匹配的规则,使用 combinedTagsList
+                                    if (isMatch) {
+                                        QwEditUserTagParam qwEditUserTagParam = new QwEditUserTagParam();
+                                        qwEditUserTagParam.setUserid(userID);
+                                        qwEditUserTagParam.setExternal_userid(externalUserID);
+                                        //添加标签的日志记录
+
+                                        List<String> combinedTags = new ArrayList<>(combinedTagsItem);
+                                        qwAutoTagsLogs.setEffectiveRules(JSON.toJSONString(combinedTags));
+                                        qwAutoTagsLogs.setAddTime(new Date());
+                                        qwAutoTagsLogs.setCompanyId(qwUser.getCompanyId());
+                                        qwAutoTagsLogs.setCorpId(qwUser.getCorpId());
+                                        //总标签 转换回列表
+                                        List<String> combinedTagsList = new ArrayList<>(combinedTagsSet);
+                                        // 设置标签
+                                        qwEditUserTagParam.setAdd_tag(combinedTagsList);
+
+                                        // 企微加标签
+                                        QwResult qwResult = qwApiService.editUserTag(qwEditUserTagParam, corpId);
+                                        if (qwResult.getErrcode() == 0) {
+                                            qwExternalContact.setTagIds(JSON.toJSONString(combinedTagsList));
+                                            qwAutoTagsLogsMapper.insertOrUpdateQwAutoTagsLogs(qwAutoTagsLogs);
+                                            if (!combinedTagsSet.isEmpty()) {
+                                                //分时段里符合的标签-再用来创建自动SOP
+                                                QwSopAutoByTags qwSopAutoByTags = new QwSopAutoByTags();
+                                                qwSopAutoByTags.setQwUserId(String.valueOf(qwUser.getId()));
+                                                qwSopAutoByTags.setCorpId(corpId);
+                                                qwSopAutoByTags.setTagsIdsSelectList(combinedTagsList);
+                                                qwSopAutoByTags.setSendType(2);
+                                                List<QwSopRuleTimeVO> qwSopRuleTimeVOS = qwSopMapper.selectQwSopAutoByTagsByForeach(qwSopAutoByTags);
+                                                logger.info("分时段里符合的标签-自动SOP条件:" + qwSopAutoByTags + "|" + qwUser.getQwUserId() + "|" + ext);
+
+                                                if (qwSopRuleTimeVOS != null && !qwSopRuleTimeVOS.isEmpty()) {
+                                                    //SOP规则
+                                                    qwSopRuleTimeTools(qwSopRuleTimeVOS, qwUserId, qwUser, corpId, ext, externalContact.getName(), contact, currentDate, localTime, combinedTagsList);
+                                                }
 
-                                        // 如果有匹配的规则,使用 combinedTagsList
-                                        if (isMatch) {
-                                            QwEditUserTagParam qwEditUserTagParam = new QwEditUserTagParam();
-                                            qwEditUserTagParam.setUserid(userID);
-                                            qwEditUserTagParam.setExternal_userid(externalUserID);
-                                            //添加标签的日志记录
-
-                                            List<String> combinedTags = new ArrayList<>(combinedTagsItem);
-                                            qwAutoTagsLogs.setEffectiveRules(JSON.toJSONString(combinedTags));
-                                            qwAutoTagsLogs.setAddTime(new Date());
-                                            qwAutoTagsLogs.setCompanyId(qwUser.getCompanyId());
-                                            qwAutoTagsLogs.setCorpId(qwUser.getCorpId());
-                                            //总标签 转换回列表
-                                            List<String> combinedTagsList = new ArrayList<>(combinedTagsSet);
-                                            // 设置标签
-                                            qwEditUserTagParam.setAdd_tag(combinedTagsList);
-
-                                            // 企微加标签
-                                            QwResult qwResult = qwApiService.editUserTag(qwEditUserTagParam, corpId);
-                                            if (qwResult.getErrcode() == 0) {
-                                                qwExternalContact.setTagIds(JSON.toJSONString(combinedTagsList));
-                                                qwAutoTagsLogsMapper.insertOrUpdateQwAutoTagsLogs(qwAutoTagsLogs);
-                                                if (!combinedTagsSet.isEmpty()) {
-                                                    //分时段里符合的标签-再用来创建自动SOP
-                                                    QwSopAutoByTags qwSopAutoByTags = new QwSopAutoByTags();
-                                                    qwSopAutoByTags.setQwUserId(String.valueOf(qwUser.getId()));
-                                                    qwSopAutoByTags.setCorpId(corpId);
-                                                    qwSopAutoByTags.setTagsIdsSelectList(combinedTagsList);
-                                                    qwSopAutoByTags.setSendType(2);
-                                                    List<QwSopRuleTimeVO> qwSopRuleTimeVOS = qwSopMapper.selectQwSopAutoByTagsByForeach(qwSopAutoByTags);
-                                                    logger.info("分时段里符合的标签-自动SOP条件:" + qwSopAutoByTags + "|" + qwUser.getQwUserId() + "|" + ext);
-
-                                                    if (qwSopRuleTimeVOS != null && !qwSopRuleTimeVOS.isEmpty()) {
-                                                        //SOP规则
-                                                        qwSopRuleTimeTools(qwSopRuleTimeVOS, qwUserId, qwUser, corpId, ext, externalContact.getName(), contact, currentDate, localTime, combinedTagsList);
-                                                    }
-
-                                                    //aiSop任务
-                                                    Boolean sopAiChatByRedis = getSopAiChatByRedis(userID, corpId, externalUserID);
-                                                    if (!sopAiChatByRedis){
-                                                        asyncQwAiChatSopService.executeQwAiChatSop(qwSopAutoByTags,userID,qwUser,externalUserID
-                                                                ,externalContact.getName(),contact.getId(),contact.getFsUserId(),currentDate,localTime);
-                                                    }
-
-                                                    //aiSop任务
+                                                //aiSop任务
+                                                Boolean sopAiChatByRedis = getSopAiChatByRedis(userID, corpId, externalUserID);
+                                                if (!sopAiChatByRedis){
+                                                    asyncQwAiChatSopService.executeQwAiChatSop(qwSopAutoByTags,userID,qwUser,externalUserID
+                                                            ,externalContact.getName(),contact.getId(),contact.getFsUserId(),currentDate,localTime);
+                                                }
+
+                                                //aiSop任务
 //                                                    List<QwSopRuleTimeVO> qwSopAiRuleTimeVOS = qwSopMapper.selectQwAiSopAutoByTagsByForeach(qwSopAutoByTags);
 //                                                    if (qwSopAiRuleTimeVOS != null && !qwSopAiRuleTimeVOS.isEmpty()) {
 //                                                        qwAiSopRuleTimeTools(qwSopAiRuleTimeVOS, userID, qwUser, corpId, externalUserID, externalContact.getName(), contact);
 //                                                    }
-                                                }
-                                            } else if (qwResult.getErrcode() == 45035) {
-                                                //加入补偿机制
-                                                insertQwExternalErrRetryTool(corpId, JSON.toJSONString(qwEditUserTagParam), 1, qwResult.getErrmsg());
                                             }
-                                            qu.setId(contact.getId());
-                                            qu.setTagIds(JSON.toJSONString(combinedTagsList));
-                                            qwExternalContactMapper.updateQwExternalContact(qu);
-
-                                        } else {
-                                            // 转换回列表
-                                            List<String> combinedTagsList = new ArrayList<>(combinedTagsSet);
-                                            logger.info("不符合分时段条件2--看全部标签是否有符合的:" + combinedTagsList + "|" + externalUserID + "|" + userID + "|" + corpId);
-                                            try {
-                                                if (!combinedTagsSet.isEmpty()) {
-                                                    //分时段里符合的标签-再用来创建自动SOP
-                                                    QwSopAutoByTags qwSopAutoByTags = new QwSopAutoByTags();
-                                                    qwSopAutoByTags.setQwUserId(String.valueOf(qwUser.getId()));
-                                                    qwSopAutoByTags.setCorpId(corpId);
-                                                    qwSopAutoByTags.setTagsIdsSelectList(combinedTagsList);
-                                                    qwSopAutoByTags.setSendType(2);
-                                                    List<QwSopRuleTimeVO> qwSopRuleTimeVOS = qwSopMapper.selectQwSopAutoByTagsByForeach(qwSopAutoByTags);
-                                                    if (qwSopRuleTimeVOS != null && !qwSopRuleTimeVOS.isEmpty()) {
-                                                        //SOP规则
-                                                        qwSopRuleTimeTools(qwSopRuleTimeVOS, userID, qwUser, corpId, externalUserID, externalContact.getName(), contact, currentDate, localTime, combinedTagsList);
-                                                    }
-
-                                                    //aiSop任务
-                                                    Boolean sopAiChatByRedis = getSopAiChatByRedis(userID, corpId, externalUserID);
-                                                    if (!sopAiChatByRedis){
-                                                        asyncQwAiChatSopService.executeQwAiChatSop(qwSopAutoByTags,userID,qwUser,externalUserID
-                                                                ,externalContact.getName(),contact.getId(),contact.getFsUserId(),currentDate,localTime);
-                                                    }
-                                                    //aiSop任务
+                                        } else if (qwResult.getErrcode() == 45035) {
+                                            //加入补偿机制
+                                            insertQwExternalErrRetryTool(corpId, JSON.toJSONString(qwEditUserTagParam), 1, qwResult.getErrmsg());
+                                        }
+                                        qu.setId(contact.getId());
+                                        qu.setTagIds(JSON.toJSONString(combinedTagsList));
+                                        qwExternalContactMapper.updateQwExternalContact(qu);
+
+                                    } else {
+                                        // 转换回列表
+                                        List<String> combinedTagsList = new ArrayList<>(combinedTagsSet);
+                                        logger.info("不符合分时段条件2--看全部标签是否有符合的:" + combinedTagsList + "|" + externalUserID + "|" + userID + "|" + corpId);
+                                        try {
+                                            if (!combinedTagsSet.isEmpty()) {
+                                                //分时段里符合的标签-再用来创建自动SOP
+                                                QwSopAutoByTags qwSopAutoByTags = new QwSopAutoByTags();
+                                                qwSopAutoByTags.setQwUserId(String.valueOf(qwUser.getId()));
+                                                qwSopAutoByTags.setCorpId(corpId);
+                                                qwSopAutoByTags.setTagsIdsSelectList(combinedTagsList);
+                                                qwSopAutoByTags.setSendType(2);
+                                                List<QwSopRuleTimeVO> qwSopRuleTimeVOS = qwSopMapper.selectQwSopAutoByTagsByForeach(qwSopAutoByTags);
+                                                if (qwSopRuleTimeVOS != null && !qwSopRuleTimeVOS.isEmpty()) {
+                                                    //SOP规则
+                                                    qwSopRuleTimeTools(qwSopRuleTimeVOS, userID, qwUser, corpId, externalUserID, externalContact.getName(), contact, currentDate, localTime, combinedTagsList);
+                                                }
+
+                                                //aiSop任务
+                                                Boolean sopAiChatByRedis = getSopAiChatByRedis(userID, corpId, externalUserID);
+                                                if (!sopAiChatByRedis){
+                                                    asyncQwAiChatSopService.executeQwAiChatSop(qwSopAutoByTags,userID,qwUser,externalUserID
+                                                            ,externalContact.getName(),contact.getId(),contact.getFsUserId(),currentDate,localTime);
+                                                }
+                                                //aiSop任务
 //                                                    List<QwSopRuleTimeVO> qwSopAiRuleTimeVOS = qwSopMapper.selectQwAiSopAutoByTagsByForeach(qwSopAutoByTags);
 //                                                    if (qwSopAiRuleTimeVOS != null && !qwSopAiRuleTimeVOS.isEmpty()) {
 //                                                        qwAiSopRuleTimeTools(qwSopAiRuleTimeVOS, userID, qwUser, corpId, externalUserID, externalContact.getName(), contact);
 //                                                    }
-                                                }
-                                            } catch (Exception e) {
                                             }
+                                        } catch (Exception e) {
                                         }
-                                    } else {
+                                    }
+                                } else {
+                                    try {
+                                        // 转换回列表
+                                        List<String> combinedTagsList = new ArrayList<>(combinedTagsSet);
+                                        logger.error("不符合分时段条件2--看全部标签是否有符合的:" + combinedTagsList + "|" + externalUserID + "|" + userID + "|" + corpId);
                                         try {
-                                            // 转换回列表
-                                            List<String> combinedTagsList = new ArrayList<>(combinedTagsSet);
-                                            logger.error("不符合分时段条件2--看全部标签是否有符合的:" + combinedTagsList + "|" + externalUserID + "|" + userID + "|" + corpId);
-                                            try {
-                                                if (!combinedTagsSet.isEmpty()) {
-                                                    //分时段里符合的标签-再用来创建自动SOP
-                                                    QwSopAutoByTags qwSopAutoByTags = new QwSopAutoByTags();
-                                                    qwSopAutoByTags.setQwUserId(String.valueOf(qwUser.getId()));
-                                                    qwSopAutoByTags.setCorpId(corpId);
-                                                    qwSopAutoByTags.setTagsIdsSelectList(combinedTagsList);
-                                                    qwSopAutoByTags.setSendType(2);
-                                                    List<QwSopRuleTimeVO> qwSopRuleTimeVOS = qwSopMapper.selectQwSopAutoByTagsByForeach(qwSopAutoByTags);
-                                                    if (qwSopRuleTimeVOS != null && !qwSopRuleTimeVOS.isEmpty()) {
-                                                        //SOP规则
-                                                        qwSopRuleTimeTools(qwSopRuleTimeVOS, userID, qwUser, corpId, externalUserID, externalContact.getName(), contact, currentDate, localTime, combinedTagsList);
-                                                    }
-
-                                                    //aiSop任务
-                                                    Boolean sopAiChatByRedis = getSopAiChatByRedis(userID, corpId, externalUserID);
-                                                    if (!sopAiChatByRedis){
-                                                        asyncQwAiChatSopService.executeQwAiChatSop(qwSopAutoByTags,userID,qwUser,externalUserID
-                                                                ,externalContact.getName(),contact.getId(),contact.getFsUserId(),currentDate,localTime);
-                                                    }
-
-                                                    //aiSop任务
+                                            if (!combinedTagsSet.isEmpty()) {
+                                                //分时段里符合的标签-再用来创建自动SOP
+                                                QwSopAutoByTags qwSopAutoByTags = new QwSopAutoByTags();
+                                                qwSopAutoByTags.setQwUserId(String.valueOf(qwUser.getId()));
+                                                qwSopAutoByTags.setCorpId(corpId);
+                                                qwSopAutoByTags.setTagsIdsSelectList(combinedTagsList);
+                                                qwSopAutoByTags.setSendType(2);
+                                                List<QwSopRuleTimeVO> qwSopRuleTimeVOS = qwSopMapper.selectQwSopAutoByTagsByForeach(qwSopAutoByTags);
+                                                if (qwSopRuleTimeVOS != null && !qwSopRuleTimeVOS.isEmpty()) {
+                                                    //SOP规则
+                                                    qwSopRuleTimeTools(qwSopRuleTimeVOS, userID, qwUser, corpId, externalUserID, externalContact.getName(), contact, currentDate, localTime, combinedTagsList);
+                                                }
+
+                                                //aiSop任务
+                                                Boolean sopAiChatByRedis = getSopAiChatByRedis(userID, corpId, externalUserID);
+                                                if (!sopAiChatByRedis){
+                                                    asyncQwAiChatSopService.executeQwAiChatSop(qwSopAutoByTags,userID,qwUser,externalUserID
+                                                            ,externalContact.getName(),contact.getId(),contact.getFsUserId(),currentDate,localTime);
+                                                }
+
+                                                //aiSop任务
 //                                                    List<QwSopRuleTimeVO> qwSopAiRuleTimeVOS = qwSopMapper.selectQwAiSopAutoByTagsByForeach(qwSopAutoByTags);
 //                                                    if (qwSopAiRuleTimeVOS != null && !qwSopAiRuleTimeVOS.isEmpty()) {
 //                                                        qwAiSopRuleTimeTools(qwSopAiRuleTimeVOS, userID, qwUser, corpId, externalUserID, externalContact.getName(), contact);
 //                                                    }
-                                                }
-                                            } catch (Exception e) {
-                                                logger.error("用自带标签入营期出错" + combinedTagsList + "|" + externalUserID + "|" + userID + "|" + corpId);
                                             }
                                         } catch (Exception e) {
-                                            logger.error("打标签出错" + e.getMessage());
+                                            logger.error("用自带标签入营期出错" + combinedTagsList + "|" + externalUserID + "|" + userID + "|" + corpId);
                                         }
+                                    } catch (Exception e) {
+                                        logger.error("打标签出错" + e.getMessage());
                                     }
                                 }
                             }
                         }
-                        //库里有 企微没有的
+                    }
+                    //库里有 企微没有的
 //                    List<String> notInExternalUseridList = qwExternalContactList.stream()
 //                            .filter(externalUserId -> !externalUserid.contains(externalUserId))
 //                            .collect(Collectors.toList());
@@ -5595,10 +5596,10 @@ public class QwExternalContactServiceImpl extends ServiceImpl<QwExternalContactM
 //                    }
 
 
-                    }
+                }
 
 
-                }
+            }
 
 
 
@@ -5795,79 +5796,79 @@ public class QwExternalContactServiceImpl extends ServiceImpl<QwExternalContactM
     }
 
     //发送好友欢迎语
-       void   SyncAddSendWelcome(QwExternalContact qwExternalContact, QwUser qwUser, String corpId){
-             QwFriendWelcomeVO qwFriendWelcomeVO = qwFriendWelcomeMapper.selectQwFriendWelcomeByUserIdVO(qwUser.getId(), corpId);
-                ArrayList<String> msgParamList=new ArrayList<>();
-                if (qwFriendWelcomeVO != null) {
+    void   SyncAddSendWelcome(QwExternalContact qwExternalContact, QwUser qwUser, String corpId){
+        QwFriendWelcomeVO qwFriendWelcomeVO = qwFriendWelcomeMapper.selectQwFriendWelcomeByUserIdVO(qwUser.getId(), corpId);
+        ArrayList<String> msgParamList=new ArrayList<>();
+        if (qwFriendWelcomeVO != null) {
 
-                    // 是否分时段
-                    if (qwFriendWelcomeVO.getIsDayparting().equals("1")) {
+            // 是否分时段
+            if (qwFriendWelcomeVO.getIsDayparting().equals("1")) {
 
-                        // 多个时段
-                        List<QwFriendWelcomeDayPart.Schedule> schedules = JSON.parseArray(qwFriendWelcomeVO.getDaypartingItemlist(), QwFriendWelcomeDayPart.Schedule.class);
+                // 多个时段
+                List<QwFriendWelcomeDayPart.Schedule> schedules = JSON.parseArray(qwFriendWelcomeVO.getDaypartingItemlist(), QwFriendWelcomeDayPart.Schedule.class);
 
-                        LocalTime now = LocalTime.now();
-                        // 获取当前是周几
-                        Integer week = LocalDate.now().getDayOfWeek().getValue();
+                LocalTime now = LocalTime.now();
+                // 获取当前是周几
+                Integer week = LocalDate.now().getDayOfWeek().getValue();
 
-                        boolean match = false;
+                boolean match = false;
 
-                        for (QwFriendWelcomeDayPart.Schedule schedule : schedules) {
-                            if (schedule.getWeek().contains(week)) {
-                                LocalTime start = LocalTime.parse(schedule.getStartTime());
-                                LocalTime end = LocalTime.parse(schedule.getEndTime().equals("24:00") ? "23:59:59" : schedule.getEndTime());
+                for (QwFriendWelcomeDayPart.Schedule schedule : schedules) {
+                    if (schedule.getWeek().contains(week)) {
+                        LocalTime start = LocalTime.parse(schedule.getStartTime());
+                        LocalTime end = LocalTime.parse(schedule.getEndTime().equals("24:00") ? "23:59:59" : schedule.getEndTime());
 
-                                if (!now.isBefore(start) && !now.isAfter(end)) {
-                                    // 设置文本消息
-                                    msgParamList.add(schedule.getWelcomeText());
-
-                                    List<SendWelcomeMsgParam.Attachment> attachments = schedule.getAttachments();
-                                    // 设置所有附件 上短链
-                                    List<SendWelcomeMsgParam.Attachment> attachmentsMatch = attachmentsTools(attachments, qwUser, corpId, qwExternalContact.getId());
-
-                                    attachmentsMatch.forEach(item->{
-                                        if (("link").equals(item.getMsgtype())) {
-                                            msgParamList.add(item.getLink().getUrl());
-                                        }
-                                    });
-                                    match = true;
-                                    break; // 找到匹配项后退出整个for循环
-                                }
-                            }
-                        }
-
-                        // 如果没有找到匹配项
-                        if (!match) {
+                        if (!now.isBefore(start) && !now.isAfter(end)) {
                             // 设置文本消息
-                            msgParamList.add(qwFriendWelcomeVO.getWelcomeText());
+                            msgParamList.add(schedule.getWelcomeText());
 
-                            // 设置所有附件
-                            List<SendWelcomeMsgParam.Attachment> attachmentsAll = JSON.parseArray(qwFriendWelcomeVO.getAttachments(), SendWelcomeMsgParam.Attachment.class);
-                            //上短链
-                            List<SendWelcomeMsgParam.Attachment> attachmentsNotMach = attachmentsTools(attachmentsAll, qwUser, corpId, qwExternalContact.getId());
-                            attachmentsNotMach.forEach(item->{
+                            List<SendWelcomeMsgParam.Attachment> attachments = schedule.getAttachments();
+                            // 设置所有附件 上短链
+                            List<SendWelcomeMsgParam.Attachment> attachmentsMatch = attachmentsTools(attachments, qwUser, corpId, qwExternalContact.getId());
+
+                            attachmentsMatch.forEach(item->{
                                 if (("link").equals(item.getMsgtype())) {
                                     msgParamList.add(item.getLink().getUrl());
                                 }
-
                             });
+                            match = true;
+                            break; // 找到匹配项后退出整个for循环
                         }
+                    }
+                }
 
-                    } else {
+                // 如果没有找到匹配项
+                if (!match) {
+                    // 设置文本消息
+                    msgParamList.add(qwFriendWelcomeVO.getWelcomeText());
+
+                    // 设置所有附件
+                    List<SendWelcomeMsgParam.Attachment> attachmentsAll = JSON.parseArray(qwFriendWelcomeVO.getAttachments(), SendWelcomeMsgParam.Attachment.class);
+                    //上短链
+                    List<SendWelcomeMsgParam.Attachment> attachmentsNotMach = attachmentsTools(attachmentsAll, qwUser, corpId, qwExternalContact.getId());
+                    attachmentsNotMach.forEach(item->{
+                        if (("link").equals(item.getMsgtype())) {
+                            msgParamList.add(item.getLink().getUrl());
+                        }
 
-                        msgParamList.add(qwFriendWelcomeVO.getWelcomeText());
+                    });
+                }
 
-                        // 设置所有附件
-                        List<SendWelcomeMsgParam.Attachment> attachmentsAll = JSON.parseArray(qwFriendWelcomeVO.getAttachments(), SendWelcomeMsgParam.Attachment.class);
-                        //加短链
-                        List<SendWelcomeMsgParam.Attachment> attachments = attachmentsTools(attachmentsAll, qwUser, corpId, qwExternalContact.getId());
-                        attachments.forEach(item->{
-                            if (("link").equals(item.getMsgtype())) {
-                                msgParamList.add(item.getLink().getUrl());
-                            }
+            } else {
 
-                        });
+                msgParamList.add(qwFriendWelcomeVO.getWelcomeText());
+
+                // 设置所有附件
+                List<SendWelcomeMsgParam.Attachment> attachmentsAll = JSON.parseArray(qwFriendWelcomeVO.getAttachments(), SendWelcomeMsgParam.Attachment.class);
+                //加短链
+                List<SendWelcomeMsgParam.Attachment> attachments = attachmentsTools(attachmentsAll, qwUser, corpId, qwExternalContact.getId());
+                attachments.forEach(item->{
+                    if (("link").equals(item.getMsgtype())) {
+                        msgParamList.add(item.getLink().getUrl());
                     }
+
+                });
+            }
 //                    if (qwUser.getAppKey()!=null){
 //                        if (msgParamList!=null&&msgParamList.size()>0){
 //                            for (String value : msgParamList) {
@@ -5887,9 +5888,9 @@ public class QwExternalContactServiceImpl extends ServiceImpl<QwExternalContactM
 //                        }
 //                    }
 
-                    System.out.println("这里最后发送好友好有欢迎语");
+            System.out.println("这里最后发送好友好有欢迎语");
 
-                }
+        }
     }
     public void qwExternalContactSyncByCorpId(String corpId) {
 
@@ -5918,6 +5919,20 @@ public class QwExternalContactServiceImpl extends ServiceImpl<QwExternalContactM
         qwExternalContactMapper.updateQwExternalContactStatusById(qwExternalContact);
     }
 
+    @Override
+    public List<QwExternalContact> selectQwUserAndLevel(List<Long> qwUserIdList, List<String> levelList, boolean isReg) {
+        QueryWrapper<QwExternalContact> queryCondition = new QueryWrapper<QwExternalContact>().isNotNull(isReg, "fs_user_id").eq("status", 0).eq("join_group", 0)
+                .in("qw_user_id", qwUserIdList).and(qw->{
+                    qw.in("level", levelList);
+                    if(levelList.contains("-1")) {
+                        qw.or().isNull("level");
+                    }
+                    return qw;
+                });
+
+        return list(queryCondition);
+    }
+
     @Override
     public R getRepeat(RepeatParam param) {
         List<QwExternalContact> list = qwExternalContactMapper.selectList(new QueryWrapper<QwExternalContact>().eq("external_user_id", param.getExternalUserId()));
@@ -5960,4 +5975,6 @@ public class QwExternalContactServiceImpl extends ServiceImpl<QwExternalContactM
         }
         return false;
     }
+
+
 }