Commit 6223961f by ping.wu

Merge remote-tracking branch 'origin/feature/20210720-购物车日志修改-张志恒' into…

Merge remote-tracking branch 'origin/feature/20210720-购物车日志修改-张志恒' into feature/20210720-购物车日志修改-张志恒

# Conflicts:
#	shopping-cart-application-service/src/main/java/cn/freemud/aop/WebAspect.java
parents c8473938 da5cc652
package cn.freemud.management.annotations;
import java.lang.annotation.*;
@Retention(RetentionPolicy.RUNTIME)
@Target(value = {ElementType.METHOD})
@Documented
@Inherited
public @interface LogIgnoreFeign {
/**
* 是否打印日志,true打印,false不打印,注意设置成false状态码和状态码信息都不会打印
* @return
*/
boolean printLog() default true;
/**
* printLog 设置成true的时候,可以排除哪些状态码的响应不用打印响应报文,只会打印状态码
*
* @return
*/
String[] excludeStatusCodes() default "100";
String statusCodeFieldName() default "code";
String messageFieldName() default "message";
}
package cn.freemud.management.constant;
import java.util.HashSet;
import java.util.Set;
public class ResponseCodeConstant {
public final static Integer RESPONSE_SUCCESS = 100;
public final static String RESPONSE_SUCCESS_STR = "100";
public final static String RESPONSE_CONFLICTS_STR = "105";
// coco券校验异常的错误
public final static String COCO_RESPONSE_COUPON_ERR_STR = "700";
public final static String RESPONSE_SUCCESS_OK = "ok";
public final static Integer RESPONSE_SUCCESS_1 = 1;
public final static String RESPONSE_SUCCESS_0_STR = "0";
public final static int RESPONSE_SUCCESS_0 = 0;
private final static Set<Object> successResponseCodeSet = new HashSet<>();
static {
successResponseCodeSet.add(RESPONSE_SUCCESS);
successResponseCodeSet.add(RESPONSE_SUCCESS_STR);
successResponseCodeSet.add(RESPONSE_SUCCESS_OK);
successResponseCodeSet.add(RESPONSE_SUCCESS_1);
successResponseCodeSet.add(RESPONSE_SUCCESS_0_STR);
successResponseCodeSet.add(RESPONSE_CONFLICTS_STR);
}
public static boolean isSuccessRespinseCode(Object o) {
return successResponseCodeSet.contains(o);
}
}
/**
* All rights Reserved, Designed By www.freemud.cn
*
* @Title: ResponseCodeKeyConstant
* @Package cn.freemud.constant
* @Description:
* @author: song.cai
* @date: 2019/1/15 17:20
* @version V1.0
* @Copyright: 2019 www.freemud.cn Inc. All rights reserved.
* 注意:本内容仅限于上海非码科技内部传阅,禁止外泄以及用于其他的商业目
*/
package cn.freemud.management.constant;
import com.alibaba.fastjson.JSONObject;
import java.util.HashSet;
import java.util.Set;
public class ResponseCodeKeyConstant {
public final static String CODE = "code";
public final static String MESSAGE = "message";
public final static String STATUS_CODE = "statusCode";
public static final String MEG = "meg";
public static final String MSG = "msg";
/**
* code名称来源根据 ProductInfosDto
*/
public final static String ERR_CODE = "errcode";
/**
* errmsg名称来源根据 ProductInfosDto
*/
public static final String ERR_MSG = "errmsg";
private final static Set<String> responseCodeKeySet = new HashSet<>();
static {
responseCodeKeySet.add(CODE);
responseCodeKeySet.add(ERR_CODE);
responseCodeKeySet.add(STATUS_CODE);
}
public static Object getResponseCodeValue(JSONObject jsonObject) {
Object o = null;
for (String key : responseCodeKeySet) {
if ((o = jsonObject.get(key)) != null) {
break;
}
}
return o;
}
}
package cn.freemud.management.thirdparty;
import cn.freemud.management.annotations.LogIgnoreFeign;
import cn.freemud.management.constant.ResponseCodeConstant;
import cn.freemud.management.constant.ResponseCodeKeyConstant;
import cn.freemud.management.entities.dto.request.order.MCCafeCouponLockRequest;
import cn.freemud.management.entities.dto.request.order.MCCafeCouponRequest;
import cn.freemud.management.entities.dto.response.coupon.McdNetBatchQueryResponse;
import com.freemud.application.sdk.api.couponcenter.offline.response.CouponBaseResponse;
import com.freemud.application.sdk.api.couponcenter.offline.response.CouponQueryResponse;
import com.freemud.application.sdk.api.couponcenter.offline.response.CouponRedeemResponse;
import com.freemud.application.sdk.api.couponcenter.offline.response.CouponBaseResponse;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
@FeignClient(name = "OPEN-STORE-COUPON-ADAPTER-SERVICE",url="${saas.couponadapterclient.feign.url}")
@FeignClient(name = "OPEN-STORE-COUPON-ADAPTER-SERVICE", url = "${saas.couponadapterclient.feign.url}")
@RequestMapping(produces = {"application/json;charset=UTF-8"})
public interface CouponOfflineMCCafeClient {
@PostMapping("/mccafe/redeem")
@LogIgnoreFeign(excludeStatusCodes = {ResponseCodeConstant.RESPONSE_SUCCESS_STR},
statusCodeFieldName = ResponseCodeKeyConstant.STATUS_CODE)
CouponRedeemResponse redeem(MCCafeCouponRequest mcCafeCouponRequest);
@PostMapping("/mccafe/cancelRedeem")
@LogIgnoreFeign(excludeStatusCodes = {ResponseCodeConstant.RESPONSE_SUCCESS_STR},
statusCodeFieldName = ResponseCodeKeyConstant.STATUS_CODE)
CouponRedeemResponse cancelRedeem(MCCafeCouponRequest mcCafeCouponRequest);
@PostMapping("/mccafe/query")
@LogIgnoreFeign(excludeStatusCodes = {ResponseCodeConstant.RESPONSE_SUCCESS_STR},
statusCodeFieldName = ResponseCodeKeyConstant.STATUS_CODE)
CouponQueryResponse query(MCCafeCouponRequest mcCafeCouponRequest);
@PostMapping("/mccafe/batchQuery")
@LogIgnoreFeign(excludeStatusCodes = {ResponseCodeConstant.RESPONSE_SUCCESS_STR},
statusCodeFieldName = ResponseCodeKeyConstant.STATUS_CODE)
McdNetBatchQueryResponse batchQuery(MCCafeCouponRequest mcCafeCouponRequest);
@PostMapping("/mccafe/lock")
@LogIgnoreFeign(excludeStatusCodes = {ResponseCodeConstant.RESPONSE_SUCCESS_STR},
statusCodeFieldName = ResponseCodeKeyConstant.STATUS_CODE)
CouponBaseResponse lock(MCCafeCouponLockRequest MCCafeCouponLockRequest);
@PostMapping("/mccafe/unlock")
@LogIgnoreFeign(excludeStatusCodes = {ResponseCodeConstant.RESPONSE_SUCCESS_STR},
statusCodeFieldName = ResponseCodeKeyConstant.STATUS_CODE)
CouponBaseResponse unlock(MCCafeCouponLockRequest MCCafeCouponLockRequest);
}
......@@ -14,6 +14,8 @@
package cn.freemud.management.thirdparty;
import cn.freemud.base.entity.BaseResponse;
import cn.freemud.management.annotations.LogIgnoreFeign;
import cn.freemud.management.constant.ResponseCodeConstant;
import cn.freemud.management.entities.dto.request.customer.ForbiddenCardCodeRequest;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.PostMapping;
......@@ -25,5 +27,6 @@ import org.springframework.web.bind.annotation.RequestMapping;
public interface CustomerMcCafeClient {
@PostMapping(value = "/customerextendservice/qujia/forbiddenCardCode")
@LogIgnoreFeign(excludeStatusCodes = {ResponseCodeConstant.RESPONSE_SUCCESS_STR})
BaseResponse forbiddenCardCodeForQujia(@RequestBody ForbiddenCardCodeRequest request);
}
package cn.freemud.management.thirdparty;
import cn.freemud.management.annotations.LogIgnoreFeign;
import cn.freemud.management.constant.ResponseCodeConstant;
import cn.freemud.management.constant.ResponseCodeKeyConstant;
import cn.freemud.management.entities.dto.request.delivery.DeliveryOrderAssemblyackRequest;
import cn.freemud.management.entities.dto.request.delivery.DeliveryOrderHaltedRequest;
import com.freemud.application.sdk.api.deliverycenter.response.DeliveryResponseDto;
......@@ -13,11 +16,13 @@ public interface DeliveryMCCafeClient {
// 配送停单
@PostMapping("/delivery/halted")
@LogIgnoreFeign(excludeStatusCodes = {ResponseCodeConstant.RESPONSE_SUCCESS_STR}, messageFieldName = ResponseCodeKeyConstant.MSG)
DeliveryResponseDto halted(DeliveryOrderHaltedRequest deliveryOrderHaltedRequest);
/**、
* 入机成功通知配送
*/
@PostMapping("/delivery/assemblyack")
@LogIgnoreFeign(excludeStatusCodes = {ResponseCodeConstant.RESPONSE_SUCCESS_STR}, messageFieldName = ResponseCodeKeyConstant.MSG)
DeliveryResponseDto assemblyAck(DeliveryOrderAssemblyackRequest request);
}
......@@ -13,6 +13,9 @@
package cn.freemud.management.thirdparty;
import cn.freemud.management.annotations.LogIgnoreFeign;
import cn.freemud.management.constant.ResponseCodeConstant;
import cn.freemud.management.constant.ResponseCodeKeyConstant;
import cn.freemud.management.entities.dto.request.BatchOrderRefundV2Request;
import cn.freemud.management.entities.dto.response.pay.PayBatchRefundResponse;
import com.freemud.sdk.api.assortment.order.request.order.MultiOrderRefundRequest;
......@@ -30,11 +33,13 @@ public interface MulitiPaymentClient {
* 混合支付退款接口
*/
@PostMapping("/payment/application/refund")
@LogIgnoreFeign(excludeStatusCodes = {ResponseCodeConstant.RESPONSE_SUCCESS_STR}, messageFieldName = ResponseCodeKeyConstant.MSG)
MultiOrderRefundResponse paymentApplicationRefund(MultiOrderRefundRequest multiOrderRefundRequest, @RequestHeader("partnerId") String partnerId);
/**
* 批量支付退款
*/
@PostMapping("/payment/application/batch/refund")
@LogIgnoreFeign(excludeStatusCodes = {ResponseCodeConstant.RESPONSE_SUCCESS_STR}, messageFieldName = ResponseCodeKeyConstant.MSG)
PayBatchRefundResponse batchRefund(BatchOrderRefundV2Request batchOrderRefundV2Request);
}
......@@ -13,6 +13,9 @@
package cn.freemud.management.thirdparty;
import cn.freemud.management.annotations.LogIgnoreFeign;
import cn.freemud.management.constant.ResponseCodeConstant;
import cn.freemud.management.constant.ResponseCodeKeyConstant;
import cn.freemud.management.entities.dto.request.activity.GroupWorkRefundRequest;
import cn.freemud.management.entities.dto.response.activity.GroupWorkRefundResponse;
import org.springframework.cloud.openfeign.FeignClient;
......@@ -29,6 +32,7 @@ public interface OMSActivityClient {
* @return
*/
@PostMapping("/activity/groupWork/refund")
@LogIgnoreFeign(excludeStatusCodes = {ResponseCodeConstant.RESPONSE_SUCCESS_STR}, statusCodeFieldName = ResponseCodeKeyConstant.STATUS_CODE, messageFieldName = ResponseCodeKeyConstant.MSG)
GroupWorkRefundResponse groupWorkRefund(GroupWorkRefundRequest groupWorkRefundRequest);
}
......@@ -9,11 +9,7 @@ import java.lang.annotation.*;
@Inherited
public @interface IgnoreFeignLogAnnotation {
/**
* 是否打印日志,true打印,false不打印,注意设置成false状态码和状态码信息都不会打印
* @return
*/
boolean printLog() default true;
boolean printInfoLog() default true;
/**
* printLog 设置成true的时候,可以排除哪些状态码的响应不用打印响应报文,只会打印状态码
......
......@@ -8,6 +8,9 @@ import cn.freemud.inteceptor.CommonServiceException;
import cn.freemud.redis.RedisCache;
import cn.freemud.utils.LogUtil;
import cn.freemud.utils.ResponseUtil;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.JSON;
import com.freemud.api.assortment.datamanager.entity.db.AssortmentOpenPlatformConfig;
import com.freemud.api.assortment.datamanager.entity.vo.AssortmentCustomerInfoVo;
import com.freemud.api.assortment.datamanager.manager.AssortmentOpenPlatformConfigManager;
......@@ -210,18 +213,17 @@ public class WebAspect {
if (sig instanceof MethodSignature) {
msig = (MethodSignature) sig;
Method currentMethod = sig.getDeclaringType().getDeclaredMethod(msig.getName(), msig.getParameterTypes());
Object logReult = result;
ThirdPartLogVo thirdPartLogVo = LogUtil.createThirdPartLogVo(joinPoint);
String statusCodeValue = "ignore";
String messageValue = "ignore";
// 打印第三方出参日志
if (!this.printFeignResponseBodyLog) {
IgnoreFeignLogAnnotation logIgnore = currentMethod.getAnnotation(IgnoreFeignLogAnnotation.class);
if (logIgnore != null && logIgnore.printLog()) {
statusCodeValue = org.apache.commons.beanutils.BeanUtils.getProperty(result, logIgnore.statusCodeFieldName());
messageValue = org.apache.commons.beanutils.BeanUtils.getProperty(result, logIgnore.messageFieldName());
// 打印第三方出参日志 如果feign方法没有IgnoreFeignLogAnnotation注解,全部打日志,但是由于statusCodeValue = "ignore",是不是触发日志告警的
IgnoreFeignLogAnnotation logIgnore = currentMethod.getAnnotation(IgnoreFeignLogAnnotation.class);
if (logIgnore != null) {
JSONObject json = JSON.parseObject(JSON.toJSONString(result));
statusCodeValue = json.getString(logIgnore.statusCodeFieldName());
messageValue = json.getString(logIgnore.messageFieldName());
if (!this.printFeignResponseBodyLog && !logIgnore.printInfoLog()) {
//todo 当排除了这个状态码不打印响应的具体内容只会打印状态码和状态描述信息
String[] excludeStatusCodes = logIgnore.excludeStatusCodes();
if (!StringUtils.isEmpty(statusCodeValue) && this.containStatusCode(excludeStatusCodes, statusCodeValue)) {
......@@ -231,7 +233,8 @@ public class WebAspect {
}
}
}
ThirdPartyLog.infoConvertJson(statusCodeValue, messageValue, start, System.currentTimeMillis(), thirdPartLogVo.getUri(), thirdPartLogVo.getRequestBody(), logReult);
ThirdPartyLog.infoConvertJson(statusCodeValue, messageValue, start, System.currentTimeMillis(),
thirdPartLogVo.getUri(), thirdPartLogVo.getRequestBody(), logReult);
}
} catch (Exception e) {
ShoppingSdkLogUtil.errorLog("WebAspect Feign Log Ignore error {}",e, null);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment