Преглед изворни кода

Merge branch 'openIm' of http://1.14.104.71:10880/root/ylrz_his_scrm_java into openIm

caoliqin пре 1 месец
родитељ
комит
2ac0893f5b

+ 4 - 0
fs-admin/pom.xml

@@ -85,6 +85,10 @@
             <artifactId>clickhouse-jdbc</artifactId>
             <version>0.4.6</version>
         </dependency>
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-test</artifactId>
+        </dependency>
 
     </dependencies>
 

+ 103 - 0
fs-admin/src/test/java/com/fs/course/controller/OpenIMServiceTest.java

@@ -0,0 +1,103 @@
+package com.fs.course.controller;
+
+import com.fasterxml.jackson.core.JsonProcessingException;
+import com.fs.FSApplication;
+import com.fs.common.annotation.DataSource;
+import com.fs.im.dto.OpenImMsgDTO;
+import com.fs.im.dto.OpenImResponseDTO;
+import com.fs.im.service.OpenIMService;
+import lombok.extern.slf4j.Slf4j;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTest;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.boot.test.mock.mockito.MockBean;
+import org.springframework.data.redis.core.RedisTemplate;
+import org.springframework.test.context.ActiveProfiles;
+
+import static org.junit.Assert.assertNotNull;
+
+@Slf4j
+@ActiveProfiles("druid-fby-test")
+@RunWith(org.springframework.test.context.junit4.SpringRunner.class)
+@SpringBootTest(classes = FSApplication.class)
+public class OpenIMServiceTest {
+
+    @Autowired
+    private OpenIMService openIMService;
+    @Test
+    public void openIMSendMsg() {
+        OpenImMsgDTO openImMsgDTO = new OpenImMsgDTO();
+        openImMsgDTO.setSendID("fbyC8584");
+        openImMsgDTO.setRecvID("fbyU1077739");
+//        openImMsgDTO.setGroupID("group789");
+        openImMsgDTO.setSenderNickname("测试用户");
+        openImMsgDTO.setSenderFaceURL("https://example.com/avatar.jpg");
+        openImMsgDTO.setSenderPlatformID(1);
+        openImMsgDTO.setContentType(101);
+        openImMsgDTO.setSessionType(1);
+        openImMsgDTO.setOnlineOnly(false);
+        openImMsgDTO.setNotOfflinePush(false);
+        openImMsgDTO.setSendTime(System.currentTimeMillis());
+        openImMsgDTO.setEx("额外信息");
+
+        // Content
+        OpenImMsgDTO.Content content = new OpenImMsgDTO.Content();
+        content.setContent("Hello World");
+        content.setData("test data");
+        content.setDescription("测试消息");
+        content.setExtension("ext");
+        openImMsgDTO.setContent(content);
+
+        // OfflinePushInfo
+        OpenImMsgDTO.OfflinePushInfo offlinePushInfo = new OpenImMsgDTO.OfflinePushInfo();
+        offlinePushInfo.setTitle("新消息");
+        offlinePushInfo.setDesc("您收到一条新消息");
+        offlinePushInfo.setEx("push ex");
+        offlinePushInfo.setIOSPushSound("default");
+        offlinePushInfo.setIOSBadgeCount(true);
+        openImMsgDTO.setOfflinePushInfo(offlinePushInfo);
+
+        // 调用方法
+        OpenImResponseDTO result = openIMService.openIMSendMsg(openImMsgDTO);
+
+        // 断言
+        assertNotNull(result);
+    }
+
+    @Test
+    public void aiAutoReply() {
+    }
+
+    @Test
+    public void sendUtil() {
+    }
+
+    @Test
+    public void sendUtilUserToDoctor() {
+    }
+
+    @Test
+    public void editConversation() {
+    }
+
+    @Test
+    public void sendCourse() throws JsonProcessingException {
+        Long userId = 1077739L;
+        Long companyUserId = 8584L;
+        String url = "https://example.com/course/123";
+        String title = "Java编程基础课程";
+        String linkImageUrl = "https://example.com/images/course-cover.jpg";
+        String cropId = "crop_123456";
+
+        OpenImResponseDTO actualResponse = openIMService.sendCourse(
+                userId, companyUserId, url, title, linkImageUrl, cropId
+        );
+        log.info("返回结果: {}",actualResponse);
+    }
+
+    @Test
+    public void sendPackageUtil() {
+    }
+}

+ 3 - 1
fs-service/src/main/java/com/fs/his/service/impl/FsDoctorServiceImpl.java

@@ -33,6 +33,7 @@ import com.fs.system.oss.OSSFactory;
 import com.google.common.reflect.TypeToken;
 import com.google.gson.Gson;
 import com.google.zxing.WriterException;
+import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
@@ -51,6 +52,7 @@ import java.util.List;
  * @author fs
  * @date 2023-06-05
  */
+@Slf4j
 @Service
 public class FsDoctorServiceImpl implements IFsDoctorService
 {
@@ -468,7 +470,7 @@ public class FsDoctorServiceImpl implements IFsDoctorService
                         openIMService.openIMSendMsg(openImMsgDTO1);
                     }
                 }catch (Exception e){
-
+                    log.error("随访失败!订单编号: {}",order.getOrderId(),e);
                 }
             }
         }

