From e12e717a045c4b5d9893ddac9135c1721e7a0cc3 Mon Sep 17 00:00:00 2001
From: ludc
Date: 星期四, 16 三月 2023 17:58:26 +0800
Subject: [PATCH] 上传更改过的源码jar包,上传租户管理相关功能

---
 Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/service/impl/TenantServiceImpl.java |  272 ++++++++++++++++++++++++++++++++++++------------------
 1 files changed, 181 insertions(+), 91 deletions(-)

diff --git a/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/service/impl/TenantServiceImpl.java b/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/service/impl/TenantServiceImpl.java
index 5fcbc3c..bcb74b6 100644
--- a/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/service/impl/TenantServiceImpl.java
+++ b/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/service/impl/TenantServiceImpl.java
@@ -16,10 +16,16 @@
  */
 package org.springblade.system.service.impl;
 
+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;
@@ -38,13 +44,17 @@
 import org.springblade.system.user.entity.User;
 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 java.util.ArrayList;
-import java.util.Date;
-import java.util.LinkedList;
-import java.util.List;
+import javax.annotation.PostConstruct;
+import java.io.FileInputStream;
+import java.io.IOException;
+import java.util.*;
 import java.util.stream.Collectors;
 
 import static org.springblade.common.constant.TenantConstant.*;
@@ -56,7 +66,7 @@
  * @author Chill
  */
 @Service
