|
|
@@ -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;
|
|
|
}
|
|
|
+
|
|
|
+
|
|
|
}
|