Forráskód Böngészése

add 医生咨询设置

18339543638 3 éve
szülő
commit
062ef02024
20 módosított fájl, 500 hozzáadás és 20 törlés
  1. 15 0
      nb-common/config-common/src/main/java/com/nb/common/config/mybatisplus/handler/IntegerListTypeHandler.java
  2. 38 0
      nb-im/src/main/java/com/nb/im/listener/ImPatientInfoListener.java
  3. 2 1
      nb-service-api/app-assistant-api/src/main/java/com/nb/app/assistant/api/entity/AssistantUserBindEntity.java
  4. 2 1
      nb-service-api/app-assistant-api/src/main/java/com/nb/app/assistant/api/enums/BindEnum.java
  5. 4 2
      nb-service-api/app-assistant-api/src/main/java/com/nb/app/assistant/api/feign/IAssistantUserBindClient.java
  6. 4 3
      nb-service-api/app-msg-api/src/main/java/com/nb/app/msg/enums/MsgEnum.java
  7. 48 0
      nb-service-api/web-service-api/src/main/java/com/nb/web/api/event/PatientInfoEvent.java
  8. 29 0
      nb-service/app-assistant/src/main/java/com/nb/app/assistant/controller/PatientOperationController.java
  9. 37 0
      nb-service/app-assistant/src/main/java/com/nb/app/assistant/listener/AssitPatientInfoListener.java
  10. 58 5
      nb-service/app-assistant/src/main/java/com/nb/app/assistant/service/LocalAssistantUserBindService.java
  11. 0 4
      nb-service/app-assistant/src/main/java/com/nb/app/assistant/service/dto/AssistPatientResult.java
  12. 5 4
      nb-service/app-doctor/src/main/java/com/nb/app/doctor/controller/PatientMonitorController.java
  13. 61 0
      nb-service/app-doctor/src/main/java/com/nb/app/doctor/controller/UserController.java
  14. 4 0
      nb-service/app-doctor/src/main/java/com/nb/app/doctor/controller/vo/InviteCodeVo.java
  15. 48 0
      nb-service/app-doctor/src/main/java/com/nb/app/doctor/entity/AppUserConsultConfigEntity.java
  16. 49 0
      nb-service/app-doctor/src/main/java/com/nb/app/doctor/entity/AppUserReplyEntity.java
  17. 16 0
      nb-service/app-doctor/src/main/java/com/nb/app/doctor/mapper/AppUserConsultConfigMapper.java
  18. 16 0
      nb-service/app-doctor/src/main/java/com/nb/app/doctor/mapper/AppUserReplyMapper.java
  19. 32 0
      nb-service/app-doctor/src/main/java/com/nb/app/doctor/service/LocalUserConsultConfigService.java
  20. 32 0
      nb-service/app-doctor/src/main/java/com/nb/app/doctor/service/LocalUserReplyService.java

+ 15 - 0
nb-common/config-common/src/main/java/com/nb/common/config/mybatisplus/handler/IntegerListTypeHandler.java

@@ -0,0 +1,15 @@
+package com.nb.common.config.mybatisplus.handler;
+
+/**
+ * @author lifang
+ * @version 1.0.0
+ * @ClassName StringListTypeHandler.java
+ * @Description TODO
+ * @createTime 2022年08月20日 14:32:00
+ */
+public class IntegerListTypeHandler extends ListTypeHandler<Integer> {
+    @Override
+    protected Class specificType() {
+        return Integer.class;
+    }
+}

+ 38 - 0
nb-im/src/main/java/com/nb/im/listener/ImPatientInfoListener.java

