Browse Source

Revert "删除easy-trans集成"

This reverts commit 69b430ec
Gaokun Wang 1 month ago
parent
commit
5805a35aeb
19 changed files with 57 additions and 342 deletions
  1. 12 0
      config/local/easy-trans.yml
  2. 16 7
      eco-bom/pom.xml
  3. 0 19
      eco-common/com-mapper/pom.xml
  4. 0 50
      eco-common/com-mapper/src/main/java/org/eco/vip/mapper/annotation/FieldMapper.java
  5. 0 31
      eco-common/com-mapper/src/main/java/org/eco/vip/mapper/annotation/FieldMapperType.java
  6. 0 56
      eco-common/com-mapper/src/main/java/org/eco/vip/mapper/config/FieldMapperConfig.java
  7. 0 26
      eco-common/com-mapper/src/main/java/org/eco/vip/mapper/constant/MapperConstant.java
  8. 0 34
      eco-common/com-mapper/src/main/java/org/eco/vip/mapper/handler/FieldMapperBeanSerializerModifier.java
  9. 0 64
      eco-common/com-mapper/src/main/java/org/eco/vip/mapper/handler/FieldMapperHandler.java
  10. 0 25
      eco-common/com-mapper/src/main/java/org/eco/vip/mapper/service/IFieldMapperInterface.java
  11. 0 27
      eco-common/com-mapper/src/main/java/org/eco/vip/mapper/service/UserNameMapper.java
  12. 0 1
      eco-common/com-mapper/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
  13. 12 0
      eco-common/com-orm/pom.xml
  14. 6 1
      eco-common/com-orm/src/main/java/org/eco/vip/orm/domain/BaseEntity.java
  15. 0 1
      eco-common/pom.xml
  16. 3 0
      eco-nexus-core/auth-biz/src/main/java/org/eco/vip/auth/domain/org/Org.java
  17. 5 0
      eco-nexus-core/auth-biz/src/main/java/org/eco/vip/auth/domain/org/pojo/OrgVO.java
  18. 2 0
      eco-nexus-core/auth-biz/src/main/java/org/eco/vip/auth/domain/user/pojo/UserVO.java
  19. 1 0
      eco-start/src/main/resources/application.yml

+ 12 - 0
config/local/easy-trans.yml

@@ -0,0 +1,12 @@
+# easy-trans 配置
+easy-trans:
+  # 字典缓存是否放到redis中 做二级缓存,微服务模式推荐开启
+  dict-use-redis: false
+  # 开启redis支持 微服务模式推荐使用redis
+  is-enable-redis: false
+  # 启用全局翻译(拦截所有responseBody进行自动翻译),如果关闭需要手动调用翻译方法或者方法加注解,具体看文档
+  is-enable-global: true
+  # 启平铺模式(transMap的key平铺到和vo一个级别)
+  is-enable-tile: true
+  # 默认为true 如果前期先单体跑,后期可能改为springcloud微服务,可以先设置为false,后期设置为true,设置为false RPC翻译会走SIMPLE的逻辑
+  is-enable-cloud: false

+ 16 - 7
eco-bom/pom.xml

@@ -23,9 +23,11 @@
         <mybatis-flex.version>1.10.9</mybatis-flex.version>
         <HikariCP.version>6.2.1</HikariCP.version>
         <hutool-5.version>5.8.36</hutool-5.version>
+        <easy-trans.version>3.0.6</easy-trans.version>
         <jackson.version>2.18.3</jackson.version>
         <jakarta.version>6.1.0</jakarta.version>
         <mapstruct-plus.version>1.4.8</mapstruct-plus.version>
+        <easy-trans.version>3.0.6</easy-trans.version>
         <deepseek4j.version>1.4.5</deepseek4j.version>
         <milvus.version>2.5.5</milvus.version>
         <jsqlparser.version>5.1</jsqlparser.version>
@@ -88,13 +90,6 @@
                 <version>${revision}</version>
             </dependency>
 
-            <!-- com-mapper -->
-            <dependency>
-                <groupId>org.eco.vip</groupId>
-                <artifactId>com-mapper</artifactId>
-                <version>${revision}</version>
-            </dependency>
-
             <!-- lombok -->
             <dependency>
                 <groupId>org.projectlombok</groupId>
@@ -130,6 +125,20 @@
                 <version>${jackson.version}</version>
             </dependency>
 
