|
@@ -73,6 +73,8 @@ import java.util.HashSet;
|
|
|
import java.util.List;
|
|
|
import java.util.Objects;
|
|
|
import java.util.Set;
|
|
|
+import java.util.concurrent.CompletableFuture;
|
|
|
+import java.util.concurrent.atomic.AtomicLong;
|
|
|
import java.util.stream.Collectors;
|
|
|
|
|
|
import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
|
|
@@ -166,10 +168,6 @@ public class TenantServiceImpl implements TenantService {
|
|
|
if (adminUserDO == null) {
|
|
|
throw exception(USER_NOT_EXISTS);
|
|
|
}
|
|
|
-// // 更新用户信息当前租户
|
|
|
-// userService.updateUserTenantId(user.getId(), tenant.getId());
|
|
|
-// // 将这个用户所有租户关系设为不生效
|
|
|
-// userTenantRelateService.deactivateAllForUser(user.getId());
|
|
|
// 插入用户租户关系
|
|
|
userTenantRelateService.createUserTenantRelate(new UserTenantRelateSaveReqVO().setUserId(user.getId()).setTenantId(tenant.getId()).setActived(false));
|
|
|
// 先判断该租户下员工信息是否存在,如果不存在则创建
|
|
@@ -189,18 +187,30 @@ public class TenantServiceImpl implements TenantService {
|
|
|
} else {
|
|
|
throw exception(USER_TENANT_EMPLOYEE_DUPLICATE, tenant.getName());
|
|
|
}
|
|
|
+ AtomicLong roleIdHolder = new AtomicLong(0L);
|
|
|
TenantUtils.execute(tenant.getId(), () -> {
|
|
|
- // 创建租户内置角色
|
|
|
- Long roleId = createSystemSuperAdminRole(tenant.getId());
|
|
|
- createSystemAdminRole(tenant.getId());
|
|
|
- createCommonEmployeeRole(tenant.getId());
|
|
|
- createDepartmentLeaderRole(tenant.getId());
|
|
|
+ roleIdHolder.set(createSystemSuperAdminRole(tenant.getId()));
|
|
|
// 分配角色
|
|
|
- permissionService.assignUserRole(user.getId(), singleton(roleId));
|
|
|
+ permissionService.assignUserRole(user.getId(), singleton(roleIdHolder.get()));
|
|
|
// 修改租户的管理员
|
|
|
tenantMapper.updateById(new TenantDO().setId(tenant.getId()).setContactUserId(user.getId()));
|
|
|
- // 复制部署流程(目前共12个)
|
|
|
- bpmModelApi.copyAndDeploy(null, null);
|
|
|
+ });
|
|
|
+ Long roleId = roleIdHolder.get(); // 在 lambda 表达式外部获取值
|
|
|
+ // 使用异步处理来创建其他内置角色和分配权限
|
|
|
+ CompletableFuture.runAsync(() -> {
|
|
|
+ try {
|
|
|
+ TenantUtils.execute(tenant.getId(), () -> {
|
|
|
+ // 复制部署流程(目前共12个)
|
|
|
+ bpmModelApi.copyAndDeploy(null, 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());
|
|
|
+ }
|
|
|
});
|
|
|
TenantSimpleRespVO tenantSimpleRespVO = new TenantSimpleRespVO();
|
|
|
tenantSimpleRespVO.setId(tenant.getId());
|
|
@@ -223,10 +233,6 @@ public class TenantServiceImpl implements TenantService {
|
|
|
if (userTenantRelateService.checkUserHasTenant(user.getId(), tenant.getId())) {
|
|
|
throw exception(USER_TENANT_EXISTS, tenant.getName());
|
|
|
}
|
|
|
-// // 更新用户信息当前租户
|
|
|
-// userService.updateUserTenantId(user.getId(), tenant.getId());
|
|
|
-// // 将这个用户所有租户关系设为不生效
|
|
|
-// userTenantRelateService.deactivateAllForUser(user.getId());
|
|
|
// 插入用户租户关系
|
|
|
userTenantRelateService.createUserTenantRelate(new UserTenantRelateSaveReqVO().setUserId(user.getId()).setTenantId(tenant.getId()).setActived(false));
|
|
|
// 自动根据账号创建对应人事信息,只保存姓名、头像、手机号
|
|
@@ -293,7 +299,6 @@ public class TenantServiceImpl implements TenantService {
|
|
|
}
|
|
|
|
|
|
// 创建系统管理员:拥有所有OA磁贴权限和企业管理磁贴权限,只有本人数据权限,是给创建人默认授予的角色。
|
|
|
- @DSTransactional
|
|
|
private Long createSystemSuperAdminRole(Long tenantId) {
|
|
|
// 创建角色
|
|
|
RoleSaveReqVO reqVO = new RoleSaveReqVO();
|