@@ -0,0 +1,38 @@
+package com.nb.im.listener;
+
+import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
+import com.nb.im.entity.ImRoomEntity;
+import com.nb.im.enums.ImStatusEnum;
+import com.nb.im.service.LocalImRoomService;
+import com.nb.web.api.event.PatientInfoEvent;
+import lombok.AllArgsConstructor;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.context.event.EventListener;
+import org.springframework.scheduling.annotation.Async;
+
+/**
+ * @author lifang
+ * @version 1.0.0
+ * @ClassName PatientInfoListener.java
+ * @Description TODO
+ * @createTime 2022年08月20日 17:15:00
+ */
+@Configuration
+@AllArgsConstructor
+public class ImPatientInfoListener {
+    private final LocalImRoomService roomService;
+
+    @EventListener
+    @Async
+    public void patientInfoIm(PatientInfoEvent patientInfoEvent){
+        String patientId = patientInfoEvent.getPatientId();
+
+        roomService.update(new UpdateWrapper<ImRoomEntity>()
+                .lambda().eq(ImRoomEntity::getPatientId,patientId)
+                .eq(ImRoomEntity::getStatus, ImStatusEnum.SUCCESS)
+                .set(ImRoomEntity::getPatientName,patientInfoEvent.getPatientName())
+                .set(ImRoomEntity::getPatientAge,patientInfoEvent.getPatientAge())
+                .set(ImRoomEntity::getPatientSex,patientInfoEvent.getPatientSex())
+        );
+    }
+}

+ 2 - 1
nb-service-api/app-assistant-api/src/main/java/com/nb/app/assistant/api/entity/AssistantUserBindEntity.java

@@ -2,6 +2,7 @@ package com.nb.app.assistant.api.entity;
 
 import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableName;
+import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
 import com.nb.app.assistant.api.enums.ApplyEnum;
 import com.nb.app.assistant.api.enums.BindEnum;
 import com.nb.core.entity.GenericEntity;
@@ -83,6 +84,6 @@ public class AssistantUserBindEntity extends GenericEntity<String> {
     private String doctorName;
 
     @ApiModelProperty(hidden = true)
-    @TableField(exist = false)
+    @JsonIgnoreProperties
     private String inviteCode;
 }

+ 2 - 1
nb-service-api/app-assistant-api/src/main/java/com/nb/app/assistant/api/enums/BindEnum.java

