|
@@ -29,8 +29,10 @@ import org.dromara.common.tenant.core.TenantEntity;
|
|
|
import org.dromara.common.tenant.helper.TenantHelper;
|
|
|
import org.dromara.system.domain.*;
|
|
|
import org.dromara.system.domain.bo.SysTenantBo;
|
|
|
+import org.dromara.system.domain.vo.SysRoleVo;
|
|
|
import org.dromara.system.domain.vo.SysTenantVo;
|
|
|
import org.dromara.system.mapper.*;
|
|
|
+import org.dromara.system.service.ISysRoleService;
|
|
|
import org.dromara.system.service.ISysTenantService;
|
|
|
import org.springframework.cache.annotation.CacheEvict;
|
|
|
import org.springframework.cache.annotation.Cacheable;
|
|
@@ -39,6 +41,9 @@ import org.springframework.transaction.annotation.Transactional;
|
|
|
|
|
|
import java.util.*;
|
|
|
|
|
|
+import static org.dromara.common.core.constant.Constants.Y;
|
|
|
+import static org.dromara.common.core.constant.TenantConstants.SUPER_ADMIN_ROLE_KEY;
|
|
|
+
|
|
|
/**
|
|
|
* 租户Service业务层处理
|
|
|
*
|
|
@@ -54,6 +59,7 @@ public class SysTenantServiceImpl implements ISysTenantService {
|
|
|
private final SysUserMapper userMapper;
|
|
|
private final SysDeptMapper deptMapper;
|
|
|
private final SysRoleMapper roleMapper;
|
|
|
+ private final ISysRoleService sysRoleService;
|
|
|
private final SysRoleMenuMapper roleMenuMapper;
|
|
|
private final SysRoleDeptMapper roleDeptMapper;
|
|
|
private final SysUserRoleMapper userRoleMapper;
|
|
@@ -61,6 +67,7 @@ public class SysTenantServiceImpl implements ISysTenantService {
|
|
|
private final SysDictDataMapper dictDataMapper;
|
|
|
private final SysConfigMapper configMapper;
|
|
|
private final SysUserTenantMapper sysUserTenantMapper;
|
|
|
+ private final SysMenuMapper sysMenuMapper;
|
|
|
|
|
|
/**
|
|
|
* 查询租户
|
|
@@ -138,7 +145,7 @@ public class SysTenantServiceImpl implements ISysTenantService {
|
|
|
bo.setId(add.getId());
|
|
|
|
|
|
// 根据套餐创建角色
|
|
|
- Long roleId = createTenantRole(tenantId, bo.getPackageId());
|
|
|
+ List<Long> roleIds = createTenantRole(tenantId, bo.getPackageId());
|
|
|
|
|
|
// 创建部门: 公司名是部门名称
|
|
|
SysDept dept = new SysDept();
|
|
@@ -150,10 +157,16 @@ public class SysTenantServiceImpl implements ISysTenantService {
|
|
|
Long deptId = dept.getDeptId();
|
|
|
|
|
|
// 角色和部门关联表
|
|
|
- SysRoleDept roleDept = new SysRoleDept();
|
|
|
- roleDept.setRoleId(roleId);
|
|
|
- roleDept.setDeptId(deptId);
|
|
|
- roleDeptMapper.insert(roleDept);
|
|
|
+
|
|
|
+ List<SysRoleDept> roleDepts = new ArrayList<>(roleIds.size());
|
|
|
+ roleIds.forEach(roleId -> {
|
|
|
+ SysRoleDept roleDept = new SysRoleDept();
|
|
|
+ roleDept.setRoleId(roleId);
|
|
|
+ roleDept.setDeptId(deptId);
|
|
|
+ roleDepts.add(roleDept);
|
|
|
+ });
|
|
|
+ roleDeptMapper.insertBatch(roleDepts);
|
|
|
+
|
|
|
|
|
|
// 创建系统用户
|
|
|
SysUser user = new SysUser();
|
|
@@ -163,6 +176,7 @@ public class SysTenantServiceImpl implements ISysTenantService {
|
|
|
user.setPassword(BCrypt.hashpw(bo.getPassword()));
|
|
|
user.setDeptId(deptId);
|
|
|
user.setPhonenumber(bo.getContactPhone());
|
|
|
+ user.setIsAuthentication(Y);
|
|
|
userMapper.insert(user);
|
|
|
//新增系统用户后,默认当前用户为部门的负责人
|
|
|
SysDept sd = new SysDept();
|
|
@@ -171,14 +185,17 @@ public class SysTenantServiceImpl implements ISysTenantService {
|
|
|
deptMapper.updateById(sd);
|
|
|
|
|
|
// 用户和角色关联表
|
|
|
- SysUserRole userRole = new SysUserRole();
|
|
|
- userRole.setUserId(user.getUserId());
|
|
|
- userRole.setRoleId(roleId);
|
|
|
- userRole.setTenantId(tenantId);
|
|
|
- userRoleMapper.insert(userRole);
|
|
|
-
|
|
|
+ List<SysUserRole> userRoles = new ArrayList<>(roleIds.size());
|
|
|
+ roleIds.forEach(roleId -> {
|
|
|
+ SysUserRole userRole = new SysUserRole();
|
|
|
+ userRole.setUserId(user.getUserId());
|
|
|
+ userRole.setRoleId(roleId);
|
|
|
+ userRole.setTenantId(tenantId);
|
|
|
+ userRoles.add(userRole);
|
|
|
+ });
|
|
|
+ userRoleMapper.insertBatch(userRoles);
|
|
|
|
|
|
- // 用户和角色关联表
|
|
|
+ // 租户和角色关联表
|
|
|
SysUserTenant sysUserTenant = new SysUserTenant();
|
|
|
sysUserTenant.setUserId(user.getUserId());
|
|
|
sysUserTenant.setTenantId(tenantId);
|
|
@@ -255,36 +272,48 @@ public class SysTenantServiceImpl implements ISysTenantService {
|
|
|
* @param packageId 租户套餐id
|
|
|
* @return 角色id
|
|
|
*/
|
|
|
- private Long createTenantRole(String tenantId, Long packageId) {
|
|
|
+ private List<Long> createTenantRole(String tenantId, Long packageId) {
|
|
|
// 获取租户套餐
|
|
|
SysTenantPackage tenantPackage = tenantPackageMapper.selectById(packageId);
|
|
|
if (ObjectUtil.isNull(tenantPackage)) {
|
|
|
throw new ServiceException("套餐不存在");
|
|
|
}
|
|
|
// 获取套餐菜单id
|
|
|
- List<Long> menuIds = StringUtils.splitTo(tenantPackage.getMenuIds(), Convert::toLong);
|
|
|
+ //List<Long> menuIds = StringUtils.splitTo(tenantPackage.getMenuIds(), Convert::toLong);
|
|
|
|
|
|
// 创建角色
|
|
|
- SysRole role = new SysRole();
|
|
|
- role.setTenantId(tenantId);
|
|
|
- role.setRoleName(TenantConstants.TENANT_ADMIN_ROLE_NAME);
|
|
|
- role.setRoleKey(TenantConstants.TENANT_ADMIN_ROLE_KEY);
|
|
|
- role.setRoleSort(1);
|
|
|
- role.setStatus(SystemConstants.NORMAL);
|
|
|
- roleMapper.insert(role);
|
|
|
- Long roleId = role.getRoleId();
|
|
|
-
|
|
|
- // 创建角色菜单
|
|
|
- List<SysRoleMenu> roleMenus = new ArrayList<>(menuIds.size());
|
|
|
- menuIds.forEach(menuId -> {
|
|
|
- SysRoleMenu roleMenu = new SysRoleMenu();
|
|
|
- roleMenu.setRoleId(roleId);
|
|
|
- roleMenu.setMenuId(menuId);
|
|
|
- roleMenus.add(roleMenu);
|
|
|
- });
|
|
|
- roleMenuMapper.insertBatch(roleMenus);
|
|
|
+ //查询000000的角色
|
|
|
+ List<SysRoleVo> roleVos = sysRoleService.selectRoleAll();
|
|
|
+ List<Long> roleIds = new ArrayList<>();
|
|
|
+ for (SysRoleVo roleVo : roleVos) {
|
|
|
+ if(!SUPER_ADMIN_ROLE_KEY.equals(roleVo.getRoleKey())){
|
|
|
+ SysRole role = new SysRole();
|
|
|
+ role.setTenantId(tenantId);
|
|
|
+ role.setRoleName(TenantConstants.TENANT_ADMIN_ROLE_NAME);
|
|
|
+ role.setRoleKey(TenantConstants.TENANT_ADMIN_ROLE_KEY);
|
|
|
+ role.setRoleSort(1);
|
|
|
+ role.setStatus(SystemConstants.NORMAL);
|
|
|
+ roleMapper.insert(role);
|
|
|
+
|
|
|
+ Long roleId = role.getRoleId();
|
|
|
+ roleIds.add(roleId);
|
|
|
+
|
|
|
+ //查询角色的菜单
|
|
|
+ List<Long> menuIdList =sysMenuMapper.selectMenuListByRoleId(roleId,false);
|
|
|
+ // 创建角色菜单
|
|
|
+ List<SysRoleMenu> roleMenus = new ArrayList<>(menuIdList.size());
|
|
|
+ menuIdList.forEach(menuId -> {
|
|
|
+ SysRoleMenu roleMenu = new SysRoleMenu();
|
|
|
+ roleMenu.setRoleId(roleId);
|
|
|
+ roleMenu.setMenuId(menuId);
|
|
|
+ roleMenus.add(roleMenu);
|
|
|
+ });
|
|
|
+ roleMenuMapper.insertBatch(roleMenus);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
|
|
|
- return roleId;
|
|
|
+ return roleIds;
|
|
|
}
|
|
|
|
|
|
/**
|