Bladeren bron

fix
患者列表

lifang 3 maanden geleden
bovenliggende
commit
fe5623c856

+ 30 - 0
tr-modules/tr-module-smartFollowUp/src/main/java/cn/tr/module/smart/app/config/DoctorAppLoginOperator.java

@@ -1,6 +1,7 @@
 package cn.tr.module.smart.app.config;
 
 import cn.dev33.satoken.stp.StpLogic;
+import cn.hutool.core.collection.CollectionUtil;
 import cn.hutool.core.util.ObjectUtil;
 import cn.hutool.core.util.StrUtil;
 import cn.hutool.http.useragent.UserAgent;
@@ -28,9 +29,13 @@ import cn.tr.module.sys.oauth2.psw.operator.LoginOAuth2PswUserOperator;
 import cn.tr.module.sys.tenant.po.SysTenantPO;
 import cn.tr.module.sys.tenant.repository.SysTenantRepository;
 import cn.tr.module.sys.user.dto.SysUserDTO;
+import cn.tr.module.sys.user.enums.UserStatusEnum;
 import cn.tr.module.sys.user.po.SysUserPO;
+import cn.tr.module.sys.user.po.SysUserTenantPO;
 import cn.tr.module.sys.user.repository.SysUserRepository;
+import cn.tr.module.sys.user.repository.SysUserTenantRepository;
 import cn.tr.module.sys.user.service.ISysUserService;
+import cn.tr.module.sys.user.service.ISysUserTenantService;
 import cn.tr.module.sys.user.vo.SysUserVO;
 import cn.tr.plugin.security.bo.UserLoginInfoBO;
 import cn.tr.plugin.security.utils.SaTokenUtils;
@@ -42,7 +47,9 @@ import org.springframework.stereotype.Component;
 
 import javax.servlet.http.HttpServletRequest;
 import java.util.Date;
+import java.util.List;
 import java.util.Optional;
