package com.agri.framework.config;

import com.agri.common.core.domain.model.LoginUser;
import com.agri.common.utils.SecurityUtils;
import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;
import org.apache.ibatis.reflection.MetaObject;
import org.springframework.stereotype.Component;

import java.util.Date;

/**
 * @Auther: jone
 * @Date: 2026/1/8 - 01 - 08 - 0:49
 * @Description: com.agri.framework.config
 * @version: 1.0
 */
@Component
public class MybatisPlusHandler implements MetaObjectHandler {

    /**
     * 获取用户缓存信息
     */
    public LoginUser getLoginUser()
    {
        return SecurityUtils.getLoginUser();
    }

    // 插入操作时自动填充
    @Override
    public void insertFill(MetaObject metaObject) {
        // 填充创建时间（字段名：createTime，值：当前时间）
        this.strictInsertFill(metaObject, "createTime", Date.class, new Date());
        // 示例：填充创建人（假设从上下文获取当前用户ID）
        this.strictInsertFill(metaObject, "createBy", String.class, getLoginUser()!=null?getLoginUser().getUsername():"");
    }

    // 更新操作时自动填充
    @Override
    public void updateFill(MetaObject metaObject) {
        // 填充更新时间（字段名：updateTime，值：当前时间）
        this.strictUpdateFill(metaObject, "updateTime", Date.class, new Date());
        // 示例：填充更新人
        this.strictUpdateFill(metaObject, "updateBy", String.class, getLoginUser()!=null?getLoginUser().getUsername():"");
    }
}