zhuyifan

HIS客户登录校验

1 package com.infoloop.tianting.service.client; 1 package com.infoloop.tianting.service.client;
2 2
3 +import com.infoloop.rpc.meizhongyiheservice.Customer;
3 import com.infoloop.rpc.meizhongyiheservice.GetCustomerAllergiesByCustomerIdsRpcRequest; 4 import com.infoloop.rpc.meizhongyiheservice.GetCustomerAllergiesByCustomerIdsRpcRequest;
4 import com.infoloop.rpc.meizhongyiheservice.GetCustomerAllergiesByCustomerIdsRpcResponse; 5 import com.infoloop.rpc.meizhongyiheservice.GetCustomerAllergiesByCustomerIdsRpcResponse;
6 +import com.infoloop.rpc.meizhongyiheservice.GetCustomerDetailByIdRpcRequest;
5 import com.infoloop.rpc.meizhongyiheservice.GetCustomerMedicalAdvicesByHospitalRecordIdsRpcRequest; 7 import com.infoloop.rpc.meizhongyiheservice.GetCustomerMedicalAdvicesByHospitalRecordIdsRpcRequest;
6 import com.infoloop.rpc.meizhongyiheservice.GetCustomerMedicalAdvicesByHospitalRecordIdsRpcResponse; 8 import com.infoloop.rpc.meizhongyiheservice.GetCustomerMedicalAdvicesByHospitalRecordIdsRpcResponse;
7 import com.infoloop.rpc.meizhongyiheservice.MeiZhongYiHeServiceRpcGrpc; 9 import com.infoloop.rpc.meizhongyiheservice.MeiZhongYiHeServiceRpcGrpc;
...@@ -31,4 +33,15 @@ public class MeiZhongYiHeServiceClient { ...@@ -31,4 +33,15 @@ public class MeiZhongYiHeServiceClient {
31 .build(); 33 .build();
32 return meiZhongYiHeServiceRpcBlockingStub.getCustomerMedicalAdvicesByHospitalRecordIds(request); 34 return meiZhongYiHeServiceRpcBlockingStub.getCustomerMedicalAdvicesByHospitalRecordIds(request);
33 } 35 }
36 +
37 + public Customer getCustomerDetailById(String HISCustomerId, String contractNo) {
38 + final var customer = meiZhongYiHeServiceRpcBlockingStub.getCustomerDetailById(GetCustomerDetailByIdRpcRequest.newBuilder()
39 + .setCustomerId(HISCustomerId)
40 + .setHospitalRecordId(contractNo)
41 + .build());
42 + if (!customer.hasCustomer()) {
43 + return null;
44 + }
45 + return customer.getCustomer();
46 + }
34 } 47 }
......
...@@ -3,6 +3,7 @@ package com.infoloop.tianting.service.impl; ...@@ -3,6 +3,7 @@ package com.infoloop.tianting.service.impl;
3 import cn.dev33.satoken.stp.SaLoginModel; 3 import cn.dev33.satoken.stp.SaLoginModel;
4 import cn.dev33.satoken.stp.SaTokenInfo; 4 import cn.dev33.satoken.stp.SaTokenInfo;
5 import cn.dev33.satoken.stp.StpUtil; 5 import cn.dev33.satoken.stp.StpUtil;
6 +import com.infoloop.rpc.meizhongyiheservice.HospitalStatus;
6 import com.infoloop.tianting.clientcustomerservice.ClientCustomerHospitalRecordHospitalStatusEnum; 7 import com.infoloop.tianting.clientcustomerservice.ClientCustomerHospitalRecordHospitalStatusEnum;
7 import com.infoloop.tianting.constant.CommonConstants; 8 import com.infoloop.tianting.constant.CommonConstants;
8 import com.infoloop.tianting.exception.ClientEndExceptions; 9 import com.infoloop.tianting.exception.ClientEndExceptions;
...@@ -10,6 +11,7 @@ import com.infoloop.tianting.exception.ErrorCodeEnum; ...@@ -10,6 +11,7 @@ import com.infoloop.tianting.exception.ErrorCodeEnum;
10 import com.infoloop.tianting.model.dto.PermissionDTO.LoginDto; 11 import com.infoloop.tianting.model.dto.PermissionDTO.LoginDto;
11 import com.infoloop.tianting.service.LoginService; 12 import com.infoloop.tianting.service.LoginService;
12 import com.infoloop.tianting.service.client.ClientCustomerServiceRpcClient; 13 import com.infoloop.tianting.service.client.ClientCustomerServiceRpcClient;
14 +import com.infoloop.tianting.service.client.MeiZhongYiHeServiceClient;
13 import com.infoloop.tianting.service.client.OperatorServiceRpcClient; 15 import com.infoloop.tianting.service.client.OperatorServiceRpcClient;
14 import com.infoloop.tianting.service.client.WOperatorServiceRpcClient; 16 import com.infoloop.tianting.service.client.WOperatorServiceRpcClient;
15 import com.infoloop.tianting.service.client.WxMiniProgramHttpClient; 17 import com.infoloop.tianting.service.client.WxMiniProgramHttpClient;
...@@ -30,6 +32,7 @@ public class LoginServiceImpl implements LoginService { ...@@ -30,6 +32,7 @@ public class LoginServiceImpl implements LoginService {
30 private final OperatorServiceRpcClient operatorServiceRpcClient; 32 private final OperatorServiceRpcClient operatorServiceRpcClient;
31 private final WxMiniProgramHttpClient wxMiniProgramHttpClient; 33 private final WxMiniProgramHttpClient wxMiniProgramHttpClient;
32 private final WOperatorServiceRpcClient wOperatorServiceRpcClient; 34 private final WOperatorServiceRpcClient wOperatorServiceRpcClient;
35 + private final MeiZhongYiHeServiceClient meiZhongYiHeServiceClient;
33 36
34 @Override 37 @Override
35 public SaTokenInfo login(LoginDto loginDto) throws NoSuchAlgorithmException { 38 public SaTokenInfo login(LoginDto loginDto) throws NoSuchAlgorithmException {
...@@ -58,6 +61,11 @@ public class LoginServiceImpl implements LoginService { ...@@ -58,6 +61,11 @@ public class LoginServiceImpl implements LoginService {
58 if (!record.hasResponse() || record.getResponse().getHospitalStatus() != ClientCustomerHospitalRecordHospitalStatusEnum.CURRENT) { 61 if (!record.hasResponse() || record.getResponse().getHospitalStatus() != ClientCustomerHospitalRecordHospitalStatusEnum.CURRENT) {
59 throw ClientEndExceptions.IncorrectRequestValue.build(ErrorCodeEnum.VALIDATE_FAILED.name()); 62 throw ClientEndExceptions.IncorrectRequestValue.build(ErrorCodeEnum.VALIDATE_FAILED.name());
60 } 63 }
64 + //还需要去读取HIS系统最新用户住院信息
65 + final var hisCustomerHospitalRecord = meiZhongYiHeServiceClient.getCustomerDetailById(customer.getHISCustomerId(), record.getResponse().getContractNo()).getCustomerHospitalRecord();
66 + if (hisCustomerHospitalRecord.getHospitalStatus() != HospitalStatus.CURRENT) {
67 + throw ClientEndExceptions.IncorrectRequestValue.build(ErrorCodeEnum.VALIDATE_FAILED.name());
68 + }
61 } 69 }
62 final var wxUserOpenIdDto = wxMiniProgramHttpClient.getUserOpenIdByCode(loginDto.getOpenCode()); 70 final var wxUserOpenIdDto = wxMiniProgramHttpClient.getUserOpenIdByCode(loginDto.getOpenCode());
63 StpUtil.login(customer.getId(), SaLoginModel.create() 71 StpUtil.login(customer.getId(), SaLoginModel.create()
......