From cc4a6b59fa8b69536759a2207f85a27ae397e833 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=96=AF=E7=8B=82=E7=9A=84=E7=8B=AE=E5=AD=90li?= <15040126243@163.com> Date: Thu, 9 Feb 2023 13:50:56 +0800 Subject: [PATCH] =?UTF-8?q?update=20=E4=BC=98=E5=8C=96=20=E6=B7=BB?= =?UTF-8?q?=E5=8A=A0=E7=94=A8=E6=88=B7=20=E5=A2=9E=E5=8A=A0=E7=A7=9F?= =?UTF-8?q?=E6=88=B7=E8=B4=A6=E5=8F=B7=E6=95=B0=E9=87=8F=E6=A0=A1=E9=AA=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../common/core/constant/TenantConstants.java | 41 ++++++++++++++++ .../common/core/constant/UserConstants.java | 20 -------- .../controller/system/SysUserController.java | 14 ++++-- .../system/service/ISysTenantService.java | 10 ++++ .../service/impl/SysTenantServiceImpl.java | 48 +++++++++++++++++-- 5 files changed, 104 insertions(+), 29 deletions(-) create mode 100644 ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/constant/TenantConstants.java diff --git a/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/constant/TenantConstants.java b/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/constant/TenantConstants.java new file mode 100644 index 000000000..9baf0138d --- /dev/null +++ b/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/constant/TenantConstants.java @@ -0,0 +1,41 @@ +package com.ruoyi.common.core.constant; + +/** + * 租户常量信息 + * + * @author Lion Li + */ +public interface TenantConstants { + + /** + * 租户正常状态 + */ + String NORMAL = "0"; + + /** + * 租户封禁状态 + */ + String DISABLE = "1"; + + /** + * 校验返回结果码 + */ + String PASS = "0"; + String NOT_PASS = "1"; + + /** + * 超级管理员ID + */ + Long SUPER_ADMIN_ID = 1L; + + /** + * 管理员角色 roleKey + */ + String ADMIN_ROLE_KEY = "admin"; + + /** + * 管理员角色名称 + */ + String ADMIN_ROLE_NAME = "管理员"; + +} diff --git a/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/constant/UserConstants.java b/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/constant/UserConstants.java index 8b9e980fa..f50e3096f 100644 --- a/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/constant/UserConstants.java +++ b/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/constant/UserConstants.java @@ -130,24 +130,4 @@ public interface UserConstants { int PASSWORD_MIN_LENGTH = 5; int PASSWORD_MAX_LENGTH = 20; - /** - * 超级管理员ID - */ - Long SUPER_ADMIN_ID = 1L; - - /** - * 管理员角色 roleKey - */ - String ADMIN_ROLE_KEY = "admin"; - - /** - * 管理员角色名称 - */ - String ADMIN_ROLE_NAME = "管理员"; - - /** - * 管理员角色排序 - */ - Integer ADMIN_ROLE_SORT = 5; - } diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/system/SysUserController.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/system/SysUserController.java index 0efea3de0..46d6f46b3 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/system/SysUserController.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/system/SysUserController.java @@ -6,6 +6,7 @@ import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.lang.tree.Tree; import cn.hutool.core.util.ArrayUtil; import cn.hutool.core.util.ObjectUtil; +import com.ruoyi.common.core.constant.TenantConstants; import com.ruoyi.common.core.constant.UserConstants; import com.ruoyi.common.core.domain.R; import com.ruoyi.common.core.utils.StreamUtils; @@ -16,16 +17,14 @@ import com.ruoyi.common.log.annotation.Log; import com.ruoyi.common.log.enums.BusinessType; import com.ruoyi.common.mybatis.core.page.PageQuery; import com.ruoyi.common.mybatis.core.page.TableDataInfo; +import com.ruoyi.common.mybatis.helper.TenantHelper; import com.ruoyi.common.satoken.utils.LoginHelper; import com.ruoyi.common.web.core.BaseController; import com.ruoyi.system.domain.SysDept; import com.ruoyi.system.domain.bo.SysUserBo; import com.ruoyi.system.domain.vo.*; import com.ruoyi.system.listener.SysUserImportListener; -import com.ruoyi.system.service.ISysDeptService; -import com.ruoyi.system.service.ISysPostService; -import com.ruoyi.system.service.ISysRoleService; -import com.ruoyi.system.service.ISysUserService; +import com.ruoyi.system.service.*; import jakarta.servlet.http.HttpServletResponse; import lombok.RequiredArgsConstructor; import org.springframework.http.MediaType; @@ -51,6 +50,7 @@ public class SysUserController extends BaseController { private final ISysRoleService roleService; private final ISysPostService postService; private final ISysDeptService deptService; + private final ISysTenantService tenantService; /** * 获取用户列表 @@ -141,6 +141,12 @@ public class SysUserController extends BaseController { && UserConstants.NOT_UNIQUE.equals(userService.checkEmailUnique(user))) { return R.fail("新增用户'" + user.getUserName() + "'失败,邮箱账号已存在"); } + if (TenantHelper.isEnable()) { + String status = tenantService.checkAccountBalance(LoginHelper.getTenantId()); + if (TenantConstants.NOT_PASS.equals(status)) { + return R.fail("当前租户下用户名额不足,请联系管理员"); + } + } user.setPassword(BCrypt.hashpw(user.getPassword())); return toAjax(userService.insertUser(user)); } diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysTenantService.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysTenantService.java index a8b8a18ce..d48ad593c 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysTenantService.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysTenantService.java @@ -54,4 +54,14 @@ public interface ISysTenantService { * 校验并批量删除租户信息 */ Boolean deleteWithValidByIds(Collection ids, Boolean isValid); + + /** + * 校验账号余额 + */ + String checkAccountBalance(String tenantId); + + /** + * 校验有效期 + */ + String checkExpireTime(String tenantId); } 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 bbfc1645a..4121c9630 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 @@ -10,8 +10,9 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.ruoyi.common.core.constant.CacheNames; import com.ruoyi.common.core.constant.Constants; -import com.ruoyi.common.core.constant.UserConstants; +import com.ruoyi.common.core.constant.TenantConstants; import com.ruoyi.common.core.exception.ServiceException; +import com.ruoyi.common.core.utils.SpringUtils; import com.ruoyi.common.core.utils.StringUtils; import com.ruoyi.common.mybatis.core.page.PageQuery; import com.ruoyi.common.mybatis.core.page.TableDataInfo; @@ -28,6 +29,7 @@ import org.springframework.transaction.annotation.Transactional; import java.util.ArrayList; import java.util.Collection; +import java.util.Date; import java.util.List; /** @@ -190,10 +192,10 @@ public class SysTenantServiceImpl implements ISysTenantService { // 创建角色 SysRole role = new SysRole(); role.setTenantId(tenantId); - role.setRoleName(UserConstants.ADMIN_ROLE_NAME); - role.setRoleKey(UserConstants.ADMIN_ROLE_KEY); - role.setRoleSort(UserConstants.ADMIN_ROLE_SORT); - role.setStatus(UserConstants.NORMAL); + role.setRoleName(TenantConstants.ADMIN_ROLE_NAME); + role.setRoleKey(TenantConstants.ADMIN_ROLE_KEY); + role.setRoleSort(1); + role.setStatus(TenantConstants.NORMAL); sysRoleMapper.insert(role); Long roleId = role.getRoleId(); @@ -246,4 +248,40 @@ public class SysTenantServiceImpl implements ISysTenantService { } return baseMapper.deleteBatchIds(ids) > 0; } + + /** + * 校验账号余额 + */ + @Override + public String checkAccountBalance(String tenantId) { + SysTenantVo tenant = SpringUtils.getAopProxy(this).queryByTenantId(tenantId); + // 如果余额为-1代表不限制 + if (tenant.getAccountCount() == -1) { + return TenantConstants.PASS; + } + Long userNumber = sysUserMapper.selectCount(new LambdaQueryWrapper<>()); + // 如果余额大于0代表还有可用名额 + if (tenant.getAccountCount() - userNumber > 0) { + return TenantConstants.PASS; + } + return TenantConstants.NOT_PASS; + } + + /** + * 校验有效期 + */ + @Override + public String checkExpireTime(String tenantId) { + SysTenantVo tenant = SpringUtils.getAopProxy(this).queryByTenantId(tenantId); + // 如果未设置过期时间代表不限制 + if (ObjectUtil.isNull(tenant.getExpireTime())) { + return TenantConstants.PASS; + } + // 如果当前时间在过期时间之前则通过 + if (new Date().before(tenant.getExpireTime())) { + return TenantConstants.PASS; + } + return TenantConstants.NOT_PASS; + } + }