MyMetaObjectHandler.java 3.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. package com.template.handler;
  2. import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;
  3. import com.template.common.utils.AesUtils;
  4. import lombok.extern.slf4j.Slf4j;
  5. import org.apache.ibatis.reflection.MetaObject;
  6. import org.springframework.stereotype.Component;
  7. import org.springframework.web.context.request.RequestAttributes;
  8. import org.springframework.web.context.request.RequestContextHolder;
  9. import org.springframework.web.context.request.ServletRequestAttributes;
  10. import javax.servlet.http.HttpServletRequest;
  11. import java.util.Date;
  12. @Slf4j
  13. @Component // 一定不要忘记把处理器加到IOC容器中!
  14. public class MyMetaObjectHandler implements MetaObjectHandler {
  15. //创建用户和更新用户填充0的时候则说明不是账号操作的
  16. // 插入时的填充策略
  17. @Override
  18. public void insertFill(MetaObject metaObject) {
  19. HttpServletRequest request = getHttpServletRequest();
  20. if (request != null) {
  21. //String user_id = request.getHeader("user_head") == null ? "0" : AesUtils.decrypt(request.getHeader("user_head"));
  22. String user_id = request.getAttribute("userId") == null ? "0" : request.getAttribute("userId").toString();
  23. log.info("start insert fill.....");
  24. // setFieldValByName(String fieldName, Object fieldVal, MetaObject metaObject
  25. this.setFieldValByName("createTime", new Date(), metaObject);
  26. this.setFieldValByName("updateTime", new Date(), metaObject);
  27. this.setFieldValByName("createUser", user_id, metaObject);
  28. this.setFieldValByName("updateUser", user_id, metaObject);
  29. this.setFieldValByName("deleted", 0, metaObject);
  30. } else {
  31. this.setFieldValByName("createTime", new Date(), metaObject);
  32. this.setFieldValByName("updateTime", new Date(), metaObject);
  33. this.setFieldValByName("createUser","0", metaObject);
  34. this.setFieldValByName("updateUser","0", metaObject);
  35. this.setFieldValByName("deleted", 0, metaObject);
  36. }
  37. }
  38. // 更新时的填充策略
  39. @Override
  40. public void updateFill(MetaObject metaObject) {
  41. HttpServletRequest request = getHttpServletRequest();
  42. if (request != null) {
  43. //String user_id = request.getHeader("user_head") == null ? "0" : AesUtils.decrypt(request.getHeader("user_head"));
  44. String user_id = request.getAttribute("userId") == null ? "0" : request.getAttribute("userId").toString();
  45. log.info("start update fill.....");
  46. this.setFieldValByName("updateTime", new Date(), metaObject);
  47. this.setFieldValByName("updateUser", user_id, metaObject);
  48. }
  49. }
  50. private HttpServletRequest getHttpServletRequest() {
  51. RequestAttributes requestAttributes = RequestContextHolder.getRequestAttributes();
  52. ServletRequestAttributes attributes = (ServletRequestAttributes) requestAttributes;
  53. return attributes == null ? null : attributes.getRequest();
  54. }
  55. }