ludc
2023-03-21 b3a866dc85a061d11efd6593770a0d88ba063f5a
增加密码管理后台内容
已修改22个文件
已添加18个文件
1758 ■■■■■ 文件已修改
Source/BladeX/blade-ops/blade-develop/src/main/java/org/springblade/develop/controller/CodeController.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/BladeX/blade-ops/blade-flow/src/main/java/org/springblade/flow/engine/controller/FlowFollowController.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/BladeX/blade-ops/blade-flow/src/main/java/org/springblade/flow/engine/controller/FlowManagerController.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/BladeX/blade-ops/blade-flow/src/main/java/org/springblade/flow/engine/controller/FlowModelController.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/BladeX/blade-ops/blade-resource/src/main/java/org/springblade/resource/controller/OssController.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/BladeX/blade-ops/blade-resource/src/main/java/org/springblade/resource/controller/SmsController.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/BladeX/blade-ops/blade-resource/src/main/java/org/springblade/resource/endpoint/OssEndpoint.java 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/BladeX/blade-service-api/blade-system-api/src/main/java/org/springblade/system/entity/Combination.java 112 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/BladeX/blade-service-api/blade-system-api/src/main/java/org/springblade/system/entity/Dept.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/BladeX/blade-service-api/blade-system-api/src/main/java/org/springblade/system/entity/Role.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/BladeX/blade-service-api/blade-system-api/src/main/java/org/springblade/system/entity/Strategy.java 175 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/BladeX/blade-service-api/blade-system-api/src/main/java/org/springblade/system/entity/Tenant.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/BladeX/blade-service-api/blade-system-api/src/main/java/org/springblade/system/entity/ValueRange.java 104 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/BladeX/blade-service-api/blade-system-api/src/main/java/org/springblade/system/vo/TenantVO.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/BladeX/blade-service/blade-desk/src/main/java/org/springblade/desk/entity/ProcessLeave.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/controller/AuthClientController.java 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/controller/CombinationController.java 108 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/controller/DeptController.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/controller/MenuController.java 16 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/controller/RoleController.java 7 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/controller/StrategyController.java 98 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/controller/TenantController.java 28 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/controller/TenantPackageController.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/controller/TopMenuController.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/controller/ValueRangeController.java 92 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/mapper/CombinationMapper.java 42 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/mapper/CombinationMapper.xml 91 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/mapper/MenuMapper.xml 16 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/mapper/StrategyMapper.java 45 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/mapper/StrategyMapper.xml 157 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/mapper/ValueRangeMapper.java 36 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/mapper/ValueRangeMapper.xml 76 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/service/ICombinationService.java 58 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/service/IStrategyService.java 51 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/service/IValueRangeService.java 49 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/service/impl/CombinationServiceImpl.java 117 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/service/impl/StrategyServiceImpl.java 104 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/service/impl/TenantServiceImpl.java 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/service/impl/ValueRangeServiceImpl.java 104 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/BladeX/blade-service/blade-user/src/main/java/org/springblade/system/user/controller/UserController.java 16 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/BladeX/blade-ops/blade-develop/src/main/java/org/springblade/develop/controller/CodeController.java
@@ -57,7 +57,7 @@
@AllArgsConstructor
@RequestMapping("/code")
@Api(value = "代码生成", tags = "代码生成")
@PreAuth(RoleConstant.HAS_ROLE_ADMINISTRATOR)
//@PreAuth(RoleConstant.HAS_ROLE_ADMINISTRATOR)
public class CodeController extends BladeController {
    private final ICodeService codeService;
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;
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;
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;
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 {
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 {
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("操作成功");
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);
    }
}
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;
    /**
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;
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代表默认,0代表非默认")
    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);
    }
}
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;
/**
 * å®žä½“ç±»
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);
    }
}
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;
/**
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;
/**
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;
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,分页参数query")
    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));
    }
}
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集合")
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) {
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集合")
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,分页参数query")
    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));
    }
}
Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/controller/TenantController.java
@@ -22,18 +22,14 @@
import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
import io.swagger.annotations.*;
import lombok.AllArgsConstructor;
import lombok.Value;
import org.springblade.core.boot.ctrl.BladeController;
import org.springblade.core.cache.utils.CacheUtil;
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;
@@ -45,7 +41,6 @@
import springfox.documentation.annotations.ApiIgnore;
import javax.validation.Valid;
import java.util.Date;
import java.util.List;
import java.util.Map;
@@ -78,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);
@@ -95,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);
@@ -108,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);
@@ -121,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);
@@ -133,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));
    }
@@ -146,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)));
    }
@@ -156,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 = "数据源ID", required = true) @RequestParam Long datasourceId){
        CacheUtil.evict(TENANT_DATASOURCE_CACHE, TENANT_DATASOURCE_EXIST_KEY, tenantId, Boolean.FALSE);
@@ -171,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);
@@ -204,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()));
@@ -215,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 = "产品包ID") Long packageId) {
        CacheUtil.evict(SYS_CACHE, TENANT_TENANT_ID, tenantId, Boolean.FALSE);
@@ -242,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);
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)));
    }
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;
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,分页参数query")
    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));
    }
}
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);
}
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>
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
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);
}
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>
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);
}
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>
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(key):组合名(value)
     * @return
     */
    List<Map<String,Object>> selectMaps();
}
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);
}
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);
}
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;
    }
}
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;
    }
}
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;
@@ -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;
    }
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;
    }
}
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和realName")
    @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和realName")
    @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));
    }