From fbe37e2e00bddec409b595a4a6e50c4bb32a008a Mon Sep 17 00:00:00 2001
From: 田源 <lastanimals@163.com>
Date: 星期二, 21 三月 2023 18:29:55 +0800
Subject: [PATCH] Merge branch 'master' of http://dev.vci-tech.com:1065/r/ubcs

---
 Source/BladeX/blade-ops/blade-develop/src/main/java/org/springblade/develop/controller/CodeController.java             |    2 
 Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/service/IStrategyService.java            |   51 +
 Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/service/IValueRangeService.java          |   49 +
 Source/BladeX/blade-service/blade-user/src/main/java/org/springblade/system/user/controller/UserController.java        |   16 
 Source/BladeX/blade-ops/blade-resource/src/main/java/org/springblade/resource/endpoint/OssEndpoint.java                |    8 
 Source/BladeX/blade-service-api/blade-system-api/src/main/java/org/springblade/system/entity/ValueRange.java           |  104 +++
 Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/mapper/ValueRangeMapper.xml              |   76 ++
 Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/mapper/CombinationMapper.java            |   42 +
 Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/controller/MenuController.java           |   16 
 Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/service/impl/TenantServiceImpl.java      |   38 
 Source/BladeX/blade-service-api/blade-system-api/src/main/java/org/springblade/system/entity/Role.java                 |    1 
 Source/BladeX/blade-service-api/blade-system-api/src/main/java/org/springblade/system/entity/Strategy.java             |  175 +++++
 Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/controller/TopMenuController.java        |    2 
 Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/mapper/CombinationMapper.xml             |   91 +++
 Source/BladeX/blade-ops/blade-flow/src/main/java/org/springblade/flow/engine/controller/FlowManagerController.java     |    2 
 Document/设计文档/菜单管理开发模块文档.docx                                                                                          |    0 
 Source/BladeX/blade-service-api/blade-system-api/src/main/java/org/springblade/system/entity/Combination.java          |  112 +++
 Source/BladeX/blade-service-api/blade-system-api/src/main/java/org/springblade/system/entity/Dept.java                 |    2 
 Source/BladeX/blade-ops/blade-resource/src/main/java/org/springblade/resource/controller/SmsController.java            |    2 
 Source/BladeX/blade-ops/blade-flow/src/main/java/org/springblade/flow/engine/controller/FlowModelController.java       |    2 
 Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/service/ICombinationService.java         |   58 +
 Source/BladeX/blade-service-api/blade-system-api/src/main/java/org/springblade/system/vo/TenantVO.java                 |    4 
 Source/BladeX/blade-service/blade-desk/src/main/java/org/springblade/desk/entity/ProcessLeave.java                     |    1 
 Source/BladeX/blade-ops/blade-resource/src/main/java/org/springblade/resource/controller/OssController.java            |    2 
 Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/mapper/ValueRangeMapper.java             |   36 +
 Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/service/impl/CombinationServiceImpl.java |  117 +++
 Source/BladeX/blade-service-api/blade-system-api/src/main/java/org/springblade/system/entity/Tenant.java               |   12 
 Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/mapper/MenuMapper.xml                    |   16 
 Source/BladeX/blade-ops/blade-flow/src/main/java/org/springblade/flow/engine/controller/FlowFollowController.java      |    2 
 Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/controller/CombinationController.java    |  108 +++
 Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/controller/StrategyController.java       |   98 +++
 Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/service/impl/ValueRangeServiceImpl.java  |  104 +++
 Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/controller/DeptController.java           |    4 
 Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/controller/RoleController.java           |    7 
 Document/设计文档/租户管理开发模块文档.docx                                                                                          |    0 
 Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/mapper/StrategyMapper.java               |   45 +
 Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/controller/TenantController.java         |   27 
 Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/controller/TenantPackageController.java  |    2 
 Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/controller/ValueRangeController.java     |   92 +++
 Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/controller/AuthClientController.java     |    4 
 Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/mapper/TenantMapper.xml                  |    1 
 Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/service/impl/StrategyServiceImpl.java    |  104 +++
 Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/mapper/StrategyMapper.xml                |  157 +++++
 43 files changed, 1,695 insertions(+), 97 deletions(-)

diff --git "a/Document/\350\256\276\350\256\241\346\226\207\346\241\243/\347\247\237\346\210\267\347\256\241\347\220\206\345\274\200\345\217\221\346\250\241\345\235\227\346\226\207\346\241\243.docx" "b/Document/\350\256\276\350\256\241\346\226\207\346\241\243/\347\247\237\346\210\267\347\256\241\347\220\206\345\274\200\345\217\221\346\250\241\345\235\227\346\226\207\346\241\243.docx"
index 852c042..133a1b8 100644
--- "a/Document/\350\256\276\350\256\241\346\226\207\346\241\243/\347\247\237\346\210\267\347\256\241\347\220\206\345\274\200\345\217\221\346\250\241\345\235\227\346\226\207\346\241\243.docx"
+++ "b/Document/\350\256\276\350\256\241\346\226\207\346\241\243/\347\247\237\346\210\267\347\256\241\347\220\206\345\274\200\345\217\221\346\250\241\345\235\227\346\226\207\346\241\243.docx"
Binary files differ
diff --git "a/Document/\350\256\276\350\256\241\346\226\207\346\241\243/\350\217\234\345\215\225\347\256\241\347\220\206\345\274\200\345\217\221\346\250\241\345\235\227\346\226\207\346\241\243.docx" "b/Document/\350\256\276\350\256\241\346\226\207\346\241\243/\350\217\234\345\215\225\347\256\241\347\220\206\345\274\200\345\217\221\346\250\241\345\235\227\346\226\207\346\241\243.docx"
new file mode 100644
index 0000000..84a7576
--- /dev/null
+++ "b/Document/\350\256\276\350\256\241\346\226\207\346\241\243/\350\217\234\345\215\225\347\256\241\347\220\206\345\274\200\345\217\221\346\250\241\345\235\227\346\226\207\346\241\243.docx"
Binary files differ
diff --git a/Source/BladeX/blade-ops/blade-develop/src/main/java/org/springblade/develop/controller/CodeController.java b/Source/BladeX/blade-ops/blade-develop/src/main/java/org/springblade/develop/controller/CodeController.java
index e9c6abe..95ee5b5 100644
--- a/Source/BladeX/blade-ops/blade-develop/src/main/java/org/springblade/develop/controller/CodeController.java
+++ b/Source/BladeX/blade-ops/blade-develop/src/main/java/org/springblade/develop/controller/CodeController.java
@@ -57,7 +57,7 @@
 @AllArgsConstructor
 @RequestMapping("/code")
 @Api(value = "浠g爜鐢熸垚", tags = "浠g爜鐢熸垚")
