BiLoggerResultAspect.java 2.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. package com.diagbot.aop;
  2. import com.diagbot.annotation.BiLoggerResult;
  3. import com.diagbot.dto.RespDTO;
  4. import com.diagbot.enums.BiSourceEnum;
  5. import com.diagbot.enums.ProductTypeEnum;
  6. import com.diagbot.rabbit.MySender;
  7. import com.diagbot.util.BeanUtil;
  8. import com.diagbot.util.GsonUtil;
  9. import com.diagbot.util.StringUtil;
  10. import com.diagbot.vo.BaseBiVO;
  11. import com.diagbot.vo.BiRecord;
  12. import org.aspectj.lang.JoinPoint;
  13. import org.aspectj.lang.annotation.AfterReturning;
  14. import org.aspectj.lang.annotation.Aspect;
  15. import org.aspectj.lang.reflect.MethodSignature;
  16. import org.springframework.beans.factory.annotation.Autowired;
  17. import org.springframework.stereotype.Component;
  18. import java.lang.reflect.Method;
  19. import java.util.Date;
  20. /**
  21. * @Description: 日志拦截切面
  22. * @author: gaodm
  23. * @time: 2018/8/2 13:36
  24. */
  25. @Aspect
  26. @Component
  27. public class BiLoggerResultAspect {
  28. @Autowired
  29. private MySender mySender;
  30. @AfterReturning(value = "@annotation(com.diagbot.annotation.BiLoggerResult)", returning = "keys")
  31. public void saveBiRecord(JoinPoint joinPoint, Object keys) {
  32. MethodSignature signature = (MethodSignature) joinPoint.getSignature();
  33. Method method = signature.getMethod();
  34. BiRecord biRecord = new BiRecord();
  35. //请求的参数
  36. Object[] args = joinPoint.getArgs();
  37. String params = "";
  38. for (Object o : args) {
  39. if (o instanceof BaseBiVO) {
  40. BaseBiVO baseBiVO = (BaseBiVO) o;
  41. if (StringUtil.isBlank(baseBiVO.getHospitalCode())) {
  42. return;
  43. } else {
  44. BeanUtil.copyProperties(baseBiVO, biRecord);
  45. }
  46. }
  47. params += GsonUtil.toJson(o);
  48. }
  49. if (!StringUtil.isEmpty(params)) {
  50. biRecord.setParams(params);
  51. }
  52. //设置功能编码
  53. BiLoggerResult biLoggerResult = method.getAnnotation(BiLoggerResult.class);
  54. if (biLoggerResult != null) {
  55. //注解上的描述
  56. biRecord.setCode(biLoggerResult.value());
  57. }
  58. //出参设置
  59. String result = "";
  60. if (keys instanceof RespDTO) {
  61. RespDTO respDTO = (RespDTO) keys;
  62. RespDTO rs = new RespDTO();
  63. rs.code = respDTO.code;
  64. rs.msg = respDTO.msg;
  65. rs.data = new Object();
  66. result = GsonUtil.toJson(rs);
  67. } else {
  68. result = GsonUtil.toJson(keys);
  69. }
  70. if (!StringUtil.isEmpty(result)) {
  71. biRecord.setResult(result);
  72. }
  73. biRecord.setGmtCreate(new Date());
  74. biRecord.setProductType(ProductTypeEnum.LTAPI.getKey());
  75. biRecord.setSource(BiSourceEnum.BI_RESULT.getKey());
  76. //保存BI日志
  77. mySender.outputBiLogSend(biRecord);
  78. }
  79. }