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/ +