feat(emergency): push/send 接入IM消息推送,SendIm 新增 businessId 字段
- SendIm 新增 businessId 字段(String),用于区分业务来源,不影响已有调用 - FirstAidPushServiceImpl.send() 步骤5从日志占位改为实际发送IM群消息 - businessId 固定为 "article",前端可据此识别宣教推送消息 - 工单无 sessionId 时跳过IM发送并 log.warn 告警 Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
+4
@@ -20,4 +20,8 @@ public class SendIm {
|
||||
* 类型 1: 应急单
|
||||
*/
|
||||
private Integer type;
|
||||
/**
|
||||
* 业务标识,用于区分不同业务来源(例:"article"=宣教推送)
|
||||
*/
|
||||
private String businessId;
|
||||
}
|
||||
|
||||
+30
-7
@@ -2,9 +2,11 @@ package com.renkang.emergency.service.impl;
|
||||
|
||||
import cn.hutool.core.collection.CollectionUtil;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.renkang.emergency.bean.response.SendIm;
|
||||
import com.renkang.emergency.constant.FirstAidConstants;
|
||||
import com.renkang.emergency.dto.PushBatchSendDTO;
|
||||
import com.renkang.emergency.dto.PushFilterDTO;
|
||||
@@ -17,6 +19,8 @@ import com.renkang.emergency.mapper.FirstAidResourceMapper;
|
||||
import com.renkang.emergency.mapper.FirstAidResourceCategoryMapper;
|
||||
import com.renkang.emergency.mapper.OrderMapper;
|
||||
import com.renkang.emergency.service.IFirstAidPushService;
|
||||
import com.renkang.im.api.IMHelloApi;
|
||||
import com.renkang.im.entity.ImGroupMsgTextReqDO;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.jeecg.common.constant.CommonConstant;
|
||||
import org.jeecg.common.system.vo.LoginUser;
|
||||
@@ -55,6 +59,9 @@ public class FirstAidPushServiceImpl implements IFirstAidPushService {
|
||||
@Autowired
|
||||
private FirstAidPushServiceImpl self;
|
||||
|
||||
@Autowired
|
||||
private IMHelloApi imHelloApi;
|
||||
|
||||
@Override
|
||||
public IPage<FirstAidResource> queryResourceList(String orderId, PushFilterDTO filter, Page<FirstAidResource> page) {
|
||||
LambdaQueryWrapper<FirstAidResource> wrapper = buildFilterWrapper(filter);
|
||||
@@ -108,10 +115,11 @@ public class FirstAidPushServiceImpl implements IFirstAidPushService {
|
||||
throw new RuntimeException("该资源已推送,请勿重复操作");
|
||||
}
|
||||
|
||||
// 3. 获取推送目标
|
||||
// 3. 获取工单信息
|
||||
String targetUserId = null;
|
||||
Order order = null;
|
||||
if (StrUtil.isNotBlank(orderId)) {
|
||||
Order order = orderMapper.selectById(orderId);
|
||||
order = orderMapper.selectById(orderId);
|
||||
if (order != null) {
|
||||
targetUserId = order.getSalvageUserId();
|
||||
}
|
||||
@@ -131,11 +139,26 @@ public class FirstAidPushServiceImpl implements IFirstAidPushService {
|
||||
record.setPushTime(new Date());
|
||||
pushRecordMapper.insert(record);
|
||||
|
||||
// 5. 推送通知(预留,当前记录日志)
|
||||
log.info("急救宣教推送: resourceId={}, title={}, orderId={}, targetUserId={}, pushById={}, pushByName={}",
|
||||
resourceId, resource.getTitle(), orderId, targetUserId,
|
||||
loginUser != null ? loginUser.getId() : null,
|
||||
loginUser != null ? loginUser.getRealname() : null);
|
||||
// 5. 构建推送IM消息并发送
|
||||
if (order != null && StrUtil.isNotBlank(order.getSessionId())) {
|
||||
SendIm sendIm = new SendIm();
|
||||
sendIm.setType(1);
|
||||
sendIm.setTitle(resource.getTitle());
|
||||
sendIm.setContent(StrUtil.isNotBlank(resource.getSummary()) ? resource.getSummary() : resource.getTitle());
|
||||
sendIm.setBusinessId("article");
|
||||
|
||||
ImGroupMsgTextReqDO im = new ImGroupMsgTextReqDO();
|
||||
im.setGroupId(order.getSessionId());
|
||||
im.setFromUserId("administrator");
|
||||
im.setContent(JSONObject.toJSON(sendIm).toString());
|
||||
|
||||
imHelloApi.sendGroupMsg(im);
|
||||
log.info("急救宣教推送IM消息已发送: resourceId={}, title={}, orderId={}, sessionId={}, businessId=article",
|
||||
resourceId, resource.getTitle(), orderId, order.getSessionId());
|
||||
} else {
|
||||
log.warn("急救宣教推送IM消息未发送(工单无群聊sessionId): resourceId={}, orderId={}",
|
||||
resourceId, orderId);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
Reference in New Issue
Block a user