wangxy 2 недель назад
Родитель
Сommit
8177b5f09c

+ 24 - 0
fs-company-app/src/main/java/com/fs/app/controller/CommonController.java

@@ -3,6 +3,8 @@ package com.fs.app.controller;
 
 import cn.jiguang.common.resp.APIConnectionException;
 import cn.jiguang.common.resp.APIRequestException;
+import com.alibaba.fastjson.JSON;
+import com.fasterxml.jackson.core.JsonProcessingException;
 import com.fs.app.annotation.Login;
 import com.fs.app.utils.CityTreeUtil;
 import com.fs.app.utils.JwtUtils;
@@ -23,6 +25,9 @@ import com.fs.crm.service.*;
 import com.fs.his.domain.FsCity;
 import com.fs.his.service.IFsAppVersionService;
 import com.fs.his.service.IFsCityService;
+import com.fs.his.service.IFsInquiryOrderMsgService;
+import com.fs.im.dto.OpenImMsgCallBackResponse;
+import com.fs.im.vo.OpenImMsgCallBackVO;
 import com.fs.jpush.service.JpushService;
 
 import com.fs.store.service.IFsUserCourseCountService;
@@ -33,9 +38,11 @@ import com.fs.system.service.ISysDictDataService;
 import com.fs.system.vo.DictVO;
 import com.fs.voice.service.IVoiceService;
 import com.google.common.collect.Lists;
+import com.google.gson.Gson;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import io.swagger.annotations.ApiParam;
+import lombok.extern.slf4j.Slf4j;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -52,6 +59,7 @@ import java.util.Map;
 @Api("公共接口")
 @RestController
 @RequestMapping(value="/app/common")
