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

add
医生切换医院

18339543638 5 hónapja
szülő
commit
82404e02a2

+ 9 - 1
tr-modules/tr-module-smartFollowUp/src/main/java/cn/tr/module/smart/common/controller/AppUserController.java

@@ -7,6 +7,7 @@ import cn.tr.core.strategy.LoginUserStrategy;
 import cn.tr.module.smart.common.dto.BizAppUserInfoDTO;
 import cn.tr.module.smart.common.dto.BizAppUserResetPswDTO;
 import cn.tr.module.smart.common.service.IDoctorUserService;
+import cn.tr.module.smart.wx.dto.BizWxUserShiftHospitalDTO;
 import cn.tr.module.sys.user.vo.DoctorUserHospitalVO;
 import cn.tr.plugin.mybatis.base.BaseController;
 import cn.tr.plugin.security.utils.SaTokenUtils;
@@ -60,6 +61,13 @@ public class AppUserController extends BaseController {
         String userId = appUserService.resetPsw(source);
         //全部账号登录
         SaTokenUtils.getStpUtil().logout(userId);
-        return CommonResult.success();
+        return CommonResult.success(Boolean.TRUE);
+    }
+
+    @PostMapping("/shiftTenant")
+    @ApiOperation(value = "切换用户当前登录的医院",position = 2)
+    @TenantIgnore
+    public CommonResult<Boolean> shiftTenant(@RequestBody BizWxUserShiftHospitalDTO source){
+        return CommonResult.success( appUserService.shiftTenant(source));
     }
 }

+ 3 - 0
tr-modules/tr-module-smartFollowUp/src/main/java/cn/tr/module/smart/common/service/IDoctorUserService.java

@@ -2,6 +2,7 @@ package cn.tr.module.smart.common.service;
 
 import cn.tr.module.smart.common.dto.BizAppUserInfoDTO;
 import cn.tr.module.smart.common.dto.BizAppUserResetPswDTO;
+import cn.tr.module.smart.wx.dto.BizWxUserShiftHospitalDTO;
 import cn.tr.module.sys.user.vo.DoctorUserHospitalVO;
 
 import java.util.List;
@@ -31,4 +32,6 @@ public interface IDoctorUserService {
      * @return  userId
      */
     String resetPsw(BizAppUserResetPswDTO source);
+
+    Boolean shiftTenant(BizWxUserShiftHospitalDTO source);
 }

+ 36 - 0
tr-modules/tr-module-smartFollowUp/src/main/java/cn/tr/module/smart/common/service/impl/DoctorUserServiceImpl.java

@@ -1,5 +1,6 @@
 package cn.tr.module.smart.common.service.impl;
 
+import cn.hutool.core.collection.CollectionUtil;
 import cn.hutool.core.util.ObjectUtil;
 import cn.hutool.core.util.StrUtil;
 import cn.tr.core.exception.ServiceException;
@@ -9,18 +10,28 @@ import cn.tr.core.utils.PswUtils;
 import cn.tr.module.smart.common.dto.BizAppUserInfoDTO;
 import cn.tr.module.smart.common.dto.BizAppUserResetPswDTO;
 import cn.tr.module.smart.common.enums.SmsCodeEnums;
+import cn.tr.module.smart.common.po.BizWxUserHospitalPO;
+import cn.tr.module.smart.common.po.BizWxUserPO;
 import cn.tr.module.smart.common.service.IBizSmsService;
 import cn.tr.module.smart.common.service.IDoctorUserService;
+import cn.tr.module.smart.wx.dto.BizWxUserShiftHospitalDTO;
+import cn.tr.module.sys.user.po.SysUserTenantPO;
 import cn.tr.module.sys.user.vo.DoctorUserHospitalVO;
 import cn.tr.module.sys.user.po.SysUserPO;
 import cn.tr.module.sys.user.repository.SysUserRepository;
 import cn.tr.module.sys.user.repository.SysUserTenantRepository;
+import cn.tr.plugin.security.bo.UserLoginInfoBO;
+import cn.tr.plugin.security.constant.SecurityConstant;
+import cn.tr.plugin.security.context.LoginUserContextHolder;
+import cn.tr.plugin.security.utils.SaTokenUtils;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import lombok.AllArgsConstructor;
 import org.springframework.stereotype.Service;
 
 import java.util.Collections;
 import java.util.List;