+            <!-- easy-trans 注解翻译 -->
+            <dependency>
+                <groupId>com.fhs-opensource</groupId>
+                <artifactId>easy-trans-spring-boot-starter</artifactId>
+                <version>${easy-trans.version}</version>
+            </dependency>
+
+            <!-- easy-trans-mybatis-plus-extend -->
+            <dependency>
+                <groupId>com.fhs-opensource</groupId>
+                <artifactId>easy-trans-mybatis-flex-extend</artifactId>
+                <version>${easy-trans.version}</version>
+            </dependency>
+
             <!-- https://mvnrepository.com/artifact/com.dameng/DmJdbcDriver18 -->
             <dependency>
                 <groupId>com.dameng</groupId>

+ 0 - 19
eco-common/com-mapper/pom.xml

@@ -1,19 +0,0 @@
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
-    <modelVersion>4.0.0</modelVersion>
-    <parent>
-        <groupId>org.eco.vip</groupId>
-        <artifactId>eco-common</artifactId>
-        <version>${revision}</version>
-    </parent>
-    <artifactId>com-mapper</artifactId>
-    <name>${project.artifactId}</name>
-    <packaging>jar</packaging>
-
-    <dependencies>
-    <dependency>
-        <groupId>org.eco.vip</groupId>
-        <artifactId>com-core</artifactId>
-    </dependency>
-    </dependencies>
-</project>

+ 0 - 50
eco-common/com-mapper/src/main/java/org/eco/vip/mapper/annotation/FieldMapper.java

@@ -1,50 +0,0 @@
-/*
- * Copyright (c) 2025 GaoKunW
- *
- */
-
-package org.eco.vip.mapper.annotation;
-
-
-import com.fasterxml.jackson.annotation.JacksonAnnotationsInside;
-import com.fasterxml.jackson.databind.annotation.JsonSerialize;
-import org.eco.vip.mapper.handler.FieldMapperHandler;
-
-import java.lang.annotation.Documented;
-import java.lang.annotation.ElementType;
-import java.lang.annotation.Inherited;
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-import java.lang.annotation.Target;
-
-/**
- * @description FieldMapper
- *
- * @author GaoKunW
- * @date 2025/7/4 13:35
- */
-
-@Inherited
-@Retention(RetentionPolicy.RUNTIME)
-@Target({ElementType.FIELD, ElementType.METHOD})
-@Documented
-@JacksonAnnotationsInside
-@JsonSerialize(using = FieldMapperHandler.class)
-public @interface FieldMapper {
-
-    /**
-     * 类型 (需与实现类上的 {@link FieldMapperType} 注解type对应)
-     * 默认取当前字段的值 如果设置了 @{@link FieldMapper#mapper()} 则取映射字段的值
-     */
-    String type();
-
-    /**
-     * 映射字段 (如果不为空则取此字段的值)
-     */
-    String mapper() default "";
-
-    /**
-     * 其他条件 例如: 字典type(sys_user_gender)
-     */
-    String other() default "";
-}

+ 0 - 31
eco-common/com-mapper/src/main/java/org/eco/vip/mapper/annotation/FieldMapperType.java

@@ -1,31 +0,0 @@
-/*
- * Copyright (c) 2025 GaoKunW
- *
- */
-
-package org.eco.vip.mapper.annotation;
-
-
-import java.lang.annotation.Documented;
-import java.lang.annotation.ElementType;
-import java.lang.annotation.Inherited;
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-import java.lang.annotation.Target;
-
-/**
- * @description FieldMapperType
- *
- * @author GaoKunW
- * @date 2025/7/4 13:36
- */
-@Inherited
-@Retention(RetentionPolicy.RUNTIME)
-@Target({ElementType.TYPE})
-@Documented
-public @interface FieldMapperType {
-    /**
-     * 类型
-     */
-    String type();
-}

+ 0 - 56
eco-common/com-mapper/src/main/java/org/eco/vip/mapper/config/FieldMapperConfig.java