+@Slf4j
 public class CommonController extends AppBaseController {
 	@Autowired
     JwtUtils jwtUtils;
@@ -89,6 +97,9 @@ public class CommonController extends AppBaseController {
 	@Autowired
 	private ICrmCustomerHisOrderService crmCustomerHisOrderService;
 
+    @Autowired
+    private IFsInquiryOrderMsgService inquiryOrderMsgService;
+
 
 
 	@Autowired
@@ -240,4 +251,17 @@ public class CommonController extends AppBaseController {
 	}
 
 
+    @ApiOperation("openIm聊天数据回调")
+    @PostMapping(value = "/callbackAfterSendSingleMsgCommand")
+    public OpenImMsgCallBackResponse openImMsgCallBack(@RequestBody String body, HttpServletRequest request) throws JsonProcessingException {
+
+        Gson gson = new Gson();
+        OpenImMsgCallBackVO messageInfo = gson.fromJson(body, OpenImMsgCallBackVO.class);
+
+        //openIMService.AiAutoReply(messageInfo);
+
+        log.info("收到的参数{}", JSON.toJSONString(messageInfo));
+        return inquiryOrderMsgService.openImSaveMsg(messageInfo);
+    }
+
 }

+ 252 - 4
fs-service/src/main/java/com/fs/gtPush/service/impl/uniPush2ServiceImpl.java

@@ -8,12 +8,16 @@ import com.fasterxml.jackson.core.JsonProcessingException;
 import com.fs.common.core.domain.R;
 import com.fs.common.utils.DateUtils;
 import com.fs.common.utils.StringUtils;
+import com.fs.company.domain.CompanyUser;
+import com.fs.company.mapper.CompanyUserMapper;
 import com.fs.gtPush.domain.PushReqBean;
 import com.fs.gtPush.domain.PushResult;
 import com.fs.gtPush.domain.UniPushLog;
 import com.fs.gtPush.service.UniPushLogService;
 import com.fs.gtPush.service.uniPush2Service;
+import com.fs.im.config.IMConfig;
 import com.fs.im.service.OpenIMService;
+import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import com.fs.gtPush.utils.PushUtils;
 import com.fs.his.domain.FsUser;
@@ -25,10 +29,11 @@ import java.util.HashMap;
 import java.util.Map;
 
 @Service
+@Slf4j
 public class uniPush2ServiceImpl implements uniPush2Service {
     @Autowired
     private OpenIMService openIMService;
-    private static final String url = "https://fc-mp-de6e03a9-c1a3-439b-9eec-d0dc3c565e4e.next.bspapp.com/push";
+//    private static final String url = "https://fc-mp-51aee743-0bb7-4ff3-b83d-878a4e9f892d.next.bspapp.com/push";
 
     @Autowired
     private IFsUserService userService;
@@ -36,11 +41,19 @@ public class uniPush2ServiceImpl implements uniPush2Service {
     @Autowired
     private UniPushLogService logService;
 
+    @Autowired
+    private CompanyUserMapper companyUserMapper;
+
+    @Autowired
+    private IMConfig imConfig;
+
     @Override
     public PushResult pushMessage(PushReqBean push) {
-        String result = HttpUtil.post(url, push.toString());
-        PushResult pushResult = JSONUtil.toBean(result, PushResult.class);
-        return pushResult;
+        String result = HttpUtil.post(imConfig.getPushUrl(), JSON.toJSONString(push));
+        log.info("推送地址{}",imConfig.getPushUrl());
+        log.info("推送请求体{}",JSON.toJSONString(push));
+        log.info("推送返回结果{}",result);
+        return JSONUtil.toBean(result, PushResult.class);
     }
     @Override
     public void pushSopAppLinkMsgByExternalIM(String cropId, String linkTile, String linkDescribe,String linkImageUrl, String link, Long companyUserId,Long fsUserId) throws JsonProcessingException {
@@ -123,5 +136,240 @@ public class uniPush2ServiceImpl implements uniPush2Service {
         return null;
     }
 
+    @Override
+    public void pushIm(Long userId, Long businessId, String purl, String title, String content, Float type, Integer desType, String imJsonString) {
+        try {
+            // 构造推送参数
+            PushReqBean param = getImParam(userId, purl, title, content, type, desType, imJsonString);
+            if (param == null) {
+                // 用户无 clientId 或参数非法时,走离线推送兜底
+                log.warn("pushIm 参数不合法或用户无 jpushId,取消推送");
+                //pushImOffline(userId, businessId, purl, title, content, type, desType, imJsonString);
+                return;
+            }
+
+            // 强制系统通知,即使 App 在后台或被杀也能显示通知
+            param.setForce_notification(true);
+
+            // payload 附加参数(不会影响通知栏展示)
+            if (param.getPayload() == null) {
+                param.setPayload(new HashMap<>());
+            }
+            param.getPayload().put("url", purl);
+            if (StringUtils.isNotBlank(imJsonString)) {
+                param.getPayload().put("extra", imJsonString);
+            }
+
+            // category 通道标签(区分业务类型,方便厂商识别)
+            Map<String, String> category = new HashMap<>();
+            category.put("harmony", "WORK");
+            category.put("huawei", "WORK");
+            category.put("vivo", "TODO");
+            category.put("oppo", "IM");
+            category.put("xiaomi", "IM");
+            param.setCategory(category);
+
+            // options:各厂商定制推送配置(保证后台能弹出通知)
+            Map<String, Object> options = new HashMap<>();
+            Map<String, Object> android = new HashMap<>();
+
+            // 小米
+            Map<String, Object> xm = new HashMap<>();
+            xm.put("/extra.channel_id", "133892");
+            xm.put("/extra.notify_foreground", true);
+            android.put("XM", xm);
+
+            // OPPO
+            Map<String, Object> op = new HashMap<>();
+            op.put("/channel_id", "push_oplus_category_content");
+            op.put("/category", "IM");
+            op.put("/notify_level", 16);
+            op.put("/off_line", true);
+            android.put("OP", op);
+
+            // VIVO
+            Map<String, Object> vv = new HashMap<>();
+            vv.put("/classification", 1); // 系统通知
+            vv.put("/category", "IM");
+            vv.put("/notify_foreground", true);
+            android.put("VV", vv);
+
+            // 华为
+            Map<String, Object> hw = new HashMap<>();
+            hw.put("/message/android/category", "WORK");
+            hw.put("/message/android/notification/importance", "HIGH");
+            hw.put("/message/android/notification/visibility", "PUBLIC");
+            hw.put("/message/android/notification/channel_id", "133892");
+            android.put("HW", hw);
+
+            // 鸿蒙
+            Map<String, Object> ho = new HashMap<>();
+            ho.put("/android/notification/importance", "NORMAL");
+            ho.put("/android/notification/badge/badgeClass", "io.dcloud.PandoraEntry");
+            android.put("HO", ho);
+
+            // iOS 苹果
+            Map<String, Object> ios = new HashMap<>();
+            Map<String, Object> apns = new HashMap<>();
+            // APNs 配置
+            apns.put("/headers/apns-push-type", "alert");
+            apns.put("/headers/apns-priority", 10);
+            apns.put("/headers/apns-topic", "com.mytek.rtlive");
+
+            // 通知内容配置
+            Map<String, Object> alert = new HashMap<>();
+            alert.put("title", title);
+            alert.put("body", content);
+
+            // 声音配置
+            Map<String, Object> sound = new HashMap<>();
+            sound.put("name", "default");
+            sound.put("critical", 0);
+            sound.put("volume", 1.0);
+
+            // APS 配置
+            Map<String, Object> aps = new HashMap<>();
+            aps.put("alert", alert);
+            aps.put("sound", sound);
+            aps.put("badge", 1);
+            aps.put("mutable-content", 1);
+            aps.put("category", "IM");
+
+            apns.put("/aps", aps);
+
+            // 自定义数据
+            Map<String, Object> payload = new HashMap<>();
+            payload.put("url", purl);
+            if (StringUtils.isNotBlank(imJsonString)) {
+                payload.put("extra", imJsonString);
+            }
+            apns.put("/payload", payload);
+
+            ios.put("APNS", apns);
+
+            options.put("android", android);
+            options.put("harmony", new HashMap<>());
+            options.put("ios", ios);
+            param.setOptions(options);
+
+            // 执行推送param = {PushReqBean@19565} "PushReqBean(push_clientid=68e47070636684b4c6763b4198571821, title=im付成键1, content=图片消息, force_notification=true, category={harmony=WORK, huawei=WORK, xiaomi=IM, oppo=IM, vivo=IM}, payload={data={"sendID":"C9576","callbackCommand":"callbackAfterSendSingleMsgCommand","serverMsgID":"187e71c76ad72e4d180e034b4a3941cb","clientMsgID":"428d7691790232a7892244796f5623ed","operationID":"9ed33f7a-2b88-47ee-8509-5f8eecf42e7f","senderPlatformID":5,"senderNickname":"im付成键1","sessionType":1,"msgFrom":100,"contentType":102,"status":1,"sendTime":null,"createTime":null,"content":"{\"sourcePath\":\"微信图片_20251022163452_134_133.png\",\"sourcePicture\":{\"uuid\":\"1f53a2a8-8e70-4584-a9b0-44d4fd1cce40/微信图片_20251022163452_134_133.png\",\"type\":\"image/png\",\"size\":4756,\"width\":200,\"height\":200,\"url\":\"https://web.im.cdwjyyh.com/api/object/C9576/msg_picture_428d7691790232a7892244796f5623ed.png\"},\"bigPicture\":{\"uuid\":\"\",\"type\":\"\",\"size\":0,\"width\":0,\"height\":0,\"url\":\"\"},\"snapshotPic"… View
+            PushResult pushResult = pushMessage(param);
+            if (pushResult == null) {
+                log.error("pushIm 推送失败,返回为空 userId:{}", userId);
+                return;
+            }
+
+            // 构造日志对象
+            UniPushLog pushLog = new UniPushLog();
+            pushLog.setJpushId(param.getPush_clientid() != null ? param.getPush_clientid().toString() : null);
+            pushLog.setPushMsg(JSON.toJSONString(param));
+            pushLog.setType(type);
+            pushLog.setDesType(desType);
+            pushLog.setUserId(userId);
+            pushLog.setBusinessId(businessId);
+            pushLog.setCreateTime(DateUtils.getNowDate());
+
+            // 保存推送日志
+            logService.insertUniPushLog(PushUtils.returnMsg(pushResult, pushLog));
+
+            if (pushResult.getErrCode() != null && (pushResult.getErrCode() == 0 || pushResult.getErrCode() == 200)) {
+                log.info("pushIm 推送成功 userId:{} msg:{}", userId, pushResult.getErrMsg());
+            } else {
+                log.error("pushIm 推送失败 userId:{} msg:{}", userId, pushResult.getErrMsg());
+            }
+        } catch (Exception e) {
+            log.error("pushIm 异常 userId:{} title:{} content:{}", userId, title, content, e);
+        }
+    }
+
+    /**
+     * 专用于 pushIm 的参数构建方法
+     */
+    private PushReqBean getImParam(Long userId, String purl, String title, String content,
+                                   Float type, Integer desType, String imJsonString) {
+        if (userId == null) return null;
+        String jpushId = "";
+        FsUser fsUser = userService.selectFsUserByUserId(userId);
+        if (fsUser == null){
+            CompanyUser companyUser = companyUserMapper.selectCompanyUserById(userId);
+            if (companyUser == null){
+                return null;
+            }
+            jpushId = companyUser.getJpushId();
+        } else {
+            jpushId = fsUser.getJpushId();
+        }
+
+        if (StringUtils.isBlank(jpushId) || "0".equals(jpushId) || "string".equals(jpushId)) {
+            return null;
+        }
+
+        if (title.length() > 20 || content.length() > 50) {
+            log.warn("pushIm 参数非法:title 或 content 超过长度限制 userId:{}", userId);
+            return null;
+        }
+
+        // payload
+        Map<String, Object> payload = new HashMap<>();
+        if (StringUtils.isNotBlank(purl)) {
+            payload.put("url", purl);
+        }
+        if (StringUtils.isNotEmpty(imJsonString)) {
+            payload.put("data", imJsonString);
+        }
+        payload.put("title", title);
+        payload.put("body", content);
+
+        // category
+        Map<String, String> category = new HashMap<>();
+        category.put("harmony", "WORK");
+        category.put("huawei", "WORK");
+        category.put("vivo", "TODO");
+
+        // options.android
+        Map<String, Object> android = new HashMap<>();
+
+        // 小米
+        Map<String, Object> xm = new HashMap<>();
+        xm.put("/extra.channel_id", "133892");
+        android.put("XM", xm);
+
+        // OPPO
+        Map<String, Object> op = new HashMap<>();
+        op.put("/channel_id", "push_oplus_category_content");
+        op.put("/category", "CONTENT");
+        op.put("/notify_level", 16);
+        android.put("OP", op);
+
+        // VIVO
+        Map<String, Object> vv = new HashMap<>();
+        vv.put("/classification", 1);
+        vv.put("/category", "IM");
+        android.put("VV", vv);
+
+        // 华为
+        Map<String, Object> hw = new HashMap<>();
+        hw.put("/message/android/category", "WORK");
+        hw.put("/message/android/notification/badge/class", "io.dcloud.PandoraEntry");
+        hw.put("/message/android/notification/badge/add_num", 1);
+        android.put("HW", hw);
+
+        // 鸿蒙
+        Map<String, Object> ho = new HashMap<>();
+        ho.put("/android/notification/importance", "NORMAL");
+        ho.put("/android/notification/badge/badgeClass", "io.dcloud.PandoraEntry");
+        android.put("HO", ho);
+
+        Map<String, Object> options = new HashMap<>();
+        options.put("android", android);
+
+        PushReqBean bean = new PushReqBean(jpushId, title, content, payload, options);
+        bean.setForce_notification(false);
+        bean.setCategory(category);
+        bean.setBadge("+1");
+
+        return bean;
+    }
+
 
 }

+ 1 - 0
fs-service/src/main/java/com/fs/gtPush/service/uniPush2Service.java

@@ -11,6 +11,7 @@ public interface uniPush2Service {
     void pushOne(Long userId,Long businessId,String purl,String title,String content, Float type, Integer desType);
 
     PushReqBean getParam(Long userId,String purl,String title,String content,Float type,Integer desType,String imJsonString);
+    void pushIm(Long userId, Long businessId, String purl, String title, String content, Float type, Integer desType,String imJsonString);
     void pushSopAppLinkMsgByExternalIM(String cropId,String linkTile,String linkDescribe,String linkImageUrl,String link,Long companyUserId,Long fsUserId) throws JsonProcessingException;
 
 }

+ 323 - 204
fs-service/src/main/java/com/fs/his/service/impl/FsInquiryOrderMsgServiceImpl.java

@@ -4,10 +4,10 @@ import java.io.FileOutputStream;
 import java.io.IOException;
 import java.io.InputStream;
 import java.net.URL;
-import java.util.Date;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
 
+import cn.hutool.http.HttpRequest;
+import cn.hutool.json.JSONUtil;
 import com.alibaba.fastjson.JSON;
 import com.fasterxml.jackson.core.JsonProcessingException;
 import com.fasterxml.jackson.databind.JsonNode;
@@ -16,13 +16,17 @@ import com.fasterxml.jackson.databind.json.JsonMapper;
 import com.fs.common.service.impl.SmsServiceImpl;
 import com.fs.common.utils.DateUtils;
 import com.fs.common.utils.StringUtils;
+import com.fs.company.domain.CompanyUser;
+import com.fs.company.mapper.CompanyUserMapper;
 import com.fs.event.TemplateBean;
 import com.fs.event.TemplateEvent;
 import com.fs.event.TemplateListenEnum;
 import com.fs.event.TemplateListener;
+import com.fs.gtPush.service.uniPush2Service;
 import com.fs.his.domain.*;
 import com.fs.his.dto.FsInquiryOrderPatientDTO;
 import com.fs.his.dto.PayloadDTO;
+import com.fs.his.enums.PushLogDesTypeEnum;
 import com.fs.his.mapper.*;
 import com.fs.his.param.FsFollowReportParam;
 import com.fs.his.param.FsInquiryOrderMsgListDParam;
@@ -33,11 +37,15 @@ import com.fs.his.vo.FsInquiryOrderMsgListDVO;
 import com.fs.im.config.IMConfig;
 import com.fs.im.dto.OpenImMsgCallBackResponse;
 import com.fs.im.service.IImService;
+import com.fs.im.service.OpenIMService;
+import com.fs.im.service.impl.OpenIMServiceImpl;
 import com.fs.im.vo.OpenImMsgCallBackVO;
+import com.fs.im.vo.OpenImResponseDTOTest;
 import com.fs.system.oss.CloudStorageService;
 import com.fs.system.oss.OSSFactory;
 import com.fs.watch.domain.WatchDeviceInfo;
 import com.fs.watch.mapper.WatchDeviceInfoMapper;
+import com.fs.watch.param.DeviceSendParam;
 import com.fs.watch.service.DeviceSetUpService;
 import lombok.extern.slf4j.Slf4j;
 import org.slf4j.Logger;
@@ -56,8 +64,7 @@ import com.fs.his.service.IFsInquiryOrderMsgService;
  */
 @Slf4j
 @Service
-public class FsInquiryOrderMsgServiceImpl implements IFsInquiryOrderMsgService
-{
+public class FsInquiryOrderMsgServiceImpl implements IFsInquiryOrderMsgService {
     @Autowired
     private FsInquiryOrderMsgMapper fsInquiryOrderMsgMapper;
     @Autowired
@@ -66,7 +73,7 @@ public class FsInquiryOrderMsgServiceImpl implements IFsInquiryOrderMsgService
     @Lazy
     private FsFollowReportMapper fsFollowReportMapper;
     @Autowired
-    private FsDoctorMapper  doctorMapper;
+    private FsDoctorMapper doctorMapper;
     @Lazy
     @Autowired
     SmsServiceImpl smsService;
@@ -83,9 +90,18 @@ public class FsInquiryOrderMsgServiceImpl implements IFsInquiryOrderMsgService
     @Autowired
     private DeviceSetUpService deviceSetUpService;
 
-//    @Autowired
+    @Autowired
+    private uniPush2Service uniPush2Service;
+
+    @Autowired
+    private OpenIMService openIMService;
+    @Autowired
+    private CompanyUserMapper companyUserMapper;
+
+    //    @Autowired
 //    TemplateListener publisher;
-    Logger logger= LoggerFactory.getLogger(getClass());
+    Logger logger = LoggerFactory.getLogger(getClass());
+
     /**
      * 查询图文订单
      *
@@ -93,8 +109,7 @@ public class FsInquiryOrderMsgServiceImpl implements IFsInquiryOrderMsgService
      * @return 图文订单
      */
     @Override
-    public FsInquiryOrderMsg selectFsInquiryOrderMsgByMsgId(Long msgId)
-    {
+    public FsInquiryOrderMsg selectFsInquiryOrderMsgByMsgId(Long msgId) {
         return fsInquiryOrderMsgMapper.selectFsInquiryOrderMsgByMsgId(msgId);
     }
 
@@ -105,8 +120,7 @@ public class FsInquiryOrderMsgServiceImpl implements IFsInquiryOrderMsgService
      * @return 图文订单
      */
     @Override
-    public List<FsInquiryOrderMsg> selectFsInquiryOrderMsgList(FsInquiryOrderMsg fsInquiryOrderMsg)
-    {
+    public List<FsInquiryOrderMsg> selectFsInquiryOrderMsgList(FsInquiryOrderMsg fsInquiryOrderMsg) {
         return fsInquiryOrderMsgMapper.selectFsInquiryOrderMsgList(fsInquiryOrderMsg);
     }
 
@@ -117,8 +131,7 @@ public class FsInquiryOrderMsgServiceImpl implements IFsInquiryOrderMsgService
      * @return 结果
      */
     @Override
-    public int insertFsInquiryOrderMsg(FsInquiryOrderMsg fsInquiryOrderMsg)
-    {
+    public int insertFsInquiryOrderMsg(FsInquiryOrderMsg fsInquiryOrderMsg) {
         fsInquiryOrderMsg.setCreateTime(DateUtils.getNowDate());
         return fsInquiryOrderMsgMapper.insertFsInquiryOrderMsg(fsInquiryOrderMsg);
     }
@@ -130,8 +143,7 @@ public class FsInquiryOrderMsgServiceImpl implements IFsInquiryOrderMsgService
      * @return 结果
      */
     @Override
-    public int updateFsInquiryOrderMsg(FsInquiryOrderMsg fsInquiryOrderMsg)
-    {
+    public int updateFsInquiryOrderMsg(FsInquiryOrderMsg fsInquiryOrderMsg) {
         return fsInquiryOrderMsgMapper.updateFsInquiryOrderMsg(fsInquiryOrderMsg);
     }
 
@@ -142,8 +154,7 @@ public class FsInquiryOrderMsgServiceImpl implements IFsInquiryOrderMsgService
      * @return 结果
      */
     @Override
-    public int deleteFsInquiryOrderMsgByMsgIds(Long[] msgIds)
-    {
+    public int deleteFsInquiryOrderMsgByMsgIds(Long[] msgIds) {
         return fsInquiryOrderMsgMapper.deleteFsInquiryOrderMsgByMsgIds(msgIds);
     }
 
@@ -154,19 +165,18 @@ public class FsInquiryOrderMsgServiceImpl implements IFsInquiryOrderMsgService
      * @return 结果
      */
     @Override
-    public int deleteFsInquiryOrderMsgByMsgId(Long msgId)
-    {
+    public int deleteFsInquiryOrderMsgByMsgId(Long msgId) {
         return fsInquiryOrderMsgMapper.deleteFsInquiryOrderMsgByMsgId(msgId);
     }
 
     @Override
     public void saveMsg(ImMsgParam messageInfo) {
-        if (messageInfo.getCallbackCommand().equals("C2C.CallbackAfterMsgWithDraw")){
+        if (messageInfo.getCallbackCommand().equals("C2C.CallbackAfterMsgWithDraw")) {
             fsInquiryOrderMsgMapper.deleteFsInquiryOrderMsgByMsgKey(messageInfo.getMsgKey());
         }
-        String send =messageInfo.getFrom_Account();
-        String to =messageInfo.getTo_Account();
-        Long time =messageInfo.getMsgTime();
+        String send = messageInfo.getFrom_Account();
+        String to = messageInfo.getTo_Account();
+        Long time = messageInfo.getMsgTime();
         Date date = new Date(time * 1000);
         List<ImMsgParam.MsgBody> msgBody = messageInfo.getMsgBody();
 
@@ -174,17 +184,17 @@ public class FsInquiryOrderMsgServiceImpl implements IFsInquiryOrderMsgService
 
             String[] sendSplit = send.split("-");
             String[] toSplit = to.split("-");
-            String userId="";
-            String doctorId="";
-            String msgType="2";
-            if (sendSplit[0].equals("U")){
-                msgType="1";
-                userId=sendSplit[1];
-                doctorId=toSplit[1];
-                fsFollowReportService.addReport(userId,doctorId);
-            }else {
-                userId=toSplit[1];
-                doctorId=sendSplit[1];
+            String userId = "";
+            String doctorId = "";
+            String msgType = "2";
+            if (sendSplit[0].equals("U")) {
+                msgType = "1";
+                userId = sendSplit[1];
+                doctorId = toSplit[1];
+                fsFollowReportService.addReport(userId, doctorId);
+            } else {
+                userId = toSplit[1];
+                doctorId = sendSplit[1];
 
                 TemplateBean templateBean = TemplateBean.builder()
                         .title("您收到咨询回复")
@@ -193,118 +203,118 @@ public class FsInquiryOrderMsgServiceImpl implements IFsInquiryOrderMsgService
                         .templateType(TemplateListenEnum.TYPE_5.getValue())
                         .build();
                 publisher.publishEvent(new TemplateEvent(this, templateBean));
-                if (body.getMsgType().equals("TIMTextElem")){
+                if (body.getMsgType().equals("TIMTextElem")) {
                     String text = body.getMsgContent().getText();
-                   if (text.contains("您的信息我已收到")){
-                       long doctorIdL = Long.parseLong(doctorId);
-                       long userIdL = Long.parseLong(userId);
-                       int count = fsFollowReportMapper.selectFollowByUserIdAndDoctorIdAndType(userIdL, doctorIdL);
-                       if (count==0){
-                           FsUser fsUser = fsUserMapper.selectFsUserByUserId(userIdL);
-                           if (fsUser!=null&&fsUser.getPhone()!=null){
-                               FsInquiryOrder order = fsFollowReportMapper.selectFsInquiryOrderByUserAndDoc(userIdL, doctorIdL);
-                               if (order!=null){
-                                   FsInquiryOrderPatientDTO patientDTO = JSON.parseObject(order.getPatientJson(),FsInquiryOrderPatientDTO.class);
-                                   if (patientDTO!=null&&patientDTO.getPatientName()!=null){
-                                       FsDoctor doctor=doctorMapper.selectFsDoctorByDoctorId(doctorIdL);
-                                       if (doctor.getDeptId()!=null&&doctor.getDeptId().compareTo(39L)==0){
-                                           logger.info("药师回复发送短信:"+fsUser.getPhone()+patientDTO.getPatientName());
-                                           smsService.sendUserSms(fsUser.getPhone(), patientDTO.getPatientName(), "7");
-                                       }else {
-                                           logger.info("医生回复发送短信:"+patientDTO.getMobile()+patientDTO.getPatientName());
-                                           smsService.sendUserSms(fsUser.getPhone(), patientDTO.getPatientName(), "4");
-                                       }
-                                   }
-                               }else {
-                                   FsFollow fo = fsFollowReportMapper.selectFsFollowById(userIdL, doctorIdL);
-                                   if (fo!=null&&fo.getPatientName()!=null){
-                                       logger.info("药师回复发送短信:"+fsUser.getPhone()+fo.getPatientName());
-                                       smsService.sendUserSms(fsUser.getPhone(), fo.getPatientName(), "7");
-                                   }
-                               }
-
-                           }
-
-                       }
-                   }
+                    if (text.contains("您的信息我已收到")) {
+                        long doctorIdL = Long.parseLong(doctorId);
+                        long userIdL = Long.parseLong(userId);
+                        int count = fsFollowReportMapper.selectFollowByUserIdAndDoctorIdAndType(userIdL, doctorIdL);
+                        if (count == 0) {
+                            FsUser fsUser = fsUserMapper.selectFsUserByUserId(userIdL);
+                            if (fsUser != null && fsUser.getPhone() != null) {
+                                FsInquiryOrder order = fsFollowReportMapper.selectFsInquiryOrderByUserAndDoc(userIdL, doctorIdL);
+                                if (order != null) {
+                                    FsInquiryOrderPatientDTO patientDTO = JSON.parseObject(order.getPatientJson(), FsInquiryOrderPatientDTO.class);
+                                    if (patientDTO != null && patientDTO.getPatientName() != null) {
+                                        FsDoctor doctor = doctorMapper.selectFsDoctorByDoctorId(doctorIdL);
+                                        if (doctor.getDeptId() != null && doctor.getDeptId().compareTo(39L) == 0) {
+                                            logger.info("药师回复发送短信:" + fsUser.getPhone() + patientDTO.getPatientName());
+                                            smsService.sendUserSms(fsUser.getPhone(), patientDTO.getPatientName(), "7");
+                                        } else {
+                                            logger.info("医生回复发送短信:" + patientDTO.getMobile() + patientDTO.getPatientName());
+                                            smsService.sendUserSms(fsUser.getPhone(), patientDTO.getPatientName(), "4");
+                                        }
+                                    }
+                                } else {
+                                    FsFollow fo = fsFollowReportMapper.selectFsFollowById(userIdL, doctorIdL);
+                                    if (fo != null && fo.getPatientName() != null) {
+                                        logger.info("药师回复发送短信:" + fsUser.getPhone() + fo.getPatientName());
+                                        smsService.sendUserSms(fsUser.getPhone(), fo.getPatientName(), "7");
+                                    }
+                                }
+
+                            }
+
+                        }
+                    }
 
 
                 }
 
             }
             Long orderId = fsInquiryOrderMsgMapper.selectFsInquiryOrderMsgOrderId(doctorId, userId);
-            if (orderId==null){
-                orderId = fsInquiryOrderMsgMapper.selectFsInquiryOrderMsgOrderIdByDate(doctorId, userId,date);
+            if (orderId == null) {
+                orderId = fsInquiryOrderMsgMapper.selectFsInquiryOrderMsgOrderIdByDate(doctorId, userId, date);
             }
 
             String msgContentType = body.getMsgType();
-            Integer type=0;
-            String cont="";
-            if (msgContentType != null ) {
+            Integer type = 0;
+            String cont = "";
+            if (msgContentType != null) {
                 switch (msgContentType) {
                     case "TIMTextElem":
-                        type=1;
-                        cont=body.getMsgContent().getText();
+                        type = 1;
+                        cont = body.getMsgContent().getText();
                         break;
                     case "TIMSoundElem":
                         String soundUrl = body.getMsgContent().getUrl();
                         try {
                             // 创建URL对象
                             URL url = new URL(soundUrl);
-                            InputStream in =  url.openStream();
+                            InputStream in = url.openStream();
                             CloudStorageService storage = OSSFactory.build();
                             cont = storage.uploadSuffix(in, ".m4a");
                         } catch (IOException e) {
                             e.printStackTrace();
                         }
-                        type=2;
+                        type = 2;
                         break;
                     case "TIMImageElem":
                         String imgUrl = body.getMsgContent().getImageInfoArray().get(0).getURL();
                         try {
                             URL url = new URL(imgUrl);
-                            InputStream in =  url.openStream();
+                            InputStream in = url.openStream();
                             CloudStorageService storage = OSSFactory.build();
                             cont = storage.uploadSuffix(in, ".jpg");
                         } catch (IOException e) {
                             e.printStackTrace();
                         }
-                        type=3;
+                        type = 3;
                         break;
                     case "TIMVideoFileElem":
                         String videoUrl = body.getMsgContent().getVideoUrl();
                         try {
                             URL url = new URL(videoUrl);
-                            InputStream in =  url.openStream();
+                            InputStream in = url.openStream();
                             CloudStorageService storage = OSSFactory.build();
-                            cont = storage.uploadSuffix(in, "."+body.getMsgContent().getVideoFormat());
+                            cont = storage.uploadSuffix(in, "." + body.getMsgContent().getVideoFormat());
                         } catch (IOException e) {
                             e.printStackTrace();
                         }
-                        type=4;
+                        type = 4;
                         break;
                     case "TIMCustomElem":
-                        if (body.getMsgContent().getData().equals("prescribe")){
-                            cont=body.getMsgContent().getExt();
-                            type=5;
+                        if (body.getMsgContent().getData().equals("prescribe")) {
+                            cont = body.getMsgContent().getExt();
+                            type = 5;
                             break;
-                        }else if (body.getMsgContent().getData().equals("report")){
-                            cont=body.getMsgContent().getDesc();
-                            type=6;
+                        } else if (body.getMsgContent().getData().equals("report")) {
+                            cont = body.getMsgContent().getDesc();
+                            type = 6;
                             break;
-                        }else if (body.getMsgContent().getData().equals("follow")){
-                             cont=body.getMsgContent().getDesc();
-                            type= 7;
+                        } else if (body.getMsgContent().getData().equals("follow")) {
+                            cont = body.getMsgContent().getDesc();
+                            type = 7;
                             break;
-                        }else if (body.getMsgContent().getData().equals("drugReport")){
-                            cont=body.getMsgContent().getDesc();
-                            type= 8;
+                        } else if (body.getMsgContent().getData().equals("drugReport")) {
+                            cont = body.getMsgContent().getDesc();
+                            type = 8;
                             break;
-                        }else {
+                        } else {
                             String ext = body.getMsgContent().getExt();
-                            Map<String,String> parse = (Map)JSON.parse(ext);
-                            cont= parse.get("title");
-                            type=1;
+                            Map<String, String> parse = (Map) JSON.parse(ext);
+                            cont = parse.get("title");
+                            type = 1;
                             break;
                         }
 
@@ -330,41 +340,42 @@ public class FsInquiryOrderMsgServiceImpl implements IFsInquiryOrderMsgService
     public List<FsInquiryOrderMsgListDVO> selectFsInquiryOrderMsgListDVO(FsInquiryOrderMsgListDParam param) {
         return fsInquiryOrderMsgMapper.selectFsInquiryOrderMsgListDVO(param);
     }
+
     @Override
     public OpenImMsgCallBackResponse openImSaveMsg(OpenImMsgCallBackVO openImMsgCallBackVO) throws JsonProcessingException {
         OpenImMsgCallBackResponse openImMsgCallBackResponse = new OpenImMsgCallBackResponse();
         ObjectMapper objectMapper = new ObjectMapper();
         try {
-            if (openImMsgCallBackVO.getCallbackCommand().equals("callbackBeforeAfterMsgCommand")){
+            if (openImMsgCallBackVO.getCallbackCommand().equals("callbackBeforeAfterMsgCommand")) {
                 fsInquiryOrderMsgMapper.deleteFsInquiryOrderMsgByMsgKey(openImMsgCallBackVO.getClientMsgID());
                 return openImMsgCallBackResponse;
             }
-            String send =openImMsgCallBackVO.getSendID();
-            String to =openImMsgCallBackVO.getRecvID();
-            Long time =openImMsgCallBackVO.getSendTime();
+            String send = openImMsgCallBackVO.getSendID();
+            String to = openImMsgCallBackVO.getRecvID();
+            Long time = openImMsgCallBackVO.getSendTime();
             Date date = new Date(time);
             String content = openImMsgCallBackVO.getContent();
 
 
-            String userId="";
-            String doctorId="";
-            String companyUserId="";
-            String msgType="2";
+            String userId = "";
+            String doctorId = "";
+            String companyUserId = "";
+            String msgType = "2";
             //用户发送消息
-            if (send.contains("U")){
-                msgType="1";
-                userId=send.replace("U","");
-                if (to.contains("D")){
-                    doctorId=to.replace("D","");
-                    fsFollowReportService.addReport(userId,doctorId);
-                }else if (to.contains("C")){
-                    companyUserId=to.replace("C","");
+            if (send.contains("U")) {
+                msgType = "1";
+                userId = send.replace("U", "");
+                if (to.contains("D")) {
+                    doctorId = to.replace("D", "");
+                    fsFollowReportService.addReport(userId, doctorId);
+                } else if (to.contains("C")) {
+                    companyUserId = to.replace("C", "");
                 }
                 //医生发送消息
-            }else if (send.contains("D")){
-                doctorId=send.replace("D","");
-                if (to.contains("U")){
-                    userId=to.replace("U","");
+            } else if (send.contains("D")) {
+                doctorId = send.replace("D", "");
+                if (to.contains("U")) {
+                    userId = to.replace("U", "");
                     TemplateBean templateBean = TemplateBean.builder()
                             .title("您收到咨询回复")
                             .remark("您的咨询已回复")
@@ -372,31 +383,31 @@ public class FsInquiryOrderMsgServiceImpl implements IFsInquiryOrderMsgService
                             .templateType(TemplateListenEnum.TYPE_5.getValue())
                             .build();
                     publisher.publishEvent(new TemplateEvent(this, templateBean));
-                    if (openImMsgCallBackVO.getContentType()==101){
-                        if (content.contains("您的信息我已收到")){
+                    if (openImMsgCallBackVO.getContentType() == 101) {
+                        if (content.contains("您的信息我已收到")) {
                             long doctorIdL = Long.parseLong(doctorId);
                             long userIdL = Long.parseLong(userId);
                             int count = fsFollowReportMapper.selectFollowByUserIdAndDoctorIdAndType(userIdL, doctorIdL);
-                            if (count==0){
+                            if (count == 0) {
                                 FsUser fsUser = fsUserMapper.selectFsUserByUserId(userIdL);
-                                if (fsUser!=null&&fsUser.getPhone()!=null){
+                                if (fsUser != null && fsUser.getPhone() != null) {
                                     FsInquiryOrder order = fsFollowReportMapper.selectFsInquiryOrderByUserAndDoc(userIdL, doctorIdL);
-                                    if (order!=null){
-                                        FsInquiryOrderPatientDTO patientDTO = JSON.parseObject(order.getPatientJson(),FsInquiryOrderPatientDTO.class);
-                                        if (patientDTO!=null&&patientDTO.getPatientName()!=null){
-                                            FsDoctor doctor=doctorMapper.selectFsDoctorByDoctorId(doctorIdL);
-                                            if (doctor.getDeptId()!=null&&doctor.getDeptId().compareTo(39L)==0){
-                                                logger.info("药师回复发送短信:"+fsUser.getPhone()+patientDTO.getPatientName());
+                                    if (order != null) {
+                                        FsInquiryOrderPatientDTO patientDTO = JSON.parseObject(order.getPatientJson(), FsInquiryOrderPatientDTO.class);
+                                        if (patientDTO != null && patientDTO.getPatientName() != null) {
+                                            FsDoctor doctor = doctorMapper.selectFsDoctorByDoctorId(doctorIdL);
+                                            if (doctor.getDeptId() != null && doctor.getDeptId().compareTo(39L) == 0) {
+                                                logger.info("药师回复发送短信:" + fsUser.getPhone() + patientDTO.getPatientName());
                                                 smsService.sendUserSms(fsUser.getPhone(), patientDTO.getPatientName(), "7");
-                                            }else {
-                                                logger.info("医生回复发送短信:"+patientDTO.getMobile()+patientDTO.getPatientName());
+                                            } else {
+                                                logger.info("医生回复发送短信:" + patientDTO.getMobile() + patientDTO.getPatientName());
                                                 smsService.sendUserSms(fsUser.getPhone(), patientDTO.getPatientName(), "4");
                                             }
                                         }
-                                    }else {
+                                    } else {
                                         FsFollow fo = fsFollowReportMapper.selectFsFollowById(userIdL, doctorIdL);
-                                        if (fo!=null&&fo.getPatientName()!=null){
-                                            logger.info("药师回复发送短信:"+fsUser.getPhone()+fo.getPatientName());
+                                        if (fo != null && fo.getPatientName() != null) {
+                                            logger.info("药师回复发送短信:" + fsUser.getPhone() + fo.getPatientName());
                                             smsService.sendUserSms(fsUser.getPhone(), fo.getPatientName(), "7");
                                         }
                                     }
@@ -406,34 +417,78 @@ public class FsInquiryOrderMsgServiceImpl implements IFsInquiryOrderMsgService
                             }
                         }
                     }
-                }else {
-                    companyUserId = to.replace("C","");
+                } else {
+                    companyUserId = to.replace("C", "");
                 }
-                //销售发送消息
-            }else if (send.contains("C")){
-                companyUserId=send.replace("C","");
-                if (to.contains("U")){
-                    userId=to.replace("U","");
-                }else {
-                    doctorId = to.replace("D","");
+                //客服发送消息
+            } else if (send.contains("C")) {
+                companyUserId = send.replace("C", "");
+                if (to.contains("U")) {
+                    userId = to.replace("U", "");
+                } else {
+                    doctorId = to.replace("D", "");
                 }
             }
             Long orderId = fsInquiryOrderMsgMapper.selectFsInquiryOrderMsgOrderId(doctorId, userId);
-            if (orderId==null){
-                orderId = fsInquiryOrderMsgMapper.selectFsInquiryOrderMsgOrderIdByDate(doctorId, userId,date);
+            if (orderId == null) {
+                orderId = fsInquiryOrderMsgMapper.selectFsInquiryOrderMsgOrderIdByDate(doctorId, userId, date);
             }
 
             Integer msgContentType = openImMsgCallBackVO.getContentType();
-            Integer type=0;
-            String cont="";
+            Integer type = 0;
+            String cont = "";
             JsonNode jsonNode = null;
-            if (msgContentType != null ) {
+            String a = "";
+            openImMsgCallBackVO.setType("im");
+            if (send.contains("C") && StringUtils.isEmpty(openImMsgCallBackVO.getSenderNickname())) {
+                CompanyUser companyUser = companyUserMapper.selectCompanyUserById(Long.parseLong(openImMsgCallBackVO.getSendID().replace("C", "")));
+                openImMsgCallBackVO.setSenderNickname(StringUtils.isNotEmpty(companyUser.getImNickName()) ? companyUser.getImNickName() : companyUser.getNickName());
+            }
+            if (send.contains("D")) {
+                FsDoctor fsDoctor = doctorMapper.selectFsDoctorByDoctorId(Long.parseLong(openImMsgCallBackVO.getSendID().replace("D", "")));
+                openImMsgCallBackVO.setSenderNickname(fsDoctor.getDoctorName());
+
+            }
+            String jsonStr = objectMapper.writeValueAsString(openImMsgCallBackVO);
+            if (msgContentType != null) {
+                if (to.startsWith("U")) {
+                    a = to.replace("U", "");
+                } else if (to.startsWith("C")) {
+                    a = to.replace("C", "");
+                }
                 switch (msgContentType) {
+                    case 1601:
+                        log.info("执行音视频通话推送");
+                        cont = "通话消息";
+                        type = 1;
+                        //jsonNode = objectMapper.readTree(content);
+                        String adminToken = openIMService.getAdminToken();
+                        Map<String, Object> paramMap = new HashMap<>();
+                        ArrayList<String> userIDs = new ArrayList<>();
+                        userIDs.add(send);
+                        paramMap.put("userIDs", userIDs);
+
+                        String jsonBody = JSONUtil.toJsonStr(paramMap);
+                        String result1 = HttpRequest.post("https://web.im.cdwjyyh.com/api/user/get_users_info")
+                                .header("operationID", String.valueOf(time))
+                                .header("token", adminToken)
+                                .body(jsonBody)
+                                .execute()
+                                .body();
+                        OpenIMServiceImpl.UpdateUserInfo updateUserInfo = new OpenIMServiceImpl.UpdateUserInfo();
+                        OpenImResponseDTOTest responseDTO1 = JSONUtil.toBean(result1, OpenImResponseDTOTest.class);
+                        List<OpenIMServiceImpl.UserInfo> users = responseDTO1.getData().getUsersInfo();
+
+                        uniPush2Service.pushIm(Long.parseLong(a), 0l, "", users.get(0).getNickname(), "通话消息", 1f, PushLogDesTypeEnum.IM_MSG.getValue(), jsonStr);
+
+                        break;
                     //普通消息
                     case 101:
-                        type=1;
+                        type = 1;
                         jsonNode = objectMapper.readTree(content);
-                        cont=jsonNode.get("content").asText();
+                        cont = jsonNode.get("content").asText();
+                        uniPush2Service.pushIm(Long.parseLong(a), 0l, "", openImMsgCallBackVO.getSenderNickname(), cont, 1f, PushLogDesTypeEnum.IM_MSG.getValue(), jsonStr);
+
                         break;
                     //语音消息
                     case 103:
@@ -442,24 +497,25 @@ public class FsInquiryOrderMsgServiceImpl implements IFsInquiryOrderMsgService
                         try {
                             // 创建URL对象
                             URL url = new URL(soundUrl);
-                            InputStream in =  url.openStream();
+                            InputStream in = url.openStream();
                             CloudStorageService storage = OSSFactory.build();
                             cont = storage.uploadSuffix(in, ".m4a");
                         } catch (IOException e) {
                             e.printStackTrace();
                         }
-                        type=2;
-                        //医生发送的语音消息,这一段是同步语音消息到腕表的
-                        /*if (send.contains("D")){
-                            WatchDeviceInfo u = watchDeviceInfoMapper.selectByUserId(to.replace("U", ""));
-                            if (u!=null&& StringUtils.isNotEmpty(u.getDeviceNumber())){
-                                DeviceSendParam deviceSendParam = new DeviceSendParam();
-                                deviceSendParam.setDeviceId(u.getDeviceNumber());
-                                deviceSendParam.setFileUrl(soundUrl);
-                                deviceSendParam.setSendUserName(openImMsgCallBackVO.getSenderNickname());
-                                deviceSetUpService.sendMp3(deviceSendParam);
-                            }
-                        }*/
+                        type = 2;
+                        //医生发送的语音消息
+//                        if (send.contains("D")) {
+//                            WatchDeviceInfo u = watchDeviceInfoMapper.selectByUserId(to.replace("U", ""));
+//                            if (u != null && StringUtils.isNotEmpty(u.getDeviceNumber())) {
+//                                DeviceSendParam deviceSendParam = new DeviceSendParam();
+//                                deviceSendParam.setDeviceId(u.getDeviceNumber());
+//                                deviceSendParam.setFileUrl(soundUrl);
+//                                deviceSendParam.setSendUserName(openImMsgCallBackVO.getSenderNickname());
+////                                deviceSetUpService.sendMp3(deviceSendParam);
+//                            }
+//                        }
+                        uniPush2Service.pushIm(Long.parseLong(a), 0l, "", openImMsgCallBackVO.getSenderNickname(), "语音消息", 1f, PushLogDesTypeEnum.IM_MSG.getValue(), jsonStr);
                         break;
                     //图片消息
                     case 102:
@@ -467,13 +523,16 @@ public class FsInquiryOrderMsgServiceImpl implements IFsInquiryOrderMsgService
                         String imgUrl = jsonNode.get("sourcePicture").get("url").asText();
                         try {
                             URL url = new URL(imgUrl);
-                            InputStream in =  url.openStream();
+                            InputStream in = url.openStream();
                             CloudStorageService storage = OSSFactory.build();
                             cont = storage.uploadSuffix(in, ".jpg");
                         } catch (IOException e) {
                             e.printStackTrace();
                         }
-                        type=3;
+                        openImMsgCallBackVO.setContent("");
+                        jsonStr = objectMapper.writeValueAsString(openImMsgCallBackVO);
+                        type = 3;
+                        uniPush2Service.pushIm(Long.parseLong(a), 0l, "", openImMsgCallBackVO.getSenderNickname(), "图片消息", 1f, PushLogDesTypeEnum.IM_MSG.getValue(), jsonStr);
                         break;
                     //视频消息
                     case 104:
@@ -481,77 +540,139 @@ public class FsInquiryOrderMsgServiceImpl implements IFsInquiryOrderMsgService
                         String videoUrl = jsonNode.get("videoUrl").asText();
                         try {
                             URL url = new URL(videoUrl);
-                            InputStream in =  url.openStream();
+                            InputStream in = url.openStream();
                             CloudStorageService storage = OSSFactory.build();
-                            cont = storage.uploadSuffix(in, "."+jsonNode.get("videoType").asText());
+                            cont = storage.uploadSuffix(in, "." + jsonNode.get("videoType").asText());
                         } catch (IOException e) {
                             e.printStackTrace();
                         }
-                        type=4;
+                        openImMsgCallBackVO.setContent("");
+                        jsonStr = objectMapper.writeValueAsString(openImMsgCallBackVO);
+                        type = 4;
+                        uniPush2Service.pushIm(Long.parseLong(a), 0l, "", openImMsgCallBackVO.getSenderNickname(), "视频消息", 1f, PushLogDesTypeEnum.IM_MSG.getValue(), jsonStr);
+                        break;
+                    //文件消息
+                    case 105:
+                        jsonNode = objectMapper.readTree(content); // 转为 JsonNode
+                        cont = jsonNode.get("fileName").asText();
+                        type = 4;
+                        openImMsgCallBackVO.setContent("");
+                        jsonStr = objectMapper.writeValueAsString(openImMsgCallBackVO);
+                        uniPush2Service.pushIm(Long.parseLong(a), 0l, "", openImMsgCallBackVO.getSenderNickname(), "文件消息", 1f, PushLogDesTypeEnum.IM_MSG.getValue(), jsonStr);
                         break;
                     //自定义消息
                     case 110:
-                        PayloadDTO payloadDTO = objectMapper.readValue(content, PayloadDTO.class);
-
-                        jsonNode = objectMapper.readTree(payloadDTO.getData());
-                        JsonNode payload = jsonNode.get("payload");
+                        JsonNode rootNode = objectMapper.readTree(content);
+                        String dataStr = rootNode.get("data").asText();
+                        JsonNode innerNode = objectMapper.readTree(dataStr);
+                        JsonNode payload = innerNode.get("payload");
                         String data = payload.get("data").asText();
                         JsonNode extension = payload.get("extension");
-                        if (data.equals("prescribe")){
+                        FsUser user = null;
+                        if (data.equals("prescribe")) {
                             String prescribeId = extension.get("prescribeId").asText();
                             FsPrescribe fsPrescribe = fsPrescribeMapper.selectFsPrescribeByPrescribeId(Long.parseLong(prescribeId));
-                            cont=objectMapper.writeValueAsString(fsPrescribe);
+                            cont = objectMapper.writeValueAsString(fsPrescribe);
                             //orderId = fsPrescribe.getInquiryOrderId();
-                            type=5;
+                            type = 5;
+                            user = fsUserMapper.selectFsUserByUserId(Long.parseLong(a));
+                            if (StringUtils.isNotEmpty(user.getJpushId())) {
+                                uniPush2Service.pushIm(Long.parseLong(a), 0l, "", openImMsgCallBackVO.getSenderNickname(), "电子处方单", 1f, PushLogDesTypeEnum.IM_MSG.getValue(), jsonStr);
+                            }
                             break;
-                        }else if (data.equals("report")){
+                        } else if (data.equals("report")) {
 
                             String description = payload.get("description").asText();
                             FsInquiryOrderReport fsInquiryOrderReport = fsInquiryOrderReportService.selectFsInquiryOrderReportByOrderId(Long.parseLong(description));
-                            if (fsInquiryOrderReport!=null){
+                            if (fsInquiryOrderReport != null) {
                                 cont = fsInquiryOrderReport.getOrderId().toString();
                             }
-                            type=6;
+                            type = 6;
+                            user = fsUserMapper.selectFsUserByUserId(Long.parseLong(a));
+                            if (StringUtils.isNotEmpty(user.getJpushId())) {
+                                uniPush2Service.pushIm(Long.parseLong(a), 0l, "", openImMsgCallBackVO.getSenderNickname(), "问诊报告单", 1f, PushLogDesTypeEnum.IM_MSG.getValue(), jsonStr);
+                            }
                             break;
-                        }else if (data.equals("follow")){
-                            cont=payload.get("extension").get("followId").asText();
-                            type= 7;
+                        } else if (data.equals("follow")) {
+                            cont = payload.get("extension").get("followId").asText();
+                            type = 7;
                             //orderId = payload.get("extension").get("followId").asLong();
+                            user = fsUserMapper.selectFsUserByUserId(Long.parseLong(a));
+                            if (StringUtils.isNotEmpty(user.getJpushId())) {
+                                uniPush2Service.pushIm(Long.parseLong(a), 0l, "", openImMsgCallBackVO.getSenderNickname(), "随访单", 1f, PushLogDesTypeEnum.IM_MSG.getValue(), jsonStr);
+                            }
                             break;
-                        }else if (data.equals("drugReport")){
-                            cont=payload.get("description").asText();
+                        } else if (data.equals("drugReport")) {
+                            cont = payload.get("description").asText();
                             //orderId = payload.get("description").asLong();
-                            type= 8;
+                            type = 8;
+                            user = fsUserMapper.selectFsUserByUserId(Long.parseLong(a));
+                            if (StringUtils.isNotEmpty(user.getJpushId())) {
+                                uniPush2Service.pushIm(Long.parseLong(a), 0l, "", openImMsgCallBackVO.getSenderNickname(), "用药报告单", 1f, PushLogDesTypeEnum.IM_MSG.getValue(), jsonStr);
+                            }
                             break;
-                        } else if (data.equals("package")){
-                            cont=payload.get("extension").get("title").asText();
-                            //orderId = payload.get("description").asLong();
-                            type= 9;
+                        } else if (data.equals("package")) {
+                            cont = payload.get("extension").get("title").asText();
+                            openImMsgCallBackVO.setSendTime(null);
+                            openImMsgCallBackVO.setCreateTime(null);
+                            openImMsgCallBackVO.setFaceURL("");
+                            jsonStr = objectMapper.writeValueAsString(openImMsgCallBackVO);
+                            type = 9;
+                            user = fsUserMapper.selectFsUserByUserId(Long.parseLong(a));
+                            openImMsgCallBackVO.setContent("");
+                            jsonStr = objectMapper.writeValueAsString(openImMsgCallBackVO);
+                            if (StringUtils.isNotEmpty(user.getJpushId())) {
+                                uniPush2Service.pushIm(Long.parseLong(a), 0l, "", openImMsgCallBackVO.getSenderNickname(), "套餐包", 1f, PushLogDesTypeEnum.IM_MSG.getValue(), jsonStr);
+                            }
                             break;
-                        }else if (data.equals("couponPackage")){
-                            cont=payload.get("extension").get("title").asText();
+                        } else if (data.equals("couponPackage")) {
+                            cont = payload.get("extension").get("title").asText();
                             //orderId = payload.get("description").asLong();
-                            type= 10;
+                            type = 10;
+                            user = fsUserMapper.selectFsUserByUserId(Long.parseLong(a));
+                            openImMsgCallBackVO.setContent("");
+                            jsonStr = objectMapper.writeValueAsString(openImMsgCallBackVO);
+                            if (StringUtils.isNotEmpty(user.getJpushId())) {
+                                uniPush2Service.pushIm(Long.parseLong(a), 0l, "", openImMsgCallBackVO.getSenderNickname(), "私域疗法券", 1f, PushLogDesTypeEnum.IM_MSG.getValue(), jsonStr);
+                            }
                             break;
-                        }else if (data.equals("inquirySelect")){
-                            cont=payload.get("extension").get("title").asText();
+                        } else if (data.equals("inquirySelect")) {
+                            cont = payload.get("extension").get("title").asText();
                             //orderId = payload.get("description").asLong();
-                            type= 11;
+                            type = 11;
+                            user = fsUserMapper.selectFsUserByUserId(Long.parseLong(a));
+                            openImMsgCallBackVO.setContent("");
+                            jsonStr = objectMapper.writeValueAsString(openImMsgCallBackVO);
+                            if (StringUtils.isNotEmpty(user.getJpushId())) {
+                                uniPush2Service.pushIm(Long.parseLong(a), 0l, "", openImMsgCallBackVO.getSenderNickname(), "会诊", 1f, PushLogDesTypeEnum.IM_MSG.getValue(), jsonStr);
+                            }
+                            break;
+                        } else if (data.equals("startInquiry") || data.equals("finishInquiry")) {
+                            cont = payload.get("extension").get("title").asText();
+                            type = 1;
+                            user = fsUserMapper.selectFsUserByUserId(Long.parseLong(a));
+                            if (StringUtils.isNotEmpty(user.getJpushId())) {
+                                uniPush2Service.pushIm(Long.parseLong(a), 0l, "", openImMsgCallBackVO.getSenderNickname(), "接诊通知", 1f, PushLogDesTypeEnum.IM_MSG.getValue(), jsonStr);
+                            }
                             break;
-                        }else if (data.equals("startInquiry")||data.equals("finishInquiry")){
-                            cont =payload.get("extension").get("title").asText();
-                            type=1;
+                        } else if (data.equals("course")) {
+                            cont = payload.get("extension").get("title").asText();
+                            type = 1;
+                            user = fsUserMapper.selectFsUserByUserId(Long.parseLong(a));
+                            if (StringUtils.isNotEmpty(user.getJpushId())) {
+                                uniPush2Service.pushIm(Long.parseLong(a), 0l, "", openImMsgCallBackVO.getSenderNickname(), cont, 1f, PushLogDesTypeEnum.IM_MSG.getValue(), jsonStr);
+                            }
                             break;
                         }
 
 
                 }
             }
-            if (StringUtils.isEmpty(cont)){
+            if (StringUtils.isEmpty(cont)) {
                 openImMsgCallBackResponse.setErrMsg("无消息内容,未保存到数据库");
                 return openImMsgCallBackResponse;
             }
-            if (orderId==null&&StringUtils.isNotEmpty(openImMsgCallBackVO.getEx())){
+            if (orderId == null && StringUtils.isNotEmpty(openImMsgCallBackVO.getEx())) {
                 JsonNode exJson = objectMapper.readTree(openImMsgCallBackVO.getEx());
                 orderId = exJson.get("orderId").asLong();
             }
@@ -567,11 +688,11 @@ public class FsInquiryOrderMsgServiceImpl implements IFsInquiryOrderMsgService
             msg.setMsgType(msgType);
             fsInquiryOrderMsgMapper.insertFsInquiryOrderMsg(msg);
             // 极光推送
-            //String pushContent = (type == 1) ? content :"您有一条新消息";
-            //uniPush2Service.pushOne(Long.parseLong(to.replace("U","")), orderId, null, "新消息提醒", pushContent, PushLogTypeEnum.MARKET.getValue(), PushLogDesTypeEnum.MARKET_PUSH.getValue());
-            log.info("返回的参数 {}", JSON.toJSONString(openImMsgCallBackResponse));
+            String pushContent = (type == 1) ? content : "您有一条新消息";
+//            uniPush2Service.pushIm(Long.parseLong(to.replace("U","")), orderId, null, "新消息提醒", pushContent, PushLogTypeEnum.MARKET.getValue(), PushLogDesTypeEnum.IM_MSG.getValue());
+//            log.info("返回的参数 {}", JSON.toJSONString(openImMsgCallBackResponse));
             return openImMsgCallBackResponse;
-        } catch (Exception e){
+        } catch (Exception e) {
             openImMsgCallBackResponse.setActionCode(202);
             openImMsgCallBackResponse.setErrCode(100);
             openImMsgCallBackResponse.setErrDlt("");
@@ -579,7 +700,5 @@ public class FsInquiryOrderMsgServiceImpl implements IFsInquiryOrderMsgService
             log.info("返回的参数 {}", JSON.toJSONString(openImMsgCallBackResponse));
             return openImMsgCallBackResponse;
         }
-
     }
-
 }

+ 11 - 0
fs-service/src/main/java/com/fs/im/config/IMConfig.java

@@ -14,11 +14,14 @@ public class IMConfig {
     private String userID;
     @Value("${openIM.url}")
     private String url;
+    @Value("${push.url}")
+    private String pushUrl;
 //    @Value("${openIM.prefix}")
 //    private String prefix;
     // 静态常量
     public static String PREFIX;
     public static String URL;
+    public static String PUSH_URL;
 
     @PostConstruct
     public void init() {
@@ -50,6 +53,14 @@ public class IMConfig {
         this.url = url;
     }
 
+    public String getPushUrl() {
+        return pushUrl;
+    }
+
+    public void setPushUrl(String pushUrl) {
+        this.pushUrl = pushUrl;
+    }
+
 //    public String getPrefix() {
 //        return prefix;
 //    }

+ 1 - 0
fs-service/src/main/java/com/fs/im/vo/OpenImMsgCallBackVO.java

@@ -25,4 +25,5 @@ public class OpenImMsgCallBackVO {
     private String faceURL;
     private String ex;
     private String recvID;
+    private String type;
 }

+ 4 - 2
fs-service/src/main/resources/application-druid-hdt.yml

@@ -153,9 +153,11 @@ rocketmq:
 openIM:
     secret: openIM123
     userID: imAdmin
-    url: https://web.jnmyim.ylrzfs.com/api
+    url: https://webim.hbhdt.top/api
+push:
+    url: https://fc-mp-51aee743-0bb7-4ff3-b83d-878a4e9f892d.next.bspapp.com/push
 #是否使用新im
 im:
-    type: NONE
+    type: OPENIM
 #是否为新商户,新商户不走mpOpenId
 isNewWxMerchant: false