田源
2023-03-21 fbe37e2e00bddec409b595a4a6e50c4bb32a008a
Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/service/impl/TenantServiceImpl.java
@@ -19,22 +19,14 @@
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.IdWorker;
import com.baomidou.mybatisplus.core.toolkit.StringUtils;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import javafx.geometry.Pos;
import lombok.AllArgsConstructor;
import lombok.RequiredArgsConstructor;
import org.apache.ibatis.mapping.Environment;
import org.springblade.common.constant.TenantConstant;
import org.springblade.core.cache.utils.CacheUtil;
import org.springblade.core.log.exception.ServiceException;
import org.springblade.core.mp.base.BaseServiceImpl;
import org.springblade.core.tenant.TenantId;
import org.springblade.core.tool.api.R;
import org.springblade.core.tool.constant.BladeConstant;
import org.springblade.core.tool.jackson.JsonUtil;
import org.springblade.core.tool.support.Kv;
import org.springblade.core.tool.utils.DesUtil;
import org.springblade.core.tool.utils.Func;
import org.springblade.core.tool.utils.StringUtil;
import org.springblade.system.cache.ParamCache;
@@ -45,15 +37,10 @@
import org.springblade.system.user.enums.UserEnum;
import org.springblade.system.user.feign.IUserClient;
import org.springblade.system.vo.TenantVO;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.bind.annotation.PostMapping;
import javax.annotation.PostConstruct;
import java.io.FileInputStream;
import java.io.IOException;
import java.util.*;
import java.util.stream.Collectors;
@@ -116,8 +103,8 @@
         List<String> codes = tenants.stream().map(Tenant::getTenantId).collect(Collectors.toList());
         String tenantId = getTenantId(codes);
         tenant.setTenantId(tenantId);
         // 配置为false,并且前端传输的参数为false就不需要创建三员
         if(!this.ssaEnable && !tenant.getMembersFlag()){
         // 配置为false,并且前端传输的参数为1(未选择开启)就不需要创建三员
         if(!this.ssaEnable && tenant.getSsaEnable()==1){
            // 不开启三员管理时直接创建一个最高权限的管理员
            Role role = new Role(tenantId,BladeConstant.TOP_PARENT_ID,"超级管理员",1,"admin",BladeConstant.DB_NOT_DELETED);
            roleService.save(role);
@@ -127,7 +114,7 @@
            Dept dept = generateDept(tenantId, tenant);
            deptService.save(dept);
            // 新建租户对应的默认岗位
            Post postInfo = generatePost(tenantId, 1, "ceo", "首席执行官", 1);
            Post postInfo = generatePost(tenantId, 1, "admin", "管理员", 1);
            postService.save(postInfo);
            // 新建租户对应的默认业务字典
            LinkedList<DictBiz> dictBizs = new LinkedList<>();
@@ -161,18 +148,18 @@
            Dept dept = generateDept(tenantId, tenant);
            deptService.save(dept);
            // 新建租户对应的默认岗位
            Post postCeo = generatePost(tenantId, 1, "sysAdmin", "系统管理员", 1);
            Post postCto = generatePost(tenantId,1,"secAdmin","安全管理员",4);
            Post postCio = generatePost(tenantId,1,"auditAdmin","审计管理员",5);
            postService.saveBatch(Arrays.asList(postCeo,postCto,postCio));
            Post postSys = generatePost(tenantId, 1, this.ssaNames.get(0), "系统管理员", 1);
            Post postSec = generatePost(tenantId,1,this.ssaNames.get(1),"安全管理员",4);
            Post postAudit = generatePost(tenantId,1,this.ssaNames.get(2),"审计管理员",5);
            postService.saveBatch(Arrays.asList(postSys,postSec,postAudit));
            // 新建租户对应的默认业务字典
            LinkedList<DictBiz> dictBizs = new LinkedList<>();
            List<DictBiz> dictBizList = getDictBizs(tenantId, dictBizs);
            dictBizService.saveBatch(dictBizList);
            // 新建租户对应的默认管理用户
            User userSys = generateUser(tenantId, roleSys, dept, postCeo);
            User userSec = generateUser(tenantId,roleSec,dept,postCto);
            User userAudit = generateUser(tenantId,roleAudit,dept,postCio);
            User userSys = generateUser(tenantId, roleSys, dept, postSys);
            User userSec = generateUser(tenantId,roleSec,dept,postSec);
            User userAudit = generateUser(tenantId,roleAudit,dept,postAudit);
            // 先保存租户
            boolean temp = super.saveOrUpdate(tenant);
            // 创建用户
@@ -208,7 +195,6 @@
   @Override
   public List<Map<String,Object>> selectMaps(){
      List<Map<String, Object>> maps = listMaps(new QueryWrapper<Tenant>().select("TENANT_ID", "TENANT_NAME"));
      System.out.println(maps);
      return maps;
   }
@@ -261,8 +247,8 @@
   private void saveRoleMenus(Role role,List<String> stringMenus){
      LinkedList<Menu> userMenus = new LinkedList<>();
      // 获取参数配置的默认菜单集合,逗号隔开
      List<String> menuCodes = Func.toStrList(ParamCache.getValue(ACCOUNT_MENU_CODE_KEY));
      List<Menu> menus = getMenus((menuCodes.size() > 0 ? menuCodes : stringMenus), userMenus);
      //List<String> menuCodes = Func.toStrList(ParamCache.getValue(ACCOUNT_MENU_CODE_KEY));
      List<Menu> menus = getMenus((stringMenus), userMenus);
      List<RoleMenu> roleMenus = new ArrayList<>();
      //创建所有菜单角色关联对象
      menus.forEach(menu -> {