diff --git a/coolstore-partner-common/src/main/java/com/cool/store/constants/CommonConstants.java b/coolstore-partner-common/src/main/java/com/cool/store/constants/CommonConstants.java index fb7c92c84..7bfc6f949 100644 --- a/coolstore-partner-common/src/main/java/com/cool/store/constants/CommonConstants.java +++ b/coolstore-partner-common/src/main/java/com/cool/store/constants/CommonConstants.java @@ -29,9 +29,9 @@ public class CommonConstants { public static final int AN_HOUR_SECONDS = 3600; /** - * 企业开通锁存活时间 + * 跟进任务通知缓存时间 1小时 */ - public static final int ENTERPRISE_OPEN_LOCK_TIMES = 4 * 60 * 60 * 1000; + public static final int FOLLOW_TASK_NOTICE_LOCK_TIMES = 60 * 60 * 1000; public static final int ONE_DAY_SECONDS = 24 * 60 * 60; @@ -103,6 +103,7 @@ public class CommonConstants { public static final int EIGHTY = 80; public static final int NINETY = 90; public static final int HUNDRED = 100; + public static final int FIVE_HUNDRED = 100; public static final int ONE_THOUSAND = 1000; @@ -133,4 +134,6 @@ public class CommonConstants { public static final String DAY_START_TIME_SUFFIX = " 00:00:00"; + public static final String FOLLOW_TASK_NOTICE_KEY = "follow_task_notice:{0}:{1}"; + } diff --git a/coolstore-partner-common/src/main/java/com/cool/store/enums/OperateLogFieldValueEnum.java b/coolstore-partner-common/src/main/java/com/cool/store/enums/OperateLogFieldValueEnum.java index 185a03de8..10a8ee4c4 100644 --- a/coolstore-partner-common/src/main/java/com/cool/store/enums/OperateLogFieldValueEnum.java +++ b/coolstore-partner-common/src/main/java/com/cool/store/enums/OperateLogFieldValueEnum.java @@ -47,7 +47,9 @@ public enum OperateLogFieldValueEnum { BEFORE_CLERK_INFO_UPDATE("beforeClerkUpdate", "修改前的意向书员工信息"), AFTER_CLERK_INFO_UPDATE("afterClerkUpdate", "修改后的意向书员工信息"), FOLLOW_LOG("followLog", "跟进日志"), - FOLLOW_TASK_ID("followTaskId", "跟进任务id") + FOLLOW_TASK_ID("followTaskId", "跟进任务id"), + ADD_LABELS("addLabels", "新增标签"), + REMOVE_LABELS("removeLabels", "移除标签") ; diff --git a/coolstore-partner-common/src/main/java/com/cool/store/enums/OperateTypeEnum.java b/coolstore-partner-common/src/main/java/com/cool/store/enums/OperateTypeEnum.java index db75c1204..b8b3ffbfa 100644 --- a/coolstore-partner-common/src/main/java/com/cool/store/enums/OperateTypeEnum.java +++ b/coolstore-partner-common/src/main/java/com/cool/store/enums/OperateTypeEnum.java @@ -34,7 +34,7 @@ public enum OperateTypeEnum { USERINFO_UPDATE("userinfo_update", "修改(修改意向信息)", Arrays.asList(OPERATE_USER_ID,OPERATE_USER_NAME, MOBILE, OPERATE_TIME, BEFORE_USERINFO_UPDATE, AFTER_USERINFO_UPDATE)), INTENT_INFO_SUBMIT("intent_info_submit", "提交意向申请书", Arrays.asList(OPERATE_USER_ID,OPERATE_USER_NAME, MOBILE, OPERATE_TIME, AFTER_BASE_INFO_UPDATE, AFTER_INTENT_INFO_UPDATE, AFTER_CLERK_INFO_UPDATE)), INTENT_INFO_UPDATE("intent_info_update", "修改意向申请书", Arrays.asList(OPERATE_USER_ID,OPERATE_USER_NAME, MOBILE, OPERATE_TIME, BEFORE_BASE_INFO_UPDATE, AFTER_BASE_INFO_UPDATE, BEFORE_INTENT_INFO_UPDATE, AFTER_INTENT_INFO_UPDATE, BEFORE_CLERK_INFO_UPDATE, AFTER_CLERK_INFO_UPDATE)), - ADD_TAGS("add_tags", "修改意向申请书", Arrays.asList(OPERATE_USER_ID,OPERATE_USER_NAME, MOBILE, OPERATE_TIME)), + ADD_TAGS("add_tags", "修改意向申请书", Arrays.asList(OPERATE_USER_ID,OPERATE_USER_NAME, MOBILE, OPERATE_TIME, ADD_LABELS, REMOVE_LABELS)), ADD_FOLLOW_LOG("add_follow_log", "新增根据日志", Arrays.asList(FOLLOW_LOG)), ADD_FOLLOW_TASK("add_follow_task", "新增跟进任务", Arrays.asList(FOLLOW_TASK_ID)) ; diff --git a/coolstore-partner-dao/src/main/java/com/cool/store/dao/HyFollowTaskDAO.java b/coolstore-partner-dao/src/main/java/com/cool/store/dao/HyFollowTaskDAO.java index 992638a93..3494fc08a 100644 --- a/coolstore-partner-dao/src/main/java/com/cool/store/dao/HyFollowTaskDAO.java +++ b/coolstore-partner-dao/src/main/java/com/cool/store/dao/HyFollowTaskDAO.java @@ -1,15 +1,21 @@ package com.cool.store.dao; +import cn.hutool.core.date.DateUtil; +import com.cool.store.constants.CommonConstants; +import com.cool.store.dto.follow.FollowTaskNumDTO; import com.cool.store.entity.HyFollowTaskDO; import com.cool.store.enums.FollowTaskStatusEnum; import com.cool.store.mapper.HyFollowTaskMapper; +import com.cool.store.utils.CoolDateUtils; import com.github.pagehelper.Page; import com.github.pagehelper.PageHelper; import com.google.common.collect.Lists; +import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang3.StringUtils; import org.springframework.stereotype.Repository; import javax.annotation.Resource; +import java.util.Date; import java.util.List; import java.util.Objects; @@ -140,4 +146,53 @@ public class HyFollowTaskDAO { hyFollowTaskMapper.cancelUndoFollowTask(partnerLineId); } + /** + * 获取消息通知的跟进人 + * @param date + * @param pageNum + * @param pageSize + * @return + */ + public Page getRemindFollowUserIds(Date date, Integer pageNum, Integer pageSize){ + String startTime = DateUtil.format(date, CoolDateUtils.DATE_FORMAT_DAY) + CommonConstants.DAY_START_TIME_SUFFIX; + String endTime = DateUtil.format(date, CoolDateUtils.DATE_FORMAT_DAY) + CommonConstants.DAY_END_TIME_SUFFIX; + PageHelper.startPage(pageNum, pageSize); + return hyFollowTaskMapper.getRemindFollowUserIds(startTime, endTime); + } + + /** + * 获取用户任务数量 + * @param followUserIds + * @return + */ + public List getUserTaskNum(List followUserIds){ + if(CollectionUtils.isEmpty(followUserIds)){ + return Lists.newArrayList(); + } + return hyFollowTaskMapper.getUserTaskNum(followUserIds); + } + + /** + * 获取待完成任务 + * @param startTime + * @param endTime + * @param pageNum + * @param pageSize + * @return + */ + public Page getUndoTaskPage(String startTime, String endTime, Integer pageNum, Integer pageSize){ + PageHelper.startPage(pageNum, pageSize); + return hyFollowTaskMapper.getUndoTaskPage(startTime, endTime); + } + + /** + * 更新未完成任务的状态到已逾期 + * @return + */ + public Integer updateUndoTaskStatusToOverdue(){ + return hyFollowTaskMapper.updateUndoTaskStatusToOverdue(); + } + + + } diff --git a/coolstore-partner-dao/src/main/java/com/cool/store/mapper/HyFollowTaskMapper.java b/coolstore-partner-dao/src/main/java/com/cool/store/mapper/HyFollowTaskMapper.java index 971990233..6988ffbf3 100644 --- a/coolstore-partner-dao/src/main/java/com/cool/store/mapper/HyFollowTaskMapper.java +++ b/coolstore-partner-dao/src/main/java/com/cool/store/mapper/HyFollowTaskMapper.java @@ -1,5 +1,6 @@ package com.cool.store.mapper; +import com.cool.store.dto.follow.FollowTaskNumDTO; import com.cool.store.entity.HyFollowTaskDO; import com.github.pagehelper.Page; import org.apache.ibatis.annotations.Param; @@ -63,4 +64,33 @@ public interface HyFollowTaskMapper { * @return */ Integer cancelUndoFollowTask(@Param("partnerLineId") Long partnerLineId); + + /** + * 获取发送通知的跟进人 + * @param startTime + * @param endTime + * @return + */ + Page getRemindFollowUserIds(@Param("startTime")String startTime, @Param("endTime")String endTime); + + /** + * 获取用户任务数量 + * @param followUserIds + * @return + */ + List getUserTaskNum(@Param("followUserIds") List followUserIds); + + /** + * 获取待完成任务 + * @param startTime + * @param endTime + * @return + */ + Page getUndoTaskPage(@Param("startTime") String startTime, @Param("endTime") String endTime); + + /** + * 更新未完成任务的状态 + * @return + */ + Integer updateUndoTaskStatusToOverdue(); } \ No newline at end of file diff --git a/coolstore-partner-dao/src/main/resources/mapper/HyFollowTaskMapper.xml b/coolstore-partner-dao/src/main/resources/mapper/HyFollowTaskMapper.xml index 22dd7b60b..29c8107bd 100644 --- a/coolstore-partner-dao/src/main/resources/mapper/HyFollowTaskMapper.xml +++ b/coolstore-partner-dao/src/main/resources/mapper/HyFollowTaskMapper.xml @@ -165,4 +165,39 @@ update hy_follow_task set task_status = '3' where partner_line_id = #{partnerLineId} and task_status in ('0', '2') + + + + + + + + + + + \ No newline at end of file diff --git a/coolstore-partner-model/src/main/java/com/cool/store/dto/follow/FollowTaskNumDTO.java b/coolstore-partner-model/src/main/java/com/cool/store/dto/follow/FollowTaskNumDTO.java new file mode 100644 index 000000000..fe0db2757 --- /dev/null +++ b/coolstore-partner-model/src/main/java/com/cool/store/dto/follow/FollowTaskNumDTO.java @@ -0,0 +1,42 @@ +package com.cool.store.dto.follow; + +import com.cool.store.constants.MessageConstants; +import com.cool.store.utils.StringUtil; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.text.MessageFormat; + +/** + * @author zhangchenbiao + * @FileName: FollowTaskNumDTO + * @Description: + * @date 2023-08-14 16:01 + */ +@Data +public class FollowTaskNumDTO { + + @ApiModelProperty("任务跟进人id") + private String followUserId; + + @ApiModelProperty("未完成数量") + private Integer todoNum; + + @ApiModelProperty("逾期数量") + private Integer overdueNum; + + public static String getMessageContent(FollowTaskNumDTO followTask){ + if(followTask.getTodoNum() > 0 && followTask.getOverdueNum() > 0){ + return MessageFormat.format(MessageConstants.FOLLOW_TASK_MESSAGE_CONTENT_1, followTask.getTodoNum(), followTask.getOverdueNum()); + } + if(followTask.getTodoNum() == 0 && followTask.getOverdueNum() > 0){ + return MessageFormat.format(MessageConstants.FOLLOW_TASK_MESSAGE_CONTENT_2, followTask.getOverdueNum()); + } + if(followTask.getTodoNum() > 0 && followTask.getOverdueNum() == 0){ + return MessageFormat.format(MessageConstants.FOLLOW_TASK_MESSAGE_CONTENT_3, followTask.getTodoNum()); + } + return StringUtil.EMPTY; + } + + +} diff --git a/coolstore-partner-model/src/main/java/com/cool/store/dto/log/AddTagsDTO.java b/coolstore-partner-model/src/main/java/com/cool/store/dto/log/AddTagsDTO.java index 5c5c63a51..fa6039957 100644 --- a/coolstore-partner-model/src/main/java/com/cool/store/dto/log/AddTagsDTO.java +++ b/coolstore-partner-model/src/main/java/com/cool/store/dto/log/AddTagsDTO.java @@ -3,6 +3,8 @@ package com.cool.store.dto.log; import lombok.Builder; import lombok.Data; +import java.util.List; + /** * @Author suzhuhong * @Date 2023/7/4 10:05 @@ -19,4 +21,8 @@ public class AddTagsDTO { private String operateUserId; private String mobile; + + private List addLabels; + + private List removeLabels; } diff --git a/coolstore-partner-model/src/main/java/com/cool/store/vo/follow/FollowTaskPageVO.java b/coolstore-partner-model/src/main/java/com/cool/store/vo/follow/FollowTaskPageVO.java index 3b4df4fef..a44070f71 100644 --- a/coolstore-partner-model/src/main/java/com/cool/store/vo/follow/FollowTaskPageVO.java +++ b/coolstore-partner-model/src/main/java/com/cool/store/vo/follow/FollowTaskPageVO.java @@ -17,6 +17,9 @@ import java.util.*; @Data public class FollowTaskPageVO { + @ApiModelProperty("任务id") + private Long followTaskId; + @ApiModelProperty("线索id") private Long partnerLineId; @@ -35,6 +38,9 @@ public class FollowTaskPageVO { @ApiModelProperty("跟进阶段") private String workflowStage; + @ApiModelProperty("线索用户id") + private String partnerId; + @ApiModelProperty("线索用户名") private String partnerUsername; @@ -51,12 +57,14 @@ public class FollowTaskPageVO { continue; } FollowTaskPageVO result = new FollowTaskPageVO(); + result.setFollowTaskId(task.getId()); result.setPartnerLineId(task.getPartnerLineId()); result.setTaskTitle(task.getTaskTitle()); result.setCommunicationType(task.getCommunicationType()); result.setDeadline(task.getDeadline()); result.setTaskStatus(task.getTaskStatus()); result.setWorkflowStage(partnerInfo.getWorkflowStage()); + result.setPartnerId(partnerInfo.getPartnerId()); result.setPartnerUsername(partnerInfo.getUsername()); result.setPartnerMobile(partnerInfo.getMobile()); resultList.add(result); diff --git a/coolstore-partner-service/src/main/java/com/cool/store/job/JobHandler.java b/coolstore-partner-service/src/main/java/com/cool/store/job/JobHandler.java index 63255b250..20930e349 100644 --- a/coolstore-partner-service/src/main/java/com/cool/store/job/JobHandler.java +++ b/coolstore-partner-service/src/main/java/com/cool/store/job/JobHandler.java @@ -1,6 +1,7 @@ package com.cool.store.job; import com.cool.store.service.EnterpriseSyncService; +import com.cool.store.service.FollowTaskService; import com.cool.store.service.HyPartnerInterviewPlanService; import com.xxl.job.core.context.XxlJobHelper; import com.xxl.job.core.handler.annotation.XxlJob; @@ -26,6 +27,9 @@ public class JobHandler { @Autowired private HyPartnerInterviewPlanService hyPartnerInterviewPlanService; + @Resource + private FollowTaskService followTaskService; + @XxlJob("syncOrganization") public void syncOrganization(){ log.info("组织架构定时同步开始"); @@ -76,4 +80,30 @@ public class JobHandler { } } + @XxlJob("followTaskAnHourAgoRemind") + public void followTaskAnHourAgoRemind(){ + try { + log.info("跟进任务前一小时提醒开始"); + followTaskService.followTaskAnHourAgoRemind(); + log.info("跟进任务前一小时提醒结束"); + XxlJobHelper.handleSuccess(); + }catch (Exception e){ + log.error("跟进任务前一小时提醒异常",e); + XxlJobHelper.log("跟进任务前一小时提醒异常"+e.getMessage()); + } + } + + @XxlJob("followTaskRemind") + public void followTaskRemind(){ + try { + log.info("跟进任务提醒开始"); + followTaskService.followTaskRemind(); + log.info("跟进任务提醒结束"); + XxlJobHelper.handleSuccess(); + }catch (Exception e){ + log.error("跟进任务提醒异常",e); + XxlJobHelper.log("跟进任务提醒异常"+e.getMessage()); + } + } + } diff --git a/coolstore-partner-service/src/main/java/com/cool/store/service/FollowTaskService.java b/coolstore-partner-service/src/main/java/com/cool/store/service/FollowTaskService.java index 2aacc4ffb..871610204 100644 --- a/coolstore-partner-service/src/main/java/com/cool/store/service/FollowTaskService.java +++ b/coolstore-partner-service/src/main/java/com/cool/store/service/FollowTaskService.java @@ -75,4 +75,16 @@ public interface FollowTaskService { * @return */ Integer cancelFollowTask(FollowTaskIdRequest request, String userId); + + /** + * 跟进任务前一小时提醒 + * @return + */ + void followTaskAnHourAgoRemind(); + + /** + * 跟进任务每日10点提醒 + * @return + */ + void followTaskRemind(); } diff --git a/coolstore-partner-service/src/main/java/com/cool/store/service/impl/FollowTaskServiceImpl.java b/coolstore-partner-service/src/main/java/com/cool/store/service/impl/FollowTaskServiceImpl.java index d5035177f..2d740f341 100644 --- a/coolstore-partner-service/src/main/java/com/cool/store/service/impl/FollowTaskServiceImpl.java +++ b/coolstore-partner-service/src/main/java/com/cool/store/service/impl/FollowTaskServiceImpl.java @@ -8,6 +8,7 @@ import com.cool.store.dao.EnterpriseUserDAO; import com.cool.store.dao.HyFollowTaskDAO; import com.cool.store.dao.HyPartnerLineInfoDAO; import com.cool.store.dao.HyPartnerTaskInfoLogDAO; +import com.cool.store.dto.follow.FollowTaskNumDTO; import com.cool.store.dto.log.LineLogInfo; import com.cool.store.dto.message.SendCardMessageDTO; import com.cool.store.dto.partner.PartnerSimpleInfoDTO; @@ -23,6 +24,7 @@ import com.cool.store.request.follow.FollowTaskIdRequest; import com.cool.store.request.follow.UpdateFollowTaskRequest; import com.cool.store.service.FollowTaskService; import com.cool.store.utils.CoolDateUtils; +import com.cool.store.utils.RedisUtilPool; import com.cool.store.vo.follow.FollowTaskLogVO; import com.cool.store.vo.follow.FollowTaskPageVO; import com.github.pagehelper.Page; @@ -36,10 +38,7 @@ import org.springframework.stereotype.Service; import javax.annotation.Resource; import java.text.MessageFormat; -import java.util.Arrays; -import java.util.List; -import java.util.Map; -import java.util.Objects; +import java.util.*; import java.util.stream.Collectors; /** @@ -61,6 +60,8 @@ public class FollowTaskServiceImpl implements FollowTaskService { @Resource private EnterpriseUserDAO enterpriseUserDAO; @Resource + private RedisUtilPool redisUtilPool; + @Resource private ISVHttpRequest isvHttpRequest; @Value("${feishu.notice.link.url:null}") private String linkUrl; @@ -161,6 +162,85 @@ public class FollowTaskServiceImpl implements FollowTaskService { return hyFollowTaskDAO.cancelFollowTask(request.getFollowTaskId()); } + @Override + public void followTaskAnHourAgoRemind() { + //获取一个小时后的任务 + Boolean hasNext = true; + int pageNum = CommonConstants.ONE, pageSize = CommonConstants.HUNDRED; + String startTime = DateUtil.format(DateUtils.addMinutes(new Date(), -CommonConstants.FIVE), CoolDateUtils.DATE_FORMAT_SEC); + String endTime = DateUtil.format(DateUtils.addMinutes(new Date(), CommonConstants.FIVE), CoolDateUtils.DATE_FORMAT_SEC); + while (hasNext){ + Page undoTaskList = hyFollowTaskDAO.getUndoTaskPage(startTime, endTime, pageNum, pageSize); + if(CollectionUtils.isEmpty(undoTaskList)){ + break; + } + if(undoTaskList.size() < pageSize){ + hasNext = false; + } + pageNum++; + List lineIds = undoTaskList.stream().map(HyFollowTaskDO::getPartnerLineId).distinct().collect(Collectors.toList()); + Map partnerSimpleInfoMap = hyPartnerLineInfoDAO.getPartnerSimpleInfoByLineIds(lineIds); + for (HyFollowTaskDO followTask : undoTaskList) { + PartnerSimpleInfoDTO partnerInfo = partnerSimpleInfoMap.get(followTask.getPartnerLineId()); + if(Objects.isNull(partnerInfo)){ + continue; + } + String lockKey = MessageFormat.format(CommonConstants.FOLLOW_TASK_NOTICE_KEY, followTask.getFollowUserId(), followTask.getId()); + boolean result = redisUtilPool.setNxExpire(lockKey, DateUtil.format(new Date(), CoolDateUtils.DATE_FORMAT_SEC), CommonConstants.FOLLOW_TASK_NOTICE_LOCK_TIMES); + if(!result){ + //一小时内发送过不再发送通知 + continue; + } + SendCardMessageDTO sendCardMessage = new SendCardMessageDTO(); + sendCardMessage.setMessageUrl(linkUrl); + sendCardMessage.setMessageType(MessageTypeEnum.SCHEDULE_REMINDER); + String dateline = DateUtil.format(followTask.getDeadline(), CoolDateUtils.DATE_FORMAT_SEC_2); + String content = MessageFormat.format(MessageConstants.FOLLOW_TASK_MESSAGE_CONTENT, dateline, partnerInfo.getUsername(), partnerInfo.getMobile()); + sendCardMessage.setContent(content); + sendCardMessage.setTitle(MessageConstants.FOLLOW_TASK_MESSAGE_TITLE); + sendCardMessage.setUserIds(Arrays.asList(followTask.getFollowUserId())); + try { + isvHttpRequest.sendFeiShuCardMessage(sendCardMessage); + } catch (ApiException e) { + log.error("跟进任务发送通知失败, {}", JSONObject.toJSONString(followTask)); + } + } + } + //更新过期的任务状态 + hyFollowTaskDAO.updateUndoTaskStatusToOverdue(); + } + + @Override + public void followTaskRemind() { + //获取已逾期的 以及截止时间为当天的任务 的招商经理 + Boolean hasNext = true; + int pageNum = CommonConstants.ONE, pageSize = CommonConstants.HUNDRED; + while (hasNext){ + Page remindFollowUserIds = hyFollowTaskDAO.getRemindFollowUserIds(new Date(), pageNum, pageSize); + if(CollectionUtils.isEmpty(remindFollowUserIds)){ + break; + } + if(remindFollowUserIds.size() < pageSize){ + hasNext = false; + } + pageNum++; + List followTaskList = hyFollowTaskDAO.getUserTaskNum(remindFollowUserIds); + for (FollowTaskNumDTO followTask : followTaskList) { + SendCardMessageDTO sendCardMessage = new SendCardMessageDTO(); + sendCardMessage.setMessageUrl(linkUrl); + sendCardMessage.setMessageType(MessageTypeEnum.SCHEDULE_REMINDER); + sendCardMessage.setContent(FollowTaskNumDTO.getMessageContent(followTask)); + sendCardMessage.setTitle(MessageConstants.FOLLOW_TASK_MESSAGE_TITLE); + sendCardMessage.setUserIds(Arrays.asList(followTask.getFollowUserId())); + try { + isvHttpRequest.sendFeiShuCardMessage(sendCardMessage); + } catch (ApiException e) { + log.error("跟进任务发送通知失败, {}", JSONObject.toJSONString(followTask)); + } + } + } + } + /** * 线索校验 * @param partnerLineId @@ -183,6 +263,12 @@ public class FollowTaskServiceImpl implements FollowTaskService { if(Objects.isNull(partnerInfo)){ return; } + String lockKey = MessageFormat.format(CommonConstants.FOLLOW_TASK_NOTICE_KEY, task.getFollowUserId(), task.getId()); + boolean result = redisUtilPool.setNxExpire(lockKey, DateUtil.format(new Date(), CoolDateUtils.DATE_FORMAT_SEC), CommonConstants.FOLLOW_TASK_NOTICE_LOCK_TIMES); + if(!result){ + //一小时内发送过不再发送通知 + return; + } String dateline = DateUtil.format(task.getDeadline(), CoolDateUtils.DATE_FORMAT_SEC_2); String content = MessageFormat.format(MessageConstants.FOLLOW_TASK_MESSAGE_CONTENT, dateline, partnerInfo.getUsername(), partnerInfo.getMobile()); SendCardMessageDTO sendCardMessage = new SendCardMessageDTO(); diff --git a/coolstore-partner-service/src/main/java/com/cool/store/service/impl/HyPartnerBaseInfoServiceImpl.java b/coolstore-partner-service/src/main/java/com/cool/store/service/impl/HyPartnerBaseInfoServiceImpl.java index 502dff100..35b22684a 100644 --- a/coolstore-partner-service/src/main/java/com/cool/store/service/impl/HyPartnerBaseInfoServiceImpl.java +++ b/coolstore-partner-service/src/main/java/com/cool/store/service/impl/HyPartnerBaseInfoServiceImpl.java @@ -5,12 +5,10 @@ import cn.hutool.core.date.DateUtil; import com.alibaba.fastjson.JSONObject; import com.cool.store.constants.CommonConstants; import com.cool.store.constants.RedisConstant; -import com.cool.store.context.CurrentUserHolder; import com.cool.store.context.LoginUserInfo; import com.cool.store.context.PartnerUserHolder; import com.cool.store.dao.*; import com.cool.store.dto.log.AddTagsDTO; -import com.cool.store.dto.log.BlackListLogDTO; import com.cool.store.dto.log.LineLogInfo; import com.cool.store.dto.log.WantInfoUpdateDTO; import com.cool.store.entity.*; @@ -19,10 +17,7 @@ import com.cool.store.exception.ServiceException; import com.cool.store.mapper.HyPartnerCertificationInfoMapper; import com.cool.store.request.AddTagsRequest; import com.cool.store.request.PartnerBaseInfoRequest; -import com.cool.store.service.HyPartnerBaseInfoService; -import com.cool.store.service.HyPartnerLineInfoService; -import com.cool.store.service.HyPhoneLocationService; -import com.cool.store.service.LogService; +import com.cool.store.service.*; import com.cool.store.utils.CoolDateUtils; import com.cool.store.utils.RedisUtilPool; import com.cool.store.vo.PartnerBaseInfoVO; @@ -35,8 +30,7 @@ import org.springframework.stereotype.Service; import javax.annotation.Resource; import java.text.MessageFormat; -import java.util.Collections; -import java.util.Date; +import java.util.*; import java.util.stream.Collectors; /** @@ -84,6 +78,8 @@ public class HyPartnerBaseInfoServiceImpl implements HyPartnerBaseInfoService { @Autowired private LogService logService; + @Resource + private LabelService labelService; @Override @@ -92,18 +88,33 @@ public class HyPartnerBaseInfoServiceImpl implements HyPartnerBaseInfoService { if (hyPartnerBaseInfo==null){ throw new ServiceException(ErrorCodeEnum.PARTNER_BASE_INFO_NOT_EXIST); } + String oldUserPortrait = hyPartnerBaseInfo.getUserPortrait(); hyPartnerBaseInfo.setId(addTagsRequest.getPartnerBaseInfoId()); hyPartnerBaseInfo.setUserPortrait(CollectionUtils.isNotEmpty(addTagsRequest.getTags())? addTagsRequest.getTags().stream().map(Object::toString).collect(Collectors.joining(CommonConstants.COMMA, CommonConstants.COMMA, CommonConstants.COMMA)):""); hyPartnerBaseInfoDAO.updateByPrimaryKeySelective(hyPartnerBaseInfo); HyPartnerLineInfoDO line = hyPartnerLineInfoDAO.getByPartnerId(hyPartnerBaseInfo.getPartnerId()); //添加日志 + String newUserPortrait = hyPartnerBaseInfo.getUserPortrait(); + List oldLabels = new ArrayList<>(), newLabels = new ArrayList<>(); + if (StringUtils.isNotEmpty(oldUserPortrait)){ + Map userPortraitMap = labelService.getUserPortraitMap(Arrays.asList(oldUserPortrait)); + oldLabels = userPortraitMap.values().stream().collect(Collectors.toList()); + } + if (StringUtils.isNotEmpty(newUserPortrait)){ + Map userPortraitMap = labelService.getUserPortraitMap(Arrays.asList(newUserPortrait)); + newLabels = userPortraitMap.values().stream().collect(Collectors.toList()); + } + List addLabels = new ArrayList<>(newLabels); + List removeLabels = new ArrayList<>(oldLabels); + addLabels.removeAll(oldLabels); + removeLabels.removeAll(newLabels); LineLogInfo lineLogInfo = new LineLogInfo(line.getPartnerId(), line.getId(), user.getUserId(), user.getName(), OperateTypeEnum.ADD_TAGS, WorkflowStageEnum.getWorkflowStageByCode(line.getWorkflowStage()), line.getWorkflowStatus(), ""); AddTagsDTO logDTO = AddTagsDTO.builder().operateUserId(user.getUserId()).operateUsername(user.getName()) - .mobile(user.getMobile()).operateTime(DateUtil.format(new Date(), CoolDateUtils.DATE_FORMAT_SEC_2)).build(); + .mobile(user.getMobile()).operateTime(DateUtil.format(new Date(), CoolDateUtils.DATE_FORMAT_SEC_2)).addLabels(addLabels).removeLabels(removeLabels).build(); lineLogInfo.setData(logDTO); hyPartnerTaskInfoLogDAO.addOperateLog(lineLogInfo); return Boolean.TRUE;