Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
计算机应用开发
后
后端
J
Java
后台管理
Ruoyi Vue Pro
提交
848fcdf3
R
Ruoyi Vue Pro
项目概览
计算机应用开发
/
后端
/
Java
/
后台管理
/
Ruoyi Vue Pro
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
R
Ruoyi Vue Pro
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
848fcdf3
编写于
2月 23, 2022
作者:
公众号-芋道源码
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
租户创建人数的限制
上级
d10b4595
变更
6
隐藏空白更改
内联
并排
Showing
6 changed file
with
61 addition
and
2 deletion
+61
-2
yudao-framework/yudao-spring-boot-starter-mybatis/src/main/java/cn/iocoder/yudao/framework/mybatis/core/mapper/BaseMapperX.java
...oder/yudao/framework/mybatis/core/mapper/BaseMapperX.java
+4
-0
yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/enums/ErrorCodeConstants.java
...iocoder/yudao/module/system/enums/ErrorCodeConstants.java
+2
-1
yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/service/tenant/TenantService.java
...der/yudao/module/system/service/tenant/TenantService.java
+9
-1
yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/service/tenant/TenantServiceImpl.java
...yudao/module/system/service/tenant/TenantServiceImpl.java
+15
-0
yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/service/tenant/handler/TenantInfoHandler.java
...dule/system/service/tenant/handler/TenantInfoHandler.java
+21
-0
yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/service/user/AdminUserServiceImpl.java
...udao/module/system/service/user/AdminUserServiceImpl.java
+10
-0
未找到文件。
yudao-framework/yudao-spring-boot-starter-mybatis/src/main/java/cn/iocoder/yudao/framework/mybatis/core/mapper/BaseMapperX.java
浏览文件 @
848fcdf3
...
...
@@ -43,6 +43,10 @@ public interface BaseMapperX<T> extends BaseMapper<T> {
return
selectOne
(
new
LambdaQueryWrapper
<
T
>().
eq
(
field1
,
value1
).
eq
(
field2
,
value2
));
}
default
Long
selectCount
()
{
return
selectCount
(
new
QueryWrapper
<
T
>());
}
default
Integer
selectCount
(
String
field
,
Object
value
)
{
return
selectCount
(
new
QueryWrapper
<
T
>().
eq
(
field
,
value
)).
intValue
();
}
...
...
yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/enums/ErrorCodeConstants.java
浏览文件 @
848fcdf3
...
...
@@ -40,7 +40,8 @@ public interface ErrorCodeConstants {
ErrorCode
USER_NOT_EXISTS
=
new
ErrorCode
(
1002004003
,
"用户不存在"
);
ErrorCode
USER_IMPORT_LIST_IS_EMPTY
=
new
ErrorCode
(
1002004004
,
"导入用户数据不能为空!"
);
ErrorCode
USER_PASSWORD_FAILED
=
new
ErrorCode
(
1002004005
,
"用户密码校验失败"
);
ErrorCode
USER_IS_DISABLE
=
new
ErrorCode
(
1002003004
,
"名字为【{}】的用户已被禁用"
);
ErrorCode
USER_IS_DISABLE
=
new
ErrorCode
(
1002004006
,
"名字为【{}】的用户已被禁用"
);
ErrorCode
USER_COUNT_MAX
=
new
ErrorCode
(
1002004007
,
"创建用户失败,原因:超过租户最大租户配额({})!"
);
// ========== 部门模块 1002005000 ==========
ErrorCode
DEPT_NAME_DUPLICATE
=
new
ErrorCode
(
1002004001
,
"已经存在该名字的部门"
);
...
...
yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/service/tenant/TenantService.java
浏览文件 @
848fcdf3
...
...
@@ -8,6 +8,7 @@ import cn.iocoder.yudao.module.system.controller.admin.tenant.vo.tenant.TenantEx
import
cn.iocoder.yudao.module.system.controller.admin.tenant.vo.tenant.TenantPageReqVO
;
import
cn.iocoder.yudao.module.system.controller.admin.tenant.vo.tenant.TenantUpdateReqVO
;
import
cn.iocoder.yudao.module.system.dal.dataobject.tenant.TenantDO
;
import
cn.iocoder.yudao.module.system.service.tenant.handler.TenantInfoHandler
;
import
cn.iocoder.yudao.module.system.service.tenant.handler.TenantMenuHandler
;
import
javax.validation.Valid
;
...
...
@@ -113,6 +114,14 @@ public interface TenantService extends TenantFrameworkService {
*/
List
<
TenantDO
>
getTenantListByPackageId
(
Long
packageId
);
/**
* 进行租户的信息处理逻辑
* 其中,租户编号从 {@link TenantContextHolder} 上下文中获取
*
* @param handler 处理器
*/
void
handleTenantInfo
(
TenantInfoHandler
handler
);
/**
* 进行租户的菜单处理逻辑
* 其中,租户编号从 {@link TenantContextHolder} 上下文中获取
...
...
@@ -120,5 +129,4 @@ public interface TenantService extends TenantFrameworkService {
* @param handler 处理器
*/
void
handleTenantMenu
(
TenantMenuHandler
handler
);
}
yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/service/tenant/TenantServiceImpl.java
浏览文件 @
848fcdf3
...
...
@@ -25,9 +25,11 @@ import cn.iocoder.yudao.module.system.enums.permission.RoleTypeEnum;
import
cn.iocoder.yudao.module.system.mq.producer.tenant.TenantProducer
;
import
cn.iocoder.yudao.module.system.service.permission.PermissionService
;
import
cn.iocoder.yudao.module.system.service.permission.RoleService
;
import
cn.iocoder.yudao.module.system.service.tenant.handler.TenantInfoHandler
;
import
cn.iocoder.yudao.module.system.service.tenant.handler.TenantMenuHandler
;
import
cn.iocoder.yudao.module.system.service.user.AdminUserService
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.context.annotation.Lazy
;
import
org.springframework.scheduling.annotation.Scheduled
;
import
org.springframework.stereotype.Service
;
import
org.springframework.transaction.annotation.Transactional
;
...
...
@@ -79,6 +81,7 @@ public class TenantServiceImpl implements TenantService {
@Resource
private
TenantPackageService
tenantPackageService
;
@Resource
@Lazy
// 延迟,避免循环依赖报错
private
AdminUserService
userService
;
@Resource
private
RoleService
roleService
;
...
...
@@ -298,6 +301,18 @@ public class TenantServiceImpl implements TenantService {
return
tenantMapper
.
selectListByPackageId
(
packageId
);
}
@Override
public
void
handleTenantInfo
(
TenantInfoHandler
handler
)
{
// 如果禁用,则不执行逻辑
if
(
Boolean
.
FALSE
.
equals
(
tenantProperties
.
getEnable
()))
{
return
;
}
// 获得租户
TenantDO
tenant
=
getTenant
(
TenantContextHolder
.
getRequiredTenantId
());
// 执行处理器
handler
.
handle
(
tenant
);
}
@Override
public
void
handleTenantMenu
(
TenantMenuHandler
handler
)
{
// 如果禁用,则不执行逻辑
...
...
yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/service/tenant/handler/TenantInfoHandler.java
0 → 100644
浏览文件 @
848fcdf3
package
cn.iocoder.yudao.module.system.service.tenant.handler
;
import
cn.iocoder.yudao.module.system.dal.dataobject.tenant.TenantDO
;
/**
* 租户信息处理
* 目的:尽量减少租户逻辑耦合到系统中
*
* @author 芋道源码
*/
public
interface
TenantInfoHandler
{
/**
* 基于传入的租户信息,进行相关逻辑的执行
* 例如说,创建用户时,超过最大账户配额
*
* @param tenant 租户信息
*/
void
handle
(
TenantDO
tenant
);
}
yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/service/user/AdminUserServiceImpl.java
浏览文件 @
848fcdf3
...
...
@@ -18,6 +18,7 @@ import cn.iocoder.yudao.module.system.dal.mysql.user.AdminUserMapper;
import
cn.iocoder.yudao.module.system.service.dept.DeptService
;
import
cn.iocoder.yudao.module.system.service.dept.PostService
;
import
cn.iocoder.yudao.module.system.service.permission.PermissionService
;
import
cn.iocoder.yudao.module.system.service.tenant.TenantService
;
import
com.google.common.annotations.VisibleForTesting
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.beans.factory.annotation.Value
;
...
...
@@ -55,12 +56,21 @@ public class AdminUserServiceImpl implements AdminUserService {
private
PermissionService
permissionService
;
@Resource
private
PasswordEncoder
passwordEncoder
;
@Resource
private
TenantService
tenantService
;
@Resource
private
FileApi
fileApi
;
@Override
public
Long
createUser
(
UserCreateReqVO
reqVO
)
{
// 校验账户配合
tenantService
.
handleTenantInfo
(
tenant
->
{
long
count
=
userMapper
.
selectCount
();
if
(
count
>=
tenant
.
getAccountCount
())
{
throw
exception
(
USER_COUNT_MAX
,
tenant
.
getAccountCount
());
}
});
// 校验正确性
this
.
checkCreateOrUpdate
(
null
,
reqVO
.
getUsername
(),
reqVO
.
getMobile
(),
reqVO
.
getEmail
(),
reqVO
.
getDeptId
(),
reqVO
.
getPostIds
());
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录