-@PreAuth(RoleConstant.HAS_ROLE_ADMINISTRATOR)
+//@PreAuth(RoleConstant.HAS_ROLE_ADMINISTRATOR)
 public class CodeController extends BladeController {
 
 	private final ICodeService codeService;
diff --git a/Source/BladeX/blade-ops/blade-flow/src/main/java/org/springblade/flow/engine/controller/FlowFollowController.java b/Source/BladeX/blade-ops/blade-flow/src/main/java/org/springblade/flow/engine/controller/FlowFollowController.java
index c2abaf4..253b6e1 100644
--- a/Source/BladeX/blade-ops/blade-flow/src/main/java/org/springblade/flow/engine/controller/FlowFollowController.java
+++ b/Source/BladeX/blade-ops/blade-flow/src/main/java/org/springblade/flow/engine/controller/FlowFollowController.java
@@ -40,7 +40,7 @@
 @RestController
 @RequestMapping("follow")
 @AllArgsConstructor
-@PreAuth(RoleConstant.HAS_ROLE_ADMINISTRATOR)
+//@PreAuth(RoleConstant.HAS_ROLE_ADMINISTRATOR)
 public class FlowFollowController {
 
 	private final FlowEngineService flowEngineService;
diff --git a/Source/BladeX/blade-ops/blade-flow/src/main/java/org/springblade/flow/engine/controller/FlowManagerController.java b/Source/BladeX/blade-ops/blade-flow/src/main/java/org/springblade/flow/engine/controller/FlowManagerController.java
index 2604b5d..1ae54d1 100644
--- a/Source/BladeX/blade-ops/blade-flow/src/main/java/org/springblade/flow/engine/controller/FlowManagerController.java
+++ b/Source/BladeX/blade-ops/blade-flow/src/main/java/org/springblade/flow/engine/controller/FlowManagerController.java
@@ -49,7 +49,7 @@
 @RequestMapping("manager")
 @AllArgsConstructor
 @Api(value = "娴佺▼绠$悊鎺ュ彛", tags = "娴佺▼绠$悊鎺ュ彛")
-@PreAuth(RoleConstant.HAS_ROLE_ADMINISTRATOR)
+//@PreAuth(RoleConstant.HAS_ROLE_ADMINISTRATOR)
 public class FlowManagerController {
 
 	private final FlowEngineService flowEngineService;
diff --git a/Source/BladeX/blade-ops/blade-flow/src/main/java/org/springblade/flow/engine/controller/FlowModelController.java b/Source/BladeX/blade-ops/blade-flow/src/main/java/org/springblade/flow/engine/controller/FlowModelController.java
index 54f703d..ce2c5ed 100644
--- a/Source/BladeX/blade-ops/blade-flow/src/main/java/org/springblade/flow/engine/controller/FlowModelController.java
+++ b/Source/BladeX/blade-ops/blade-flow/src/main/java/org/springblade/flow/engine/controller/FlowModelController.java
@@ -46,7 +46,7 @@
 @RestController
 @RequestMapping("model")
 @AllArgsConstructor
-@PreAuth(RoleConstant.HAS_ROLE_ADMINISTRATOR)
+//@PreAuth(RoleConstant.HAS_ROLE_ADMINISTRATOR)
 public class FlowModelController {
 
 	private final FlowEngineService flowEngineService;
diff --git a/Source/BladeX/blade-ops/blade-resource/src/main/java/org/springblade/resource/controller/OssController.java b/Source/BladeX/blade-ops/blade-resource/src/main/java/org/springblade/resource/controller/OssController.java
index e510c3e..f440895 100644
--- a/Source/BladeX/blade-ops/blade-resource/src/main/java/org/springblade/resource/controller/OssController.java
+++ b/Source/BladeX/blade-ops/blade-resource/src/main/java/org/springblade/resource/controller/OssController.java
@@ -52,7 +52,7 @@
 @RestController
 @AllArgsConstructor
 @RequestMapping("/oss")
-@PreAuth(RoleConstant.HAS_ROLE_ADMIN)
+//@PreAuth(RoleConstant.HAS_ROLE_ADMIN)
 @Api(value = "瀵硅薄瀛樺偍鎺ュ彛", tags = "瀵硅薄瀛樺偍鎺ュ彛")
 public class OssController extends BladeController {
 
diff --git a/Source/BladeX/blade-ops/blade-resource/src/main/java/org/springblade/resource/controller/SmsController.java b/Source/BladeX/blade-ops/blade-resource/src/main/java/org/springblade/resource/controller/SmsController.java
index 940e28d..882f1cb 100644
--- a/Source/BladeX/blade-ops/blade-resource/src/main/java/org/springblade/resource/controller/SmsController.java
+++ b/Source/BladeX/blade-ops/blade-resource/src/main/java/org/springblade/resource/controller/SmsController.java
@@ -52,7 +52,7 @@
 @RestController
 @AllArgsConstructor
 @RequestMapping("/sms")
-@PreAuth(RoleConstant.HAS_ROLE_ADMIN)
+//@PreAuth(RoleConstant.HAS_ROLE_ADMIN)
 @Api(value = "鐭俊閰嶇疆琛�", tags = "鐭俊閰嶇疆琛ㄦ帴鍙�")
 public class SmsController extends BladeController {
 
diff --git a/Source/BladeX/blade-ops/blade-resource/src/main/java/org/springblade/resource/endpoint/OssEndpoint.java b/Source/BladeX/blade-ops/blade-resource/src/main/java/org/springblade/resource/endpoint/OssEndpoint.java
index 7d00626..36f4ea9 100644
--- a/Source/BladeX/blade-ops/blade-resource/src/main/java/org/springblade/resource/endpoint/OssEndpoint.java
+++ b/Source/BladeX/blade-ops/blade-resource/src/main/java/org/springblade/resource/endpoint/OssEndpoint.java
@@ -63,7 +63,7 @@
 	 */
 	@SneakyThrows
 	@PostMapping("/make-bucket")
-	@PreAuth(RoleConstant.HAS_ROLE_ADMIN)
+	//@PreAuth(RoleConstant.HAS_ROLE_ADMIN)
 	public R makeBucket(@RequestParam String bucketName) {
 		ossBuilder.template().makeBucket(bucketName);
 		return R.success("鍒涘缓鎴愬姛");
@@ -77,7 +77,7 @@
 	 */
 	@SneakyThrows
 	@PostMapping("/remove-bucket")
-	@PreAuth(RoleConstant.HAS_ROLE_ADMIN)
+	//@PreAuth(RoleConstant.HAS_ROLE_ADMIN)
 	public R removeBucket(@RequestParam String bucketName) {
 		ossBuilder.template().removeBucket(bucketName);
 		return R.success("鍒犻櫎鎴愬姛");
@@ -223,7 +223,7 @@
 	 */
 	@SneakyThrows
 	@PostMapping("/remove-file")
-	@PreAuth(RoleConstant.HAS_ROLE_ADMIN)
+	//@PreAuth(RoleConstant.HAS_ROLE_ADMIN)
 	public R removeFile(@RequestParam String fileName) {
 		ossBuilder.template().removeFile(fileName);
 		return R.success("鎿嶄綔鎴愬姛");
@@ -237,7 +237,7 @@
 	 */
 	@SneakyThrows
 	@PostMapping("/remove-files")
-	@PreAuth(RoleConstant.HAS_ROLE_ADMIN)
+	//@PreAuth(RoleConstant.HAS_ROLE_ADMIN)
 	public R removeFiles(@RequestParam String fileNames) {
 		ossBuilder.template().removeFiles(Func.toStrList(fileNames));
 		return R.success("鎿嶄綔鎴愬姛");
diff --git a/Source/BladeX/blade-service-api/blade-system-api/src/main/java/org/springblade/system/entity/Combination.java b/Source/BladeX/blade-service-api/blade-system-api/src/main/java/org/springblade/system/entity/Combination.java
new file mode 100644
index 0000000..84a8acc
--- /dev/null
+++ b/Source/BladeX/blade-service-api/blade-system-api/src/main/java/org/springblade/system/entity/Combination.java
@@ -0,0 +1,112 @@
+package org.springblade.system.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.io.Serializable;
+import java.util.Date;
+import java.util.Objects;
+
+/**
+ * 瀵嗙爜缁勫悎鏂瑰紡琛�(PlSysCombination)瀹炰綋绫�
+ *
+ * @author ldc
+ * @since 2023-03-20 14:56:26
+ */
+@Data
+@TableName("pl_sys_combination")
+@ApiModel(value = "Combination瀵硅薄", description = "Combination瀵硅薄")
+public class Combination implements Serializable {
+	private static final long serialVersionUID = 905936175743821305L;
+
+	/**
+	 * 涓婚敭
+	 */
+	@JsonSerialize(using = ToStringSerializer.class)
+	@ApiModelProperty(value = "涓婚敭")
+	@TableId(value = "id", type = IdType.ASSIGN_ID)
+	private Long id;
+
+	/**
+	 * 缁勫悎鍚嶇О
+	 */
+	@ApiModelProperty(value = "缁勫悎鍚嶇О")
+	private String name;
+
+	/**
+	 * 鎻忚堪
+	 */
+	@TableField("\"DESC\"")
+	@ApiModelProperty(value = "鎻忚堪")
+	private String desc;
+
+	/**
+	 * 鍒涘缓鏃堕棿
+	 */
+	@DateTimeFormat(
+		pattern = "yyyy-MM-dd HH:mm:ss"
+	)
+	@JsonFormat(
+		pattern = "yyyy-MM-dd HH:mm:ss"
+	)
+	@ApiModelProperty(value = "鍒涘缓鏃堕棿")
+	private Date createTime;
+
+	/**
+	 * 鍒涘缓浜�
+	 */
+	@ApiModelProperty(value = "鍒涘缓浜�")
+	private String createUser;
+
+	/**
+	 * 淇敼鏃堕棿
+	 */
+	@DateTimeFormat(
+		pattern = "yyyy-MM-dd HH:mm:ss"
+	)
+	@JsonFormat(
+		pattern = "yyyy-MM-dd HH:mm:ss"
+	)
+	@ApiModelProperty(value = "淇敼鏃堕棿")
+	private Date updateTime;
+
+	/**
+	 * 淇敼浜�
+	 */
+	@ApiModelProperty(value = "淇敼浜�")
+	private String updateUser;
+
+	/**
+	 * 鎺堟潈浜�
+	 */
+	@ApiModelProperty(value = "鎺堟潈浜�")
+	private String licensors;
+
+	@Override
+	public boolean equals(Object o) {
+		if (this == o) {
+			return true;
+		}
+		if (o == null || getClass() != o.getClass()) {
+			return false;
+		}
+		Combination that = (Combination) o;
+		return Objects.equals(id, that.id) && Objects.equals(name, that.name) && Objects.equals(desc, that.desc) && Objects.equals(createTime, that.createTime) && Objects.equals(createUser, that.createUser) && Objects.equals(updateTime, that.updateTime) && Objects.equals(updateUser, that.updateUser) && Objects.equals(licensors, that.licensors);
+	}
+
+	@Override
+	public int hashCode() {
+		return Objects.hash(id, name, desc, createTime, createUser, updateTime, updateUser, licensors);
+	}
+
+}
+
diff --git a/Source/BladeX/blade-service-api/blade-system-api/src/main/java/org/springblade/system/entity/Dept.java b/Source/BladeX/blade-service-api/blade-system-api/src/main/java/org/springblade/system/entity/Dept.java
index 2911e7f..62d728b 100644
--- a/Source/BladeX/blade-service-api/blade-system-api/src/main/java/org/springblade/system/entity/Dept.java
+++ b/Source/BladeX/blade-service-api/blade-system-api/src/main/java/org/springblade/system/entity/Dept.java
@@ -70,7 +70,7 @@
 	/**
 	 * 鏈烘瀯鍏ㄧО
 	 */
-	@ApiModelProperty(value = "鏈烘瀯鍏ㄧО")
+	@ApiModelProperty(value = "閮ㄩ棬鍏ㄧО")
 	private String fullName;
 
 	/**
diff --git a/Source/BladeX/blade-service-api/blade-system-api/src/main/java/org/springblade/system/entity/Role.java b/Source/BladeX/blade-service-api/blade-system-api/src/main/java/org/springblade/system/entity/Role.java
index 878ea4b..7e49879 100644
--- a/Source/BladeX/blade-service-api/blade-system-api/src/main/java/org/springblade/system/entity/Role.java
+++ b/Source/BladeX/blade-service-api/blade-system-api/src/main/java/org/springblade/system/entity/Role.java
@@ -24,7 +24,6 @@
 import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
-import lombok.AllArgsConstructor;
 import lombok.Data;
 import lombok.NoArgsConstructor;
 
diff --git a/Source/BladeX/blade-service-api/blade-system-api/src/main/java/org/springblade/system/entity/Strategy.java b/Source/BladeX/blade-service-api/blade-system-api/src/main/java/org/springblade/system/entity/Strategy.java
new file mode 100644
index 0000000..3fde150
--- /dev/null
+++ b/Source/BladeX/blade-service-api/blade-system-api/src/main/java/org/springblade/system/entity/Strategy.java
@@ -0,0 +1,175 @@
+package org.springblade.system.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.io.Serializable;
+import java.util.Date;
+import java.util.Objects;
+
+/**
+ * 瀵嗙爜绛栫暐(PlSysStrategy)瀹炰綋绫�
+ *
+ * @author ldc
+ * @since 2023-03-20 15:00:22
+ */
+@Data
+@TableName("pl_sys_strategy")
+@ApiModel(value = "Strategy瀵硅薄", description = "Strategy瀵硅薄")
+public class Strategy implements Serializable {
+	private static final long serialVersionUID = 420195522547332354L;
+
+	/**
+	 * 涓婚敭
+	 */
+	@JsonSerialize(using = ToStringSerializer.class)
+	@ApiModelProperty(value = "涓婚敭")
+	@TableId(value = "id", type = IdType.ASSIGN_ID)
+	private Long id;
+
+	/**
+	 * 绛栫暐鍚嶇О
+	 */
+	@ApiModelProperty(value = "绛栫暐鍚嶇О")
+	private String strategyName;
+
+	/**
+	 * 瀵嗙爜鏈�灏忛暱搴�
+	 */
+	@ApiModelProperty(value = "瀵嗙爜鏈�灏忛暱搴�")
+	private Long minPwdLen;
+
+	/**
+	 * 瀵嗙爜鏈�澶ч暱搴�
+	 */
+	@ApiModelProperty(value = "瀵嗙爜鏈�澶ч暱搴�")
+	private Long maxPwdLen;
+
+	/**
+	 * 瀵嗙爜缁勫悎鏂瑰紡
+	 */
+	@ApiModelProperty(value = "瀵嗙爜缁勫悎鏂瑰紡")
+	private String combinationIds;
+
+	/**
+	 * 蹇呭~绉嶇被
+	 */
+	@ApiModelProperty(value = "蹇呭~绉嶇被")
+	private Long requiredType;
+
+	/**
+	 * 杩囨湡鏃堕棿
+	 */
+	@ApiModelProperty(value = "杩囨湡鏃堕棿")
+	private Date expirationTime;
+
+	/**
+	 * 鎻愰啋鏃堕棿
+	 */
+	@ApiModelProperty(value = "鎻愰啋鏃堕棿")
+	private Date reminderTime;
+
+	/**
+	 * 閿佸畾娆℃暟
+	 */
+	@ApiModelProperty(value = "閿佸畾娆℃暟")
+	private Long lockingNum;
+
+	/**
+	 * 閿佸畾鏃堕棿
+	 */
+	@ApiModelProperty(value = "閿佸畾鏃堕棿")
+	private Date lockingTime;
+
+	/**
+	 * 鎻忚堪
+	 */
+	@ApiModelProperty(value = "鎻忚堪")
+	@TableField("\"DESC\"")
+	private String desc;
+
+	/**
+	 * 鏄惁涓洪粯璁ょ瓥鐣�
+	 */
+	@ApiModelProperty(value = "鏄惁涓洪粯璁ょ瓥鐣�,鏄惁涓洪粯璁わ紝1浠h〃榛樿锛�0浠h〃闈為粯璁�")
+	private Long isDefault;
+
+	/**
+	 * 鍒涘缓鏃堕棿
+	 */
+	@DateTimeFormat(
+		pattern = "yyyy-MM-dd HH:mm:ss"
+	)
+	@JsonFormat(
+		pattern = "yyyy-MM-dd HH:mm:ss"
+	)
+	@ApiModelProperty(value = "鍒涘缓鏃堕棿")
+	private Date createTime;
+
+	/**
+	 * 鍒涘缓浜�
+	 */
+	@ApiModelProperty(value = "鍒涘缓浜�")
+	private String createUser;
+
+	/**
+	 * 淇敼鏃堕棿
+	 */
+	@DateTimeFormat(
+		pattern = "yyyy-MM-dd HH:mm:ss"
+	)
+	@JsonFormat(
+		pattern = "yyyy-MM-dd HH:mm:ss"
+	)
+	@ApiModelProperty(value = "淇敼鏃堕棿")
+	private Date updateTime;
+
+	/**
+	 * 淇敼浜�
+	 */
+	@ApiModelProperty(value = "淇敼浜�")
+	private String updateUser;
+
+	/**
+	 * 鎺堟潈浜�
+	 */
+	@ApiModelProperty(value = "鎺堟潈浜�")
+	private String licensors;
+
+	/**
+	 * 缁勫悎鍚嶇О
+	 */
+	@ApiModelProperty(value = "缁勫悎鍚嶇О")
+	@TableField(exist = false)
+	private String combinationNames;
+
+	@Override
+	public boolean equals(Object o) {
+		if (this == o) {
+			return true;
+		}
+		if (o == null || getClass() != o.getClass()) {
+			return false;
+		}
+		if (!super.equals(o)) {
+			return false;
+		}
+		Strategy strategy = (Strategy) o;
+		return Objects.equals(id, strategy.id) && Objects.equals(strategyName, strategy.strategyName) && Objects.equals(minPwdLen, strategy.minPwdLen) && Objects.equals(maxPwdLen, strategy.maxPwdLen) && Objects.equals(combinationIds, strategy.combinationIds) && Objects.equals(requiredType, strategy.requiredType) && Objects.equals(expirationTime, strategy.expirationTime) && Objects.equals(reminderTime, strategy.reminderTime) && Objects.equals(lockingNum, strategy.lockingNum) && Objects.equals(lockingTime, strategy.lockingTime) && Objects.equals(desc, strategy.desc) && Objects.equals(isDefault, strategy.isDefault);
+	}
+
+	@Override
+	public int hashCode() {
+		return Objects.hash(super.hashCode(), id, strategyName, minPwdLen, maxPwdLen, combinationIds, requiredType, expirationTime, reminderTime, lockingNum, lockingTime, desc, isDefault);
+	}
+}
+
diff --git a/Source/BladeX/blade-service-api/blade-system-api/src/main/java/org/springblade/system/entity/Tenant.java b/Source/BladeX/blade-service-api/blade-system-api/src/main/java/org/springblade/system/entity/Tenant.java
index fdd8a26..2822469 100644
--- a/Source/BladeX/blade-service-api/blade-system-api/src/main/java/org/springblade/system/entity/Tenant.java
+++ b/Source/BladeX/blade-service-api/blade-system-api/src/main/java/org/springblade/system/entity/Tenant.java
@@ -17,7 +17,6 @@
 package org.springblade.system.entity;
 
 import com.baomidou.mybatisplus.annotation.TableName;
-import com.fasterxml.jackson.annotation.JsonFormat;
 import com.fasterxml.jackson.databind.annotation.JsonSerialize;
 import com.fasterxml.jackson.databind.ser.std.NullSerializer;
 import io.swagger.annotations.ApiModel;
@@ -25,10 +24,6 @@
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 import org.springblade.core.mp.base.BaseEntity;
-import org.springblade.core.tool.utils.DateUtil;
-import org.springframework.format.annotation.DateTimeFormat;
-
-import java.util.Date;
 
 /**
  * 瀹炰綋绫�
@@ -48,6 +43,13 @@
 	 */
 	@ApiModelProperty(value = "绉熸埛ID")
 	private String tenantId;
+
+	/**
+	 * 绉熸埛鍏ㄧО
+	 */
+	@ApiModelProperty(value = "绉熸埛鍏ㄧО")
+	private String fullName;
+
 	/**
 	 * 绉熸埛鍚嶇О
 	 */
diff --git a/Source/BladeX/blade-service-api/blade-system-api/src/main/java/org/springblade/system/entity/ValueRange.java b/Source/BladeX/blade-service-api/blade-system-api/src/main/java/org/springblade/system/entity/ValueRange.java
new file mode 100644
index 0000000..8092fda
--- /dev/null
+++ b/Source/BladeX/blade-service-api/blade-system-api/src/main/java/org/springblade/system/entity/ValueRange.java
@@ -0,0 +1,104 @@
+package org.springblade.system.entity;
+
+import com.baomidou.mybatisplus.annotation.*;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.io.Serializable;
+import java.util.Date;
+import java.util.Objects;
+
+/**
+ * (PlSysValueRange)瀹炰綋绫�
+ *
+ * @author makejava
+ * @since 2023-03-20 14:59:29
+ */
+@Data
+@TableName("pl_sys_value_range")
+@ApiModel(value = "ValueRange", description = "ValueRange")
+public class ValueRange implements Serializable {
+	private static final long serialVersionUID = -62275902377620042L;
+
+	/**
+	 * 涓婚敭
+	 */
+	@JsonSerialize(using = ToStringSerializer.class)
+	@ApiModelProperty(value = "涓婚敭")
+	@TableId(value = "id", type = IdType.ASSIGN_ID)
+	private Long id;
+
+	/**
+	 * 鍊�
+	 */
+	@ApiModelProperty(value = "鍊�")
+	private String value;
+
+	/**
+	 * 缁勫悎鏂瑰紡ID
+	 */
+	@ApiModelProperty(value = "缁勫悎鏂瑰紡ID")
+	private Long combinationId;
+
+	/**
+	 * 鍒涘缓鏃堕棿
+	 */
+	@DateTimeFormat(
+		pattern = "yyyy-MM-dd HH:mm:ss"
+	)
+	@JsonFormat(
+		pattern = "yyyy-MM-dd HH:mm:ss"
+	)
+	@ApiModelProperty(value = "鍒涘缓鏃堕棿")
+	private Date createTime;
+
+	/**
+	 * 鍒涘缓浜�
+	 */
+	@ApiModelProperty(value = "鍒涘缓浜�")
+	private String createUser;
+
+	/**
+	 * 淇敼鏃堕棿
+	 */
+	@DateTimeFormat(
+		pattern = "yyyy-MM-dd HH:mm:ss"
+	)
+	@JsonFormat(
+		pattern = "yyyy-MM-dd HH:mm:ss"
+	)
+	@ApiModelProperty(value = "淇敼鏃堕棿")
+	private Date updateTime;
+
+	/**
+	 * 淇敼浜�
+	 */
+	@ApiModelProperty(value = "淇敼浜�")
+	private String updateUser;
+
+	@Override
+	public boolean equals(Object o) {
+		if (this == o) {
+			return true;
+		}
+		if (o == null || getClass() != o.getClass()) {
+			return false;
+		}
+		if (!super.equals(o)) {
+			return false;
+		}
+		ValueRange that = (ValueRange) o;
+		return Objects.equals(id, that.id) && Objects.equals(value, that.value) && Objects.equals(combinationId, that.combinationId);
+	}
+
+	@Override
+	public int hashCode() {
+		return Objects.hash(super.hashCode(), id, value, combinationId);
+	}
+}
+
diff --git a/Source/BladeX/blade-service-api/blade-system-api/src/main/java/org/springblade/system/vo/TenantVO.java b/Source/BladeX/blade-service-api/blade-system-api/src/main/java/org/springblade/system/vo/TenantVO.java
index 6624e71..313ecdb 100644
--- a/Source/BladeX/blade-service-api/blade-system-api/src/main/java/org/springblade/system/vo/TenantVO.java
+++ b/Source/BladeX/blade-service-api/blade-system-api/src/main/java/org/springblade/system/vo/TenantVO.java
@@ -19,7 +19,6 @@
 import io.swagger.annotations.ApiModel;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
-import org.springblade.system.entity.ApiScope;
 import org.springblade.system.entity.Tenant;
 
 /**
@@ -36,5 +35,6 @@
 	/**
 	 * 鏄惁寮�鍚笁鍛�
 	 */
-	private Boolean membersFlag;
+	private Integer ssaEnable;
+
 }
diff --git a/Source/BladeX/blade-service/blade-desk/src/main/java/org/springblade/desk/entity/ProcessLeave.java b/Source/BladeX/blade-service/blade-desk/src/main/java/org/springblade/desk/entity/ProcessLeave.java
index c8afc07..67dc1a6 100644
--- a/Source/BladeX/blade-service/blade-desk/src/main/java/org/springblade/desk/entity/ProcessLeave.java
+++ b/Source/BladeX/blade-service/blade-desk/src/main/java/org/springblade/desk/entity/ProcessLeave.java
@@ -21,6 +21,7 @@
 import lombok.EqualsAndHashCode;
 import org.springblade.flow.core.entity.FlowEntity;
 
+import java.io.Serializable;
 import java.util.Date;
 
 /**
diff --git a/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/controller/AuthClientController.java b/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/controller/AuthClientController.java
index 91c9ffd..3d21cdb 100644
--- a/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/controller/AuthClientController.java
+++ b/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/controller/AuthClientController.java
@@ -25,10 +25,8 @@
 import org.springblade.core.boot.ctrl.BladeController;
 import org.springblade.core.mp.support.Condition;
 import org.springblade.core.mp.support.Query;
-import org.springblade.core.secure.annotation.PreAuth;
 import org.springblade.core.tenant.annotation.NonDS;
 import org.springblade.core.tool.api.R;
-import org.springblade.core.tool.constant.RoleConstant;
 import org.springblade.core.tool.utils.Func;
 import org.springblade.system.entity.AuthClient;
 import org.springblade.system.service.IAuthClientService;
@@ -48,7 +46,7 @@
 @RequestMapping("/client")
 @ApiIgnore
 @Api(value = "搴旂敤绠$悊", tags = "鎺ュ彛")
-@PreAuth(RoleConstant.HAS_ROLE_ADMINISTRATOR)
+//@PreAuth(RoleConstant.HAS_ROLE_ADMINISTRATOR)
 public class AuthClientController extends BladeController {
 
 	private final IAuthClientService clientService;
diff --git a/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/controller/CombinationController.java b/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/controller/CombinationController.java
new file mode 100644
index 0000000..6297734
--- /dev/null
+++ b/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/controller/CombinationController.java
@@ -0,0 +1,108 @@
+package org.springblade.system.controller;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import io.swagger.annotations.ApiParam;
+import lombok.AllArgsConstructor;
+import org.springblade.core.mp.support.Condition;
+import org.springblade.core.mp.support.Query;
+import org.springblade.core.tool.api.R;
+import org.springblade.system.entity.Combination;
+import org.springblade.system.service.ICombinationService;
+import org.springframework.http.ResponseEntity;
+import org.springframework.web.bind.annotation.*;
+import springfox.documentation.annotations.ApiIgnore;
+
+import javax.annotation.Resource;
+import javax.validation.Valid;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 瀵嗙爜缁勫悎鏂瑰紡琛�(Combination)琛ㄦ帶鍒跺眰
+ *
+ * @author makejava
+ * @since 2023-03-20 15:23:16
+ */
+@ApiIgnore
+@AllArgsConstructor
+@RestController
+@Api(value = "瀵嗙爜缁勫悎鏂瑰紡", tags = "鎺ュ彛")
+@RequestMapping("/combination")
+public class CombinationController {
+
+	/**
+	 * 鏈嶅姟瀵硅薄
+	 */
+	@Resource
+	private final ICombinationService combinationService;
+
+	/**
+	 * 鍒嗛〉鏌ヨ
+	 *
+	 * @param combination 绛涢�夋潯浠�
+	 * @param query      鍒嗛〉瀵硅薄
+	 * @return 鏌ヨ缁撴灉
+	 */
+	@GetMapping("/page")
+	@ApiOperationSupport(order = 1)
+	@ApiOperation(value = "鍒嗛〉鏌ヨ", notes = "浼犲叆combination锛屽垎椤靛弬鏁皅uery")
+	public R<IPage<Combination>> queryByPage(Combination combination, Query query) {
+		IPage<Combination> pages = combinationService.page(Condition.getPage(query), Condition.getQueryWrapper(combination));
+		return R.data(pages);
+	}
+
+	/**
+	 * 涓嬫媺鏁版嵁婧�
+	 */
+	@GetMapping("/select")
+	@ApiOperationSupport(order = 2)
+	@ApiOperation(value = "涓嬫媺鏁版嵁婧�")
+	public R<List> select() {
+		List<Map<String, Object>> map = combinationService.selectMaps();
+		return R.data(map);
+	}
+
+	/**
+	 * 閫氳繃涓婚敭鏌ヨ鍗曟潯鏁版嵁
+	 *
+	 * @param id 涓婚敭
+	 * @return 鍗曟潯鏁版嵁
+	 */
+	@GetMapping("/one")
+	@ApiOperationSupport(order = 3)
+	@ApiOperation(value = "閫氳繃涓婚敭鏌ヨ鍗曟潯鏁版嵁", notes = "浼犲叆id")
+	public ResponseEntity<Combination> queryById(@ApiParam(value = "缁勫悎鏂瑰紡ID", required = true) @RequestParam Long id) {
+		return ResponseEntity.ok(this.combinationService.queryById(id));
+	}
+
+	/**
+	 * 鏂板鍜屼慨鏀规暟鎹�
+	 *
+	 * @param combination 瀹炰綋
+	 * @return 鏂板缁撴灉
+	 */
+	@PostMapping("/submit")
+	@ApiOperationSupport(order = 4)
+	@ApiOperation(value = "鏂板鍜屼慨鏀规暟鎹�", notes = "浼犲叆combination")
+	public R submit(@Valid @RequestBody Combination combination) {
+		return R.status(combinationService.submit(combination));
+	}
+
+	/**
+	 * 鍒犻櫎鏁版嵁
+	 *
+	 * @param ids 涓婚敭
+	 * @return 鍒犻櫎鏄惁鎴愬姛
+	 */
+	@PostMapping("/remove")
+	@ApiOperationSupport(order = 5)
+	@ApiOperation(value = "閫昏緫鍒犻櫎", notes = "浼犲叆ids")
+	public ResponseEntity<Boolean> deleteById(@ApiParam(value = "涓婚敭闆嗗悎", required = true) @RequestParam List<String> ids) {
+		return ResponseEntity.ok(this.combinationService.deleteByIds(ids));
+	}
+
+}
+
diff --git a/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/controller/DeptController.java b/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/controller/DeptController.java
index 7637255..c2acc4a 100644
--- a/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/controller/DeptController.java
+++ b/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/controller/DeptController.java
@@ -60,7 +60,7 @@
 @AllArgsConstructor
 @RequestMapping("/dept")
 @Api(value = "閮ㄩ棬", tags = "閮ㄩ棬")
-@PreAuth(RoleConstant.HAS_ROLE_ADMIN)
+//@PreAuth(RoleConstant.HAS_ROLE_ADMIN)
 public class DeptController extends BladeController {
 
 	private final IDeptService deptService;
@@ -162,7 +162,7 @@
 	/**
 	 * 涓嬫媺鏁版嵁婧�
 	 */
-	@PreAuth(AuthConstant.PERMIT_ALL)
+	//@PreAuth(AuthConstant.PERMIT_ALL)
 	@GetMapping("/select")
 	@ApiOperationSupport(order = 8)
 	@ApiOperation(value = "涓嬫媺鏁版嵁婧�", notes = "浼犲叆id闆嗗悎")
diff --git a/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/controller/MenuController.java b/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/controller/MenuController.java
index f46898c..b798a72 100644
--- a/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/controller/MenuController.java
+++ b/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/controller/MenuController.java
@@ -68,7 +68,7 @@
 	 * 璇︽儏
 	 */
 	@GetMapping("/detail")
-	@PreAuth(RoleConstant.HAS_ROLE_ADMINISTRATOR)
+	//@PreAuth(RoleConstant.HAS_ROLE_ADMINISTRATOR)
 	@ApiOperationSupport(order = 1)
 	@ApiOperation(value = "璇︽儏", notes = "浼犲叆menu")
 	public R<MenuVO> detail(Menu menu) {
@@ -84,7 +84,7 @@
 		@ApiImplicitParam(name = "code", value = "鑿滃崟缂栧彿", paramType = "query", dataType = "string"),
 		@ApiImplicitParam(name = "name", value = "鑿滃崟鍚嶇О", paramType = "query", dataType = "string")
 	})
-	@PreAuth(RoleConstant.HAS_ROLE_ADMINISTRATOR)
+	//@PreAuth(RoleConstant.HAS_ROLE_ADMINISTRATOR)
 	@ApiOperationSupport(order = 2)
 	@ApiOperation(value = "鍒楄〃", notes = "浼犲叆menu")
 	public R<List<MenuVO>> list(@ApiIgnore @RequestParam Map<String, Object> menu) {
@@ -100,7 +100,7 @@
 		@ApiImplicitParam(name = "code", value = "鑿滃崟缂栧彿", paramType = "query", dataType = "string"),
 		@ApiImplicitParam(name = "name", value = "鑿滃崟鍚嶇О", paramType = "query", dataType = "string")
 	})
-	@PreAuth(RoleConstant.HAS_ROLE_ADMINISTRATOR)
+	//@PreAuth(RoleConstant.HAS_ROLE_ADMINISTRATOR)
 	@ApiOperationSupport(order = 3)
 	@ApiOperation(value = "鎳掑姞杞藉垪琛�", notes = "浼犲叆menu")
 	public R<List<MenuVO>> lazyList(Long parentId, @ApiIgnore @RequestParam Map<String, Object> menu) {
@@ -116,7 +116,7 @@
 		@ApiImplicitParam(name = "code", value = "鑿滃崟缂栧彿", paramType = "query", dataType = "string"),
 		@ApiImplicitParam(name = "name", value = "鑿滃崟鍚嶇О", paramType = "query", dataType = "string")
 	})
-	@PreAuth(RoleConstant.HAS_ROLE_ADMINISTRATOR)
+	//@PreAuth(RoleConstant.HAS_ROLE_ADMINISTRATOR)
 	@ApiOperationSupport(order = 4)
 	@ApiOperation(value = "鑿滃崟鍒楄〃", notes = "浼犲叆menu")
 	public R<List<MenuVO>> menuList(@ApiIgnore @RequestParam Map<String, Object> menu) {
@@ -132,7 +132,7 @@
 		@ApiImplicitParam(name = "code", value = "鑿滃崟缂栧彿", paramType = "query", dataType = "string"),
 		@ApiImplicitParam(name = "name", value = "鑿滃崟鍚嶇О", paramType = "query", dataType = "string")
 	})
-	@PreAuth(RoleConstant.HAS_ROLE_ADMINISTRATOR)
+	//@PreAuth(RoleConstant.HAS_ROLE_ADMINISTRATOR)
 	@ApiOperationSupport(order = 5)
 	@ApiOperation(value = "鎳掑姞杞借彍鍗曞垪琛�", notes = "浼犲叆menu")
 	public R<List<MenuVO>> lazyMenuList(Long parentId, @ApiIgnore @RequestParam Map<String, Object> menu) {
@@ -144,7 +144,7 @@
 	 * 鏂板鎴栦慨鏀�
 	 */
 	@PostMapping("/submit")
-	@PreAuth(RoleConstant.HAS_ROLE_ADMINISTRATOR)
+	//@PreAuth(RoleConstant.HAS_ROLE_ADMINISTRATOR)
 	@ApiOperationSupport(order = 6)
 	@ApiOperation(value = "鏂板鎴栦慨鏀�", notes = "浼犲叆menu")
 	public R submit(@Valid @RequestBody Menu menu) {
@@ -163,7 +163,7 @@
 	 * 鍒犻櫎
 	 */
 	@PostMapping("/remove")
-	@PreAuth(RoleConstant.HAS_ROLE_ADMINISTRATOR)
+	//@PreAuth(RoleConstant.HAS_ROLE_ADMINISTRATOR)
 	@ApiOperationSupport(order = 7)
 	@ApiOperation(value = "鍒犻櫎", notes = "浼犲叆ids")
 	public R remove(@ApiParam(value = "涓婚敭闆嗗悎", required = true) @RequestParam String ids) {
@@ -274,7 +274,7 @@
 	/**
 	 * 鑾峰彇閰嶇疆鐨勮鑹叉潈闄�
 	 */
-	@GetMapping("auth-routes")
+	@GetMapping("/auth-routes")
 	@ApiOperationSupport(order = 17)
 	@ApiOperation(value = "鑿滃崟鐨勮鑹叉潈闄�")
 	public R<List<Kv>> authRoutes(BladeUser user) {
diff --git a/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/controller/RoleController.java b/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/controller/RoleController.java
index fbb811b..d2af8bc 100644
--- a/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/controller/RoleController.java
+++ b/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/controller/RoleController.java
@@ -25,12 +25,9 @@
 import org.springblade.core.cache.utils.CacheUtil;
 import org.springblade.core.mp.support.Condition;
 import org.springblade.core.secure.BladeUser;
-import org.springblade.core.secure.annotation.PreAuth;
-import org.springblade.core.secure.constant.AuthConstant;
 import org.springblade.core.tenant.annotation.NonDS;
 import org.springblade.core.tool.api.R;
 import org.springblade.core.tool.constant.BladeConstant;
-import org.springblade.core.tool.constant.RoleConstant;
 import org.springblade.core.tool.utils.Func;
 import org.springblade.system.cache.SysCache;
 import org.springblade.system.entity.Role;
@@ -59,7 +56,7 @@
 @AllArgsConstructor
 @RequestMapping("/role")
 @Api(value = "瑙掕壊", tags = "瑙掕壊")
-@PreAuth(RoleConstant.HAS_ROLE_ADMIN)
+//@PreAuth(RoleConstant.HAS_ROLE_ADMIN)
 public class RoleController extends BladeController {
 
 	private final IRoleService roleService;
@@ -155,7 +152,7 @@
 	/**
 	 * 涓嬫媺鏁版嵁婧�
 	 */
-	@PreAuth(AuthConstant.PERMIT_ALL)
+	//@PreAuth(AuthConstant.PERMIT_ALL)
 	@GetMapping("/select")
 	@ApiOperationSupport(order = 8)
 	@ApiOperation(value = "涓嬫媺鏁版嵁婧�", notes = "浼犲叆id闆嗗悎")
diff --git a/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/controller/StrategyController.java b/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/controller/StrategyController.java
new file mode 100644
index 0000000..16ed941
--- /dev/null
+++ b/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/controller/StrategyController.java
@@ -0,0 +1,98 @@
+package org.springblade.system.controller;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import io.swagger.annotations.ApiParam;
+import lombok.AllArgsConstructor;
+import org.springblade.core.mp.support.Condition;
+import org.springblade.core.mp.support.Query;
+import org.springblade.core.tenant.annotation.NonDS;
+import org.springblade.core.tool.api.R;
+import org.springblade.system.entity.Strategy;
+import org.springblade.system.service.IStrategyService;
+import org.springframework.http.ResponseEntity;
+import org.springframework.web.bind.annotation.*;
+import springfox.documentation.annotations.ApiIgnore;
+
+import javax.annotation.Resource;
+import javax.validation.Valid;
+import java.util.List;
+
+/**
+ * 瀵嗙爜绛栫暐(PlSysStrategy)琛ㄦ帶鍒跺眰
+ *
+ * @author makejava
+ * @since 2023-03-20 16:45:31
+ */
+@NonDS
+@ApiIgnore
+@AllArgsConstructor
+@RestController
+@RequestMapping("/strategy")
+@Api(value = "瀵嗙爜绛栫暐", tags = "鎺ュ彛")
+public class StrategyController {
+
+	/**
+	 * 鏈嶅姟瀵硅薄
+	 */
+	@Resource
+	private IStrategyService strategyService;
+
+	/**
+	 * 鍒嗛〉鏌ヨ
+	 *
+	 * @param strategy 绛涢�夋潯浠�
+	 * @param query      鍒嗛〉瀵硅薄
+	 * @return 鏌ヨ缁撴灉
+	 */
+	@GetMapping("/page")
+	@ApiOperationSupport(order = 1)
+	@ApiOperation(value = "鍒嗛〉鏌ヨ", notes = "浼犲叆combination锛屽垎椤靛弬鏁皅uery")
+	public R<IPage<Strategy>> queryByPage(Strategy strategy, Query query) {
+		IPage<Strategy> pages = strategyService.page(Condition.getPage(query), Condition.getQueryWrapper(strategy));
+		return R.data(pages);
+	}
+
+	/**
+	 * 閫氳繃涓婚敭鏌ヨ鍗曟潯鏁版嵁
+	 *
+	 * @param id 涓婚敭
+	 * @return 鍗曟潯鏁版嵁
+	 */
+	@GetMapping("/one")
+	@ApiOperationSupport(order = 2)
+	@ApiOperation(value = "閫氳繃涓婚敭鏌ヨ鍗曟潯鏁版嵁", notes = "浼犲叆id")
+	public ResponseEntity<Strategy> queryById(@ApiParam(value = "瀵嗙爜绛栫暐ID", required = true) @RequestParam String id) {
+		return ResponseEntity.ok(this.strategyService.queryById(id));
+	}
+
+	/**
+	 * 鏂板鍜屼慨鏀规暟鎹�
+	 *
+	 * @param strategy 瀹炰綋
+	 * @return 鏂板缁撴灉
+	 */
+	@PostMapping("/submit")
+	@ApiOperationSupport(order = 3)
+	@ApiOperation(value = "鏂板鎴栦慨鏀规暟鎹�", notes = "浼犲叆strategy")
+	public ResponseEntity<Boolean> submit(@Valid @RequestBody Strategy strategy) {
+		return ResponseEntity.ok(this.strategyService.submit(strategy));
+	}
+
+	/**
+	 * 鍒犻櫎鏁版嵁
+	 *
+	 * @param ids 涓婚敭
+	 * @return 鍒犻櫎鏄惁鎴愬姛
+	 */
+	@PostMapping("/remove")
+	@ApiOperationSupport(order = 4)
+	@ApiOperation(value = "鍒犻櫎", notes = "浼犲叆ids")
+	public ResponseEntity<Boolean> deleteById(List<String> ids) {
+		return ResponseEntity.ok(this.strategyService.deleteByIds(ids));
+	}
+
+}
+
diff --git a/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/controller/TenantController.java b/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/controller/TenantController.java
index 5afb563..a21106b 100644
--- a/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/controller/TenantController.java
+++ b/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/controller/TenantController.java
@@ -27,12 +27,9 @@
 import org.springblade.core.mp.support.Condition;
 import org.springblade.core.mp.support.Query;
 import org.springblade.core.secure.BladeUser;
-import org.springblade.core.secure.annotation.PreAuth;
 import org.springblade.core.tenant.annotation.NonDS;
-import org.springblade.core.tenant.mp.TenantEntity;
 import org.springblade.core.tool.api.R;
 import org.springblade.core.tool.constant.BladeConstant;
-import org.springblade.core.tool.constant.RoleConstant;
 import org.springblade.core.tool.support.Kv;
 import org.springblade.core.tool.utils.Func;
 import org.springblade.system.entity.Tenant;
@@ -44,7 +41,6 @@
 import springfox.documentation.annotations.ApiIgnore;
 
 import javax.validation.Valid;
-import java.util.Date;
 import java.util.List;
 import java.util.Map;
 
@@ -77,7 +73,7 @@
 	@GetMapping("/detail")
 	@ApiOperationSupport(order = 1)
 	@ApiOperation(value = "璇︽儏", notes = "浼犲叆tenant")
-	@PreAuth(RoleConstant.HAS_ROLE_ADMIN)
+	//@PreAuth(RoleConstant.HAS_ROLE_ADMIN)
 	public R<Tenant> detail(Tenant tenant) {
 		Tenant detail = tenantService.getOne(Condition.getQueryWrapper(tenant));
 		return R.data(detail);
@@ -94,7 +90,7 @@
 	})
 	@ApiOperationSupport(order = 2)
 	@ApiOperation(value = "鍒嗛〉", notes = "浼犲叆tenant")
-	@PreAuth(RoleConstant.HAS_ROLE_ADMIN)
+	//@PreAuth(RoleConstant.HAS_ROLE_ADMIN)
 	public R<IPage<Tenant>> list(@ApiIgnore @RequestParam Map<String, Object> tenant, Query query, BladeUser bladeUser) {
 		QueryWrapper<Tenant> queryWrapper = Condition.getQueryWrapper(tenant, Tenant.class);
 		IPage<Tenant> pages = tenantService.page(Condition.getPage(query), (!bladeUser.getTenantId().equals(BladeConstant.ADMIN_TENANT_ID)) ? queryWrapper.lambda().eq(Tenant::getTenantId, bladeUser.getTenantId()) : queryWrapper);
@@ -107,7 +103,7 @@
 	@GetMapping("/select")
 	@ApiOperationSupport(order = 3)
 	@ApiOperation(value = "涓嬫媺鏁版嵁婧�", notes = "浼犲叆tenant")
-	@PreAuth(RoleConstant.HAS_ROLE_ADMIN)
+	//@PreAuth(RoleConstant.HAS_ROLE_ADMIN)
 	public R<List<Tenant>> select(Tenant tenant, BladeUser bladeUser) {
 		QueryWrapper<Tenant> queryWrapper = Condition.getQueryWrapper(tenant);
 		List<Tenant> list = tenantService.list((!bladeUser.getTenantId().equals(BladeConstant.ADMIN_TENANT_ID)) ? queryWrapper.lambda().eq(Tenant::getTenantId, bladeUser.getTenantId()) : queryWrapper);
@@ -120,7 +116,7 @@
 	@GetMapping("/page")
 	@ApiOperationSupport(order = 4)
 	@ApiOperation(value = "鍒嗛〉", notes = "浼犲叆tenant")
-	@PreAuth(RoleConstant.HAS_ROLE_ADMIN)
+	//@PreAuth(RoleConstant.HAS_ROLE_ADMIN)
 	public R<IPage<Tenant>> page(Tenant tenant, Query query) {
 		IPage<Tenant> pages = tenantService.selectTenantPage(Condition.getPage(query), tenant);
 		return R.data(pages);
@@ -132,9 +128,8 @@
 	@PostMapping("/submit")
 	@ApiOperationSupport(order = 5)
 	@ApiOperation(value = "鏂板鎴栦慨鏀�", notes = "浼犲叆tenant")
-	@PreAuth(RoleConstant.HAS_ROLE_ADMINISTRATOR)
+	//@PreAuth(RoleConstant.HAS_ROLE_ADMINISTRATOR)
 	public R submit(@Valid @RequestBody TenantVO tenantVO) {
-		System.out.println(tenantVO);
 		return R.status(tenantService.submitTenant(tenantVO));
 	}
 
@@ -145,7 +140,7 @@
 	@PostMapping("/remove")
 	@ApiOperationSupport(order = 6)
 	@ApiOperation(value = "閫昏緫鍒犻櫎", notes = "浼犲叆ids")
-	@PreAuth(RoleConstant.HAS_ROLE_ADMINISTRATOR)
+	//@PreAuth(RoleConstant.HAS_ROLE_ADMINISTRATOR)
 	public R remove(@ApiParam(value = "涓婚敭闆嗗悎", required = true) @RequestParam String ids) {
 		return R.status(tenantService.removeTenant(Func.toLongList(ids)));
 	}
@@ -155,7 +150,7 @@
 	 */
 	@PostMapping("/datasource")
 	@ApiOperationSupport(order = 8)
-	@PreAuth(RoleConstant.HAS_ROLE_ADMINISTRATOR)
+	//@PreAuth(RoleConstant.HAS_ROLE_ADMINISTRATOR)
 	@ApiOperation(value = "鏁版嵁婧愰厤缃�", notes = "浼犲叆datasource_id")
 	public R datasource(@ApiParam(value = "绉熸埛ID", required = true) @RequestParam String tenantId, @ApiParam(value = "鏁版嵁婧怚D", required = true) @RequestParam Long datasourceId){
 		CacheUtil.evict(TENANT_DATASOURCE_CACHE, TENANT_DATASOURCE_EXIST_KEY, tenantId, Boolean.FALSE);
@@ -170,7 +165,7 @@
 	@GetMapping("/find-by-name")
 	@ApiOperationSupport(order = 9)
 	@ApiOperation(value = "璇︽儏", notes = "浼犲叆tenant")
-	@PreAuth(RoleConstant.HAS_ROLE_ADMIN)
+	//@PreAuth(RoleConstant.HAS_ROLE_ADMIN)
 	public R<List<Tenant>> findByName(String name) {
 		List<Tenant> list = tenantService.list(Wrappers.<Tenant>query().lambda().like(Tenant::getTenantName, name));
 		return R.data(list);
@@ -203,7 +198,7 @@
 	@GetMapping("/package-detail")
 	@ApiOperationSupport(order = 11)
 	@ApiOperation(value = "浜у搧鍖呰鎯�", notes = "浼犲叆tenantId")
-	@PreAuth(RoleConstant.HAS_ROLE_ADMINISTRATOR)
+	//@PreAuth(RoleConstant.HAS_ROLE_ADMINISTRATOR)
 	public R<TenantPackage> packageDetail(Long tenantId) {
 		Tenant tenant = tenantService.getById(tenantId);
 		return R.data(tenantPackageService.getById(tenant.getPackageId()));
@@ -214,7 +209,7 @@
 	 */
 	@PostMapping("/package-setting")
 	@ApiOperationSupport(order = 12)
-	@PreAuth(RoleConstant.HAS_ROLE_ADMINISTRATOR)
+	//@PreAuth(RoleConstant.HAS_ROLE_ADMINISTRATOR)
 	@ApiOperation(value = "浜у搧鍖呴厤缃�", notes = "浼犲叆packageId")
 	public R packageSetting(@ApiParam(value = "绉熸埛ID", required = true) @RequestParam String tenantId, @ApiParam(value = "浜у搧鍖匢D") Long packageId) {
 		CacheUtil.evict(SYS_CACHE, TENANT_TENANT_ID, tenantId, Boolean.FALSE);
@@ -241,7 +236,7 @@
 	@GetMapping("/find-ssa-enable")
 	@ApiOperationSupport(order = 14)
 	@ApiOperation(value = "涓嬫媺绉熸埛淇℃伅")
-	@PreAuth(RoleConstant.HAS_ROLE_ADMINISTRATOR)
+	//@PreAuth(RoleConstant.HAS_ROLE_ADMINISTRATOR)
 	public R findIsOpen() {
 		boolean isOpen = this.tenantService.findIsOpen();
 		return R.data(isOpen);
diff --git a/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/controller/TenantPackageController.java b/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/controller/TenantPackageController.java
index 194e45c..e963eca 100644
--- a/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/controller/TenantPackageController.java
+++ b/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/controller/TenantPackageController.java
@@ -124,7 +124,7 @@
 	@GetMapping("/select")
 	@ApiOperationSupport(order = 7)
 	@ApiOperation(value = "涓嬫媺鏁版嵁婧�", notes = "浼犲叆tenant")
-	@PreAuth(RoleConstant.HAS_ROLE_ADMIN)
+	//@PreAuth(RoleConstant.HAS_ROLE_ADMIN)
 	public R<List<TenantPackage>> select(TenantPackage tenantPackage) {
 		return R.data(tenantPackageService.list(Condition.getQueryWrapper(tenantPackage)));
 	}
diff --git a/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/controller/TopMenuController.java b/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/controller/TopMenuController.java
index 2b2541d..eeb7f85 100644
--- a/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/controller/TopMenuController.java
+++ b/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/controller/TopMenuController.java
@@ -51,7 +51,7 @@
 @AllArgsConstructor
 @RequestMapping("/topmenu")
 @Api(value = "椤堕儴鑿滃崟琛�", tags = "椤堕儴鑿滃崟")
-@PreAuth(RoleConstant.HAS_ROLE_ADMIN)
+//@PreAuth(RoleConstant.HAS_ROLE_ADMIN)
 public class TopMenuController extends BladeController {
 
 	private final ITopMenuService topMenuService;
diff --git a/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/controller/ValueRangeController.java b/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/controller/ValueRangeController.java
new file mode 100644
index 0000000..59c1594
--- /dev/null
+++ b/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/controller/ValueRangeController.java
@@ -0,0 +1,92 @@
+package org.springblade.system.controller;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import io.swagger.annotations.ApiParam;
+import lombok.AllArgsConstructor;
+import org.springblade.core.mp.support.Condition;
+import org.springblade.core.mp.support.Query;
+import org.springblade.core.tenant.annotation.NonDS;
+import org.springblade.core.tool.api.R;
+import org.springblade.system.entity.ValueRange;
+import org.springblade.system.service.IValueRangeService;
+import org.springframework.http.ResponseEntity;
+import org.springframework.web.bind.annotation.*;
+import springfox.documentation.annotations.ApiIgnore;
+
+import javax.annotation.Resource;
+import javax.validation.Valid;
+import java.util.List;
+
+/**
+ * (ValueRange)琛ㄦ帶鍒跺眰
+ *
+ * @author makejava
+ * @since 2023-03-20 15:23:24
+ */
+@NonDS
+@ApiIgnore
+@AllArgsConstructor
+@RestController
+@RequestMapping("/value-range")
+@Api(value = "瀵嗙爜缁勫悎鏂瑰紡鍙栧��", tags = "鎺ュ彛")
+public class ValueRangeController {
+
+	/**
+	 * 鏈嶅姟瀵硅薄
+	 */
+	@Resource
+	private IValueRangeService valueRangeService;
+
+	@GetMapping("/list")
+	@ApiOperationSupport(order = 1)
+	@ApiOperation(value = "璇︽儏", notes = "浼犲叆dataScope")
+	public R<List<ValueRange>> queryByList() {
+		return R.data(valueRangeService.queryByAll());
+	}
+
+	/**
+	 * 鍒嗛〉鏌ヨ
+	 *
+	 * @param valueRange 绛涢�夋潯浠�
+	 * @param query      鍒嗛〉瀵硅薄
+	 * @return 鏌ヨ缁撴灉
+	 */
+	@GetMapping("/page")
+	@ApiOperationSupport(order = 2)
+	@ApiOperation(value = "鍒嗛〉鏌ヨ", notes = "浼犲叆valueRange锛屽垎椤靛弬鏁皅uery")
+	public R<IPage<ValueRange>> queryByPage(ValueRange valueRange, Query query) {
+		IPage<ValueRange> pages = valueRangeService.page(Condition.getPage(query), Condition.getQueryWrapper(valueRange));
+		return R.data(pages);
+	}
+
+	/**
+	 * 鏂板鍜屼慨鏀规暟鎹�
+	 *
+	 * @param valueRange 瀹炰綋
+	 * @return 鏂板缁撴灉
+	 */
+	@PostMapping("/submit")
+	@ApiOperationSupport(order = 3)
+	@ApiOperation(value = "鏂板鍜屼慨鏀规暟鎹�", notes = "浼犲叆valueRange")
+	public ResponseEntity<Boolean> submit(@Valid @RequestBody ValueRange valueRange) {
+		return ResponseEntity.ok(this.valueRangeService.submit(valueRange));
+	}
+
+	/**
+	 * 鍒犻櫎鏁版嵁
+	 *
+	 * @param ids 涓婚敭
+	 * @return 鍒犻櫎鏄惁鎴愬姛
+	 */
+	@PostMapping("/remove")
+	@ApiOperationSupport(order = 4)
+	@ApiOperation(value = "閫昏緫鍒犻櫎", notes = "浼犲叆ids")
+	public ResponseEntity<Boolean> deleteById(@ApiParam(value = "涓婚敭闆嗗悎", required = true) @RequestParam List<String> ids) {
+		return ResponseEntity.ok(this.valueRangeService.deleteByIds(ids));
+	}
+
+}
+
diff --git a/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/mapper/CombinationMapper.java b/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/mapper/CombinationMapper.java
new file mode 100644
index 0000000..6305297
--- /dev/null
+++ b/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/mapper/CombinationMapper.java
@@ -0,0 +1,42 @@
+package org.springblade.system.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import org.springblade.system.entity.Combination;
+
+import java.util.List;
+
+/**
+ * 瀵嗙爜缁勫悎鏂瑰紡琛�(PlSysCombination)琛ㄦ暟鎹簱璁块棶灞�
+ *
+ * @author makejava
+ * @since 2023-03-20 15:23:17
+ */
+public interface CombinationMapper extends BaseMapper<Combination> {
+
+	/**
+	 * 閫氳繃ID鏌ヨ鍗曟潯鏁版嵁
+	 *
+	 * @param id 涓婚敭
+	 * @return 瀹炰緥瀵硅薄
+	 */
+	Combination queryById(String id);
+
+	/**
+	 * 鑷畾涔夊垎椤�
+	 * @param page
+	 * @param combination
+	 * @return
+	 */
+	List<Combination> selectCombinationPage(IPage page, Combination combination);
+
+	/**
+	 * 缁熻鎬昏鏁�
+	 *
+	 * @param combination 鏌ヨ鏉′欢
+	 * @return 鎬昏鏁�
+	 */
+	long count(Combination combination);
+
+}
+
diff --git a/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/mapper/CombinationMapper.xml b/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/mapper/CombinationMapper.xml
new file mode 100644
index 0000000..401a0fc
--- /dev/null
+++ b/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/mapper/CombinationMapper.xml
@@ -0,0 +1,91 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="org.springblade.system.mapper.CombinationMapper">
+
+    <resultMap type="org.springblade.system.entity.Combination" id="CombinationMap">
+        <result property="id" column="ID" jdbcType="VARCHAR"/>
+        <result property="name" column="NAME" jdbcType="VARCHAR"/>
+        <result property="desc" column="DESC" jdbcType="VARCHAR"/>
+        <result property="createtime" column="CREATETIME" jdbcType="TIMESTAMP"/>
+        <result property="createuser" column="CREATEUSER" jdbcType="VARCHAR"/>
+        <result property="updatetime" column="UPDATETIME" jdbcType="TIMESTAMP"/>
+        <result property="updateuser" column="UPDATEUSER" jdbcType="VARCHAR"/>
+        <result property="licensors" column="LICENSORS" jdbcType="VARCHAR"/>
+    </resultMap>
+
+    <!--鏌ヨ鍗曚釜-->
+    <select id="queryById" resultMap="CombinationMap">
+        select ID,
+               NAME, DESC, CREATETIME, CREATEUSER, UPDATETIME, UPDATEUSER, LICENSORS
+        from PL_SYS_COMBINATION
+        where ID = #{id}
+    </select>
+
+    <!--缁熻鎬昏鏁�-->
+    <select id="count" resultType="java.lang.Long">
+        select count(1)
+        from PL_SYS_COMBINATION
+        <where>
+            <if test="id != null and id != ''">
+                and ID = #{id}
+            </if>
+            <if test="name != null and name != ''">
+                and NAME = #{name}
+            </if>
+            <if test="desc != null and desc != ''">
+                and DESC = #{desc}
+            </if>
+            <if test="createtime != null">
+                and CREATETIME = #{createtime}
+            </if>
+            <if test="createuser != null and createuser != ''">
+                and CREATEUSER = #{createuser}
+            </if>
+            <if test="updatetime != null">
+                and UPDATETIME = #{updatetime}
+            </if>
+            <if test="updateuser != null and updateuser != ''">
+                and UPDATEUSER = #{updateuser}
+            </if>
+            <if test="licensors != null and licensors != ''">
+                and LICENSORS = #{licensors}
+            </if>
+        </where>
+    </select>
+
+    <!--鍒嗛〉鏌ヨ-->
+    <select id="selectCombinationPage" resultMap="CombinationMap">
+        select
+        ID, NAME, DESC, CREATETIME, CREATEUSER, UPDATETIME, UPDATEUSER, LICENSORS
+        from PL_SYS_COMBINATION
+        <where>
+            <if test="id != null and id != ''">
+                and ID = #{id}
+            </if>
+            <if test="name != null and name != ''">
+                and NAME = #{name}
+            </if>
+            <if test="desc != null and desc != ''">
+                and DESC = #{desc}
+            </if>
+            <if test="createtime != null">
+                and CREATETIME = #{createtime}
+            </if>
+            <if test="createuser != null and createuser != ''">
+                and CREATEUSER = #{createuser}
+            </if>
+            <if test="updatetime != null">
+                and UPDATETIME = #{updatetime}
+            </if>
+            <if test="updateuser != null and updateuser != ''">
+                and UPDATEUSER = #{updateuser}
+            </if>
+            <if test="licensors != null and licensors != ''">
+                and LICENSORS = #{licensors}
+            </if>
+        </where>
+        limit #{pageable.offset}, #{pageable.pageSize}
+    </select>
+
+</mapper>
+
diff --git a/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/mapper/MenuMapper.xml b/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/mapper/MenuMapper.xml
index ccf0111..a9cc4d7 100644
--- a/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/mapper/MenuMapper.xml
+++ b/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/mapper/MenuMapper.xml
@@ -276,7 +276,7 @@
                 WHERE
                     category = 1
                   AND is_deleted = 0
-                  AND id IN ( SELECT menu_id FROM blade_scope_data WHERE is_deleted = 0 AND menu_id IS NOT NULL )
+                  AND id IN ( SELECT menu_id FROM pl_auth_scope_data WHERE is_deleted = 0 AND menu_id IS NOT NULL )
             ) menu
 
         UNION ALL
@@ -288,7 +288,7 @@
             id AS "value",
             id AS "key"
         FROM
-            blade_scope_data
+            pl_auth_scope_data
         WHERE
             is_deleted = 0
           AND menu_id IS NOT NULL
@@ -310,7 +310,7 @@
                 WHERE
                     category = 1
                   AND is_deleted = 0
-                  AND id IN ( SELECT menu_id FROM blade_scope_api WHERE is_deleted = 0 AND menu_id IS NOT NULL )
+                  AND id IN ( SELECT menu_id FROM pl_auth_scope_api WHERE is_deleted = 0 AND menu_id IS NOT NULL )
             ) menu
 
         UNION ALL
@@ -322,7 +322,7 @@
             id AS "value",
             id AS "key"
         FROM
-            blade_scope_api
+            pl_auth_scope_api
         WHERE
             is_deleted = 0
           AND menu_id IS NOT NULL
@@ -344,7 +344,7 @@
             WHERE
                 category = 1
             AND is_deleted = 0
-            AND id IN ( SELECT menu_id FROM blade_scope_data WHERE is_deleted = 0 AND menu_id IS NOT NULL )
+            AND id IN ( SELECT menu_id FROM pl_auth_scope_data WHERE is_deleted = 0 AND menu_id IS NOT NULL )
             AND (
                 id IN (
                     select menu_id from pl_org_role_menu where role_id in
@@ -371,7 +371,7 @@
             id AS "value",
             id AS "key"
         FROM
-            blade_scope_data
+            pl_auth_scope_data
         WHERE
             is_deleted = 0
         AND (
@@ -408,7 +408,7 @@
             WHERE
                 category = 1
             AND is_deleted = 0
-            AND id IN ( SELECT menu_id FROM blade_scope_api WHERE is_deleted = 0 AND menu_id IS NOT NULL )
+            AND id IN ( SELECT menu_id FROM pl_auth_scope_api WHERE is_deleted = 0 AND menu_id IS NOT NULL )
             AND (
                 id IN (
                     select menu_id from pl_org_role_menu where role_id in
@@ -436,7 +436,7 @@
             id AS "value",
             id AS "key"
         FROM
-            blade_scope_api
+            pl_auth_scope_api
         WHERE
             is_deleted = 0
         AND
diff --git a/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/mapper/StrategyMapper.java b/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/mapper/StrategyMapper.java
new file mode 100644
index 0000000..7a66428
--- /dev/null
+++ b/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/mapper/StrategyMapper.java
@@ -0,0 +1,45 @@
+package org.springblade.system.mapper;
+
+
+import org.springblade.system.entity.Strategy;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+import org.springframework.data.domain.Pageable;
+
+import java.util.List;
+
+/**
+ * 瀵嗙爜绛栫暐(PlSysStrategy)琛ㄦ暟鎹簱璁块棶灞�
+ *
+ * @author makejava
+ * @since 2023-03-20 15:16:15
+ */
+public interface StrategyMapper extends BaseMapper<Strategy> {
+
+	/**
+	 * 閫氳繃ID鏌ヨ鍗曟潯鏁版嵁
+	 *
+	 * @param id 涓婚敭
+	 * @return 瀹炰緥瀵硅薄
+	 */
+	Strategy queryById(String id);
+
+	/**
+	 * 鏌ヨ鎸囧畾琛屾暟鎹�
+	 *
+	 * @param strategy 鏌ヨ鏉′欢
+	 * @param pageable      鍒嗛〉瀵硅薄
+	 * @return 瀵硅薄鍒楄〃
+	 */
+	List<Strategy> queryAllByPage(Strategy strategy, @Param("pageable") Pageable pageable);
+
+	/**
+	 * 缁熻鎬昏鏁�
+	 *
+	 * @param plSysStrategy 鏌ヨ鏉′欢
+	 * @return 鎬昏鏁�
+	 */
+	long count(Strategy plSysStrategy);
+
+}
+
diff --git a/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/mapper/StrategyMapper.xml b/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/mapper/StrategyMapper.xml
new file mode 100644
index 0000000..57d9a56
--- /dev/null
+++ b/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/mapper/StrategyMapper.xml
@@ -0,0 +1,157 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="org.springblade.system.mapper.StrategyMapper">
+
+    <resultMap type="org.springblade.system.entity.Strategy" id="StrategyMap">
+        <result property="id" column="ID" jdbcType="VARCHAR"/>
+        <result property="strategyName" column="STRATEGY_NAME" jdbcType="VARCHAR"/>
+        <result property="minPwdLen" column="MIN_PWD_LEN" jdbcType="VARCHAR"/>
+        <result property="maxPwdLen" column="MAX_PWD_LEN" jdbcType="VARCHAR"/>
+        <result property="combinationIds" column="COMBINATION " jdbcType="VARCHAR"/>
+        <result property="requiredType" column="REQUIRED_TYPE" jdbcType="VARCHAR"/>
+        <result property="expirationTime" column="EXPIRATION_TIME" jdbcType="TIMESTAMP"/>
+        <result property="reminderTime" column="REMINDER_TIME" jdbcType="TIMESTAMP"/>
+        <result property="lockingNum" column="LOCKING_NUM" jdbcType="VARCHAR"/>
+        <result property="lockingTime" column="LOCKING_TIME" jdbcType="TIMESTAMP"/>
+        <result property="desc" column="DESC" jdbcType="VARCHAR"/>
+        <result property="isDefault" column="IS_DEFAULT" jdbcType="VARCHAR"/>
+        <result property="createTime" column="CREATE_TIME" jdbcType="TIMESTAMP"/>
+        <result property="createUser" column="CREATE_USER" jdbcType="TIMESTAMP"/>
+        <result property="updateTime" column="UPDATE_TIME" jdbcType="TIMESTAMP"/>
+        <result property="updateUser" column="UPDATE_USER" jdbcType="TIMESTAMP"/>
+        <result property="combinationNames" column="COMBINATIONNAMES"/>
+    </resultMap>
+
+    <!--鏌ヨ鍗曚釜-->
+    <select id="queryById" resultMap="StrategyMap">
+        select
+          ID, STRATEGY_NAME, MIN_PWD_LEN, MAX_PWD_LEN, COMBINATION , REQUIRED_TYPE, EXPIRATION_TIME, REMINDER_TIME, LOCKING_NUM, LOCKING_TIME, DESC, IS_DEFAULT, CREATE_DATE, CREATE_USER, UPDATE_DATE, UPDATE_USER
+        from PL_SYS_STRATEGY
+        where ID = #{id}
+    </select>
+
+    <!--鏌ヨ鎸囧畾琛屾暟鎹�-->
+    <select id="queryAllByPage" resultMap="StrategyMap">
+        select pss.*,
+               (select WM_CONCAT(psc.NAME)
+                from PL_SYS_COMBINATION psc
+                where instr(pss.COMBINATION_IDS,psc.ID) > 0) COMBINATIONNAMES
+        from PL_SYS_STRATEGY pss
+    </select>
+
+    <!--缁熻鎬昏鏁�-->
+    <select id="count" resultType="java.lang.Long">
+        select count(1)
+        from PL_SYS_STRATEGY
+        <where>
+            <if test="id != null and id != ''">
+                and ID = #{id}
+            </if>
+            <if test="strategyName != null and strategyName != ''">
+                and STRATEGY_NAME = #{strategyName}
+            </if>
+            <if test="minPwdLen != null and minPwdLen != ''">
+                and MIN_PWD_LEN = #{minPwdLen}
+            </if>
+            <if test="maxPwdLen != null and maxPwdLen != ''">
+                and MAX_PWD_LEN = #{maxPwdLen}
+            </if>
+            <if test="combination  != null and combination  != ''">
+                and COMBINATION  = #{combination }
+            </if>
+            <if test="requiredType != null and requiredType != ''">
+                and REQUIRED_TYPE = #{requiredType}
+            </if>
+            <if test="expirationTime != null">
+                and EXPIRATION_TIME = #{expirationTime}
+            </if>
+            <if test="reminderTime != null">
+                and REMINDER_TIME = #{reminderTime}
+            </if>
+            <if test="lockingNum != null and lockingNum != ''">
+                and LOCKING_NUM = #{lockingNum}
+            </if>
+            <if test="lockingTime != null">
+                and LOCKING_TIME = #{lockingTime}
+            </if>
+            <if test="desc != null and desc != ''">
+                and DESC = #{desc}
+            </if>
+            <if test="isDefault != null and isDefault != ''">
+                and IS_DEFAULT = #{isDefault}
+            </if>
+            <if test="createDate != null">
+                and CREATE_DATE = #{createDate}
+            </if>
+            <if test="createUser != null">
+                and CREATE_USER = #{createUser}
+            </if>
+            <if test="updateDate != null">
+                and UPDATE_DATE = #{updateDate}
+            </if>
+            <if test="updateUser != null">
+                and UPDATE_USER = #{updateUser}
+            </if>
+        </where>
+    </select>
+
+    <!--閫氳繃涓婚敭淇敼鏁版嵁-->
+    <!--<update id="update">
+        update PL_SYS_STRATEGY
+        <set>
+            <if test="strategyName != null and strategyName != ''">
+                STRATEGY_NAME = #{strategyName},
+            </if>
+            <if test="minPwdLen != null and minPwdLen != ''">
+                MIN_PWD_LEN = #{minPwdLen},
+            </if>
+            <if test="maxPwdLen != null and maxPwdLen != ''">
+                MAX_PWD_LEN = #{maxPwdLen},
+            </if>
+            <if test="combination  != null and combination  != ''">
+                COMBINATION  = #{combination },
+            </if>
+            <if test="requiredType != null and requiredType != ''">
+                REQUIRED_TYPE = #{requiredType},
+            </if>
+            <if test="expirationTime != null">
+                EXPIRATION_TIME = #{expirationTime},
+            </if>
+            <if test="reminderTime != null">
+                REMINDER_TIME = #{reminderTime},
+            </if>
+            <if test="lockingNum != null and lockingNum != ''">
+                LOCKING_NUM = #{lockingNum},
+            </if>
+            <if test="lockingTime != null">
+                LOCKING_TIME = #{lockingTime},
+            </if>
+            <if test="desc != null and desc != ''">
+                DESC = #{desc},
+            </if>
+            <if test="isDefault != null and isDefault != ''">
+                IS_DEFAULT = #{isDefault},
+            </if>
+            <if test="createDate != null">
+                CREATE_DATE = #{createDate},
+            </if>
+            <if test="createUser != null">
+                CREATE_USER = #{createUser},
+            </if>
+            <if test="updateDate != null">
+                UPDATE_DATE = #{updateDate},
+            </if>
+            <if test="updateUser != null">
+                UPDATE_USER = #{updateUser},
+            </if>
+        </set>
+        where ID = #{id}
+    </update>
+
+    &lt;!&ndash;閫氳繃涓婚敭鍒犻櫎&ndash;&gt;
+    <delete id="deleteById">
+        delete from PL_SYS_STRATEGY where ID = #{id}
+    </delete>-->
+
+</mapper>
+
diff --git a/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/mapper/TenantMapper.xml b/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/mapper/TenantMapper.xml
index 7845141..47708d7 100644
--- a/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/mapper/TenantMapper.xml
+++ b/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/mapper/TenantMapper.xml
@@ -13,6 +13,7 @@
         <result column="is_deleted" property="isDeleted"/>
         <result column="tenant_id" property="tenantId"/>
         <result column="tenant_name" property="tenantName"/>
+        <result column="full_name" property="fullName"/>
         <result column="domain_url" property="domainUrl"/>
         <result column="background_url" property="backgroundUrl"/>
         <result column="linkman" property="linkman"/>
diff --git a/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/mapper/ValueRangeMapper.java b/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/mapper/ValueRangeMapper.java
new file mode 100644
index 0000000..caf701c
--- /dev/null
+++ b/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/mapper/ValueRangeMapper.java
@@ -0,0 +1,36 @@
+package org.springblade.system.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+import org.springblade.system.entity.ValueRange;
+import org.springframework.data.domain.Pageable;
+
+import java.util.List;
+
+/**
+ * (ValueRannge)琛ㄦ暟鎹簱璁块棶灞�
+ *
+ * @author makejava
+ * @since 2023-03-20 15:23:25
+ */
+public interface ValueRangeMapper extends BaseMapper<ValueRange> {
+
+	/**
+	 * 鏌ヨ鎸囧畾琛屾暟鎹�
+	 *
+	 * @param valueRannge 鏌ヨ鏉′欢
+	 * @param pageable        鍒嗛〉瀵硅薄
+	 * @return 瀵硅薄鍒楄〃
+	 */
+	List<ValueRange> queryAllByLimit(ValueRange valueRannge, @Param("pageable") Pageable pageable);
+
+	/**
+	 * 缁熻鎬昏鏁�
+	 *
+	 * @param valueRannge 鏌ヨ鏉′欢
+	 * @return 鎬昏鏁�
+	 */
+	long count(ValueRange valueRannge);
+
+}
+
diff --git a/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/mapper/ValueRangeMapper.xml b/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/mapper/ValueRangeMapper.xml
new file mode 100644
index 0000000..ebfcfa8
--- /dev/null
+++ b/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/mapper/ValueRangeMapper.xml
@@ -0,0 +1,76 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="org.springblade.system.mapper.ValueRangeMapper">
+
+    <resultMap type="org.springblade.system.entity.ValueRange" id="ValueRangeMap">
+        <result property="id" column="ID" jdbcType="VARCHAR"/>
+        <result property="value" column="VALUE" jdbcType="VARCHAR"/>
+        <result property="combinationId" column="COMBINATION_ID" jdbcType="VARCHAR"/>
+        <result property="createuser" column="CREATEUSER" jdbcType="VARCHAR"/>
+        <result property="updatetime" column="UPDATETIME" jdbcType="TIMESTAMP"/>
+        <result property="updateuser" column="UPDATEUSER" jdbcType="VARCHAR"/>
+        <result property="createtime" column="CREATETIME" jdbcType="TIMESTAMP"/>
+    </resultMap>
+
+    <!--鏌ヨ鎸囧畾琛屾暟鎹�-->
+    <select id="queryAllByLimit" resultMap="ValueRangeMap">
+        select
+          ID, VALUE, COMBINATION_ID, CREATEUSER, UPDATETIME, UPDATEUSER, CREATETIME
+        from PL_SYS_VALUE_RANGE
+        <where>
+            <if test="id != null and id != ''">
+                and ID = #{id}
+            </if>
+            <if test="value != null and value != ''">
+                and VALUE = #{value}
+            </if>
+            <if test="combinationId != null and combinationId != ''">
+                and COMBINATION_ID = #{combinationId}
+            </if>
+            <if test="createuser != null and createuser != ''">
+                and CREATEUSER = #{createuser}
+            </if>
+            <if test="updatetime != null">
+                and UPDATETIME = #{updatetime}
+            </if>
+            <if test="updateuser != null and updateuser != ''">
+                and UPDATEUSER = #{updateuser}
+            </if>
+            <if test="createtime != null">
+                and CREATETIME = #{createtime}
+            </if>
+        </where>
+        limit #{pageable.offset}, #{pageable.pageSize}
+    </select>
+
+    <!--缁熻鎬昏鏁�-->
+    <select id="count" resultType="java.lang.Long">
+        select count(1)
+        from PL_SYS_VALUE_RANGE
+        <where>
+            <if test="id != null and id != ''">
+                and ID = #{id}
+            </if>
+            <if test="value != null and value != ''">
+                and VALUE = #{value}
+            </if>
+            <if test="combinationId != null and combinationId != ''">
+                and COMBINATION_ID = #{combinationId}
+            </if>
+            <if test="createuser != null and createuser != ''">
+                and CREATEUSER = #{createuser}
+            </if>
+            <if test="updatetime != null">
+                and UPDATETIME = #{updatetime}
+            </if>
+            <if test="updateuser != null and updateuser != ''">
+                and UPDATEUSER = #{updateuser}
+            </if>
+            <if test="createtime != null">
+                and CREATETIME = #{createtime}
+            </if>
+        </where>
+    </select>
+
+</mapper>
+
diff --git a/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/service/ICombinationService.java b/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/service/ICombinationService.java
new file mode 100644
index 0000000..5d26a8a
--- /dev/null
+++ b/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/service/ICombinationService.java
@@ -0,0 +1,58 @@
+package org.springblade.system.service;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.service.IService;
+import org.springblade.system.entity.Combination;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 瀵嗙爜缁勫悎鏂瑰紡琛�(PlSysCombination)琛ㄦ湇鍔℃帴鍙�
+ *
+ * @author makejava
+ * @since 2023-03-20 15:23:21
+ */
+public interface ICombinationService extends IService<Combination> {
+
+	/**
+	 * 閫氳繃ID鏌ヨ鍗曟潯鏁版嵁
+	 *
+	 * @param id 涓婚敭
+	 * @return 瀹炰緥瀵硅薄
+	 */
+	Combination queryById(Long id);
+
+	/**
+	 * 鍒嗛〉鏌ヨ
+	 *
+	 * @param combination 绛涢�夋潯浠�
+	 * @param page      鍒嗛〉瀵硅薄
+	 * @return 鏌ヨ缁撴灉
+	 */
+	IPage<Combination> selectCombinationPage(Combination combination, IPage<Combination> page);
+
+	/**
+	 * 鏂板鏁版嵁鍜屼慨鏀规暟鎹�
+	 *
+	 * @param combination 瀹炰緥瀵硅薄
+	 * @return 瀹炰緥瀵硅薄
+	 */
+	boolean submit(Combination combination);
+
+	/**
+	 * 閫氳繃涓婚敭鍒犻櫎鏁版嵁
+	 *
+	 * @param ids
+	 * @return 鏄惁鎴愬姛
+	 */
+	boolean deleteByIds(List<String> ids);
+
+	/**
+	 * 涓嬫媺鏁版嵁婧愭煡璇�
+	 * 鏌ヨ缁勫悎id锛坘ey锛夛細缁勫悎鍚嶏紙value锛�
+	 * @return
+	 */
+	List<Map<String,Object>> selectMaps();
+
+}
diff --git a/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/service/IStrategyService.java b/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/service/IStrategyService.java
new file mode 100644
index 0000000..10129d5
--- /dev/null
+++ b/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/service/IStrategyService.java
@@ -0,0 +1,51 @@
+package org.springblade.system.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import org.springblade.system.entity.Strategy;
+import org.springframework.data.domain.Page;
+import org.springframework.data.domain.PageRequest;
+
+import java.util.List;
+
+/**
+ * 瀵嗙爜绛栫暐(PlSysStrategy)琛ㄦ湇鍔℃帴鍙�
+ *
+ * @author makejava
+ * @since 2023-03-20 15:16:18
+ */
+public interface IStrategyService extends IService<Strategy> {
+
+	/**
+	 * 閫氳繃ID鏌ヨ鍗曟潯鏁版嵁
+	 *
+	 * @param id 涓婚敭
+	 * @return 瀹炰緥瀵硅薄
+	 */
+	Strategy queryById(String id);
+
+	/**
+	 * 鍒嗛〉鏌ヨ
+	 *
+	 * @param strategy 绛涢�夋潯浠�
+	 * @param pageRequest   鍒嗛〉瀵硅薄
+	 * @return 鏌ヨ缁撴灉
+	 */
+	Page<Strategy> queryAllByPage(Strategy strategy, PageRequest pageRequest);
+
+	/**
+	 * 鏂板鏁版嵁鎴栦慨鏀规暟鎹�
+	 *
+	 * @param strategy 瀹炰緥瀵硅薄
+	 * @return 瀹炰緥瀵硅薄
+	 */
+	boolean submit(Strategy strategy);
+
+	/**
+	 * 閫氳繃涓婚敭鍒犻櫎鏁版嵁
+	 *
+	 * @param ids 涓婚敭
+	 * @return 鏄惁鎴愬姛
+	 */
+	boolean deleteByIds(List<String> ids);
+
+}
diff --git a/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/service/IValueRangeService.java b/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/service/IValueRangeService.java
new file mode 100644
index 0000000..adb9581
--- /dev/null
+++ b/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/service/IValueRangeService.java
@@ -0,0 +1,49 @@
+package org.springblade.system.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import org.springblade.system.entity.ValueRange;
+import org.springframework.data.domain.Page;
+import org.springframework.data.domain.PageRequest;
+
+import java.util.List;
+
+/**
+ * (ValueRange)琛ㄦ湇鍔℃帴鍙�
+ *
+ * @author makejava
+ * @since 2023-03-20 15:23:27
+ */
+public interface IValueRangeService extends IService<ValueRange> {
+
+	/**
+	 * 鍏ㄦ煡璇�
+	 * @return
+	 */
+	List<ValueRange> queryByAll();
+
+	/**
+	 * 鍒嗛〉鏌ヨ
+	 *
+	 * @param valueRange 绛涢�夋潯浠�
+	 * @param pageRequest     鍒嗛〉瀵硅薄
+	 * @return 鏌ヨ缁撴灉
+	 */
+	Page<ValueRange> queryByPage(ValueRange valueRange, PageRequest pageRequest);
+
+	/**
+	 * 鏂板鏁版嵁鎴栦慨鏀规暟鎹�
+	 *
+	 * @param valueRange 瀹炰緥瀵硅薄
+	 * @return 瀹炰緥瀵硅薄
+	 */
+	boolean submit(ValueRange valueRange);
+
+	/**
+	 * 閫氳繃涓婚敭鍒犻櫎鏁版嵁
+	 *
+	 * @param ids 涓婚敭
+	 * @return 鏄惁鎴愬姛
+	 */
+	boolean deleteByIds(List<String> ids);
+
+}
diff --git a/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/service/impl/CombinationServiceImpl.java b/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/service/impl/CombinationServiceImpl.java
new file mode 100644
index 0000000..80be3ee
--- /dev/null
+++ b/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/service/impl/CombinationServiceImpl.java
@@ -0,0 +1,117 @@
+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.Wrappers;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springblade.core.cache.utils.CacheUtil;
+import org.springblade.core.log.exception.ServiceException;
+import org.springblade.core.tool.utils.Func;
+import org.springblade.system.entity.Combination;
+import org.springblade.system.mapper.CombinationMapper;
+import org.springblade.system.service.ICombinationService;
+import org.springframework.stereotype.Service;
+import org.springframework.validation.annotation.Validated;
+
+import javax.annotation.Resource;
+import java.util.Date;
+import java.util.List;
+import java.util.Map;
+
+import static org.springblade.core.cache.constant.CacheConstant.SYS_CACHE;
+
+/**
+ * 瀵嗙爜缁勫悎鏂瑰紡琛�(PlSysCombination)琛ㄦ湇鍔″疄鐜扮被
+ *
+ * @author makejava
+ * @since 2023-03-20 15:23:22
+ */
+@Service
+@Validated
+//@AllArgsConstructor
+public class CombinationServiceImpl extends ServiceImpl<CombinationMapper,Combination> implements ICombinationService {
+
+	@Resource
+	private CombinationMapper combinationMapper;
+
+	/**
+	 * 閫氳繃ID鏌ヨ鍗曟潯鏁版嵁
+	 *
+	 * @param id 涓婚敭
+	 * @return 瀹炰緥瀵硅薄
+	 */
+	@Override
+	public Combination queryById(Long id) {
+		Combination combination = this.getOne(Wrappers.<Combination>query().lambda().eq(Combination::getId, id));
+		return combination;
+	}
+
+	/**
+	 * 鍒嗛〉鏌ヨ
+	 *
+	 * @param combination 绛涢�夋潯浠�
+	 * @param page      鍒嗛〉瀵硅薄
+	 * @return 鏌ヨ缁撴灉
+	 */
+	@Override
+	public IPage<Combination> selectCombinationPage(Combination combination, IPage<Combination> page) {
+		return page.setRecords(combinationMapper.selectCombinationPage(page,combination));
+	}
+
+	/**
+	 * 鏂板鏁版嵁鍜屼慨鏀规暟鎹�
+	 *
+	 * @param combination 瀹炰緥瀵硅薄
+	 * @return 瀹炰緥瀵硅薄
+	 */
+	@Override
+	public boolean submit(Combination combination) {
+		//鍒ゆ柇鏄惁鎼哄甫id
+		if(Func.isEmpty(combination.getId())){
+			//鏂板
+			Combination dbcombination = this.getOne(Wrappers.<Combination>query().lambda().eq(Combination::getName, combination.getName()));
+			//濡傛灉鏁版嵁搴撲腑瀛樺湪杩欐潯缁勫悎鍚嶇О鐨勮褰曠洿鎺ヨ繑鍥�
+			if(!Func.isEmpty(dbcombination)){
+				throw new ServiceException("缁勫悎鍚嶇О宸插瓨鍦�!");
+			}
+			if(Func.isEmpty(combination.getCreateTime())){
+				combination.setCreateTime(new Date());
+			}
+			if(Func.isEmpty(combination.getUpdateTime())){
+				combination.setUpdateTime(new Date());
+			}
+			boolean temp = saveOrUpdate(combination);
+			return temp;
+		}else {
+			if(Func.isEmpty(combination.getUpdateTime())){
+				combination.setUpdateTime(new Date());
+			}
+			CacheUtil.clear(SYS_CACHE, Boolean.FALSE);
+			return saveOrUpdate(combination);
+		}
+	}
+
+	/**
+	 * 閫氳繃涓婚敭鍒犻櫎鏁版嵁
+	 *
+	 * @param ids 涓婚敭
+	 * @return 鏄惁鎴愬姛
+	 */
+	@Override
+	public boolean deleteByIds(List<String> ids) {
+		boolean tenantTemp = this.removeBatchByIds(ids);
+		return tenantTemp;
+	}
+
+	/**
+	 * 鏌ヨ瀵嗙爜缁勫悎id锛氱粍鍚堝悕锛岄敭鍊煎
+	 *
+	 * @return 閿�煎
+	 */
+	@Override
+	public List<Map<String, Object>> selectMaps() {
+		List<Map<String, Object>> maps = listMaps(new QueryWrapper<Combination>().select("ID", "NAME"));
+		return maps;
+	}
+
+}
diff --git a/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/service/impl/StrategyServiceImpl.java b/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/service/impl/StrategyServiceImpl.java
new file mode 100644
index 0000000..729f287
--- /dev/null
+++ b/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/service/impl/StrategyServiceImpl.java
@@ -0,0 +1,104 @@
+package org.springblade.system.service.impl;
+
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springblade.core.cache.utils.CacheUtil;
+import org.springblade.core.log.exception.ServiceException;
+import org.springblade.core.tool.utils.Func;
+import org.springblade.system.entity.Strategy;
+import org.springblade.system.mapper.StrategyMapper;
+import org.springblade.system.service.IStrategyService;
+import org.springframework.data.domain.Page;
+import org.springframework.data.domain.PageImpl;
+import org.springframework.data.domain.PageRequest;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+import java.util.Date;
+import java.util.List;
+
+import static org.springblade.core.cache.constant.CacheConstant.SYS_CACHE;
+
+/**
+ * 瀵嗙爜绛栫暐(Strategy)琛ㄦ湇鍔″疄鐜扮被
+ *
+ * @author makejava
+ * @since 2023-03-20 15:25:05
+ */
+@Service
+public class StrategyServiceImpl extends ServiceImpl<StrategyMapper, Strategy> implements IStrategyService {
+
+	@Resource
+	private StrategyMapper strategyMapper;
+
+	/**
+	 * 閫氳繃ID鏌ヨ鍗曟潯鏁版嵁
+	 *
+	 * @param id 涓婚敭
+	 * @return 瀹炰緥瀵硅薄
+	 */
+	@Override
+	public Strategy queryById(String id) {
+		return this.strategyMapper.queryById(id);
+	}
+
+	/**
+	 * 鍒嗛〉鏌ヨ
+	 *
+	 * @param strategy 绛涢�夋潯浠�
+	 * @param pageRequest   鍒嗛〉瀵硅薄
+	 * @return 鏌ヨ缁撴灉
+	 */
+	@Override
+	public Page<Strategy> queryAllByPage(Strategy strategy, PageRequest pageRequest) {
+		long total = this.strategyMapper.count(strategy);
+		return new PageImpl<>(this.strategyMapper.queryAllByPage(strategy, pageRequest), pageRequest, total);
+	}
+
+	/**
+	 * 鏂板鏁版嵁鎴栬�呬慨鏀规暟鎹�
+	 *
+	 * @param strategy 瀹炰緥瀵硅薄
+	 * @return 瀹炰緥瀵硅薄
+	 */
+	@Override
+	public boolean submit(Strategy strategy) {
+		//鍒ゆ柇鏄惁鎼哄甫id
+		if(Func.isEmpty(strategy.getId())){
+			//鏂板
+			Strategy dbstrategy = this.getOne(Wrappers.<Strategy>query().lambda()
+				.eq(Strategy::getStrategyName, strategy.getStrategyName()));
+			//濡傛灉鏁版嵁搴撲腑瀛樺湪杩欐潯缁勫悎鍚嶇О鐨勮褰曠洿鎺ヨ繑鍥�
+			if(!Func.isEmpty(dbstrategy)){
+				throw new ServiceException("璇ュ瘑鐮佺瓥鐣ュ凡瀛樺湪!");
+			}
+			if(Func.isEmpty(strategy.getCreateTime())){
+				strategy.setCreateTime(new Date());
+			}
+			if(Func.isEmpty(strategy.getUpdateTime())){
+				strategy.setUpdateTime(new Date());
+			}
+			boolean temp = super.saveOrUpdate(strategy);
+			return temp;
+		}else {
+			if(Func.isEmpty(strategy.getUpdateTime())){
+				strategy.setUpdateTime(new Date());
+			}
+			CacheUtil.clear(SYS_CACHE, Boolean.FALSE);
+			return super.saveOrUpdate(strategy);
+		}
+	}
+
+	/**
+	 * 閫氳繃涓婚敭鍒犻櫎鏁版嵁
+	 *
+	 * @param ids 涓婚敭
+	 * @return 鏄惁鎴愬姛
+	 */
+	@Override
+	public boolean deleteByIds(List<String> ids) {
+		boolean tenantTemp = this.removeBatchByIds(ids);
+		return tenantTemp;
+	}
+
+}
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 bcb74b6..1fc64b3 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
@@ -19,22 +19,14 @@
 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.StringUtils;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
-import javafx.geometry.Pos;
-import lombok.AllArgsConstructor;
 import lombok.RequiredArgsConstructor;
-import org.apache.ibatis.mapping.Environment;
-import org.springblade.common.constant.TenantConstant;
 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;
@@ -45,15 +37,10 @@
 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.Autowired;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
-import org.springframework.web.bind.annotation.PostMapping;
 
-import javax.annotation.PostConstruct;
-import java.io.FileInputStream;
-import java.io.IOException;
 import java.util.*;
 import java.util.stream.Collectors;
 
@@ -116,8 +103,8 @@
 			List<String> codes = tenants.stream().map(Tenant::getTenantId).collect(Collectors.toList());
 			String tenantId = getTenantId(codes);
 			tenant.setTenantId(tenantId);
-			// 閰嶇疆涓篺alse锛屽苟涓斿墠绔紶杈撶殑鍙傛暟涓篺alse灏变笉闇�瑕佸垱寤轰笁鍛�
-			if(!this.ssaEnable && !tenant.getMembersFlag()){
+			// 閰嶇疆涓篺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);
@@ -127,7 +114,7 @@
 				Dept dept = generateDept(tenantId, tenant);
 				deptService.save(dept);
 				// 鏂板缓绉熸埛瀵瑰簲鐨勯粯璁ゅ矖浣�
-				Post postInfo = generatePost(tenantId, 1, "ceo", "棣栧腑鎵ц瀹�", 1);
+				Post postInfo = generatePost(tenantId, 1, "admin", "绠$悊鍛�", 1);
 				postService.save(postInfo);
 				// 鏂板缓绉熸埛瀵瑰簲鐨勯粯璁や笟鍔″瓧鍏�
 				LinkedList<DictBiz> dictBizs = new LinkedList<>();
@@ -161,18 +148,18 @@
 				Dept dept = generateDept(tenantId, tenant);
 				deptService.save(dept);
 				// 鏂板缓绉熸埛瀵瑰簲鐨勯粯璁ゅ矖浣�
-				Post postCeo = generatePost(tenantId, 1, "sysAdmin", "绯荤粺绠$悊鍛�", 1);
-				Post postCto = generatePost(tenantId,1,"secAdmin","瀹夊叏绠$悊鍛�",4);
-				Post postCio = generatePost(tenantId,1,"auditAdmin","瀹¤绠$悊鍛�",5);
-				postService.saveBatch(Arrays.asList(postCeo,postCto,postCio));
+				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, postCeo);
-				User userSec = generateUser(tenantId,roleSec,dept,postCto);
-				User userAudit = generateUser(tenantId,roleAudit,dept,postCio);
+				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);
 				// 鍒涘缓鐢ㄦ埛
@@ -208,7 +195,6 @@
 	@Override
 	public List<Map<String,Object>> selectMaps(){
 		List<Map<String, Object>> maps = listMaps(new QueryWrapper<Tenant>().select("TENANT_ID", "TENANT_NAME"));
-		System.out.println(maps);
 		return maps;
 	}
 
@@ -261,8 +247,8 @@
 	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((menuCodes.size() > 0 ? menuCodes : stringMenus), userMenus);
+		//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 -> {
diff --git a/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/service/impl/ValueRangeServiceImpl.java b/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/service/impl/ValueRangeServiceImpl.java
new file mode 100644
index 0000000..9046e5e
--- /dev/null
+++ b/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/service/impl/ValueRangeServiceImpl.java
@@ -0,0 +1,104 @@
+package org.springblade.system.service.impl;
+
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springblade.core.cache.utils.CacheUtil;
+import org.springblade.core.log.exception.ServiceException;
+import org.springblade.core.tool.utils.Func;
+import org.springblade.system.entity.ValueRange;
+import org.springblade.system.mapper.ValueRangeMapper;
+import org.springblade.system.service.IValueRangeService;
+import org.springframework.data.domain.Page;
+import org.springframework.data.domain.PageImpl;
+import org.springframework.data.domain.PageRequest;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+import java.util.Date;
+import java.util.List;
+
+import static org.springblade.core.cache.constant.CacheConstant.SYS_CACHE;
+
+/**
+ * (PlSysValueRange)琛ㄦ湇鍔″疄鐜扮被
+ *
+ * @author makejava
+ * @since 2023-03-20 15:23:59
+ */
+@Service
+public class ValueRangeServiceImpl extends ServiceImpl<ValueRangeMapper,ValueRange> implements IValueRangeService {
+
+	@Resource
+	private ValueRangeMapper valueRangeMapper;
+
+	/**
+	 * 鍏ㄦ煡璇�
+	 *
+	 * @return 鏌ヨ缁撴灉
+	 */
+	@Override
+	public List<ValueRange> queryByAll() {
+		return valueRangeMapper.selectList(null);
+	}
+
+	/**
+	 * 鍒嗛〉鏌ヨ
+	 *
+	 * @param valueRange 绛涢�夋潯浠�
+	 * @param pageRequest     鍒嗛〉瀵硅薄
+	 * @return 鏌ヨ缁撴灉
+	 */
+	@Override
+	public Page<ValueRange> queryByPage(ValueRange valueRange, PageRequest pageRequest) {
+		long total = this.valueRangeMapper.count(valueRange);
+		return new PageImpl<>(this.valueRangeMapper.queryAllByLimit(valueRange, pageRequest), pageRequest, total);
+	}
+
+	/**
+	 * 鏂板鏁版嵁
+	 *
+	 * @param valueRange 瀹炰緥瀵硅薄
+	 * @return 瀹炰緥瀵硅薄
+	 */
+	@Override
+	public boolean submit(ValueRange valueRange) {
+		//鍒ゆ柇鏄惁鎼哄甫id
+		if(Func.isEmpty(valueRange.getId())){
+			//鏂板
+			ValueRange dbValueRange = this.getOne(Wrappers.<ValueRange>query().lambda()
+				.eq(ValueRange::getCombinationId,valueRange.getCombinationId())
+				.eq(ValueRange::getValue, valueRange.getValue()));
+			//鍚屼竴缁勫悎鏂瑰紡涓嬩笉鑳藉嚭鐜扮浉鍚岀殑鍙栧�艰寖鍥�
+			if(!Func.isEmpty(dbValueRange)){
+				throw new ServiceException("璇ョ粍鍚堟柟寮忎笅宸插瓨鍦ㄧ浉鍚屽彇鍊艰寖鍥�!");
+			}
+			if(Func.isEmpty(valueRange.getCreateTime())){
+				valueRange.setCreateTime(new Date());
+			}
+			if(Func.isEmpty(valueRange.getUpdateTime())){
+				valueRange.setUpdateTime(new Date());
+			}
+			boolean temp = saveOrUpdate(valueRange);
+			return temp;
+		}else {
+			if(Func.isEmpty(valueRange.getUpdateTime())){
+				valueRange.setUpdateTime(new Date());
+			}
+			CacheUtil.clear(SYS_CACHE, Boolean.FALSE);
+			return saveOrUpdate(valueRange);
+		}
+	}
+
+	/**
+	 * 閫氳繃涓婚敭鍒犻櫎鏁版嵁
+	 *
+	 * @param ids 涓婚敭
+	 * @return 鏄惁鎴愬姛
+	 */
+	@Override
+	public boolean deleteByIds(List<String> ids) {
+		boolean tenantTemp = this.removeBatchByIds(ids);
+		return tenantTemp;
+	}
+
+}
diff --git a/Source/BladeX/blade-service/blade-user/src/main/java/org/springblade/system/user/controller/UserController.java b/Source/BladeX/blade-service/blade-user/src/main/java/org/springblade/system/user/controller/UserController.java
index 439cfdb..729c211 100644
--- a/Source/BladeX/blade-service/blade-user/src/main/java/org/springblade/system/user/controller/UserController.java
+++ b/Source/BladeX/blade-service/blade-user/src/main/java/org/springblade/system/user/controller/UserController.java
@@ -81,7 +81,7 @@
 	@ApiOperationSupport(order = 1)
 	@ApiOperation(value = "鏌ョ湅璇︽儏", notes = "浼犲叆id")
 	@GetMapping("/detail")
-	@PreAuth(RoleConstant.HAS_ROLE_ADMIN)
+	//@PreAuth(RoleConstant.HAS_ROLE_ADMIN)
 	public R<UserVO> detail(User user) {
 		User detail = userService.getOne(Condition.getQueryWrapper(user));
 		return R.data(UserWrapper.build().entityVO(detail));
@@ -108,7 +108,7 @@
 	})
 	@ApiOperationSupport(order = 3)
 	@ApiOperation(value = "鍒楄〃", notes = "浼犲叆account鍜宺ealName")
-	@PreAuth(RoleConstant.HAS_ROLE_ADMIN)
+	//@PreAuth(RoleConstant.HAS_ROLE_ADMIN)
 	public R<IPage<UserVO>> list(@ApiIgnore @RequestParam Map<String, Object> user, Query query, BladeUser bladeUser) {
 		QueryWrapper<User> queryWrapper = Condition.getQueryWrapper(user, User.class);
 		IPage<User> pages = userService.page(Condition.getPage(query), (!bladeUser.getTenantId().equals(BladeConstant.ADMIN_TENANT_ID)) ? queryWrapper.lambda().eq(User::getTenantId, bladeUser.getTenantId()) : queryWrapper);
@@ -125,7 +125,7 @@
 	})
 	@ApiOperationSupport(order = 3)
 	@ApiOperation(value = "鍒楄〃", notes = "浼犲叆account鍜宺ealName")
-	@PreAuth(RoleConstant.HAS_ROLE_ADMIN)
+	//@PreAuth(RoleConstant.HAS_ROLE_ADMIN)
 	public R<IPage<UserVO>> page(@ApiIgnore User user, Query query, Long deptId, BladeUser bladeUser) {
 		IPage<User> pages = userService.selectUserPage(Condition.getPage(query), user, deptId, (bladeUser.getTenantId().equals(BladeConstant.ADMIN_TENANT_ID) ? StringPool.EMPTY : bladeUser.getTenantId()));
 		return R.data(UserWrapper.build().pageVO(pages));
@@ -137,7 +137,7 @@
 	@PostMapping("/submit")
 	@ApiOperationSupport(order = 4)
 	@ApiOperation(value = "鏂板鎴栦慨鏀�", notes = "浼犲叆User")
-	@PreAuth(RoleConstant.HAS_ROLE_ADMIN)
+	//@PreAuth(RoleConstant.HAS_ROLE_ADMIN)
 	public R submit(@Valid @RequestBody User user) {
 		CacheUtil.clear(USER_CACHE);
 		return R.status(userService.submit(user));
@@ -160,7 +160,7 @@
 	@PostMapping("/remove")
 	@ApiOperationSupport(order = 6)
 	@ApiOperation(value = "鍒犻櫎", notes = "浼犲叆id闆嗗悎")
-	@PreAuth(RoleConstant.HAS_ROLE_ADMIN)
+	//@PreAuth(RoleConstant.HAS_ROLE_ADMIN)
 	public R remove(@RequestParam String ids) {
 		CacheUtil.clear(USER_CACHE);
 		return R.status(userService.removeUser(ids));
@@ -172,7 +172,7 @@
 	@PostMapping("/grant")
 	@ApiOperationSupport(order = 7)
 	@ApiOperation(value = "鏉冮檺璁剧疆", notes = "浼犲叆roleId闆嗗悎浠ュ強menuId闆嗗悎")
-	@PreAuth(RoleConstant.HAS_ROLE_ADMIN)
+	//@PreAuth(RoleConstant.HAS_ROLE_ADMIN)
 	public R grant(@ApiParam(value = "userId闆嗗悎", required = true) @RequestParam String userIds,
 				   @ApiParam(value = "roleId闆嗗悎", required = true) @RequestParam String roleIds) {
 		boolean temp = userService.grant(userIds, roleIds);
@@ -185,7 +185,7 @@
 	@PostMapping("/reset-password")
 	@ApiOperationSupport(order = 8)
 	@ApiOperation(value = "鍒濆鍖栧瘑鐮�", notes = "浼犲叆userId闆嗗悎")
-	@PreAuth(RoleConstant.HAS_ROLE_ADMIN)
+	//@PreAuth(RoleConstant.HAS_ROLE_ADMIN)
 	public R resetPassword(@ApiParam(value = "userId闆嗗悎", required = true) @RequestParam String userIds) {
 		boolean temp = userService.resetPassword(userIds);
 		return R.status(temp);
@@ -294,7 +294,7 @@
 	@ApiOperationSupport(order = 17)
 	@ApiOperation(value = "鏌ョ湅骞冲彴璇︽儏", notes = "浼犲叆id")
 	@GetMapping("/platform-detail")
-	@PreAuth(RoleConstant.HAS_ROLE_ADMIN)
+	//@PreAuth(RoleConstant.HAS_ROLE_ADMIN)
 	public R<UserVO> platformDetail(User user) {
 		return R.data(userService.platformDetail(user));
 	}

--
Gitblit v1.9.3