新增 日志评论回复 发送小程序信息提醒

This commit is contained in:
furongxin 2024-05-21 18:49:40 +08:00
parent a8d9072a40
commit 96b6d2102a
4 changed files with 119 additions and 0 deletions

View File

@ -26,4 +26,8 @@ public interface SubscribeMessageSendApi {
@PostMapping(PREFIX + "/send-company-notice")
@Operation(summary = "发送公司公告通知")
CommonResult<Long> sendCompanyNotice(@RequestBody SubscribeMessageReqDTO reqDTO);
@PostMapping(PREFIX + "/send-worklog-comment")
@Operation(summary = "发送日志评论、回复通知")
CommonResult<Long> sendWorkLogComment(@RequestBody SubscribeMessageReqDTO reqDTO);
}

View File

@ -48,6 +48,13 @@ public class SubscribeMessageSendApiImpl implements SubscribeMessageSendApi {
return success(1L);
}
@SneakyThrows
@Override
public CommonResult<Long> sendWorkLogComment(SubscribeMessageReqDTO reqDTO) {
socialClientService.getWxMaService().getMsgService().sendSubscribeMsg(initWxMaSubscribeMessage(reqDTO));
return success(1L);
}
private WxMaSubscribeMessage initWxMaSubscribeMessage(SubscribeMessageReqDTO reqDTO) {
WxMaSubscribeMessage message = WxMaSubscribeMessage.builder()
.toUser(reqDTO.getToUser())

View File

@ -0,0 +1,66 @@
package cn.iocoder.yudao.module.system.convert.worklog;
import cn.iocoder.yudao.framework.common.util.date.DateUtils;
import cn.iocoder.yudao.module.system.api.subscribe.dto.MsgData;
import cn.iocoder.yudao.module.system.api.subscribe.dto.SubscribeMessageReqDTO;
import cn.iocoder.yudao.module.system.dal.dataobject.comment.WorkLogCommentDO;
import org.mapstruct.Mapper;
import org.mapstruct.factory.Mappers;
import java.util.Date;
@Mapper
public interface LogCommentConvert {
LogCommentConvert INSTANCE = Mappers.getMapper(LogCommentConvert.class);
/**
* @param openId 微信小程序唯一id
* @param logCommentDO 评论对象
* @param nickname 发布人姓名
* @param miniProgramState 小程序的状态
* @return
*/
default SubscribeMessageReqDTO convertLogComment(String openId, WorkLogCommentDO logCommentDO, String nickname, String miniProgramState) {
SubscribeMessageReqDTO message = new SubscribeMessageReqDTO();
message.setToUser(openId);
message.setTemplateId("fH29xjNb8pe-7onQ-wE3QrBAC-y8aaC_oosYZKNMtzM");
//消息类型
MsgData noticeType = new MsgData();
noticeType.setName("phrase8");
if (logCommentDO.getType()) {
noticeType.setValue("评论回复");
}else {
noticeType.setValue("日志评论");
}
message.addData(noticeType);
//发送人
MsgData publishMan = new MsgData();
publishMan.setName("thing16");
publishMan.setValue(nickname);
message.addData(publishMan);
//发送时间
MsgData createTime = new MsgData();
createTime.setName("time3");
createTime.setValue(DateUtils.dateFormat(new Date(), DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND));
message.addData(createTime);
//消息内容
MsgData content = new MsgData();
String comment = logCommentDO.getComment();
content.setName("thing2");
if (comment.length() > 10) {
comment = comment.substring(0,10) + ". . . . ";
}
content.setValue(comment);
message.addData(content);
message.setMiniprogramState(miniProgramState);
message.setPage("/subPages/notice/detail?id=");
return message;
}
}

View File

@ -5,15 +5,21 @@ import cn.hutool.json.JSONObject;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
import cn.iocoder.yudao.framework.web.core.util.WebFrameworkUtils;
import cn.iocoder.yudao.module.system.api.subscribe.SubscribeMessageSendApi;
import cn.iocoder.yudao.module.system.controller.admin.worklog.vo.loginstance.LogInstanceRespVO;
import cn.iocoder.yudao.module.system.controller.app.comment.dto.CommentDTO;
import cn.iocoder.yudao.module.system.controller.app.comment.vo.CommentPageListVO;
import cn.iocoder.yudao.module.system.controller.app.comment.vo.CommentTypeCountVO;
import cn.iocoder.yudao.module.system.controller.app.comment.vo.WorkLogCommentPageReqVO;
import cn.iocoder.yudao.module.system.controller.app.comment.vo.WorkLogCommentSaveReqVO;
import cn.iocoder.yudao.module.system.convert.worklog.LogCommentConvert;
import cn.iocoder.yudao.module.system.dal.dataobject.comment.WorkLogCommentDO;
import cn.iocoder.yudao.module.system.dal.dataobject.user.AdminUserDO;
import cn.iocoder.yudao.module.system.dal.dataobject.worklog.LogFormDO;
import cn.iocoder.yudao.module.system.dal.mysql.comment.WorkLogCommentMapper;
import cn.iocoder.yudao.module.system.service.user.AdminUserService;
import cn.iocoder.yudao.module.system.service.worklog.LogFormService;
import cn.iocoder.yudao.module.system.service.worklog.LogInstanceService;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
@ -21,6 +27,7 @@ import org.springframework.stereotype.Service;
import org.springframework.validation.annotation.Validated;
import javax.annotation.Resource;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
@ -39,6 +46,15 @@ public class WorkLogCommentServiceImpl implements WorkLogCommentService {
@Resource
private LogFormService logFormService;
@Resource
private AdminUserService userService;
@Resource
private LogInstanceService logInstanceService;
@Resource
private SubscribeMessageSendApi subscribeMessageSendApi;
@Override
public Long createWorkLogComment(WorkLogCommentSaveReqVO createReqVO) {
// 插入
@ -46,6 +62,10 @@ public class WorkLogCommentServiceImpl implements WorkLogCommentService {
Long userId = WebFrameworkUtils.getLoginUserId();
workLogComment.setUserId(userId);
workLogCommentMapper.insert(workLogComment);
//创建评论回复后 发送消息通知
sendMessage(workLogComment);
// 返回
return workLogComment.getId();
}
@ -134,4 +154,26 @@ public class WorkLogCommentServiceImpl implements WorkLogCommentService {
return vo;
}
/**
* 评论或回复 发送消息通知
*/
private void sendMessage(WorkLogCommentDO workLogComment) {
//获得日志详情
LogInstanceRespVO instanceDO = logInstanceService.getLogInstance(workLogComment.getWorkLogId());
//获得 用户信息Map
Map<Long, AdminUserDO> userMap = userService.getUserMap(Arrays.asList(instanceDO.getStartUserId(), workLogComment.getUserId()));
String openId = userMap.get(instanceDO.getStartUserId()).getOpenId();
if (openId != null) {
//发送消息通知
subscribeMessageSendApi.sendCompanyNotice(LogCommentConvert.INSTANCE.convertLogComment(
openId, workLogComment, userMap.get(workLogComment.getUserId()).getNickname(),
"formal"));
}
}
}