package com.moral.api.config.mybatis;
|
|
import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;
|
import com.baomidou.mybatisplus.core.injector.AbstractMethod;
|
import com.baomidou.mybatisplus.core.injector.DefaultSqlInjector;
|
import com.baomidou.mybatisplus.extension.injector.methods.LogicDeleteByIdWithFill;
|
import com.baomidou.mybatisplus.extension.plugins.OptimisticLockerInterceptor;
|
import com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor;
|
import com.moral.api.config.Interceptor.UserHelper;
|
import com.moral.api.pojo.enums.YesOrNo;
|
import com.moral.api.pojo.vo.user.QxUser;
|
import org.apache.ibatis.reflection.MetaObject;
|
import org.mybatis.spring.annotation.MapperScan;
|
import org.springframework.context.annotation.Bean;
|
import org.springframework.context.annotation.Configuration;
|
|
import java.util.Date;
|
import java.util.List;
|
|
/**
|
* @ClassName PlusConfig
|
* @Description TODO
|
* @Author @cjl
|
* @Date 2023-09-25 10:28
|
* @Version 1.0
|
*/
|
@Configuration
|
@MapperScan(basePackages = {"com.moral.*.mapper"})
|
public class PlusConfig {
|
@Bean
|
public PaginationInterceptor paginationInterceptor() {
|
return new PaginationInterceptor();
|
}
|
|
@Bean
|
public OptimisticLockerInterceptor optimisticLockerInterceptor() {
|
return new OptimisticLockerInterceptor();
|
}
|
|
|
@Bean
|
public DefaultSqlInjector logicSqlInjector() {
|
return new DefaultSqlInjector() {
|
@Override
|
public List<AbstractMethod> getMethodList(Class<?> mapperClass) {
|
List<AbstractMethod> methodList = super.getMethodList(mapperClass);
|
methodList.add(new LogicDeleteByIdWithFill());
|
return methodList;
|
}
|
};
|
}
|
|
@Bean
|
public MetaObjectHandler metaObjectHandler() {
|
return new MetaObjectHandler() {
|
|
private final static String IS_DEL = "isDel";
|
private final static String IS_INVALID = "isInvalid";
|
private final static String CREATOR_ID = "createId";
|
private final static String CREATOR_NAME = "createName";
|
private final static String CREATE_TIME = "createTime";
|
private final static String LAST_MODIFY_ID = "updateId";
|
private final static String LAST_MODIFY_NAME = "updateName";
|
private final static String LAST_MODIFY_TIME = "updateTime";
|
|
@Override
|
public void insertFill(MetaObject metaObject) {
|
if (metaObject.hasSetter(IS_DEL)) {
|
this.setFieldValByName(IS_DEL, 0, metaObject);
|
}
|
if (metaObject.hasSetter(IS_INVALID)) {
|
this.setFieldValByName(IS_INVALID, 0, metaObject);
|
}
|
creatorHandler(metaObject);
|
lastModifyHandler(metaObject);
|
}
|
|
@Override
|
public void updateFill(MetaObject metaObject) {
|
lastModifyHandler(metaObject);
|
}
|
|
private void creatorHandler(MetaObject metaObject) {
|
QxUser currentUser = UserHelper.getCurrentUser();
|
Integer userId = currentUser == null ? 0 : currentUser.getUserId()==null?null:currentUser.getUserId().intValue();
|
String userName = currentUser == null ? "admin" : currentUser.getUserName();
|
if (metaObject.hasSetter(IS_INVALID)) {
|
this.strictInsertFill(metaObject, IS_INVALID, Integer.class, YesOrNo.NO.getValue());
|
}
|
if (metaObject.hasSetter(IS_DEL)) {
|
this.strictInsertFill(metaObject, IS_DEL, Integer.class, YesOrNo.NO.getValue());
|
}
|
|
if (metaObject.hasSetter(CREATOR_ID)) {
|
this.strictInsertFill(metaObject, CREATOR_ID, Integer.class, userId);
|
}
|
if (metaObject.hasSetter(CREATOR_NAME)) {
|
this.strictInsertFill(metaObject, CREATOR_NAME, String.class, userName);
|
}
|
if (metaObject.hasSetter(CREATE_TIME)) {
|
this.strictInsertFill(metaObject, CREATE_TIME, Date.class, new Date());
|
}
|
}
|
|
private void lastModifyHandler(MetaObject metaObject) {
|
QxUser currentUser = UserHelper.getCurrentUser();
|
Integer userId = currentUser == null ? 0 : currentUser.getUserId()==null?null:currentUser.getUserId().intValue();
|
String userName = currentUser == null ? "admin" : currentUser.getUserName();
|
if (metaObject.hasSetter(LAST_MODIFY_ID)) {
|
this.strictUpdateFill(metaObject, LAST_MODIFY_ID, Integer.class, userId);
|
}
|
if (metaObject.hasSetter(LAST_MODIFY_NAME)) {
|
this.strictUpdateFill(metaObject, LAST_MODIFY_NAME, String.class, userName);
|
}
|
if (metaObject.hasSetter(LAST_MODIFY_TIME)) {
|
this.strictUpdateFill(metaObject, LAST_MODIFY_TIME, Date.class, new Date());
|
}
|
}
|
|
|
};
|
}
|
|
|
}
|