From ae4fd74cc4c60a1fd18b76f27da839acabf9badb Mon Sep 17 00:00:00 2001
From: xiangpei <xiangpei@timesnew.cn>
Date: 星期一, 04 三月 2024 14:51:59 +0800
Subject: [PATCH] 使用plus的逻辑删除、自动填充、通用枚举。定义了基础的实体类、表单类、查询类、响应类;数据校验分组

---
 ycl-server/src/main/resources/application.yml                      |    7 +
 ycl-pojo/src/main/java/com/ycl/system/domain/group/Add.java        |   10 +++
 ycl-pojo/src/main/java/com/ycl/system/domain/base/AbsQuery.java    |   21 +++++++
 ycl-common/pom.xml                                                 |    2 
 ycl-pojo/src/main/java/com/ycl/system/domain/base/AbsVo.java       |   25 ++++++++
 ycl-pojo/src/main/java/com/ycl/system/domain/group/Update.java     |   10 +++
 ycl-pojo/src/main/java/com/ycl/system/domain/base/AbsEntity.java   |   35 +++++++++++
 ycl-pojo/src/main/java/com/ycl/system/domain/base/AbsForm.java     |   21 +++++++
 ycl-server/src/main/java/com/ycl/plus/CustomMetaObjectHandler.java |   39 +++++++++++++
 9 files changed, 167 insertions(+), 3 deletions(-)

diff --git a/ycl-common/pom.xml b/ycl-common/pom.xml
index 6edaf79..67ab2fd 100644
--- a/ycl-common/pom.xml
+++ b/ycl-common/pom.xml
@@ -46,4 +46,4 @@
 
     </dependencies>
 
