From 7b12597135cf7475f14d01b52d9f2c6c88d2f17f Mon Sep 17 00:00:00 2001 From: fengshuonan Date: Wed, 7 Sep 2022 13:36:33 +0800 Subject: [PATCH] =?UTF-8?q?=E3=80=907.2.5=E3=80=91=E3=80=90rule=E3=80=91?= =?UTF-8?q?=E7=AE=80=E5=8C=96=E4=BB=A3=E7=A0=81=EF=BC=8C=E5=B0=81=E8=A3=85?= =?UTF-8?q?=E6=8A=BD=E8=B1=A1=E7=B1=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../format/BaseSimpleFieldFormatProcess.java | 80 +++++++++++++++++++ .../user/format/UserFormatProcess.java | 61 ++------------ 2 files changed, 86 insertions(+), 55 deletions(-) create mode 100644 kernel-a-rule/src/main/java/cn/stylefeng/roses/kernel/rule/format/BaseSimpleFieldFormatProcess.java diff --git a/kernel-a-rule/src/main/java/cn/stylefeng/roses/kernel/rule/format/BaseSimpleFieldFormatProcess.java b/kernel-a-rule/src/main/java/cn/stylefeng/roses/kernel/rule/format/BaseSimpleFieldFormatProcess.java new file mode 100644 index 000000000..e4e912809 --- /dev/null +++ b/kernel-a-rule/src/main/java/cn/stylefeng/roses/kernel/rule/format/BaseSimpleFieldFormatProcess.java @@ -0,0 +1,80 @@ +package cn.stylefeng.roses.kernel.rule.format; + +import cn.stylefeng.roses.kernel.rule.base.SimpleFieldFormatProcess; +import cn.stylefeng.roses.kernel.rule.enums.FieldTypeEnum; +import cn.stylefeng.roses.kernel.rule.util.ClassTypeUtil; +import cn.stylefeng.roses.kernel.rule.util.MixFieldTypeUtil; +import cn.stylefeng.roses.kernel.rule.util.ObjectConvertUtil; + +import java.util.ArrayList; +import java.util.Collection; +import java.util.List; + +/** + * 针对一般业务型的主键id的转化 + * + * @author fengshuonan + * @date 2022/9/7 11:50 + */ +public abstract class BaseSimpleFieldFormatProcess implements SimpleFieldFormatProcess { + + @Override + public boolean canFormat(Object originValue) { + return MixFieldTypeUtil.whetherAssignClass(originValue, Long.class); + } + + @Override + public Object formatProcess(Object originValue) { + + // 先获取是基础类型还是集合类型 + FieldTypeEnum classFieldType = ClassTypeUtil.getClassFieldType(originValue.getClass()); + + // 基础类型,直接转化 + if (FieldTypeEnum.BASIC.equals(classFieldType)) { + return this.simpleItemFormat(originValue); + } + + // 集合类型 + if (FieldTypeEnum.BASE_COLLECTION.equals(classFieldType)) { + Collection originValueList = (Collection) originValue; + List parsedList = new ArrayList<>(); + for (Object itemObject : originValueList) { + parsedList.add(this.simpleItemFormat(itemObject)); + } + return parsedList; + } + + // 数组类型 + if (FieldTypeEnum.BASE_ARRAY.equals(classFieldType)) { + Object[] originValueArray = ObjectConvertUtil.objToArray(originValue); + List parsedList = new ArrayList<>(); + for (Object itemObject : originValueArray) { + parsedList.add(this.simpleItemFormat(itemObject)); + } + return parsedList; + } + + return originValue; + } + + /** + * 原始值得类型 + * + * @author fengshuonan + * @date 2022/9/7 11:52 + */ + public abstract Class getItemClass(); + + /** + * 格式化转化的过程 + *

+ * 注意,这里只需写基本类型转化的逻辑,例如userId -> 用户名称 + * + * @param businessId 业务id + * @return 转化之后的值 + * @author fengshuonan + * @date 2022/9/7 12:58 + */ + public abstract Object simpleItemFormat(Object businessId); + +} diff --git a/kernel-s-system/system-business-user/src/main/java/cn/stylefeng/roses/kernel/system/modular/user/format/UserFormatProcess.java b/kernel-s-system/system-business-user/src/main/java/cn/stylefeng/roses/kernel/system/modular/user/format/UserFormatProcess.java index 28512fefd..ccbb89fb0 100644 --- a/kernel-s-system/system-business-user/src/main/java/cn/stylefeng/roses/kernel/system/modular/user/format/UserFormatProcess.java +++ b/kernel-s-system/system-business-user/src/main/java/cn/stylefeng/roses/kernel/system/modular/user/format/UserFormatProcess.java @@ -2,75 +2,26 @@ package cn.stylefeng.roses.kernel.system.modular.user.format; import cn.hutool.core.convert.Convert; import cn.hutool.extra.spring.SpringUtil; -import cn.stylefeng.roses.kernel.rule.base.SimpleFieldFormatProcess; -import cn.stylefeng.roses.kernel.rule.enums.FieldTypeEnum; -import cn.stylefeng.roses.kernel.rule.util.ClassTypeUtil; -import cn.stylefeng.roses.kernel.rule.util.MixFieldTypeUtil; -import cn.stylefeng.roses.kernel.rule.util.ObjectConvertUtil; +import cn.stylefeng.roses.kernel.rule.format.BaseSimpleFieldFormatProcess; import cn.stylefeng.roses.kernel.system.api.UserServiceApi; import cn.stylefeng.roses.kernel.system.api.pojo.user.SysUserDTO; -import java.util.ArrayList; -import java.util.Collection; -import java.util.List; - /** * Json响应的针对用户的处理 * * @author fengshuonan * @date 2022/9/7 10:09 */ -public class UserFormatProcess implements SimpleFieldFormatProcess { +public class UserFormatProcess extends BaseSimpleFieldFormatProcess { @Override - public boolean canFormat(Object originValue) { - return MixFieldTypeUtil.whetherAssignClass(originValue, Long.class); + public Class getItemClass() { + return Long.class; } @Override - public Object formatProcess(Object originValue) { - - // 先获取是基础类型还是集合类型 - FieldTypeEnum classFieldType = ClassTypeUtil.getClassFieldType(originValue.getClass()); - - // 基础类型,直接转化 - if (FieldTypeEnum.BASIC.equals(classFieldType)) { - Long userId = Convert.toLong(originValue); - return this.userIdToName(userId); - } - - // 集合类型 - if (FieldTypeEnum.BASE_COLLECTION.equals(classFieldType)) { - Collection userIdList = (Collection) originValue; - List nameList = new ArrayList<>(); - for (Object userIdStr : userIdList) { - Long userId = Convert.toLong(userIdStr); - nameList.add(this.userIdToName(userId)); - } - return nameList; - } - - // 数组类型 - if (FieldTypeEnum.BASE_ARRAY.equals(classFieldType)) { - Object[] objects = ObjectConvertUtil.objToArray(originValue); - List nameList = new ArrayList<>(); - for (Object userIdStr : objects) { - Long userId = Convert.toLong(userIdStr); - nameList.add(this.userIdToName(userId)); - } - return nameList; - } - - return originValue; - } - - /** - * 用户id转化为姓名的过程 - * - * @author fengshuonan - * @date 2022/9/7 10:59 - */ - private String userIdToName(Long userId) { + public Object simpleItemFormat(Object businessId) { + Long userId = Convert.toLong(businessId); UserServiceApi bean = SpringUtil.getBean(UserServiceApi.class); SysUserDTO userInfoByUserId = bean.getUserInfoByUserId(userId); return userInfoByUserId.getRealName();