@@ -21,7 +21,8 @@ public enum  BindEnum  implements IEnum<Integer> {
     SUCCESS(1,"绑定成功"),
     REFUSE(2,"拒绝"),
     AUTO_LIFTED(3,"自动断开"),
-    MANUAL_LIFTED(4,"手动断开")
+    ASSIST_MANUAL_LIFTED(4,"看护人员手动断开"),
+    DOCTOR_MANUAL_LIFTED(5,"医生手动断开")
 ;
     @Getter
     @ApiModelProperty("报警编码")

+ 4 - 2
nb-service-api/app-assistant-api/src/main/java/com/nb/app/assistant/api/feign/IAssistantUserBindClient.java

@@ -38,10 +38,12 @@ public interface IAssistantUserBindClient {
      * @author lifang
      * @date 2022/8/18 14:03
      * @param bindId
-     * @param valueOf
+     * @param doctorId 医生解除绑定
+     * @param  assistId 患者解除绑定
+     * assistId与doctorId不可同时为空或同时不为空
      * @return boolean
      */
-    boolean liftBind(String bindId, String valueOf);
+    boolean liftBind(String bindId, String doctorId,String assistId);
 
     /**
      * 描述: 判断该医院的住院号是否已被看护

+ 4 - 3
nb-service-api/app-msg-api/src/main/java/com/nb/app/msg/enums/MsgEnum.java

@@ -22,11 +22,12 @@ public enum  MsgEnum  implements IEnum<Integer> {
     CONSUL(0,"咨询申请"),
     CODE_BIND_NOTIFY(1,"邀请码绑定申请"),
     MANUAL_BIND_NOTIFY(2,"用户绑定申请"),
-    BIND_SUCCESS(3,"绑定申请成功"),
-    BIND_FAIL(4,"绑定申请失败"),
+    BIND_SUCCESS(3,"申请成功"),
+    BIND_FAIL(4,"申请失败"),
     PAIN_CALL(5,"疼痛一键呼叫"),
     REGISTER(6,"新用户注册"),
-    ASSIST_EVAL(7,"疼痛评估")
+    ASSIST_EVAL(7,"疼痛评估"),
+    NORMAL(8,"正常消息"),
     ;
     @Getter
     @ApiModelProperty("枚举编码")

+ 48 - 0
nb-service-api/web-service-api/src/main/java/com/nb/web/api/event/PatientInfoEvent.java

@@ -0,0 +1,48 @@
+package com.nb.web.api.event;
+
+import com.nb.core.enums.SexEnum;
+import lombok.Getter;
+import lombok.experimental.Accessors;
+import org.springframework.context.ApplicationEvent;
+
+/**
+ * @author lifang
+ * @version 1.0.0
+ * @ClassName PatientInfoEvent.java
+ * @Description 病人信息事件
+ * @createTime 2022年08月20日 17:11:00
+ */
+@Getter
+@Accessors
+public class PatientInfoEvent extends ApplicationEvent {
+    /*
+     * 病人id
+     */
+    private String patientId;
+
+    /*
+     * 住院号
+     */
+    private String patientCode;
+
+    /*
+     * 病人姓名
+     */
+    private String patientName;
+
+    /*
+     * 病人性别
+     */
+    private SexEnum patientSex;
+
+    /*
+     * 病人年龄
+     */
+    private String patientAge;
+
+    public PatientInfoEvent(Object source,String patientId, String patientCode) {
+        super(source);
+        this.patientId=patientId;
+        this.patientCode=patientCode;
+    }
+}

+ 29 - 0
nb-service/app-assistant/src/main/java/com/nb/app/assistant/controller/PatientOperationController.java

@@ -17,6 +17,7 @@ import com.nb.web.api.feign.IPatientClient;
 import com.nb.web.api.feign.result.PatientByInviteCodeResult;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
+import javassist.compiler.ast.BinExpr;
 import lombok.AllArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.validation.annotation.Validated;
@@ -118,6 +119,34 @@ public class PatientOperationController {
         return R.success( patientClient.getClinicId(patientId));
     }
 
+    @PostMapping("/lift/{bindId}")
+    @ApiOperation(value = "与病人解除绑定")
+    public R<Boolean> lift(@PathVariable("bindId") String bindId) {
+        return R.success(userBindService.liftBind(bindId,null,String.valueOf(SecurityUtil.getId())));
+    }
+
+
+    @PostMapping("/default/{bindId}")
+    @ApiOperation(value = "设置默认看护")
+    public R<Boolean> setDefault(@PathVariable("bindId") String bindId) {
+        judgeBindIsSuccess(bindId);
+        return R.success(userBindService.setDefault(bindId,String.valueOf(SecurityUtil.getId())));
+    }
+
+
+    /**
+     * 描述:判断所选看护状态是否绑定成功
+     * @author lifang
+     * @date 2022/8/20 16:00
+     * @param bindId
+     * @return void
+     */
+    private void judgeBindIsSuccess(String bindId){
+        AssistantUserBindEntity userBind = userBindService.findById(bindId);
+        if(!BindEnum.SUCCESS.equals(userBind.getStatus())){
+            throw new CustomException("该用户尚未绑定所选患者");
+        }
+    }
 
     /**
      * 描述: 判断患者是否已被绑定

+ 37 - 0
nb-service/app-assistant/src/main/java/com/nb/app/assistant/listener/AssitPatientInfoListener.java

@@ -0,0 +1,37 @@
+package com.nb.app.assistant.listener;
+
+import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
+import com.nb.app.assistant.api.entity.AssistantUserBindEntity;
+import com.nb.app.assistant.api.enums.BindEnum;
+import com.nb.app.assistant.service.LocalAssistantUserBindService;
+import com.nb.web.api.event.PatientInfoEvent;
+import lombok.AllArgsConstructor;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.context.event.EventListener;
+import org.springframework.scheduling.annotation.Async;
+
+/**
+ * @author lifang
+ * @version 1.0.0
+ * @ClassName PatientInfoListener.java
+ * @Description TODO
+ * @createTime 2022年08月20日 17:15:00
+ */
+@Configuration
+@AllArgsConstructor
+public class AssitPatientInfoListener {
+    private final LocalAssistantUserBindService userBindService;
+
+    @EventListener
+    @Async
+    public void patientInfoAssistf(PatientInfoEvent patientInfoEvent){
+        String patientId = patientInfoEvent.getPatientId();
+        userBindService.update(new UpdateWrapper<AssistantUserBindEntity>()
+                .lambda().eq(AssistantUserBindEntity::getPatientId,patientId)
+                .eq(AssistantUserBindEntity::getStatus, BindEnum.SUCCESS)
+                .set(AssistantUserBindEntity::getPatientName,patientInfoEvent.getPatientName())
+                .set(AssistantUserBindEntity::getPatientAge,patientInfoEvent.getPatientAge())
+                .set(AssistantUserBindEntity::getPatientSex,patientInfoEvent.getPatientSex())
+        );
+    }
+}

+ 58 - 5
nb-service/app-assistant/src/main/java/com/nb/app/assistant/service/LocalAssistantUserBindService.java

@@ -146,8 +146,8 @@ public class LocalAssistantUserBindService extends BaseService<AssistantUserBind
 
     @Override
     public boolean handleBindResult(HandleBindResult source) {
-        //todo 发送处理结果信息
         AssistantUserBindEntity userBind = this.findById(source.getBindId());
+        Boolean isDefault=false;
         if(source.getAgree()){
             //判断是否重复绑定
             AssistantUserBindEntity existBind = this.getOne(new QueryWrapper<AssistantUserBindEntity>()
@@ -158,29 +158,65 @@ public class LocalAssistantUserBindService extends BaseService<AssistantUserBind
             if(existBind!=null){
                 throw new CustomException("该用户已被看护,请勿重复绑定");
             }
+            //判断当前看护是否可设置为默认看护
+            String assistId = userBind.getAssistId();
+            AssistantUserBindEntity defaultAssistant = this.getOne(new QueryWrapper<AssistantUserBindEntity>()
+                    .lambda()
+                    .eq(AssistantUserBindEntity::getAssistId, assistId)
+                    .eq(AssistantUserBindEntity::getDefault_,true)
+                    .eq(AssistantUserBindEntity::getStatus, BindEnum.SUCCESS)
+                    .last("limit 1"));
+            //当没有默认看护时,设置当前看护为默认看护
+            isDefault=defaultAssistant==null;
         }
         boolean result = this.update(new UpdateWrapper<AssistantUserBindEntity>()
                 .lambda()
                 .eq(AssistantUserBindEntity::getId, source.getBindId())
                 .set(AssistantUserBindEntity::getDoctorId, source.getDoctorId())
                 .set(AssistantUserBindEntity::getStatus, source.getAgree() ? BindEnum.SUCCESS : BindEnum.REFUSE)
+                .set(source.getAgree(),AssistantUserBindEntity::getDefault_,isDefault)
                 .set(!source.getAgree(), AssistantUserBindEntity::getRefuseReason, source.getRefuseReason()));
         if(result&&source.getAgree()&&StrUtil.isNotEmpty(userBind.getInviteCode())){
             //绑定成功后删除邀请码
             patientClient.delInviteCode(userBind.getInviteCode());
         }
+
+        SpringUtil.publishEvent(new SaveMsgEvent(
+                this,
+                MsgBean.builder()
+                        .msgType(source.getAgree()?
+                                MsgEnum.BIND_SUCCESS:MsgEnum.BIND_FAIL)
+                        .payload(source.getBindId())
+                        .senderId(source.getDoctorId())
+                        .senderNickname(source.getDoctorName())
+                        .patientId(userBind.getPatientId())
+                        .patientCode(userBind.getPatientCode())
+                        .patientName(userBind.getPatientName())
+                        .patientAge(userBind.getPatientAge())
+                        .patientSex(userBind.getPatientSex())
+                        .receiverId(userBind.getAssistId())
+                        .receiverName(userBind.getAssistNickname())
+                        .extend(userBind.getInviteCode())
+                        .sys(false)
+                        .build()
+        ));
         //查询是否存在默认看护
         return result;
     }
 
     @Override
-    public boolean liftBind(String bindId, String doctorId) {
+    public boolean liftBind(String bindId, String doctorId,String assistId) {
+        if((StrUtil.isNotEmpty(doctorId)&&StrUtil.isNotEmpty(assistId))
+                ||((StrUtil.isEmpty(doctorId)&&StrUtil.isEmpty(assistId)))){
+            throw new CustomException("医生id和看护人员id不可同时为空或同时不为空");
+        }
         boolean result = this
                 .update(new UpdateWrapper<AssistantUserBindEntity>()
                         .lambda()
                         .eq(AssistantUserBindEntity::getId, bindId)
-                        .eq(AssistantUserBindEntity::getDoctorId, doctorId)
-                        .set(AssistantUserBindEntity::getStatus, BindEnum.MANUAL_LIFTED));
+                        .eq(StrUtil.isNotEmpty(doctorId),AssistantUserBindEntity::getDoctorId, doctorId)
+                        .eq(StrUtil.isNotEmpty(assistId),AssistantUserBindEntity::getAssistId, assistId)
+                        .set(AssistantUserBindEntity::getStatus,StrUtil.isEmpty(doctorId)? BindEnum.ASSIST_MANUAL_LIFTED: BindEnum.DOCTOR_MANUAL_LIFTED));
         if (result) {
             //todo 发送断开消息
         }
@@ -193,6 +229,7 @@ public class LocalAssistantUserBindService extends BaseService<AssistantUserBind
                 .lambda()
                 .eq(AssistantUserBindEntity::getTenantId,tenantId)
                 .eq(AssistantUserBindEntity::getPatientCode,patientCode)
+                .eq(AssistantUserBindEntity::getStatus,BindEnum.SUCCESS)
                 .last("limit 1"))!=null;
     }
 
@@ -207,6 +244,22 @@ public class LocalAssistantUserBindService extends BaseService<AssistantUserBind
         return BeanUtil.copyToList(list(new QueryWrapper<AssistantUserBindEntity>()
                 .lambda()
                 .eq(AssistantUserBindEntity::getAssistId,assistId)
-                .eq(AssistantUserBindEntity::getStatus,BindEnum.SUCCESS)),AssistPatientResult.class);
+                .eq(AssistantUserBindEntity::getStatus,BindEnum.SUCCESS)
+                .orderByDesc(AssistantUserBindEntity::getDefault_)
+                .orderByDesc(AssistantUserBindEntity::getCreateTime)),AssistPatientResult.class)
+                ;
+    }
+
+    @Transactional(rollbackFor = Exception.class)
+    public boolean setDefault(String bindId, String assistId) {
+        this.update(new UpdateWrapper<AssistantUserBindEntity>()
+                .lambda()
+                .eq(AssistantUserBindEntity::getAssistId,assistId)
+                .set(AssistantUserBindEntity::getDefault_,false));
+        this.update(new UpdateWrapper<AssistantUserBindEntity>()
+                .lambda()
+                .eq(AssistantUserBindEntity::getId,bindId)
+                .set(AssistantUserBindEntity::getDefault_,true));
+        return true;
     }
 }

