package com.bs.common.mybatis.handler;

import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;
import com.bs.common.utils.SecurityUtils;
import org.apache.ibatis.reflection.MetaObject;

import java.time.ZonedDateTime;
import java.util.Date;

/**
 * 通用参数填充实现类
 *
 * 如果没有显式的对通用参数进行赋值，这里会对通用参数进行填充、赋值
 *
 * @author hexiaowu
 */
public class DefaultDBFieldHandler implements MetaObjectHandler {

    @Override
    public void insertFill(MetaObject metaObject) {
        /**
         * createBy 创建人
         */
        boolean createByOf = metaObject.hasSetter("createBy");
        if(createByOf){
            this.setFieldValByName("createBy", SecurityUtils.getUsername(), metaObject);
        }

        /**
         * createDate 创建时间
         */
        boolean createTime = metaObject.hasSetter("createTime");
        if(createTime){
            this.setFieldValByName("createTime", Date.from(ZonedDateTime.now().toInstant()), metaObject);
        }
        /**
         * createDate 创建时间
         */
        boolean delFlag = metaObject.hasSetter("delFlag");
        if(delFlag){
            this.setFieldValByName("delFlag", "0", metaObject);
        }
        /**
         *部门id
         */
        boolean deptId = metaObject.hasSetter("createDept");
        if(deptId){
            this.setFieldValByName("createDept", SecurityUtils.getDeptId(), metaObject);
        }

    }

    @Override
    public void updateFill(MetaObject metaObject) {

        /**
         * updateBy 更新人
         */
        boolean updateByOf = metaObject.hasSetter("updateBy");
        if(updateByOf){
            this.setFieldValByName("updateBy",SecurityUtils.getUsername(), metaObject);
        }
        /**
         * updateDate 更新时间
         */

        boolean updateTimeOf = metaObject.hasSetter("updateTime");
        if(updateTimeOf){
            this.setFieldValByName("updateTime", Date.from(ZonedDateTime.now().toInstant()), metaObject);
        }
    }
}
