跟进任务新增通知
This commit is contained in:
@@ -26,6 +26,8 @@ public class CommonConstants {
|
||||
|
||||
public static final int NORMAL_LOCK_TIMES = 60 * 1000;
|
||||
|
||||
public static final int AN_HOUR_SECONDS = 3600;
|
||||
|
||||
/**
|
||||
* 企业开通锁存活时间
|
||||
*/
|
||||
@@ -101,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 ONE_THOUSAND = 1000;
|
||||
|
||||
|
||||
public static final String ONE_STR = "1";
|
||||
|
||||
@@ -0,0 +1,17 @@
|
||||
package com.cool.store.constants;
|
||||
|
||||
/**
|
||||
* @author zhangchenbiao
|
||||
* @FileName: MessageConstants
|
||||
* @Description:通知消息常量
|
||||
* @date 2023-08-14 14:41
|
||||
*/
|
||||
public class MessageConstants {
|
||||
|
||||
public static final String FOLLOW_TASK_MESSAGE_TITLE = "线索跟进任务";
|
||||
public static final String FOLLOW_TASK_MESSAGE_CONTENT = "您有一个线索跟进任务将于{0}截止 ,线索信息{1}手机号{2},请及时跟进";
|
||||
public static final String FOLLOW_TASK_MESSAGE_CONTENT_1 = "您有{0}个线索跟进任务将于今日截止,及{1}个跟进任务已逾期,请及时跟进";
|
||||
public static final String FOLLOW_TASK_MESSAGE_CONTENT_2 = "您有{0}个跟进任务已逾期,请及时跟进";
|
||||
public static final String FOLLOW_TASK_MESSAGE_CONTENT_3 = "您有{1}个线索跟进任务将于今日截止,请及时跟进";
|
||||
|
||||
}
|
||||
@@ -63,6 +63,7 @@ public enum ErrorCodeEnum {
|
||||
PARTNER_BASE_INFO_NOT_EXIST(500009, "加盟商信息不存在!", null),
|
||||
LINE_STATUS_NOT_ALLOW_OPERATE(500010, "当前线索状态不允许该操作!", null),
|
||||
TASK_STATUS_NOT_ALLOW_OPERATE(500011, "当前任务状态不允许该操作!", null),
|
||||
DATELINE_BEFORE_NOW(500012, "截止时间不能早于当前时间!", null),
|
||||
|
||||
INTERVIEW_ENTER_FAIL(1021101, "进入面试间失败", null),
|
||||
DINGDING_USER_NOT_EXIST(1021102, "用户钉钉信息不存在,无法发起资质审核!", null),
|
||||
|
||||
@@ -1,12 +1,9 @@
|
||||
package com.cool.store.utils;
|
||||
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
|
||||
import java.text.DateFormat;
|
||||
import java.text.ParseException;
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.time.*;
|
||||
import java.time.format.DateTimeFormatter;
|
||||
import java.util.Calendar;
|
||||
import java.util.Date;
|
||||
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
package com.cool.store.dao;
|
||||
|
||||
import cn.hutool.core.map.MapUtil;
|
||||
import com.cool.store.constants.CommonConstants;
|
||||
import com.cool.store.dto.partner.PartnerBlackListDTO;
|
||||
import com.cool.store.dto.partner.PartnerLineInfoAndBaseInfoDTO;
|
||||
import com.cool.store.dto.partner.StageCountDTO;
|
||||
@@ -15,10 +16,7 @@ import org.apache.commons.lang3.StringUtils;
|
||||
import org.springframework.stereotype.Repository;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.*;
|
||||
import java.util.function.Function;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
@@ -199,4 +197,12 @@ public class HyPartnerLineInfoDAO {
|
||||
return ListUtils.emptyIfNull(partnerList).stream().collect(Collectors.toMap(k->k.getPartnerLineId(), Function.identity(), (k1, k2)->k1));
|
||||
}
|
||||
|
||||
public PartnerSimpleInfoDTO getPartnerSimpleInfoByLineId(Long partnerLineId){
|
||||
if(Objects.isNull(partnerLineId)){
|
||||
return null;
|
||||
}
|
||||
List<PartnerSimpleInfoDTO> partnerList = hyPartnerLineInfoMapper.getPartnerSimpleInfoByLineIds(Arrays.asList(partnerLineId));
|
||||
return CollectionUtils.isEmpty(partnerList) ? null : partnerList.get(CommonConstants.ZERO);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -85,12 +85,6 @@ public class MyIntrospectedTableMyBatis3Impl extends IntrospectedTableMyBatis3Im
|
||||
}
|
||||
|
||||
StringBuilder sb = new StringBuilder();
|
||||
sb.append(calculateJavaClientImplementationPackage());
|
||||
sb.append('.');
|
||||
sb.append(getTableNameFromConfigFile());
|
||||
sb.append("DAOImpl"); //$NON-NLS-1$
|
||||
setDAOImplementationType(sb.toString());
|
||||
|
||||
sb.setLength(0);
|
||||
sb.append(calculateJavaClientInterfacePackage());
|
||||
sb.append('.');
|
||||
|
||||
@@ -45,9 +45,10 @@ public class UpdateFollowTaskRequest {
|
||||
@ApiModelProperty("任务截止时间")
|
||||
private Date deadline;
|
||||
|
||||
public static HyFollowTaskDO convertDO(UpdateFollowTaskRequest request){
|
||||
public static HyFollowTaskDO convertDO(Long partnerLineId, UpdateFollowTaskRequest request){
|
||||
HyFollowTaskDO result = new HyFollowTaskDO();
|
||||
result.setId(request.getFollowTaskId());
|
||||
result.setPartnerLineId(partnerLineId);
|
||||
result.setTaskTitle(request.getTaskTitle());
|
||||
result.setCommunicationType(request.getCommunicationType());
|
||||
result.setDeadline(request.getDeadline());
|
||||
|
||||
@@ -1,31 +1,42 @@
|
||||
package com.cool.store.service.impl;
|
||||
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.cool.store.constants.CommonConstants;
|
||||
import com.cool.store.constants.MessageConstants;
|
||||
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.log.LineLogInfo;
|
||||
import com.cool.store.dto.message.SendCardMessageDTO;
|
||||
import com.cool.store.dto.partner.PartnerSimpleInfoDTO;
|
||||
import com.cool.store.entity.HyFollowTaskDO;
|
||||
import com.cool.store.entity.HyPartnerLineInfoDO;
|
||||
import com.cool.store.enums.*;
|
||||
import com.cool.store.exception.ApiException;
|
||||
import com.cool.store.exception.ServiceException;
|
||||
import com.cool.store.http.ISVHttpRequest;
|
||||
import com.cool.store.request.follow.AddFollowLogRequest;
|
||||
import com.cool.store.request.follow.AddFollowTaskRequest;
|
||||
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.vo.follow.FollowTaskLogVO;
|
||||
import com.cool.store.vo.follow.FollowTaskPageVO;
|
||||
import com.github.pagehelper.Page;
|
||||
import com.github.pagehelper.PageInfo;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.commons.collections4.CollectionUtils;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.apache.commons.lang3.time.DateUtils;
|
||||
import org.springframework.beans.factory.annotation.Value;
|
||||
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;
|
||||
@@ -37,6 +48,7 @@ import java.util.stream.Collectors;
|
||||
* @Description:
|
||||
* @date 2023-08-10 11:10
|
||||
*/
|
||||
@Slf4j
|
||||
@Service
|
||||
public class FollowTaskServiceImpl implements FollowTaskService {
|
||||
|
||||
@@ -48,6 +60,10 @@ public class FollowTaskServiceImpl implements FollowTaskService {
|
||||
private HyPartnerTaskInfoLogDAO hyPartnerTaskInfoLogDAO;
|
||||
@Resource
|
||||
private EnterpriseUserDAO enterpriseUserDAO;
|
||||
@Resource
|
||||
private ISVHttpRequest isvHttpRequest;
|
||||
@Value("${feishu.notice.link.url:null}")
|
||||
private String linkUrl;
|
||||
|
||||
@Override
|
||||
public PageInfo<FollowTaskPageVO> getFollowTaskPage(Integer pageNum, Integer pageSize, Integer taskStatus, String queryDate, String followUserId) {
|
||||
@@ -87,6 +103,9 @@ public class FollowTaskServiceImpl implements FollowTaskService {
|
||||
|
||||
@Override
|
||||
public Long addFollowTask(AddFollowTaskRequest request, String userId) {
|
||||
if(request.getDeadline().getTime() < System.currentTimeMillis()){
|
||||
throw new ServiceException(ErrorCodeEnum.DATELINE_BEFORE_NOW);
|
||||
}
|
||||
HyPartnerLineInfoDO lineInfo = checkLine(request.getPartnerLineId());
|
||||
HyFollowTaskDO task = AddFollowTaskRequest.convertDO(request);
|
||||
task.setFollowUserId(lineInfo.getInvestmentManager());
|
||||
@@ -97,6 +116,10 @@ public class FollowTaskServiceImpl implements FollowTaskService {
|
||||
jsonObject.put(OperateLogFieldValueEnum.FOLLOW_TASK_ID.getCode(), followTaskId);
|
||||
lineLogInfo.setData(jsonObject);
|
||||
hyPartnerTaskInfoLogDAO.addOperateLog(lineLogInfo);
|
||||
if((request.getDeadline().getTime() - System.currentTimeMillis()) /CommonConstants.ONE_THOUSAND < CommonConstants.AN_HOUR_SECONDS){
|
||||
//一小时内的任务立即发送通知
|
||||
sendMessage(task);
|
||||
}
|
||||
return followTaskId;
|
||||
}
|
||||
|
||||
@@ -106,8 +129,15 @@ public class FollowTaskServiceImpl implements FollowTaskService {
|
||||
if(!FollowTaskStatusEnum.TODO.getCode().equals(followTask.getTaskStatus())){
|
||||
throw new ServiceException(ErrorCodeEnum.TASK_STATUS_NOT_ALLOW_OPERATE);
|
||||
}
|
||||
if(Objects.nonNull(request.getDeadline()) && request.getDeadline().getTime() < System.currentTimeMillis()){
|
||||
throw new ServiceException(ErrorCodeEnum.DATELINE_BEFORE_NOW);
|
||||
}
|
||||
checkLine(followTask.getPartnerLineId());
|
||||
HyFollowTaskDO task = UpdateFollowTaskRequest.convertDO(request);
|
||||
HyFollowTaskDO task = UpdateFollowTaskRequest.convertDO(followTask.getPartnerLineId(), request);
|
||||
if(!request.getDeadline().equals(followTask.getDeadline()) && (request.getDeadline().getTime() - System.currentTimeMillis()) / CommonConstants.ONE_THOUSAND < CommonConstants.AN_HOUR_SECONDS){
|
||||
//一小时内的任务立即发送通知
|
||||
sendMessage(task);
|
||||
}
|
||||
return hyFollowTaskDAO.updateFollowTask(task);
|
||||
}
|
||||
|
||||
@@ -136,7 +166,7 @@ public class FollowTaskServiceImpl implements FollowTaskService {
|
||||
* @param partnerLineId
|
||||
* @return
|
||||
*/
|
||||
public HyPartnerLineInfoDO checkLine(Long partnerLineId){
|
||||
private HyPartnerLineInfoDO checkLine(Long partnerLineId){
|
||||
HyPartnerLineInfoDO lineInfo = hyPartnerLineInfoDAO.selectByPrimaryKeySelective(partnerLineId);
|
||||
if(Objects.isNull(lineInfo) || lineInfo.getDeleted()){
|
||||
throw new ServiceException(ErrorCodeEnum.LINE_ID_IS_NOT_EXIST);
|
||||
@@ -147,4 +177,24 @@ public class FollowTaskServiceImpl implements FollowTaskService {
|
||||
}
|
||||
return lineInfo;
|
||||
}
|
||||
|
||||
private void sendMessage(HyFollowTaskDO task){
|
||||
PartnerSimpleInfoDTO partnerInfo = hyPartnerLineInfoDAO.getPartnerSimpleInfoByLineId(task.getPartnerLineId());
|
||||
if(Objects.isNull(partnerInfo)){
|
||||
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();
|
||||
sendCardMessage.setMessageUrl(linkUrl);
|
||||
sendCardMessage.setMessageType(MessageTypeEnum.SCHEDULE_REMINDER);
|
||||
sendCardMessage.setContent(content);
|
||||
sendCardMessage.setTitle(MessageConstants.FOLLOW_TASK_MESSAGE_TITLE);
|
||||
sendCardMessage.setUserIds(Arrays.asList(task.getFollowUserId()));
|
||||
try {
|
||||
isvHttpRequest.sendFeiShuCardMessage(sendCardMessage);
|
||||
} catch (ApiException e) {
|
||||
log.error("跟进任务发送通知失败, {}", JSONObject.toJSONString(task));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user