+ 0 - 4
nb-service/app-assistant/src/main/java/com/nb/app/assistant/service/dto/AssistPatientResult.java

@@ -1,10 +1,6 @@
 package com.nb.app.assistant.service.dto;
 
-import com.baomidou.mybatisplus.annotation.TableField;
-import com.nb.app.assistant.api.enums.ApplyEnum;
-import com.nb.app.assistant.api.enums.BindEnum;
 import com.nb.core.enums.SexEnum;
-import com.nb.web.api.enums.ClinicManageEnum;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;

+ 5 - 4
nb-service/app-doctor/src/main/java/com/nb/app/doctor/controller/PatientMonitorController.java

@@ -22,6 +22,7 @@ import io.swagger.annotations.ApiOperation;
 import io.swagger.annotations.ApiParam;
 import lombok.AllArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
+import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.*;
 
 import java.util.*;
@@ -84,7 +85,7 @@ public class PatientMonitorController {
 
     @PostMapping("/invite/code")
     @ApiOperation(value = "患者看护邀请码,默认失效失效(7天)")
-    public R<InviteCodeResult> inviteCode(@RequestAttribute("tenantId")@ApiParam(hidden = true) String tenantId, @RequestBody InviteCodeVo resource) {
+    public R<InviteCodeResult> inviteCode(@RequestAttribute("tenantId")@ApiParam(hidden = true) String tenantId, @RequestBody@Validated InviteCodeVo resource) {
         if(userBindClient.haveBind(resource.getPatientCode(),tenantId)){
             throw new CustomException("该病人已被看护");
         }
@@ -95,14 +96,14 @@ public class PatientMonitorController {
 
     @PostMapping("/agree/bind")
     @ApiOperation(value = "处理看护人发起的看护请求")
-    public R<Boolean> agreeBindUser(@RequestBody HandleBindResult source) {
+    public R<Boolean> agreeBindUser(@RequestBody@Validated HandleBindResult source) {
         return R.success(userBindClient.handleBindResult(source));
     }
 
 
     @PostMapping("/lift/{bindId}")
     @ApiOperation(value = "与病人解除绑定")
-    public R<Boolean> list(@PathVariable("bindId") String bindId) {
-        return R.success(userBindClient.liftBind(bindId,String.valueOf(SecurityUtil.getId())));
+    public R<Boolean> lift(@PathVariable("bindId") String bindId) {
+        return R.success(userBindClient.liftBind(bindId,String.valueOf(SecurityUtil.getId()),null));
     }
 }

+ 61 - 0
nb-service/app-doctor/src/main/java/com/nb/app/doctor/controller/UserController.java

@@ -0,0 +1,61 @@
+package com.nb.app.doctor.controller;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.nb.app.doctor.entity.AppUserConsultConfigEntity;
+import com.nb.app.doctor.entity.AppUserReplyEntity;
+import com.nb.app.doctor.service.LocalUserConsultConfigService;
+import com.nb.app.doctor.service.LocalUserReplyService;
+import com.nb.core.entity.GenericEntity;
+import com.nb.core.result.R;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.AllArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+
+/**
+ * @author lifang
+ * @version 1.0.0
+ * @ClassName UserController.java
+ * @Description
+ * @createTime 2022年08月22日 15:03:00
+ */
+@RestController
+@AllArgsConstructor
+@RequestMapping("/app/user")
+@Api(tags = "医生设置管理")
+@Slf4j
+public class UserController {
+    private final LocalUserConsultConfigService consultConfigService;
+    private final LocalUserReplyService replyService;
+
+
+    @PostMapping("/reply/{userId}")
+    @ApiOperation("查询医生回复设置")
+    public R<AppUserReplyEntity> getReply(@PathVariable("userId") String userId){
+        return R.success(replyService.getOne(new QueryWrapper<AppUserReplyEntity>().lambda()
+                .eq(AppUserReplyEntity::getUserId,userId)));
+    }
+
+
+    @PostMapping("/consult/{userId}")
+    @ApiOperation("查询医生咨询设置")
+    public R<AppUserConsultConfigEntity> getConsultConfig(@PathVariable("userId") String userId){
+        return R.success(consultConfigService.getOne(new QueryWrapper<AppUserConsultConfigEntity>().lambda()
+                .eq(AppUserConsultConfigEntity::getUserId,userId)));
+    }
+
+    @PostMapping("/reply/edit")
+    @ApiOperation("修改医生回复设置")
+    public R<Boolean> editReply(@RequestBody@Validated(GenericEntity.Update.class)  AppUserReplyEntity source){
+        return R.success(replyService.updateById(source));
+    }
+
+    @PostMapping("/consult/edit")
+    @ApiOperation("修改医生咨询设置")
+    public R<Boolean> editConsult(@RequestBody@Validated(GenericEntity.Update.class) AppUserConsultConfigEntity source){
+        return R.success(consultConfigService.updateById(source));
+    }
+
+}

+ 4 - 0
nb-service/app-doctor/src/main/java/com/nb/app/doctor/controller/vo/InviteCodeVo.java

@@ -5,6 +5,8 @@ import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
+import javax.validation.constraints.NotNull;
+
 /**
  * @author lifang
  * @version 1.0.0
@@ -16,7 +18,9 @@ import lombok.Data;
 @ApiModel("邀请码")
 public class InviteCodeVo {
     @ApiModelProperty("住院号")
+    @NotNull(message = "住院号不能为空")
     private String patientCode;
     @ApiModelProperty(value = "监护位置",allowableValues = "0(院内管理) 1(居家管理)")
+    @NotNull(message = "监护位置不能为空")
     private ClinicManageEnum manage;
 }

+ 48 - 0
nb-service/app-doctor/src/main/java/com/nb/app/doctor/entity/AppUserConsultConfigEntity.java

@@ -0,0 +1,48 @@
+package com.nb.app.doctor.entity;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
+import com.nb.common.config.mybatisplus.handler.IntegerListTypeHandler;
+import com.nb.core.entity.GenericEntity;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.NoArgsConstructor;
+import lombok.ToString;
+
+import javax.validation.constraints.NotNull;
+import java.util.*;
+/**
+ * @author lifang
+ * @version 1.0.0
+ * @ClassName AppUserConsultConfigEntity.java
+ * @Description TODO
+ * @createTime 2022年08月22日 09:30:00
+ */
+@EqualsAndHashCode(callSuper = true)
+@Data
+@TableName(value = "app_user_consult_config",autoResultMap = true)
+@ApiModel(value="app医生用户咨询配置")
+@ToString
+@NoArgsConstructor
+public class AppUserConsultConfigEntity extends GenericEntity<String> {
+    @ApiModelProperty(value = "咨询服务是否开启")
+    private Boolean consult;
+
+    @ApiModelProperty(" 是否自动结束咨询服务")
+    private Boolean autoFinishConsult;
+
+    @ApiModelProperty(value = "用户id",required = true,hidden = true)
+    @NotNull(message = "医生id不能为空",groups = Insert.class)
+    @JsonIgnoreProperties
+    private String userId;
+
+    @ApiModelProperty("是否开启勿扰")
+    private Boolean noDisturb;
+
+    @ApiModelProperty("勿扰时间")
+    @TableField(typeHandler = IntegerListTypeHandler.class)
+    private List<Integer> noDisturbTime;
+}

+ 49 - 0
nb-service/app-doctor/src/main/java/com/nb/app/doctor/entity/AppUserReplyEntity.java

@@ -0,0 +1,49 @@
+package com.nb.app.doctor.entity;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
+import com.nb.common.config.mybatisplus.handler.StringListTypeHandler;
+import com.nb.core.entity.GenericEntity;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.NoArgsConstructor;
+import lombok.ToString;
+import org.hibernate.validator.constraints.Length;
+
+import javax.validation.constraints.NotNull;
+import java.util.*;
+/**
+ * @author lifang
+ * @version 1.0.0
+ * @ClassName AppUserReplyEntity.java
+ * @Description TODO
+ * @createTime 2022年08月22日 11:35:00
+ */
+@EqualsAndHashCode(callSuper = true)
+@Data
+@TableName(value = "app_user_reply",autoResultMap = true)
+@ApiModel(value="app医生用户回复配置")
+@ToString
+@NoArgsConstructor
+public class AppUserReplyEntity extends GenericEntity<String> {
+    @ApiModelProperty(value = "用户id",required = true,hidden =true )
+    @NotNull(message = "医生id不能为空",groups = Insert.class)
+    @JsonIgnoreProperties
+    private String userId;
+
+    @ApiModelProperty(value = "咨询自动回复,长度限制255")
+    @Length(message = "咨询自动回复设置不得超过255个字符",groups = Update.class)
+    private String consultReply;
+
+    @ApiModelProperty(value = "勿扰自动回复,长度限制255")
+    @Length(message = "勿扰自动回复设置不得超过255个字符",groups = Update.class)
+    private String noDisturbReply;
+
+    @ApiModelProperty(value = "快捷回复,长度限制2048")
+    @TableField(typeHandler = StringListTypeHandler.class)
+    @Length(message = "勿扰自动回复设置不得超过2048个字符",groups = Update.class)
+    private List<String> fastReply;
+}

+ 16 - 0
nb-service/app-doctor/src/main/java/com/nb/app/doctor/mapper/AppUserConsultConfigMapper.java

@@ -0,0 +1,16 @@
+package com.nb.app.doctor.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.nb.app.doctor.entity.AppUserConsultConfigEntity;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * @author lifang
+ * @version 1.0.0
+ * @ClassName AppDoctorUserMapper.java
+ * @Description TODO
+ * @createTime 2022年08月09日 21:24:00
+ */
+@Mapper
+public interface AppUserConsultConfigMapper extends BaseMapper<AppUserConsultConfigEntity> {
+}

+ 16 - 0
nb-service/app-doctor/src/main/java/com/nb/app/doctor/mapper/AppUserReplyMapper.java

@@ -0,0 +1,16 @@
+package com.nb.app.doctor.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.nb.app.doctor.entity.AppUserReplyEntity;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * @author lifang
+ * @version 1.0.0
+ * @ClassName AppDoctorUserMapper.java
+ * @Description TODO
+ * @createTime 2022年08月09日 21:24:00
+ */
+@Mapper
+public interface AppUserReplyMapper extends BaseMapper<AppUserReplyEntity> {
+}

+ 32 - 0
nb-service/app-doctor/src/main/java/com/nb/app/doctor/service/LocalUserConsultConfigService.java

@@ -0,0 +1,32 @@
+package com.nb.app.doctor.service;
+
+import com.nb.app.doctor.entity.AppUserConsultConfigEntity;
+import com.nb.app.doctor.mapper.AppUserConsultConfigMapper;
+import com.nb.common.crud.BaseService;
+import org.springframework.stereotype.Component;
+
+/**
+ * @author lifang
+ * @version 1.0.0
+ * @ClassName LocalAppDoctorUserService.java
+ * @Description TODO
+ * @createTime 2022年08月09日 21:24:00
+ */
+@Component
+public class LocalUserConsultConfigService extends BaseService<AppUserConsultConfigMapper, AppUserConsultConfigEntity,String> {
+
+    @Override
+    public void validateBeforeSave(AppUserConsultConfigEntity entity) {
+
+    }
+
+    @Override
+    public void validateBeforeUpdate(AppUserConsultConfigEntity entity) {
+
+    }
+
+    @Override
+    public void validateBeforeDelete(String id) {
+
+    }
+}

+ 32 - 0
nb-service/app-doctor/src/main/java/com/nb/app/doctor/service/LocalUserReplyService.java

@@ -0,0 +1,32 @@
+package com.nb.app.doctor.service;
+
+import com.nb.app.doctor.entity.AppUserReplyEntity;
+import com.nb.app.doctor.mapper.AppUserReplyMapper;
+import com.nb.common.crud.BaseService;
+import org.springframework.stereotype.Component;
+
+/**
+ * @author lifang
+ * @version 1.0.0
+ * @ClassName LocalAppDoctorUserService.java
+ * @Description TODO
+ * @createTime 2022年08月09日 21:24:00
+ */
+@Component
+public class LocalUserReplyService extends BaseService<AppUserReplyMapper, AppUserReplyEntity,String> {
+
+    @Override
+    public void validateBeforeSave(AppUserReplyEntity entity) {
+
+    }
+
+    @Override
+    public void validateBeforeUpdate(AppUserReplyEntity entity) {
+
+    }
+
+    @Override
+    public void validateBeforeDelete(String id) {
+
+    }
+}