+ 16 - 8
fs-service/src/main/java/com/fs/im/service/impl/OpenIMServiceImpl.java

@@ -3,6 +3,7 @@ package com.fs.im.service.impl;
 import cn.hutool.core.collection.CollectionUtil;
 import cn.hutool.http.HttpRequest;
 import cn.hutool.json.JSONUtil;
+import com.alibaba.fastjson.JSON;
 import com.fasterxml.jackson.annotation.JsonInclude;
 import com.fasterxml.jackson.core.JsonProcessingException;
 import com.fasterxml.jackson.databind.ObjectMapper;
@@ -36,6 +37,7 @@ import lombok.extern.slf4j.Slf4j;
 import org.json.JSONArray;
 import org.json.JSONObject;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
 import org.springframework.context.annotation.Lazy;
 import org.springframework.scheduling.annotation.Async;
 import org.springframework.stereotype.Service;
@@ -67,6 +69,9 @@ public class OpenIMServiceImpl implements OpenIMService {
     @Autowired
     @Lazy
     private AiHookService aiHookService;
+
+    @Value("${openIM.prefix}")
+    private String openImPrefix;
     /*@Autowired
     private IFsUserService fsUserService;*/
     @Override
@@ -459,16 +464,21 @@ public class OpenIMServiceImpl implements OpenIMService {
         log.info("进入发消息的方法");
         String adminToken = getAdminToken();
         JSONObject jsonObject = new JSONObject(openImMsgDTO);
+        String url = IMConfig.URL+"/msg/send_msg";
+        log.info("请求url: {}",url);
         log.info("发送消息的请求体:\n{}", jsonObject.toString());
         long time = new Date().getTime();
-        String result = HttpRequest.post(IMConfig.URL+"/msg/send_msg")
+
+        log.info("请求header: token={},operationID={}",adminToken,time);
+        String result = HttpRequest.post(url)
                 .header("operationID", time + "")
                 .header("token",adminToken)
                 .body(jsonObject.toString())
                 .execute()
                 .body();
+
         OpenImResponseDTO responseDTO= JSONUtil.toBean(result,OpenImResponseDTO.class);
-        log.info("发送消息返回内容:\n{}", responseDTO);
+        log.info("发送消息返回内容:\n{}", result);
         return responseDTO;
     }
     @Override
@@ -502,14 +512,12 @@ public class OpenIMServiceImpl implements OpenIMService {
         openImMsgDTO.setOfflinePushInfo(offlinePushInfo);
         openImMsgDTO.setContent(content);
 
-
-
         openImMsgDTO.setSendID(IMConfig.PREFIX+"C"+companyUserId);
         openImMsgDTO.setRecvID(IMConfig.PREFIX+"U"+userId);
         openImMsgDTO.setContentType(110);
         openImMsgDTO.setSessionType(1);
         // 输出格式化JSON日志
-        log.info("课程消息:\n{}", objectMapper.writeValueAsString(openImMsgDTO));
+        log.info("课程消息: {}", JSON.toJSONString(openImMsgDTO));
         OpenImResponseDTO openImResponseDTO = openIMSendMsg(openImMsgDTO);
         openImMsgDTO = null;
         content = null;
@@ -899,7 +907,7 @@ public class OpenIMServiceImpl implements OpenIMService {
                     String s = "";
                     switch (type){
                         case "2":
-                            s = userId.replaceFirst("^scrmC", "");
+                            s = userId.replaceFirst("^"+openImPrefix+"C", "");
                             CompanyUser companyUser = companyUserMapper.selectCompanyUserByCompanyUserId(Long.parseLong(s));
                             if (null==companyUser){
                                 return R.error("用户不存在");
@@ -911,7 +919,7 @@ public class OpenIMServiceImpl implements OpenIMService {
                             map.put("faceURL",companyUser.getAvatar());
                             break;
                         case "1":
-                            s = userId.replaceFirst("^scrmU", "");
+                            s = userId.replaceFirst("^"+openImPrefix+"U", "");
                             FsUser fsUser = fsUserMapper.selectFsUserByUserId(Long.parseLong(s));
                             if (null==fsUser){
                                 return R.error("用户不存在");
@@ -921,7 +929,7 @@ public class OpenIMServiceImpl implements OpenIMService {
                             map.put("faceURL",fsUser.getAvatar());
                             break;
                         case "3":
-                            s = userId.replaceFirst("^scrmD", "");
+                            s = userId.replaceFirst("^"+openImPrefix+"D", "");
                             FsDoctor fsDoctor = fsDoctorMapper.selectFsDoctorByDoctorId(Long.parseLong(s));
                             if (null==fsDoctor){
                                 return R.error("用户不存在");

+ 0 - 6
fs-service/src/main/resources/application-common.yml

@@ -138,9 +138,3 @@ image:
   storage:
     local-path: C:\logoFile\logo.jpg
     server-path: C:\logoFile\logo.jpg
-
-openIM:
-  secret: openIM123
-  userID: imAdmin
-  url: https://web.im.cdwjyyh.com/api
-  prefix: scrm