From 6916510d713a2055c5fc573b8c79b0607c5ca306 Mon Sep 17 00:00:00 2001
From: fuck_zhn <2218834824@qq.com>
Date: Mon, 30 Oct 2023 09:08:38 +0800
Subject: [PATCH] =?UTF-8?q?=E9=97=AE=E8=AF=8A=E9=A1=B9=E7=9B=AE=E6=90=AD?=
=?UTF-8?q?=E5=BB=BA1024?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.idea/inspectionProfiles/Project_Default.xml | 10 ++
.idea/misc.xml | 9 ++
health-consultation-common/pom.xml | 8 +-
.../common/domain/Chatrecord.java | 46 ++++++
.../consultation/common/domain/Inquiry.java | 56 +++++++
.../common/domain/req/ReqDoctorMsg.java | 13 ++
.../common/domain/req/RequestDoctor.java | 21 +++
.../common/domain/resp/Consultation.java | 17 ++
.../common/domain/resp/HistoryDoctor.java | 20 +++
.../common/utils/FormatConversionUtils.java | 32 ++++
health-consultation-server/pom.xml | 73 +++++++++
.../server/ConsultationsMain.java | 29 ++++
.../server/config/WebSocketConfig.java | 17 ++
.../server/controller/InquiryController.java | 68 +++++++-
.../server/mapper/InquiryMapper.java | 40 +++++
.../server/service/InquiryService.java | 40 +++++
.../server/service/WebSocketServer.java | 152 ++++++++++++++++++
.../service/impl/InquiryServiceImpl.java | 90 +++++++++++
.../src/main/resources/.idea/.gitignore | 8 +
.../inspectionProfiles/Project_Default.xml | 5 +
.../src/main/resources/.idea/misc.xml | 15 ++
.../src/main/resources/.idea/modules.xml | 8 +
.../src/main/resources/.idea/vcs.xml | 6 +
.../src/main/resources/bootstrap.yml | 29 ++++
.../main/resources/mapper/InquiryMapper.xml | 29 ++++
pom.xml | 4 +
26 files changed, 841 insertions(+), 4 deletions(-)
create mode 100644 .idea/inspectionProfiles/Project_Default.xml
create mode 100644 health-consultation-common/src/main/java/com/health/consultation/common/domain/Chatrecord.java
create mode 100644 health-consultation-common/src/main/java/com/health/consultation/common/domain/Inquiry.java
create mode 100644 health-consultation-common/src/main/java/com/health/consultation/common/domain/req/ReqDoctorMsg.java
create mode 100644 health-consultation-common/src/main/java/com/health/consultation/common/domain/req/RequestDoctor.java
create mode 100644 health-consultation-common/src/main/java/com/health/consultation/common/domain/resp/Consultation.java
create mode 100644 health-consultation-common/src/main/java/com/health/consultation/common/domain/resp/HistoryDoctor.java
create mode 100644 health-consultation-common/src/main/java/com/health/consultation/common/utils/FormatConversionUtils.java
create mode 100644 health-consultation-server/src/main/java/com/health/consultation/server/ConsultationsMain.java
create mode 100644 health-consultation-server/src/main/java/com/health/consultation/server/config/WebSocketConfig.java
create mode 100644 health-consultation-server/src/main/java/com/health/consultation/server/mapper/InquiryMapper.java
create mode 100644 health-consultation-server/src/main/java/com/health/consultation/server/service/InquiryService.java
create mode 100644 health-consultation-server/src/main/java/com/health/consultation/server/service/WebSocketServer.java
create mode 100644 health-consultation-server/src/main/java/com/health/consultation/server/service/impl/InquiryServiceImpl.java
create mode 100644 health-consultation-server/src/main/resources/.idea/.gitignore
create mode 100644 health-consultation-server/src/main/resources/.idea/inspectionProfiles/Project_Default.xml
create mode 100644 health-consultation-server/src/main/resources/.idea/misc.xml
create mode 100644 health-consultation-server/src/main/resources/.idea/modules.xml
create mode 100644 health-consultation-server/src/main/resources/.idea/vcs.xml
create mode 100644 health-consultation-server/src/main/resources/bootstrap.yml
create mode 100644 health-consultation-server/src/main/resources/mapper/InquiryMapper.xml
diff --git a/.idea/inspectionProfiles/Project_Default.xml b/.idea/inspectionProfiles/Project_Default.xml
new file mode 100644
index 0000000..b23ff9f
--- /dev/null
+++ b/.idea/inspectionProfiles/Project_Default.xml
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/misc.xml b/.idea/misc.xml
index 6b782cf..94d47e2 100644
--- a/.idea/misc.xml
+++ b/.idea/misc.xml
@@ -1,4 +1,9 @@
+
+
+
+
+
+
+
+
+
diff --git a/health-consultation-common/pom.xml b/health-consultation-common/pom.xml
index e4906b6..25032f9 100644
--- a/health-consultation-common/pom.xml
+++ b/health-consultation-common/pom.xml
@@ -16,6 +16,12 @@
com.health
health-common-core
+
+ com.health
+ health-common-security
+ 3.6.6
+
+
@@ -25,6 +31,7 @@
http://10.100.1.7:8081/repository/maven-public/
+
dragon-release
@@ -33,5 +40,4 @@
-
diff --git a/health-consultation-common/src/main/java/com/health/consultation/common/domain/Chatrecord.java b/health-consultation-common/src/main/java/com/health/consultation/common/domain/Chatrecord.java
new file mode 100644
index 0000000..a53e6d7
--- /dev/null
+++ b/health-consultation-common/src/main/java/com/health/consultation/common/domain/Chatrecord.java
@@ -0,0 +1,46 @@
+package com.health.consultation.common.domain;
+
+import lombok.Data;
+
+/**
+ * 聊天记录表
+ *
+ * @author Administrator
+ */
+@Data
+public class Chatrecord {
+ /**
+ * ID
+ */
+ private String id;
+
+ /**
+ * 历史聊天记录ID
+ */
+ private String historyChatRecordId;
+
+ /**
+ * 医生聊天时间戳
+ */
+ private String doctorChatTimestamp;
+
+ /**
+ * 医生文本
+ */
+ private String doctorText;
+
+ /**
+ * 患者聊天时间戳
+ */
+ private String patientChatTimestamp;
+
+ /**
+ * 患者文本
+ */
+ private String patientText;
+
+ /**
+ * 状态
+ */
+ private String status;
+}
diff --git a/health-consultation-common/src/main/java/com/health/consultation/common/domain/Inquiry.java b/health-consultation-common/src/main/java/com/health/consultation/common/domain/Inquiry.java
new file mode 100644
index 0000000..541913c
--- /dev/null
+++ b/health-consultation-common/src/main/java/com/health/consultation/common/domain/Inquiry.java
@@ -0,0 +1,56 @@
+package com.health.consultation.common.domain;
+
+import lombok.Data;
+
+/**
+ * @author : [Administrator]
+ * @version : [v1.0]
+ * @description : [问诊记录]
+ * @createTime : [2023/10/26 15:58]
+ * @updateUser : [Administrator]
+ * @updateTime : [2023/10/26 15:58]
+ * @updateRemark : [新增问诊记录实体类]
+ */
+@Data
+public class Inquiry {
+
+ /**
+ * ID
+ */
+ private String id;
+
+ /**
+ * 医生ID
+ */
+ private String doctorId;
+
+ /**
+ * 患者ID
+ */
+ private String patientId;
+
+ /**
+ * 患者头像
+ */
+ private String patientAvatar;
+
+ /**
+ * 最后咨询时间
+ */
+ private String lastConsultationTime;
+
+ /**
+ * 最后聊天记录
+ */
+ private String lastChatRecord;
+
+ /**
+ * 历史聊天记录ID
+ */
+ private String historyChatRecordId;
+
+ /**
+ * 问诊状态
+ */
+ private String inquiryStatus;
+}
diff --git a/health-consultation-common/src/main/java/com/health/consultation/common/domain/req/ReqDoctorMsg.java b/health-consultation-common/src/main/java/com/health/consultation/common/domain/req/ReqDoctorMsg.java
new file mode 100644
index 0000000..3e5835b
--- /dev/null
+++ b/health-consultation-common/src/main/java/com/health/consultation/common/domain/req/ReqDoctorMsg.java
@@ -0,0 +1,13 @@
+package com.health.consultation.common.domain.req;
+
+import lombok.Data;
+
+@Data
+public class ReqDoctorMsg {
+ private String id;
+ private String msg;
+ /**
+ * 患者id
+ */
+ private String hid;
+}
diff --git a/health-consultation-common/src/main/java/com/health/consultation/common/domain/req/RequestDoctor.java b/health-consultation-common/src/main/java/com/health/consultation/common/domain/req/RequestDoctor.java
new file mode 100644
index 0000000..3fbf602
--- /dev/null
+++ b/health-consultation-common/src/main/java/com/health/consultation/common/domain/req/RequestDoctor.java
@@ -0,0 +1,21 @@
+package com.health.consultation.common.domain.req;
+
+import lombok.Data;
+
+/**
+ * @author Administrator
+ */
+@Data
+public class RequestDoctor {
+ private String id;
+ /**
+ * 医生姓名
+ */
+ private String name;
+ /**
+ * 医生职位
+ */
+ private String JobsId;
+
+
+}
diff --git a/health-consultation-common/src/main/java/com/health/consultation/common/domain/resp/Consultation.java b/health-consultation-common/src/main/java/com/health/consultation/common/domain/resp/Consultation.java
new file mode 100644
index 0000000..02268d8
--- /dev/null
+++ b/health-consultation-common/src/main/java/com/health/consultation/common/domain/resp/Consultation.java
@@ -0,0 +1,17 @@
+package com.health.consultation.common.domain.resp;
+
+import lombok.Data;
+
+/**
+ * 咨询列表
+ *
+ * @author Administrator
+ */
+@Data
+public class Consultation {
+ private String role;
+ private String text;
+ private String historyChatRecordId;
+
+
+}
diff --git a/health-consultation-common/src/main/java/com/health/consultation/common/domain/resp/HistoryDoctor.java b/health-consultation-common/src/main/java/com/health/consultation/common/domain/resp/HistoryDoctor.java
new file mode 100644
index 0000000..44bbfdd
--- /dev/null
+++ b/health-consultation-common/src/main/java/com/health/consultation/common/domain/resp/HistoryDoctor.java
@@ -0,0 +1,20 @@
+package com.health.consultation.common.domain.resp;
+
+import lombok.Data;
+
+/**
+ * 问诊聊天记录
+ *
+ * @author Administrator
+ */
+@Data
+public class HistoryDoctor {
+ private String id;//聊天记录ID,唯一标识符
+ private String sessionId;//聊天会话ID
+ private String senderId;//发送者ID
+ private String receiverId;//接收者ID
+ private String message;//聊天消息内容
+ private String timestamp;//消息发送时间戳
+
+
+}
diff --git a/health-consultation-common/src/main/java/com/health/consultation/common/utils/FormatConversionUtils.java b/health-consultation-common/src/main/java/com/health/consultation/common/utils/FormatConversionUtils.java
new file mode 100644
index 0000000..130f3af
--- /dev/null
+++ b/health-consultation-common/src/main/java/com/health/consultation/common/utils/FormatConversionUtils.java
@@ -0,0 +1,32 @@
+package com.health.consultation.common.utils;
+
+import java.time.LocalDate;
+import java.time.format.DateTimeFormatter;
+
+/**
+ * @author : [Administrator]
+ * @version : [v1.0]
+ * @description : [用来各种格式转换]
+ * @createTime : [2023/10/26 20:37]
+ * @updateUser : [Administrator]
+ * @updateTime : [2023/10/26 20:37]
+ * @updateRemark : [说明本次修改内容]
+ */
+
+public class FormatConversionUtils {
+
+
+ private static final DateTimeFormatter FORMATTER = DateTimeFormatter.ofPattern ("yyyyMMddHHmmss");
+
+ public static String formatDateTimeToString (LocalDate datetime) {
+ return datetime.format (FORMATTER);
+ }
+
+ public static LocalDate timeDateFormatter (String dateString) {
+ DateTimeFormatter formatter = DateTimeFormatter.ofPattern ("yyyyMMddHHmmss");
+ LocalDate date = LocalDate.parse (dateString, formatter);
+ return date;
+ }
+
+
+}
diff --git a/health-consultation-server/pom.xml b/health-consultation-server/pom.xml
index b205c64..e1d0ec8 100644
--- a/health-consultation-server/pom.xml
+++ b/health-consultation-server/pom.xml
@@ -32,10 +32,83 @@
+
+ org.springframework.boot
+ spring-boot-starter-web
+
com.health
health-consultation-common
3.6.3
+
+ cn.hutool
+ hutool-all
+ 5.7.20
+
+
+
+
+ com.health
+ base-system-common
+
+
+
+ com.alibaba.cloud
+ spring-cloud-starter-alibaba-nacos-discovery
+
+
+
+
+ com.alibaba.cloud
+ spring-cloud-starter-alibaba-nacos-config
+
+
+
+
+ com.alibaba.cloud
+ spring-cloud-starter-alibaba-sentinel
+
+
+
+
+ org.springframework.boot
+ spring-boot-starter-actuator
+
+
+
+
+
+ com.mysql
+ mysql-connector-j
+
+
+
+
+ com.health
+ health-common-datasource
+
+
+
+
+ com.health
+ health-common-datascope
+
+
+ org.springframework.boot
+ spring-boot-starter-websocket
+
+
+ com.alibaba
+ fastjson
+ 1.2.3
+
+
+ com.taobao.arthas
+ arthas-client
+ 3.6.7
+
+
+
diff --git a/health-consultation-server/src/main/java/com/health/consultation/server/ConsultationsMain.java b/health-consultation-server/src/main/java/com/health/consultation/server/ConsultationsMain.java
new file mode 100644
index 0000000..e8cc5e3
--- /dev/null
+++ b/health-consultation-server/src/main/java/com/health/consultation/server/ConsultationsMain.java
@@ -0,0 +1,29 @@
+package com.health.consultation.server;
+
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.cloud.openfeign.EnableFeignClients;
+
+/**
+ * @author Administrator
+ */
+@EnableFeignClients
+@SpringBootApplication
+public class ConsultationsMain {
+ public static void main (String[] args) {
+ SpringApplication.run (ConsultationsMain.class, args);
+ System.out.println ("模块启动成功" +
+ "1" +
+ "2" +
+ "3" +
+ "4" +
+ "5" +
+ "6" +
+ "7" +
+ "8" +
+ "9" +
+ "0" +
+ "-" +
+ "=");
+ }
+}
diff --git a/health-consultation-server/src/main/java/com/health/consultation/server/config/WebSocketConfig.java b/health-consultation-server/src/main/java/com/health/consultation/server/config/WebSocketConfig.java
new file mode 100644
index 0000000..5ed74e7
--- /dev/null
+++ b/health-consultation-server/src/main/java/com/health/consultation/server/config/WebSocketConfig.java
@@ -0,0 +1,17 @@
+package com.health.consultation.server.config;
+
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.web.socket.server.standard.ServerEndpointExporter;
+
+/**
+ * @author Administrator
+ */
+@Configuration
+public class WebSocketConfig {
+ @Bean
+ public ServerEndpointExporter serverEndpointExporter () {
+
+ return new ServerEndpointExporter ();
+ }
+}
diff --git a/health-consultation-server/src/main/java/com/health/consultation/server/controller/InquiryController.java b/health-consultation-server/src/main/java/com/health/consultation/server/controller/InquiryController.java
index 7b94d8e..edd53e1 100644
--- a/health-consultation-server/src/main/java/com/health/consultation/server/controller/InquiryController.java
+++ b/health-consultation-server/src/main/java/com/health/consultation/server/controller/InquiryController.java
@@ -1,24 +1,86 @@
package com.health.consultation.server.controller;
+import com.alibaba.fastjson2.JSONObject;
import com.health.common.core.domain.Result;
+import com.health.consultation.common.domain.req.ReqDoctorMsg;
+import com.health.consultation.common.domain.resp.Consultation;
+import com.health.consultation.common.domain.resp.HistoryDoctor;
+import com.health.consultation.server.service.InquiryService;
+import com.health.consultation.server.service.WebSocketServer;
+import lombok.Data;
+import lombok.experimental.Accessors;
+import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
+import java.util.List;
+
/**
* @author Administrator
+ * @Dis 查询历史列表
*/
@RestController
@RequestMapping ("/iQL")
public class InquiryController {
+ @Autowired
+ InquiryService inquiryService;
+ @Autowired
+ WebSocketServer webSocketServer;
+ /**
+ * 获取问诊列表 doctor的信息从请求取
+ *
+ * @return Consultation
+ */
+ @PostMapping ("/inquiries")
+ public Result> getDoctorInquiries () {
+ List list = inquiryService.getDoctorInquiries ();
+ return Result.success (list);
+ }
- @PostMapping ("/get")
- public Result GetAListOfHistoricalChats () {
+ /**
+ * @param userId
+ *
+ * @return com.health.common.core.domain.Result>
+ *
+ * @author zhn
+ * @description //患者咨询医生
+ * @createTime ${Date} ${Time}
+ **/
+
+ @PostMapping ("/setUpConsultation")
+ public Result> setUpConsultation (String userId) {
+ return inquiryService.setUpConsultation (userId);
- return Result.success ();
}
+ @PostMapping ("/chat")
+ public Result setMsgDoctor (@RequestBody ReqDoctorMsg reqDoctorMsg) {
+ try {
+
+ webSocketServer.sendMessage (JSONObject.toJSONString (reqDoctorMsg.getMsg ()), Long.valueOf (reqDoctorMsg.getHid ()));
+ return inquiryService.setMsgDoctor (reqDoctorMsg);
+
+ }
+ catch (Exception e) {
+ e.printStackTrace ();
+ return Result.error ();
+ }
+
+ }
+
+ @Data
+ @Accessors (chain = true)
+ public static class WebsocketResponse {
+ private String userId;
+ private String userName;
+ private int age;
+ }
+
+
+
}
diff --git a/health-consultation-server/src/main/java/com/health/consultation/server/mapper/InquiryMapper.java b/health-consultation-server/src/main/java/com/health/consultation/server/mapper/InquiryMapper.java
new file mode 100644
index 0000000..adf819f
--- /dev/null
+++ b/health-consultation-server/src/main/java/com/health/consultation/server/mapper/InquiryMapper.java
@@ -0,0 +1,40 @@
+package com.health.consultation.server.mapper;
+
+import com.health.consultation.common.domain.Chatrecord;
+import com.health.consultation.common.domain.resp.Consultation;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+/**
+ * @author : [Administrator]
+ * @version : [v1.0]
+ * @description : [一句话描述该类的功能]
+ * @createTime : [2023/10/26 16:26]
+ * @updateUser : [Administrator]
+ * @updateTime : [2023/10/26 16:26]
+ * @updateRemark : [说明本次修改内容]
+ */
+@Mapper
+public interface InquiryMapper {
+ /**
+ * @param doctorId
+ *
+ * @return java.util.List
+ *
+ * @author zhn
+ * @description //TODO
+ * @createTime ${Date} ${Time}
+ **/
+
+ List getDoctorInquiries (@Param ("doctorId") String doctorId);
+
+
+ int setUpConsultation (@Param ("doctorId") String doctorId, @Param ("userId") String userId);
+
+
+ List viewTheChatLog (@Param ("userId") String userId);
+
+
+}
diff --git a/health-consultation-server/src/main/java/com/health/consultation/server/service/InquiryService.java b/health-consultation-server/src/main/java/com/health/consultation/server/service/InquiryService.java
new file mode 100644
index 0000000..f0141f6
--- /dev/null
+++ b/health-consultation-server/src/main/java/com/health/consultation/server/service/InquiryService.java
@@ -0,0 +1,40 @@
+package com.health.consultation.server.service;
+
+import com.health.common.core.domain.Result;
+import com.health.consultation.common.domain.req.ReqDoctorMsg;
+import com.health.consultation.common.domain.resp.Consultation;
+import com.health.consultation.common.domain.resp.HistoryDoctor;
+
+import java.util.List;
+
+/**
+ * @author Administrator
+ */
+public interface InquiryService {
+ /**
+ * 医生问诊列表
+ *
+ * @return List 问诊列表
+ */
+ List getDoctorInquiries ();
+
+
+ /**
+ * 添加患者id到咨询list
+ *
+ * @param userId
+ *
+ * @return
+ */
+ Result> setUpConsultation (String userId);
+
+ /**
+ * 把医生的消息存表
+ *
+ * @param reqDoctorMsg
+ *
+ * @return
+ */
+ Result setMsgDoctor (ReqDoctorMsg reqDoctorMsg);
+
+}
diff --git a/health-consultation-server/src/main/java/com/health/consultation/server/service/WebSocketServer.java b/health-consultation-server/src/main/java/com/health/consultation/server/service/WebSocketServer.java
new file mode 100644
index 0000000..a751238
--- /dev/null
+++ b/health-consultation-server/src/main/java/com/health/consultation/server/service/WebSocketServer.java
@@ -0,0 +1,152 @@
+package com.health.consultation.server.service;
+
+import lombok.extern.log4j.Log4j2;
+import org.springframework.stereotype.Component;
+
+import javax.websocket.*;
+import javax.websocket.server.PathParam;
+import javax.websocket.server.ServerEndpoint;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+import java.util.concurrent.ConcurrentHashMap;
+import java.util.concurrent.CopyOnWriteArraySet;
+
+/**
+ * @author Administrator
+ */
+@Log4j2
+@Component
+@ServerEndpoint ("/webSocket/1")
+public class WebSocketServer {
+ /**
+ * 为了保存在线用户信息,在方法中新建一个list存储一下【实际项目依据复杂度,可以存储到数据库或者缓存】
+ */
+ private final static List SESSIONS = Collections.synchronizedList (new ArrayList<> ());
+ private static int onlineCount = 0;
+ private static CopyOnWriteArraySet webSocketSet = new CopyOnWriteArraySet<> ();
+ /**
+ * concurrent包的线程安全set,用来存放每个客户端对应的MyWebSocket对象
+ */
+ private static ConcurrentHashMap webSocketMap = new ConcurrentHashMap ();
+ private Session session;
+ private String userId;
+
+ /**
+ * 获取当前连接数
+ *
+ * @return
+ */
+ public static synchronized int getOnlineCount () {
+ return onlineCount;
+ }
+
+ @OnOpen
+ public void onOpen (Session session, @PathParam ("userId") String userId) {
+ this.session = session;
+ this.userId = userId;
+ SESSIONS.add (session);
+ if (webSocketMap.containsKey (userId)) {
+ webSocketMap.remove (userId);
+ webSocketMap.put (userId, this);
+ }
+ else {
+ webSocketMap.put (userId, this);
+ addOnlineCount ();
+ }
+ // log.info("【websocket消息】有新的连接, 总数:{}", webSocketSet.size());
+ log.info ("[连接ID:{}] 建立连接, 当前连接数:{}", this.userId, webSocketMap.size ());
+ }
+
+ /**
+ * 当前连接数加一
+ */
+ public static synchronized void addOnlineCount () {
+ WebSocketServer.onlineCount++;
+ }
+
+ /**
+ * 断开连接
+ */
+ @OnClose
+ public void onClose () {
+ webSocketSet.remove (this);
+ if (webSocketMap.containsKey (userId)) {
+ webSocketMap.remove (userId);
+ subOnlineCount ();
+ }
+ // log.info("【websocket消息】连接断开, 总数:{}", webSocketSet.size());
+ log.info ("[连接ID:{}] 断开连接, 当前连接数:{}", userId, webSocketMap.size ());
+ }
+
+ /**
+ * 当前连接数减一
+ */
+ public static synchronized void subOnlineCount () {
+ WebSocketServer.onlineCount--;
+ }
+
+ /**
+ * 发送错误
+ *
+ * @param session
+ * @param error
+ */
+ @OnError
+ public void onError (Session session, Throwable error) {
+ log.info ("[连接ID:{}] 错误原因:{}", this.userId, error.getMessage ());
+ error.printStackTrace ();
+ }
+
+ /**
+ * 收到消息
+ *
+ * @param message
+ */
+ @OnMessage
+ public void onMessage (String message) {
+ // log.info("【websocket消息】收到客户端发来的消息:{}", message);
+ log.info ("[连接ID:{}] 收到消息:{}", this.userId, message);
+ }
+
+ /**
+ * 发送消息
+ *
+ * @param message
+ * @param userId
+ */
+ public void sendMessage (String message, Long userId) {
+ WebSocketServer webSocketServer = webSocketMap.get (String.valueOf (userId));
+ if (webSocketServer != null) {
+ log.info ("【websocket消息】推送消息, message={}", message);
+ try {
+ webSocketServer.session.getBasicRemote ().sendText (message);
+ }
+ catch (Exception e) {
+ e.printStackTrace ();
+ log.error ("[连接ID:{}] 发送消息失败, 消息:{}", this.userId, message, e);
+ }
+ }
+ }
+
+ /**
+ * 群发消息
+ *
+ * @param message
+ */
+ public void sendMassMessage (String message) {
+ try {
+ for (Session session : SESSIONS) {
+ if (session.isOpen ()) {
+ session.getBasicRemote ().sendText (message);
+ log.info ("[连接ID:{}] 发送消息:{}", session.getRequestParameterMap ().get ("userId"), message);
+ }
+ }
+ }
+ catch (Exception e) {
+ e.printStackTrace ();
+ }
+ }
+
+
+}
diff --git a/health-consultation-server/src/main/java/com/health/consultation/server/service/impl/InquiryServiceImpl.java b/health-consultation-server/src/main/java/com/health/consultation/server/service/impl/InquiryServiceImpl.java
new file mode 100644
index 0000000..9832d75
--- /dev/null
+++ b/health-consultation-server/src/main/java/com/health/consultation/server/service/impl/InquiryServiceImpl.java
@@ -0,0 +1,90 @@
+package com.health.consultation.server.service.impl;
+
+
+import com.health.common.core.domain.Result;
+import com.health.common.redis.service.RedisService;
+import com.health.consultation.common.domain.Chatrecord;
+import com.health.consultation.common.domain.req.ReqDoctorMsg;
+import com.health.consultation.common.domain.resp.Consultation;
+import com.health.consultation.common.domain.resp.HistoryDoctor;
+import com.health.consultation.server.mapper.InquiryMapper;
+import com.health.consultation.server.service.InquiryService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+/**
+ * @author Administrator
+ */
+@Service
+public class InquiryServiceImpl implements InquiryService {
+ @Autowired
+ InquiryMapper inquiryMapper;
+ @Autowired
+ RedisService redisService;
+
+
+ /**
+ * 医生问诊列表
+ *
+ * @return List 问诊列表
+ */
+ @Override
+ public List getDoctorInquiries () {
+ //获取请求的医生信息(携带科室+个人信息+权限信息)
+ List cacheList = redisService.getCacheList ("1chat");
+ for (Consultation consultation : cacheList) {
+
+ }
+ String doctorId = "";
+
+ if (cacheList.isEmpty ()) {
+ List list = inquiryMapper.getDoctorInquiries (doctorId);
+ redisService.setCacheList ("1chat", list);
+ return list;
+ }
+ return cacheList;
+ }
+
+ /**
+ * 添加患者id到咨询list
+ *
+ * @param userId
+ *
+ * @return
+ */
+ @Override
+ public Result> setUpConsultation (String userId) {
+ //对医生角色权限判断,没权限直接返回提示入驻
+ String doctorId = "1";
+ //查看咨询列表是否有这个患者(redis查询)
+ List list = inquiryMapper.viewTheChatLog (userId);
+ if (list.isEmpty ()) {
+ //没有就添加到咨询列表(mysql=>redis添加redis的key:医生名+患者id+患者名)
+ int i = inquiryMapper.setUpConsultation (doctorId, userId);
+ }
+
+
+ //有就返回最后聊天的记录+结束时间(redis取值)
+ // Todo 扣除患者h币+
+
+ return null;
+ }
+
+ /**
+ * 把医生的消息存表
+ *
+ * @param reqDoctorMsg
+ *
+ * @return
+ */
+ @Override
+ public Result setMsgDoctor (ReqDoctorMsg reqDoctorMsg) {
+
+ // TODO 聊天记录存到mysql=>到redis
+
+
+ return Result.success ();
+ }
+}
diff --git a/health-consultation-server/src/main/resources/.idea/.gitignore b/health-consultation-server/src/main/resources/.idea/.gitignore
new file mode 100644
index 0000000..35410ca
--- /dev/null
+++ b/health-consultation-server/src/main/resources/.idea/.gitignore
@@ -0,0 +1,8 @@
+# 默认忽略的文件
+/shelf/
+/workspace.xml
+# 基于编辑器的 HTTP 客户端请求
+/httpRequests/
+# Datasource local storage ignored files
+/dataSources/
+/dataSources.local.xml
diff --git a/health-consultation-server/src/main/resources/.idea/inspectionProfiles/Project_Default.xml b/health-consultation-server/src/main/resources/.idea/inspectionProfiles/Project_Default.xml
new file mode 100644
index 0000000..8d66637
--- /dev/null
+++ b/health-consultation-server/src/main/resources/.idea/inspectionProfiles/Project_Default.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/health-consultation-server/src/main/resources/.idea/misc.xml b/health-consultation-server/src/main/resources/.idea/misc.xml
new file mode 100644
index 0000000..0bb5658
--- /dev/null
+++ b/health-consultation-server/src/main/resources/.idea/misc.xml
@@ -0,0 +1,15 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/health-consultation-server/src/main/resources/.idea/modules.xml b/health-consultation-server/src/main/resources/.idea/modules.xml
new file mode 100644
index 0000000..e878207
--- /dev/null
+++ b/health-consultation-server/src/main/resources/.idea/modules.xml
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/health-consultation-server/src/main/resources/.idea/vcs.xml b/health-consultation-server/src/main/resources/.idea/vcs.xml
new file mode 100644
index 0000000..4fce1d8
--- /dev/null
+++ b/health-consultation-server/src/main/resources/.idea/vcs.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/health-consultation-server/src/main/resources/bootstrap.yml b/health-consultation-server/src/main/resources/bootstrap.yml
new file mode 100644
index 0000000..0f127ae
--- /dev/null
+++ b/health-consultation-server/src/main/resources/bootstrap.yml
@@ -0,0 +1,29 @@
+# Tomcat
+server:
+ port: 8083
+
+# Spring
+spring:
+ application:
+ # 应用名称
+ name: health-consultation-server
+ profiles:
+ # 环境配置
+ active: dev
+ cloud:
+ nacos:
+ discovery:
+ # 服务注册地址
+ server-addr: 10.100.1.5:8848
+
+ config:
+ # 配置中心地址
+ server-addr: 10.100.1.5:8848
+
+ # 配置文件格式
+ file-extension: yml
+ # 共享配置
+ shared-configs:
+ - application-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension}
+
+
diff --git a/health-consultation-server/src/main/resources/mapper/InquiryMapper.xml b/health-consultation-server/src/main/resources/mapper/InquiryMapper.xml
new file mode 100644
index 0000000..1022aa2
--- /dev/null
+++ b/health-consultation-server/src/main/resources/mapper/InquiryMapper.xml
@@ -0,0 +1,29 @@
+
+
+
+
+ select *
+ from inquiry
+
+
+ INSERT INTO `health-consultation`.`inquiry` (`doctor_id`, `patient_id`)
+ VALUES (#{doctorId}, #{userId});
+
+
+
+
+
+
+
+
diff --git a/pom.xml b/pom.xml
index 3ec4818..ccf1761 100644
--- a/pom.xml
+++ b/pom.xml
@@ -17,11 +17,13 @@
health-modules
3.6.3
+
17
17
UTF-8
+
dragon-public
@@ -29,6 +31,7 @@
http://10.100.1.7:8081/repository/maven-public/
+
dragon-release
@@ -36,4 +39,5 @@
http://10.100.1.7:8081/repository/maven-releases/
+