+import java.util.stream.Collectors;
 
 /**
  * @ClassName : DoctorSmsLoginOperator
@@ -68,6 +75,11 @@ public class DoctorAppLoginOperator extends AbstractOAuth2PswUserOperator {
 
     @Autowired
     private SysTenantRepository tenantRepository;
+
+    @Autowired
+    @Lazy
+    private ISysUserTenantService userTenantService;
+
     private static final String LOGIN_TYPE = "APP";
     @Override
     public String auth(OAuth2PswReqDTO source) {
@@ -136,6 +148,24 @@ public class DoctorAppLoginOperator extends AbstractOAuth2PswUserOperator {
                 sysUserPO.setLastLoginIp(ip);
                 sysUserPO.setLastLoginAddress(cityInfo);
                 sysUserRepository.insert(sysUserPO);
+                String userId = sysUserPO.getId();
+
+                //自动注册后,筛选是否有已绑定的admin账号
+                List<SysTenantPO> tenantList = tenantRepository.selectList(new LambdaQueryWrapper<SysTenantPO>()
+                        .eq(SysTenantPO::getContactMobile, username));
+                if(CollectionUtil.isNotEmpty(tenantList)){
+                    userTenantService.batchInsert(tenantList.stream()
+                            .map(tenant->{
+                                SysUserTenantPO result = new SysUserTenantPO();
+                                result.setTenantId(tenant.getId());
+                                result.setStatus(UserStatusEnum.normal.getValue());
+                                result.setUserId(userId);
+                                return result;
+                            })
+                            .collect(Collectors.toList()));
+                    ;
+                }
+
                 log.info("[{}] 自动注册成功, userId: {}", LOGIN_TYPE, sysUserPO.getId());
             }
         }else {

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

@@ -140,6 +140,9 @@ public class BizQuestionGroupServiceImpl implements IBizQuestionGroupService {
             if(ObjectUtil.isNull(source.getInterval())){
                 throw new ServiceException(TRExcCode.SYSTEM_ERROR_B0001, "请选择推送间隔");
             }
+            if(source.getFrequency()<=0||source.getInterval()<=0){
+                throw new ServiceException(TRExcCode.SYSTEM_ERROR_B0001, "推送频率和推送间隔不能小于1");
+            }
         }
         BizQuestionGroupPO oldQuestionGroup = baseRepository.selectById(source.getId());
         if (Objects.isNull(oldQuestionGroup)) {
@@ -175,6 +178,9 @@ public class BizQuestionGroupServiceImpl implements IBizQuestionGroupService {
             if(ObjectUtil.isNull(source.getInterval())){
                 throw new ServiceException(TRExcCode.SYSTEM_ERROR_B0001, "请选择推送间隔");
             }
+            if(source.getFrequency()<=0||source.getInterval()<=0){
+                throw new ServiceException(TRExcCode.SYSTEM_ERROR_B0001, "推送频率和推送间隔不能小于1");
+            }
         }
         BizQuestionGroupPO bizQuestionGroupPO = BizQuestionGroupMapper.INSTANCE.convertPO(source);
         Map<String, Object> stringObjectMap = BeanUtil.beanToMap(source, MD5_FIELDS);

+ 34 - 49
tr-modules/tr-module-system/src/main/java/cn/tr/module/sys/tenant/service/impl/SysTenantServiceImpl.java

@@ -9,10 +9,8 @@ import cn.tr.core.enums.CreateEnum;
 import cn.tr.core.exception.ServiceException;
 import cn.tr.core.exception.TRExcCode;
 import cn.tr.core.tenant.TenantContextHolder;
-import cn.tr.core.tenant.TenantUtils;
 import cn.tr.module.sys.config.SysConfigManager;
 import cn.tr.module.sys.tenant.dto.SysTenantAddDTO;
-import cn.tr.module.sys.tenant.dto.SysTenantCommonDTO;
 import cn.tr.module.sys.tenant.dto.SysTenantQueryDTO;
 import cn.tr.module.sys.tenant.mapper.SysTenantMapper;
 import cn.tr.module.sys.tenant.po.SysInviteCodePO;
@@ -24,9 +22,12 @@ import cn.tr.module.sys.tenant.service.ISysTenantService;
 import cn.tr.module.sys.tenant.vo.SysTenantCommonVO;
 import cn.tr.module.sys.user.dto.*;
 import cn.tr.module.sys.user.enums.UserStatusEnum;
+import cn.tr.module.sys.user.po.SysUserPO;
+import cn.tr.module.sys.user.po.SysUserTenantPO;
+import cn.tr.module.sys.user.repository.SysUserRepository;
+import cn.tr.module.sys.user.repository.SysUserTenantRepository;
 import cn.tr.module.sys.user.service.*;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
-import com.baomidou.mybatisplus.core.toolkit.IdWorker;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.context.annotation.Lazy;
@@ -80,6 +81,11 @@ public class SysTenantServiceImpl implements ISysTenantService {
     @Autowired
     private SysInviteCodeRepository inviteCodeRepository;
 
+    @Autowired
+    private SysUserRepository userRepository;
+
+    @Autowired
+    private SysUserTenantRepository userTenantRepository;
     @Override
     @TenantIgnore
     public List<SysTenantCommonVO> selectSysTenantList(SysTenantQueryDTO query) {
@@ -98,7 +104,10 @@ public class SysTenantServiceImpl implements ISysTenantService {
     public boolean updateSysTenantById(SysTenantAddDTO source) {
         validate();
         validateSource(source);
-        return tenantRepository.updateById(SysTenantMapper.INSTANCE.toPO(source)) != 0;
+        if (tenantRepository.updateById(SysTenantMapper.INSTANCE.toPO(source)) != 0) {
+            return Boolean.TRUE;
+        }
+        return Boolean.FALSE;
     }
 
     @Override
@@ -111,7 +120,12 @@ public class SysTenantServiceImpl implements ISysTenantService {
         tenant.setInviteCode(inviteCode.getCode());
         inviteCode.setStatus(1);
         inviteCodeRepository.updateById(inviteCode);
-        return tenantRepository.insert(tenant) != 0;
+        if (tenantRepository.insert(tenant) != 0) {
+            //绑定admin用户
+            bindAdminUser(tenant.getContactMobile(),tenant.getId());
+            return Boolean.TRUE;
+        }
+        return Boolean.FALSE;
     }
 
     private List<SysUserPortalDTO> buildUserPortal(String userId, String portalId) {
@@ -167,51 +181,22 @@ public class SysTenantServiceImpl implements ISysTenantService {
         }
     }
 
-    private SysPortalDTO buildPortal(String portalId) {
-        SysPortalDTO org = new SysPortalDTO();
-        org.setId(portalId);
-        org.setCode("admin");
-        org.setName("系统管理员工作台");
-        org.setType(CreateEnum.sys.name());
-        return org;
-    }
-
-    private SysOrgDTO buildOrg(String orgId, String tenantName) {
-        SysOrgDTO org = new SysOrgDTO();
-        org.setId(orgId);
-        org.setParentId("0");
-        org.setSort(1);
-        org.setName(tenantName);
-        org.setDisable(false);
-        return org;
-    }
-
-    private SysRoleDTO buildRole(String roleId) {
-        SysRoleDTO role = new SysRoleDTO();
-        role.setId(roleId);
-        role.setDataScope("1");
-        role.setCode("admin");
-        role.setName("超级管理员");
-        role.setRemark("系统角色");
-        role.setDisable(false);
-        role.setSort(1);
-        role.setType(CreateEnum.sys.name());
-        return role;
-    }
-
-    private SysUserDTO buildUser(String userId, String portalId, String roleId, String orgId, String username, String password, String tenantName) {
-        SysUserDTO user = new SysUserDTO();
-        user.setId(userId);
-        user.setOrgId(orgId);
-        user.setPortalIds(Collections.singleton(portalId));
-        user.setUsername(username);
-        user.setPassword(password);
-        user.setNickname(tenantName);
-        user.setRoleIds(Collections.singleton(roleId));
-        user.setStatus(UserStatusEnum.normal.getValue());
-        return user;
+    private void bindAdminUser(String phone,String tenantId){
+        if(StrUtil.isEmpty(phone)){
+            return;
+        }
+        SysUserPO sysUserPO = userRepository.selectOne(new LambdaQueryWrapper<SysUserPO>()
+                .eq(SysUserPO::getUsername, phone)
+                .last("limit 1"));
+        if(ObjectUtil.isNull(sysUserPO)){
+            return;
+        }
+        SysUserTenantPO userTenant = new SysUserTenantPO();
+        userTenant.setTenantId(tenantId);
+        userTenant.setUserId(sysUserPO.getId());
+        userTenant.setStatus(UserStatusEnum.normal.getValue());
+        userTenantRepository.insert(userTenant);
     }
-
     private void validate() {
         if (!Boolean.TRUE.equals(tenantEnable)) {
             throw new UnsupportedOperationException("多租户功能已关闭");

+ 7 - 0
tr-modules/tr-module-system/src/main/java/cn/tr/module/sys/user/service/ISysUserTenantService.java

@@ -0,0 +1,7 @@
+package cn.tr.module.sys.user.service;
+
+import cn.tr.module.sys.user.po.SysUserTenantPO;
+import java.util.*;
+public interface ISysUserTenantService {
+    void batchInsert(List<SysUserTenantPO> source);
+}

+ 20 - 0
tr-modules/tr-module-system/src/main/java/cn/tr/module/sys/user/service/impl/SysUserTenantServiceImpl.java

@@ -0,0 +1,20 @@
+package cn.tr.module.sys.user.service.impl;
+
+import cn.hutool.core.collection.CollectionUtil;
+import cn.tr.module.sys.user.po.SysUserTenantPO;
+import cn.tr.module.sys.user.repository.SysUserTenantRepository;
+import cn.tr.module.sys.user.service.ISysUserTenantService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+@Service
+public class SysUserTenantServiceImpl extends ServiceImpl<SysUserTenantRepository, SysUserTenantPO> implements ISysUserTenantService {
+    @Override
+    public void batchInsert(List<SysUserTenantPO> source) {
+        if (CollectionUtil.isNotEmpty(source)) {
+            return;
+        }
+        this.saveBatch(source);
+    }
+}