@@ -1,56 +0,0 @@
-/*
- * Copyright (c) 2025 GaoKunW
- *
- */
-
-package org.eco.vip.mapper.config;
-
-
-import com.fasterxml.jackson.databind.ObjectMapper;
-import jakarta.annotation.PostConstruct;
-import jakarta.annotation.Resource;
-import lombok.extern.slf4j.Slf4j;
-import org.eco.vip.mapper.annotation.FieldMapperType;
-import org.eco.vip.mapper.handler.FieldMapperBeanSerializerModifier;
-import org.eco.vip.mapper.handler.FieldMapperHandler;
-import org.eco.vip.mapper.service.IFieldMapperInterface;
-import org.springframework.boot.autoconfigure.AutoConfiguration;
-
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-/**
- * @description FieldMapperConfig
- *
- * @author GaoKunW
- * @date 2025/7/4 13:36
- */
-@Slf4j
-@AutoConfiguration
-public class FieldMapperConfig {
-
-    @Resource
-    private List<IFieldMapperInterface<?>> list;
-
-    @Resource
-    private ObjectMapper objectMapper;
-
-    @PostConstruct
-    public void init() {
-        Map<String, IFieldMapperInterface<?>> map = new HashMap<>(list.size());
-        for (IFieldMapperInterface<?> trans : list) {
-            if (trans.getClass().isAnnotationPresent(FieldMapperType.class)) {
-                FieldMapperType annotation = trans.getClass().getAnnotation(FieldMapperType.class);
-                map.put(annotation.type(), trans);
-            } else {
-                log.warn("{}翻译实现类未标注 FieldMapperType 注解!", trans.getClass().getName());
-            }
-        }
-        FieldMapperHandler.FIELD_MAPPER.putAll(map);
-        // 设置 Bean 序列化修改器
-        objectMapper.setSerializerFactory(
-                objectMapper.getSerializerFactory()
-                        .withSerializerModifier(new FieldMapperBeanSerializerModifier()));
-    }
-}

+ 0 - 26
eco-common/com-mapper/src/main/java/org/eco/vip/mapper/constant/MapperConstant.java

@@ -1,26 +0,0 @@
-/*
- * Copyright (c) 2025 GaoKunW
- *
- */
-
-package org.eco.vip.mapper.constant;
-
-
-/**
- * @description MapperConstant
- *
- * @author GaoKunW
- * @date 2025/7/4 13:37
- */
-public class MapperConstant {
-
-    /**
-     * 用户id转名称
-     */
-    String USER_ID_TO_NAME = "user_id_to_name";
-
-    /**
-     * 用户id转账号
-     */
-    String USER_ID_TO_ACCOUNT = "user_id_to_account";
-}

+ 0 - 34
eco-common/com-mapper/src/main/java/org/eco/vip/mapper/handler/FieldMapperBeanSerializerModifier.java

@@ -1,34 +0,0 @@
-/*
- * Copyright (c) 2025 GaoKunW
- *
- */
-
-package org.eco.vip.mapper.handler;
-
-
-import com.fasterxml.jackson.databind.BeanDescription;
-import com.fasterxml.jackson.databind.SerializationConfig;
-import com.fasterxml.jackson.databind.ser.BeanPropertyWriter;
-import com.fasterxml.jackson.databind.ser.BeanSerializerModifier;
-
-import java.util.List;
-
-/**
- * @description FieldMapperBeanSerializerModifier
- *
- * @author GaoKunW
- * @date 2025/7/4 13:38
- */
-public class FieldMapperBeanSerializerModifier extends BeanSerializerModifier {
-    @Override
-    public List<BeanPropertyWriter> changeProperties(SerializationConfig config, BeanDescription beanDesc,
-                                                     List<BeanPropertyWriter> beanProperties) {
-        for (BeanPropertyWriter writer : beanProperties) {
-            // 如果序列化器为 FieldMapperHandler 的话 将 Null 值也交给他处理
-            if (writer.getSerializer() instanceof FieldMapperHandler serializer) {
-                writer.assignNullSerializer(serializer);
-            }
-        }
-        return beanProperties;
-    }
-}

+ 0 - 64
eco-common/com-mapper/src/main/java/org/eco/vip/mapper/handler/FieldMapperHandler.java

