2 Commits 554ede5001 ... 43b9cc71f6

Author SHA1 Message Date
  dongpo 43b9cc71f6 1、钉钉创建租户时,同时初始化租户相关数据 1 year ago
  dongpo 27eeadfb22 1、判断是否是管理员登录修改 1 year ago

+ 5 - 3
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/dingding/DingThirdAuthController.java

@@ -105,16 +105,18 @@ public class DingThirdAuthController {
         DingUserTenantRelateDO dingUserTenantRelateDO = dingUserTenantRelateMapper.selectOne(DingUserTenantRelateDO::getTenantId,tenant.getId());
         //获取企业token。
         String corpAccessToken = dingAuthTokenService.getThirdCorpAccessToken(corpId,tenant.getSuiteTicket());
-        System.out.println("企业" + JSONObject.toJSONString(corpAccessToken));
+        // System.out.println("企业" + JSONObject.toJSONString(corpAccessToken));
+        log.info("企业" + JSONObject.toJSONString(corpAccessToken));
         //根据管理员用户userid查询管理员信息
         OapiV2UserGetResponse userUnfo = dingAuthTokenService.getUser(dingUserTenantRelateDO.getUserId(), corpAccessToken);
-        System.out.println("用户管理员信息" + JSONObject.toJSONString(userUnfo));
+        // System.out.println("用户管理员信息" + JSONObject.toJSONString(userUnfo));
+        log.info("用户管理员信息" + JSONObject.toJSONString(userUnfo));
 
         //todo 初始化用户
         GetUserResponseBody result= addressBookUserInfo.getBody();
         Boolean adminType = false;
         //todo 判断是否是管理员用户
-        if(userUnfo.getResult().getUserid().equals(result.getUnionId())){
+        if(userUnfo.getResult().getUnionid().equals(result.getUnionId())){
             adminType = true;
 
             //-权限需开通

+ 10 - 0
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/auth/AdminAuthServiceImpl.java

@@ -11,6 +11,7 @@ import cn.iocoder.yudao.module.system.api.sms.SmsCodeApi;
 import cn.iocoder.yudao.module.system.api.social.dto.SocialUserBindReqDTO;
 import cn.iocoder.yudao.module.system.api.social.dto.SocialUserRespDTO;
 import cn.iocoder.yudao.module.system.controller.admin.auth.vo.*;
+import cn.iocoder.yudao.module.system.controller.admin.user.vo.tenant.UserTenantRelateSaveReqVO;
 import cn.iocoder.yudao.module.system.controller.admin.user.vo.user.UserSaveReqVO;
 import cn.iocoder.yudao.module.system.convert.auth.AuthConvert;
 import cn.iocoder.yudao.module.system.dal.dataobject.oauth2.OAuth2AccessTokenDO;
@@ -24,6 +25,7 @@ import cn.iocoder.yudao.module.system.service.member.MemberService;
 import cn.iocoder.yudao.module.system.service.oauth2.OAuth2TokenService;
 import cn.iocoder.yudao.module.system.service.social.SocialUserService;
 import cn.iocoder.yudao.module.system.service.user.AdminUserService;
+import cn.iocoder.yudao.module.system.service.user.UserTenantRelateService;
 import com.google.common.annotations.VisibleForTesting;
 import com.xingyuv.captcha.model.common.ResponseModel;
 import com.xingyuv.captcha.model.vo.CaptchaVO;
@@ -66,6 +68,9 @@ public class AdminAuthServiceImpl implements AdminAuthService {
     @Resource
     private SmsCodeApi smsCodeApi;
 
+    @Resource
+    private UserTenantRelateService userTenantRelateService;
+
     /**
      * 验证码的开关,默认为 true
      */
@@ -121,6 +126,11 @@ public class AdminAuthServiceImpl implements AdminAuthService {
 //            socialUserService.bindSocialUser(new SocialUserBindReqDTO(user.getId(), getUserType().getValue(),
 //                    reqVO.getSocialType(), reqVO.getSocialCode(), reqVO.getSocialState()));
 //        }
+        // 登录后,设置用户当前所在租户标记
+        // 将这个用户所有租户关系设为不生效
+        userTenantRelateService.deactivateAllForUser(reqVO.getId());
+        // 将这个用户的这个租户关系设为生效
+        userTenantRelateService.activateForUser(new UserTenantRelateSaveReqVO().setUserId(reqVO.getId()).setTenantId(reqVO.getTenantId()));
         // 创建 Token 令牌,记录登录日志
         return createTokenAfterLoginSuccess(reqVO.getId(), reqVO.getUsername(), LoginLogTypeEnum.LOGIN_USERNAME,reqVO.getTenantId());
     }

+ 45 - 22
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/tenant/TenantServiceImpl.java

@@ -181,35 +181,39 @@ public class TenantServiceImpl implements TenantService {
         //钉钉同步管理员ID
         DingUserTenantRelateDO dingUserTenantRelateDO = dingUserTenantRelateMapper.selectOne(DingUserTenantRelateDO::getTenantId,tenant.getId());
 
-        AtomicLong roleIdHolder = new AtomicLong(0L);
+        // AtomicLong roleIdHolder = new AtomicLong(0L);
         TenantUtils.execute(tenant.getId(), () -> {
-            roleIdHolder.set(createSystemSuperAdminRole(tenant.getId()));
+            // roleIdHolder.set(createSystemSuperAdminRole(tenant.getId()));
             // 分配角色
-            permissionService.assignUserRole(user.getId(), singleton(roleIdHolder.get()));
+            RoleDO roleDO = roleService.selectByName(RoleCodeEnum.SYSTEM_SUPER_ADMIN.getName());
+            if (roleDO == null || roleDO.getId() == null) {
+                throw exception(ROLE_NOT_EXISTS);
+            }
+            permissionService.assignUserRole(user.getId(), singleton(roleDO.getId()));
             if(null!=dingUserTenantRelateDO && dingUserTenantRelateDO.getUserId().equals(user.getUsername())){
                 // 修改租户的管理员
                 tenantMapper.updateById(new TenantDO().setId(tenant.getId()).setContactUserId(user.getId()));
             }
         });
-        Long roleId = roleIdHolder.get(); // 在 lambda 表达式外部获取值
-        // 使用异步处理来创建其他内置角色和分配权限
-        CompletableFuture.runAsync(() -> {
-            try {
-                TenantUtils.execute(tenant.getId(), () -> {
-                    // 复制部署流程(目前共12个)
-                    bpmModelApi.copyAndDeploy(null, null);
-                    // 添加租户字典默认类型和数据
-                    dictTypeTenantService.initDictTypeAndDataForTenant(null);
-                    this.createSystemAdminRole(tenant.getId());
-                    this.createCommonEmployeeRole(tenant.getId());
-                    this.createDepartmentLeaderRole(tenant.getId());
-                });
-            } catch (Exception e) {
-                // 处理异步任务中的异常
-                log.error("Error creating system roles and permissions for tenant", e);
-                throw exception(ROLES_PERMISSIONS_CREATE_ERROR, e.getMessage());
-            }
-        });
+        // Long roleId = roleIdHolder.get(); // 在 lambda 表达式外部获取值
+        // // 使用异步处理来创建其他内置角色和分配权限
+        // CompletableFuture.runAsync(() -> {
+        //     try {
+        //         TenantUtils.execute(tenant.getId(), () -> {
+        //             // 复制部署流程(目前共12个)
+        //             bpmModelApi.copyAndDeploy(null, null);
+        //             // 添加租户字典默认类型和数据
+        //             dictTypeTenantService.initDictTypeAndDataForTenant(null);
+        //             this.createSystemAdminRole(tenant.getId());
+        //             this.createCommonEmployeeRole(tenant.getId());
+        //             this.createDepartmentLeaderRole(tenant.getId());
+        //         });
+        //     } catch (Exception e) {
+        //         // 处理异步任务中的异常
+        //         log.error("Error creating system roles and permissions for tenant", e);
+        //         throw exception(ROLES_PERMISSIONS_CREATE_ERROR, e.getMessage());
+        //     }
+        // });
     }
 
     @Override
@@ -779,6 +783,25 @@ public class TenantServiceImpl implements TenantService {
         tenantMapper.insert(tenant);
         // 创建管理员与租户关系
         dingUserTenantRelateMapper.insert(new DingUserTenantRelateDO().setUserId(createReqVO.getManageUserId()).setTenantId(tenant.getId()));
+        // 使用异步处理来创建其他内置角色和分配权限
+        CompletableFuture.runAsync(() -> {
+            try {
+                TenantUtils.execute(tenant.getId(), () -> {
+                    // 复制部署流程(目前共12个)
+                    bpmModelApi.copyAndDeploy(null, null);
+                    // 添加租户字典默认类型和数据
+                    dictTypeTenantService.initDictTypeAndDataForTenant(null);
+                    this.createSystemSuperAdminRole(tenant.getId());
+                    this.createSystemAdminRole(tenant.getId());
+                    this.createCommonEmployeeRole(tenant.getId());
+                    this.createDepartmentLeaderRole(tenant.getId());
+                });
+            } catch (Exception e) {
+                // 处理异步任务中的异常
+                log.error("Error creating system roles and permissions for tenant", e);
+                throw exception(ROLES_PERMISSIONS_CREATE_ERROR, e.getMessage());
+            }
+        });
     }
 
     @Override