cjl
2023-12-14 6992aaf0587c09f7c511c1afd12e1519d91363d3
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
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
package com.moral.api.config.mybatis;
 
import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;
import com.baomidou.mybatisplus.core.injector.AbstractMethod;
import com.baomidou.mybatisplus.core.injector.DefaultSqlInjector;
import com.baomidou.mybatisplus.extension.injector.methods.LogicDeleteByIdWithFill;
import com.baomidou.mybatisplus.extension.plugins.OptimisticLockerInterceptor;
import com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor;
import com.moral.api.config.Interceptor.UserHelper;
import com.moral.api.pojo.enums.YesOrNo;
import com.moral.api.pojo.vo.user.QxUser;
import org.apache.ibatis.reflection.MetaObject;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
 
import java.util.Date;
import java.util.List;
 
/**
 * @ClassName PlusConfig
 * @Description TODO
 * @Author @cjl
 * @Date 2023-09-25 10:28
 * @Version 1.0
 */
@Configuration
/*@MapperScan(basePackages = {"com.moral.*.mapper"})*/
public class PlusConfig {
    @Bean
    public PaginationInterceptor paginationInterceptor() {
        return new PaginationInterceptor();
    }
 
    @Bean
    public OptimisticLockerInterceptor optimisticLockerInterceptor() {
        return new OptimisticLockerInterceptor();
    }
 
 
    @Bean
    public DefaultSqlInjector logicSqlInjector() {
        return new DefaultSqlInjector() {
            @Override
            public List<AbstractMethod> getMethodList(Class<?> mapperClass) {
                List<AbstractMethod> methodList = super.getMethodList(mapperClass);
                methodList.add(new LogicDeleteByIdWithFill());
                return methodList;
            }
        };
    }
 
    @Bean
    public MetaObjectHandler metaObjectHandler() {
        return new MetaObjectHandler() {
 
            private final static String IS_DEL = "isDel";
            private final static String IS_INVALID = "isInvalid";
            private final static String CREATOR_ID = "createId";
            private final static String CREATOR_NAME = "createName";
            private final static String CREATE_TIME = "createTime";
            private final static String LAST_MODIFY_ID = "updateId";
            private final static String LAST_MODIFY_NAME = "updateName";
            private final static String LAST_MODIFY_TIME = "updateTime";
 
            @Override
            public void insertFill(MetaObject metaObject) {
                if (metaObject.hasSetter(IS_DEL)) {
                    this.setFieldValByName(IS_DEL, 0, metaObject);
                }
                if (metaObject.hasSetter(IS_INVALID)) {
                    this.setFieldValByName(IS_INVALID, 0, metaObject);
                }
                creatorHandler(metaObject);
                lastModifyHandler(metaObject);
            }
 
            @Override
            public void updateFill(MetaObject metaObject) {
                lastModifyHandler(metaObject);
            }
 
            private void creatorHandler(MetaObject metaObject) {
                QxUser currentUser = UserHelper.getCurrentUser();
                Integer userId = currentUser == null ? 0 : currentUser.getUserId()==null?null:currentUser.getUserId().intValue();
                String userName = currentUser == null ? "admin" : currentUser.getUserName();
                if (metaObject.hasSetter(IS_INVALID)) {
                    this.strictInsertFill(metaObject, IS_INVALID, Integer.class, YesOrNo.NO.getValue());
                }
                if (metaObject.hasSetter(IS_DEL)) {
                    this.strictInsertFill(metaObject, IS_DEL, Integer.class, YesOrNo.NO.getValue());
                }
 
                if (metaObject.hasSetter(CREATOR_ID)) {
                    this.strictInsertFill(metaObject, CREATOR_ID, Integer.class, userId);
                }
                if (metaObject.hasSetter(CREATOR_NAME)) {
                    this.strictInsertFill(metaObject, CREATOR_NAME, String.class, userName);
                }
                if (metaObject.hasSetter(CREATE_TIME)) {
                    this.strictInsertFill(metaObject, CREATE_TIME, Date.class, new Date());
                }
            }
 
            private void lastModifyHandler(MetaObject metaObject) {
                QxUser currentUser = UserHelper.getCurrentUser();
                Integer userId = currentUser == null ? 0 : currentUser.getUserId()==null?null:currentUser.getUserId().intValue();
                String userName = currentUser == null ? "admin" : currentUser.getUserName();
                if (metaObject.hasSetter(LAST_MODIFY_ID)) {
                    this.strictUpdateFill(metaObject, LAST_MODIFY_ID, Integer.class, userId);
                }
                if (metaObject.hasSetter(LAST_MODIFY_NAME)) {
                    this.strictUpdateFill(metaObject, LAST_MODIFY_NAME, String.class, userName);
                }
                if (metaObject.hasSetter(LAST_MODIFY_TIME)) {
                    this.strictUpdateFill(metaObject, LAST_MODIFY_TIME, Date.class, new Date());
                }
            }
 
 
        };
    }
 
 
}