+import java.util.Optional;
+
 @Service
 @AllArgsConstructor
 public class DoctorUserServiceImpl  implements IDoctorUserService {
@@ -69,4 +80,29 @@ public class DoctorUserServiceImpl  implements IDoctorUserService {
         userRepository.updateById(sysUserPO);
         return sysUserPO.getId();
     }
+
+    @Override
+    public Boolean shiftTenant(BizWxUserShiftHospitalDTO source) {
+        String tenantId = source.getTenantId();
+        String userId = LoginUserStrategy.tr.getCurrentUserId();
+        List<SysUserTenantPO> userTenantPOList = userTenantRepository.selectList(new LambdaQueryWrapper<SysUserTenantPO>()
+                .eq(SysUserTenantPO::getUserId, userId));
+        if(CollectionUtil.isEmpty(userTenantPOList)){
+            throw new ServiceException(TRExcCode.SYSTEM_ERROR_B0001, "当前用户尚未与该医院绑定关系");
+        }
+        Optional<SysUserTenantPO> exist = userTenantPOList
+                .stream()
+                .filter(wu -> StrUtil.equals(wu.getTenantId(), tenantId))
+                .findFirst();
+        if (!exist.isPresent()) {
+            throw new ServiceException(TRExcCode.SYSTEM_ERROR_B0001, "当前用户尚未与该医院绑定关系");
+        }
+        UserLoginInfoBO user = LoginUserContextHolder.getUser();
+        user.setTenantId(tenantId);
+        SaTokenUtils.set(SecurityConstant.LOGIN_USER, user);
+        SysUserPO wxUserPO = userRepository.selectById(userId);
+        wxUserPO.setLastLoginTenantId(tenantId);
+        userRepository.updateById(wxUserPO);
+        return Boolean.TRUE;
+    }
 }

+ 2 - 6
tr-modules/tr-module-smartFollowUp/src/main/java/cn/tr/module/smart/wx/controller/WxAppletUserController.java

@@ -4,8 +4,6 @@ import cn.binarywang.wx.miniapp.api.WxMaService;
 import cn.binarywang.wx.miniapp.bean.WxMaPhoneNumberInfo;
 import cn.binarywang.wx.miniapp.bean.WxMaUserInfo;
 import cn.binarywang.wx.miniapp.util.WxMaConfigHolder;
-import cn.dev33.satoken.annotation.SaIgnore;
-import cn.hutool.http.HttpResponse;
 import cn.tr.core.annotation.TenantIgnore;
 import cn.tr.core.exception.ServiceException;
 import cn.tr.core.exception.TRExcCode;
@@ -24,10 +22,7 @@ import io.swagger.annotations.ApiOperation;
 import lombok.AllArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import me.chanjar.weixin.common.error.WxErrorException;
-import me.chanjar.weixin.mp.api.WxMpService;
-import me.chanjar.weixin.mp.bean.result.WxMpQrCodeTicket;
 import org.apache.commons.lang3.StringUtils;
-import org.springframework.cache.annotation.Cacheable;
 import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.*;
 
@@ -78,7 +73,8 @@ public class WxAppletUserController {
 
     @PostMapping("/shiftTenant")
     @ApiOperation(value = "切换用户当前登录的医院",position = 2)
-    public CommonResult<Boolean> shiftTenant(@RequestBody BizWxUserShiftHospitalDTO source){
+    @TenantIgnore
+    public CommonResult<Boolean> shiftTenant(@RequestBody@Validated BizWxUserShiftHospitalDTO source){
         return CommonResult.success( wxUserService.shiftTenant(source));
     }
 

+ 4 - 5
tr-plugins/tr-spring-boot-starter-plugin-satoken/src/main/java/cn/tr/plugin/security/config/LoginUserStrategyConfig.java

@@ -47,11 +47,10 @@ public class LoginUserStrategyConfig {
 
                 @Override
                 public String getTenantId() {
-                    return "1";
-//                    if(ObjectUtil.isNull(finalUser)){
-//                        return null;
-//                    }
-//                    return finalUser.getTenantId();
+                    if(ObjectUtil.isNull(finalUser)){
+                        return null;
+                    }
+                    return finalUser.getTenantId();
                 }
             };
         };