| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748 |
- package jnpf.database.plugins;
- import com.baomidou.mybatisplus.core.mapper.BaseMapper;
- import jnpf.database.util.LogicDeleteHelper;
- import org.aopalliance.intercept.MethodInterceptor;
- import org.aopalliance.intercept.MethodInvocation;
- import org.springframework.aop.framework.ProxyFactory;
- import org.springframework.beans.BeansException;
- import org.springframework.beans.factory.config.BeanPostProcessor;
- import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
- import org.springframework.context.annotation.Configuration;
- import jakarta.annotation.Nonnull;
- import jakarta.annotation.Nullable;
- /**
- * MybatisPlus删除方法拦截, 若调用删除方法标记当前为删除操作, MybatisPlusMetaObjectHandler 自动填充删除时间、删除人员
- */
- @Configuration
- @ConditionalOnProperty(prefix = "config", name = "EnableLogicDelete", havingValue = "true", matchIfMissing = false)
- public class MyLogicServiceBeanPostProcessor implements BeanPostProcessor {
- @Override
- public Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException {
- Object obj = BeanPostProcessor.super.postProcessAfterInitialization(bean, beanName);
- if(obj != null && BaseMapper.class.isAssignableFrom(obj.getClass())){
- ProxyFactory factory = new ProxyFactory();
- factory.setTarget(obj);
- factory.addAdvice(new MethodInterceptor() {
- @Nullable
- @Override
- public Object invoke(@Nonnull MethodInvocation invocation) throws Throwable {
- if(invocation.getMethod().getName().startsWith("delete")){
- LogicDeleteHelper.setDeleteAction();
- }
- try {
- return invocation.proceed();
- } finally {
- LogicDeleteHelper.clearDeleteAction();
- }
- }
- });
- return factory.getProxy();
- }
- return obj;
- }
- }
|