-@AllArgsConstructor
+@RequiredArgsConstructor
 public class TenantServiceImpl extends BaseServiceImpl<TenantMapper, Tenant> implements ITenantService {
 
 	private final TenantId tenantId;
@@ -67,6 +77,25 @@
 	private final IRoleMenuService roleMenuService;
 	private final IDictBizService dictBizService;
 	private final IUserClient userClient;
+	/**
+	 * 鑾峰彇鏄惁鍏佽鑷鎺у埗涓夊憳鏄惁寮�鍚�
+	 */
+	@Value("${ssa.ssa-enable}")
+	private Boolean ssaEnable;
+	/**
+	 * 鑾峰彇榛樿涓夊憳绠$悊鍛樼殑鍚嶇О
+	 */
+	@Value("#{'${ssa.ssa-names}'.split(',')}")
+	private List<String> ssaNames;
+	/**
+	 * 涓夊憳绠$悊鑿滃崟閰嶇疆
+	 */
+	@Value("#{'${ssa.sys-menus}'.split(',')}")
+	private List<String> sysMenus;
+	@Value("#{'${ssa.sec-menus}'.split(',')}")
+	private List<String> secMenus;
+	@Value("#{'${ssa.audit-menus}'.split(',')}")
+	private List<String> auditMenus;
 
 	@Override
 	public IPage<Tenant> selectTenantPage(IPage<Tenant> page, Tenant tenant) {
@@ -80,82 +109,79 @@
 
 	@Override
 	@Transactional(rollbackFor = Exception.class)
-	public boolean submitTenant(Tenant tenant) {
+	public boolean submitTenant(TenantVO tenant) {
 		if (Func.isEmpty(tenant.getId())) {
+			// 鑾峰彇鍒版湭鍒犻櫎绉熸埛鎬绘暟锛岀敓鎴愭柊鐨勭鎴穒d
 			List<Tenant> tenants = baseMapper.selectList(Wrappers.<Tenant>query().lambda().eq(Tenant::getIsDeleted, BladeConstant.DB_NOT_DELETED));
 			List<String> codes = tenants.stream().map(Tenant::getTenantId).collect(Collectors.toList());
 			String tenantId = getTenantId(codes);
 			tenant.setTenantId(tenantId);
-			// 鑾峰彇鍙傛暟閰嶇疆鐨勮处鍙烽搴�
-			int accountNumber = Func.toInt(ParamCache.getValue(ACCOUNT_NUMBER_KEY), DEFAULT_ACCOUNT_NUMBER);
-			tenant.setAccountNumber(accountNumber);
-			// 鏂板缓绉熸埛瀵瑰簲鐨勯粯璁よ鑹�
-			Role role = new Role();
-			role.setTenantId(tenantId);
-			role.setParentId(BladeConstant.TOP_PARENT_ID);
-			role.setRoleName("绠$悊鍛�");
-			role.setRoleAlias("admin");
-			role.setSort(2);
-			role.setIsDeleted(BladeConstant.DB_NOT_DELETED);
-			roleService.save(role);
-			// 鏂板缓绉熸埛瀵瑰簲鐨勮鑹茶彍鍗曟潈闄�
-			LinkedList<Menu> userMenus = new LinkedList<>();
-			// 鑾峰彇鍙傛暟閰嶇疆鐨勯粯璁よ彍鍗曢泦鍚堬紝閫楀彿闅斿紑
-			List<String> menuCodes = Func.toStrList(ParamCache.getValue(ACCOUNT_MENU_CODE_KEY));
-			List<Menu> menus = getMenus((menuCodes.size() > 0 ? menuCodes : MENU_CODES), userMenus);
-			List<RoleMenu> roleMenus = new ArrayList<>();
-			menus.forEach(menu -> {
-				RoleMenu roleMenu = new RoleMenu();
-				roleMenu.setMenuId(menu.getId());
-				roleMenu.setRoleId(role.getId());
-				roleMenus.add(roleMenu);
-			});
-			roleMenuService.saveBatch(roleMenus);
-			// 鏂板缓绉熸埛瀵瑰簲鐨勯粯璁ら儴闂�
-			Dept dept = new Dept();
-			dept.setTenantId(tenantId);
-			dept.setParentId(BladeConstant.TOP_PARENT_ID);
-			dept.setAncestors(String.valueOf(BladeConstant.TOP_PARENT_ID));
-			dept.setDeptName(tenant.getTenantName());
-			dept.setFullName(tenant.getTenantName());
-			dept.setDeptCategory(1);
-			dept.setSort(2);
-			dept.setIsDeleted(BladeConstant.DB_NOT_DELETED);
-			deptService.save(dept);
-			// 鏂板缓绉熸埛瀵瑰簲鐨勯粯璁ゅ矖浣�
-			Post post = new Post();
-			post.setTenantId(tenantId);
-			post.setCategory(1);
-			post.setPostCode("ceo");
-			post.setPostName("棣栧腑鎵ц瀹�");
-			post.setSort(1);
-			postService.save(post);
-			// 鏂板缓绉熸埛瀵瑰簲鐨勯粯璁や笟鍔″瓧鍏�
-			LinkedList<DictBiz> dictBizs = new LinkedList<>();
-			List<DictBiz> dictBizList = getDictBizs(tenantId, dictBizs);
-			dictBizService.saveBatch(dictBizList);
-			// 鏂板缓绉熸埛瀵瑰簲鐨勯粯璁ょ鐞嗙敤鎴�
-			User user = new User();
-			user.setTenantId(tenantId);
-			user.setName("admin");
-			user.setRealName("admin");
-			user.setAccount("admin");
-			// 鑾峰彇鍙傛暟閰嶇疆鐨勫瘑鐮�
-			String password = Func.toStr(ParamCache.getValue(PASSWORD_KEY), DEFAULT_PASSWORD);
-			user.setPassword(password);
-			user.setRoleId(String.valueOf(role.getId()));
-			user.setDeptId(String.valueOf(dept.getId()));
-			user.setPostId(String.valueOf(post.getId()));
-			user.setBirthday(new Date());
-			user.setSex(1);
-			user.setUserType(UserEnum.WEB.getCategory());
-			user.setIsDeleted(BladeConstant.DB_NOT_DELETED);
-			boolean temp = super.saveOrUpdate(tenant);
-			R<Boolean> result = userClient.saveUser(user);
-			if (!result.isSuccess()) {
-				throw new ServiceException(result.getMsg());
+			// 閰嶇疆涓篺alse锛屽苟涓斿墠绔紶杈撶殑鍙傛暟涓篺alse灏变笉闇�瑕佸垱寤轰笁鍛�
+			if(!this.ssaEnable && !tenant.getMembersFlag()){
+				// 涓嶅紑鍚笁鍛樼鐞嗘椂鐩存帴鍒涘缓涓�涓渶楂樻潈闄愮殑绠$悊鍛�
+				Role role = new Role(tenantId,BladeConstant.TOP_PARENT_ID,"瓒呯骇绠$悊鍛�",1,"admin",BladeConstant.DB_NOT_DELETED);
+				roleService.save(role);
+				// 鏂板缓绉熸埛瀵瑰簲鐨勮鑹茶彍鍗曟潈闄�
+				saveRoleMenus(role, MENU_CODES);
+				// 鏂板缓绉熸埛瀵瑰簲鐨勯粯璁ら儴闂�
+				Dept dept = generateDept(tenantId, tenant);
+				deptService.save(dept);
+				// 鏂板缓绉熸埛瀵瑰簲鐨勯粯璁ゅ矖浣�
+				Post postInfo = generatePost(tenantId, 1, "ceo", "棣栧腑鎵ц瀹�", 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);
+				// 鍏堜繚瀛樼鎴�
+				boolean temp = super.saveOrUpdate(tenant);
+				// 鍒涘缓鐢ㄦ埛
+				R<Boolean> result = userClient.saveUser(userInfo);
+				if (!result.isSuccess()) {
+					throw new ServiceException(result.getMsg());
+				}
+				return temp;
+			}else {
+				// 鏂板缓绉熸埛瀵瑰簲鐨勯粯璁よ鑹�
+				List<Role> roles = new ArrayList<>();
+				Role roleSys = new Role(tenantId,BladeConstant.TOP_PARENT_ID,"绯荤粺绠$悊鍛�",1,this.ssaNames.get(0),BladeConstant.DB_NOT_DELETED);
+				Role roleSec = new Role(tenantId,BladeConstant.TOP_PARENT_ID,"瀹夊叏绠$悊鍛�",2,this.ssaNames.get(1),BladeConstant.DB_NOT_DELETED);
+				Role roleAudit = new Role(tenantId,BladeConstant.TOP_PARENT_ID,"瀹¤绠$悊鍛�",3,this.ssaNames.get(2),BladeConstant.DB_NOT_DELETED);
+				roles.add(roleSys);
+				roles.add(roleSec);
+				roles.add(roleAudit);
+				roleService.saveBatch(roles);
+				// 鏂板缓绉熸埛瀵瑰簲鐨勮鑹茶彍鍗曟潈闄�
+				saveRoleMenus(roleSys,this.sysMenus); //绯荤粺绠$悊鍛樿鑹茶彍鍗曟潈闄�
+				saveRoleMenus(roleSec,this.secMenus); //瀹夊叏绠$悊鍛樿鑹茶彍鍗曟潈闄�
+				saveRoleMenus(roleAudit,this.auditMenus); //瀹¤绠$悊鍛樿鑹茶彍鍗曟潈闄�
+				// 鏂板缓绉熸埛瀵瑰簲鐨勯粯璁ら儴闂�
+				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));
+				// 鏂板缓绉熸埛瀵瑰簲鐨勯粯璁や笟鍔″瓧鍏�
+				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);
+				// 鍏堜繚瀛樼鎴�
+				boolean temp = super.saveOrUpdate(tenant);
+				// 鍒涘缓鐢ㄦ埛
+				R<Boolean> result = userClient.saveUserList(Arrays.asList(userSys,userSec,userAudit));
+				if (!result.isSuccess()) {
+					throw new ServiceException(result.getMsg());
+				}
+				return temp;
 			}
-			return temp;
 		} else {
 			CacheUtil.clear(SYS_CACHE, tenant.getTenantId());
 			return super.saveOrUpdate(tenant);
@@ -180,22 +206,87 @@
 	}
 
 	@Override
-	public boolean setting(Integer accountNumber, Date expireTime, String ids) {
-		List<String> tenantIds = this.list(Wrappers.<Tenant>query().lambda().in(Tenant::getId, ids))
-			.stream().map(tenant -> Func.toStr(tenant.getTenantId())).distinct().collect(Collectors.toList());
-		CacheUtil.clear(SYS_CACHE, tenantIds);
-		Func.toLongList(ids).forEach(id -> {
-			Kv kv = Kv.create().set("accountNumber", accountNumber).set("expireTime", expireTime).set("id", id);
-			String licenseKey = DesUtil.encryptToHex(JsonUtil.toJson(kv), DES_KEY);
-			update(
-				Wrappers.<Tenant>update().lambda()
-					.set(Tenant::getAccountNumber, accountNumber)
-					.set(Tenant::getExpireTime, expireTime)
-					.set(Tenant::getLicenseKey, licenseKey)
-					.eq(Tenant::getId, id)
-			);
+	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;
+	}
+
+	@Override
+	public boolean findIsOpen() {
+		return this.ssaEnable;
+	}
+
+	/**
+	 * 鍒涘缓绉熸埛涓嬬殑榛樿宀椾綅
+	 * @param tenantId
+	 * @param sort
+	 */
+	private Post generatePost(String tenantId,Integer categ,String postCode,String postName,Integer sort){
+		Post post = new Post();
+		post.setTenantId(tenantId);
+		post.setCategory(categ);
+		post.setPostCode(postCode);
+		post.setPostName(postName);
+		post.setSort(sort);
+		return post;
+	}
+
+	/**
+	 * 鍒涘缓榛樿鐢ㄦ埛锛屽苟杩涜鐩稿叧鏉冮檺璁剧疆
+	 */
+	private User generateUser(String tenantId, Role role, Dept dept, Post post){
+		User user = new User();
+		user.setTenantId(tenantId);
+		user.setName(role.getRoleAlias());
+		user.setRealName(role.getRoleName());
+		user.setAccount(role.getRoleAlias());
+		// 鑾峰彇鍙傛暟閰嶇疆鐨勫瘑鐮�
+		String password = Func.toStr(ParamCache.getValue(PASSWORD_KEY), DEFAULT_PASSWORD);
+		user.setPassword(password);
+		user.setRoleId(String.valueOf(role.getId()));
+		user.setDeptId(String.valueOf(dept.getId()));
+		user.setPostId(String.valueOf(post.getId()));
+		user.setBirthday(new Date());
+		user.setSex(1);
+		user.setUserType(UserEnum.WEB.getCategory());
+		user.setIsDeleted(BladeConstant.DB_NOT_DELETED);
+		return user;
+	}
+
+	/**
+	 * 淇濆瓨鐢ㄦ埛瀵瑰簲鐨勫叧鑱斾俊鎭�
+	 * @param role
+	 */
+	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<RoleMenu> roleMenus = new ArrayList<>();
+		//鍒涘缓鎵�鏈夎彍鍗曡鑹插叧鑱斿璞�
+		menus.forEach(menu -> {
+			roleMenus.add(new RoleMenu(menu.getId(),role.getId()));
 		});
-		return true;
+		roleMenuService.saveBatch(roleMenus);
+	}
+
+	/**
+	 * 鍒涘缓榛樿閮ㄩ棬
+	 * @param tenantId
+	 * @param tenant
+	 */
+	private Dept generateDept(String tenantId,Tenant tenant){
+		Dept dept = new Dept();
+		dept.setTenantId(tenantId);
+		dept.setParentId(BladeConstant.TOP_PARENT_ID);
+		dept.setAncestors(String.valueOf(BladeConstant.TOP_PARENT_ID));
+		dept.setDeptName(tenant.getTenantName());
+		dept.setFullName(tenant.getTenantName());
+		dept.setDeptCategory(1);
+		dept.setSort(2);
+		dept.setIsDeleted(BladeConstant.DB_NOT_DELETED);
+		return dept;
 	}
 
 	private String getTenantId(List<String> codes) {
@@ -248,6 +339,5 @@
 			recursionDictBiz(tenantId, oldSubParentId, newSubParentId, dictBizs);
 		});
 	}
-
 
 }

--
Gitblit v1.9.3