guohongjin
2024-05-15 5b7639f0bd9e056738ec15100ed0532e965c6cd5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
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);
 
}