18339543638 преди 3 години
родител
ревизия
c9f67dbe1b

+ 9 - 0
nb-service-api/web-service-api/src/main/java/com/nb/web/api/feign/IPatientClient.java

@@ -54,4 +54,13 @@ public interface IPatientClient {
      * @return PatientByInviteCodeResult
      */
     PatientByInviteCodeResult lookPatientByInviteCode(String inviteCode);
+
+    /**
+     * 描述: 删除邀请码
+     * @author lifang
+     * @date 2022/8/19 15:27
+     * @param inviteCode
+     * @return void
+     */
+    void delInviteCode(String inviteCode);
 }

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

@@ -19,6 +19,8 @@ import com.nb.app.msg.enums.MsgEnum;
 import com.nb.app.msg.event.SaveMsgEvent;
 import com.nb.auth.utils.SecurityUtil;
 import com.nb.common.crud.BaseService;
+import com.nb.core.exception.CustomException;
+import com.nb.web.api.feign.IPatientClient;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.context.annotation.Lazy;
 import org.springframework.stereotype.Component;
@@ -39,6 +41,11 @@ public class LocalAssistantUserBindService extends BaseService<AssistantUserBind
     @Autowired
     @Lazy
     private LocalAssistantUserService userService;
+
+    @Autowired
+    @Lazy
+    private IPatientClient patientClient;
+
     @Override
     public void validateBeforeSave(AssistantUserBindEntity entity) {
 
@@ -140,6 +147,28 @@ public class LocalAssistantUserBindService extends BaseService<AssistantUserBind
     @Override
     public boolean handleBindResult(HandleBindResult source) {
         //todo 发送处理结果信息
+        AssistantUserBindEntity userBind = this.findById(source.getBindId());
+        if(source.getAgree()){
+            //判断是否重复绑定
+            AssistantUserBindEntity existBind = this.getOne(new QueryWrapper<AssistantUserBindEntity>()
+                    .lambda()
+                    .eq(AssistantUserBindEntity::getPatientId, userBind.getPatientId())
+                    .eq(AssistantUserBindEntity::getStatus, BindEnum.SUCCESS)
+                    .last("limit 1"));
+            if(existBind!=null){
+                throw new CustomException("该用户已被看护,请勿重复绑定");
+            }
+        }
+        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::getRefuseReason, source.getRefuseReason()));
+        if(result&&source.getAgree()&&StrUtil.isNotEmpty(userBind.getInviteCode())){
+            //绑定成功后删除邀请码
+            patientClient.delInviteCode(userBind.getInviteCode());
+        }
         return this.update(new UpdateWrapper<AssistantUserBindEntity>()
                 .lambda()
                 .eq(AssistantUserBindEntity::getId,source.getBindId())

+ 2 - 1
nb-service/app-doctor/src/main/java/com/nb/app/doctor/auth/AppDoctorUserAccountOperator.java

@@ -17,6 +17,7 @@ import lombok.AllArgsConstructor;
 import org.springframework.stereotype.Component;
 
 import java.util.List;
+import java.util.Optional;
 import java.util.Set;
 
 /**
@@ -65,7 +66,7 @@ public class AppDoctorUserAccountOperator implements IAccountOperator<DoctorUser
         DoctorUserVo vo = BeanUtil.copyProperties(appDoctorUser, DoctorUserVo.class);
 
         AccountInfoVO<DoctorUserVo> result = new AccountInfoVO();
-        result.setExtendFields(vo);
+        result.setExtendFields(Optional.ofNullable(vo).orElse(new DoctorUserVo()));
         result.setAvatar(appDoctorUser.getAvatar());
         result.setRealName(appDoctorUser.getRealName());
         result.setSex(appDoctorUser.getSex());

+ 1 - 3
nb-service/app-doctor/src/main/java/com/nb/app/doctor/controller/PatientMonitorController.java

@@ -2,7 +2,6 @@ package com.nb.app.doctor.controller;
 
 import cn.hutool.core.bean.BeanUtil;
 import cn.hutool.core.collection.CollectionUtil;
-import cn.hutool.extra.pinyin.PinyinUtil;
 import cn.hutool.json.JSONUtil;
 import com.nb.app.assistant.api.bean.HandleBindResult;
 import com.nb.app.assistant.api.entity.AssistantUserBindEntity;
@@ -79,12 +78,11 @@ public class PatientMonitorController {
     @PostMapping("/monitor/{patientId}")
     @ApiOperation(value = "查看病人当前监控详情")
     public R<PatientMonitorDetailResult> monitorPatient(@PathVariable("patientId") String patientId) {
-        //todo 增加看护人信息
         return R.success(patientClient.lookPatientDetail(patientId));
     }
 
     @PostMapping("/invite/code")
-    @ApiOperation(value = "患者看护邀请码")
+    @ApiOperation(value = "患者看护邀请码,默认失效失效(7天)")
     public R<InviteCodeResult> inviteCode(@RequestAttribute("tenantId")@ApiParam(hidden = true) String tenantId, @RequestBody InviteCodeVo resource) {
         return R.success(patientClient.generateInviteCode(tenantId,resource.getPatientCode(),resource.getManage()));
     }

+ 12 - 0
nb-service/web-service/src/main/java/com/nb/web/service/bus/controller/BusAlarmController.java

@@ -10,8 +10,10 @@ import com.nb.web.service.bus.service.LocalBusDeviceAlarmService;
 import com.nb.common.crud.BaseService;
 import com.nb.common.crud.controller.BaseCrudController;
 import com.nb.core.result.R;
+import com.nb.web.service.bus.utils.WsPublishUtils;
 import io.swagger.annotations.*;
 import lombok.AllArgsConstructor;
+import org.springframework.scheduling.annotation.Scheduled;
 import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.*;
 
@@ -30,6 +32,16 @@ public class BusAlarmController extends BaseCrudController<BusDeviceAlarmEntity,
 
     private final LocalBusDeviceAlarmService deviceAlarmService;
 
+    private final WsPublishUtils wsPublishUtils;
+
+
+    @PostMapping("/test")
+    @ApiOperation("测试")
+    public R test(){
+        wsPublishUtils.publishPatientMonitor("1542042749847519234","1");
+        return R.success();
+    }
+
     @PostMapping("/cause/{id}")
     @ApiOperation(value = "添加报警原因",notes = "权限:【bus:alarm:cause】")
     @SaCheckPermission("bus:alarm:cause")

+ 5 - 0
nb-service/web-service/src/main/java/com/nb/web/service/bus/service/LocalBusPatientService.java

@@ -550,4 +550,9 @@ public class LocalBusPatientService extends BaseService<BusPatientMapper, BusPat
         }
         return    PatientByInviteCodeResult.of(inviteCode,inviteCodeNode.getTenantId(), this.lookMonitorByPatientId(inviteCodeNode.getPatientId(),inviteCodeNode.getTenantId())) ;
     }
+
+    @Override
+    public void delInviteCode(String inviteCode) {
+        inviteCodeUtil.delCode(inviteCode);
+    }
 }

+ 4 - 0
nb-service/web-service/src/main/java/com/nb/web/service/bus/utils/PatientInviteCodeUtil.java

@@ -73,6 +73,10 @@ public class PatientInviteCodeUtil {
         return inviteCodeMap.get(inviteCode);
     }
 
+    public void delCode(String inviteCode) {
+        InviteCodeNode inviteCodeNode = inviteCodeMap.remove(inviteCode);
+        patientCodeMap.remove(inviteCodeNode.getPatientCode());
+    }
 
 
     @Data