Bladeren bron

bump: 发布1.7.3

Uncarbon 3 jaren geleden
bovenliggende
commit
88e5725bc7

+ 32 - 2
helio-core/src/main/java/cc/uncarbon/framework/core/page/PageParam.java

@@ -7,6 +7,7 @@ import lombok.NoArgsConstructor;
 import lombok.experimental.Accessors;
 import lombok.experimental.Accessors;
 
 
 import java.io.Serializable;
 import java.io.Serializable;
+import java.util.function.Function;
 
 
 /**
 /**
  * 分页查询参数
  * 分页查询参数
@@ -19,10 +20,39 @@ import java.io.Serializable;
 @Data
 @Data
 public class PageParam implements Serializable {
 public class PageParam implements Serializable {
 
 
+    /**
+     * 全局分页页码限制函数
+     */
+    public static Function<Integer, Integer> globalPageNumLimiter = null;
+
+    /**
+     * 全局分页大小限制函数(如:限制页大小上限为1000)
+     */
+    public static Function<Integer, Integer> globalPageSizeLimiter = null;
+
     @ApiModelProperty(value = "当前页码")
     @ApiModelProperty(value = "当前页码")
-    private int pageNum = 1;
+    private Integer pageNum;
+    public Integer getPageNum() {
+        if (pageNum == null) {
+            pageNum = 1;
+        }
+
+        if (globalPageNumLimiter != null) {
+            pageNum = globalPageNumLimiter.apply(pageNum);
+        }
+        return pageNum;
+    }
 
 
     @ApiModelProperty(value = "当前页大小")
     @ApiModelProperty(value = "当前页大小")
-    private int pageSize = 10;
+    private Integer pageSize;
+    public Integer getPageSize() {
+        if (pageSize == null) {
+            pageSize = 10;
+        }
 
 
+        if (globalPageSizeLimiter != null) {
+            return globalPageSizeLimiter.apply(pageSize);
+        }
+        return pageSize;
+    }
 }
 }

+ 2 - 1
helio-starter-crud/src/main/java/cc/uncarbon/framework/crud/dynamicdatasource/HelioDynamicDataSourceRegistry.java

@@ -5,11 +5,12 @@ import com.baomidou.dynamic.datasource.DynamicRoutingDataSource;
 import com.baomidou.dynamic.datasource.creator.HikariDataSourceCreator;
 import com.baomidou.dynamic.datasource.creator.HikariDataSourceCreator;
 import com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DataSourceProperty;
 import com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DataSourceProperty;
 import com.zaxxer.hikari.HikariDataSource;
 import com.zaxxer.hikari.HikariDataSource;
-import javax.sql.DataSource;
 import lombok.RequiredArgsConstructor;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.ObjectProvider;
 import org.springframework.beans.factory.ObjectProvider;
 
 
+import javax.sql.DataSource;
+
 /**
 /**
  * Helio 动态多数据源登记处
  * Helio 动态多数据源登记处
  *
  *

+ 6 - 7
helio-starter-crud/src/main/java/cc/uncarbon/framework/crud/entity/HelioBaseEntity.java

@@ -1,15 +1,10 @@
 package cc.uncarbon.framework.crud.entity;
 package cc.uncarbon.framework.crud.entity;
 
 
 import cc.uncarbon.framework.core.constant.HelioConstant;
 import cc.uncarbon.framework.core.constant.HelioConstant;
-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 com.baomidou.mybatisplus.annotation.TableLogic;
+import cc.uncarbon.framework.crud.enums.YesOrNoEnum;
+import com.baomidou.mybatisplus.annotation.*;
 import com.fasterxml.jackson.annotation.JsonFormat;
 import com.fasterxml.jackson.annotation.JsonFormat;
 import io.swagger.annotations.ApiModelProperty;
 import io.swagger.annotations.ApiModelProperty;
-import java.io.Serializable;
-import java.time.LocalDateTime;
 import lombok.AllArgsConstructor;
 import lombok.AllArgsConstructor;
 import lombok.Data;
 import lombok.Data;
 import lombok.NoArgsConstructor;
 import lombok.NoArgsConstructor;
@@ -17,6 +12,9 @@ import lombok.experimental.Accessors;
 import lombok.experimental.SuperBuilder;
 import lombok.experimental.SuperBuilder;
 import org.springframework.format.annotation.DateTimeFormat;
 import org.springframework.format.annotation.DateTimeFormat;
 
 
+import java.io.Serializable;
+import java.time.LocalDateTime;
+
 /**
 /**
  * 基础实体类,默认含[行级租户ID]
  * 基础实体类,默认含[行级租户ID]
  * T = 主键类型,一般用 Long
  * T = 主键类型,一般用 Long
@@ -57,6 +55,7 @@ public abstract class HelioBaseEntity<T extends Serializable> implements Seriali
 
 
     /**
     /**
      * 逻辑删除标识
      * 逻辑删除标识
+     * @see YesOrNoEnum
      */
      */
     @ApiModelProperty(value = "逻辑删除标识")
     @ApiModelProperty(value = "逻辑删除标识")
     @TableLogic
     @TableLogic

