huang
2025-11-20 366ba040d2447bacd3455299425e3166f1f992bb
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
package com.mes.config;
 
import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;
import org.apache.ibatis.reflection.MetaObject;
import org.springframework.stereotype.Component;
 
import java.time.LocalDateTime;
 
/**
 * 统一处理公共字段(created_time、updated_time、created_by、updated_by)的自动填充
 */
@Component
public class MybatisMetaObjectHandler implements MetaObjectHandler {
 
    @Override
    public void insertFill(MetaObject metaObject) {
        LocalDateTime now = LocalDateTime.now();
        String operator = resolveOperator();
 
        strictInsertFill(metaObject, "createdTime", LocalDateTime.class, now);
        strictInsertFill(metaObject, "updatedTime", LocalDateTime.class, now);
        strictInsertFill(metaObject, "createdBy", String.class, operator);
        strictInsertFill(metaObject, "updatedBy", String.class, operator);
    }
 
    @Override
    public void updateFill(MetaObject metaObject) {
        strictUpdateFill(metaObject, "updatedTime", LocalDateTime.class, LocalDateTime.now());
        strictUpdateFill(metaObject, "updatedBy", String.class, resolveOperator());
    }
 
    private String resolveOperator() {
        // 注意:这里可以接入Spring Security或其他认证框架获取当前登录用户
        // 例如:SecurityContextHolder.getContext().getAuthentication().getName()
        // 当前暂时使用system作为默认值
        try {
            // 可以尝试从请求上下文获取用户信息
            // 这里暂时返回system,后续可以扩展
            return "system";
        } catch (Exception e) {
            return "system";
        }
    }
}