|
@@ -0,0 +1,84 @@
|
|
|
+fm-translate 翻译器组件
|
|
|
+============
|
|
|
+按配置规则,将对象中指定属性的值翻译为显示名称,并在对象上扩展属性并赋值为显示名称。
|
|
|
+
|
|
|
+说明
|
|
|
+---------------
|
|
|
+1. 可以通过@Transes和@Trans注解定义翻译元数据,注解在Controller、interface、impl、dao方法上,对方法结果进行翻译。
|
|
|
+2. 可以通过new TransMeta()定义翻译元数据,调用TranslatorHelper.translate(),在代码中进行翻译。
|
|
|
+3. TransMeta定义,根据type定义,支持两种翻译模式:
|
|
|
+* TransType.DB:数据库翻译,默认为此值。
|
|
|
+ - source:数据库表名、自定义翻译器名
|
|
|
+ - parameter:原始对象中的待翻译字段。
|
|
|
+ - result:查询结果字段名,查询多个结果以逗号分隔。默认值为name
|
|
|
+ - condition:查询条件
|
|
|
+ - target:回写到原始对象中的字段,默认为待翻译字段+ShowName,回写多个结果以逗号分隔。对象中无对应属性时会动态生成。
|
|
|
+* TransType.SERVICE:自定义翻译器翻译。
|
|
|
+ - parameter:原始对象中的待翻译字段。
|
|
|
+ - source:自定义翻译器名
|
|
|
+ - target:回写到原始对象中的字段,默认为待翻译字段+ShowName,回写多个结果以逗号分隔。对象中无对应属性时会动态生成。
|
|
|
+ - isBatch:是否批量处理,默认值为false
|
|
|
+
|
|
|
+代码示例
|
|
|
+---------------
|
|
|
+1. 数据库翻译模式使用示例:
|
|
|
+ ```
|
|
|
+ @Trans(source = "person", parameter = "managers")
|
|
|
+ public CommonResult<ResponseDepartmentItemVO> queryDepartmentDetail(
|
|
|
+ @Valid @RequestBody QueryDepartmentDetailDTO queryDepartmentDetailDTO) {
|
|
|
+ Department department = departmentService.queryDepartmentDetail(queryDepartmentDetailDTO.getId());
|
|
|
+ ResponseDepartmentItemVO responseDepartmentItemVO = ConvertDepartmentTool.INSTANCE.convert2ResponseItemDTO(department);
|
|
|
+ return ResultHelper.single(responseDepartmentItemVO);
|
|
|
+ }
|
|
|
+ ```
|
|
|
+2. 自定义翻译模式使用示例:
|
|
|
+ * 翻译器代码
|
|
|
+ ```
|
|
|
+ @Slf4j
|
|
|
+ @Service
|
|
|
+ public class PersonNameTranslator implements ITranslator {
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private IPersonService personService;
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public String trans(String parameter) {
|
|
|
+ Person person = personService.queryPersonDetail(Long.valueOf(parameter));
|
|
|
+ return person.getName();
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public Map<String, Object> transBatch(List<String> parameter) {
|
|
|
+ Map<String, Object> resultMap = new HashMap<>(16);
|
|
|
+ return resultMap;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ ```
|
|
|
+
|
|
|
+ * Controller代码
|
|
|
+ ```
|
|
|
+ @Trans(type = TransType.SERVICE, batch = true, source = "personNameTranslator", parameter = "managers", target = "managerShowName")
|
|
|
+ public CommonResult<ResponseDepartmentItemVO> queryDepartmentDetail(
|
|
|
+ @Valid @RequestBody QueryDepartmentDetailDTO queryDepartmentDetailDTO) {
|
|
|
+ Department department = departmentService.queryDepartmentDetail(queryDepartmentDetailDTO.getId());
|
|
|
+ ResponseDepartmentItemVO responseDepartmentItemVO = ConvertDepartmentTool.INSTANCE.convert2ResponseItemDTO(department);
|
|
|
+ return ResultHelper.single(responseDepartmentItemVO);
|
|
|
+ }
|
|
|
+ ```
|
|
|
+3. 多个翻译器同时使用使用示例:
|
|
|
+ ```
|
|
|
+ @Transes({
|
|
|
+ @Trans(type = TransType.SERVICE, batch = true, source = "personNameTranslator", parameter = "managers", target = "managerShowName"),
|
|
|
+ @Trans(source = "t_project", parameter = "projectIds", target = "projectsShowName")})
|
|
|
+ public CommonResult<ResponseDepartmentItemVO> queryDepartmentDetail(
|
|
|
+ @Valid @RequestBody QueryDepartmentDetailDTO queryDepartmentDetailDTO) {
|
|
|
+ Department department = departmentService.queryDepartmentDetail(queryDepartmentDetailDTO.getId());
|
|
|
+ ResponseDepartmentItemVO responseDepartmentItemVO = ConvertDepartmentTool.INSTANCE.convert2ResponseItemDTO(department);
|
|
|
+ return ResultHelper.single(responseDepartmentItemVO);
|
|
|
+ }
|
|
|
+ ```
|
|
|
+
|
|
|
+
|
|
|
+最新变化
|
|
|
+---------------
|
|
|
+
|