@@ -1,64 +0,0 @@
-/*
- * Copyright (c) 2025 GaoKunW
- *
- */
-
-package org.eco.vip.mapper.handler;
-
-
-import cn.hutool.core.util.ObjectUtil;
-import com.fasterxml.jackson.core.JsonGenerator;
-import com.fasterxml.jackson.databind.BeanProperty;
-import com.fasterxml.jackson.databind.JsonMappingException;
-import com.fasterxml.jackson.databind.JsonSerializer;
-import com.fasterxml.jackson.databind.SerializerProvider;
-import com.fasterxml.jackson.databind.ser.ContextualSerializer;
-import org.eco.vip.mapper.annotation.FieldMapper;
-import org.eco.vip.mapper.service.IFieldMapperInterface;
-import org.eco.vip.orm.utils.ReflectUtils;
-import org.eco.vip.orm.utils.StrUtils;
-
-import java.io.IOException;
-import java.util.Map;
-import java.util.concurrent.ConcurrentHashMap;
-
-/**
- * @description FieldMapperHandler
- *
- * @author GaoKunW
- * @date 2025/7/4 13:24
- */
-public class FieldMapperHandler extends JsonSerializer<Object> implements ContextualSerializer {
-
-    /**
-     * 全局实现类映射器
-     */
-    public static final Map<String, IFieldMapperInterface<?>> FIELD_MAPPER = new ConcurrentHashMap<>();
-
-    private FieldMapper fieldMapper;
-
-    @Override
-    public void serialize(Object o, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throws IOException {
-        IFieldMapperInterface<?> trans = FIELD_MAPPER.get(fieldMapper.type());
-        if (ObjectUtil.isNotNull(trans)) {
-            // 如果映射字段不为空 则取映射字段的值
-            if (StrUtils.isNotBlank(fieldMapper.mapper())) {
-                o = ReflectUtils.invokeGetter(jsonGenerator.getCurrentValue(), fieldMapper.mapper());
-            }
-            // 如果为 null 直接写出
-            if (ObjectUtil.isNull(o)) {
-                jsonGenerator.writeNull();
-                return;
-            }
-            Object result = trans.fieldMapper(o, fieldMapper.other());
-            jsonGenerator.writeObject(result);
-        } else {
-            jsonGenerator.writeObject(o);
-        }
-    }
-
-    @Override
-    public JsonSerializer<?> createContextual(SerializerProvider serializerProvider, BeanProperty beanProperty) throws JsonMappingException {
-        return null;
-    }
-}

+ 0 - 25
eco-common/com-mapper/src/main/java/org/eco/vip/mapper/service/IFieldMapperInterface.java

@@ -1,25 +0,0 @@
-/*
- * Copyright (c) 2025 GaoKunW
- *
- */
-
-package org.eco.vip.mapper.service;
-
-
-/**
- * @description IFieldMapperInterface
- *
- * @author GaoKunW
- * @date 2025/7/4 13:23
- */
-public interface IFieldMapperInterface<T> {
-
-    /**
-     * 映射
-     *
-     * @param key   需要被映射的键(不为空)
-     * @param other 其他参数
-     * @return 返回键对应的值
-     */
-    T fieldMapper(Object key, String other);
-}

+ 0 - 27
eco-common/com-mapper/src/main/java/org/eco/vip/mapper/service/UserNameMapper.java

@@ -1,27 +0,0 @@
-/*
- * Copyright (c) 2025 GaoKunW
- *
- */
-
-package org.eco.vip.mapper.service;
-
-
-import lombok.AllArgsConstructor;
-import org.eco.vip.mapper.annotation.FieldMapperType;
-import org.eco.vip.mapper.constant.MapperConstant;
-
-/**
- * @description UserNameMapper
- *
- * @author GaoKunW
- * @date 2025/7/4 13:41
- */
-@AllArgsConstructor
-@FieldMapperType(type = MapperConstant.USER_ID_TO_NAME)
-public class UserNameMapper implements IFieldMapperInterface<String> {
-    @Override
-    public String mapper(String value) {
-        // 模拟数据库查询
-        return "userName_" + value;
-    }
-}

+ 0 - 1
eco-common/com-mapper/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports

@@ -1 +0,0 @@
-org.eco.vip.mapper.config.FieldMapperConfig

+ 12 - 0
eco-common/com-orm/pom.xml

@@ -17,5 +17,17 @@
             <groupId>org.eco.vip</groupId>
             <artifactId>com-core</artifactId>
         </dependency>
+
+        <!-- easy-trans -->
+        <dependency>
+            <groupId>com.fhs-opensource</groupId>
+            <artifactId>easy-trans-spring-boot-starter</artifactId>
+        </dependency>
+
+        <!-- easy-trans-mybatis-plus-extend -->
+        <dependency>
+            <groupId>com.fhs-opensource</groupId>
+            <artifactId>easy-trans-mybatis-flex-extend</artifactId>
+        </dependency>
     </dependencies>
 </project>

+ 6 - 1
eco-common/com-orm/src/main/java/org/eco/vip/orm/domain/BaseEntity.java

@@ -7,6 +7,9 @@ package org.eco.vip.orm.domain;
 
 
 import com.fasterxml.jackson.annotation.JsonFormat;
+import com.fhs.core.trans.anno.Trans;
+import com.fhs.core.trans.constant.TransType;
+import com.fhs.core.trans.vo.TransPojo;
 import com.mybatisflex.annotation.Column;
 import lombok.Data;
 
@@ -20,7 +23,7 @@ import java.util.Date;
  * @date 2025/3/9 20:30
  */
 @Data
-public class BaseEntity implements Serializable {
+public class BaseEntity implements Serializable, TransPojo {
 
     /**
      * 租户编号
@@ -51,6 +54,7 @@ public class BaseEntity implements Serializable {
     /**
      * 创建者
      */
+    @Trans(type = TransType.SIMPLE, targetClassName = "org.eco.vip.auth.domain.user.User", fields = "userName", ref = "createByName")
     private String createBy;
 
     /**
@@ -68,6 +72,7 @@ public class BaseEntity implements Serializable {
     /**
      * 更新者
      */
+    @Trans(type = TransType.SIMPLE, targetClassName = "org.eco.vip.auth.domain.user.User", fields = "userName", ref = "updateByName")
     private String updateBy;
 
     /**

+ 0 - 1
eco-common/pom.xml

@@ -17,6 +17,5 @@
         <module>com-core</module>
         <module>com-orm</module>
         <module>com-security</module>
-        <module>com-mapper</module>
     </modules>
 </project>

+ 3 - 0
eco-nexus-core/auth-biz/src/main/java/org/eco/vip/auth/domain/org/Org.java

@@ -5,6 +5,8 @@
 package org.eco.vip.auth.domain.org;
 
 
+import com.fhs.core.trans.anno.Trans;
+import com.fhs.core.trans.constant.TransType;
 import com.mybatisflex.annotation.Column;
 import com.mybatisflex.annotation.Id;
 import com.mybatisflex.annotation.Table;
@@ -59,6 +61,7 @@ public class Org extends BaseEntity {
     /**
      * 负责人
      */
+    @Trans(type = TransType.SIMPLE, targetClassName = "org.eco.vip.auth.domain.user.User", fields = "userName", ref = "leader")
     private Long leaderId;
 
     /**

+ 5 - 0
eco-nexus-core/auth-biz/src/main/java/org/eco/vip/auth/domain/org/pojo/OrgVO.java

@@ -5,6 +5,9 @@
 package org.eco.vip.auth.domain.org.pojo;
 
 
+import com.fhs.core.trans.anno.Trans;
+import com.fhs.core.trans.constant.TransType;
+import com.mybatisflex.annotation.Id;
 import io.github.linpeilie.annotations.AutoMapper;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
@@ -24,6 +27,7 @@ public class OrgVO extends BaseEntity {
     /**
      * 部门ID
      */
+    @Id
     private String orgId;
 
     /**
@@ -49,6 +53,7 @@ public class OrgVO extends BaseEntity {
     /**
      * 负责人
      */
+    @Trans(type = TransType.SIMPLE, targetClassName = "org.eco.vip.auth.domain.user.User", fields = "userName", ref = "leader")
     private Long leaderId;
 
     /**

+ 2 - 0
eco-nexus-core/auth-biz/src/main/java/org/eco/vip/auth/domain/user/pojo/UserVO.java

@@ -5,6 +5,7 @@
 
 package org.eco.vip.auth.domain.user.pojo;
 
+import com.mybatisflex.annotation.Id;
 import io.github.linpeilie.annotations.AutoMapper;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
@@ -26,6 +27,7 @@ public class UserVO extends BaseEntity {
     /**
      * 用户ID
      */
+    @Id
     private String userId;
 
     /**

+ 1 - 0
eco-start/src/main/resources/application.yml

@@ -21,6 +21,7 @@ spring:
       - file:config/${spring.profiles.active}/sa-token.yml
       - file:config/${spring.profiles.active}/datasource-${eco.db}.yml
       - file:config/${spring.profiles.active}/logging.yml
+      - file:config/${spring.profiles.active}/easy-trans.yml
       - file:config/${spring.profiles.active}/security.yml
   mvc:
     format: