|
|
@@ -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;
|
|
|
+ }
|
|
|
}
|