package com.mh.user.aspect; import java.util.Date; import javax.servlet.http.HttpServletRequest; import com.mh.common.utils.StringUtils; import com.mh.user.utils.SecurityUtils; import org.apache.commons.beanutils.BeanUtils; import org.aspectj.lang.ProceedingJoinPoint; import org.aspectj.lang.annotation.Around; import org.aspectj.lang.annotation.Aspect; import org.aspectj.lang.annotation.Pointcut; import org.springframework.context.annotation.Configuration; import org.springframework.stereotype.Component; import org.springframework.web.context.request.RequestContextHolder; import org.springframework.web.context.request.ServletRequestAttributes; /** * DAO切面,插入创建人,创建时间,修改人,修改时间 * @author Louis * @date Oct 29, 2018 */ @Aspect @Component @Configuration public class DaoAspect { private static final String createBy = "createBy"; private static final String createTime = "createTime"; private static final String lastUpdateBy = "lastUpdateBy"; private static final String lastUpdateTime = "lastUpdateTime"; @Pointcut("execution(* com.mh.*.mapper.*.update*(..))") public void daoUpdate() { } @Pointcut("execution(* com.mh.*.mapper.*.insert*(..))") public void daoCreate() { } @Around("daoUpdate()") public Object doAroundUpdate(ProceedingJoinPoint pjp) throws Throwable { ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes(); if (attributes == null) { return pjp.proceed(); } HttpServletRequest request = attributes.getRequest(); String token = request.getHeader("token"); String username = getUserName(); if (token != null && username != null) { Object[] objects = pjp.getArgs(); if (objects != null && objects.length > 0) { for (Object arg : objects) { BeanUtils.setProperty(arg, lastUpdateBy, username); BeanUtils.setProperty(arg, lastUpdateTime, new Date()); } } } Object object = pjp.proceed(); return object; } @Around("daoCreate()") public Object doAroundCreate(ProceedingJoinPoint pjp) throws Throwable { ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes(); if (attributes == null) { return pjp.proceed(); } Object[] objects = pjp.getArgs(); if (objects != null && objects.length > 0) { for (Object arg : objects) { String username = getUserName(); if (username != null) { if (StringUtils.isBlank(BeanUtils.getProperty(arg, createBy))) { BeanUtils.setProperty(arg, createBy, username); } if (StringUtils.isBlank(BeanUtils.getProperty(arg, createTime))) { BeanUtils.setProperty(arg, createTime, new Date()); } } } } Object object = pjp.proceed(); return object; } private String getUserName() { return SecurityUtils.getUsername(); } }