Эх сурвалжийг харах

bump: 发布1.9.0

details see: https://helio.uncarbon.cc/#/i18n/zh-CN/appendix/change-log
Uncarbon 2 жил өмнө
parent
commit
5445150b5e

+ 6 - 0
helio-core/pom.xml

@@ -71,6 +71,12 @@
             <groupId>com.github.xiaoymin</groupId>
             <artifactId>knife4j-annotations</artifactId>
         </dependency>
+
+        <!-- mybatis-plus 注解包 -->
+        <dependency>
+            <groupId>com.baomidou</groupId>
+            <artifactId>mybatis-plus-annotation</artifactId>
+        </dependency>
     </dependencies>
 
 </project>

+ 10 - 2
helio-starter-crud/src/main/java/cc/uncarbon/framework/crud/enums/EnabledStatusEnum.java → helio-core/src/main/java/cc/uncarbon/framework/core/enums/EnabledStatusEnum.java

@@ -1,6 +1,5 @@
-package cc.uncarbon.framework.crud.enums;
+package cc.uncarbon.framework.core.enums;
 
-import cc.uncarbon.framework.core.enums.HelioBaseEnum;
 import com.baomidou.mybatisplus.annotation.EnumValue;
 import lombok.AllArgsConstructor;
 import lombok.Getter;
@@ -41,6 +40,15 @@ public enum EnabledStatusEnum implements HelioBaseEnum<Integer> {
         return null;
     }
 
+    /**
+     * 根据值得到枚举对象
+     * @param value 外部值
+     * @return null or 枚举对象
+     */
+    public static EnabledStatusEnum of(boolean value) {
+        return value ? ENABLED : DISABLED;
+    }
+
     /**
      * 取反值
      * @param old 原值

+ 24 - 0
helio-core/src/main/java/cc/uncarbon/framework/core/enums/GenderEnum.java

@@ -0,0 +1,24 @@
+package cc.uncarbon.framework.core.enums;
+
+import com.baomidou.mybatisplus.annotation.EnumValue;
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+
+
+/**
+ * 生理性别枚举类
+ */
+@AllArgsConstructor
+@Getter
+public enum GenderEnum implements HelioBaseEnum<Integer> {
+
+    UNKNOWN(0, "未知"),
+    MALE(1, "男"),
+    FEMALE(2, "女"),
+
+    ;
+    @EnumValue
+    private final Integer value;
+    private final String label;
+
+}

+ 11 - 3
helio-starter-crud/src/main/java/cc/uncarbon/framework/crud/enums/YesOrNoEnum.java → helio-core/src/main/java/cc/uncarbon/framework/core/enums/YesOrNoEnum.java

@@ -1,6 +1,5 @@
-package cc.uncarbon.framework.crud.enums;
+package cc.uncarbon.framework.core.enums;
 
-import cc.uncarbon.framework.core.enums.HelioBaseEnum;
 import com.baomidou.mybatisplus.annotation.EnumValue;
 import lombok.AllArgsConstructor;
 import lombok.Getter;
