Commit b9128025 by 王世昌

Merge branch 'feature/20210616-记录三方调用结果-wsc' into qa

# Conflicts:
#	order-application-service/src/main/java/cn/freemud/service/coupon/impl/PlatformCouponRelationServiceImpl.java
parents 3fb7c7f1 35a4cef3
package cn.freemud.entities.dto;
import lombok.Data;
import java.io.Serializable;
import java.util.Date;
/**
* @version: 1.0
* @Description: TODO
* @author: WangShiChang
* @date: 2021/6/16 上午11:20
* @Copyright: www.freemud.cn Inc.
*/
@Data
public class OrderResourcePushLogMsgDto implements Serializable {
private static final long serialVersionUID = -6166067775096844999L;
/**
* traceId
*/
private String traceId;
/**
* 订单编码
*/
private String orderCode;
/**
* 商户号
*/
private String partnerId;
/**
* 门店编号
*/
private String storeId;
/**
* 用户ID
*/
private String userId;
/**
* 动作类型
*/
private Integer optType;
/**
* 请求时间
*/
private Date requestDate;
/**
* 请求参数
*/
private String requestBody;
/**
* 失败原因
*/
private String failureReasons;
}
package cn.freemud.enums;
import lombok.Getter;
import java.util.Arrays;
import java.util.Map;
import java.util.stream.Collectors;
/**
* 补偿状态
*/
@Getter
public enum OrderResourcePushOptType {
COUPON_LOCK(11, "券锁定"),
COUPON_VERIFICATION(12, "券核销"),
COUPON_RECTIFICATION(13, "券冲正"),
Score_SEND(21, "积分发放"),
Score_RECTIFICATION(22, "积分冲正"),
POINT_SEND(31, "集点发放"),
POINT_RECTIFICATION(32, "集点冲正"),
;
private final Integer index;
private final String name;
OrderResourcePushOptType(Integer index, String name) {
this.index = index;
this.name = name;
}
private static class EnumCacheHolder {
private static final Map<Integer, OrderResourcePushOptType> CACHE;
static {
CACHE = Arrays.stream(OrderResourcePushOptType.values()).collect(Collectors.toMap(OrderResourcePushOptType::getIndex, v -> v));
}
}
public static OrderResourcePushOptType getByIndex(Integer index) {
return EnumCacheHolder.CACHE.get(index);
}
public static OrderResourcePushOptType getByIndexOrDefault(Byte index, OrderResourcePushOptType defaultEnum) {
OrderResourcePushOptType en = EnumCacheHolder.CACHE.get(index);
return en == null ? defaultEnum : en;
}
}
package cn.freemud.enums;
import lombok.Getter;
import java.util.Arrays;
import java.util.Map;
import java.util.stream.Collectors;
/**
* 补偿状态
*/
@Getter
public enum OrderResourcePushState {
DEFAULT((byte) 0, "失败"),
SUCCESS((byte) 1, "补偿成功"),
;
private final Byte index;
private final String name;
OrderResourcePushState(Byte index, String name) {
this.index = index;
this.name = name;
}
private static class EnumCacheHolder {
private static final Map<Byte, OrderResourcePushState> CACHE;
static {
CACHE = Arrays.stream(OrderResourcePushState.values()).collect(Collectors.toMap(OrderResourcePushState::getIndex, v -> v));
}
}
public static OrderResourcePushState getByIndex(Byte index) {
return EnumCacheHolder.CACHE.get(index);
}
public static OrderResourcePushState getByIndexOrDefault(Byte index, OrderResourcePushState defaultEnum) {
OrderResourcePushState en = EnumCacheHolder.CACHE.get(index);
return en == null ? defaultEnum : en;
}
}
...@@ -13,6 +13,10 @@ ...@@ -13,6 +13,10 @@
package cn.freemud.service.coupon.impl; package cn.freemud.service.coupon.impl;
import cn.freemud.adapter.CouponAdapter; import cn.freemud.adapter.CouponAdapter;
import cn.freemud.amqp.Header;
import cn.freemud.amqp.MQAction;
import cn.freemud.amqp.MQMessage;
import cn.freemud.amqp.MQService;
import cn.freemud.base.entity.BaseResponse; import cn.freemud.base.entity.BaseResponse;
import cn.freemud.entities.dto.*; import cn.freemud.entities.dto.*;
import cn.freemud.entities.vo.CreateOrderVo; import cn.freemud.entities.vo.CreateOrderVo;
...@@ -34,6 +38,7 @@ import com.alibaba.fastjson.JSON; ...@@ -34,6 +38,7 @@ import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.freemud.application.sdk.api.couponcenter.offline.service.OfflineCouponSdkService; import com.freemud.application.sdk.api.couponcenter.offline.service.OfflineCouponSdkService;
import com.freemud.application.sdk.api.log.ErrorLog; import com.freemud.application.sdk.api.log.ErrorLog;
import com.freemud.application.sdk.api.log.LogThreadLocal;
import com.freemud.application.sdk.api.log.ThirdPartyLog; import com.freemud.application.sdk.api.log.ThirdPartyLog;
import com.freemud.application.sdk.api.service.EmailAlertService; import com.freemud.application.sdk.api.service.EmailAlertService;
import com.freemud.application.sdk.api.storecenter.response.StoreResponse; import com.freemud.application.sdk.api.storecenter.response.StoreResponse;
...@@ -44,6 +49,7 @@ import org.springframework.beans.factory.annotation.Autowired; ...@@ -44,6 +49,7 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Date;
import java.util.List; import java.util.List;
import java.util.Objects; import java.util.Objects;
import java.util.Optional; import java.util.Optional;
...@@ -60,6 +66,11 @@ public class PlatformCouponRelationServiceImpl implements CouponRelationService ...@@ -60,6 +66,11 @@ public class PlatformCouponRelationServiceImpl implements CouponRelationService
private EmailAlertService emailAlertService; private EmailAlertService emailAlertService;
@Autowired @Autowired
private StoreServiceImpl storeService; private StoreServiceImpl storeService;
@Autowired
private MQService mqService;
private static final String ORDER_RESOURCE_PUSH_LOG_EXCHANGE = "order-resource-push-log-exchange";
private static final String ORDER_RESOURCE_PUSH_LOG_ROUTING_KEY = "order-resource-push-log-routing-key";
@Override @Override
public BaseResponse verificationCoupon(List<QueryOrdersResponseDto.DataBean.OrderBean.AccountBean> accountList, QueryOrdersResponseDto.DataBean.OrderBean orderBean, CouponReqType couponReqType) { public BaseResponse verificationCoupon(List<QueryOrdersResponseDto.DataBean.OrderBean.AccountBean> accountList, QueryOrdersResponseDto.DataBean.OrderBean orderBean, CouponReqType couponReqType) {
...@@ -159,12 +170,14 @@ public class PlatformCouponRelationServiceImpl implements CouponRelationService ...@@ -159,12 +170,14 @@ public class PlatformCouponRelationServiceImpl implements CouponRelationService
break; break;
} }
if (!Objects.equals(couponCodeResponseDto.getStatusCode(), ResponseResult.SUCCESS.getCode())) { if (!Objects.equals(couponCodeResponseDto.getStatusCode(), ResponseResult.SUCCESS.getCode())) {
sendMessage(orderBean, LogThreadLocal.getTrackingNo(), couponCodeVerificationDto, couponCodeResponseDto);
emailAlertService.sendEmailAlert("核销券码失败", String.format("request:%s \r\nresponse:%s", JSONObject.toJSONString(couponCodeVerificationDto), JSONObject.toJSONString(couponCodeResponseDto))); emailAlertService.sendEmailAlert("核销券码失败", String.format("request:%s \r\nresponse:%s", JSONObject.toJSONString(couponCodeVerificationDto), JSONObject.toJSONString(couponCodeResponseDto)));
return ResponseUtil.error(ResponseResult.COUPON_VERIFICATION_FAIL); return ResponseUtil.error(ResponseResult.COUPON_VERIFICATION_FAIL);
} }
} }
} catch (Exception ex) { } catch (Exception ex) {
sendMessage(orderBean, LogThreadLocal.getTrackingNo(), couponCodeVerificationDto, ex);
emailAlertService.sendEmailAlert("核销券码异常", String.format("request:%s \r\nexception:%s", JSONObject.toJSONString(couponCodeVerificationDto), Throwables.getStackTraceAsString(ex))); emailAlertService.sendEmailAlert("核销券码异常", String.format("request:%s \r\nexception:%s", JSONObject.toJSONString(couponCodeVerificationDto), Throwables.getStackTraceAsString(ex)));
ErrorLog.printErrorLog("verification_error", "/api", couponCodeVerificationDto, ex); ErrorLog.printErrorLog("verification_error", "/api", couponCodeVerificationDto, ex);
return ResponseUtil.error(ResponseResult.COUPON_VERIFICATION_FAIL); return ResponseUtil.error(ResponseResult.COUPON_VERIFICATION_FAIL);
...@@ -174,83 +187,41 @@ public class PlatformCouponRelationServiceImpl implements CouponRelationService ...@@ -174,83 +187,41 @@ public class PlatformCouponRelationServiceImpl implements CouponRelationService
return ResponseUtil.success(); return ResponseUtil.success();
} }
// @Override
// public BaseResponse verificationCoupon(List<QueryOrdersResponseDto.DataBean.OrderBean.AccountBean> accountList, QueryOrdersResponseDto.DataBean.OrderBean orderBean, CouponReqType couponReqType) { /**
// for (QueryOrdersResponseDto.DataBean.OrderBean.AccountBean accountBean : accountList) { * 发送消息
// List<CouponCodeVerificationProductDto> products = new ArrayList<>(); *
// //商品券核销核销参数 * @param orderBean
// if (OrderAccountType.PRODUCT_COUPON.getCode().equals(accountBean.getType())) { */
// for (int i = 0; i < orderBean.getProductList().size(); i++) { private void sendMessage(QueryOrdersResponseDto.DataBean.OrderBean orderBean, String trackingNo, CouponCodeVerificationDto req, Object failObject) {
// QueryOrdersResponseDto.DataBean.OrderBean.ProductBean productBean = orderBean.getProductList().get(i); OrderResourcePushLogMsgDto dto = new OrderResourcePushLogMsgDto();
// String pid = StringUtils.isNotBlank(productBean.getSpecification()) ? productBean.getSpecification() : productBean.getProductId(); try {
// if (!org.springframework.util.CollectionUtils.isEmpty(orderBean.getProductList().get(i).getDiscountList())) { String failureReasons;
// List<QueryOrdersResponseDto.DataBean.OrderBean.ProductBean.ProductDiscount> discounts = orderBean.getProductList().get(i).getDiscountList().stream(). if (failObject instanceof String) {
// filter(productDiscount -> productDiscount.getDiscountId().equals(accountBean.getAccountId())).collect(Collectors.toList()); failureReasons = (String) failObject;
// for (QueryOrdersResponseDto.DataBean.OrderBean.ProductBean.ProductDiscount productDiscount : discounts) { } else if (failObject instanceof Throwable) {
// if (productDiscount.getDiscountType() == null || productDiscount.getDiscountType() == 0) { failureReasons = ((Throwable) failObject).getMessage();
// continue; } else {
// } failureReasons = JsonUtil.toJSONString(failObject);
// CouponCodeVerificationProductDto couponCodeVerificationProductDto = new CouponCodeVerificationProductDto(); }
// couponCodeVerificationProductDto.setPID(pid); if (failureReasons.length() > 255) {
// couponCodeVerificationProductDto.setConsume_num(productDiscount.getDiscountQty()); failureReasons = failureReasons.substring(0, 255);
// couponCodeVerificationProductDto.setSeq(i + 1); }
// products.add(couponCodeVerificationProductDto); dto.setTraceId(trackingNo);
// } dto.setOrderCode(orderBean.getOid());
// } dto.setPartnerId(orderBean.getCompanyId());
// } dto.setStoreId(orderBean.getShopId());
// } dto.setUserId(orderBean.getUserId());
// dto.setOptType(OrderResourcePushOptType.COUPON_VERIFICATION.getIndex());
// Integer orderType = orderBean.getType(); dto.setRequestDate(new Date());
// //商城单子用NewOrderType dto.setRequestBody(JsonUtil.toJSONString(req));
// if(Objects.equals(OrderSource.MALL.getSource(),orderBean.getSource())){ dto.setFailureReasons(failureReasons);
// orderType = orderBean.getNewOrderType();
// } Header header = new Header(MQAction.INSERT.getAction(), "verificationCoupon", orderBean.getOid(), ORDER_RESOURCE_PUSH_LOG_ROUTING_KEY);
// ActivityChannelEnum activityChannelEnum = PropertyConvertUtil.orderTypeEnumConvert2ActivityChannel(orderType); MQMessage<OrderResourcePushLogMsgDto> message = new MQMessage<>(header, dto);
// if (activityChannelEnum == null) { mqService.convertAndSend(ORDER_RESOURCE_PUSH_LOG_EXCHANGE, ORDER_RESOURCE_PUSH_LOG_ROUTING_KEY, message);
// activityChannelEnum = ActivityChannelEnum.pickup; } catch (Exception e) {
// } LogUtil.error(trackingNo, "sendMessage error!!! routingKey = order-resource-push-log-routing-key", JSONObject.toJSONString(dto), null, e);
// }
// // 核销优惠券 需要一起核销 配送券 }
// if (OrderAccountType.COUPON.getCode().equals(accountBean.getType())
// || OrderAccountType.PRODUCT_COUPON.getCode().equals(accountBean.getType())
// // 运费券
// || OrderAccountType.FREIGHT_COUPON.getCode().equals(accountBean.getType())
// || OrderAccountType.DISCOUNT_COUPON.getCode().equals(accountBean.getType())) {
//
// CouponCodeVerificationDto couponCodeVerificationDto = couponAdapter.convert2CouponCodeVerificationDto(activityChannelEnum,
// // 这里是活动code
// accountBean.getAccountId(), orderBean.getOid(), orderBean.getCompanyId(),
// orderBean.getShopId(), orderBean.getUserId(), products, accountBean.getPrice().intValue(),couponReqType);
//
// couponCodeVerificationDto.setOrderTotalAmount(orderBean.getOriginalAmount()==null ? 0L: orderBean.getOriginalAmount().longValue());
// couponCodeVerificationDto.setOrderPaymentAmount(orderBean.getAmount());
// couponCodeVerificationDto.setOrderDiscountAmount(orderBean.getOriginalAmount().longValue()-orderBean.getAmount());
// // 核销券新增参数:组织机构ID
// couponCodeVerificationDto.setChannel_codes(storeService.getOrgIdsArr(orderBean.getCompanyId(), orderBean.getShopId()));
// try {
// //71.券核销
// for (int i = 2; i >= 0; i--) {
// LogUtil.info("核销券码开始==", JSON.toJSONString(couponCodeVerificationDto), null);
// CouponCodeResponseDto couponCodeResponseDto = couponOfflineClient.verification(couponCodeVerificationDto);
// LogUtil.info("核销券码返回==", JSON.toJSONString(couponCodeVerificationDto), null);
// ThirdPartyLog.infoConvertJson(System.currentTimeMillis(), System.currentTimeMillis(), "/api", couponCodeVerificationDto, couponCodeResponseDto);
// if (Objects.equals(couponCodeResponseDto.getStatusCode(), ResponseResult.SUCCESS.getCode())) {
// LogUtil.info("CouponReverseServiceImpl", JSON.toJSONString(couponCodeVerificationDto), JSON.toJSONString(couponCodeResponseDto));
// break;
// }
// if (!Objects.equals(couponCodeResponseDto.getStatusCode(), ResponseResult.SUCCESS.getCode())) {
// emailAlertService.sendEmailAlert("核销券码失败", String.format("request:%s \r\nresponse:%s", JSONObject.toJSONString(couponCodeVerificationDto), JSONObject.toJSONString(couponCodeResponseDto)));
// return ResponseUtil.error(ResponseResult.COUPON_VERIFICATION_FAIL);
// }
// }
//
// } catch (Exception ex) {
// emailAlertService.sendEmailAlert("核销券码异常", String.format("request:%s \r\nexception:%s", JSONObject.toJSONString(couponCodeVerificationDto), Throwables.getStackTraceAsString(ex)));
// ErrorLog.printErrorLog("verification_error", "/api", couponCodeVerificationDto, ex);
// return ResponseUtil.error(ResponseResult.COUPON_VERIFICATION_FAIL);
// }
// }
// }
// return ResponseUtil.success();
// }
} }
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