MetaObjectHandlerConfig.java 2.16 KB
Newer Older
liqin's avatar
liqin committed
1 2
package cn.wisenergy.chnmuseum.party.common.mybatis;

liqin's avatar
liqin committed
3
import cn.wisenergy.chnmuseum.party.model.TUser;
liqin's avatar
liqin committed
4 5
import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;
import org.apache.ibatis.reflection.MetaObject;
liqin's avatar
liqin committed
6 7
import org.apache.shiro.SecurityUtils;
import org.apache.shiro.subject.Subject;
liqin's avatar
liqin committed
8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
import org.springframework.stereotype.Component;

import java.time.LocalDateTime;

/**
 * 配置公共字段自动填充功能  @TableField(..fill = FieldFill.INSERT)
 * 特别注意,3.0-gamma之前的版本 MetaObjectHandler 是抽象类
 * 3.0-RC之后的版本MetaObjectHandler 是接口
 */
@Component
public class MetaObjectHandlerConfig implements MetaObjectHandler {

    @Override
    public void insertFill(MetaObject metaObject) {
        LocalDateTime now = LocalDateTime.now();
liqin's avatar
liqin committed
23 24
        Object createTime = getFieldValByName("createTime", metaObject);
        Object updateTime = getFieldValByName("updateTime", metaObject);
liqin's avatar
liqin committed
25
        if (createTime == null) {
liqin's avatar
liqin committed
26
            this.setFieldValByName("createTime", now, metaObject);
liqin's avatar
liqin committed
27 28
        }
        if (updateTime == null) {
liqin's avatar
liqin committed
29
            this.setFieldValByName("updateTime", now, metaObject);
liqin's avatar
liqin committed
30
        }
liqin's avatar
liqin committed
31 32
        final TUser currentUser = getCurrentUser();
        if (currentUser != null) {
liqin's avatar
liqin committed
33 34 35
//            this.setFieldValByName("userId", currentUser.getId(), metaObject);
//            this.setFieldValByName("userName", currentUser.getUserName(), metaObject);
//            this.setFieldValByName("orgName", currentUser.getOrgName(), metaObject);
liqin's avatar
liqin committed
36
            this.setFieldValByName("creatorName", currentUser.getUserName(), metaObject);
liqin's avatar
liqin committed
37
        }
liqin's avatar
liqin committed
38 39 40 41 42
    }

    @Override
    public void updateFill(MetaObject metaObject) {
        LocalDateTime now = LocalDateTime.now();
liqin's avatar
liqin committed
43
        Object updateTime = getFieldValByName("updateTime", metaObject);
liqin's avatar
liqin committed
44
        if (updateTime == null) {
liqin's avatar
liqin committed
45
            this.setFieldValByName("updateTime", now, metaObject);
liqin's avatar
liqin committed
46 47 48
        }
    }

liqin's avatar
liqin committed
49
    /*
liqin's avatar
liqin committed
50 51 52 53
     * 获取当前登录用户
     *
     * @return 用户对象
     */
liqin's avatar
liqin committed
54
    private TUser getCurrentUser() {
liqin's avatar
liqin committed
55 56 57 58
        Subject subject = SecurityUtils.getSubject();
        if (subject != null) {
            return (TUser) subject.getPrincipal();
        }
liqin's avatar
liqin committed
59 60
        return null;
    }
liqin's avatar
liqin committed
61 62

}