# easy_trans **Repository Path**: junerver/easy_trans ## Basic Information - **Project Name**: easy_trans - **Description**: easy-trans是一款数据翻译插件,本公司提供数据中台源代码对外出售、包含元数据、数据源、数据治理、数据标准、数据标签、数据服务、数据质量、数据开发采集、数据资产、数据可视化等功能,基于kettle和flink,欢迎了解。 - **Primary Language**: Java - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: http://easy-trans.dromara.org/ - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 285 - **Created**: 2025-01-06 - **Last Updated**: 2025-01-06 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # AD部分 公司有整套商业版数据中台源码出售,基于doris实现的数据仓库,支持PB级别的数据存储分析,功能模块如下: ## 功能模块 ### 1、数据源管理 支持各类关系型数据库、非关系型数据库。 ### 2、元数据管理 元模型、最新元数据、定版元数据、数据全景图、数据血缘、数据影响分析、多版本元数据对比 ### 3、数据标准管理 标准词根、标准字典、数据元、标准模型、发布、多版本维护、数据标准核对 ### 4、数据仓库管理 支持主题域、主题、数仓集群、维度建模、模型运维、模型审计、模型数据查看 ### 5、数据质量 规则定义,任务执行,结果查看,统计分析,质量问题修复日志 ### 6、数据指标 数据指标在线开发,数据指标地图 ### 7、数据标签 标签对象、标签管理、置标任务、标签圈群、标签画像 ### 8、数据安全 分级分类、数据脱敏、分级分类授权 ### 9、数据生命周期 数据归档,数据恢复 ### 10、数据服务 接口在线开发(支持通过JS脚本对数据进行处理后返回,支持动态SQL),API注册(手写代码开发的接口注册到数据服务中),接口测试,接口发布,应用管理,应用授权 ## 11、数据资产 数据资产标签、数据资产目录、数据资产门户、数据资产申请试用 ### 10、数据集成/开发 实时开发(支持CDC)、离线开发(支持数据库、csv、excel、接口、ftp、kafka、mqtt、mongodb等数据源接入),在线拖拉拽生成数据集成任务 ### 11、数据可视化 数据集,报表管理,报表设计,报表查看、知识图谱构建、知识图谱查看 ### 12、数据运维 微服务监控、中间件监控、服务器监控、数据仓库定时备份恢复、数据服务接口监控。 ### 13、系统日志 syslog查询、syslog实时查看、登录日志、审计日志 ### 14、主数据 主数据模型管理、自动生成代码码段管理、主数据管理、主数据分发 ## 技术栈 后端:Java springboot2.7 springcloud/alibaba mybatis plus hutool 等常见技术 前端:vue elementui vite 等常见技术 中间件:doris,mysql,redis,rabbitmq,minio,zookeeper。 ### 有演示环境和方案PPT,需要加V:abcd19920605 ## 架构 ![输入图片说明](https://gitee.com/dromara/easy_trans/raw/master/images/jiagou.png) # 以下为本项目正文 # Dromara Easy Trans ![输入图片说明](images/logo.png) # 介绍 ![输入图片说明](images/jieshao_temp.jpg) # 插件文档 有问题先看文档哦!!! 主站:http://easy-trans.dromara.org/ 备用站:http://easy-trans.fhs-opensource.cn/ 文档源码:https://gitee.com/fhs-opensource/vite_press_easy_trans # 求star 我们非常需要您的star支持,就是右上角的那个小星星,帮忙点一下吧,抱拳啦! ## Dromara Easy Trans适用于6种场景 1 我有一个id,但是我需要给客户展示他的title/name 但是我又不想自己手动做表关联查询 2 我有一个字典码 sex 和 一个字典值0 我希望能翻译成 男 给客户展示。 3 我有一组user id 比如 1,2,3 我希望能展示成 张三,李四,王五 给客户 4 我有一个枚举,枚举里有一个title字段,我想给前端展示title的值 给客户 5 我有一个唯一键(比如手机号,身份证号码,但是非其他表id字段),但是我需要给客户展示他的title/name 但是我又不想自己手动做表关联查询 6 Excel导入场景,把 用户名 admin 反向翻译为 userid1 把男 反向翻译为 gender_1 (具体看官网文档) # 最新版本 springboot3.x 最新easy-trans版本:3.1.1 springboot 2.x 最新easy-trans版本 2.3.1 # groupid和包名变更说明 从3.1.0和2.3.0开始,包名和maven的groupid由com.fhs变更为dormara社区统一的org.dromara,以下版本不变。 # 食用步骤 ## 技术经理/架构 需要做的事情 1 、先把maven 引用加上(主starter+根据自己的ORM框架引入扩展,扩展只需要引入一个) starter--必须!!! ``` xml org.dromara easy-trans-spring-boot-starter 2.3.0 ``` Mybatis plus 扩展: ``` xml org.dromara easy-trans-mybatis-plus-extend 2.3.0 ``` JPA 扩展: ``` xml org.dromara easy-trans-jpa-extend 2.3.0 ``` JPA SpringBoot3 扩展(本扩如果没bug后面发布版本不在更新版本号): ``` xml org.dromara easy-trans-jpa-sb3-extend 2.2.3 ``` Beetl SQL 扩展: ``` xml org.dromara easy-trans-beetl-sql-extend 2.3.0 ``` TK Mybatis(通用mapper) 扩展: ``` xml org.dromara easy-trans-tk-extend 2.3.0 ``` easy-query 扩展: ``` xml org.dromara easy-trans-easy-query-extend 2.2.17 ``` mybatis-flex 扩展: ``` xml org.dromara easy-trans-mybatis-flex-extend 2.2.17 ``` 如果使用Redis请添加redis的引用(如果之前加过了请不要重复添加) ``` xml org.springframework.boot spring-boot-starter-data-redis ``` 注意:非maven中央仓库更新可能延迟,如果高版本无法引入请尝试切到低一个版本过一天后在切回来。 2、在yaml中添加如下配置 ``` YAML easy-trans: #启用redis缓存 如果不用redis请设置为false is-enable-redis: true #启用全局翻译(拦截所有responseBody进行自动翻译),如果关闭需要手动调用翻译方法或者方法加注解,具体看文档 is-enable-global: true #启用平铺模式 is-enable-tile: true #字典缓存放到redis 微服务模式请开启 dict-use-redis: true # ruoyi相关的请开启 is-enable-map-result: true # MP为 3.5.3.2版本以上的3.x 版本请设置为true,否则可能会出现找不到对应方法的问题 mp-new: false ``` 3、如果不使用redis,请在启动类加禁用掉redis的自动配置类 ``` java @SpringBootApplication(exclude = { RedisAutoConfiguration.class }) //单体跑的话,排除下面2个类提高启动速度,后面出版本解决 @SpringBootApplication(exclude = { // 下面这2个没啥用,而且会拖慢启动速度 SimpleDiscoveryClientAutoConfiguration.class, CompositeDiscoveryClientAutoConfiguration.class }) ``` 4、初始化字典数据(如果你们项目没字典表请忽略) ``` java @Autowired //注入字典翻译服务 private DictionaryTransService dictionaryTransService; //在某处将字典缓存刷新到翻译服务中,以下是demo Map transMap = new HashMap<>(); transMap.put("0","男"); transMap.put("1","女"); dictionaryTransService.refreshCache("sex",transMap); ``` 5、微服务配置(比如订单服务用到了用户服务的user数据来进行翻译,不牵扯微服务的可以不管) A、白名单添加 /easyTrans/proxy/** 保证其不被拦截,RPC trans的时候easytrans会自动调用目标微服务的接口来获取数据。 B、应用之间的认证可以通过filter/interceptor实现,然后自定义RestTemplate 保证easytrans在请求用户服务的时候带上需要认证的参数 ## 普通程序员需要做的事情 pojo 中添加 ``` java @Data @Builder @AllArgsConstructor @NoArgsConstructor //实现TransPojo 接口,代表这个类需要被翻译或者被当作翻译的数据源 public class Student implements TransPojo { // 字典翻译 ref为非必填 @Trans(type = TransType.DICTIONARY,key = "sex",ref = "sexName") private Integer sex; //这个字段可以不写,实现了TransPojo接口后有一个getTransMap方法,sexName可以让前端去transMap取 private String sexName; //SIMPLE 翻译,用于关联其他的表进行翻译 schoolName 为 School 的一个字段 @Trans(type = TransType.SIMPLE,target = School.class,fields = "schoolName") private String schoolId; //远程翻译,调用其他微服务的数据源进行翻译 @Trans(type = TransType.RPC,targetClassName = "pojo.com.xhb.test.School",fields = "schoolName",serviceName = "easyTrans",alias = "middle") private String middleSchoolId; // 枚举翻译,返回文科还是理科给前端 @Trans(type=TransType.ENUM,key = "desc") private StudentType studentType = StudentType.ARTS; public static enum StudentType{ ARTS("文科"), SCIENCES("理科"); private String desc; StudentType(String desc){ this.desc = desc; } } } ``` 然后访问你的controller,看返回结果。 ## easy trans 支持的五种类型 ### 字典翻译(TransType.DICTIONARY) 需要使用者把字典信息刷新到DictionaryTransService 中进行缓存,使用字典翻译的时候取缓存数据源 ### 简单翻译(TransType.SIMPLE) 比如有userId需要userName或者userPo给前端,原理是组件使用MybatisPlus/JPA的API自动进行查询,把结果放到TransMap中。 ### 跨微服务翻译(TransType.RPC) 比如订单和用户是2个微服务,但是我要在订单详情里展示订单的创建人的用户名,需要用到RPC翻译,原理是订单微服务使用restTemplate调用用户服务的一个统一的接口,把需要翻译的id传过去,然后用户微服务使用MybatisPlus/JPA的API自动进行查询把结果给订单微服务,然后订单微服务拿到数据后进行翻译,当然使用者只是需要一个注解,这些事情都是由组件自动完成的。 ### AutoTrans(TransType.AUTO) 还是id翻译name场景,但是使用者如果想组件调用自己写的方法而不通过Mybatis Plus/JPA 的API进行数据查询,就可以使用AutoTrans ### 枚举翻译(TransType.ENUM) 比如我要把SEX.BOY 翻译为男,可以用枚举翻译。 # 参与贡献和技术支持 如果遇到使用问题可以加作者微信拉你进群。 如果你们使用了此插件,请留下单位名称。 # 示例项目 https://gitee.com/fhs-opensource/easy_trans_springboot_demo # 已经使用此插件的企业 1、陕西小伙伴网络科技有限公司 2、ruoyi-vue-pro https://gitee.com/zhijiantianya/ruoyi-vue-pro 3、中软国际云智能业务集团 4、深圳市易流科技股份有限公司 5、陕西逐道科技有限公司 6、深圳市易联联盟科技有限公司 7、中体数科(北京)体育发展有限公司 8、首都信息发展股份有限公司 9、航天神舟智慧系统技术有限公司 10、小诺V2 https://gitee.com/xiaonuobase/snowy 11、山东大小同屏科技有限公司 12、山东酸橙网络科技有限公司 13、桔子数字科技有限公司 14、成都新潮传媒集团股份有限公司 15、陕西汇每家信息科技有限公司(每一天便利店连锁) 16、江西云牛科技 17、广州彩讯数字技术有限公司 18、江苏誉鸣航智能科技有限公司 19、maku-boot https://gitee.com/makunet/maku-boot 20、北京大美星空科技有限公司 21、四川学道社人力资源有限公司 # 作者二维码 加作者二维码邀请进入官方群 ![输入图片说明](images/qr.jpg) # 项目捐助二维码 ![输入图片说明](images/qr-jz.jpg)