+ 63 - 0
helio-starter-crud/src/main/java/cc/uncarbon/framework/crud/enums/EnabledStatusEnum.java

@@ -0,0 +1,63 @@
+package cc.uncarbon.framework.crud.enums;
+
+import cc.uncarbon.framework.core.enums.HelioBaseEnum;
+import com.baomidou.mybatisplus.annotation.EnumValue;
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+
+
+/**
+ * 启用状态枚举
+ */
+@AllArgsConstructor
+@Getter
+public enum EnabledStatusEnum implements HelioBaseEnum<Integer> {
+
+    DISABLED(0, "禁用"),
+    ENABLED(1, "启用"),
+
+    ;
+    @EnumValue
+    private final Integer value;
+    private final String label;
+
+    /**
+     * 根据值得到枚举对象
+     * @param value 外部值
+     * @return null or 枚举对象
+     */
+    public static EnabledStatusEnum of(Integer value) {
+        if (value == null) {
+            return null;
+        }
+
+        // 区分度小,直接用if判断了
+        if (DISABLED.value.equals(value)) {
+            return DISABLED;
+        }
+        if (ENABLED.value.equals(value)) {
+            return ENABLED;
+        }
+        return null;
+    }
+
+    /**
+     * 取反值
+     * @param old 原值
+     * @return 新值
+     */
+    public static EnabledStatusEnum reverse(EnabledStatusEnum old) {
+        if (old == null) {
+            return null;
+        }
+
+        switch (old) {
+            case DISABLED:
+                return ENABLED;
+            case ENABLED:
+                return DISABLED;
+        }
+
+        throw new IllegalArgumentException();
+    }
+}

+ 23 - 2
helio-starter-crud/src/main/java/cc/uncarbon/framework/crud/enums/YesOrNoEnum.java

@@ -5,20 +5,41 @@ import com.baomidou.mybatisplus.annotation.EnumValue;
 import lombok.AllArgsConstructor;
 import lombok.AllArgsConstructor;
 import lombok.Getter;
 import lombok.Getter;
 
 
+/**
+ * 是或否枚举
+ */
 @AllArgsConstructor
 @AllArgsConstructor
 @Getter
 @Getter
 public enum YesOrNoEnum implements HelioBaseEnum<Integer> {
 public enum YesOrNoEnum implements HelioBaseEnum<Integer> {
 
 
     YES(1, "是"),
     YES(1, "是"),
-
     NO(0, "否"),
     NO(0, "否"),
 
 
     ;
     ;
-
     @EnumValue
     @EnumValue
     private final Integer value;
     private final Integer value;
     private final String label;
     private final String label;
 
 
+    /**
+     * 根据值得到枚举对象
+     * @param value 外部值
+     * @return null or 枚举对象
+     */
+    public static YesOrNoEnum of(Integer value) {
+        if (value == null) {
+            return null;
+        }
+
+        // 区分度小,直接用if判断了
+        if (YES.value.equals(value)) {
+            return YES;
+        }
+        if (NO.value.equals(value)) {
+            return NO;
+        }
+        return null;
+    }
+
     /**
     /**
      * 取反值
      * 取反值
      * @param old 原值
      * @param old 原值

+ 18 - 0
helio-starter-crud/src/main/java/cc/uncarbon/framework/crud/service/impl/HelioBaseServiceImpl.java

@@ -2,6 +2,7 @@ package cc.uncarbon.framework.crud.service.impl;
 
 
 import cc.uncarbon.framework.crud.entity.HelioBaseEntity;
 import cc.uncarbon.framework.crud.entity.HelioBaseEntity;
 import cc.uncarbon.framework.crud.service.HelioBaseService;
 import cc.uncarbon.framework.crud.service.HelioBaseService;
+import com.baomidou.mybatisplus.core.conditions.Wrapper;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import lombok.NoArgsConstructor;
 import lombok.NoArgsConstructor;
@@ -16,4 +17,21 @@ import lombok.NoArgsConstructor;
 @NoArgsConstructor
 @NoArgsConstructor
 public class HelioBaseServiceImpl<M extends BaseMapper<E>, E extends HelioBaseEntity<?>> extends ServiceImpl<M, E> implements HelioBaseService<E> {
 public class HelioBaseServiceImpl<M extends BaseMapper<E>, E extends HelioBaseEntity<?>> extends ServiceImpl<M, E> implements HelioBaseService<E> {
 
 
+    /**
+     * 解决MP自带的本方法,自动填充字段不生效问题
+     * 参考: https://cloud.tencent.com/developer/article/1930108
+     */
+    @Override
+    public boolean update(Wrapper<E> updateWrapper) {
+        E entity = updateWrapper.getEntity();
+        if (null == entity) {
+            try {
+                entity = this.currentModelClass().newInstance();
+            } catch (InstantiationException | IllegalAccessException e) {
+                // ignored
+            }
+        }
+        return update(entity, updateWrapper);
+    }
+
 }
 }

+ 2 - 0
helio-starter-tenant/src/main/java/cc/uncarbon/framework/tenant/config/GlobalTenantDataSourceConfiguration.java

@@ -12,6 +12,8 @@ import org.springframework.context.annotation.Role;
 
 
 /**
 /**
  * 基于全局 AOP 的数据源级多租户配置类
  * 基于全局 AOP 的数据源级多租户配置类
+ * 参考
+ * https://blog.csdn.net/w57685321/article/details/106823660
  *
  *
  * @author Uncarbon
  * @author Uncarbon
  */
  */

+ 5 - 5
pom.xml

@@ -24,7 +24,7 @@
     <parent>
     <parent>
         <groupId>org.springframework.boot</groupId>
         <groupId>org.springframework.boot</groupId>
         <artifactId>spring-boot-starter-parent</artifactId>
         <artifactId>spring-boot-starter-parent</artifactId>
-        <version>2.7.6</version>
+        <version>2.7.9</version>
         <relativePath/>
         <relativePath/>
     </parent>
     </parent>
 
 
@@ -34,12 +34,12 @@
 
 
     <properties>
     <properties>
         <!-- core versions -->
         <!-- core versions -->
-        <revision>1.7.2</revision>
+        <revision>1.7.3</revision>
         <helio-starters.version>${revision}</helio-starters.version>
         <helio-starters.version>${revision}</helio-starters.version>
         <!-- JDK8则改为'1.8'  JDK11则改为'11' -->
         <!-- JDK8则改为'1.8'  JDK11则改为'11' -->
         <java.version>1.8</java.version>
         <java.version>1.8</java.version>
         <!-- 若变更Spring Boot版本, 上面parent依赖版本也要变 -->
         <!-- 若变更Spring Boot版本, 上面parent依赖版本也要变 -->
-        <spring-boot.version>2.7.6</spring-boot.version>
+        <spring-boot.version>2.7.9</spring-boot.version>
 
 
 
 
         <!-- Spring Cloud versions -->
         <!-- Spring Cloud versions -->
@@ -55,8 +55,8 @@
 
 
 
 
         <!-- 3rd-party versions -->
         <!-- 3rd-party versions -->
-        <hutool.version>5.8.10</hutool.version>
-        <sa-token.version>1.33.0</sa-token.version>
+        <hutool.version>5.8.15</hutool.version>
+        <sa-token.version>1.34.0</sa-token.version>
         <transmittable-thread-local.version>2.14.2</transmittable-thread-local.version>
         <transmittable-thread-local.version>2.14.2</transmittable-thread-local.version>
         <!-- 如果 mp 较新版存在问题,可以回退至 3.4.3.4 试试  -->
         <!-- 如果 mp 较新版存在问题,可以回退至 3.4.3.4 试试  -->
         <mybatis-plus.version>3.5.2</mybatis-plus.version>
         <mybatis-plus.version>3.5.2</mybatis-plus.version>