@@ -12,8 +11,8 @@ import lombok.Getter;
 @Getter
 public enum YesOrNoEnum implements HelioBaseEnum<Integer> {
 
-    YES(1, "是"),
     NO(0, "否"),
+    YES(1, "是"),
 
     ;
     @EnumValue
@@ -40,6 +39,15 @@ public enum YesOrNoEnum implements HelioBaseEnum<Integer> {
         return null;
     }
 
+    /**
+     * 根据值得到枚举对象
+     * @param value 外部值
+     * @return null or 枚举对象
+     */
+    public static YesOrNoEnum of(boolean value) {
+        return value ? YES : NO;
+    }
+
     /**
      * 取反值
      * @param old 原值

+ 2 - 3
helio-starter-crud/src/main/java/cc/uncarbon/framework/crud/entity/HelioBaseEntity.java

@@ -1,7 +1,6 @@
 package cc.uncarbon.framework.crud.entity;
 
 import cc.uncarbon.framework.core.constant.HelioConstant;
-import cc.uncarbon.framework.crud.enums.YesOrNoEnum;
 import com.baomidou.mybatisplus.annotation.*;
 import com.fasterxml.jackson.annotation.JsonFormat;
 import io.swagger.annotations.ApiModelProperty;
@@ -55,9 +54,9 @@ public abstract class HelioBaseEntity<T extends Serializable> implements Seriali
 
     /**
      * 逻辑删除标识
-     * @see YesOrNoEnum
+     * 0=否 1=是
      */
-    @ApiModelProperty(value = "逻辑删除标识")
+    @ApiModelProperty(value = "逻辑删除标识", notes = "0=否 1=是")
     @TableLogic
     @TableField(value = "del_flag")
     private Integer delFlag;

+ 3 - 1
helio-starter-crud/src/main/java/cc/uncarbon/framework/crud/service/HelioBaseService.java

@@ -1,5 +1,6 @@
 package cc.uncarbon.framework.crud.service;
 
+import cc.uncarbon.framework.crud.entity.HelioBaseEntity;
 import com.baomidou.mybatisplus.extension.service.IService;
 
 /**
@@ -8,6 +9,7 @@ import com.baomidou.mybatisplus.extension.service.IService;
  *
  * @author Uncarbon
  */
-public interface HelioBaseService<E> extends IService<E> {
+public interface HelioBaseService<E extends HelioBaseEntity<?>>
+        extends IService<E> {
 
 }

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

@@ -15,7 +15,9 @@ import lombok.NoArgsConstructor;
  * @author Uncarbon
  */
 @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自带的本方法,自动填充字段不生效问题

+ 6 - 0
helio-starter-redis/pom.xml

@@ -21,6 +21,12 @@
             <groupId>org.redisson</groupId>
             <artifactId>redisson-spring-boot-starter</artifactId>
         </dependency>
+
+        <!-- 适配 Spring Boot 2.7 -->
+        <dependency>
+            <groupId>org.redisson</groupId>
+            <artifactId>redisson-spring-data-27</artifactId>
+        </dependency>
     </dependencies>
 
 </project>

+ 7 - 4
helio-starter-rocketmq-aliyun/src/main/java/cc/uncarbon/framework/rocketmq/config/AliyunRocketAutoConfiguration.java

@@ -22,14 +22,16 @@ import cc.uncarbon.framework.rocketmq.container.RocketProducerContainer;
 import cc.uncarbon.framework.rocketmq.core.serializer.JacksonJsonSerializer;
 import cc.uncarbon.framework.rocketmq.core.serializer.RocketSerializer;
 import cc.uncarbon.framework.rocketmq.props.AliyunRocketProperties;
-import java.util.Map;
-import java.util.concurrent.ConcurrentHashMap;
+import com.fasterxml.jackson.databind.ObjectMapper;
 import lombok.RequiredArgsConstructor;
 import org.springframework.boot.autoconfigure.AutoConfiguration;
 import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
 import org.springframework.boot.context.properties.EnableConfigurationProperties;
 import org.springframework.context.annotation.Bean;
 
+import java.util.Map;
+import java.util.concurrent.ConcurrentHashMap;
+
 
 /**
  * 阿里云 Rocket MQ 自动配置类
@@ -55,8 +57,9 @@ public class AliyunRocketAutoConfiguration {
 
     @Bean
     @ConditionalOnMissingBean(RocketSerializer.class)
-    public RocketSerializer rocketSerializer() {
-        return new JacksonJsonSerializer();
+    public RocketSerializer rocketSerializer(ObjectMapper objectMapper) {
+        // 使用注册于Spring的ObjectMapper
+        return new JacksonJsonSerializer(objectMapper);
     }
 
     @Bean

+ 4 - 0
helio-starter-rocketmq-aliyun/src/main/java/cc/uncarbon/framework/rocketmq/container/RocketConsumerContainer.java

@@ -56,8 +56,11 @@ public class RocketConsumerContainer implements ApplicationContextAware {
 
     @PostConstruct
     public void initialize() {
+        // 创建临时线程池
         ThreadPoolExecutor threadPoolExecutor = ThreadPoolFactory.createConsumeThreadPoolExecutor(rocketProperties);
 
+        // 扫描标记 @RocketListener 注解的类,再将其中标记了 @MessageListener 的方法包装一下
+        // 依次注册到阿里云SDK
         applicationContext.getBeansWithAnnotation(RocketListener.class).forEach((beanName, bean) -> {
             RocketListener rocketListener = bean.getClass().getAnnotation(RocketListener.class);
             AnnotatedMethodsUtils.getMethodAndAnnotation(bean, MessageListener.class).
@@ -68,6 +71,7 @@ public class RocketConsumerContainer implements ApplicationContextAware {
                     });
         });
 
+        // 销毁临时线程池
         threadPoolExecutor.shutdown();
     }
 

+ 4 - 0
helio-starter-rocketmq-aliyun/src/main/java/cc/uncarbon/framework/rocketmq/container/RocketProducerContainer.java

@@ -52,8 +52,12 @@ public class RocketProducerContainer implements ApplicationContextAware {
 
 	@PostConstruct
 	public void initialize() {
+		// 创建临时线程池
 		ThreadPoolExecutor threadPoolExecutor = ThreadPoolFactory.createProducerThreadPoolExecutor(rocketProperties);
+		// 扫描标记 @RocketMessage 注解的类,再将其中标记了 @CommonMessage/@OrderMessage/@TransactionMessage 的方法包装一下
+		// 依次注册到阿里云SDK
 		applicationContext.getBeansWithAnnotation(RocketMessage.class).forEach((beanName, bean) -> RocketConsumerStrategy.putProducer(threadPoolExecutor, consumerContainer, bean, rocketProperties, applicationContext));
+		// 销毁临时线程池
 		threadPoolExecutor.shutdown();
 	}
 

+ 3 - 1
helio-starter-rocketmq-aliyun/src/main/java/cc/uncarbon/framework/rocketmq/core/serializer/JacksonJsonSerializer.java

@@ -2,6 +2,7 @@ package cc.uncarbon.framework.rocketmq.core.serializer;
 
 import com.fasterxml.jackson.core.JsonProcessingException;
 import com.fasterxml.jackson.databind.ObjectMapper;
+import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 
 import java.io.IOException;
@@ -11,10 +12,11 @@ import java.io.IOException;
  *
  * @author Uncarbon
  */
+@RequiredArgsConstructor
 @Slf4j
 public class JacksonJsonSerializer implements RocketSerializer {
 
-    private final ObjectMapper objectMapper = new ObjectMapper();
+    private final ObjectMapper objectMapper;
 
     @Override
     public <T> byte[] serialize(T object) {

+ 1 - 1
helio-starter-satoken/pom.xml

@@ -34,7 +34,7 @@
 
         <dependency>
             <groupId>cn.dev33</groupId>
-            <artifactId>sa-token-dao-redis-jackson</artifactId>
+            <artifactId>sa-token-redis-jackson</artifactId>
         </dependency>
 
     </dependencies>

+ 1 - 1
helio-starter-web/src/main/java/cc/uncarbon/framework/web/util/IPUtil.java

@@ -37,7 +37,7 @@ public class IPUtil {
     public String getClientIPAddress(HttpServletRequest request) {
         for (String header : HEADERS_TO_TRY) {
             String ip = request.getHeader(header);
-            if (ip != null && ip.length() != 0 && !"unknown".equalsIgnoreCase(ip)) {
+            if (ip != null && !ip.isEmpty() && !"unknown".equalsIgnoreCase(ip)) {
                 return ip;
             }
         }

+ 52 - 17
pom.xml

@@ -24,7 +24,7 @@
     <parent>
         <groupId>org.springframework.boot</groupId>
         <artifactId>spring-boot-starter-parent</artifactId>
-        <version>2.7.12</version>
+        <version>2.7.17</version>
         <relativePath/>
     </parent>
 
@@ -34,12 +34,12 @@
 
     <properties>
         <!-- core versions -->
-        <revision>1.8.0</revision>
+        <revision>1.9.0</revision>
         <helio-starters.version>${revision}</helio-starters.version>
-        <!-- JDK8则改为'1.8'  JDK11则改为'11' -->
+        <!-- 可根据实际JDK版本修改;JDK8则改为'1.8'  JDK11则改为'11'  JDK17则改为'17'  JDK21则改为'21' -->
         <java.version>1.8</java.version>
         <!-- 若变更Spring Boot版本, 上面parent依赖版本也要变 -->
-        <spring-boot.version>2.7.12</spring-boot.version>
+        <spring-boot.version>2.7.17</spring-boot.version>
 
 
         <!-- Spring Cloud versions -->
@@ -55,18 +55,22 @@
 
 
         <!-- 3rd-party versions -->
-        <hutool.version>5.8.19</hutool.version>
-        <sa-token.version>1.34.0</sa-token.version>
+        <lombok.version>1.18.30</lombok.version>
+        <hutool.version>5.8.22</hutool.version>
+        <sa-token.version>1.37.0</sa-token.version>
         <transmittable-thread-local.version>2.14.2</transmittable-thread-local.version>
-        <!-- 如果 mp 较新版存在问题,可以回退至 3.4.3.4 试试  -->
-        <mybatis-plus.version>3.5.2</mybatis-plus.version>
+        <!-- 如果 mp 较新版存在问题,可以回退至 3.5.3.1 试试  -->
+        <mybatis-plus.version>3.5.4</mybatis-plus.version>
         <knife4j.version>3.0.3</knife4j.version>
-        <redisson.version>3.18.0</redisson.version>
+        <!-- https://mvnrepository.com/artifact/org.redisson/redisson-spring-boot-starter -->
+        <redisson.version>3.23.3</redisson.version>
         <aspectj.version>1.9.6</aspectj.version>
         <ons-client.version>1.8.8.1.Final</ons-client.version>
-        <guava.version>31.1-jre</guava.version>
         <mybatis-plus-dynamic-datasource.version>3.5.2</mybatis-plus-dynamic-datasource.version>
 
+        <!-- for mitigating vulnerabilities versions -->
+        <guava.version>32.1.3-jre</guava.version>
+        <snakeyaml.version>1.33</snakeyaml.version>
 
         <!-- DB Driver versions -->
         <mysql.version>8.0.28</mysql.version>
@@ -90,6 +94,7 @@
         <dependency>
             <groupId>org.projectlombok</groupId>
             <artifactId>lombok</artifactId>
+            <version>${lombok.version}</version>
         </dependency>
 
         <dependency>
@@ -101,6 +106,20 @@
     <!-- dependencyManagement -->
     <dependencyManagement>
         <dependencies>
+            <!-- for mitigating vulnerabilities -->
+            <dependency>
+                <groupId>com.google.guava</groupId>
+                <artifactId>guava</artifactId>
+                <version>${guava.version}</version>
+            </dependency>
+
+            <dependency>
+                <groupId>org.yaml</groupId>
+                <artifactId>snakeyaml</artifactId>
+                <version>${snakeyaml.version}</version>
+            </dependency>
+
+
             <!-- sub starters -->
             <dependency>
                 <groupId>cc.uncarbon.framework</groupId>
@@ -275,12 +294,6 @@
                 </exclusions>
             </dependency>
 
-            <dependency>
-                <groupId>com.google.guava</groupId>
-                <artifactId>guava</artifactId>
-                <version>${guava.version}</version>
-            </dependency>
-
 
             <!-- CRUD dependencies -->
             <!-- 常用数据库驱动 -->
@@ -360,9 +373,25 @@
                         <groupId>org.springframework.boot</groupId>
                         <artifactId>spring-boot-starter-actuator</artifactId>
                     </exclusion>
+                    <exclusion>
+                        <groupId>org.apache.maven.plugins</groupId>
+                        <artifactId>maven-site-plugin</artifactId>
+                    </exclusion>
+                    <!-- 移除其默认适配的 Spring Boot 3 -->
+                    <exclusion>
+                        <groupId>org.redisson</groupId>
+                        <artifactId>redisson-spring-data-31</artifactId>
+                    </exclusion>
                 </exclusions>
             </dependency>
 
+            <!-- 适配 Spring Boot 2.7 -->
+            <dependency>
+                <groupId>org.redisson</groupId>
+                <artifactId>redisson-spring-data-27</artifactId>
+                <version>${redisson.version}</version>
+            </dependency>
+
             <!-- ROCKETMQ-ALIYUN dependencies -->
             <dependency>
                 <groupId>com.aliyun.openservices</groupId>
@@ -380,7 +409,13 @@
 
             <dependency>
                 <groupId>cn.dev33</groupId>
-                <artifactId>sa-token-dao-redis-jackson</artifactId>
+                <artifactId>sa-token-redis-jackson</artifactId>
+                <version>${sa-token.version}</version>
+            </dependency>
+
+            <dependency>
+                <groupId>cn.dev33</groupId>
+                <artifactId>sa-token-redisson-jackson</artifactId>
                 <version>${sa-token.version}</version>
             </dependency>