From d3c9445b77a68391443b6a71adce70041723150c Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E9=83=AD=E6=B3=B3=E8=BE=B0?= <312189607@qq.com>
Date: Mon, 29 Jan 2024 18:13:24 +0800
Subject: [PATCH 1/5] =?UTF-8?q?=E5=88=9B=E5=BB=BA=E8=8F=9C=E5=8D=95?=
=?UTF-8?q?=E6=A8=A1=E5=9E=8B=EF=BC=8C=E4=BF=AE=E6=94=B9=E5=AD=97=E6=AE=B5?=
=?UTF-8?q?=E8=87=AA=E5=8A=A8=E5=A1=AB=E5=85=85=EF=BC=8C=E6=96=B0=E5=A2=9E?=
=?UTF-8?q?=E8=87=AA=E5=AE=9A=E4=B9=89=E6=A0=A1=E9=AA=8C=E6=B3=A8=E8=A7=A3?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
README.md | 2 +
.../mybatisPlus/MyMetaObjectHandler.java | 25 +++-
.../annotation/CollectionElementNotNull.java | 41 ++++++
.../CollectionElementNotNullValidator.java | 24 ++++
.../main/controller/LogMainController.java | 3 +-
.../modular/main/param/LogMainAddParam.java | 8 ++
.../main/service/impl/LogMainServiceImpl.java | 24 +++-
.../menu/controller/SysMenuController.java | 97 +++++++++++++
.../modular/menu/entity/SysMenuEntity.java | 127 ++++++++++++++++++
.../modular/menu/enums/SysMenuTypeEnum.java | 40 ++++++
.../modular/menu/mapper/SysMenuMapper.java | 16 +++
.../menu/mapper/mapping/SysMenuMapper.xml | 6 +
.../modular/menu/param/SysMenuAddParam.java | 102 ++++++++++++++
.../modular/menu/param/SysMenuEditParam.java | 111 +++++++++++++++
.../modular/menu/param/SysMenuIdParam.java | 30 +++++
.../modular/menu/param/SysMenuPageParam.java | 103 ++++++++++++++
.../modular/menu/service/SysMenuService.java | 75 +++++++++++
.../menu/service/impl/SysMenuServiceImpl.java | 114 ++++++++++++++++
.../sys/modular/menu/vo/SysMenuVo.java | 111 +++++++++++++++
.../controller/SysRelationshipController.java | 93 ++++++-------
.../enums/SysRelationshipTypeEnum.java | 2 +-
.../service/SysRelationshipService.java | 16 +--
.../impl/SysRelationshipServiceImpl.java | 46 +++----
.../role/controller/SysRoleController.java | 17 ++-
.../role/param/SysRoleAssignUserParam.java | 30 +++++
.../modular/role/service/SysRoleService.java | 12 +-
.../role/service/impl/SysRoleServiceImpl.java | 11 +-
.../user/controller/SysUserController.java | 5 +-
28 files changed, 1188 insertions(+), 103 deletions(-)
create mode 100644 milkbox-common/src/main/java/top/milkbox/common/validation/annotation/CollectionElementNotNull.java
create mode 100644 milkbox-common/src/main/java/top/milkbox/common/validation/validator/CollectionElementNotNullValidator.java
create mode 100644 milkbox-service/service-sys/src/main/java/top/milkbox/sys/modular/menu/controller/SysMenuController.java
create mode 100644 milkbox-service/service-sys/src/main/java/top/milkbox/sys/modular/menu/entity/SysMenuEntity.java
create mode 100644 milkbox-service/service-sys/src/main/java/top/milkbox/sys/modular/menu/enums/SysMenuTypeEnum.java
create mode 100644 milkbox-service/service-sys/src/main/java/top/milkbox/sys/modular/menu/mapper/SysMenuMapper.java
create mode 100644 milkbox-service/service-sys/src/main/java/top/milkbox/sys/modular/menu/mapper/mapping/SysMenuMapper.xml
create mode 100644 milkbox-service/service-sys/src/main/java/top/milkbox/sys/modular/menu/param/SysMenuAddParam.java
create mode 100644 milkbox-service/service-sys/src/main/java/top/milkbox/sys/modular/menu/param/SysMenuEditParam.java
create mode 100644 milkbox-service/service-sys/src/main/java/top/milkbox/sys/modular/menu/param/SysMenuIdParam.java
create mode 100644 milkbox-service/service-sys/src/main/java/top/milkbox/sys/modular/menu/param/SysMenuPageParam.java
create mode 100644 milkbox-service/service-sys/src/main/java/top/milkbox/sys/modular/menu/service/SysMenuService.java
create mode 100644 milkbox-service/service-sys/src/main/java/top/milkbox/sys/modular/menu/service/impl/SysMenuServiceImpl.java
create mode 100644 milkbox-service/service-sys/src/main/java/top/milkbox/sys/modular/menu/vo/SysMenuVo.java
create mode 100644 milkbox-service/service-sys/src/main/java/top/milkbox/sys/modular/role/param/SysRoleAssignUserParam.java
diff --git a/README.md b/README.md
index 445a366..3d0cf33 100644
--- a/README.md
+++ b/README.md
@@ -20,6 +20,8 @@
权限认证(SaToken)
+密码保护(BCrypt)
+
# 升级java21的问题
升级到java21以后的启动参数,不加会报错
diff --git a/milkbox-app/src/main/java/top/milkbox/app/core/handler/mybatisPlus/MyMetaObjectHandler.java b/milkbox-app/src/main/java/top/milkbox/app/core/handler/mybatisPlus/MyMetaObjectHandler.java
index a425dcb..8439190 100644
--- a/milkbox-app/src/main/java/top/milkbox/app/core/handler/mybatisPlus/MyMetaObjectHandler.java
+++ b/milkbox-app/src/main/java/top/milkbox/app/core/handler/mybatisPlus/MyMetaObjectHandler.java
@@ -1,5 +1,8 @@
package top.milkbox.app.core.handler.mybatisPlus;
+import cn.dev33.satoken.exception.NotLoginException;
+import cn.dev33.satoken.exception.NotWebContextException;
+import cn.dev33.satoken.stp.StpUtil;
import cn.hutool.core.date.DateTime;
import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;
import org.apache.ibatis.reflection.MetaObject;
@@ -9,21 +12,31 @@ import top.milkbox.common.enums.CommonDeleteFlagEnum;
import java.util.Date;
/**
- * 常用字段自动填充器
+ * 常用字段自动填充器
+ * 默认填充策略:如果原来的属性有值则不覆盖,如果手动在这里改为null则不填充
* 创建时间: 2024-01-15 下午 4:08
*
* @author milkbox
*/
@Component
public class MyMetaObjectHandler implements MetaObjectHandler {
+
+ private Integer getLoginId() {
+ try {
+ return StpUtil.getLoginIdAsInt();
+ } catch (NotLoginException e) { // 未登录
+ return null;
+ } catch (NotWebContextException e) { // 非web上下文,无法使用sa-token
+ return null;
+ }
+ }
+
@Override
public void insertFill(MetaObject metaObject) {
// 删除字段
this.strictInsertFill(metaObject, "deleteFlag",
() -> CommonDeleteFlagEnum.NOT_DELETE, CommonDeleteFlagEnum.class);
- // TODO 创建人,这个需要saToken
- this.strictInsertFill(metaObject, "createUser",
- () -> -1, Integer.class);
+ this.strictInsertFill(metaObject, "createUser", this::getLoginId, Integer.class);
// 创建时间
this.strictInsertFill(metaObject, "createTime",
DateTime::now, Date.class);
@@ -31,9 +44,7 @@ public class MyMetaObjectHandler implements MetaObjectHandler {
@Override
public void updateFill(MetaObject metaObject) {
- // TODO 更新人,这个需要saToken
- this.strictUpdateFill(metaObject, "updateUser",
- () -> -1, Integer.class);
+ this.strictUpdateFill(metaObject, "updateUser", this::getLoginId, Integer.class);
// 更新时间
this.strictUpdateFill(metaObject, "updateTime",
DateTime::now, Date.class);
diff --git a/milkbox-common/src/main/java/top/milkbox/common/validation/annotation/CollectionElementNotNull.java b/milkbox-common/src/main/java/top/milkbox/common/validation/annotation/CollectionElementNotNull.java
new file mode 100644
index 0000000..534ab5b
--- /dev/null
+++ b/milkbox-common/src/main/java/top/milkbox/common/validation/annotation/CollectionElementNotNull.java
@@ -0,0 +1,41 @@
+package top.milkbox.common.validation.annotation;
+
+import jakarta.validation.Constraint;
+import jakarta.validation.Payload;
+import top.milkbox.common.validation.validator.CollectionElementNotNullValidator;
+
+import java.lang.annotation.Documented;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+
+// TODO 请参照此注解编写更多的自定义校验,例如手机号、邮箱等
+
+/**
+ * 自定义校验注解
+ * 校验集合中的每一个元素都不为空
+ * 如果校验对象为空、集合元素为0或集合中的所有元素都不为空则校验通过
+ * 创建时间: 2024-01-29 下午 2:22
+ *
+ * @author milkbox
+ */
+@Documented
+@Retention(RetentionPolicy.RUNTIME)
+@Constraint(validatedBy = CollectionElementNotNullValidator.class) // 校验的逻辑处理类
+public @interface CollectionElementNotNull {
+
+ /**
+ * 提示的信息
+ *
+ * @return 默认值:集合中不能出现空元素
+ */
+ String message() default "集合中不能出现空元素";
+
+ /**
+ * 分组验证
+ *
+ * @return 默认值:{}
+ */
+ Class>[] groups() default {};
+
+ Class extends Payload>[] payload() default {};
+}
diff --git a/milkbox-common/src/main/java/top/milkbox/common/validation/validator/CollectionElementNotNullValidator.java b/milkbox-common/src/main/java/top/milkbox/common/validation/validator/CollectionElementNotNullValidator.java
new file mode 100644
index 0000000..f97708f
--- /dev/null
+++ b/milkbox-common/src/main/java/top/milkbox/common/validation/validator/CollectionElementNotNullValidator.java
@@ -0,0 +1,24 @@
+package top.milkbox.common.validation.validator;
+
+import cn.hutool.core.util.ObjectUtil;
+import jakarta.validation.ConstraintValidator;
+import jakarta.validation.ConstraintValidatorContext;
+import top.milkbox.common.validation.annotation.CollectionElementNotNull;
+
+import java.util.Collection;
+
+/**
+ * 创建时间: 2024-01-29 下午 2:27
+ *
+ * @author milkbox
+ */
+public class CollectionElementNotNullValidator implements ConstraintValidator> {
+
+ @Override
+ public boolean isValid(Collection> value, ConstraintValidatorContext context) {
+ if (ObjectUtil.isNotEmpty(value)) {
+ return value.stream().noneMatch(ObjectUtil::isNull);
+ }
+ return true;
+ }
+}
diff --git a/milkbox-service/service-log/src/main/java/top/milkbox/log/modular/main/controller/LogMainController.java b/milkbox-service/service-log/src/main/java/top/milkbox/log/modular/main/controller/LogMainController.java
index 874881f..4d1d855 100644
--- a/milkbox-service/service-log/src/main/java/top/milkbox/log/modular/main/controller/LogMainController.java
+++ b/milkbox-service/service-log/src/main/java/top/milkbox/log/modular/main/controller/LogMainController.java
@@ -11,6 +11,7 @@ import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import top.milkbox.common.annotation.CommonLog;
import top.milkbox.common.enums.LogTypeEnum;
+import top.milkbox.common.validation.annotation.CollectionElementNotNull;
import top.milkbox.log.core.config.LogConfiguration;
import top.milkbox.log.modular.main.param.LogMainAddParam;
import top.milkbox.log.modular.main.param.LogMainEditParam;
@@ -50,9 +51,9 @@ public class LogMainController {
@Operation(summary = "批量删除")
@CommonLog(value = "批量删除", module = LogConfiguration.MODULE_NAME, type = LogTypeEnum.DELETE)
public CommonResult