123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148 |
- package com.kmall.admin.aop;
- import com.alibaba.fastjson.JSON;
- import com.kmall.admin.dao.InterfaceSendLogDao;
- import com.kmall.admin.entity.InterfaceSendLogEntity;
- import com.kmall.admin.haikong.constant.HaiKongMemberSystemUrlEnum;
- import com.kmall.admin.haikong.constant.HaiKongWareSystemUrlEnum;
- import com.kmall.admin.haikong.constant.VmcconnectUrlEnum;
- import com.kmall.common.constant.Dict;
- import org.aspectj.lang.ProceedingJoinPoint;
- import org.aspectj.lang.annotation.Around;
- import org.aspectj.lang.annotation.Aspect;
- import org.aspectj.lang.reflect.MethodSignature;
- import org.slf4j.Logger;
- import org.slf4j.LoggerFactory;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.stereotype.Component;
- import java.util.Date;
- @Aspect
- @Component
- public class InterfaceExternalAspect {
- private final static Logger logger = LoggerFactory.getLogger(RepeatSubmitAspect.class);
- /**
- * 日志记录dao层
- */
- @Autowired
- private InterfaceSendLogDao interfaceSendLogDao;
- /**
- * 接口日志记录
- *
- * @param proceedingJoinPoint
- * @return
- */
- @Around("execution(public * com.kmall.admin.haikong.client.*.*(..))")
- public Object around(ProceedingJoinPoint proceedingJoinPoint) throws Throwable {
- Object result = null;
- String exMsg = null;
- String methd = null;
- InterfaceSendLogEntity interfaceSendLogEntity = null;
- StringBuilder requestLog = new StringBuilder();
- try {
- MethodSignature methodSignature = (MethodSignature) proceedingJoinPoint.getSignature();
- methd = methodSignature.getMethod().getName();
- interfaceSendLogEntity = getMethdMsg(methd);
- Object[] args = proceedingJoinPoint.getArgs();
- for (Object o : args) {
- requestLog.append(String.format("参数:%s\r\n", JSON.toJSON(o)));
- }
- interfaceSendLogEntity.setRequestDate(new Date());
- result = proceedingJoinPoint.proceed();
- } catch (Exception e) {
- exMsg = e.getMessage();
- throw e;
- } finally {
- saveVmcSend(interfaceSendLogEntity,requestLog.toString(),JSON.toJSONString(result),exMsg);
- }
- return result;
- }
- /**
- * 调用各外部系统日志组装
- * @param methd
- * @return
- */
- private InterfaceSendLogEntity getMethdMsg(String methd) {
- InterfaceSendLogEntity interfaceSendLogEntity = new InterfaceSendLogEntity();
- switch (methd){
- case "sendOrder":
- interfaceSendLogEntity.setSysType(Dict.sendLog.item_mall.getItemName());
- interfaceSendLogEntity.setInterfaceType(VmcconnectUrlEnum.ORDERS_CREATE_ORDER.getMethodName());
- break;
- case "refundOrder":
- interfaceSendLogEntity.setSysType(Dict.sendLog.item_mall.getItemName());
- interfaceSendLogEntity.setInterfaceType(VmcconnectUrlEnum.ORDERS_CANCEL_ORDER.getMethodName());
- break;
- case "ordersOuterStatus":
- interfaceSendLogEntity.setSysType(Dict.sendLog.item_mall.getItemName());
- interfaceSendLogEntity.setInterfaceType(VmcconnectUrlEnum.ORDERS_OUTER_STATUS.getMethodName());
- break;
- case "resendOrder":
- interfaceSendLogEntity.setSysType(Dict.sendLog.item_mall.getItemName());
- interfaceSendLogEntity.setInterfaceType(VmcconnectUrlEnum.ORDERS_RETRY_ORDER.getMethodName());
- break;
- case "queryWarehouseStock":
- interfaceSendLogEntity.setSysType(Dict.sendLog.item_warehouse.getItemName());
- interfaceSendLogEntity.setInterfaceType(HaiKongWareSystemUrlEnum.QUERY_INVENTORY.getMethodName());
- break;
- //会员系统
- case "getAccessToken":
- interfaceSendLogEntity.setSysType(Dict.sendLog.item_member.getItemName());
- interfaceSendLogEntity.setInterfaceType(HaiKongMemberSystemUrlEnum.QUERY_ACCESS_TOKEN.getMethodName());
- break;
- case "refreshAccessToken":
- interfaceSendLogEntity.setSysType(Dict.sendLog.item_member.getItemName());
- interfaceSendLogEntity.setInterfaceType(HaiKongMemberSystemUrlEnum.REFRESH_ACCESS_TOKEN.getMethodName());
- break;
- case "getMemberInfoByPhone":
- interfaceSendLogEntity.setSysType(Dict.sendLog.item_member.getItemName());
- interfaceSendLogEntity.setInterfaceType(HaiKongMemberSystemUrlEnum.QUERY_MEMBER_INFO_BY_PHONE.getMethodName());
- break;
- case "getMemberInfoByCode":
- interfaceSendLogEntity.setSysType(Dict.sendLog.item_member.getItemName());
- interfaceSendLogEntity.setInterfaceType(HaiKongMemberSystemUrlEnum.QUERY_MEMBER_INFO_BY_CODE.getMethodName());
- break;
- case "getMemberCouponInfo":
- interfaceSendLogEntity.setSysType(Dict.sendLog.item_member.getItemName());
- interfaceSendLogEntity.setInterfaceType(HaiKongMemberSystemUrlEnum.QUERY_MEMBER_COUPON.getMethodName());
- break;
- case "changeMemberScore":
- interfaceSendLogEntity.setSysType(Dict.sendLog.item_member.getItemName());
- interfaceSendLogEntity.setInterfaceType(HaiKongMemberSystemUrlEnum.CHANGE_MEMBER_SCORE.getMethodName());
- break;
- case "memberOrderSync":
- interfaceSendLogEntity.setSysType(Dict.sendLog.item_member.getItemName());
- interfaceSendLogEntity.setInterfaceType(HaiKongMemberSystemUrlEnum.MEMBER_ORDER_SYNC.getMethodName());
- break;
- case "rollbackMemberScore":
- interfaceSendLogEntity.setSysType(Dict.sendLog.item_member.getItemName());
- interfaceSendLogEntity.setInterfaceType(HaiKongMemberSystemUrlEnum.ROLLBACK_MEMBER_SCORE.getMethodName());
- break;
- default:
- break;
- }
- return interfaceSendLogEntity;
- }
- /**
- * 插入日志记录
- * @param interfaceSendLogEntity
- * @param request
- * @param response
- * @param exMsg
- */
- private void saveVmcSend(InterfaceSendLogEntity interfaceSendLogEntity, String request, String response,String exMsg){
- interfaceSendLogEntity.setRequestMsg(request);
- interfaceSendLogEntity.setResponseMsg(response);
- interfaceSendLogEntity.setResponseDate(new Date());
- interfaceSendLogEntity.setExceptionMsg(exMsg);
- interfaceSendLogDao.save(interfaceSendLogEntity);
- }
- }
|