Commit aa16b8279fbe676bc2feab8b7ba080b0394dd4f5

Authored by 芋道源码
Committed by Gitee
2 parents 75c74590 2b1e5f1a

!446 配合周建进行测试所提bug的后端修改

Merge pull request !446 from clockdotnet/master_pr
.gitignore
1   -######################################################################
2   -# Build Tools
3   -
4   -.gradle
5   -/build/
6   -!gradle/wrapper/gradle-wrapper.jar
7   -
8   -target/
9   -!.mvn/wrapper/maven-wrapper.jar
10   -
11   -######################################################################
12   -# IDE
13   -
14   -### STS ###
15   -.apt_generated
16   -.classpath
17   -.factorypath
18   -.project
19   -.settings
20   -.springBeans
21   -
22   -### IntelliJ IDEA ###
23   -.idea
24   -*.iws
25   -*.iml
26   -*.ipr
27   -
28   -### NetBeans ###
29   -nbproject/private/
30   -build/*
31   -nbbuild/
32   -dist/
33   -nbdist/
34   -.nb-gradle/
35   -
36   -######################################################################
37   -# Others
38   -*.log
39   -*.xml.versionsBackup
40   -*.swp
41   -
42   -!*/build/*.java
43   -!*/build/*.html
44   -!*/build/*.xml
45   -
46   -### JRebel ###
47   -rebel.xml
48   -
49   -application-my.yaml
50   -
51   -/yudao-ui-app/unpackage/
  1 +######################################################################
  2 +# Build Tools
  3 +
  4 +.gradle
  5 +/build/
  6 +!gradle/wrapper/gradle-wrapper.jar
  7 +
  8 +target/
  9 +!.mvn/wrapper/maven-wrapper.jar
  10 +
  11 +######################################################################
  12 +# IDE
  13 +
  14 +### STS ###
  15 +.apt_generated
  16 +.classpath
  17 +.factorypath
  18 +.project
  19 +.settings
  20 +.springBeans
  21 +
  22 +### IntelliJ IDEA ###
  23 +.idea
  24 +*.iws
  25 +*.iml
  26 +*.ipr
  27 +
  28 +### NetBeans ###
  29 +nbproject/private/
  30 +build/*
  31 +nbbuild/
  32 +dist/
  33 +nbdist/
  34 +.nb-gradle/
  35 +
  36 +######################################################################
  37 +# Others
  38 +*.log
  39 +*.xml.versionsBackup
  40 +*.swp
  41 +
  42 +!*/build/*.java
  43 +!*/build/*.html
  44 +!*/build/*.xml
  45 +
  46 +### JRebel ###
  47 +rebel.xml
  48 +
  49 +application-my.yaml
  50 +
  51 +/yudao-ui-app/unpackage/
... ...
yudao-framework/yudao-spring-boot-starter-biz-tenant/src/main/java/cn/iocoder/yudao/framework/tenant/core/security/TenantSecurityWebFilter.java
... ... @@ -78,8 +78,8 @@ public class TenantSecurityWebFilter extends ApiRequestFilter {
78 78 // 2. 如果请求未带租户的编号,不允许访问。
79 79 if (tenantId == null) {
80 80 log.error("[doFilterInternal][URL({}/{}) 未传递租户编号]", request.getRequestURI(), request.getMethod());
81   - ServletUtils.writeJSON(response, CommonResult.error(GlobalErrorCodeConstants.BAD_REQUEST.getCode(),
82   - "租户的请求未传递,请进行排查"));
  81 + String msg = "请求的租户标识未传递,请进行排查";
  82 + ServletUtils.writeJSON(response, CommonResult.error(GlobalErrorCodeConstants.BAD_REQUEST.getCode(), msg));
83 83 return;
84 84 }
85 85 // 3. 校验租户是合法,例如说被禁用、到期
... ...
yudao-framework/yudao-spring-boot-starter-mybatis/src/main/java/cn/iocoder/yudao/framework/mybatis/core/query/LambdaQueryWrapperX.java
1 1 package cn.iocoder.yudao.framework.mybatis.core.query;
2 2  
3   -import cn.hutool.core.lang.Assert;
4 3 import cn.hutool.core.util.ArrayUtil;
5 4 import cn.iocoder.yudao.framework.common.util.collection.ArrayUtils;
6   -import cn.iocoder.yudao.framework.mybatis.core.enums.SqlConstants;
7 5 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
8 6 import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
9 7 import com.baomidou.mybatisplus.core.toolkit.support.SFunction;
... ... @@ -13,7 +11,7 @@ import java.util.Collection;
13 11  
14 12 /**
15 13 * 拓展 MyBatis Plus QueryWrapper 类,主要增加如下功能:
16   - *
  14 + * <p>
17 15 * 1. 拼接条件的方法,增加 xxxIfPresent 方法,用于判断值不存在的时候,不要拼接到条件中。
18 16 *
19 17 * @param <T> 数据类型
... ... @@ -42,14 +40,14 @@ public class LambdaQueryWrapperX&lt;T&gt; extends LambdaQueryWrapper&lt;T&gt; {
42 40 }
43 41  
44 42 public LambdaQueryWrapperX<T> eqIfPresent(SFunction<T, ?> column, Object val) {
45   - if (val != null) {
  43 + if (val instanceof String && StringUtils.hasText((String) val) || !(val instanceof String) && val != null) {
46 44 return (LambdaQueryWrapperX<T>) super.eq(column, val);
47 45 }
48 46 return this;
49 47 }
50 48  
51 49 public LambdaQueryWrapperX<T> neIfPresent(SFunction<T, ?> column, Object val) {
52   - if (val != null) {
  50 + if (val instanceof String && StringUtils.hasText((String) val) || !(val instanceof String) && val != null) {
53 51 return (LambdaQueryWrapperX<T>) super.ne(column, val);
54 52 }
55 53 return this;
... ...
yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/controller/admin/codegen/vo/table/CodegenTablePageReqVO.java
... ... @@ -23,6 +23,9 @@ public class CodegenTablePageReqVO extends PageParam {
23 23 @Schema(description = "表描述,模糊匹配", example = "芋道")
24 24 private String tableComment;
25 25  
  26 + @Schema(description = "实体,模糊匹配", example = "Yudao")
  27 + private String className;
  28 +
26 29 @Schema(description = "创建时间", example = "[2022-07-01 00:00:00,2022-07-01 23:59:59]")
27 30 @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
28 31 private LocalDateTime[] createTime;
... ...
yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/controller/admin/config/vo/ConfigBaseVO.java
... ... @@ -29,8 +29,8 @@ public class ConfigBaseVO {
29 29 @Size(max = 500, message = "参数键值长度不能超过500个字符")
30 30 private String value;
31 31  
32   - @Schema(description = "是否敏感", required = true, example = "true")
33   - @NotNull(message = "是否敏感不能为空")
  32 + @Schema(description = "是否可见", required = true, example = "true")
  33 + @NotNull(message = "是否可见不能为空")
34 34 private Boolean visible;
35 35  
36 36 @Schema(description = "备注", example = "备注一下很帅气!")
... ...
yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/controller/admin/config/vo/ConfigExcelVO.java
... ... @@ -18,10 +18,10 @@ public class ConfigExcelVO {
18 18 private Long id;
19 19  
20 20 @ExcelProperty("参数键名")
21   - private String key;
  21 + private String configKey;
22 22  
23   - @ExcelProperty("参数分组")
24   - private String group;
  23 + @ExcelProperty("参数分类")
  24 + private String category;
25 25  
26 26 @ExcelProperty("参数名称")
27 27 private String name;
... ... @@ -33,9 +33,9 @@ public class ConfigExcelVO {
33 33 @DictFormat(DictTypeConstants.CONFIG_TYPE)
34 34 private Integer type;
35 35  
36   - @ExcelProperty(value = "是否敏感", converter = DictConvert.class)
  36 + @ExcelProperty(value = "是否可见", converter = DictConvert.class)
37 37 @DictFormat(DictTypeConstants.BOOLEAN_STRING)
38   - private Boolean sensitive;
  38 + private Boolean visible;
39 39  
40 40 @ExcelProperty("备注")
41 41 private String remark;
... ...
yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/dal/mysql/codegen/CodegenTableMapper.java
... ... @@ -21,6 +21,7 @@ public interface CodegenTableMapper extends BaseMapperX&lt;CodegenTableDO&gt; {
21 21 return selectPage(pageReqVO, new LambdaQueryWrapperX<CodegenTableDO>()
22 22 .likeIfPresent(CodegenTableDO::getTableName, pageReqVO.getTableName())
23 23 .likeIfPresent(CodegenTableDO::getTableComment, pageReqVO.getTableComment())
  24 + .likeIfPresent(CodegenTableDO::getClassName, pageReqVO.getClassName())
24 25 .betweenIfPresent(CodegenTableDO::getCreateTime, pageReqVO.getCreateTime()));
25 26 }
26 27  
... ...
yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/enums/ErrorCodeConstants.java
... ... @@ -103,6 +103,7 @@ public interface ErrorCodeConstants {
103 103 ErrorCode TENANT_DISABLE = new ErrorCode(1002015001, "名字为【{}】的租户已被禁用");
104 104 ErrorCode TENANT_EXPIRE = new ErrorCode(1002015002, "名字为【{}】的租户已过期");
105 105 ErrorCode TENANT_CAN_NOT_UPDATE_SYSTEM = new ErrorCode(1002015003, "系统租户不能进行修改、删除等操作!");
  106 + ErrorCode TENANT_NAME_DUPLICATE = new ErrorCode(1002015004, "已经存在该名称的租户");
106 107  
107 108 // ========== 租户套餐 1002016000 ==========
108 109 ErrorCode TENANT_PACKAGE_NOT_EXISTS = new ErrorCode(1002016000, "租户套餐不存在");
... ...
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/tenant/TenantMapper.java
... ... @@ -38,6 +38,12 @@ public interface TenantMapper extends BaseMapperX&lt;TenantDO&gt; {
38 38 .orderByDesc(TenantDO::getId));
39 39 }
40 40  
  41 + default Long selectCountByName(String name, Long id) {
  42 + return selectCount(new LambdaQueryWrapperX<TenantDO>()
  43 + .eqIfPresent(TenantDO::getName, name)
  44 + .neIfPresent(TenantDO::getId, id));
  45 + }
  46 +
41 47 default TenantDO selectByName(String name) {
42 48 return selectOne(TenantDO::getName, name);
43 49 }
... ...
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/tenant/TenantServiceImpl.java
... ... @@ -29,6 +29,7 @@ import cn.iocoder.yudao.module.system.service.permission.RoleService;
29 29 import cn.iocoder.yudao.module.system.service.tenant.handler.TenantInfoHandler;
30 30 import cn.iocoder.yudao.module.system.service.tenant.handler.TenantMenuHandler;
31 31 import cn.iocoder.yudao.module.system.service.user.AdminUserService;
  32 +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
32 33 import lombok.extern.slf4j.Slf4j;
33 34 import org.springframework.beans.factory.annotation.Autowired;
34 35 import org.springframework.context.annotation.Lazy;
... ... @@ -97,6 +98,9 @@ public class TenantServiceImpl implements TenantService {
97 98 @Override
98 99 @Transactional(rollbackFor = Exception.class)
99 100 public Long createTenant(TenantCreateReqVO createReqVO) {
  101 + // 校验租户名称是否重复
  102 + validTenantName(createReqVO.getName(), null);
  103 +
100 104 // 校验套餐被禁用
101 105 TenantPackageDO tenantPackage = tenantPackageService.validTenantPackage(createReqVO.getPackageId());
102 106  
... ... @@ -139,6 +143,10 @@ public class TenantServiceImpl implements TenantService {
139 143 public void updateTenant(TenantUpdateReqVO updateReqVO) {
140 144 // 校验存在
141 145 TenantDO tenant = validateUpdateTenant(updateReqVO.getId());
  146 +
  147 + // 校验租户名称是否重复
  148 + validTenantName(updateReqVO.getName(), updateReqVO.getId());
  149 +
142 150 // 校验套餐被禁用
143 151 TenantPackageDO tenantPackage = tenantPackageService.validTenantPackage(updateReqVO.getPackageId());
144 152  
... ... @@ -151,6 +159,12 @@ public class TenantServiceImpl implements TenantService {
151 159 }
152 160 }
153 161  
  162 + protected void validTenantName(String tenantName, Long id) {
  163 + if (tenantMapper.selectCountByName(tenantName, id) > 0) {
  164 + throw exception(TENANT_NAME_DUPLICATE);
  165 + }
  166 + }
  167 +
154 168 @Override
155 169 @Transactional(rollbackFor = Exception.class)
156 170 public void updateTenantRoleMenu(Long tenantId, Set<Long> menuIds) {
... ...