From 210570c0056c46c35bdd349a2fac558441f86f3b Mon Sep 17 00:00:00 2001
From: 疯狂的狮子li <15040126243@163.com>
Date: 星期四, 30 三月 2023 17:36:09 +0800
Subject: [PATCH] update 优化 !pr317 代码结构
---
ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysTenantServiceImpl.java | 121 ++++++++++++++++++++++++++--------------
1 files changed, 79 insertions(+), 42 deletions(-)
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysTenantServiceImpl.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysTenantServiceImpl.java
index ea2bc54..785e48c 100644
--- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysTenantServiceImpl.java
+++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysTenantServiceImpl.java
@@ -43,16 +43,16 @@
public class SysTenantServiceImpl implements ISysTenantService {
private final SysTenantMapper baseMapper;
- private final SysTenantPackageMapper sysTenantPackageMapper;
- private final SysUserMapper sysUserMapper;
- private final SysDeptMapper sysDeptMapper;
- private final SysRoleMapper sysRoleMapper;
- private final SysRoleMenuMapper sysRoleMenuMapper;
- private final SysRoleDeptMapper sysRoleDeptMapper;
- private final SysUserRoleMapper sysUserRoleMapper;
- private final SysDictTypeMapper sysDictTypeMapper;
- private final SysDictDataMapper sysDictDataMapper;
- private final SysConfigMapper sysConfigMapper;
+ private final SysTenantPackageMapper tenantPackageMapper;
+ private final SysUserMapper userMapper;
+ private final SysDeptMapper deptMapper;
+ private final SysRoleMapper roleMapper;
+ private final SysRoleMenuMapper roleMenuMapper;
+ private final SysRoleDeptMapper roleDeptMapper;
+ private final SysUserRoleMapper userRoleMapper;
+ private final SysDictTypeMapper dictTypeMapper;
+ private final SysDictDataMapper dictDataMapper;
+ private final SysConfigMapper configMapper;
/**
* 鏌ヨ绉熸埛
@@ -139,14 +139,14 @@
dept.setLeader(bo.getUsername());
dept.setParentId(Constants.TOP_PARENT_ID);
dept.setAncestors(Constants.TOP_PARENT_ID.toString());
- sysDeptMapper.insert(dept);
+ deptMapper.insert(dept);
Long deptId = dept.getDeptId();
// 瑙掕壊鍜岄儴闂ㄥ叧鑱旇〃
SysRoleDept roleDept = new SysRoleDept();
roleDept.setRoleId(roleId);
roleDept.setDeptId(deptId);
- sysRoleDeptMapper.insert(roleDept);
+ roleDeptMapper.insert(roleDept);
// 鍒涘缓绯荤粺鐢ㄦ埛
SysUser user = new SysUser();
@@ -155,18 +155,18 @@
user.setNickName(bo.getUsername());
user.setPassword(BCrypt.hashpw(bo.getPassword()));
user.setDeptId(deptId);
- sysUserMapper.insert(user);
+ userMapper.insert(user);
// 鐢ㄦ埛鍜岃鑹插叧鑱旇〃
SysUserRole userRole = new SysUserRole();
userRole.setUserId(user.getUserId());
userRole.setRoleId(roleId);
- sysUserRoleMapper.insert(userRole);
+ userRoleMapper.insert(userRole);
String defaultTenantId = TenantConstants.DEFAULT_TENANT_ID;
- List<SysDictType> dictTypeList = sysDictTypeMapper.selectList(
+ List<SysDictType> dictTypeList = dictTypeMapper.selectList(
new LambdaQueryWrapper<SysDictType>().eq(SysDictType::getTenantId, defaultTenantId));
- List<SysDictData> dictDataList = sysDictDataMapper.selectList(
+ List<SysDictData> dictDataList = dictDataMapper.selectList(
new LambdaQueryWrapper<SysDictData>().eq(SysDictData::getTenantId, defaultTenantId));
for (SysDictType dictType : dictTypeList) {
dictType.setDictId(null);
@@ -176,16 +176,16 @@
dictData.setDictCode(null);
dictData.setTenantId(tenantId);
}
- sysDictTypeMapper.insertBatch(dictTypeList);
- sysDictDataMapper.insertBatch(dictDataList);
+ dictTypeMapper.insertBatch(dictTypeList);
+ dictDataMapper.insertBatch(dictDataList);
- List<SysConfig> sysConfigList = sysConfigMapper.selectList(
+ List<SysConfig> sysConfigList = configMapper.selectList(
new LambdaQueryWrapper<SysConfig>().eq(SysConfig::getTenantId, defaultTenantId));
for (SysConfig config : sysConfigList) {
config.setConfigId(null);
config.setTenantId(tenantId);
}
- sysConfigMapper.insertBatch(sysConfigList);
+ configMapper.insertBatch(sysConfigList);
TenantHelper.disableIgnore();
return true;
@@ -214,9 +214,9 @@
* @param packageId 绉熸埛濂楅id
* @return 瑙掕壊id
*/
- public Long createTenantRole(String tenantId, Long packageId) {
+ private Long createTenantRole(String tenantId, Long packageId) {
// 鑾峰彇绉熸埛濂楅
- SysTenantPackage tenantPackage = sysTenantPackageMapper.selectById(packageId);
+ SysTenantPackage tenantPackage = tenantPackageMapper.selectById(packageId);
if (ObjectUtil.isNull(tenantPackage)) {
throw new ServiceException("濂楅涓嶅瓨鍦�");
}
@@ -230,7 +230,7 @@
role.setRoleKey(TenantConstants.TENANT_ADMIN_ROLE_KEY);
role.setRoleSort(1);
role.setStatus(TenantConstants.NORMAL);
- sysRoleMapper.insert(role);
+ roleMapper.insert(role);
Long roleId = role.getRoleId();
// 鍒涘缓瑙掕壊鑿滃崟
@@ -241,7 +241,7 @@
roleMenu.setMenuId(menuId);
roleMenus.add(roleMenu);
});
- sysRoleMenuMapper.insertBatch(roleMenus);
+ roleMenuMapper.insertBatch(roleMenus);
return roleId;
}
@@ -272,6 +272,18 @@
}
/**
+ * 鏍¢獙绉熸埛鏄惁鍏佽鎿嶄綔
+ *
+ * @param tenantId 绉熸埛ID
+ */
+ @Override
+ public void checkTenantAllowed(String tenantId) {
+ if (ObjectUtil.isNotNull(tenantId) && TenantConstants.DEFAULT_TENANT_ID.equals(tenantId)) {
+ throw new ServiceException("涓嶅厑璁告搷浣滅鐞嗙鎴�");
+ }
+ }
+
+ /**
* 鎵归噺鍒犻櫎绉熸埛
*/
@CacheEvict(cacheNames = CacheNames.SYS_TENANT, allEntries = true)
@@ -290,49 +302,74 @@
* 鏍¢獙浼佷笟鍚嶇О鏄惁鍞竴
*/
@Override
- public String checkCompanyNameUnique(SysTenantBo bo) {
+ public boolean checkCompanyNameUnique(SysTenantBo bo) {
boolean exist = baseMapper.exists(new LambdaQueryWrapper<SysTenant>()
.eq(SysTenant::getCompanyName, bo.getCompanyName())
.ne(ObjectUtil.isNotNull(bo.getTenantId()), SysTenant::getTenantId, bo.getTenantId()));
- if (exist) {
- return TenantConstants.NOT_PASS;
- }
- return TenantConstants.PASS;
+ return !exist;
}
/**
* 鏍¢獙璐﹀彿浣欓
*/
@Override
- public String checkAccountBalance(String tenantId) {
+ public boolean checkAccountBalance(String tenantId) {
SysTenantVo tenant = SpringUtils.getAopProxy(this).queryByTenantId(tenantId);
// 濡傛灉浣欓涓�-1浠h〃涓嶉檺鍒�
if (tenant.getAccountCount() == -1) {
- return TenantConstants.PASS;
+ return true;
}
- Long userNumber = sysUserMapper.selectCount(new LambdaQueryWrapper<>());
+ Long userNumber = userMapper.selectCount(new LambdaQueryWrapper<>());
// 濡傛灉浣欓澶т簬0浠h〃杩樻湁鍙敤鍚嶉
- if (tenant.getAccountCount() - userNumber > 0) {
- return TenantConstants.PASS;
- }
- return TenantConstants.NOT_PASS;
+ return tenant.getAccountCount() - userNumber > 0;
}
/**
* 鏍¢獙鏈夋晥鏈�
*/
@Override
- public String checkExpireTime(String tenantId) {
+ public boolean checkExpireTime(String tenantId) {
SysTenantVo tenant = SpringUtils.getAopProxy(this).queryByTenantId(tenantId);
// 濡傛灉鏈缃繃鏈熸椂闂翠唬琛ㄤ笉闄愬埗
if (ObjectUtil.isNull(tenant.getExpireTime())) {
- return TenantConstants.PASS;
+ return true;
}
// 濡傛灉褰撳墠鏃堕棿鍦ㄨ繃鏈熸椂闂翠箣鍓嶅垯閫氳繃
- if (new Date().before(tenant.getExpireTime())) {
- return TenantConstants.PASS;
- }
- return TenantConstants.NOT_PASS;
+ return new Date().before(tenant.getExpireTime());
}
+ /**
+ * 鍚屾绉熸埛濂楅
+ */
+ @Override
+ @Transactional(rollbackFor = Exception.class)
+ public Boolean syncTenantPackage(String tenantId, String packageId) {
+ TenantHelper.enableIgnore();
+ SysTenantPackage tenantPackage = tenantPackageMapper.selectById(packageId);
+ List<SysRole> roles = roleMapper.selectList(
+ new LambdaQueryWrapper<SysRole>().eq(SysRole::getTenantId, tenantId));
+ List<Long> roleIds = new ArrayList<>(roles.size() - 1);
+ List<Long> menuIds = StringUtils.splitTo(tenantPackage.getMenuIds(), Convert::toLong);
+ roles.forEach(item -> {
+ if (TenantConstants.TENANT_ADMIN_ROLE_KEY.equals(item.getRoleKey())) {
+ List<SysRoleMenu> roleMenus = new ArrayList<>(menuIds.size());
+ menuIds.forEach(menuId -> {
+ SysRoleMenu roleMenu = new SysRoleMenu();
+ roleMenu.setRoleId(item.getRoleId());
+ roleMenu.setMenuId(menuId);
+ roleMenus.add(roleMenu);
+ });
+ roleMenuMapper.delete(new LambdaQueryWrapper<SysRoleMenu>().eq(SysRoleMenu::getRoleId, item.getRoleId()));
+ roleMenuMapper.insertBatch(roleMenus);
+ } else {
+ roleIds.add(item.getRoleId());
+ }
+ });
+ if (!roleIds.isEmpty()) {
+ roleMenuMapper.delete(
+ new LambdaQueryWrapper<SysRoleMenu>().in(SysRoleMenu::getRoleId, roleIds).notIn(!menuIds.isEmpty(), SysRoleMenu::getMenuId, menuIds));
+ }
+ TenantHelper.disableIgnore();
+ return true;
+ }
}
--
Gitblit v1.9.3