-</project>
\ No newline at end of file
+</project>
diff --git a/ycl-pojo/src/main/java/com/ycl/system/domain/base/AbsEntity.java b/ycl-pojo/src/main/java/com/ycl/system/domain/base/AbsEntity.java
new file mode 100644
index 0000000..99ad69f
--- /dev/null
+++ b/ycl-pojo/src/main/java/com/ycl/system/domain/base/AbsEntity.java
@@ -0,0 +1,35 @@
+package com.ycl.system.domain.base;
+
+import com.baomidou.mybatisplus.annotation.FieldFill;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import lombok.Data;
+
+import java.util.Date;
+
+/**
+ * 绠�鍗曠殑瀹炰綋绫诲瓧娈�
+ *
+ * @author锛歺p
+ * @date锛�2024/3/4 14:27
+ */
+@Data
+public abstract class AbsEntity {
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    /** 鍒涘缓鏃堕棿 */
+    @TableField(value = "create_time", fill = FieldFill.INSERT)
+    private Date createTime;
+
+    /** 淇敼鏃堕棿 */
+    @TableField(value = "update_time", fill = FieldFill.INSERT_UPDATE)
+    private Date updateTime;
+
+    /** 閫昏緫鍒犻櫎 */
+    @TableField(value = "deleted", fill = FieldFill.INSERT)
+    private String deleted;
+
+}
diff --git a/ycl-pojo/src/main/java/com/ycl/system/domain/base/AbsForm.java b/ycl-pojo/src/main/java/com/ycl/system/domain/base/AbsForm.java
new file mode 100644
index 0000000..080d0fc
--- /dev/null
+++ b/ycl-pojo/src/main/java/com/ycl/system/domain/base/AbsForm.java
@@ -0,0 +1,21 @@
+package com.ycl.system.domain.base;
+
+import com.ycl.system.domain.group.Update;
+import io.swagger.annotations.ApiModelProperty;
+import jakarta.validation.constraints.NotBlank;
+import lombok.Data;
+
+/**
+ * 鍩虹琛ㄥ崟(娣诲姞銆佷慨鏀�)鍙傛暟
+ *
+ * @author xp
+ * @date 2022/11/29
+ */
+@Data
+public abstract class AbsForm {
+
+    @ApiModelProperty(value = "id,淇敼蹇呬紶", required = false)
+    @NotBlank(message = "璇烽�夋嫨鏁版嵁", groups = {Update.class})
+    private String id;
+
+}
diff --git a/ycl-pojo/src/main/java/com/ycl/system/domain/base/AbsQuery.java b/ycl-pojo/src/main/java/com/ycl/system/domain/base/AbsQuery.java
new file mode 100644
index 0000000..4899a2e
--- /dev/null
+++ b/ycl-pojo/src/main/java/com/ycl/system/domain/base/AbsQuery.java
@@ -0,0 +1,21 @@
+package com.ycl.system.domain.base;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * 鍩虹鏌ヨ(鍒嗛〉)绫�
+ *
+ * @author锛歺p
+ * @date锛�2024/3/4 14:39
+ */
+@Data
+public class AbsQuery {
+
+    @ApiModelProperty(value = "褰撳墠椤�", required = true)
+    private Long currentPage = 1L;
+
+    @ApiModelProperty(value = "姣忛〉鏉℃暟", required = true)
+    private Long pageSize = 10L;
+
+}
diff --git a/ycl-pojo/src/main/java/com/ycl/system/domain/base/AbsVo.java b/ycl-pojo/src/main/java/com/ycl/system/domain/base/AbsVo.java
new file mode 100644
index 0000000..79da4b4
--- /dev/null
+++ b/ycl-pojo/src/main/java/com/ycl/system/domain/base/AbsVo.java
@@ -0,0 +1,25 @@
+package com.ycl.system.domain.base;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+
+import java.util.Date;
+
+/**
+ * 鍩虹鍝嶅簲
+ *
+ * @author xp
+ * @date 2024/3/4
+ */
+@Data
+public abstract class AbsVo {
+
+    private Integer id;
+
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private Date gmtCreate;
+
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private Date gmtUpdate;
+
+}
diff --git a/ycl-pojo/src/main/java/com/ycl/system/domain/group/Add.java b/ycl-pojo/src/main/java/com/ycl/system/domain/group/Add.java
new file mode 100644
index 0000000..1319135
--- /dev/null
+++ b/ycl-pojo/src/main/java/com/ycl/system/domain/group/Add.java
@@ -0,0 +1,10 @@
+package com.ycl.system.domain.group;
+
+/**
+ * 鏁版嵁鏍¢獙鍒嗙粍-娣诲姞
+ *
+ * @author锛歺p
+ * @date锛�2024/3/4 14:45
+ */
+public interface Add {
+}
diff --git a/ycl-pojo/src/main/java/com/ycl/system/domain/group/Update.java b/ycl-pojo/src/main/java/com/ycl/system/domain/group/Update.java
new file mode 100644
index 0000000..edf0d2f
--- /dev/null
+++ b/ycl-pojo/src/main/java/com/ycl/system/domain/group/Update.java
@@ -0,0 +1,10 @@
+package com.ycl.system.domain.group;
+
+/**
+ * 鏁版嵁鏍¢獙鍒嗙粍-淇敼
+ *
+ * @author锛歺p
+ * @date锛�2024/3/4 14:46
+ */
+public interface Update {
+}
diff --git a/ycl-server/src/main/java/com/ycl/plus/CustomMetaObjectHandler.java b/ycl-server/src/main/java/com/ycl/plus/CustomMetaObjectHandler.java
new file mode 100644
index 0000000..77a574c
--- /dev/null
+++ b/ycl-server/src/main/java/com/ycl/plus/CustomMetaObjectHandler.java
@@ -0,0 +1,39 @@
+package com.ycl.plus;
+
+import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;
+import org.apache.ibatis.reflection.MetaObject;
+import org.springframework.stereotype.Component;
+
+import java.util.Date;
+
+/**
+ * plus鑷姩濉厖
+ *
+ * @author xp
+ * @date 2024/3/4
+ */
+@Component
+public class CustomMetaObjectHandler implements MetaObjectHandler {
+
+    /**
+     * 鎻掑叆濉厖
+     *
+     * @param metaObject
+     */
+    @Override
+    public void insertFill(MetaObject metaObject) {
+        this.setFieldValByName("updateTime", new Date(), metaObject);
+        this.setFieldValByName("createTime", new Date(), metaObject);
+        this.setFieldValByName("deleted", "0", metaObject);
+    }
+
+    /**
+     * 淇敼濉厖
+     *
+     * @param metaObject
+     */
+    @Override
+    public void updateFill(MetaObject metaObject) {
+        this.setFieldValByName("updateTime", new Date(), metaObject);
+    }
+}
diff --git a/ycl-server/src/main/resources/application.yml b/ycl-server/src/main/resources/application.yml
index 6cb55a0..075ca61 100644
--- a/ycl-server/src/main/resources/application.yml
+++ b/ycl-server/src/main/resources/application.yml
@@ -59,11 +59,14 @@
   mapper-locations: classpath*:mapper/**/*.xml
   # 瀹炰綋鎵弿锛屽涓猵ackage鐢ㄩ�楀彿鎴栬�呭垎鍙峰垎闅�
   typeAliasesPackage: com.ycl.**.domain
+  configuration:
+    default-enum-type-handler: org.apache.ibatis.type.EnumOrdinalTypeHandler # 閫氱敤鏋氫妇澶勭悊鍣�
+  #    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl # 鏃ュ織鎵撳嵃
   global-config:
     db-config:
       id-type: auto
       #閫昏緫鍒犻櫎閰嶇疆瀛楁
-      logic-delete-field:
+      logic-delete-field: deleted
       #閫昏緫鍒犻櫎閰嶇疆瀛楁 1 鍒犻櫎
       logic-delete-value: 1
       #閫昏緫鍒犻櫎閰嶇疆瀛楁 0 涓嶅垹闄�
@@ -117,4 +120,4 @@
   # 鎺掗櫎閾炬帴锛堝涓敤閫楀彿鍒嗛殧锛�
   excludes: /system/notice
   # 鍖归厤閾炬帴
-  urlPatterns: /system/*,/monitor/*,/tool/*
\ No newline at end of file
+  urlPatterns: /system/*,/monitor/*,/tool/*

--
Gitblit v1.8.0