通知优化 区分各个类型

This commit is contained in:
zhangchenbiao
2023-08-18 17:19:22 +08:00
parent b06b98db5f
commit bfb8d1d22d
11 changed files with 51 additions and 137 deletions

View File

@@ -1,5 +1,7 @@
package com.cool.store.enums;
import com.alibaba.fastjson.JSONObject;
/**
* @Author: young.yu
* @Date: 2023-07-19 16:49
@@ -7,34 +9,40 @@ package com.cool.store.enums;
*/
public enum FeiShuNoticeMsgEnum {
//分配招商经理
ALLOCATION_INVESTMENT_MANAGER("分配招商经理", "有新的线索 于 {0} 分配给您,线索信息{1}手机号{2},请及时跟进"),
//转让招商经理
TRANS_INVESTMENT_MANAGER("转让招商经理", "有新的线索 于 {0} 转让给您,线索信息{1}手机号{2},请及时跟进"),
//意向申请通知
INTENTION_APPLY("加盟意向申请", "您有一个【加盟意向申请】待审核,申请人{0}手机号{1}于 {2} 提交加盟意向申请,请及时处理");
ALLOCATION_INVESTMENT_MANAGER("分配招商经理", "有新的线索 于 {0} 分配给您,线索信息{1}手机号{2},请及时跟进", "img_v2_0709ece3-77a8-49a4-820f-f245b2a4fdag"),
TRANS_INVESTMENT_MANAGER("转让招商经理", "有新的线索 于 {0} 转让给您,线索信息{1}手机号{2},请及时跟进", "img_v2_0709ece3-77a8-49a4-820f-f245b2a4fdag"),
INTENTION_APPLY("加盟意向申请", "您有一个【加盟意向申请】待审核,申请人{0}手机号{1}于 {2} 提交加盟意向申请,请及时处理", "img_v2_0709ece3-77a8-49a4-820f-f245b2a4fdag"),
FOLLOW_TASK("线索跟进任务", "{0}", "img_v2_0709ece3-77a8-49a4-820f-f245b2a4fdag"),
INTERVIEW_APPOINTMENT("面试预约申请", "{0}","img_v2_0709ece3-77a8-49a4-820f-f245b2a4fdag"),
;
private String title;
private String content;
private String imageMediaId;
FeiShuNoticeMsgEnum(String title, String content) {
FeiShuNoticeMsgEnum(String title, String content, String imageMediaId) {
this.title = title;
this.content = content;
this.imageMediaId = imageMediaId;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public String getContent() {
return content;
}
public void setContent(String content) {
this.content = content;
public String getImageMediaId() {
return imageMediaId;
}
public JSONObject getMessageObject() {
JSONObject object = new JSONObject();
object.put("name", this.title);
object.put("imageMediaId", this.imageMediaId);
return object;
}
}

View File

@@ -1,61 +0,0 @@
package com.cool.store.enums;
import com.alibaba.fastjson.JSONObject;
/**
* @author zhangchenbiao
* @FileName: MessageTypeEnum
* @Description:
* @date 2023-06-15 10:14
*/
public enum MessageTypeEnum {
SCHEDULE_REMINDER("schedule_reminder", "日历提醒事件", "img_v2_0709ece3-77a8-49a4-820f-f245b2a4fdag"),
FOLLOW_TASK("follow_task", "跟进任务提醒", "img_v2_0709ece3-77a8-49a4-820f-f245b2a4fdag")
;
private String code;
private String name;
private String imageMediaId;
MessageTypeEnum(String code, String name, String imageMediaId) {
this.code = code;
this.name = name;
this.imageMediaId = imageMediaId;
}
public String getCode() {
return code;
}
public String getName() {
return name;
}
public String getImageMediaId() {
return imageMediaId;
}
public static String getImageMediaId(String code){
for (MessageTypeEnum value : MessageTypeEnum.values()) {
if(value.code.equals(code)){
return value.imageMediaId;
}
}
return null;
}
public JSONObject getMessageTypeObject() {
JSONObject object = new JSONObject();
object.put("code", this.code);
object.put("name", this.name);
object.put("imageMediaId", this.imageMediaId);
return object;
}
}

View File

@@ -122,18 +122,18 @@ public class HyFollowTaskDAO {
* 分页获取任务
* @param followUserId
* @param taskStatus
* @param deadlineStartTIme
* @param deadlineEndTIme
* @param deadlineStartTime
* @param deadlineEndTime
* @param pageNum
* @param pageSize
* @return
*/
public Page<HyFollowTaskDO> getTaskPage(String followUserId, Integer taskStatus, String deadlineStartTIme, String deadlineEndTIme, Integer pageNum, Integer pageSize){
public Page<HyFollowTaskDO> getTaskPage(String followUserId, Integer taskStatus, String deadlineStartTime, String deadlineEndTime, Integer pageNum, Integer pageSize){
if(StringUtils.isBlank(followUserId)){
return new Page<>();
}
PageHelper.startPage(pageNum, pageSize);
return hyFollowTaskMapper.getTaskPage(followUserId, taskStatus, deadlineStartTIme, deadlineEndTIme);
return hyFollowTaskMapper.getTaskPage(followUserId, taskStatus, deadlineStartTime, deadlineEndTime);
}
/**

View File

@@ -38,11 +38,11 @@ public interface HyFollowTaskMapper {
* 获取任务列表
* @param followUserId
* @param taskStatus
* @param deadlineStartTIme
* @param deadlineEndTIme
* @param deadlineStartTime
* @param deadlineEndTime
* @return
*/
Page<HyFollowTaskDO> getTaskPage(@Param("followUserId")String followUserId, @Param("taskStatus")Integer taskStatus, @Param("deadlineStartTIme")String deadlineStartTIme, @Param("deadlineEndTIme")String deadlineEndTIme);
Page<HyFollowTaskDO> getTaskPage(@Param("followUserId")String followUserId, @Param("taskStatus")Integer taskStatus, @Param("deadlineStartTime")String deadlineStartTime, @Param("deadlineEndTime")String deadlineEndTime);
/**
* 获取跟进任务详情

View File

@@ -151,11 +151,11 @@
<if test="taskStatus != null">
and task_status = #{taskStatus}
</if>
<if test="deadlineStartTIme != null">
and deadline >= #{deadlineStartTIme}
<if test="deadlineStartTime != null">
and deadline >= #{deadlineStartTime}
</if>
<if test="deadlineEndTIme != null">
<![CDATA[ and deadline <= #{deadlineEndTIme}]]>
<if test="deadlineEndTime != null">
<![CDATA[ and deadline <= #{deadlineEndTime}]]>
</if>
</select>

View File

@@ -1,6 +1,6 @@
package com.cool.store.dto.message;
import com.cool.store.enums.MessageTypeEnum;
import com.cool.store.enums.FeiShuNoticeMsgEnum;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@@ -27,7 +27,7 @@ public class SendCardMessageDTO {
@ApiModelProperty("消息内容")
private String content;
@ApiModelProperty("消息类型, MessageTypeEnum")
private MessageTypeEnum messageType;
@ApiModelProperty("消息类型, FeiShuNoticeMsgEnum")
private FeiShuNoticeMsgEnum messageType;
}

View File

@@ -10,7 +10,7 @@ import com.cool.store.dto.enterprise.SysDepartmentDTO;
import com.cool.store.dto.login.UserIdInfoDTO;
import com.cool.store.dto.message.SendCardMessageDTO;
import com.cool.store.dto.response.ResultDTO;
import com.cool.store.enums.MessageTypeEnum;
import com.cool.store.enums.FeiShuNoticeMsgEnum;
import com.cool.store.exception.ApiException;
import com.cool.store.exception.ServiceException;
import com.cool.store.mq.util.HttpRestTemplateService;
@@ -357,9 +357,9 @@ public class ISVHttpRequest {
String url = isvDomain + "/sendFeiShuCardMessage";
ResultDTO responseEntity = null;
try {
MessageTypeEnum messageType = param.getMessageType();
FeiShuNoticeMsgEnum messageType = param.getMessageType();
JSONObject request = JSONObject.parseObject(JSONObject.toJSONString(param));
request.put("messageType", messageType.getMessageTypeObject());
request.put("messageType", messageType.getMessageObject());
responseEntity = httpRestTemplateService.postForObject(url, request, ResultDTO.class);
log.info("url:{}, response:{}", url, JSONObject.toJSONString(responseEntity));
} catch (Exception e) {

View File

@@ -72,19 +72,19 @@ public class FollowTaskServiceImpl implements FollowTaskService {
@Resource
private RedisUtilPool redisUtilPool;
@Resource
private ISVHttpRequest isvHttpRequest;
private NoticeService noticeService;
@Value("${feishu.notice.link.url:null}")
private String linkUrl;
@Override
public PageInfo<FollowTaskPageVO> getFollowTaskPage(Integer pageNum, Integer pageSize, Integer taskStatus, String queryDate, String followUserId) {
String deadlineStartTIme = null, deadlineEndTIme = null;
String deadlineStartTime = null, deadlineEndTIme = null;
if(StringUtils.isNotBlank(queryDate) && FollowTaskStatusEnum.TODO.getCode().equals(taskStatus)){
//只有待完成的时候需要根据截止时间查询
deadlineStartTIme = queryDate + CommonConstants.DAY_START_TIME_SUFFIX;
deadlineStartTime = queryDate + CommonConstants.DAY_START_TIME_SUFFIX;
deadlineEndTIme = queryDate + CommonConstants.DAY_END_TIME_SUFFIX;
}
Page<HyFollowTaskDO> taskPage = hyFollowTaskDAO.getTaskPage(followUserId, taskStatus, deadlineStartTIme, deadlineEndTIme, pageNum, pageSize);
Page<HyFollowTaskDO> taskPage = hyFollowTaskDAO.getTaskPage(followUserId, taskStatus, deadlineStartTime, deadlineEndTIme, pageNum, pageSize);
PageInfo resultPage = new PageInfo(taskPage);
if(CollectionUtils.isNotEmpty(taskPage)){
List<Long> partnerLineIds = taskPage.stream().map(HyFollowTaskDO::getPartnerLineId).distinct().collect(Collectors.toList());
@@ -213,19 +213,9 @@ public class FollowTaskServiceImpl implements FollowTaskService {
//一小时内发送过不再发送通知
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));
}
noticeService.sendFeiShuNotice(FeiShuNoticeMsgEnum.FOLLOW_TASK, Arrays.asList(followTask.getFollowUserId()), content);
}
}
//更新过期的任务状态
@@ -248,17 +238,7 @@ public class FollowTaskServiceImpl implements FollowTaskService {
pageNum++;
List<FollowTaskNumDTO> 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));
}
noticeService.sendFeiShuNotice(FeiShuNoticeMsgEnum.FOLLOW_TASK, Arrays.asList(followTask.getFollowUserId()), FollowTaskNumDTO.getMessageContent(followTask));
}
}
}
@@ -293,16 +273,6 @@ public class FollowTaskServiceImpl implements FollowTaskService {
}
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));
}
noticeService.sendFeiShuNotice(FeiShuNoticeMsgEnum.FOLLOW_TASK, Arrays.asList(task.getFollowUserId()), content);
}
}

View File

@@ -8,10 +8,7 @@ import com.cool.store.dto.message.SendCardMessageDTO;
import com.cool.store.dto.partner.PartnerIntentApplyInfoDTO;
import com.cool.store.dto.partner.PartnerInterviewInfoDTO;
import com.cool.store.entity.*;
import com.cool.store.enums.MessageTypeEnum;
import com.cool.store.enums.RoomStatus;
import com.cool.store.enums.WorkflowStageEnum;
import com.cool.store.enums.WorkflowStatusEnum;
import com.cool.store.enums.*;
import com.cool.store.exception.ApiException;
import com.cool.store.http.ISVHttpRequest;
import com.cool.store.mapper.HyPartnerInterviewMapper;
@@ -272,7 +269,7 @@ public class HyPartnerInterviewPlanServiceImpl implements HyPartnerInterviewPlan
userIds.add(interviewMsgDTO.getInterviewerId());
SendCardMessageDTO sendCardMessageDTO = new SendCardMessageDTO();
sendCardMessageDTO.setUserIds(userIds);
sendCardMessageDTO.setMessageType(MessageTypeEnum.SCHEDULE_REMINDER);
sendCardMessageDTO.setMessageType(FeiShuNoticeMsgEnum.INTERVIEW_APPOINTMENT);
sendCardMessageDTO.setMessageUrl(linkUrl);
sendCardMessageDTO.setTitle("面试预约申请");
sendCardMessageDTO.setContent(interviewService.generateFeiShuInterviewMsg(interviewMsgDTO.getPartnerName(), interviewMsgDTO.getPartnerMobile(), interviewMsgDTO.getStartTime()));

View File

@@ -455,7 +455,7 @@ public class InterviewServiceImpl implements InterviewService {
userIds.add(interviewrId);
SendCardMessageDTO sendCardMessageDTO = new SendCardMessageDTO();
sendCardMessageDTO.setUserIds(userIds);
sendCardMessageDTO.setMessageType(MessageTypeEnum.SCHEDULE_REMINDER);
sendCardMessageDTO.setMessageType(FeiShuNoticeMsgEnum.INTERVIEW_APPOINTMENT);
sendCardMessageDTO.setMessageUrl(linkUrl);
sendCardMessageDTO.setTitle("面试预约申请");
sendCardMessageDTO.setContent(generateFeiShuInterviewMsg(interviewVO.getPartnerName(), interviewVO.getPartnerMobile(), interviewVO.getStartTime()));

View File

@@ -3,7 +3,6 @@ package com.cool.store.service.impl;
import com.alibaba.fastjson.JSONObject;
import com.cool.store.dto.message.SendCardMessageDTO;
import com.cool.store.enums.FeiShuNoticeMsgEnum;
import com.cool.store.enums.MessageTypeEnum;
import com.cool.store.http.ISVHttpRequest;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils;
@@ -26,7 +25,8 @@ public class NoticeService {
private String linkUrl;
@Autowired
private ISVHttpRequest isvHttpRequest;
public void sendFeiShuNotice(FeiShuNoticeMsgEnum feiShuNoticeMsgEnum, List<String> userIds,Object... objects) {
public void sendFeiShuNotice(FeiShuNoticeMsgEnum feiShuNoticeMsgEnum, List<String> userIds, Object... objects) {
try{
if (CollectionUtils.isEmpty(userIds)){
log.info("sendFeiShuNotice_feiShuNoticeMsgEnum:{} userIds:{},objects:{}",feiShuNoticeMsgEnum.getTitle(), JSONObject.toJSONString(userIds),JSONObject.toJSONString(objects));
@@ -34,7 +34,7 @@ public class NoticeService {
}
SendCardMessageDTO sendCardMessageDTO = new SendCardMessageDTO();
sendCardMessageDTO.setUserIds(userIds);
sendCardMessageDTO.setMessageType(MessageTypeEnum.SCHEDULE_REMINDER);
sendCardMessageDTO.setMessageType(feiShuNoticeMsgEnum);
sendCardMessageDTO.setMessageUrl(linkUrl);
sendCardMessageDTO.setTitle(feiShuNoticeMsgEnum.getTitle());
sendCardMessageDTO.setContent(MessageFormat.format(feiShuNoticeMsgEnum.getContent(),objects));