package com.yunbao.kpiapi.config;
import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;
import org.apache.ibatis.reflection.MetaObject;
import org.springframework.stereotype.Component;
import java.lang.annotation.Annotation;
import java.lang.reflect.Field;
import java.time.LocalDateTime;
/**
* @author: duzesheng
* @date: 2019/12/16
* @description: mybatis plus自动填充公共字段
*/
@Component
public class MetaObjectHandlerConfig implements MetaObjectHandler {
/**
* 新增时自动填充
* @param metaObject
*/
@Override
public void insertFill(MetaObject metaObject) {
exeFill("createTime", LocalDateTime.now(), metaObject);
exeFill("updateTime", LocalDateTime.now(), metaObject);
exeFill("flag", "0", metaObject);
//订单到期时间(15分钟)
exeFill("overTime", LocalDateTime.now().plusMinutes(15), metaObject);
}
/**
* 更新时自动填充
* @param metaObject
*/
@Override
public void updateFill(MetaObject metaObject) {
exeFill("updateTime", LocalDateTime.now(), metaObject);
}
public void exeFill(String fieldName, Object fieldVal, MetaObject metaObject){
if (metaObject.hasSetter(fieldName) && metaObject.hasGetter(fieldName)) {
Object classObj = metaObject.getOriginalObject();
Field[] declaredFields = classObj.getClass().getDeclaredFields();
if(declaredFields!=null){
for(Field field:declaredFields){
if(field.getName().equals(fieldName)){
TableField tableField = field.getAnnotation(TableField.class);
if(tableField!=null && tableField.fill()!=FieldFill.DEFAULT){
this.setFieldValByName(fieldName, fieldVal, metaObject);
}
}
}
}
}
}
}