【7.2.5】【rule】简化代码,封装抽象类

pull/37/head
fengshuonan 2022-09-07 13:36:33 +08:00
parent f51961dd4b
commit 7b12597135
2 changed files with 86 additions and 55 deletions

View File

@ -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<Object> 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<Object> 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();
/**
*
* <p>
* userId ->
*
* @param businessId id
* @return
* @author fengshuonan
* @date 2022/9/7 12:58
*/
public abstract Object simpleItemFormat(Object businessId);
}

View File

@ -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<String> 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<String> 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();