ludc
2023-03-27 82a410d9ec7a5d15eed27e9990cff371feab43a1
Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/service/impl/TenantServiceImpl.java
@@ -19,22 +19,15 @@
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.common.constant.CommonConstant;
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 +38,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;
@@ -77,6 +65,9 @@
   private final IRoleMenuService roleMenuService;
   private final IDictBizService dictBizService;
   private final IUserClient userClient;
   private final IStrategyService strategyService;
   private final IUserPwdstrategyService userPwdstrategyService;
   /**
    * 获取是否允许自行控制三员是否开启
    */
@@ -116,8 +107,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,18 +118,19 @@
            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<>();
            List<DictBiz> dictBizList = getDictBizs(tenantId, dictBizs);
            dictBizService.saveBatch(dictBizList);
            // 新建租户对应的默认管理用户
            User userInfo = generateUser(tenantId, role, dept, postInfo);
            // 新建租户对应的默认管理用
            User user = generateUser(tenantId, role, dept, postInfo);
            // 先保存租户
            boolean temp = super.saveOrUpdate(tenant);
            // 创建用户
            R<Boolean> result = userClient.saveUser(userInfo);
            R<Boolean> result = userClient.saveUser(user);
            //生成用户密码策略管理记录
            if (!result.isSuccess()) {
               throw new ServiceException(result.getMsg());
            }
@@ -161,18 +153,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 +200,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;
   }
@@ -241,6 +232,8 @@
      user.setName(role.getRoleAlias());
      user.setRealName(role.getRoleName());
      user.setAccount(role.getRoleAlias());
      user.setStrategyUpdateStatus(CommonConstant.TOP_PARENT_ID);
      user.setPwdUpdateTime(new Date());
      // 获取参数配置的密码
      String password = Func.toStr(ParamCache.getValue(PASSWORD_KEY), DEFAULT_PASSWORD);
      user.setPassword(password);
@@ -261,8 +254,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 -> {