diff --git a/cutejava-springboot3/cutejava-module-system/src/main/java/cn/odboy/system/dal/dataobject/SystemDeptTb.java b/cutejava-springboot3/cutejava-module-system/src/main/java/cn/odboy/system/dal/dataobject/SystemDeptTb.java
index 873aa146..b7daf633 100644
--- a/cutejava-springboot3/cutejava-module-system/src/main/java/cn/odboy/system/dal/dataobject/SystemDeptTb.java
+++ b/cutejava-springboot3/cutejava-module-system/src/main/java/cn/odboy/system/dal/dataobject/SystemDeptTb.java
@@ -20,11 +20,11 @@ import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModelProperty;
-import java.util.Objects;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull;
import lombok.Getter;
import lombok.Setter;
+import java.util.Objects;
@Getter
@Setter
diff --git a/cutejava-springboot3/cutejava-module-system/src/main/java/cn/odboy/system/dal/dataobject/SystemDictDetailTb.java b/cutejava-springboot3/cutejava-module-system/src/main/java/cn/odboy/system/dal/dataobject/SystemDictDetailTb.java
index 082dae03..caab4087 100644
--- a/cutejava-springboot3/cutejava-module-system/src/main/java/cn/odboy/system/dal/dataobject/SystemDictDetailTb.java
+++ b/cutejava-springboot3/cutejava-module-system/src/main/java/cn/odboy/system/dal/dataobject/SystemDictDetailTb.java
@@ -21,9 +21,9 @@ import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModelProperty;
-import jakarta.validation.constraints.NotNull;
import lombok.Getter;
import lombok.Setter;
+import jakarta.validation.constraints.NotNull;
@Getter
@Setter
diff --git a/cutejava-springboot3/cutejava-module-system/src/main/java/cn/odboy/system/dal/dataobject/SystemDictTb.java b/cutejava-springboot3/cutejava-module-system/src/main/java/cn/odboy/system/dal/dataobject/SystemDictTb.java
index d25eee83..d80bffd0 100644
--- a/cutejava-springboot3/cutejava-module-system/src/main/java/cn/odboy/system/dal/dataobject/SystemDictTb.java
+++ b/cutejava-springboot3/cutejava-module-system/src/main/java/cn/odboy/system/dal/dataobject/SystemDictTb.java
@@ -22,10 +22,10 @@ import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModelProperty;
-import jakarta.validation.constraints.NotBlank;
-import jakarta.validation.constraints.NotNull;
import lombok.Getter;
import lombok.Setter;
+import jakarta.validation.constraints.NotBlank;
+import jakarta.validation.constraints.NotNull;
@Getter
@Setter
diff --git a/cutejava-springboot3/cutejava-module-system/src/main/java/cn/odboy/system/dal/dataobject/SystemEmailConfigTb.java b/cutejava-springboot3/cutejava-module-system/src/main/java/cn/odboy/system/dal/dataobject/SystemEmailConfigTb.java
index a687fd4f..13fa3848 100644
--- a/cutejava-springboot3/cutejava-module-system/src/main/java/cn/odboy/system/dal/dataobject/SystemEmailConfigTb.java
+++ b/cutejava-springboot3/cutejava-module-system/src/main/java/cn/odboy/system/dal/dataobject/SystemEmailConfigTb.java
@@ -19,9 +19,9 @@ import cn.odboy.base.KitObject;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModelProperty;
-import jakarta.validation.constraints.NotBlank;
import lombok.Data;
import lombok.EqualsAndHashCode;
+import jakarta.validation.constraints.NotBlank;
/**
* 邮件配置类,数据存覆盖式存入数据存
diff --git a/cutejava-springboot3/cutejava-module-system/src/main/java/cn/odboy/system/dal/dataobject/SystemJobTb.java b/cutejava-springboot3/cutejava-module-system/src/main/java/cn/odboy/system/dal/dataobject/SystemJobTb.java
index 70f57a9b..39574cb0 100644
--- a/cutejava-springboot3/cutejava-module-system/src/main/java/cn/odboy/system/dal/dataobject/SystemJobTb.java
+++ b/cutejava-springboot3/cutejava-module-system/src/main/java/cn/odboy/system/dal/dataobject/SystemJobTb.java
@@ -20,11 +20,11 @@ import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModelProperty;
-import java.util.Objects;
-import jakarta.validation.constraints.NotBlank;
-import jakarta.validation.constraints.NotNull;
import lombok.Getter;
import lombok.Setter;
+import jakarta.validation.constraints.NotBlank;
+import jakarta.validation.constraints.NotNull;
+import java.util.Objects;
@Getter
@Setter
diff --git a/cutejava-springboot3/cutejava-module-system/src/main/java/cn/odboy/system/dal/dataobject/SystemMenuTb.java b/cutejava-springboot3/cutejava-module-system/src/main/java/cn/odboy/system/dal/dataobject/SystemMenuTb.java
index 0a9f3aa3..3f7d1cd7 100644
--- a/cutejava-springboot3/cutejava-module-system/src/main/java/cn/odboy/system/dal/dataobject/SystemMenuTb.java
+++ b/cutejava-springboot3/cutejava-module-system/src/main/java/cn/odboy/system/dal/dataobject/SystemMenuTb.java
@@ -21,10 +21,10 @@ import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModelProperty;
-import java.util.Objects;
-import jakarta.validation.constraints.NotNull;
import lombok.Getter;
import lombok.Setter;
+import jakarta.validation.constraints.NotNull;
+import java.util.Objects;
@Getter
@Setter
diff --git a/cutejava-springboot3/cutejava-module-system/src/main/java/cn/odboy/system/dal/dataobject/SystemOperationLogTb.java b/cutejava-springboot3/cutejava-module-system/src/main/java/cn/odboy/system/dal/dataobject/SystemOperationLogTb.java
index e32d899d..345c7887 100644
--- a/cutejava-springboot3/cutejava-module-system/src/main/java/cn/odboy/system/dal/dataobject/SystemOperationLogTb.java
+++ b/cutejava-springboot3/cutejava-module-system/src/main/java/cn/odboy/system/dal/dataobject/SystemOperationLogTb.java
@@ -23,10 +23,10 @@ import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
-import java.util.Date;
import lombok.Getter;
import lombok.Setter;
import lombok.ToString;
+import java.util.Date;
/**
*
diff --git a/cutejava-springboot3/cutejava-module-system/src/main/java/cn/odboy/system/dal/dataobject/SystemQuartzJobTb.java b/cutejava-springboot3/cutejava-module-system/src/main/java/cn/odboy/system/dal/dataobject/SystemQuartzJobTb.java
index 7df2e25e..fe865114 100644
--- a/cutejava-springboot3/cutejava-module-system/src/main/java/cn/odboy/system/dal/dataobject/SystemQuartzJobTb.java
+++ b/cutejava-springboot3/cutejava-module-system/src/main/java/cn/odboy/system/dal/dataobject/SystemQuartzJobTb.java
@@ -22,10 +22,10 @@ import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModelProperty;
-import jakarta.validation.constraints.NotBlank;
-import jakarta.validation.constraints.NotNull;
import lombok.Getter;
import lombok.Setter;
+import jakarta.validation.constraints.NotBlank;
+import jakarta.validation.constraints.NotNull;
@Getter
@Setter
diff --git a/cutejava-springboot3/cutejava-module-system/src/main/java/cn/odboy/system/dal/dataobject/SystemQuartzLogTb.java b/cutejava-springboot3/cutejava-module-system/src/main/java/cn/odboy/system/dal/dataobject/SystemQuartzLogTb.java
index 514c28e4..3a82a0a6 100644
--- a/cutejava-springboot3/cutejava-module-system/src/main/java/cn/odboy/system/dal/dataobject/SystemQuartzLogTb.java
+++ b/cutejava-springboot3/cutejava-module-system/src/main/java/cn/odboy/system/dal/dataobject/SystemQuartzLogTb.java
@@ -22,9 +22,9 @@ import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModelProperty;
-import java.util.Date;
import lombok.Data;
import lombok.EqualsAndHashCode;
+import java.util.Date;
@Data
@TableName("system_quartz_log")
diff --git a/cutejava-springboot3/cutejava-module-system/src/main/java/cn/odboy/system/dal/dataobject/SystemRoleTb.java b/cutejava-springboot3/cutejava-module-system/src/main/java/cn/odboy/system/dal/dataobject/SystemRoleTb.java
index 8372251a..342e3371 100644
--- a/cutejava-springboot3/cutejava-module-system/src/main/java/cn/odboy/system/dal/dataobject/SystemRoleTb.java
+++ b/cutejava-springboot3/cutejava-module-system/src/main/java/cn/odboy/system/dal/dataobject/SystemRoleTb.java
@@ -23,11 +23,11 @@ import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModelProperty;
-import java.util.Objects;
-import jakarta.validation.constraints.NotBlank;
-import jakarta.validation.constraints.NotNull;
import lombok.Getter;
import lombok.Setter;
+import jakarta.validation.constraints.NotBlank;
+import jakarta.validation.constraints.NotNull;
+import java.util.Objects;
/**
* 角色
diff --git a/cutejava-springboot3/cutejava-module-system/src/main/java/cn/odboy/system/dal/dataobject/SystemUserTb.java b/cutejava-springboot3/cutejava-module-system/src/main/java/cn/odboy/system/dal/dataobject/SystemUserTb.java
index 0928b5f4..b89748d3 100644
--- a/cutejava-springboot3/cutejava-module-system/src/main/java/cn/odboy/system/dal/dataobject/SystemUserTb.java
+++ b/cutejava-springboot3/cutejava-module-system/src/main/java/cn/odboy/system/dal/dataobject/SystemUserTb.java
@@ -21,13 +21,13 @@ import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModelProperty;
-import java.util.Date;
-import java.util.Objects;
+import lombok.Getter;
+import lombok.Setter;
import jakarta.validation.constraints.Email;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull;
-import lombok.Getter;
-import lombok.Setter;
+import java.util.Date;
+import java.util.Objects;
@Getter
@Setter
diff --git a/cutejava-springboot3/cutejava-module-system/src/main/java/cn/odboy/system/dal/model/export/SystemDeptExportRowVo.java b/cutejava-springboot3/cutejava-module-system/src/main/java/cn/odboy/system/dal/model/export/SystemDeptExportRowVo.java
index 02a9da71..8173a6d6 100644
--- a/cutejava-springboot3/cutejava-module-system/src/main/java/cn/odboy/system/dal/model/export/SystemDeptExportRowVo.java
+++ b/cutejava-springboot3/cutejava-module-system/src/main/java/cn/odboy/system/dal/model/export/SystemDeptExportRowVo.java
@@ -2,9 +2,9 @@ package cn.odboy.system.dal.model.export;
import cn.idev.excel.annotation.ExcelProperty;
import cn.odboy.base.KitObject;
-import java.util.Date;
import lombok.Getter;
import lombok.Setter;
+import java.util.Date;
@Getter
@Setter
diff --git a/cutejava-springboot3/cutejava-module-system/src/main/java/cn/odboy/system/dal/model/export/SystemDictExportRowVo.java b/cutejava-springboot3/cutejava-module-system/src/main/java/cn/odboy/system/dal/model/export/SystemDictExportRowVo.java
index 0cd7ff7d..a9ecf480 100644
--- a/cutejava-springboot3/cutejava-module-system/src/main/java/cn/odboy/system/dal/model/export/SystemDictExportRowVo.java
+++ b/cutejava-springboot3/cutejava-module-system/src/main/java/cn/odboy/system/dal/model/export/SystemDictExportRowVo.java
@@ -2,9 +2,9 @@ package cn.odboy.system.dal.model.export;
import cn.idev.excel.annotation.ExcelProperty;
import cn.odboy.base.KitObject;
-import java.util.Date;
import lombok.Getter;
import lombok.Setter;
+import java.util.Date;
@Getter
@Setter
diff --git a/cutejava-springboot3/cutejava-module-system/src/main/java/cn/odboy/system/dal/model/export/SystemJobExportRowVo.java b/cutejava-springboot3/cutejava-module-system/src/main/java/cn/odboy/system/dal/model/export/SystemJobExportRowVo.java
index d4e6f2cd..bfba86f8 100644
--- a/cutejava-springboot3/cutejava-module-system/src/main/java/cn/odboy/system/dal/model/export/SystemJobExportRowVo.java
+++ b/cutejava-springboot3/cutejava-module-system/src/main/java/cn/odboy/system/dal/model/export/SystemJobExportRowVo.java
@@ -2,9 +2,9 @@ package cn.odboy.system.dal.model.export;
import cn.idev.excel.annotation.ExcelProperty;
import cn.odboy.base.KitObject;
-import java.util.Date;
import lombok.Getter;
import lombok.Setter;
+import java.util.Date;
@Getter
@Setter
diff --git a/cutejava-springboot3/cutejava-module-system/src/main/java/cn/odboy/system/dal/model/export/SystemLocalStorageExportRowVo.java b/cutejava-springboot3/cutejava-module-system/src/main/java/cn/odboy/system/dal/model/export/SystemLocalStorageExportRowVo.java
index 5148a50e..232e082b 100644
--- a/cutejava-springboot3/cutejava-module-system/src/main/java/cn/odboy/system/dal/model/export/SystemLocalStorageExportRowVo.java
+++ b/cutejava-springboot3/cutejava-module-system/src/main/java/cn/odboy/system/dal/model/export/SystemLocalStorageExportRowVo.java
@@ -2,9 +2,9 @@ package cn.odboy.system.dal.model.export;
import cn.idev.excel.annotation.ExcelProperty;
import cn.odboy.base.KitObject;
-import java.util.Date;
import lombok.Getter;
import lombok.Setter;
+import java.util.Date;
@Getter
@Setter
diff --git a/cutejava-springboot3/cutejava-module-system/src/main/java/cn/odboy/system/dal/model/export/SystemMenuExportRowVo.java b/cutejava-springboot3/cutejava-module-system/src/main/java/cn/odboy/system/dal/model/export/SystemMenuExportRowVo.java
index 21c2f4e2..8e5c4c71 100644
--- a/cutejava-springboot3/cutejava-module-system/src/main/java/cn/odboy/system/dal/model/export/SystemMenuExportRowVo.java
+++ b/cutejava-springboot3/cutejava-module-system/src/main/java/cn/odboy/system/dal/model/export/SystemMenuExportRowVo.java
@@ -2,9 +2,9 @@ package cn.odboy.system.dal.model.export;
import cn.idev.excel.annotation.ExcelProperty;
import cn.odboy.base.KitObject;
-import java.util.Date;
import lombok.Getter;
import lombok.Setter;
+import java.util.Date;
@Getter
@Setter
diff --git a/cutejava-springboot3/cutejava-module-system/src/main/java/cn/odboy/system/dal/model/export/SystemOssStorageExportRowVo.java b/cutejava-springboot3/cutejava-module-system/src/main/java/cn/odboy/system/dal/model/export/SystemOssStorageExportRowVo.java
index da9d765d..552737ed 100644
--- a/cutejava-springboot3/cutejava-module-system/src/main/java/cn/odboy/system/dal/model/export/SystemOssStorageExportRowVo.java
+++ b/cutejava-springboot3/cutejava-module-system/src/main/java/cn/odboy/system/dal/model/export/SystemOssStorageExportRowVo.java
@@ -2,9 +2,9 @@ package cn.odboy.system.dal.model.export;
import cn.idev.excel.annotation.ExcelProperty;
import cn.odboy.base.KitObject;
-import java.util.Date;
import lombok.Getter;
import lombok.Setter;
+import java.util.Date;
@Getter
@Setter
diff --git a/cutejava-springboot3/cutejava-module-system/src/main/java/cn/odboy/system/dal/model/export/SystemQuartzJobExportRowVo.java b/cutejava-springboot3/cutejava-module-system/src/main/java/cn/odboy/system/dal/model/export/SystemQuartzJobExportRowVo.java
index 1f35df7e..1e773828 100644
--- a/cutejava-springboot3/cutejava-module-system/src/main/java/cn/odboy/system/dal/model/export/SystemQuartzJobExportRowVo.java
+++ b/cutejava-springboot3/cutejava-module-system/src/main/java/cn/odboy/system/dal/model/export/SystemQuartzJobExportRowVo.java
@@ -2,9 +2,9 @@ package cn.odboy.system.dal.model.export;
import cn.idev.excel.annotation.ExcelProperty;
import cn.odboy.base.KitObject;
-import java.util.Date;
import lombok.Getter;
import lombok.Setter;
+import java.util.Date;
@Getter
@Setter
diff --git a/cutejava-springboot3/cutejava-module-system/src/main/java/cn/odboy/system/dal/model/export/SystemQuartzLogExportRowVo.java b/cutejava-springboot3/cutejava-module-system/src/main/java/cn/odboy/system/dal/model/export/SystemQuartzLogExportRowVo.java
index de272d53..5f536e7a 100644
--- a/cutejava-springboot3/cutejava-module-system/src/main/java/cn/odboy/system/dal/model/export/SystemQuartzLogExportRowVo.java
+++ b/cutejava-springboot3/cutejava-module-system/src/main/java/cn/odboy/system/dal/model/export/SystemQuartzLogExportRowVo.java
@@ -2,9 +2,9 @@ package cn.odboy.system.dal.model.export;
import cn.idev.excel.annotation.ExcelProperty;
import cn.odboy.base.KitObject;
-import java.util.Date;
import lombok.Getter;
import lombok.Setter;
+import java.util.Date;
@Getter
@Setter
diff --git a/cutejava-springboot3/cutejava-module-system/src/main/java/cn/odboy/system/dal/model/export/SystemRoleExportRowVo.java b/cutejava-springboot3/cutejava-module-system/src/main/java/cn/odboy/system/dal/model/export/SystemRoleExportRowVo.java
index 549ff2e8..155b57e8 100644
--- a/cutejava-springboot3/cutejava-module-system/src/main/java/cn/odboy/system/dal/model/export/SystemRoleExportRowVo.java
+++ b/cutejava-springboot3/cutejava-module-system/src/main/java/cn/odboy/system/dal/model/export/SystemRoleExportRowVo.java
@@ -2,9 +2,9 @@ package cn.odboy.system.dal.model.export;
import cn.idev.excel.annotation.ExcelProperty;
import cn.odboy.base.KitObject;
-import java.util.Date;
import lombok.Getter;
import lombok.Setter;
+import java.util.Date;
@Getter
@Setter
diff --git a/cutejava-springboot3/cutejava-module-system/src/main/java/cn/odboy/system/dal/model/export/SystemUserExportRowVo.java b/cutejava-springboot3/cutejava-module-system/src/main/java/cn/odboy/system/dal/model/export/SystemUserExportRowVo.java
index cb91d952..2ffcecae 100644
--- a/cutejava-springboot3/cutejava-module-system/src/main/java/cn/odboy/system/dal/model/export/SystemUserExportRowVo.java
+++ b/cutejava-springboot3/cutejava-module-system/src/main/java/cn/odboy/system/dal/model/export/SystemUserExportRowVo.java
@@ -2,9 +2,9 @@ package cn.odboy.system.dal.model.export;
import cn.idev.excel.annotation.ExcelProperty;
import cn.odboy.base.KitObject;
-import java.util.Date;
import lombok.Getter;
import lombok.Setter;
+import java.util.Date;
@Getter
@Setter
diff --git a/cutejava-springboot3/cutejava-module-system/src/main/java/cn/odboy/system/dal/model/request/SystemCheckEmailCaptchaArgs.java b/cutejava-springboot3/cutejava-module-system/src/main/java/cn/odboy/system/dal/model/request/SystemCheckEmailCaptchaArgs.java
index b5d776b1..97a0e8b3 100644
--- a/cutejava-springboot3/cutejava-module-system/src/main/java/cn/odboy/system/dal/model/request/SystemCheckEmailCaptchaArgs.java
+++ b/cutejava-springboot3/cutejava-module-system/src/main/java/cn/odboy/system/dal/model/request/SystemCheckEmailCaptchaArgs.java
@@ -16,9 +16,9 @@
package cn.odboy.system.dal.model.request;
import cn.odboy.base.KitObject;
-import jakarta.validation.constraints.NotBlank;
import lombok.Getter;
import lombok.Setter;
+import jakarta.validation.constraints.NotBlank;
@Getter
@Setter
diff --git a/cutejava-springboot3/cutejava-module-system/src/main/java/cn/odboy/system/dal/model/request/SystemCreateDeptArgs.java b/cutejava-springboot3/cutejava-module-system/src/main/java/cn/odboy/system/dal/model/request/SystemCreateDeptArgs.java
index 48f2b339..6a4db862 100644
--- a/cutejava-springboot3/cutejava-module-system/src/main/java/cn/odboy/system/dal/model/request/SystemCreateDeptArgs.java
+++ b/cutejava-springboot3/cutejava-module-system/src/main/java/cn/odboy/system/dal/model/request/SystemCreateDeptArgs.java
@@ -16,10 +16,10 @@
package cn.odboy.system.dal.model.request;
import cn.odboy.base.KitObject;
-import jakarta.validation.constraints.NotBlank;
-import jakarta.validation.constraints.NotNull;
import lombok.Data;
import lombok.EqualsAndHashCode;
+import jakarta.validation.constraints.NotBlank;
+import jakarta.validation.constraints.NotNull;
@Data
@EqualsAndHashCode(callSuper = false)
diff --git a/cutejava-springboot3/cutejava-module-system/src/main/java/cn/odboy/system/dal/model/request/SystemCreateDictArgs.java b/cutejava-springboot3/cutejava-module-system/src/main/java/cn/odboy/system/dal/model/request/SystemCreateDictArgs.java
index 545425df..a18a0341 100644
--- a/cutejava-springboot3/cutejava-module-system/src/main/java/cn/odboy/system/dal/model/request/SystemCreateDictArgs.java
+++ b/cutejava-springboot3/cutejava-module-system/src/main/java/cn/odboy/system/dal/model/request/SystemCreateDictArgs.java
@@ -16,9 +16,9 @@
package cn.odboy.system.dal.model.request;
import cn.odboy.base.KitObject;
-import jakarta.validation.constraints.NotBlank;
import lombok.Data;
import lombok.EqualsAndHashCode;
+import jakarta.validation.constraints.NotBlank;
@Data
@EqualsAndHashCode(callSuper = false)
diff --git a/cutejava-springboot3/cutejava-module-system/src/main/java/cn/odboy/system/dal/model/request/SystemCreateDictDetailArgs.java b/cutejava-springboot3/cutejava-module-system/src/main/java/cn/odboy/system/dal/model/request/SystemCreateDictDetailArgs.java
index 99eeb7c7..20b2d686 100644
--- a/cutejava-springboot3/cutejava-module-system/src/main/java/cn/odboy/system/dal/model/request/SystemCreateDictDetailArgs.java
+++ b/cutejava-springboot3/cutejava-module-system/src/main/java/cn/odboy/system/dal/model/request/SystemCreateDictDetailArgs.java
@@ -17,10 +17,10 @@ package cn.odboy.system.dal.model.request;
import cn.odboy.base.KitObject;
import cn.odboy.system.dal.dataobject.SystemDictTb;
-import jakarta.validation.constraints.NotBlank;
-import jakarta.validation.constraints.NotNull;
import lombok.Data;
import lombok.EqualsAndHashCode;
+import jakarta.validation.constraints.NotBlank;
+import jakarta.validation.constraints.NotNull;
@Data
@EqualsAndHashCode(callSuper = false)
diff --git a/cutejava-springboot3/cutejava-module-system/src/main/java/cn/odboy/system/dal/model/request/SystemCreateJobArgs.java b/cutejava-springboot3/cutejava-module-system/src/main/java/cn/odboy/system/dal/model/request/SystemCreateJobArgs.java
index 3a162e65..3cf210f1 100644
--- a/cutejava-springboot3/cutejava-module-system/src/main/java/cn/odboy/system/dal/model/request/SystemCreateJobArgs.java
+++ b/cutejava-springboot3/cutejava-module-system/src/main/java/cn/odboy/system/dal/model/request/SystemCreateJobArgs.java
@@ -16,10 +16,10 @@
package cn.odboy.system.dal.model.request;
import cn.odboy.base.KitObject;
-import jakarta.validation.constraints.NotBlank;
-import jakarta.validation.constraints.NotNull;
import lombok.Data;
import lombok.EqualsAndHashCode;
+import jakarta.validation.constraints.NotBlank;
+import jakarta.validation.constraints.NotNull;
@Data
@EqualsAndHashCode(callSuper = false)
diff --git a/cutejava-springboot3/cutejava-module-system/src/main/java/cn/odboy/system/dal/model/request/SystemCreateRoleArgs.java b/cutejava-springboot3/cutejava-module-system/src/main/java/cn/odboy/system/dal/model/request/SystemCreateRoleArgs.java
index 4a8f6496..f9526661 100644
--- a/cutejava-springboot3/cutejava-module-system/src/main/java/cn/odboy/system/dal/model/request/SystemCreateRoleArgs.java
+++ b/cutejava-springboot3/cutejava-module-system/src/main/java/cn/odboy/system/dal/model/request/SystemCreateRoleArgs.java
@@ -17,11 +17,11 @@ package cn.odboy.system.dal.model.request;
import cn.odboy.base.KitObject;
import cn.odboy.system.dal.dataobject.SystemDeptTb;
-import java.util.Set;
-import jakarta.validation.constraints.NotBlank;
-import jakarta.validation.constraints.NotNull;
import lombok.Data;
import lombok.EqualsAndHashCode;
+import jakarta.validation.constraints.NotBlank;
+import jakarta.validation.constraints.NotNull;
+import java.util.Set;
@Data
@EqualsAndHashCode(callSuper = false)
diff --git a/cutejava-springboot3/cutejava-module-system/src/main/java/cn/odboy/system/dal/model/request/SystemQueryDeptArgs.java b/cutejava-springboot3/cutejava-module-system/src/main/java/cn/odboy/system/dal/model/request/SystemQueryDeptArgs.java
index 008cc29a..73b2b8c5 100644
--- a/cutejava-springboot3/cutejava-module-system/src/main/java/cn/odboy/system/dal/model/request/SystemQueryDeptArgs.java
+++ b/cutejava-springboot3/cutejava-module-system/src/main/java/cn/odboy/system/dal/model/request/SystemQueryDeptArgs.java
@@ -16,9 +16,9 @@
package cn.odboy.system.dal.model.request;
import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
import java.util.Date;
import java.util.List;
-import lombok.Data;
@Data
public class SystemQueryDeptArgs {
diff --git a/cutejava-springboot3/cutejava-module-system/src/main/java/cn/odboy/system/dal/model/request/SystemQueryJobArgs.java b/cutejava-springboot3/cutejava-module-system/src/main/java/cn/odboy/system/dal/model/request/SystemQueryJobArgs.java
index 299d1543..84dd329f 100644
--- a/cutejava-springboot3/cutejava-module-system/src/main/java/cn/odboy/system/dal/model/request/SystemQueryJobArgs.java
+++ b/cutejava-springboot3/cutejava-module-system/src/main/java/cn/odboy/system/dal/model/request/SystemQueryJobArgs.java
@@ -16,10 +16,10 @@
package cn.odboy.system.dal.model.request;
import io.swagger.annotations.ApiModelProperty;
-import java.util.Date;
-import java.util.List;
import lombok.Data;
import lombok.NoArgsConstructor;
+import java.util.Date;
+import java.util.List;
@Data
@NoArgsConstructor
diff --git a/cutejava-springboot3/cutejava-module-system/src/main/java/cn/odboy/system/dal/model/request/SystemQueryMenuArgs.java b/cutejava-springboot3/cutejava-module-system/src/main/java/cn/odboy/system/dal/model/request/SystemQueryMenuArgs.java
index f7a45ff9..8c2b881e 100644
--- a/cutejava-springboot3/cutejava-module-system/src/main/java/cn/odboy/system/dal/model/request/SystemQueryMenuArgs.java
+++ b/cutejava-springboot3/cutejava-module-system/src/main/java/cn/odboy/system/dal/model/request/SystemQueryMenuArgs.java
@@ -16,9 +16,9 @@
package cn.odboy.system.dal.model.request;
import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
import java.util.Date;
import java.util.List;
-import lombok.Data;
@Data
public class SystemQueryMenuArgs {
diff --git a/cutejava-springboot3/cutejava-module-system/src/main/java/cn/odboy/system/dal/model/request/SystemQueryQuartzJobArgs.java b/cutejava-springboot3/cutejava-module-system/src/main/java/cn/odboy/system/dal/model/request/SystemQueryQuartzJobArgs.java
index 6aebbb30..421a34fa 100644
--- a/cutejava-springboot3/cutejava-module-system/src/main/java/cn/odboy/system/dal/model/request/SystemQueryQuartzJobArgs.java
+++ b/cutejava-springboot3/cutejava-module-system/src/main/java/cn/odboy/system/dal/model/request/SystemQueryQuartzJobArgs.java
@@ -16,9 +16,9 @@
package cn.odboy.system.dal.model.request;
import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
import java.util.Date;
import java.util.List;
-import lombok.Data;
@Data
public class SystemQueryQuartzJobArgs {
diff --git a/cutejava-springboot3/cutejava-module-system/src/main/java/cn/odboy/system/dal/model/request/SystemQueryRoleArgs.java b/cutejava-springboot3/cutejava-module-system/src/main/java/cn/odboy/system/dal/model/request/SystemQueryRoleArgs.java
index b3771982..38e0aff3 100644
--- a/cutejava-springboot3/cutejava-module-system/src/main/java/cn/odboy/system/dal/model/request/SystemQueryRoleArgs.java
+++ b/cutejava-springboot3/cutejava-module-system/src/main/java/cn/odboy/system/dal/model/request/SystemQueryRoleArgs.java
@@ -16,9 +16,9 @@
package cn.odboy.system.dal.model.request;
import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
import java.util.Date;
import java.util.List;
-import lombok.Data;
@Data
public class SystemQueryRoleArgs {
diff --git a/cutejava-springboot3/cutejava-module-system/src/main/java/cn/odboy/system/dal/model/request/SystemQueryStorageArgs.java b/cutejava-springboot3/cutejava-module-system/src/main/java/cn/odboy/system/dal/model/request/SystemQueryStorageArgs.java
index 4e524e5d..befe3996 100644
--- a/cutejava-springboot3/cutejava-module-system/src/main/java/cn/odboy/system/dal/model/request/SystemQueryStorageArgs.java
+++ b/cutejava-springboot3/cutejava-module-system/src/main/java/cn/odboy/system/dal/model/request/SystemQueryStorageArgs.java
@@ -16,9 +16,9 @@
package cn.odboy.system.dal.model.request;
import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
import java.util.Date;
import java.util.List;
-import lombok.Data;
@Data
public class SystemQueryStorageArgs {
diff --git a/cutejava-springboot3/cutejava-module-system/src/main/java/cn/odboy/system/dal/model/request/SystemQueryUserArgs.java b/cutejava-springboot3/cutejava-module-system/src/main/java/cn/odboy/system/dal/model/request/SystemQueryUserArgs.java
index 42ad7160..134c29de 100644
--- a/cutejava-springboot3/cutejava-module-system/src/main/java/cn/odboy/system/dal/model/request/SystemQueryUserArgs.java
+++ b/cutejava-springboot3/cutejava-module-system/src/main/java/cn/odboy/system/dal/model/request/SystemQueryUserArgs.java
@@ -17,12 +17,12 @@ package cn.odboy.system.dal.model.request;
import cn.odboy.base.KitObject;
import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
import java.util.Date;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
-import lombok.Data;
-import lombok.EqualsAndHashCode;
@Data
@EqualsAndHashCode(callSuper = false)
diff --git a/cutejava-springboot3/cutejava-module-system/src/main/java/cn/odboy/system/dal/model/request/SystemSendEmailArgs.java b/cutejava-springboot3/cutejava-module-system/src/main/java/cn/odboy/system/dal/model/request/SystemSendEmailArgs.java
index 3069250f..e289dd29 100644
--- a/cutejava-springboot3/cutejava-module-system/src/main/java/cn/odboy/system/dal/model/request/SystemSendEmailArgs.java
+++ b/cutejava-springboot3/cutejava-module-system/src/main/java/cn/odboy/system/dal/model/request/SystemSendEmailArgs.java
@@ -16,12 +16,12 @@
package cn.odboy.system.dal.model.request;
import io.swagger.annotations.ApiModelProperty;
-import java.util.List;
-import jakarta.validation.constraints.NotBlank;
-import jakarta.validation.constraints.NotEmpty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
+import jakarta.validation.constraints.NotBlank;
+import jakarta.validation.constraints.NotEmpty;
+import java.util.List;
/**
* 发送邮件时,接收参数的类
diff --git a/cutejava-springboot3/cutejava-module-system/src/main/java/cn/odboy/system/dal/model/request/SystemUpdateQuartzJobArgs.java b/cutejava-springboot3/cutejava-module-system/src/main/java/cn/odboy/system/dal/model/request/SystemUpdateQuartzJobArgs.java
index c568980c..dbe967f3 100644
--- a/cutejava-springboot3/cutejava-module-system/src/main/java/cn/odboy/system/dal/model/request/SystemUpdateQuartzJobArgs.java
+++ b/cutejava-springboot3/cutejava-module-system/src/main/java/cn/odboy/system/dal/model/request/SystemUpdateQuartzJobArgs.java
@@ -16,10 +16,10 @@
package cn.odboy.system.dal.model.request;
import cn.odboy.base.KitObject;
-import jakarta.validation.constraints.NotBlank;
-import jakarta.validation.constraints.NotNull;
import lombok.Data;
import lombok.EqualsAndHashCode;
+import jakarta.validation.constraints.NotBlank;
+import jakarta.validation.constraints.NotNull;
@Data
@EqualsAndHashCode(callSuper = false)
diff --git a/cutejava-springboot3/cutejava-module-system/src/main/java/cn/odboy/system/dal/model/request/SystemUserLoginArgs.java b/cutejava-springboot3/cutejava-module-system/src/main/java/cn/odboy/system/dal/model/request/SystemUserLoginArgs.java
index 1b629817..7ffa5127 100644
--- a/cutejava-springboot3/cutejava-module-system/src/main/java/cn/odboy/system/dal/model/request/SystemUserLoginArgs.java
+++ b/cutejava-springboot3/cutejava-module-system/src/main/java/cn/odboy/system/dal/model/request/SystemUserLoginArgs.java
@@ -16,9 +16,9 @@
package cn.odboy.system.dal.model.request;
import io.swagger.annotations.ApiModelProperty;
-import jakarta.validation.constraints.NotBlank;
import lombok.Getter;
import lombok.Setter;
+import jakarta.validation.constraints.NotBlank;
@Getter
@Setter
diff --git a/cutejava-springboot3/cutejava-module-system/src/main/java/cn/odboy/system/dal/model/response/SystemDeptVo.java b/cutejava-springboot3/cutejava-module-system/src/main/java/cn/odboy/system/dal/model/response/SystemDeptVo.java
index ae6dba88..e88f92b9 100644
--- a/cutejava-springboot3/cutejava-module-system/src/main/java/cn/odboy/system/dal/model/response/SystemDeptVo.java
+++ b/cutejava-springboot3/cutejava-module-system/src/main/java/cn/odboy/system/dal/model/response/SystemDeptVo.java
@@ -3,11 +3,11 @@ package cn.odboy.system.dal.model.response;
import cn.odboy.base.KitBaseUserTimeTb;
import cn.odboy.system.dal.dataobject.SystemRoleTb;
import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
import java.util.List;
import java.util.Objects;
import java.util.Set;
-import lombok.Getter;
-import lombok.Setter;
@Getter
@Setter
diff --git a/cutejava-springboot3/cutejava-module-system/src/main/java/cn/odboy/system/dal/model/response/SystemMenuRouterVo.java b/cutejava-springboot3/cutejava-module-system/src/main/java/cn/odboy/system/dal/model/response/SystemMenuRouterVo.java
index d98c65ff..e2303138 100644
--- a/cutejava-springboot3/cutejava-module-system/src/main/java/cn/odboy/system/dal/model/response/SystemMenuRouterVo.java
+++ b/cutejava-springboot3/cutejava-module-system/src/main/java/cn/odboy/system/dal/model/response/SystemMenuRouterVo.java
@@ -17,9 +17,9 @@ package cn.odboy.system.dal.model.response;
import cn.odboy.base.KitObject;
import io.swagger.annotations.ApiModelProperty;
-import java.util.List;
import lombok.Data;
import lombok.EqualsAndHashCode;
+import java.util.List;
/**
* 构建前端路由时用到
diff --git a/cutejava-springboot3/cutejava-module-system/src/main/java/cn/odboy/system/dal/model/response/SystemMenuVo.java b/cutejava-springboot3/cutejava-module-system/src/main/java/cn/odboy/system/dal/model/response/SystemMenuVo.java
index 597a02af..fbb7e339 100644
--- a/cutejava-springboot3/cutejava-module-system/src/main/java/cn/odboy/system/dal/model/response/SystemMenuVo.java
+++ b/cutejava-springboot3/cutejava-module-system/src/main/java/cn/odboy/system/dal/model/response/SystemMenuVo.java
@@ -3,11 +3,11 @@ package cn.odboy.system.dal.model.response;
import cn.odboy.base.KitBaseUserTimeTb;
import cn.odboy.system.dal.dataobject.SystemRoleTb;
import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
import java.util.List;
import java.util.Objects;
import java.util.Set;
-import lombok.Getter;
-import lombok.Setter;
@Getter
@Setter
diff --git a/cutejava-springboot3/cutejava-module-system/src/main/java/cn/odboy/system/dal/model/response/SystemProductLineTreeVo.java b/cutejava-springboot3/cutejava-module-system/src/main/java/cn/odboy/system/dal/model/response/SystemProductLineTreeVo.java
index 91527bee..417025d5 100644
--- a/cutejava-springboot3/cutejava-module-system/src/main/java/cn/odboy/system/dal/model/response/SystemProductLineTreeVo.java
+++ b/cutejava-springboot3/cutejava-module-system/src/main/java/cn/odboy/system/dal/model/response/SystemProductLineTreeVo.java
@@ -16,9 +16,9 @@
package cn.odboy.system.dal.model.response;
import cn.odboy.base.KitObject;
-import java.util.List;
import lombok.Getter;
import lombok.Setter;
+import java.util.List;
@Getter
@Setter
diff --git a/cutejava-springboot3/cutejava-module-system/src/main/java/cn/odboy/system/dal/model/response/SystemRoleVo.java b/cutejava-springboot3/cutejava-module-system/src/main/java/cn/odboy/system/dal/model/response/SystemRoleVo.java
index 88a34ce2..92eba2c6 100644
--- a/cutejava-springboot3/cutejava-module-system/src/main/java/cn/odboy/system/dal/model/response/SystemRoleVo.java
+++ b/cutejava-springboot3/cutejava-module-system/src/main/java/cn/odboy/system/dal/model/response/SystemRoleVo.java
@@ -5,10 +5,10 @@ import cn.odboy.system.constant.SystemDataScopeEnum;
import cn.odboy.system.dal.dataobject.SystemDeptTb;
import cn.odboy.system.dal.dataobject.SystemUserTb;
import io.swagger.annotations.ApiModelProperty;
-import java.util.Objects;
-import java.util.Set;
import lombok.Getter;
import lombok.Setter;
+import java.util.Objects;
+import java.util.Set;
@Getter
@Setter
diff --git a/cutejava-springboot3/cutejava-module-system/src/main/java/cn/odboy/system/dal/model/response/SystemSimpleUserVo.java b/cutejava-springboot3/cutejava-module-system/src/main/java/cn/odboy/system/dal/model/response/SystemSimpleUserVo.java
index fd60f0c1..4b2aef64 100644
--- a/cutejava-springboot3/cutejava-module-system/src/main/java/cn/odboy/system/dal/model/response/SystemSimpleUserVo.java
+++ b/cutejava-springboot3/cutejava-module-system/src/main/java/cn/odboy/system/dal/model/response/SystemSimpleUserVo.java
@@ -20,9 +20,9 @@ import cn.odboy.system.dal.dataobject.SystemDeptTb;
import cn.odboy.system.dal.dataobject.SystemJobTb;
import cn.odboy.system.dal.dataobject.SystemRoleTb;
import io.swagger.annotations.ApiModelProperty;
-import java.util.Set;
import lombok.Data;
import lombok.EqualsAndHashCode;
+import java.util.Set;
@Data
@EqualsAndHashCode(callSuper = false)
diff --git a/cutejava-springboot3/cutejava-module-system/src/main/java/cn/odboy/system/dal/model/response/SystemUserInfoVo.java b/cutejava-springboot3/cutejava-module-system/src/main/java/cn/odboy/system/dal/model/response/SystemUserInfoVo.java
index 1d435bc4..4d4a6bff 100644
--- a/cutejava-springboot3/cutejava-module-system/src/main/java/cn/odboy/system/dal/model/response/SystemUserInfoVo.java
+++ b/cutejava-springboot3/cutejava-module-system/src/main/java/cn/odboy/system/dal/model/response/SystemUserInfoVo.java
@@ -16,11 +16,11 @@
package cn.odboy.system.dal.model.response;
import cn.odboy.base.KitObject;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
import java.util.List;
import java.util.Set;
import java.util.stream.Collectors;
-import lombok.Data;
-import lombok.EqualsAndHashCode;
@Data
@EqualsAndHashCode(callSuper = false)
diff --git a/cutejava-springboot3/cutejava-module-system/src/main/java/cn/odboy/system/dal/model/response/SystemUserJwtVo.java b/cutejava-springboot3/cutejava-module-system/src/main/java/cn/odboy/system/dal/model/response/SystemUserJwtVo.java
index 9d47f2ef..5f9c064c 100644
--- a/cutejava-springboot3/cutejava-module-system/src/main/java/cn/odboy/system/dal/model/response/SystemUserJwtVo.java
+++ b/cutejava-springboot3/cutejava-module-system/src/main/java/cn/odboy/system/dal/model/response/SystemUserJwtVo.java
@@ -17,12 +17,12 @@ package cn.odboy.system.dal.model.response;
import com.alibaba.fastjson2.annotation.JSONField;
import io.swagger.annotations.ApiModelProperty;
-import java.util.List;
-import java.util.Set;
-import java.util.stream.Collectors;
import lombok.AllArgsConstructor;
import lombok.Getter;
import org.springframework.security.core.userdetails.UserDetails;
+import java.util.List;
+import java.util.Set;
+import java.util.stream.Collectors;
@Getter
@AllArgsConstructor
diff --git a/cutejava-springboot3/cutejava-module-system/src/main/java/cn/odboy/system/dal/model/response/SystemUserOnlineVo.java b/cutejava-springboot3/cutejava-module-system/src/main/java/cn/odboy/system/dal/model/response/SystemUserOnlineVo.java
index 90d0ad67..1d66b684 100644
--- a/cutejava-springboot3/cutejava-module-system/src/main/java/cn/odboy/system/dal/model/response/SystemUserOnlineVo.java
+++ b/cutejava-springboot3/cutejava-module-system/src/main/java/cn/odboy/system/dal/model/response/SystemUserOnlineVo.java
@@ -16,8 +16,8 @@
package cn.odboy.system.dal.model.response;
import io.swagger.annotations.ApiModelProperty;
-import java.util.Date;
import lombok.Data;
+import java.util.Date;
/**
* 在线用户
diff --git a/cutejava-springboot3/cutejava-module-system/src/main/java/cn/odboy/system/dal/model/response/SystemUserVo.java b/cutejava-springboot3/cutejava-module-system/src/main/java/cn/odboy/system/dal/model/response/SystemUserVo.java
index 12559de4..3aa00bfb 100644
--- a/cutejava-springboot3/cutejava-module-system/src/main/java/cn/odboy/system/dal/model/response/SystemUserVo.java
+++ b/cutejava-springboot3/cutejava-module-system/src/main/java/cn/odboy/system/dal/model/response/SystemUserVo.java
@@ -1,18 +1,18 @@
package cn.odboy.system.dal.model.response;
+import cn.odboy.base.KitBaseUserTimeTb;
import cn.odboy.system.dal.dataobject.SystemJobTb;
import cn.odboy.system.dal.dataobject.SystemRoleTb;
-import cn.odboy.system.dal.dataobject.SystemUserTb;
import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
import java.util.Date;
import java.util.Objects;
import java.util.Set;
-import lombok.Getter;
-import lombok.Setter;
@Getter
@Setter
-public class SystemUserVo extends SystemUserTb {
+public class SystemUserVo extends KitBaseUserTimeTb {
@ApiModelProperty(value = "ID", hidden = true)
private Long id;
diff --git a/cutejava-springboot3/cutejava-module-system/src/main/java/cn/odboy/system/dal/mysql/SystemDictDetailMapper.java b/cutejava-springboot3/cutejava-module-system/src/main/java/cn/odboy/system/dal/mysql/SystemDictDetailMapper.java
index 255f4607..7771e651 100644
--- a/cutejava-springboot3/cutejava-module-system/src/main/java/cn/odboy/system/dal/mysql/SystemDictDetailMapper.java
+++ b/cutejava-springboot3/cutejava-module-system/src/main/java/cn/odboy/system/dal/mysql/SystemDictDetailMapper.java
@@ -17,11 +17,13 @@ package cn.odboy.system.dal.mysql;
import cn.odboy.system.dal.dataobject.SystemDictDetailTb;
import cn.odboy.system.dal.model.request.SystemQueryDictDetailArgs;
+import cn.odboy.system.dal.model.response.SystemDictDetailVo;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
+import java.util.List;
/**
* 字典明细 Mapper
@@ -31,5 +33,7 @@ import org.apache.ibatis.annotations.Param;
@Mapper
public interface SystemDictDetailMapper extends BaseMapper {
- IPage selectPageByArgs(Page page, @Param("args") SystemQueryDictDetailArgs args);
+ IPage selectPageByArgs(Page page, @Param("args") SystemQueryDictDetailArgs args);
+
+ List listDictDetailByName(@Param("name") String name);
}
diff --git a/cutejava-springboot3/cutejava-module-system/src/main/java/cn/odboy/system/dal/mysql/SystemRoleDeptMapper.java b/cutejava-springboot3/cutejava-module-system/src/main/java/cn/odboy/system/dal/mysql/SystemRoleDeptMapper.java
index 9b568787..0d5740b4 100644
--- a/cutejava-springboot3/cutejava-module-system/src/main/java/cn/odboy/system/dal/mysql/SystemRoleDeptMapper.java
+++ b/cutejava-springboot3/cutejava-module-system/src/main/java/cn/odboy/system/dal/mysql/SystemRoleDeptMapper.java
@@ -15,9 +15,12 @@
*/
package cn.odboy.system.dal.mysql;
+import cn.odboy.system.dal.dataobject.SystemDeptTb;
import cn.odboy.system.dal.dataobject.SystemRoleDeptTb;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+import java.util.Set;
/**
* 角色部门关联 Mapper
@@ -27,4 +30,5 @@ import org.apache.ibatis.annotations.Mapper;
@Mapper
public interface SystemRoleDeptMapper extends BaseMapper {
+ Set listUserDeptByRoleId(@Param("roleId") Long roleId);
}
diff --git a/cutejava-springboot3/cutejava-module-system/src/main/java/cn/odboy/system/dal/mysql/SystemUserJobMapper.java b/cutejava-springboot3/cutejava-module-system/src/main/java/cn/odboy/system/dal/mysql/SystemUserJobMapper.java
index b43e280f..cb38efbc 100644
--- a/cutejava-springboot3/cutejava-module-system/src/main/java/cn/odboy/system/dal/mysql/SystemUserJobMapper.java
+++ b/cutejava-springboot3/cutejava-module-system/src/main/java/cn/odboy/system/dal/mysql/SystemUserJobMapper.java
@@ -15,9 +15,12 @@
*/
package cn.odboy.system.dal.mysql;
+import cn.odboy.system.dal.dataobject.SystemJobTb;
import cn.odboy.system.dal.dataobject.SystemUserJobTb;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+import java.util.Set;
/**
* 用户职位关联 Mapper
@@ -27,4 +30,5 @@ import org.apache.ibatis.annotations.Mapper;
@Mapper
public interface SystemUserJobMapper extends BaseMapper {
+ Set listUserJobByUserId(@Param("userId") Long userId);
}
diff --git a/cutejava-springboot3/cutejava-module-system/src/main/java/cn/odboy/system/dal/mysql/SystemUserMapper.java b/cutejava-springboot3/cutejava-module-system/src/main/java/cn/odboy/system/dal/mysql/SystemUserMapper.java
index 4bfdd651..1676257e 100644
--- a/cutejava-springboot3/cutejava-module-system/src/main/java/cn/odboy/system/dal/mysql/SystemUserMapper.java
+++ b/cutejava-springboot3/cutejava-module-system/src/main/java/cn/odboy/system/dal/mysql/SystemUserMapper.java
@@ -18,8 +18,8 @@ package cn.odboy.system.dal.mysql;
import cn.odboy.system.dal.dataobject.SystemUserTb;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
-import java.util.Set;
import org.apache.ibatis.annotations.Mapper;
+import java.util.Set;
/**
* 用户 Mapper
diff --git a/cutejava-springboot3/cutejava-module-system/src/main/java/cn/odboy/system/dal/mysql/SystemUserRoleMapper.java b/cutejava-springboot3/cutejava-module-system/src/main/java/cn/odboy/system/dal/mysql/SystemUserRoleMapper.java
index 0a0ecf66..d3937f9c 100644
--- a/cutejava-springboot3/cutejava-module-system/src/main/java/cn/odboy/system/dal/mysql/SystemUserRoleMapper.java
+++ b/cutejava-springboot3/cutejava-module-system/src/main/java/cn/odboy/system/dal/mysql/SystemUserRoleMapper.java
@@ -15,11 +15,15 @@
*/
package cn.odboy.system.dal.mysql;
+import cn.odboy.system.dal.dataobject.SystemRoleTb;
import cn.odboy.system.dal.dataobject.SystemUserRoleTb;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+import java.util.Set;
@Mapper
public interface SystemUserRoleMapper extends BaseMapper {
+ Set listUserRoleByUserId(@Param("userId") Long userId);
}
diff --git a/cutejava-springboot3/cutejava-module-system/src/main/java/cn/odboy/system/dal/redis/SystemUserOnlineInfoDAO.java b/cutejava-springboot3/cutejava-module-system/src/main/java/cn/odboy/system/dal/redis/SystemUserOnlineInfoDAO.java
index f172386c..88a7990e 100644
--- a/cutejava-springboot3/cutejava-module-system/src/main/java/cn/odboy/system/dal/redis/SystemUserOnlineInfoDAO.java
+++ b/cutejava-springboot3/cutejava-module-system/src/main/java/cn/odboy/system/dal/redis/SystemUserOnlineInfoDAO.java
@@ -15,17 +15,17 @@ import cn.odboy.util.KitIPUtil;
import cn.odboy.util.KitPageUtil;
import cn.odboy.util.xlsx.KitExcelExporter;
import com.baomidou.mybatisplus.core.metadata.IPage;
+import lombok.AllArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Component;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletResponse;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Date;
import java.util.List;
import java.util.Set;
import java.util.concurrent.TimeUnit;
-import jakarta.servlet.http.HttpServletRequest;
-import jakarta.servlet.http.HttpServletResponse;
-import lombok.AllArgsConstructor;
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.stereotype.Component;
@Slf4j
@Component
@@ -62,7 +62,7 @@ public class SystemUserOnlineInfoDAO {
userOnlineVo.setKey(KitDesEncryptUtil.desEncrypt(token));
userOnlineVo.setLoginTime(new Date());
} catch (Exception e) {
- log.error(e.getMessage(), e);
+ log.error("保存在线用户信息失败", e);
}
String loginKey = tokenProvider.loginKey(token);
redisHelper.set(loginKey, userOnlineVo, properties.getJwt().getTokenValidityInSeconds(), TimeUnit.MILLISECONDS);
diff --git a/cutejava-springboot3/cutejava-module-system/src/main/java/cn/odboy/system/service/SystemAuthService.java b/cutejava-springboot3/cutejava-module-system/src/main/java/cn/odboy/system/service/SystemAuthService.java
index 5d3cc43a..feb4c08b 100644
--- a/cutejava-springboot3/cutejava-module-system/src/main/java/cn/odboy/system/service/SystemAuthService.java
+++ b/cutejava-springboot3/cutejava-module-system/src/main/java/cn/odboy/system/service/SystemAuthService.java
@@ -22,68 +22,82 @@ import org.springframework.security.core.context.SecurityContextHolder;
import org.springframework.security.crypto.password.PasswordEncoder;
import org.springframework.stereotype.Service;
+/**
+ * 用户认证
+ */
@Service
public class SystemAuthService {
- @Autowired
- private AppProperties properties;
- @Autowired
- private SystemUserOnlineInfoDAO systemUserOnlineInfoDAO;
- @Autowired
- private TokenProvider tokenProvider;
- @Autowired
- private PasswordEncoder passwordEncoder;
- @Autowired
- private UserDetailsHandler userDetailsService;
- @Autowired
- private SystemCaptchaService systemCaptchaService;
+ @Autowired
+ private AppProperties properties;
+ @Autowired
+ private SystemUserOnlineInfoDAO systemUserOnlineInfoDAO;
+ @Autowired
+ private TokenProvider tokenProvider;
+ @Autowired
+ private PasswordEncoder passwordEncoder;
+ @Autowired
+ private UserDetailsHandler userDetailsService;
+ @Autowired
+ private SystemCaptchaService systemCaptchaService;
- public SystemAuthVo doLogin(SystemUserLoginArgs loginArgs, HttpServletRequest request) throws Exception {
- KitValidUtil.notNull(loginArgs);
+ /**
+ * 登录 -> TestPassed
+ */
+ public SystemAuthVo doLogin(SystemUserLoginArgs loginArgs, HttpServletRequest request) throws Exception {
+ KitValidUtil.notNull(loginArgs);
- // 密码解密
- String password = KitRsaEncryptUtil.decryptByPrivateKey(properties.getRsa().getPrivateKey(), loginArgs.getPassword());
- // 校验验证码
- systemCaptchaService.validate(loginArgs.getUuid(), loginArgs.getCode());
- // 获取用户信息
- SystemUserJwtVo jwtUser = userDetailsService.loadUserByUsername(loginArgs.getUsername());
- // 验证用户密码
- if (!passwordEncoder.matches(password, jwtUser.getPassword())) {
- throw new BadRequestException("登录密码错误");
+ // 密码解密
+ String password =
+ KitRsaEncryptUtil.decryptByPrivateKey(properties.getRsa().getPrivateKey(), loginArgs.getPassword());
+ // 校验验证码
+ systemCaptchaService.validate(loginArgs.getUuid(), loginArgs.getCode());
+ // 获取用户信息
+ SystemUserJwtVo jwtUser = userDetailsService.loadUserByUsername(loginArgs.getUsername());
+ // 验证用户密码
+ if (!passwordEncoder.matches(password, jwtUser.getPassword())) {
+ throw new BadRequestException("登录密码错误");
+ }
+
+ // 登录验证
+ Authentication authentication =
+ new UsernamePasswordAuthenticationToken(jwtUser, null, jwtUser.getAuthorities());
+ SecurityContextHolder.getContext().setAuthentication(authentication);
+
+ // 生成令牌
+ String token = tokenProvider.createToken(jwtUser);
+ // 返回 token 与 用户信息
+ SystemAuthVo authInfo = new SystemAuthVo();
+ authInfo.setToken(String.format("%s %s", SystemConst.TOKEN_PREFIX, token));
+ /// 这里是为了清空密码
+ authInfo.setUser(KitBeanUtil.copyToClass(jwtUser, SystemUserInfoVo.class));
+
+ if (properties.getLogin().isSingle()) {
+ // 踢掉之前已经登录的token
+ systemUserOnlineInfoDAO.kickOutByUsername(loginArgs.getUsername());
+ }
+ // 保存在线信息
+ systemUserOnlineInfoDAO.saveUserJwtModelByToken(jwtUser, token, request);
+ // 返回登录信息
+ return authInfo;
}
- // 登录验证
- Authentication authentication = new UsernamePasswordAuthenticationToken(jwtUser, null, jwtUser.getAuthorities());
- SecurityContextHolder.getContext().setAuthentication(authentication);
-
- // 生成令牌
- String token = tokenProvider.createToken(jwtUser);
- // 返回 token 与 用户信息
- SystemAuthVo authInfo = new SystemAuthVo();
- authInfo.setToken(String.format("%s %s", SystemConst.TOKEN_PREFIX, token));
- /// 这里是为了清空密码
- authInfo.setUser(KitBeanUtil.copyToClass(jwtUser, SystemUserInfoVo.class));
-
- if (properties.getLogin().isSingle()) {
- // 踢掉之前已经登录的token
- systemUserOnlineInfoDAO.kickOutByUsername(loginArgs.getUsername());
+ /**
+ * 获取当前登录人信息 -> TestPassed
+ */
+ public SystemUserJwtVo getCurrentUserInfo() {
+ SystemUserJwtVo jwtUser = (SystemUserJwtVo)KitSecurityHelper.getCurrentUser();
+ if (jwtUser.getUser() != null) {
+ jwtUser.getUser().setPassword(null);
+ }
+ return jwtUser;
}
- // 保存在线信息
- systemUserOnlineInfoDAO.saveUserJwtModelByToken(jwtUser, token, request);
- // 返回登录信息
- return authInfo;
- }
- public SystemUserJwtVo getCurrentUserInfo() {
- SystemUserJwtVo jwtUser = (SystemUserJwtVo) KitSecurityHelper.getCurrentUser();
- if (jwtUser.getUser() != null) {
- jwtUser.getUser().setPassword(null);
+ /**
+ * 退出登录 -> TestPassed
+ */
+ public void doLogout(HttpServletRequest request) {
+ String token = tokenProvider.getToken(request);
+ systemUserOnlineInfoDAO.logoutByToken(token);
}
- return jwtUser;
- }
-
- public void doLogout(HttpServletRequest request) {
- String token = tokenProvider.getToken(request);
- systemUserOnlineInfoDAO.logoutByToken(token);
- }
}
diff --git a/cutejava-springboot3/cutejava-module-system/src/main/java/cn/odboy/system/service/SystemCaptchaService.java b/cutejava-springboot3/cutejava-module-system/src/main/java/cn/odboy/system/service/SystemCaptchaService.java
index 1de7cbcd..2a6776e3 100644
--- a/cutejava-springboot3/cutejava-module-system/src/main/java/cn/odboy/system/service/SystemCaptchaService.java
+++ b/cutejava-springboot3/cutejava-module-system/src/main/java/cn/odboy/system/service/SystemCaptchaService.java
@@ -10,9 +10,9 @@ import cn.odboy.framework.redis.KitRedisHelper;
import cn.odboy.system.dal.model.response.SystemCaptchaVo;
import cn.odboy.system.dal.redis.SystemCacheKey;
import com.wf.captcha.base.Captcha;
-import java.util.concurrent.TimeUnit;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
+import java.util.concurrent.TimeUnit;
/**
* 验证码
@@ -20,40 +20,50 @@ import org.springframework.stereotype.Service;
@Service
public class SystemCaptchaService {
- @Autowired
- private KitRedisHelper redisHelper;
- @Autowired
- private AppProperties properties;
+ @Autowired
+ private KitRedisHelper redisHelper;
+ @Autowired
+ private AppProperties properties;
- public SystemCaptchaVo getLoginCaptcha() {
- // 获取运算的结果
- Captcha captcha = properties.getLogin().getCaptchaSetting().getCaptcha();
- String uuid = SystemCacheKey.CAPTCHA_LOGIN + IdUtil.simpleUUID();
- //当验证码类型为 arithmetic时且长度 >= 2 时, captcha.text()的结果有几率为浮点型
- String captchaValue = captcha.text();
- if (captcha.getCharType() - 1 == CaptchaCodeEnum.ARITHMETIC.ordinal() &&
- captchaValue.contains(SystemConst.SYMBOL_DOT)) {
- captchaValue = captchaValue.split("\\.")[0];
+ /**
+ * 获取登录验证码 -> TestPassed
+ */
+ public SystemCaptchaVo getLoginCaptcha() {
+ // 获取运算的结果
+ Captcha captcha = properties.getLogin().getCaptchaSetting().getCaptcha();
+ String uuid = SystemCacheKey.CAPTCHA_LOGIN + IdUtil.simpleUUID();
+ //当验证码类型为 arithmetic时且长度 >= 2 时, captcha.text()的结果有几率为浮点型
+ String captchaValue = captcha.text();
+ if (captcha.getCharType() - 1 == CaptchaCodeEnum.ARITHMETIC.ordinal() && captchaValue.contains(
+ SystemConst.SYMBOL_DOT)) {
+ captchaValue = captchaValue.split("\\.")[0];
+ }
+ // 保存
+ redisHelper.set(uuid, captchaValue, properties.getLogin().getCaptchaSetting().getExpiration(),
+ TimeUnit.MINUTES);
+ // 验证码信息
+ SystemCaptchaVo captchaVo = new SystemCaptchaVo();
+ captchaVo.setUuid(uuid);
+ captchaVo.setImg(captcha.toBase64());
+ return captchaVo;
}
- // 保存
- redisHelper.set(uuid, captchaValue, properties.getLogin().getCaptchaSetting().getExpiration(), TimeUnit.MINUTES);
- // 验证码信息
- SystemCaptchaVo captchaVo = new SystemCaptchaVo();
- captchaVo.setUuid(uuid);
- captchaVo.setImg(captcha.toBase64());
- return captchaVo;
- }
- public void validate(String uuid, String inputCode) {
- // 查询验证码
- String code = redisHelper.get(uuid, String.class);
- if (StrUtil.isBlank(code)) {
- throw new BadRequestException("验证码不存在或已过期");
+ /**
+ * 验证验证码 -> TestPassed
+ *
+ * @param uuid 验证码uuid
+ * @param inputCode 用户输入的验证码
+ */
+ public void validate(String uuid, String inputCode) {
+ // 查询验证码
+ String code = redisHelper.get(uuid, String.class);
+ if (StrUtil.isBlank(code)) {
+ throw new BadRequestException("验证码不存在或已过期");
+ }
+ // 清除验证码
+ redisHelper.del(uuid);
+ if (StrUtil.isBlank(inputCode) || !code.equalsIgnoreCase(inputCode)) {
+ throw new BadRequestException("验证码错误");
+ }
}
- // 清除验证码
- redisHelper.del(uuid);
- if (StrUtil.isBlank(inputCode) || !code.equalsIgnoreCase(inputCode)) {
- throw new BadRequestException("验证码错误");
- }
- }
}
diff --git a/cutejava-springboot3/cutejava-module-system/src/main/java/cn/odboy/system/service/SystemDataService.java b/cutejava-springboot3/cutejava-module-system/src/main/java/cn/odboy/system/service/SystemDataService.java
index caf6a3b6..fa552094 100644
--- a/cutejava-springboot3/cutejava-module-system/src/main/java/cn/odboy/system/service/SystemDataService.java
+++ b/cutejava-springboot3/cutejava-module-system/src/main/java/cn/odboy/system/service/SystemDataService.java
@@ -18,74 +18,80 @@ package cn.odboy.system.service;
import cn.hutool.core.collection.CollUtil;
import cn.odboy.system.constant.SystemDataScopeEnum;
import cn.odboy.system.dal.dataobject.SystemDeptTb;
-import cn.odboy.system.dal.model.response.SystemDeptVo;
-import cn.odboy.system.dal.model.response.SystemRoleVo;
+import cn.odboy.system.dal.dataobject.SystemRoleTb;
import cn.odboy.system.dal.model.response.SystemUserVo;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Objects;
-import java.util.stream.Collectors;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+import java.util.Objects;
+import java.util.Set;
+import java.util.stream.Collectors;
/**
- * 数据权限 Service
+ * 数据权限
*
* @author odboy
*/
@Service
public class SystemDataService {
- @Autowired
- private SystemUserRoleService systemUserRoleService;
- @Autowired
- private SystemDeptService systemDeptService;
- @Autowired
- private SystemRoleDeptService systemRoleDeptService;
+ @Autowired
+ private SystemUserRoleService systemUserRoleService;
+ @Autowired
+ private SystemDeptService systemDeptService;
+ @Autowired
+ private SystemRoleDeptService systemRoleDeptService;
- /**
- * 获取数据权限
- *
- * @param user /
- * @return /
- */
- public List queryDeptIdByArgs(SystemUserVo user) {
- List deptIds = new ArrayList<>();
- // 查询用户角色
- List roleList = systemUserRoleService.queryRoleByUsersId(user.getId());
- // 获取对应的部门ID
- for (SystemRoleVo role : roleList) {
- SystemDataScopeEnum dataScopeEnum = SystemDataScopeEnum.find(role.getDataScope());
- switch (Objects.requireNonNull(dataScopeEnum)) {
- case THIS_LEVEL:
- deptIds.add(user.getDept().getId());
- break;
- case CUSTOMIZE:
- deptIds.addAll(this.queryCustomDataPermissionByArgs(deptIds, role));
- break;
- default:
- return new ArrayList<>();
- }
+ /**
+ * 获取数据权限 -> TestPassed
+ *
+ * @param user /
+ * @return /
+ */
+ public List queryDeptIdByArgs(SystemUserVo user) {
+ List deptIds = new ArrayList<>();
+ // 查询用户角色
+ Set roleList = systemUserRoleService.listUserRoleByUserId(user.getId());
+ // 获取对应的部门ID
+ for (SystemRoleTb role : roleList) {
+ SystemDataScopeEnum dataScopeEnum = SystemDataScopeEnum.find(role.getDataScope());
+ switch (Objects.requireNonNull(dataScopeEnum)) {
+ case THIS_LEVEL:
+ Long currentDeptId = user.getDept().getId();
+ deptIds.add(currentDeptId);
+ break;
+ case CUSTOMIZE:
+ // 优化 283ms -> 51 ms
+ List customDeptIds = this.queryCustomDataPermissionByArgs(deptIds, role.getId());
+ deptIds.addAll(customDeptIds);
+ break;
+ default:
+ return new ArrayList<>();
+ }
+ }
+ return deptIds.stream().distinct().collect(Collectors.toList());
}
- return deptIds.stream().distinct().collect(Collectors.toList());
- }
- /**
- * 获取自定义的数据权限
- *
- * @param deptIds 部门ID
- * @param role 角色
- * @return 数据权限ID
- */
- private List queryCustomDataPermissionByArgs(List deptIds, SystemRoleVo role) {
- List deptList = systemRoleDeptService.listDeptByRoleId(role.getId());
- for (SystemDeptTb dept : deptList) {
- deptIds.add(dept.getId());
- List deptChildren = systemDeptService.listDeptByPid(dept.getId());
- if (CollUtil.isNotEmpty(deptChildren)) {
- deptIds.addAll(systemDeptService.queryChildDeptIdByDeptIds(deptChildren));
- }
+ /**
+ * 获取自定义的数据权限 -> TestPassed
+ *
+ * @param deptIds 部门ID(外部数据)
+ * @param roleId 角色ID
+ * @return 数据权限ID(所有部门ID数据)
+ */
+ private List queryCustomDataPermissionByArgs(List deptIds, Long roleId) {
+ Set deptList = systemRoleDeptService.listUserDeptByRoleId(roleId);
+ Map> deptPidMap =
+ systemDeptService.listPidNonNull().stream().collect(Collectors.groupingBy(SystemDeptTb::getPid));
+ for (SystemDeptTb dept : deptList) {
+ deptIds.add(dept.getId());
+ List deptChildren = deptPidMap.getOrDefault(dept.getId(), null);
+ if (CollUtil.isNotEmpty(deptChildren)) {
+ deptIds.addAll(systemDeptService.queryChildDeptIdByDeptIds(deptChildren, deptPidMap));
+ }
+ }
+ return deptIds;
}
- return deptIds;
- }
}
diff --git a/cutejava-springboot3/cutejava-module-system/src/main/java/cn/odboy/system/service/SystemDeptService.java b/cutejava-springboot3/cutejava-module-system/src/main/java/cn/odboy/system/service/SystemDeptService.java
index 53f10b1d..f784329f 100644
--- a/cutejava-springboot3/cutejava-module-system/src/main/java/cn/odboy/system/service/SystemDeptService.java
+++ b/cutejava-springboot3/cutejava-module-system/src/main/java/cn/odboy/system/service/SystemDeptService.java
@@ -16,7 +16,6 @@
package cn.odboy.system.service;
import cn.hutool.core.collection.CollUtil;
-import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
import cn.odboy.base.KitPageResult;
@@ -37,6 +36,10 @@ import cn.odboy.util.KitClassUtil;
import cn.odboy.util.KitValidUtil;
import cn.odboy.util.xlsx.KitExcelExporter;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import jakarta.servlet.http.HttpServletResponse;
import java.lang.reflect.Field;
import java.util.ArrayList;
import java.util.Collections;
@@ -48,439 +51,458 @@ import java.util.Map;
import java.util.Set;
import java.util.function.Function;
import java.util.stream.Collectors;
-import jakarta.servlet.http.HttpServletResponse;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
-import org.springframework.transaction.annotation.Transactional;
@Service
public class SystemDeptService {
- @Autowired
- private SystemDeptMapper systemDeptMapper;
- @Autowired
- private SystemUserDeptService systemUserDeptService;
- @Autowired
- private SystemRoleDeptService systemRoleDeptService;
+ @Autowired
+ private SystemDeptMapper systemDeptMapper;
+ @Autowired
+ private SystemUserDeptService systemUserDeptService;
+ @Autowired
+ private SystemRoleDeptService systemRoleDeptService;
- /**
- * 创建
- *
- * @param args /
- */
- @Transactional(rollbackFor = Exception.class)
- public void saveDept(SystemCreateDeptArgs args) {
- KitValidUtil.notNull(args);
- systemDeptMapper.insert(KitBeanUtil.copyToClass(args, SystemDeptTb.class));
- this.updateDeptSubCnt(args.getPid());
- }
+ /**
+ * 创建 -> TestPassed
+ *
+ * @param args /
+ */
+ @Transactional(rollbackFor = Exception.class)
+ public void saveDept(SystemCreateDeptArgs args) {
+ KitValidUtil.notNull(args);
- /**
- * 编辑
- *
- * @param args /
- */
- @Transactional(rollbackFor = Exception.class)
- public void updateDeptById(SystemDeptTb args) {
- KitValidUtil.notNull(args);
- // 旧的父部门
- Long oldPid = this.getDeptVoById(args.getId()).getPid();
- // 新的父部门
- Long newPid = args.getPid();
- if (args.getPid() != null && args.getId().equals(args.getPid())) {
- throw new BadRequestException("上级不能为自己");
+ SystemDeptTb record = KitBeanUtil.copyToClass(args, SystemDeptTb.class);
+ systemDeptMapper.insert(record);
+
+ this.updateDeptSubCnt(args.getPid());
}
- SystemDeptTb dept = systemDeptMapper.selectById(args.getId());
- args.setId(dept.getId());
- systemDeptMapper.insertOrUpdate(args);
- this.updateDeptSubCnt(oldPid);
- this.updateDeptSubCnt(newPid);
- }
- /**
- * 删除
- *
- * @param ids /
- */
- @Transactional(rollbackFor = Exception.class)
- public void deleteDeptByIds(Set ids) {
- // 获取部门, 和其所有子部门
- Set depts = this.traverseDeptByIdWithPids(ids);
- // 验证是否被角色或用户关联
- this.verifyBindRelationByIds(depts);
- for (SystemDeptVo dept : depts) {
- systemDeptMapper.deleteById(dept.getId());
- this.updateDeptSubCnt(dept.getPid());
- }
- }
-
- /**
- * 更新父节点中子节点数目
- *
- * @param deptId /
- */
- @Transactional(rollbackFor = Exception.class)
- public void updateDeptSubCnt(Long deptId) {
- if (deptId != null) {
- long count = this.countDeptByPid(deptId);
- systemDeptMapper.updateDeptSubCountById(count, deptId);
- }
- }
-
- private long countDeptByPid(Long pid) {
- LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>();
- wrapper.eq(SystemDeptTb::getPid, pid);
- return systemDeptMapper.selectCount(wrapper);
- }
-
- /**
- * 筛选出 list 中没有父部门(即 pid 不在其他部门 id 列表中的部门)的部门列表
- */
- private List deduplication(List list) {
- List deptList = new ArrayList<>();
- // 使用 Set 存储所有部门的 id
- Set idSet = list.stream().map(SystemDeptTb::getId).collect(Collectors.toSet());
- // 遍历部门列表, 筛选出没有父部门的部门
- for (SystemDeptTb dept : list) {
- if (!idSet.contains(dept.getPid())) {
- deptList.add(dept);
- }
- }
- return deptList;
- }
-
- private List queryDeptByArgs(SystemQueryDeptArgs args) {
- KitValidUtil.notNull(args);
- LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>();
- wrapper.in(CollUtil.isNotEmpty(args.getIds()), SystemDeptTb::getId, args.getIds());
- wrapper.like(StrUtil.isNotBlank(args.getName()), SystemDeptTb::getName, args.getName());
- wrapper.eq(args.getEnabled() != null, SystemDeptTb::getEnabled, args.getEnabled());
- wrapper.eq(args.getPid() != null, SystemDeptTb::getPid, args.getPid());
- wrapper.isNull(args.getPidIsNull() != null, SystemDeptTb::getPid);
- if (CollUtil.isNotEmpty(args.getCreateTime()) && args.getCreateTime().size() >= 2) {
- wrapper.between(SystemDeptTb::getCreateTime, args.getCreateTime().get(0),
- args.getCreateTime().get(1));
- }
- wrapper.orderByAsc(SystemDeptTb::getDeptSort);
- return systemDeptMapper.selectList(wrapper);
- }
-
- /**
- * 查询所有数据
- *
- * @param args 条件
- * @param isQuery /
- * @return /
- * @throws Exception /
- */
- public List queryAllDeptByArgs(SystemQueryDeptArgs args, Boolean isQuery) throws Exception {
- String dataScopeType = KitSecurityHelper.getDataScopeType();
- if (isQuery) {
- if (dataScopeType.equals(SystemDataScopeEnum.ALL.getValue())) {
- args.setPidIsNull(true);
- }
- List fields = KitClassUtil.getAllFields(args.getClass(), new ArrayList<>());
- List fieldNames = new ArrayList<>() {{
- add("pidIsNull");
- add("enabled");
- }};
- for (Field field : fields) {
- // 设置对象的访问权限, 保证对private的属性的访问
- field.setAccessible(true);
- Object val = field.get(args);
- if (fieldNames.contains(field.getName())) {
- continue;
+ /**
+ * 编辑 -> TestPassed
+ *
+ * @param args /
+ */
+ @Transactional(rollbackFor = Exception.class)
+ public void updateDeptById(SystemDeptTb args) {
+ KitValidUtil.notNull(args);
+ // 旧的父部门
+ Long oldPid = this.getDeptById(args.getId()).getPid();
+ // 新的父部门
+ Long newPid = args.getPid();
+ if (args.getPid() != null && args.getId().equals(args.getPid())) {
+ throw new BadRequestException("上级不能为自己");
}
- if (ObjectUtil.isNotNull(val)) {
- args.setPidIsNull(null);
- break;
+ SystemDeptTb dept = systemDeptMapper.selectById(args.getId());
+ args.setId(dept.getId());
+ systemDeptMapper.updateById(args);
+ this.updateDeptSubCnt(oldPid);
+ this.updateDeptSubCnt(newPid);
+ }
+
+ /**
+ * 根据部门id获取部门信息 -> TestPassed
+ *
+ * @param id 部门id
+ * @return /
+ */
+ private SystemDeptTb getDeptById(Long id) {
+ return systemDeptMapper.selectById(id);
+ }
+
+ /**
+ * 删除
+ *
+ * @param ids /
+ */
+ @Transactional(rollbackFor = Exception.class)
+ public void deleteDeptByIds(Set ids) {
+ // 获取部门, 和其所有子部门
+ Set depts = this.traverseDeptByIdWithPids(ids);
+ // 验证是否被角色或用户关联
+ this.verifyBindRelationByIds(depts);
+ for (SystemDeptVo dept : depts) {
+ systemDeptMapper.deleteById(dept.getId());
+ this.updateDeptSubCnt(dept.getPid());
}
- }
}
- // 数据权限
- args.setIds(KitSecurityHelper.getCurrentUserDataScope());
- List list = this.queryDeptByArgs(args);
- // 如果为空, 就代表为自定义权限或者本级权限, 就需要去重, 不理解可以注释掉,看查询结果
- if (StrUtil.isBlank(dataScopeType)) {
- return this.deduplication(list);
- }
- return list;
- }
- /**
- * 根据ID查询
- *
- * @param id /
- * @return /
- */
- public SystemDeptVo getDeptVoById(Long id) {
- return KitBeanUtil.copyToClass(systemDeptMapper.selectById(id), SystemDeptVo.class);
- }
-
- /**
- * 获取部门下所有关联的部门
- *
- * @param deptTbList /
- * @param depts /
- */
- private void queryRelationDeptByArgs(List deptTbList, Set depts) {
- for (SystemDeptVo dept : deptTbList) {
- depts.add(dept);
- List deptList = this.listDeptByPid(dept.getId());
- if (CollUtil.isNotEmpty(deptList)) {
- queryRelationDeptByArgs(deptList, depts);
- }
- }
- }
-
- public List queryChildDeptIdByDeptIds(List deptList) {
- List list = new ArrayList<>();
- for (SystemDeptVo systemDeptTb : deptList) {
- if (systemDeptTb != null && systemDeptTb.getEnabled()) {
- List deptList1 = this.listDeptByPid(systemDeptTb.getId());
- if (CollUtil.isNotEmpty(deptList1)) {
- list.addAll(queryChildDeptIdByDeptIds(deptList1));
+ /**
+ * 更新父节点中子节点数目 -> TestPassed
+ *
+ * @param deptId /
+ */
+ @Transactional(rollbackFor = Exception.class)
+ public void updateDeptSubCnt(Long deptId) {
+ if (deptId != null) {
+ long count = this.countDeptByPid(deptId);
+ systemDeptMapper.updateDeptSubCountById(count, deptId);
}
- list.add(systemDeptTb.getId());
- }
}
- return list;
- }
- /**
- * 根据ID获取同级与上级数据
- *
- * @param dept /
- * @param deptList /
- * @return /
- */
- private List querySuperiorDeptByPid(SystemDeptVo dept, List deptList) {
- if (dept.getPid() == null) {
- deptList.addAll(this.listRootDept());
- return deptList;
+ private long countDeptByPid(Long pid) {
+ LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>();
+ wrapper.eq(SystemDeptTb::getPid, pid);
+ return systemDeptMapper.selectCount(wrapper);
}
- deptList.addAll(this.listDeptByPid(dept.getPid()));
- return querySuperiorDeptByPid(this.getDeptVoById(dept.getPid()), deptList);
- }
- private List listRootDept() {
- LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>();
- wrapper.isNull(SystemDeptTb::getPid);
- return KitBeanUtil.copyToList(systemDeptMapper.selectList(wrapper), SystemDeptVo.class);
- }
-
- /**
- * 构建树形数据
- *
- * @return /
- */
- public KitPageResult searchDeptTree(List ids, Boolean exclude) {
- Set deptSet1 = new LinkedHashSet<>();
- for (Long id : ids) {
- // 同级数据
- SystemDeptVo dept = this.getDeptVoById(id);
- // 上级数据
- List depts = this.querySuperiorDeptByPid(dept, new ArrayList<>());
- if (exclude) {
- for (SystemDeptVo data : depts) {
- if (data.getId().equals(dept.getPid())) {
- data.setSubCount(data.getSubCount() - 1);
- }
+ /**
+ * 筛选出 list 中没有父部门(即 pid 不在其他部门 id 列表中的部门)的部门列表
+ */
+ private List deduplication(List list) {
+ List deptList = new ArrayList<>();
+ // 使用 Set 存储所有部门的 id
+ Set idSet = list.stream().map(SystemDeptTb::getId).collect(Collectors.toSet());
+ // 遍历部门列表, 筛选出没有父部门的部门
+ for (SystemDeptTb dept : list) {
+ if (!idSet.contains(dept.getPid())) {
+ deptList.add(dept);
+ }
}
- // 编辑部门时不显示自己以及自己下级的数据, 避免出现PID数据环形问题
- depts = depts.stream().filter(i -> !ids.contains(i.getId())).collect(Collectors.toList());
- }
- deptSet1.addAll(depts);
+ return deptList;
}
- List deptList = new ArrayList<>(deptSet1);
- // 构建部门树
- Set trees = new LinkedHashSet<>();
- Set deptSet = new LinkedHashSet<>();
- List deptNames = deptList.stream().map(SystemDeptVo::getName).collect(Collectors.toList());
- boolean isChild;
- for (SystemDeptVo dept : deptList) {
- isChild = false;
- if (dept.getPid() == null) {
- trees.add(dept);
- }
- for (SystemDeptVo it : deptList) {
- if (it.getPid() != null && dept.getId().equals(it.getPid())) {
- isChild = true;
- if (dept.getChildren() == null) {
- dept.setChildren(new ArrayList<>());
- }
- dept.getChildren().add(it);
+
+ private List queryDeptByArgs(SystemQueryDeptArgs args) {
+ KitValidUtil.notNull(args);
+ LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>();
+ wrapper.in(CollUtil.isNotEmpty(args.getIds()), SystemDeptTb::getId, args.getIds());
+ wrapper.like(StrUtil.isNotBlank(args.getName()), SystemDeptTb::getName, args.getName());
+ wrapper.eq(args.getEnabled() != null, SystemDeptTb::getEnabled, args.getEnabled());
+ wrapper.eq(args.getPid() != null, SystemDeptTb::getPid, args.getPid());
+ wrapper.isNull(args.getPidIsNull() != null, SystemDeptTb::getPid);
+ if (CollUtil.isNotEmpty(args.getCreateTime()) && args.getCreateTime().size() >= 2) {
+ wrapper.between(SystemDeptTb::getCreateTime, args.getCreateTime().get(0), args.getCreateTime().get(1));
}
- }
- if (isChild) {
- deptSet.add(dept);
- } else if (dept.getPid() != null && !deptNames.contains(this.getDeptVoById(dept.getPid()).getName())) {
- deptSet.add(dept);
- }
+ wrapper.orderByAsc(SystemDeptTb::getDeptSort);
+ return systemDeptMapper.selectList(wrapper);
}
- if (CollectionUtil.isEmpty(trees)) {
- trees = deptSet;
+
+ /**
+ * 查询所有数据
+ *
+ * @param args 条件
+ * @param isQuery /
+ * @return /
+ * @throws Exception /
+ */
+ public List queryAllDeptByArgs(SystemQueryDeptArgs args, Boolean isQuery) throws Exception {
+ String dataScopeType = KitSecurityHelper.getDataScopeType();
+ if (isQuery) {
+ if (dataScopeType.equals(SystemDataScopeEnum.ALL.getValue())) {
+ args.setPidIsNull(true);
+ }
+ List fields = KitClassUtil.getAllFields(args.getClass(), new ArrayList<>());
+ List fieldNames = new ArrayList<>() {{
+ add("pidIsNull");
+ add("enabled");
+ }};
+ for (Field field : fields) {
+ // 设置对象的访问权限, 保证对private的属性的访问
+ field.setAccessible(true);
+ Object val = field.get(args);
+ if (fieldNames.contains(field.getName())) {
+ continue;
+ }
+ if (ObjectUtil.isNotNull(val)) {
+ args.setPidIsNull(null);
+ break;
+ }
+ }
+ }
+ // 数据权限
+ args.setIds(KitSecurityHelper.getCurrentUserDataScope());
+ List list = this.queryDeptByArgs(args);
+ // 如果为空, 就代表为自定义权限或者本级权限, 就需要去重, 不理解可以注释掉,看查询结果
+ if (StrUtil.isBlank(dataScopeType)) {
+ return this.deduplication(list);
+ }
+ return list;
}
- KitPageResult baseResult = new KitPageResult<>();
- baseResult.setContent(CollectionUtil.isEmpty(trees) ? new ArrayList<>(deptSet) : new ArrayList<>(trees));
- baseResult.setTotalElements(deptSet.size());
- return baseResult;
- }
- /**
- * 验证是否被角色或用户关联
- *
- * @param deptSet /
- */
- public void verifyBindRelationByIds(Set deptSet) {
- Set deptIds = deptSet.stream().map(SystemDeptVo::getId).collect(Collectors.toSet());
- if (systemUserDeptService.countUserByDeptIds(deptIds) > 0) {
- throw new BadRequestException("所选部门存在用户关联,请解除后再试!");
+ /**
+ * 根据ID查询
+ *
+ * @param id /
+ * @return /
+ */
+ public SystemDeptVo getDeptVoById(Long id) {
+ return KitBeanUtil.copyToClass(systemDeptMapper.selectById(id), SystemDeptVo.class);
}
- if (systemRoleDeptService.countRoleByDeptIds(deptIds) > 0) {
- throw new BadRequestException("所选部门存在角色关联,请解除后再试!");
+
+ /**
+ * 获取部门下所有关联的部门
+ *
+ * @param deptTbList /
+ * @param depts /
+ */
+ private void queryRelationDeptByArgs(List deptTbList, Set depts) {
+ for (SystemDeptVo dept : deptTbList) {
+ depts.add(dept);
+ List deptList = this.listDeptVoByPid(dept.getId());
+ if (CollUtil.isNotEmpty(deptList)) {
+ queryRelationDeptByArgs(deptList, depts);
+ }
+ }
}
- }
- private List listEnabledDepts() {
- LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>();
- wrapper.eq(SystemDeptTb::getEnabled, 1);
- return systemDeptMapper.selectList(wrapper);
- }
-
- /**
- * 遍历所有部门和子部门
- *
- * @param ids /
- */
- public Set traverseDeptByIdWithPids(Set ids) {
- Set depts = new HashSet<>();
- for (Long id : ids) {
- // 根部门
- depts.add(this.getDeptVoById(id));
- // 子部门
- List deptList = this.listDeptByPid(id);
- if (CollectionUtil.isNotEmpty(deptList)) {
- queryRelationDeptByArgs(deptList, depts);
- }
+ private List listDeptVoByPid(Long pid) {
+ return KitBeanUtil.copyToList(this.listDeptByPid(pid), SystemDeptVo.class);
}
- return depts;
- }
- public List listDeptSelectDataSource() {
- List depts = this.listEnabledDepts();
- return buildDeptSelectOptions(depts);
- }
-
- private List buildDeptSelectOptions(List depts) {
- // 获取所有部门并按父子关系组织
- Map deptMap =
- depts.stream().collect(Collectors.toMap(SystemDeptTb::getId, Function.identity()));
- List options = new ArrayList<>();
- for (SystemDeptTb dept : depts) {
- // 构建部门ID路径
- List pathIds = new ArrayList<>();
- buildDeptIdPath(dept, deptMap, pathIds);
- // 反转路径,从顶级部门到当前部门
- Collections.reverse(pathIds);
- SystemProductLineVo dto = new SystemProductLineVo();
- dto.setValue(dept.getId());
- dto.setIdPath(pathIds.stream().map(String::valueOf).collect(Collectors.joining("-")));
- // 保留名称路径用于显示
- dto.setLabel(buildNamePath(dept, deptMap));
- options.add(dto);
+ public List queryChildDeptIdByDeptIds(List deptList, Map> deptPidMap) {
+ List list = new ArrayList<>();
+ for (SystemDeptTb systemDeptTb : deptList) {
+ if (systemDeptTb != null && systemDeptTb.getEnabled()) {
+ List deptList1 = deptPidMap.getOrDefault(systemDeptTb.getId(), null);
+ if (CollUtil.isNotEmpty(deptList1)) {
+ list.addAll(this.queryChildDeptIdByDeptIds(deptList1, deptPidMap));
+ }
+ list.add(systemDeptTb.getId());
+ }
+ }
+ return list;
}
- // 按部门名称路径排序
- options.sort(Comparator.comparing(SystemProductLineVo::getLabel));
- return options;
- }
- private void buildDeptIdPath(SystemDeptTb dept, Map deptMap, List pathIds) {
- pathIds.add(dept.getId());
- if (dept.getPid() != null && dept.getPid() != 0 && deptMap.containsKey(dept.getPid())) {
- buildDeptIdPath(deptMap.get(dept.getPid()), deptMap, pathIds);
+ /**
+ * 根据ID获取同级与上级数据
+ *
+ * @param dept /
+ * @param deptList /
+ * @return /
+ */
+ private List querySuperiorDeptByPid(SystemDeptVo dept, List deptList) {
+ if (dept.getPid() == null) {
+ deptList.addAll(this.listRootDept());
+ return deptList;
+ }
+ deptList.addAll(this.listDeptVoByPid(dept.getPid()));
+ return querySuperiorDeptByPid(this.getDeptVoById(dept.getPid()), deptList);
}
- }
- private String buildNamePath(SystemDeptTb dept, Map deptMap) {
- List pathNames = new ArrayList<>();
- buildDeptNamePath(dept, deptMap, pathNames);
- Collections.reverse(pathNames);
- return String.join(" / ", pathNames);
- }
-
- private void buildDeptNamePath(SystemDeptTb dept, Map deptMap, List pathNames) {
- pathNames.add(dept.getName());
- if (dept.getPid() != null && dept.getPid() != 0 && deptMap.containsKey(dept.getPid())) {
- buildDeptNamePath(deptMap.get(dept.getPid()), deptMap, pathNames);
+ private List listRootDept() {
+ LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>();
+ wrapper.isNull(SystemDeptTb::getPid);
+ return KitBeanUtil.copyToList(systemDeptMapper.selectList(wrapper), SystemDeptVo.class);
}
- }
- public List listDeptSelectProDataSource() {
- List depts = this.listEnabledDepts();
- // 获取所有部门并按父子关系组织
- Map deptMap =
- depts.stream().collect(Collectors.toMap(SystemDeptTb::getId, Function.identity()));
- List options = new ArrayList<>();
- // 构建树形结构
- for (SystemDeptTb dept : depts) {
- // 只处理顶级部门(pid为null或0的部门)
- if (dept.getPid() == null || dept.getPid() == 0) {
- SystemProductLineTreeVo vo = buildDeptTreePro(dept, deptMap);
- options.add(vo);
- }
+ /**
+ * 构建树形数据
+ *
+ * @return /
+ */
+ public KitPageResult searchDeptTree(List ids, Boolean exclude) {
+ Set deptSet1 = new LinkedHashSet<>();
+ for (Long id : ids) {
+ // 同级数据
+ SystemDeptVo dept = this.getDeptVoById(id);
+ // 上级数据
+ List depts = this.querySuperiorDeptByPid(dept, new ArrayList<>());
+ if (exclude) {
+ for (SystemDeptVo data : depts) {
+ if (data.getId().equals(dept.getPid())) {
+ data.setSubCount(data.getSubCount() - 1);
+ }
+ }
+ // 编辑部门时不显示自己以及自己下级的数据, 避免出现PID数据环形问题
+ depts = depts.stream().filter(i -> !ids.contains(i.getId())).collect(Collectors.toList());
+ }
+ deptSet1.addAll(depts);
+ }
+ List deptList = new ArrayList<>(deptSet1);
+ // 构建部门树
+ Set trees = new LinkedHashSet<>();
+ Set deptSet = new LinkedHashSet<>();
+ List deptNames = deptList.stream().map(SystemDeptVo::getName).collect(Collectors.toList());
+ boolean isChild;
+ for (SystemDeptVo dept : deptList) {
+ isChild = false;
+ if (dept.getPid() == null) {
+ trees.add(dept);
+ }
+ for (SystemDeptVo it : deptList) {
+ if (it.getPid() != null && dept.getId().equals(it.getPid())) {
+ isChild = true;
+ if (dept.getChildren() == null) {
+ dept.setChildren(new ArrayList<>());
+ }
+ dept.getChildren().add(it);
+ }
+ }
+ if (isChild) {
+ deptSet.add(dept);
+ } else if (dept.getPid() != null && !deptNames.contains(this.getDeptVoById(dept.getPid()).getName())) {
+ deptSet.add(dept);
+ }
+ }
+ if (CollUtil.isEmpty(trees)) {
+ trees = deptSet;
+ }
+ KitPageResult baseResult = new KitPageResult<>();
+ baseResult.setContent(CollUtil.isEmpty(trees) ? new ArrayList<>(deptSet) : new ArrayList<>(trees));
+ baseResult.setTotalElements(deptSet.size());
+ return baseResult;
}
- // 按排序字段排序
- options.sort(Comparator.comparingInt(o -> {
- Long id = Long.valueOf(o.getValue());
- return deptMap.get(id) != null ? deptMap.get(id).getDeptSort() : 0;
- }));
- return options;
- }
- /**
- * 递归构建部门树
- *
- * @param dept 当前部门
- * @param deptMap 部门映射
- * @return SystemProductLineTreeVo 树节点
- */
- private SystemProductLineTreeVo buildDeptTreePro(SystemDeptTb dept, Map deptMap) {
- SystemProductLineTreeVo vo = new SystemProductLineTreeVo();
- vo.setValue(String.valueOf(dept.getId()));
- vo.setLabel(dept.getName());
- // 查找子部门
- List children = new ArrayList<>();
- for (SystemDeptTb childDept : deptMap.values()) {
- if (dept.getId().equals(childDept.getPid())) {
- children.add(buildDeptTreePro(childDept, deptMap));
- }
+ /**
+ * 验证是否被角色或用户关联
+ *
+ * @param deptSet /
+ */
+ public void verifyBindRelationByIds(Set deptSet) {
+ Set deptIds = deptSet.stream().map(SystemDeptVo::getId).collect(Collectors.toSet());
+ if (systemUserDeptService.countUserByDeptIds(deptIds) > 0) {
+ throw new BadRequestException("所选部门存在用户关联,请解除后再试!");
+ }
+ if (systemRoleDeptService.countRoleByDeptIds(deptIds) > 0) {
+ throw new BadRequestException("所选部门存在角色关联,请解除后再试!");
+ }
}
- // 子部门按排序字段排序
- children.sort(Comparator.comparingInt(o -> {
- Long id = Long.valueOf(o.getValue());
- return deptMap.get(id) != null ? deptMap.get(id).getDeptSort() : 0;
- }));
- vo.setChildren(children);
- return vo;
- }
- public List listDeptByPid(long pid) {
- LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>();
- wrapper.eq(SystemDeptTb::getPid, pid);
- return KitBeanUtil.copyToList(systemDeptMapper.selectList(wrapper), SystemDeptVo.class);
- }
-
- public void exportDeptXlsx(HttpServletResponse response, SystemQueryDeptArgs args) throws Exception {
- List systemDeptTbs = this.queryAllDeptByArgs(args, false);
- List rowVos = new ArrayList<>();
- for (SystemDeptTb dataObject : systemDeptTbs) {
- SystemDeptExportRowVo rowVo = new SystemDeptExportRowVo();
- rowVo.setName(dataObject.getName());
- rowVo.setEnabled(dataObject.getEnabled() ? SystemZhConst.ENABLE_STR : SystemZhConst.DISABLE_STR);
- rowVo.setCreateTime(dataObject.getCreateTime());
- rowVos.add(rowVo);
+ private List listEnabledDepts() {
+ LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>();
+ wrapper.eq(SystemDeptTb::getEnabled, 1);
+ return systemDeptMapper.selectList(wrapper);
+ }
+
+ /**
+ * 遍历所有部门和子部门
+ *
+ * @param ids /
+ */
+ public Set traverseDeptByIdWithPids(Set ids) {
+ Set depts = new HashSet<>();
+ for (Long id : ids) {
+ // 根部门
+ depts.add(this.getDeptVoById(id));
+ // 子部门
+ List deptList = this.listDeptVoByPid(id);
+ if (CollUtil.isNotEmpty(deptList)) {
+ queryRelationDeptByArgs(deptList, depts);
+ }
+ }
+ return depts;
+ }
+
+ public List listDeptSelectDataSource() {
+ List depts = this.listEnabledDepts();
+ return buildDeptSelectOptions(depts);
+ }
+
+ private List buildDeptSelectOptions(List depts) {
+ // 获取所有部门并按父子关系组织
+ Map deptMap =
+ depts.stream().collect(Collectors.toMap(SystemDeptTb::getId, Function.identity()));
+ List options = new ArrayList<>();
+ for (SystemDeptTb dept : depts) {
+ // 构建部门ID路径
+ List pathIds = new ArrayList<>();
+ buildDeptIdPath(dept, deptMap, pathIds);
+ // 反转路径,从顶级部门到当前部门
+ Collections.reverse(pathIds);
+ SystemProductLineVo dto = new SystemProductLineVo();
+ dto.setValue(dept.getId());
+ dto.setIdPath(pathIds.stream().map(String::valueOf).collect(Collectors.joining("-")));
+ // 保留名称路径用于显示
+ dto.setLabel(buildNamePath(dept, deptMap));
+ options.add(dto);
+ }
+ // 按部门名称路径排序
+ options.sort(Comparator.comparing(SystemProductLineVo::getLabel));
+ return options;
+ }
+
+ private void buildDeptIdPath(SystemDeptTb dept, Map deptMap, List pathIds) {
+ pathIds.add(dept.getId());
+ if (dept.getPid() != null && dept.getPid() != 0 && deptMap.containsKey(dept.getPid())) {
+ buildDeptIdPath(deptMap.get(dept.getPid()), deptMap, pathIds);
+ }
+ }
+
+ private String buildNamePath(SystemDeptTb dept, Map deptMap) {
+ List pathNames = new ArrayList<>();
+ buildDeptNamePath(dept, deptMap, pathNames);
+ Collections.reverse(pathNames);
+ return String.join(" / ", pathNames);
+ }
+
+ private void buildDeptNamePath(SystemDeptTb dept, Map deptMap, List pathNames) {
+ pathNames.add(dept.getName());
+ if (dept.getPid() != null && dept.getPid() != 0 && deptMap.containsKey(dept.getPid())) {
+ buildDeptNamePath(deptMap.get(dept.getPid()), deptMap, pathNames);
+ }
+ }
+
+ public List listDeptSelectProDataSource() {
+ List depts = this.listEnabledDepts();
+ // 获取所有部门并按父子关系组织
+ Map deptMap =
+ depts.stream().collect(Collectors.toMap(SystemDeptTb::getId, Function.identity()));
+ List options = new ArrayList<>();
+ // 构建树形结构
+ for (SystemDeptTb dept : depts) {
+ // 只处理顶级部门(pid为null或0的部门)
+ if (dept.getPid() == null || dept.getPid() == 0) {
+ SystemProductLineTreeVo vo = buildDeptTreePro(dept, deptMap);
+ options.add(vo);
+ }
+ }
+ // 按排序字段排序
+ options.sort(Comparator.comparingInt(o -> {
+ Long id = Long.valueOf(o.getValue());
+ return deptMap.get(id) != null ? deptMap.get(id).getDeptSort() : 0;
+ }));
+ return options;
+ }
+
+ /**
+ * 递归构建部门树
+ *
+ * @param dept 当前部门
+ * @param deptMap 部门映射
+ * @return SystemProductLineTreeVo 树节点
+ */
+ private SystemProductLineTreeVo buildDeptTreePro(SystemDeptTb dept, Map deptMap) {
+ SystemProductLineTreeVo vo = new SystemProductLineTreeVo();
+ vo.setValue(String.valueOf(dept.getId()));
+ vo.setLabel(dept.getName());
+ // 查找子部门
+ List children = new ArrayList<>();
+ for (SystemDeptTb childDept : deptMap.values()) {
+ if (dept.getId().equals(childDept.getPid())) {
+ children.add(buildDeptTreePro(childDept, deptMap));
+ }
+ }
+ // 子部门按排序字段排序
+ children.sort(Comparator.comparingInt(o -> {
+ Long id = Long.valueOf(o.getValue());
+ return deptMap.get(id) != null ? deptMap.get(id).getDeptSort() : 0;
+ }));
+ vo.setChildren(children);
+ return vo;
+ }
+
+ public List listDeptByPid(long pid) {
+ LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>();
+ wrapper.eq(SystemDeptTb::getPid, pid);
+ return systemDeptMapper.selectList(wrapper);
+ }
+
+ public void exportDeptXlsx(HttpServletResponse response, SystemQueryDeptArgs args) throws Exception {
+ List systemDeptTbs = this.queryAllDeptByArgs(args, false);
+ List rowVos = new ArrayList<>();
+ for (SystemDeptTb dataObject : systemDeptTbs) {
+ SystemDeptExportRowVo rowVo = new SystemDeptExportRowVo();
+ rowVo.setName(dataObject.getName());
+ rowVo.setEnabled(dataObject.getEnabled() ? SystemZhConst.ENABLE_STR : SystemZhConst.DISABLE_STR);
+ rowVo.setCreateTime(dataObject.getCreateTime());
+ rowVos.add(rowVo);
+ }
+ KitExcelExporter.exportSimple(response, "部门数据", SystemDeptExportRowVo.class, rowVos);
+ }
+
+ public List listPidNonNull() {
+ LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>();
+ wrapper.eq(SystemDeptTb::getEnabled, 1);
+ wrapper.isNotNull(SystemDeptTb::getPid);
+ return systemDeptMapper.selectList(wrapper);
}
- KitExcelExporter.exportSimple(response, "部门数据", SystemDeptExportRowVo.class, rowVos);
- }
}
diff --git a/cutejava-springboot3/cutejava-module-system/src/main/java/cn/odboy/system/service/SystemDictDetailService.java b/cutejava-springboot3/cutejava-module-system/src/main/java/cn/odboy/system/service/SystemDictDetailService.java
index 19c9b210..eb12357e 100644
--- a/cutejava-springboot3/cutejava-module-system/src/main/java/cn/odboy/system/service/SystemDictDetailService.java
+++ b/cutejava-springboot3/cutejava-module-system/src/main/java/cn/odboy/system/service/SystemDictDetailService.java
@@ -31,120 +31,122 @@ import cn.odboy.util.KitValidUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.stream.Collectors;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
-import org.springframework.transaction.annotation.Transactional;
@Service
public class SystemDictDetailService {
- @Autowired
- private SystemDictDetailMapper systemDictDetailMapper;
- @Autowired
- private SystemDictMapper systemDictMapper;
+ @Autowired
+ private SystemDictDetailMapper systemDictDetailMapper;
+ @Autowired
+ private SystemDictMapper systemDictMapper;
- /**
- * 创建
- *
- * @param args /
- */
- @Transactional(rollbackFor = Exception.class)
- public void saveDictDetail(SystemCreateDictDetailArgs args) {
- KitValidUtil.notNull(args);
- KitValidUtil.notNull(args.getDict());
- SystemDictDetailTb dictDetail = KitBeanUtil.copyToClass(args, SystemDictDetailTb.class);
- dictDetail.setDictId(args.getDict().getId());
- systemDictDetailMapper.insert(dictDetail);
- }
-
- /**
- * 编辑
- *
- * @param args /
- */
- @Transactional(rollbackFor = Exception.class)
- public void updateDictDetailById(SystemDictDetailTb args) {
- SystemDictDetailTb dictDetail = systemDictDetailMapper.selectById(args.getId());
- args.setId(dictDetail.getId());
- systemDictDetailMapper.insertOrUpdate(args);
- }
-
- /**
- * 删除
- *
- * @param id /
- */
- @Transactional(rollbackFor = Exception.class)
- public void deleteDictDetailById(Long id) {
- systemDictDetailMapper.deleteById(id);
- }
-
- @Transactional(rollbackFor = Exception.class)
- public void deleteDictDetailByDictIds(Set ids) {
- if (CollUtil.isNotEmpty(ids)) {
- LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>();
- wrapper.in(SystemDictDetailTb::getDictId, ids);
- systemDictDetailMapper.delete(wrapper);
+ /**
+ * 创建 -> TestPassed
+ *
+ * @param args /
+ */
+ @Transactional(rollbackFor = Exception.class)
+ public void saveDictDetail(SystemCreateDictDetailArgs args) {
+ KitValidUtil.notNull(args);
+ KitValidUtil.notNull(args.getDict());
+ SystemDictDetailTb dictDetail = KitBeanUtil.copyToClass(args, SystemDictDetailTb.class);
+ dictDetail.setDictId(args.getDict().getId());
+ systemDictDetailMapper.insert(dictDetail);
}
- }
- private List listDictDetailByDictId(Long dictId) {
- LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>();
- wrapper.eq(SystemDictDetailTb::getDictId, dictId);
- return systemDictDetailMapper.selectList(wrapper);
- }
+ /**
+ * 编辑 -> TestPassed
+ *
+ * @param args /
+ */
+ @Transactional(rollbackFor = Exception.class)
+ public void updateDictDetailById(SystemDictDetailTb args) {
+ SystemDictDetailTb dictDetail = systemDictDetailMapper.selectById(args.getId());
+ args.setId(dictDetail.getId());
+ systemDictDetailMapper.insertOrUpdate(args);
+ }
- /**
- * 分页查询
- *
- * @param args 条件
- * @param page 分页参数
- * @return /
- */
- public KitPageResult searchDictDetail(SystemQueryDictDetailArgs args, Page page) {
- IPage iPage = systemDictDetailMapper.selectPageByArgs(page, args).convert(i -> KitBeanUtil.copyToClass(i, SystemDictDetailVo.class));
- List dictIds = iPage.getRecords().stream().map(SystemDictDetailVo::getDictId).collect(Collectors.toList());
- Map id2ItemMap = systemDictMapper.selectByIds(dictIds).stream().collect(Collectors.toMap(SystemDictTb::getId, i -> i));
- for (SystemDictDetailVo record : iPage.getRecords()) {
- record.setDict(id2ItemMap.get(record.getDictId()));
+ /**
+ * 删除 -> TestPassed
+ *
+ * @param id /
+ */
+ @Transactional(rollbackFor = Exception.class)
+ public void deleteDictDetailById(Long id) {
+ systemDictDetailMapper.deleteById(id);
}
- return KitPageUtil.toPage(iPage);
- }
- /**
- * 根据字典名称获取字典详情
- *
- * @param name 字典名称
- * @return /
- */
- public List listDictDetailByName(String name) {
- if (StrUtil.isBlank(name)) {
- return new ArrayList<>();
+ @Transactional(rollbackFor = Exception.class)
+ public void deleteDictDetailByDictIds(Set ids) {
+ if (CollUtil.isNotEmpty(ids)) {
+ LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>();
+ wrapper.in(SystemDictDetailTb::getDictId, ids);
+ systemDictDetailMapper.delete(wrapper);
+ }
}
- SystemDictTb systemDictTb = systemDictMapper.getByName(name);
- if (systemDictTb == null) {
- return new ArrayList<>();
- }
- List detailTbs = this.listDictDetailByDictId(systemDictTb.getId());
- List detailVos = KitBeanUtil.copyToList(detailTbs, SystemDictDetailVo.class);
- for (SystemDictDetailVo detailVo : detailVos) {
- detailVo.setDict(systemDictTb);
- }
- return detailVos;
- }
- public Map> getDictDetailMap(String dictName) {
- String[] names = dictName.split("[,, ]");
- Map> dictMap = new HashMap<>(16);
- for (String name : names) {
- dictMap.put(name, this.listDictDetailByName(name));
+ /**
+ * 分页查询 -> TestPassed
+ *
+ * @param args 条件
+ * @param page 分页参数
+ * @return /
+ */
+ public KitPageResult searchDictDetail(SystemQueryDictDetailArgs args,
+ Page page) {
+ IPage iPage = systemDictDetailMapper.selectPageByArgs(page, args);
+ List dictIds =
+ iPage.getRecords().stream().map(SystemDictDetailVo::getDictId).collect(Collectors.toList());
+ if (CollUtil.isNotEmpty(dictIds)) {
+ Map id2ItemMap =
+ systemDictMapper.selectByIds(dictIds).stream().collect(Collectors.toMap(SystemDictTb::getId, i -> i));
+ for (SystemDictDetailVo record : iPage.getRecords()) {
+ record.setDict(id2ItemMap.get(record.getDictId()));
+ }
+ }
+ return KitPageUtil.toPage(iPage);
+ }
+
+ /**
+ * 根据字典名称获取字典详情 -> TestPassed
+ *
+ * @param name 字典名称
+ * @return /
+ */
+ public List listDictDetailByName(String name) {
+ if (StrUtil.isBlank(name)) {
+ return new ArrayList<>();
+ }
+ List detailVos = systemDictDetailMapper.listDictDetailByName(name);
+ if (CollUtil.isNotEmpty(detailVos)) {
+ SystemDictDetailVo systemDictDetailVo = detailVos.stream().findFirst().orElse(null);
+ if (systemDictDetailVo != null) {
+ SystemDictTb systemDictTb = systemDictMapper.selectById(systemDictDetailVo.getDictId());
+ if (systemDictTb != null) {
+ for (SystemDictDetailVo detailVo : detailVos) {
+ detailVo.setDict(systemDictTb);
+ }
+ }
+ }
+ }
+ return detailVos;
+ }
+
+ public Map> getDictDetailMap(String dictName) {
+ String[] names = dictName.split("[,, ]");
+ Map> dictMap = new HashMap<>(16);
+ for (String name : names) {
+ dictMap.put(name, this.listDictDetailByName(name));
+ }
+ return dictMap;
}
- return dictMap;
- }
}
diff --git a/cutejava-springboot3/cutejava-module-system/src/main/java/cn/odboy/system/service/SystemDictService.java b/cutejava-springboot3/cutejava-module-system/src/main/java/cn/odboy/system/service/SystemDictService.java
index 482bdac2..698c24a1 100644
--- a/cutejava-springboot3/cutejava-module-system/src/main/java/cn/odboy/system/service/SystemDictService.java
+++ b/cutejava-springboot3/cutejava-module-system/src/main/java/cn/odboy/system/service/SystemDictService.java
@@ -29,111 +29,111 @@ import cn.odboy.util.KitPageUtil;
import cn.odboy.util.xlsx.KitExcelExporter;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Set;
-import jakarta.servlet.http.HttpServletResponse;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
+import jakarta.servlet.http.HttpServletResponse;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Set;
@Service
public class SystemDictService {
- @Autowired
- private SystemDictMapper systemDictMapper;
- @Autowired
- private SystemDictDetailService systemDictDetailService;
+ @Autowired
+ private SystemDictMapper systemDictMapper;
+ @Autowired
+ private SystemDictDetailService systemDictDetailService;
- /**
- * 创建
- *
- * @param args /
- */
- @Transactional(rollbackFor = Exception.class)
- public void saveDict(SystemCreateDictArgs args) {
- SystemDictTb dictTb = KitBeanUtil.copyToClass(args, SystemDictTb.class);
- systemDictMapper.insert(dictTb);
- }
-
- /**
- * 编辑
- *
- * @param args /
- */
- @Transactional(rollbackFor = Exception.class)
- public void updateDictById(SystemDictTb args) {
- SystemDictTb dict = systemDictMapper.selectById(args.getId());
- dict.setName(args.getName());
- dict.setDescription(args.getDescription());
- systemDictMapper.insertOrUpdate(dict);
- }
-
- /**
- * 删除
- *
- * @param ids /
- */
- @Transactional(rollbackFor = Exception.class)
- public void deleteDictByIds(Set ids) {
- // 删除字典
- systemDictMapper.deleteByIds(ids);
- // 删除字典详情
- systemDictDetailService.deleteDictDetailByDictIds(ids);
- }
-
- /**
- * 分页查询
- *
- * @param args 条件
- * @param page 分页参数
- * @return /
- */
- public KitPageResult searchDict(SystemQueryDictArgs args, Page page) {
- LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>();
- this.injectQueryParams(args, wrapper);
- Page selectPage = systemDictMapper.selectPage(page, wrapper);
- return KitPageUtil.toPage(selectPage);
- }
-
- private void injectQueryParams(SystemQueryDictArgs args, LambdaQueryWrapper wrapper) {
- if (args != null) {
- wrapper.and(StrUtil.isNotBlank(args.getBlurry()), c -> c.like(SystemDictTb::getName, args.getBlurry()).or()
- .like(SystemDictTb::getDescription, args.getBlurry()));
+ /**
+ * 创建 -> TestPassed
+ *
+ * @param args /
+ */
+ @Transactional(rollbackFor = Exception.class)
+ public void saveDict(SystemCreateDictArgs args) {
+ SystemDictTb dictTb = KitBeanUtil.copyToClass(args, SystemDictTb.class);
+ systemDictMapper.insert(dictTb);
}
- }
- public List queryDictByArgs(SystemQueryDictArgs args) {
- LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>();
- this.injectQueryParams(args, wrapper);
- return systemDictMapper.selectList(wrapper);
- }
+ /**
+ * 编辑 -> TestPassed
+ *
+ * @param args /
+ */
+ @Transactional(rollbackFor = Exception.class)
+ public void updateDictById(SystemDictTb args) {
+ SystemDictTb dict = systemDictMapper.selectById(args.getId());
+ dict.setName(args.getName());
+ dict.setDescription(args.getDescription());
+ systemDictMapper.insertOrUpdate(dict);
+ }
- public void exportDictXlsx(HttpServletResponse response, SystemQueryDictArgs args) {
- List systemDictTbs = this.queryDictByArgs(args);
- List rowVos = new ArrayList<>();
- for (SystemDictTb dataObject : systemDictTbs) {
- List dictDetails = systemDictDetailService.listDictDetailByName(dataObject.getName());
- if (CollUtil.isEmpty(dictDetails)) {
- SystemDictExportRowVo rowVo = new SystemDictExportRowVo();
- rowVo.setName(dataObject.getName());
- rowVo.setDescription(dataObject.getDescription());
- rowVo.setCreateTime(dataObject.getCreateTime());
- rowVo.setLabel("");
- rowVo.setValue("");
- rowVos.add(rowVo);
- continue;
- }
- for (SystemDictDetailVo dictDetail : dictDetails) {
- SystemDictExportRowVo rowVo = new SystemDictExportRowVo();
- rowVo.setName(dataObject.getName());
- rowVo.setDescription(dataObject.getDescription());
- rowVo.setCreateTime(dataObject.getCreateTime());
- rowVo.setLabel(dictDetail.getLabel());
- rowVo.setValue(dictDetail.getValue());
- rowVos.add(rowVo);
- }
+ /**
+ * 删除 -> TestPassed
+ *
+ * @param ids /
+ */
+ @Transactional(rollbackFor = Exception.class)
+ public void deleteDictByIds(Set ids) {
+ // 删除字典
+ systemDictMapper.deleteByIds(ids);
+ // 删除字典详情
+ systemDictDetailService.deleteDictDetailByDictIds(ids);
+ }
+
+ /**
+ * 分页查询 -> TestPassed
+ *
+ * @param args 条件
+ * @param page 分页参数
+ * @return /
+ */
+ public KitPageResult searchDict(SystemQueryDictArgs args, Page page) {
+ LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>();
+ this.injectQueryParams(args, wrapper);
+ Page selectPage = systemDictMapper.selectPage(page, wrapper);
+ return KitPageUtil.toPage(selectPage);
+ }
+
+ private void injectQueryParams(SystemQueryDictArgs args, LambdaQueryWrapper wrapper) {
+ if (args != null) {
+ wrapper.and(StrUtil.isNotBlank(args.getBlurry()), c -> c.like(SystemDictTb::getName, args.getBlurry()).or()
+ .like(SystemDictTb::getDescription, args.getBlurry()));
+ }
+ }
+
+ public List queryDictByArgs(SystemQueryDictArgs args) {
+ LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>();
+ this.injectQueryParams(args, wrapper);
+ return systemDictMapper.selectList(wrapper);
+ }
+
+ public void exportDictXlsx(HttpServletResponse response, SystemQueryDictArgs args) {
+ List systemDictTbs = this.queryDictByArgs(args);
+ List rowVos = new ArrayList<>();
+ for (SystemDictTb dataObject : systemDictTbs) {
+ List dictDetails = systemDictDetailService.listDictDetailByName(dataObject.getName());
+ if (CollUtil.isEmpty(dictDetails)) {
+ SystemDictExportRowVo rowVo = new SystemDictExportRowVo();
+ rowVo.setName(dataObject.getName());
+ rowVo.setDescription(dataObject.getDescription());
+ rowVo.setCreateTime(dataObject.getCreateTime());
+ rowVo.setLabel("");
+ rowVo.setValue("");
+ rowVos.add(rowVo);
+ continue;
+ }
+ for (SystemDictDetailVo dictDetail : dictDetails) {
+ SystemDictExportRowVo rowVo = new SystemDictExportRowVo();
+ rowVo.setName(dataObject.getName());
+ rowVo.setDescription(dataObject.getDescription());
+ rowVo.setCreateTime(dataObject.getCreateTime());
+ rowVo.setLabel(dictDetail.getLabel());
+ rowVo.setValue(dictDetail.getValue());
+ rowVos.add(rowVo);
+ }
+ }
+ KitExcelExporter.exportSimple(response, "字典数据", SystemDictExportRowVo.class, rowVos);
}
- KitExcelExporter.exportSimple(response, "字典数据", SystemDictExportRowVo.class, rowVos);
- }
}
diff --git a/cutejava-springboot3/cutejava-module-system/src/main/java/cn/odboy/system/service/SystemEmailService.java b/cutejava-springboot3/cutejava-module-system/src/main/java/cn/odboy/system/service/SystemEmailService.java
index 6bb644f0..8fb0cca6 100644
--- a/cutejava-springboot3/cutejava-module-system/src/main/java/cn/odboy/system/service/SystemEmailService.java
+++ b/cutejava-springboot3/cutejava-module-system/src/main/java/cn/odboy/system/service/SystemEmailService.java
@@ -30,134 +30,134 @@ import cn.odboy.system.dal.model.request.SystemSendEmailArgs;
import cn.odboy.system.dal.mysql.SystemEmailConfigMapper;
import cn.odboy.util.KitDesEncryptUtil;
import cn.odboy.util.KitResourceTemplateUtil;
-import java.util.Collections;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
+import java.util.Collections;
@Slf4j
@Service
public class SystemEmailService {
- @Autowired
- private SystemEmailConfigMapper systemEmailConfigMapper;
- @Autowired
- private KitRedisHelper redisHelper;
- @Autowired
- private AppProperties properties;
+ @Autowired
+ private SystemEmailConfigMapper systemEmailConfigMapper;
+ @Autowired
+ private KitRedisHelper redisHelper;
+ @Autowired
+ private AppProperties properties;
- /**
- * 更新邮件配置
- *
- * @param emailConfig 邮箱配置
- */
- @Transactional(rollbackFor = Exception.class)
- public void updateEmailConfigById(SystemEmailConfigTb emailConfig) throws Exception {
- SystemEmailConfigTb systemEmailConfigTb = getLastEmailConfig();
- if (!emailConfig.getPassword().equals(systemEmailConfigTb.getPassword())) {
- // 对称加密
- systemEmailConfigTb.setPassword(KitDesEncryptUtil.desEncrypt(emailConfig.getPassword()));
+ /**
+ * 更新邮件配置 -> TestPassed
+ *
+ * @param emailConfig 邮箱配置
+ */
+ @Transactional(rollbackFor = Exception.class)
+ public void updateEmailConfigById(SystemEmailConfigTb emailConfig) throws Exception {
+ SystemEmailConfigTb systemEmailConfigTb = getLastEmailConfig();
+ if (!emailConfig.getPassword().equals(systemEmailConfigTb.getPassword())) {
+ // 对称加密
+ systemEmailConfigTb.setPassword(KitDesEncryptUtil.desEncrypt(emailConfig.getPassword()));
+ }
+ systemEmailConfigTb.setId(1L);
+ systemEmailConfigMapper.insertOrUpdate(systemEmailConfigTb);
}
- systemEmailConfigTb.setId(1L);
- systemEmailConfigMapper.insertOrUpdate(systemEmailConfigTb);
- }
- /**
- * 发送邮件
- *
- * @param sendEmailRequest 邮件发送的内容
- */
- public void sendEmail(SystemSendEmailArgs sendEmailRequest) {
- SystemEmailConfigTb systemEmailConfigTb = getLastEmailConfig();
- if (systemEmailConfigTb.getId() == null) {
- throw new BadRequestException("请先配置, 再操作");
+ /**
+ * 发送邮件 -> TestPassed
+ *
+ * @param sendEmailRequest 邮件发送的内容
+ */
+ public void sendEmail(SystemSendEmailArgs sendEmailRequest) {
+ SystemEmailConfigTb systemEmailConfigTb = getLastEmailConfig();
+ if (systemEmailConfigTb.getId() == null) {
+ throw new BadRequestException("请先配置, 再操作");
+ }
+ // 封装
+ MailAccount account = new MailAccount();
+ // 设置用户
+ String user = systemEmailConfigTb.getFromUser().split("@")[0];
+ account.setUser(user);
+ account.setHost(systemEmailConfigTb.getHost());
+ account.setPort(Integer.parseInt(systemEmailConfigTb.getPort()));
+ account.setAuth(true);
+ try {
+ // 对称解密
+ account.setPass(KitDesEncryptUtil.desDecrypt(systemEmailConfigTb.getPassword()));
+ } catch (Exception e) {
+ throw new BadRequestException(e.getMessage());
+ }
+ account.setFrom(systemEmailConfigTb.getUser() + "<" + systemEmailConfigTb.getFromUser() + ">");
+ // ssl方式发送
+ account.setSslEnable(true);
+ // 使用STARTTLS安全连接
+ account.setStarttlsEnable(true);
+ // 解决jdk8之后默认禁用部分tls协议, 导致邮件发送失败的问题
+ account.setSslProtocols("TLSv1 TLSv1.1 TLSv1.2");
+ String content = sendEmailRequest.getContent();
+ // 发送
+ try {
+ int size = sendEmailRequest.getTos().size();
+ Mail.create(account).setTos(sendEmailRequest.getTos().toArray(new String[size]))
+ .setTitle(sendEmailRequest.getSubject()).setContent(content).setHtml(true)
+ // 关闭session
+ .setUseGlobalSession(false).send();
+ } catch (Exception e) {
+ log.error("邮件发送失败", e);
+ throw new BadRequestException("邮件发送失败");
+ }
}
- // 封装
- MailAccount account = new MailAccount();
- // 设置用户
- String user = systemEmailConfigTb.getFromUser().split("@")[0];
- account.setUser(user);
- account.setHost(systemEmailConfigTb.getHost());
- account.setPort(Integer.parseInt(systemEmailConfigTb.getPort()));
- account.setAuth(true);
- try {
- // 对称解密
- account.setPass(KitDesEncryptUtil.desDecrypt(systemEmailConfigTb.getPassword()));
- } catch (Exception e) {
- throw new BadRequestException(e.getMessage());
- }
- account.setFrom(systemEmailConfigTb.getUser() + "<" + systemEmailConfigTb.getFromUser() + ">");
- // ssl方式发送
- account.setSslEnable(true);
- // 使用STARTTLS安全连接
- account.setStarttlsEnable(true);
- // 解决jdk8之后默认禁用部分tls协议, 导致邮件发送失败的问题
- account.setSslProtocols("TLSv1 TLSv1.1 TLSv1.2");
- String content = sendEmailRequest.getContent();
- // 发送
- try {
- int size = sendEmailRequest.getTos().size();
- Mail.create(account).setTos(sendEmailRequest.getTos().toArray(new String[size]))
- .setTitle(sendEmailRequest.getSubject()).setContent(content).setHtml(true)
- // 关闭session
- .setUseGlobalSession(false).send();
- } catch (Exception e) {
- log.error("邮件发送失败", e);
- throw new BadRequestException("邮件发送失败");
- }
- }
- /**
- * 校验邮箱验证码
- */
- public void checkEmailCaptchaV1(SystemCaptchaBizEnum biEnum, String email, String code) {
- String redisKey = biEnum.getRedisKey() + email;
- String value = redisHelper.get(redisKey, String.class);
- if (value == null || !value.equals(code)) {
- throw new BadRequestException("无效验证码");
- } else {
- redisHelper.del(redisKey);
+ /**
+ * 校验邮箱验证码 -> TestPassed
+ */
+ public void checkEmailCaptchaV1(SystemCaptchaBizEnum biEnum, String email, String code) {
+ String redisKey = biEnum.getRedisKey() + email;
+ String value = redisHelper.get(redisKey, String.class);
+ if (value == null || !value.equals(code)) {
+ throw new BadRequestException("无效验证码");
+ } else {
+ redisHelper.del(redisKey);
+ }
}
- }
- /**
- * 发送给邮箱验证码
- */
- public void sendCaptcha(SystemCaptchaBizEnum biEnum, String email) {
- if (biEnum == null) {
- throw new BadRequestException("biEnum必填");
+ /**
+ * 发送给邮箱验证码
+ */
+ public void sendCaptcha(SystemCaptchaBizEnum biEnum, String email) {
+ if (biEnum == null) {
+ throw new BadRequestException("biEnum必填");
+ }
+ String content;
+ String redisKey = biEnum.getRedisKey() + email;
+ String oldCode = redisHelper.get(redisKey, String.class);
+ if (oldCode == null) {
+ String code = RandomUtil.randomNumbers(6);
+ // 存入缓存
+ if (!redisHelper.set(redisKey, code, properties.getCaptcha().getExpireTime())) {
+ throw new BadRequestException("服务异常, 请联系网站负责人");
+ }
+ // 存在就再次发送原来的验证码
+ content = KitResourceTemplateUtil.render(null, biEnum.getTemplateName(), Dict.create().set("code", code));
+ } else {
+ content =
+ KitResourceTemplateUtil.render(null, biEnum.getTemplateName(), Dict.create().set("code", oldCode));
+ }
+ SystemSendEmailArgs sendEmailRequest =
+ new SystemSendEmailArgs(Collections.singletonList(email), SystemConst.CURRENT_APP_TITLE, content);
+ sendEmail(sendEmailRequest);
}
- String content;
- String redisKey = biEnum.getRedisKey() + email;
- String oldCode = redisHelper.get(redisKey, String.class);
- if (oldCode == null) {
- String code = RandomUtil.randomNumbers(6);
- // 存入缓存
- if (!redisHelper.set(redisKey, code, properties.getCaptcha().getExpireTime())) {
- throw new BadRequestException("服务异常, 请联系网站负责人");
- }
- // 存在就再次发送原来的验证码
- content = KitResourceTemplateUtil.render(null, biEnum.getTemplateName(), Dict.create().set("code", code));
- } else {
- content =
- KitResourceTemplateUtil.render(null, biEnum.getTemplateName(), Dict.create().set("code", oldCode));
- }
- SystemSendEmailArgs sendEmailRequest =
- new SystemSendEmailArgs(Collections.singletonList(email), SystemConst.CURRENT_APP_TITLE, content);
- sendEmail(sendEmailRequest);
- }
- public SystemEmailConfigTb getLastEmailConfig() {
- SystemEmailConfigTb systemEmailConfigTb = systemEmailConfigMapper.selectById(1L);
- return systemEmailConfigTb == null ? new SystemEmailConfigTb() : systemEmailConfigTb;
- }
+ public SystemEmailConfigTb getLastEmailConfig() {
+ SystemEmailConfigTb systemEmailConfigTb = systemEmailConfigMapper.selectById(1L);
+ return systemEmailConfigTb == null ? new SystemEmailConfigTb() : systemEmailConfigTb;
+ }
- public void checkEmailCaptcha(SystemCheckEmailCaptchaArgs args) {
- SystemCaptchaBizEnum biEnum = SystemCaptchaBizEnum.getByBizCode(args.getBizCode());
- if (biEnum == null) {
- throw new BadRequestException("不支持的业务");
+ public void checkEmailCaptcha(SystemCheckEmailCaptchaArgs args) {
+ SystemCaptchaBizEnum biEnum = SystemCaptchaBizEnum.getByBizCode(args.getBizCode());
+ if (biEnum == null) {
+ throw new BadRequestException("不支持的业务");
+ }
+ this.checkEmailCaptchaV1(biEnum, args.getEmail(), args.getCode());
}
- this.checkEmailCaptchaV1(biEnum, args.getEmail(), args.getCode());
- }
}
diff --git a/cutejava-springboot3/cutejava-module-system/src/main/java/cn/odboy/system/service/SystemJobService.java b/cutejava-springboot3/cutejava-module-system/src/main/java/cn/odboy/system/service/SystemJobService.java
index 5ef1e678..5a152bf2 100644
--- a/cutejava-springboot3/cutejava-module-system/src/main/java/cn/odboy/system/service/SystemJobService.java
+++ b/cutejava-springboot3/cutejava-module-system/src/main/java/cn/odboy/system/service/SystemJobService.java
@@ -29,130 +29,129 @@ import cn.odboy.util.KitPageUtil;
import cn.odboy.util.xlsx.KitExcelExporter;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Set;
-import jakarta.servlet.http.HttpServletResponse;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
+import jakarta.servlet.http.HttpServletResponse;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Set;
@Service
public class SystemJobService {
- @Autowired
- private SystemJobMapper systemJobMapper;
- @Autowired
- private SystemUserJobService systemUserJobService;
+ @Autowired
+ private SystemJobMapper systemJobMapper;
+ @Autowired
+ private SystemUserJobService systemUserJobService;
- /**
- * 创建
- *
- * @param args /
- */
- @Transactional(rollbackFor = Exception.class)
- public void saveJob(SystemCreateJobArgs args) {
- SystemJobTb job = this.getJobByName(args.getName());
- if (job != null) {
- throw new BadRequestException("职位名称已存在");
+ /**
+ * 创建 -> TestPassed
+ *
+ * @param args /
+ */
+ @Transactional(rollbackFor = Exception.class)
+ public void saveJob(SystemCreateJobArgs args) {
+ SystemJobTb job = this.getJobByName(args.getName());
+ if (job != null) {
+ throw new BadRequestException("职位名称已存在");
+ }
+ SystemJobTb systemJobTb = KitBeanUtil.copyToClass(args, SystemJobTb.class);
+ systemJobMapper.insert(systemJobTb);
}
- SystemJobTb systemJobTb = KitBeanUtil.copyToClass(args, SystemJobTb.class);
- systemJobMapper.insert(systemJobTb);
- }
- /**
- * 编辑
- *
- * @param args /
- */
- @Transactional(rollbackFor = Exception.class)
- public void updateJobById(SystemJobTb args) {
- SystemJobTb job = systemJobMapper.selectById(args.getId());
- SystemJobTb old = this.getJobByName(args.getName());
- if (old != null && !old.getId().equals(args.getId())) {
- throw new BadRequestException("职位名称已存在");
+ /**
+ * 编辑 -> TestPassed
+ *
+ * @param args /
+ */
+ @Transactional(rollbackFor = Exception.class)
+ public void updateJobById(SystemJobTb args) {
+ SystemJobTb job = systemJobMapper.selectById(args.getId());
+ SystemJobTb old = this.getJobByName(args.getName());
+ if (old != null && !old.getId().equals(args.getId())) {
+ throw new BadRequestException("职位名称已存在");
+ }
+ args.setId(job.getId());
+ systemJobMapper.updateById(args);
}
- args.setId(job.getId());
- systemJobMapper.insertOrUpdate(args);
- }
- /**
- * 删除
- *
- * @param ids /
- */
- @Transactional(rollbackFor = Exception.class)
- public void deleteJobByIds(Set ids) {
- // 验证是否被用户关联
- this.verifyBindRelationByIds(ids);
- systemJobMapper.deleteByIds(ids);
- }
-
- /**
- * 分页查询
- *
- * @param args 条件
- * @param page 分页参数
- */
- public KitPageResult searchJobByArgs(SystemQueryJobArgs args, Page page) {
- LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>();
- this.injectQueryParams(args, wrapper);
- Page selectPage = systemJobMapper.selectPage(page, wrapper);
- return KitPageUtil.toPage(selectPage);
- }
-
- /**
- * 查询全部数据
- */
- public List queryJobByArgs(SystemQueryJobArgs args) {
- LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>();
- this.injectQueryParams(args, wrapper);
- return systemJobMapper.selectList(wrapper);
- }
-
- /**
- * 验证是否被用户关联
- *
- * @param ids /
- */
- public void verifyBindRelationByIds(Set ids) {
- if (systemUserJobService.countUserByJobIds(ids) > 0) {
- throw new BadRequestException("所选的岗位中存在用户关联, 请解除关联再试!");
+ /**
+ * 删除 -> TestPassed
+ *
+ * @param ids /
+ */
+ @Transactional(rollbackFor = Exception.class)
+ public void deleteJobByIds(Set ids) {
+ // 验证是否被用户关联
+ this.verifyBindRelationByIds(ids);
+ systemJobMapper.deleteByIds(ids);
}
- }
- public SystemJobTb getJobByName(String name) {
- LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>();
- wrapper.eq(SystemJobTb::getName, name);
- return systemJobMapper.selectOne(wrapper);
- }
-
- public void injectQueryParams(SystemQueryJobArgs args, LambdaQueryWrapper wrapper) {
- if (args != null) {
- wrapper.like(StrUtil.isNotBlank(args.getName()), SystemJobTb::getName, args.getName());
- wrapper.eq(args.getEnabled() != null, SystemJobTb::getEnabled, args.getEnabled());
- if (CollUtil.isNotEmpty(args.getCreateTime()) && args.getCreateTime().size() >= 2) {
- wrapper.between(SystemJobTb::getCreateTime, args.getCreateTime().get(0),
- args.getCreateTime().get(1));
- }
+ /**
+ * 分页查询 -> TestPassed
+ *
+ * @param args 条件
+ * @param page 分页参数
+ */
+ public KitPageResult searchJobByArgs(SystemQueryJobArgs args, Page page) {
+ LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>();
+ this.injectQueryParams(args, wrapper);
+ Page selectPage = systemJobMapper.selectPage(page, wrapper);
+ return KitPageUtil.toPage(selectPage);
}
- wrapper.orderByDesc(SystemJobTb::getJobSort, SystemJobTb::getId);
- }
- public void exportJobXlsx(HttpServletResponse response, SystemQueryJobArgs args) {
- List systemJobTbs = this.queryJobByArgs(args);
- List rowVos = new ArrayList<>();
- for (SystemJobTb dataObject : systemJobTbs) {
- SystemJobExportRowVo rowVo = new SystemJobExportRowVo();
- rowVo.setName(dataObject.getName());
- rowVo.setEnabled(dataObject.getEnabled() ? "启用" : "停用");
- rowVo.setCreateTime(dataObject.getCreateTime());
- rowVos.add(rowVo);
+ /**
+ * 查询全部数据 -> TestPassed
+ */
+ public List queryJobByArgs(SystemQueryJobArgs args) {
+ LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>();
+ this.injectQueryParams(args, wrapper);
+ return systemJobMapper.selectList(wrapper);
}
- KitExcelExporter.exportSimple(response, "岗位数据", SystemJobExportRowVo.class, rowVos);
- }
- public List listByIds(Set jobIds) {
- return systemJobMapper.selectByIds(jobIds);
- }
+ /**
+ * 验证是否被用户关联 -> TestPassed
+ *
+ * @param ids /
+ */
+ public void verifyBindRelationByIds(Set ids) {
+ if (systemUserJobService.countUserByJobIds(ids) > 0) {
+ throw new BadRequestException("所选的岗位中存在用户关联, 请解除关联再试!");
+ }
+ }
+
+ public SystemJobTb getJobByName(String name) {
+ LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>();
+ wrapper.eq(SystemJobTb::getName, name);
+ return systemJobMapper.selectOne(wrapper);
+ }
+
+ public void injectQueryParams(SystemQueryJobArgs args, LambdaQueryWrapper wrapper) {
+ if (args != null) {
+ wrapper.like(StrUtil.isNotBlank(args.getName()), SystemJobTb::getName, args.getName());
+ wrapper.eq(args.getEnabled() != null, SystemJobTb::getEnabled, args.getEnabled());
+ if (CollUtil.isNotEmpty(args.getCreateTime()) && args.getCreateTime().size() >= 2) {
+ wrapper.between(SystemJobTb::getCreateTime, args.getCreateTime().get(0), args.getCreateTime().get(1));
+ }
+ }
+ wrapper.orderByDesc(SystemJobTb::getJobSort, SystemJobTb::getId);
+ }
+
+ public void exportJobXlsx(HttpServletResponse response, SystemQueryJobArgs args) {
+ List systemJobTbs = this.queryJobByArgs(args);
+ List rowVos = new ArrayList<>();
+ for (SystemJobTb dataObject : systemJobTbs) {
+ SystemJobExportRowVo rowVo = new SystemJobExportRowVo();
+ rowVo.setName(dataObject.getName());
+ rowVo.setEnabled(dataObject.getEnabled() ? "启用" : "停用");
+ rowVo.setCreateTime(dataObject.getCreateTime());
+ rowVos.add(rowVo);
+ }
+ KitExcelExporter.exportSimple(response, "岗位数据", SystemJobExportRowVo.class, rowVos);
+ }
+
+ public List listByIds(Set jobIds) {
+ return systemJobMapper.selectByIds(jobIds);
+ }
}
diff --git a/cutejava-springboot3/cutejava-module-system/src/main/java/cn/odboy/system/service/SystemLocalStorageService.java b/cutejava-springboot3/cutejava-module-system/src/main/java/cn/odboy/system/service/SystemLocalStorageService.java
index ac4a7d5d..2db33d35 100644
--- a/cutejava-springboot3/cutejava-module-system/src/main/java/cn/odboy/system/service/SystemLocalStorageService.java
+++ b/cutejava-springboot3/cutejava-module-system/src/main/java/cn/odboy/system/service/SystemLocalStorageService.java
@@ -36,142 +36,142 @@ import cn.odboy.util.KitPageUtil;
import cn.odboy.util.xlsx.KitExcelExporter;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import java.io.File;
-import java.util.Date;
-import java.util.List;
-import jakarta.servlet.http.HttpServletResponse;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.multipart.MultipartFile;
+import jakarta.servlet.http.HttpServletResponse;
+import java.io.File;
+import java.util.Date;
+import java.util.List;
@Service
public class SystemLocalStorageService {
- @Autowired
- private SystemLocalStorageMapper systemLocalStorageMapper;
- @Autowired
- private KitFileLocalUploadHelper fileUploadPathHelper;
- @Autowired
- private AppProperties properties;
+ @Autowired
+ private SystemLocalStorageMapper systemLocalStorageMapper;
+ @Autowired
+ private KitFileLocalUploadHelper fileUploadPathHelper;
+ @Autowired
+ private AppProperties properties;
- /**
- * 上传
- *
- * @param name 文件名称
- * @param multipartFile 文件
- * @return /
- */
- @Transactional(rollbackFor = Exception.class)
- public SystemLocalStorageTb uploadFile(String name, MultipartFile multipartFile) {
- long size = multipartFile.getSize();
- KitFileUtil.checkSize(properties.getOss().getMaxSize(), size);
- String suffix = KitFileUtil.getSuffix(multipartFile.getOriginalFilename());
- String type = KitFileUtil.getFileType(suffix);
- String uploadDateStr = DateUtil.format(new Date(), DatePattern.PURE_DATE_FORMAT);
- File file = KitFileUtil.upload(multipartFile, fileUploadPathHelper.getPath() + uploadDateStr + File.separator);
- if (file == null) {
- throw new BadRequestException("上传失败");
+ /**
+ * 上传 -> TestPassed
+ *
+ * @param name 文件名称
+ * @param multipartFile 文件
+ * @return /
+ */
+ @Transactional(rollbackFor = Exception.class)
+ public SystemLocalStorageTb uploadFile(String name, MultipartFile multipartFile) {
+ long size = multipartFile.getSize();
+ KitFileUtil.checkSize(properties.getOss().getMaxSize(), size);
+ String suffix = KitFileUtil.getSuffix(multipartFile.getOriginalFilename());
+ String type = KitFileUtil.getFileType(suffix);
+ String uploadDateStr = DateUtil.format(new Date(), DatePattern.PURE_DATE_FORMAT);
+ File file = KitFileUtil.upload(multipartFile, fileUploadPathHelper.getPath() + uploadDateStr + File.separator);
+ if (file == null) {
+ throw new BadRequestException("上传失败");
+ }
+ try {
+ String formatSize = KitFileUtil.getSize(size);
+ String prefixName =
+ StrUtil.isBlank(name) ? KitFileUtil.getPrefix(multipartFile.getOriginalFilename()) : name;
+ SystemLocalStorageTb localStorage = new SystemLocalStorageTb();
+ localStorage.setRealName(file.getName());
+ localStorage.setName(prefixName);
+ localStorage.setSuffix(suffix);
+ localStorage.setPath(file.getPath());
+ localStorage.setType(type);
+ localStorage.setSize(formatSize);
+ localStorage.setDateGroup(uploadDateStr);
+ systemLocalStorageMapper.insert(localStorage);
+ return localStorage;
+ } catch (Exception e) {
+ KitFileUtil.del(file);
+ throw e;
+ }
}
- try {
- String formatSize = KitFileUtil.getSize(size);
- String prefixName =
- StrUtil.isBlank(name) ? KitFileUtil.getPrefix(multipartFile.getOriginalFilename()) : name;
- SystemLocalStorageTb localStorage = new SystemLocalStorageTb();
- localStorage.setRealName(file.getName());
- localStorage.setName(prefixName);
- localStorage.setSuffix(suffix);
- localStorage.setPath(file.getPath());
- localStorage.setType(type);
- localStorage.setSize(formatSize);
- localStorage.setDateGroup(uploadDateStr);
- systemLocalStorageMapper.insert(localStorage);
- return localStorage;
- } catch (Exception e) {
- KitFileUtil.del(file);
- throw e;
+
+ /**
+ * 编辑 -> TestPassed
+ *
+ * @param args 文件信息
+ */
+ @Transactional(rollbackFor = Exception.class)
+ public void updateLocalStorageById(SystemLocalStorageTb args) {
+ SystemLocalStorageTb localStorage = systemLocalStorageMapper.selectById(args.getId());
+ localStorage.copy(args);
+ systemLocalStorageMapper.insertOrUpdate(localStorage);
}
- }
- /**
- * 编辑
- *
- * @param args 文件信息
- */
- @Transactional(rollbackFor = Exception.class)
- public void updateLocalStorageById(SystemLocalStorageTb args) {
- SystemLocalStorageTb localStorage = systemLocalStorageMapper.selectById(args.getId());
- localStorage.copy(args);
- systemLocalStorageMapper.insertOrUpdate(localStorage);
- }
-
- /**
- * 多选删除
- *
- * @param ids /
- */
- @Transactional(rollbackFor = Exception.class)
- public void deleteFileByIds(Long[] ids) {
- for (Long id : ids) {
- SystemLocalStorageTb storage = systemLocalStorageMapper.selectById(id);
- try {
- KitFileUtil.del(storage.getPath());
- systemLocalStorageMapper.deleteById(storage);
- } catch (IORuntimeException e) {
- throw new BadRequestException("删除文件 " + storage.getName() + " 失败");
- }
+ /**
+ * 多选删除 -> TestPassed
+ *
+ * @param ids /
+ */
+ @Transactional(rollbackFor = Exception.class)
+ public void deleteFileByIds(Long[] ids) {
+ for (Long id : ids) {
+ SystemLocalStorageTb storage = systemLocalStorageMapper.selectById(id);
+ try {
+ KitFileUtil.del(storage.getPath());
+ systemLocalStorageMapper.deleteById(storage);
+ } catch (IORuntimeException e) {
+ throw new BadRequestException("删除文件 " + storage.getName() + " 失败");
+ }
+ }
}
- }
- /**
- * 分页查询
- *
- * @param args 条件
- * @param page 分页参数
- * @return /
- */
- public KitPageResult searchLocalStorage(SystemQueryStorageArgs args,
- Page page) {
- LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>();
- this.injectQueryParams(args, wrapper);
- Page selectPage = systemLocalStorageMapper.selectPage(page, wrapper);
- return KitPageUtil.toPage(selectPage);
- }
-
- private void injectQueryParams(SystemQueryStorageArgs args, LambdaQueryWrapper wrapper) {
- if (args != null) {
- wrapper.and(StrUtil.isNotBlank(args.getBlurry()),
- c -> c.like(SystemLocalStorageTb::getName, args.getBlurry()).or()
- .like(SystemLocalStorageTb::getSuffix, args.getBlurry()).or()
- .like(SystemLocalStorageTb::getType, args.getBlurry()).or()
- .like(SystemLocalStorageTb::getCreateBy, args.getBlurry()));
- if (CollUtil.isNotEmpty(args.getCreateTime()) && args.getCreateTime().size() >= 2) {
- wrapper.between(SystemLocalStorageTb::getUpdateTime, args.getCreateTime().get(0),
- args.getCreateTime().get(1));
- }
+ /**
+ * 分页查询 -> TestPassed
+ *
+ * @param args 条件
+ * @param page 分页参数
+ * @return /
+ */
+ public KitPageResult searchLocalStorage(SystemQueryStorageArgs args,
+ Page page) {
+ LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>();
+ this.injectQueryParams(args, wrapper);
+ Page selectPage = systemLocalStorageMapper.selectPage(page, wrapper);
+ return KitPageUtil.toPage(selectPage);
}
- wrapper.orderByDesc(SystemLocalStorageTb::getId);
- }
- public List queryLocalStorageByArgs(SystemQueryStorageArgs args) {
- LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>();
- this.injectQueryParams(args, wrapper);
- return systemLocalStorageMapper.selectList(wrapper);
- }
-
-
- public SystemLocalStorageTb uploadPictureV1(MultipartFile file) {
- // 判断文件是否为图片
- String suffix = KitFileUtil.getSuffix(file.getOriginalFilename());
- if (!FileTypeEnum.IMAGE.getCode().equals(KitFileUtil.getFileType(suffix))) {
- throw new BadRequestException("只能上传图片");
+ private void injectQueryParams(SystemQueryStorageArgs args, LambdaQueryWrapper wrapper) {
+ if (args != null) {
+ wrapper.and(StrUtil.isNotBlank(args.getBlurry()),
+ c -> c.like(SystemLocalStorageTb::getName, args.getBlurry()).or()
+ .like(SystemLocalStorageTb::getSuffix, args.getBlurry()).or()
+ .like(SystemLocalStorageTb::getType, args.getBlurry()).or()
+ .like(SystemLocalStorageTb::getCreateBy, args.getBlurry()));
+ if (CollUtil.isNotEmpty(args.getCreateTime()) && args.getCreateTime().size() >= 2) {
+ wrapper.between(SystemLocalStorageTb::getUpdateTime, args.getCreateTime().get(0),
+ args.getCreateTime().get(1));
+ }
+ }
+ wrapper.orderByDesc(SystemLocalStorageTb::getId);
}
- return KitSpringBeanHolder.getBean(SystemLocalStorageService.class).uploadFile(null, file);
- }
- public void exportLocalStorageXlsx(HttpServletResponse response, SystemQueryStorageArgs args) {
- List systemLocalStorageTbs = this.queryLocalStorageByArgs(args);
- List rowVos = KitBeanUtil.copyToList(systemLocalStorageTbs, SystemLocalStorageExportRowVo.class);
- KitExcelExporter.exportSimple(response, "文件上传记录数据", SystemLocalStorageExportRowVo.class, rowVos);
- }
+ public List queryLocalStorageByArgs(SystemQueryStorageArgs args) {
+ LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>();
+ this.injectQueryParams(args, wrapper);
+ return systemLocalStorageMapper.selectList(wrapper);
+ }
+
+ public SystemLocalStorageTb uploadPictureV1(MultipartFile file) {
+ // 判断文件是否为图片
+ String suffix = KitFileUtil.getSuffix(file.getOriginalFilename());
+ if (!FileTypeEnum.IMAGE.getCode().equals(KitFileUtil.getFileType(suffix))) {
+ throw new BadRequestException("只能上传图片");
+ }
+ return KitSpringBeanHolder.getBean(SystemLocalStorageService.class).uploadFile(null, file);
+ }
+
+ public void exportLocalStorageXlsx(HttpServletResponse response, SystemQueryStorageArgs args) {
+ List systemLocalStorageTbs = this.queryLocalStorageByArgs(args);
+ List