From 7abe0fb39038e55fa7f28804f437a0431a25ae37 Mon Sep 17 00:00:00 2001
From: 田源 <lastanimals@163.com>
Date: 星期五, 24 三月 2023 14:38:12 +0800
Subject: [PATCH] 上传前端代码
---
Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/service/impl/TenantServiceImpl.java | 270 +++++++++++++++++++++++++++++++++++-------------------
1 files changed, 175 insertions(+), 95 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..0d440f1 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,19 +16,17 @@
*/
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.Wrappers;
-import lombok.AllArgsConstructor;
+import lombok.RequiredArgsConstructor;
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;
@@ -38,13 +36,12 @@
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.Value;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.LinkedList;
-import java.util.List;
+import java.util.*;
import java.util.stream.Collectors;
import static org.springblade.common.constant.TenantConstant.*;
@@ -56,7 +53,7 @@
* @author Chill
*/
@Service
-@AllArgsConstructor
+@RequiredArgsConstructor
public class TenantServiceImpl extends BaseServiceImpl<TenantMapper, Tenant> implements ITenantService {
private final TenantId tenantId;
@@ -67,6 +64,28 @@
private final IRoleMenuService roleMenuService;
private final IDictBizService dictBizService;
private final IUserClient userClient;
+ private final IStrategyService strategyService;
+ private final IUserPwdstrategyService userPwdstrategyService;
+
+ /**
+ * 鑾峰彇鏄惁鍏佽鑷鎺у埗涓夊憳鏄惁寮�鍚�
+ */
+ @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 +99,80 @@
@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锛屽苟涓斿墠绔紶杈撶殑鍙傛暟涓�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);
+ // 鏂板缓绉熸埛瀵瑰簲鐨勮鑹茶彍鍗曟潈闄�
+ saveRoleMenus(role, MENU_CODES);
+ // 鏂板缓绉熸埛瀵瑰簲鐨勯粯璁ら儴闂�
+ Dept dept = generateDept(tenantId, tenant);
+ deptService.save(dept);
+ // 鏂板缓绉熸埛瀵瑰簲鐨勯粯璁ゅ矖浣�
+ 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 user = generateUser(tenantId, role, dept, postInfo);
+ // 鍏堜繚瀛樼鎴�
+ boolean temp = super.saveOrUpdate(tenant);
+ // 鍒涘缓鐢ㄦ埛
+ R<Boolean> result = userClient.saveUser(user);
+ //鐢熸垚鐢ㄦ埛瀵嗙爜绛栫暐绠$悊璁板綍
+ 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 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, postSys);
+ User userSec = generateUser(tenantId,roleSec,dept,postSec);
+ User userAudit = generateUser(tenantId,roleAudit,dept,postAudit);
+ // 鍏堜繚瀛樼鎴�
+ 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 +197,86 @@
}
@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"));
+ 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((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 +329,5 @@
recursionDictBiz(tenantId, oldSubParentId, newSubParentId, dictBizs);
});
}
-
}
--
Gitblit v1.9.3