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 getMethodList(Class mapperClass) { List 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()); } } }; } }