diff --git a/health-emergency/health-emergency-api/src/main/java/com/renkang/emergency/bean/response/SendIm.java b/health-emergency/health-emergency-api/src/main/java/com/renkang/emergency/bean/response/SendIm.java index 58975ea..8ebfa08 100644 --- a/health-emergency/health-emergency-api/src/main/java/com/renkang/emergency/bean/response/SendIm.java +++ b/health-emergency/health-emergency-api/src/main/java/com/renkang/emergency/bean/response/SendIm.java @@ -20,4 +20,8 @@ public class SendIm { * 类型 1: 应急单 */ private Integer type; + /** + * 业务标识,用于区分不同业务来源(例:"article"=宣教推送) + */ + private String businessId; } diff --git a/health-emergency/health-emergency-biz/src/main/java/com/renkang/emergency/service/impl/FirstAidPushServiceImpl.java b/health-emergency/health-emergency-biz/src/main/java/com/renkang/emergency/service/impl/FirstAidPushServiceImpl.java index 6e9e0c6..520a3e3 100644 --- a/health-emergency/health-emergency-biz/src/main/java/com/renkang/emergency/service/impl/FirstAidPushServiceImpl.java +++ b/health-emergency/health-emergency-biz/src/main/java/com/renkang/emergency/service/impl/FirstAidPushServiceImpl.java @@ -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 queryResourceList(String orderId, PushFilterDTO filter, Page page) { LambdaQueryWrapper 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