InterfaceExternalAspect.java 6.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148
  1. package com.kmall.admin.aop;
  2. import com.alibaba.fastjson.JSON;
  3. import com.kmall.admin.dao.InterfaceSendLogDao;
  4. import com.kmall.admin.entity.InterfaceSendLogEntity;
  5. import com.kmall.admin.haikong.constant.HaiKongMemberSystemUrlEnum;
  6. import com.kmall.admin.haikong.constant.HaiKongWareSystemUrlEnum;
  7. import com.kmall.admin.haikong.constant.VmcconnectUrlEnum;
  8. import com.kmall.common.constant.Dict;
  9. import org.aspectj.lang.ProceedingJoinPoint;
  10. import org.aspectj.lang.annotation.Around;
  11. import org.aspectj.lang.annotation.Aspect;
  12. import org.aspectj.lang.reflect.MethodSignature;
  13. import org.slf4j.Logger;
  14. import org.slf4j.LoggerFactory;
  15. import org.springframework.beans.factory.annotation.Autowired;
  16. import org.springframework.stereotype.Component;
  17. import java.util.Date;
  18. @Aspect
  19. @Component
  20. public class InterfaceExternalAspect {
  21. private final static Logger logger = LoggerFactory.getLogger(RepeatSubmitAspect.class);
  22. /**
  23. * 日志记录dao层
  24. */
  25. @Autowired
  26. private InterfaceSendLogDao interfaceSendLogDao;
  27. /**
  28. * 接口日志记录
  29. *
  30. * @param proceedingJoinPoint
  31. * @return
  32. */
  33. @Around("execution(public * com.kmall.admin.haikong.client.*.*(..))")
  34. public Object around(ProceedingJoinPoint proceedingJoinPoint) throws Throwable {
  35. Object result = null;
  36. String exMsg = null;
  37. String methd = null;
  38. InterfaceSendLogEntity interfaceSendLogEntity = null;
  39. StringBuilder requestLog = new StringBuilder();
  40. try {
  41. MethodSignature methodSignature = (MethodSignature) proceedingJoinPoint.getSignature();
  42. methd = methodSignature.getMethod().getName();
  43. interfaceSendLogEntity = getMethdMsg(methd);
  44. Object[] args = proceedingJoinPoint.getArgs();
  45. for (Object o : args) {
  46. requestLog.append(String.format("参数:%s\r\n", JSON.toJSON(o)));
  47. }
  48. interfaceSendLogEntity.setRequestDate(new Date());
  49. result = proceedingJoinPoint.proceed();
  50. } catch (Exception e) {
  51. exMsg = e.getMessage();
  52. throw e;
  53. } finally {
  54. saveVmcSend(interfaceSendLogEntity,requestLog.toString(),JSON.toJSONString(result),exMsg);
  55. }
  56. return result;
  57. }
  58. /**
  59. * 调用各外部系统日志组装
  60. * @param methd
  61. * @return
  62. */
  63. private InterfaceSendLogEntity getMethdMsg(String methd) {
  64. InterfaceSendLogEntity interfaceSendLogEntity = new InterfaceSendLogEntity();
  65. switch (methd){
  66. case "sendOrder":
  67. interfaceSendLogEntity.setSysType(Dict.sendLog.item_mall.getItemName());
  68. interfaceSendLogEntity.setInterfaceType(VmcconnectUrlEnum.ORDERS_CREATE_ORDER.getMethodName());
  69. break;
  70. case "refundOrder":
  71. interfaceSendLogEntity.setSysType(Dict.sendLog.item_mall.getItemName());
  72. interfaceSendLogEntity.setInterfaceType(VmcconnectUrlEnum.ORDERS_CANCEL_ORDER.getMethodName());
  73. break;
  74. case "ordersOuterStatus":
  75. interfaceSendLogEntity.setSysType(Dict.sendLog.item_mall.getItemName());
  76. interfaceSendLogEntity.setInterfaceType(VmcconnectUrlEnum.ORDERS_OUTER_STATUS.getMethodName());
  77. break;
  78. case "resendOrder":
  79. interfaceSendLogEntity.setSysType(Dict.sendLog.item_mall.getItemName());
  80. interfaceSendLogEntity.setInterfaceType(VmcconnectUrlEnum.ORDERS_RETRY_ORDER.getMethodName());
  81. break;
  82. case "queryWarehouseStock":
  83. interfaceSendLogEntity.setSysType(Dict.sendLog.item_warehouse.getItemName());
  84. interfaceSendLogEntity.setInterfaceType(HaiKongWareSystemUrlEnum.QUERY_INVENTORY.getMethodName());
  85. break;
  86. //会员系统
  87. case "getAccessToken":
  88. interfaceSendLogEntity.setSysType(Dict.sendLog.item_member.getItemName());
  89. interfaceSendLogEntity.setInterfaceType(HaiKongMemberSystemUrlEnum.QUERY_ACCESS_TOKEN.getMethodName());
  90. break;
  91. case "refreshAccessToken":
  92. interfaceSendLogEntity.setSysType(Dict.sendLog.item_member.getItemName());
  93. interfaceSendLogEntity.setInterfaceType(HaiKongMemberSystemUrlEnum.REFRESH_ACCESS_TOKEN.getMethodName());
  94. break;
  95. case "getMemberInfoByPhone":
  96. interfaceSendLogEntity.setSysType(Dict.sendLog.item_member.getItemName());
  97. interfaceSendLogEntity.setInterfaceType(HaiKongMemberSystemUrlEnum.QUERY_MEMBER_INFO_BY_PHONE.getMethodName());
  98. break;
  99. case "getMemberInfoByCode":
  100. interfaceSendLogEntity.setSysType(Dict.sendLog.item_member.getItemName());
  101. interfaceSendLogEntity.setInterfaceType(HaiKongMemberSystemUrlEnum.QUERY_MEMBER_INFO_BY_CODE.getMethodName());
  102. break;
  103. case "getMemberCouponInfo":
  104. interfaceSendLogEntity.setSysType(Dict.sendLog.item_member.getItemName());
  105. interfaceSendLogEntity.setInterfaceType(HaiKongMemberSystemUrlEnum.QUERY_MEMBER_COUPON.getMethodName());
  106. break;
  107. case "changeMemberScore":
  108. interfaceSendLogEntity.setSysType(Dict.sendLog.item_member.getItemName());
  109. interfaceSendLogEntity.setInterfaceType(HaiKongMemberSystemUrlEnum.CHANGE_MEMBER_SCORE.getMethodName());
  110. break;
  111. case "memberOrderSync":
  112. interfaceSendLogEntity.setSysType(Dict.sendLog.item_member.getItemName());
  113. interfaceSendLogEntity.setInterfaceType(HaiKongMemberSystemUrlEnum.MEMBER_ORDER_SYNC.getMethodName());
  114. break;
  115. case "rollbackMemberScore":
  116. interfaceSendLogEntity.setSysType(Dict.sendLog.item_member.getItemName());
  117. interfaceSendLogEntity.setInterfaceType(HaiKongMemberSystemUrlEnum.ROLLBACK_MEMBER_SCORE.getMethodName());
  118. break;
  119. default:
  120. break;
  121. }
  122. return interfaceSendLogEntity;
  123. }
  124. /**
  125. * 插入日志记录
  126. * @param interfaceSendLogEntity
  127. * @param request
  128. * @param response
  129. * @param exMsg
  130. */
  131. private void saveVmcSend(InterfaceSendLogEntity interfaceSendLogEntity, String request, String response,String exMsg){
  132. interfaceSendLogEntity.setRequestMsg(request);
  133. interfaceSendLogEntity.setResponseMsg(response);
  134. interfaceSendLogEntity.setResponseDate(new Date());
  135. interfaceSendLogEntity.setExceptionMsg(exMsg);
  136. interfaceSendLogDao.save(interfaceSendLogEntity);
  137. }
  138. }