Commit 4b62383d by shuhu.hou@freemud.cn

核销券码失败,直接返回

parent 9029c5e9
...@@ -10,7 +10,7 @@ ...@@ -10,7 +10,7 @@
<modelVersion>4.0.0</modelVersion> <modelVersion>4.0.0</modelVersion>
<artifactId>assortment-ordercenter-sdk</artifactId> <artifactId>assortment-ordercenter-sdk</artifactId>
<version>1.1.5.RELEASE</version> <version>1.1.6.RELEASE</version>
<dependencies> <dependencies>
<dependency> <dependency>
<groupId>org.springframework.boot</groupId> <groupId>org.springframework.boot</groupId>
...@@ -24,6 +24,12 @@ ...@@ -24,6 +24,12 @@
<scope>provided</scope> <scope>provided</scope>
</dependency> </dependency>
<dependency> <dependency>
<artifactId>couponcenter-sdk</artifactId>
<groupId>com.freemud.application.service.sdk</groupId>
<version>1.8.0-SNAPSHOT</version>
<scope>provided</scope>
</dependency>
<dependency>
<artifactId>membercenter-sdk</artifactId> <artifactId>membercenter-sdk</artifactId>
<groupId>com.freemud.application.service.sdk</groupId> <groupId>com.freemud.application.service.sdk</groupId>
<version>2.8.3-SNAPSHOT</version> <version>2.8.3-SNAPSHOT</version>
......
package com.freemud.sdk.api.assortment.order.adapter; package com.freemud.sdk.api.assortment.order.adapter;
import cn.freemud.base.constant.Version;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.freemud.application.sdk.api.couponcenter.offline.domain.ProductRedeemVO;
import com.freemud.application.sdk.api.couponcenter.offline.domain.TransactionVO;
import com.freemud.application.sdk.api.couponcenter.offline.request.CouponRequest;
import com.freemud.application.sdk.api.membercenter.request.UserScoreRequest; import com.freemud.application.sdk.api.membercenter.request.UserScoreRequest;
import com.freemud.application.sdk.api.ordercenter.enums.*; import com.freemud.application.sdk.api.ordercenter.enums.*;
import com.freemud.application.sdk.api.ordercenter.request.*; import com.freemud.application.sdk.api.ordercenter.request.*;
...@@ -1998,13 +2002,6 @@ public class OrderSdkAdapter { ...@@ -1998,13 +2002,6 @@ public class OrderSdkAdapter {
} }
/** /**
* @param request
* @param orderId
* @param isReduce 是否扣减积分
* @return
*/
/**
* 积分扣减或冲正 * 积分扣减或冲正
* *
* @param orderBean 订单 * @param orderBean 订单
...@@ -2031,6 +2028,63 @@ public class OrderSdkAdapter { ...@@ -2031,6 +2028,63 @@ public class OrderSdkAdapter {
return userScoreRequest; return userScoreRequest;
} }
public CouponRequest convert2CouponVerificationRequest(QueryOrdersResponse.DataBean.OrderBean orderBean, List<CreateOrderAccountRequest> accounts){
if (CollectionUtils.isEmpty(accounts)) {
return null;
}
Optional<CreateOrderAccountRequest> accountRequest = accounts.stream().filter(account -> account.getAccountType().equals(QueryOrderAccountType.COUPON) || account.getAccountType().equals(QueryOrderAccountType.PRODUCT_COUPON)
|| account.getAccountType().equals(QueryOrderAccountType.DISCOUNT_COUPON)).findFirst();
if (!accountRequest.isPresent() || accountRequest.get().getPrice() == 0) {
return null;
}
CreateOrderAccountRequest accountBean = accountRequest.get();
List<ProductRedeemVO> products = new ArrayList<>();
//商品券核销核销参数
if (QueryOrderAccountType.PRODUCT_COUPON.equals(accountBean.getAccountType())) {
for (int i = 0; i < orderBean.getProductList().size(); i++) {
QueryOrdersResponse.DataBean.OrderBean.ProductBean productBean = orderBean.getProductList().get(i);
String pid = StringUtils.isNotBlank(productBean.getSpecification()) ? productBean.getSpecification() : productBean.getProductId();
if (!org.springframework.util.CollectionUtils.isEmpty(orderBean.getProductList().get(i).getDiscountList())) {
List<QueryOrdersResponse.DataBean.OrderBean.ProductBean.ProductDiscount> discounts = orderBean.getProductList().get(i).getDiscountList().stream().
filter(productDiscount -> productDiscount.getDiscountId().equals(accountBean.getAccountId())).collect(Collectors.toList());
for (QueryOrdersResponse.DataBean.OrderBean.ProductBean.ProductDiscount productDiscount : discounts) {
if (productDiscount.getDiscountType() == null || productDiscount.getDiscountType() == 0) {
continue;
}
ProductRedeemVO couponCodeVerificationProductDto = new ProductRedeemVO();
couponCodeVerificationProductDto.setPid(pid);
couponCodeVerificationProductDto.setConsume_num(productDiscount.getDiscountQty());
couponCodeVerificationProductDto.setSeq(i + 1);
products.add(couponCodeVerificationProductDto);
}
}
}
}
ActivityChannelEnum activityChannelEnum = Objects.equals(OldOrderType.TAKE_OUT.getCode(), orderBean.getType())?ActivityChannelEnum.delivery:ActivityChannelEnum.pickup;
CouponRequest couponCodeVerificationDto = new CouponRequest();
couponCodeVerificationDto.setVer(Integer.valueOf(Version.VERSION_1));
couponCodeVerificationDto.setReqtype(71);
couponCodeVerificationDto.setPartnerId(Integer.getInteger(orderBean.getCompanyId()));
couponCodeVerificationDto.setChannel(activityChannelEnum.getCode());
couponCodeVerificationDto.setStation_id("-1");
couponCodeVerificationDto.setOperator_id("-1");
couponCodeVerificationDto.setStore_id(orderBean.getShopId());
// 订单号 替换成唯一序号
couponCodeVerificationDto.setTrans_id(orderBean.getOid());
couponCodeVerificationDto.setBusiness_date(cn.freemud.base.util.DateUtil.convert2Str(new Date(), cn.freemud.base.util.DateUtil.FORMAT_yyyyMMdd));
List<TransactionVO> transactions = new ArrayList<>();
TransactionVO couponCodeVerificationTransDto = new TransactionVO();
couponCodeVerificationTransDto.setCode(accountBean.getAccountId());
couponCodeVerificationTransDto.setTotalAmount(-accountBean.getPrice());
if (CollectionUtils.isNotEmpty(products)) {
couponCodeVerificationTransDto.setProducts(products);
}
transactions.add(couponCodeVerificationTransDto);
couponCodeVerificationDto.setTransactions(transactions);
return couponCodeVerificationDto;
}
public Integer getOldRefoundStatus(Integer refoundStatus) { public Integer getOldRefoundStatus(Integer refoundStatus) {
if (refoundStatus == null) { if (refoundStatus == null) {
return null; return null;
......
package com.freemud.sdk.api.assortment.order.enums;
public enum ActivityChannelEnum {
// pickup-到店取餐 deliver-外卖
pickup("pickup", "到店取餐"),
delivery("delivery", "外卖");
private String code;
private String desc;
ActivityChannelEnum(String code, String desc) {
this.code = code;
this.desc = desc;
}
public String getCode() {
return code;
}
public void setCode(String code) {
this.code = code;
}
public String getDesc() {
return desc;
}
public void setDesc(String desc) {
this.desc = desc;
}
}
...@@ -53,6 +53,10 @@ public class QueryOrdersResponse { ...@@ -53,6 +53,10 @@ public class QueryOrdersResponse {
@Data @Data
public static class OrderBean { public static class OrderBean {
/** /**
*
*/
private String orderClient;
/**
* 订单异常具体描述 * 订单异常具体描述
*/ */
private String abnormalDesc; private String abnormalDesc;
......
...@@ -12,6 +12,9 @@ import com.freemud.api.assortment.datamanager.order.config.ManagerOrderBeanConfi ...@@ -12,6 +12,9 @@ import com.freemud.api.assortment.datamanager.order.config.ManagerOrderBeanConfi
import com.freemud.api.assortment.datamanager.order.manager.AssortmentOrderManager; import com.freemud.api.assortment.datamanager.order.manager.AssortmentOrderManager;
import com.freemud.api.assortment.datamanager.order.vo.DMOrderItemVo; import com.freemud.api.assortment.datamanager.order.vo.DMOrderItemVo;
import com.freemud.application.sdk.api.base.BaseResponse; import com.freemud.application.sdk.api.base.BaseResponse;
import com.freemud.application.sdk.api.couponcenter.offline.request.CouponRequest;
import com.freemud.application.sdk.api.couponcenter.offline.response.CouponRedeemResponse;
import com.freemud.application.sdk.api.couponcenter.offline.service.OfflineCouponSdkService;
import com.freemud.application.sdk.api.log.ApiLog; import com.freemud.application.sdk.api.log.ApiLog;
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.LogThreadLocal;
...@@ -118,6 +121,8 @@ public class OrderCenterSdkServiceImpl implements OrderCenterSdkService { ...@@ -118,6 +121,8 @@ public class OrderCenterSdkServiceImpl implements OrderCenterSdkService {
private AssortmentCustomerInfoManager assortmentCustomerInfoManager; private AssortmentCustomerInfoManager assortmentCustomerInfoManager;
@Autowired @Autowired
private MemberCenterService memberCenterService; private MemberCenterService memberCenterService;
@Autowired
private OfflineCouponSdkService offlineCouponSdkService;
@Override @Override
public CreateOrderResponse createOrderFlow(CreateOrderRequest config) { public CreateOrderResponse createOrderFlow(CreateOrderRequest config) {
...@@ -130,9 +135,9 @@ public class OrderCenterSdkServiceImpl implements OrderCenterSdkService { ...@@ -130,9 +135,9 @@ public class OrderCenterSdkServiceImpl implements OrderCenterSdkService {
} }
BaseOrderResponse baseOrderResponse = updateStockAndScore(createOrderResponse.getData(), config.getBaseCreateOrderRequest().getProducts(), config.getBaseCreateOrderRequest().getActivityUpdateStockRequest(), BaseOrderResponse baseOrderResponse = updateStockAndScore(createOrderResponse.getData(), config.getBaseCreateOrderRequest().getProducts(), config.getBaseCreateOrderRequest().getActivityUpdateStockRequest(),
config.getBaseCreateOrderRequest().getAccounts(), config.getMqMessageRequest()); config.getBaseCreateOrderRequest().getAccounts(), config.getMqMessageRequest());
// if (!RESPONSE_SUCCESS.equals(baseOrderResponse.getErrcode())) { if (!RESPONSE_SUCCESS.equals(baseOrderResponse.getErrcode())) {
// return getCreateOrderResponse(baseOrderResponse.getErrcode().toString(), baseOrderResponse.getErrmsg(), null); return getCreateOrderResponse(baseOrderResponse.getErrcode().toString(), baseOrderResponse.getErrmsg(), null);
// } }
return createOrderResponse; return createOrderResponse;
} }
...@@ -149,8 +154,11 @@ public class OrderCenterSdkServiceImpl implements OrderCenterSdkService { ...@@ -149,8 +154,11 @@ public class OrderCenterSdkServiceImpl implements OrderCenterSdkService {
return CreateFatherSonOrderResponse.error("500", ""); return CreateFatherSonOrderResponse.error("500", "");
} }
CreateFatherSonOrderRequest.OrderInfo productOrderRequest = createFatherSonOrderRequest.getOrderInfoList().stream().filter(orderBeanTemp -> 1 == orderBeanTemp.getBizType()).collect(Collectors.toList()).get(0); CreateFatherSonOrderRequest.OrderInfo productOrderRequest = createFatherSonOrderRequest.getOrderInfoList().stream().filter(orderBeanTemp -> 1 == orderBeanTemp.getBizType()).collect(Collectors.toList()).get(0);
updateStockAndScore(productOrderInfo.get(0), productOrderRequest.getProducts(), productOrderRequest.getActivityUpdateStockRequest(), productOrderRequest.getAccounts(), BaseOrderResponse baseOrderResponse = updateStockAndScore(productOrderInfo.get(0), productOrderRequest.getProducts(), productOrderRequest.getActivityUpdateStockRequest(), productOrderRequest.getAccounts(),
createFatherSonOrderRequest.getMqMessageRequest()); createFatherSonOrderRequest.getMqMessageRequest());
if (!RESPONSE_SUCCESS.equals(baseOrderResponse.getErrcode())) {
return CreateFatherSonOrderResponse.error(baseOrderResponse.getErrcode().toString(), baseOrderResponse.getErrmsg());
}
return createFatherSonOrderResponse; return createFatherSonOrderResponse;
} }
...@@ -209,11 +217,24 @@ public class OrderCenterSdkServiceImpl implements OrderCenterSdkService { ...@@ -209,11 +217,24 @@ public class OrderCenterSdkServiceImpl implements OrderCenterSdkService {
orderCancel(cancelOrderRequest); orderCancel(cancelOrderRequest);
//失败异步冲正库存,取消订单 //失败异步冲正库存,取消订单
backOrdersNotifyActivity(orderBean, mqMessageRequest.getBackOrdersNotifyActivityQueue(), mqMessageRequest.getBackOrdersNotifyActivityExchange()); backOrdersNotifyActivity(orderBean, mqMessageRequest.getBackOrdersNotifyActivityQueue(), mqMessageRequest.getBackOrdersNotifyActivityExchange());
userScoreRequest = orderSdkAdapter.convent2UserScoreRequest(orderBean, accounts, false);
memberScoreService.useScore(userScoreRequest, "");
return BaseOrderResponse.getErrorBaseOrderResponse(userScoreResponse.getCode(), "积分不足"); return BaseOrderResponse.getErrorBaseOrderResponse(userScoreResponse.getCode(), "积分不足");
} }
} }
// 核销优惠券,核销失败提示下单失败并冲正库存积分等
CouponRequest couponVerificationRequest = orderSdkAdapter.convert2CouponVerificationRequest(orderBean, accounts);
if (couponVerificationRequest!=null){
BaseResponse<CouponRedeemResponse> couponRedeemResponseBaseResponse = offlineCouponSdkService.couponRedeem(couponVerificationRequest, "");
if (!ObjectUtils.equals(RESPONSE_SUCCESS_STR, couponRedeemResponseBaseResponse.getCode())) {
//TODO 失败取消订单,异步冲正库存
CancelOrderRequest cancelOrderRequest = orderSdkAdapter.convent2CancelOrderRequest(orderBean.getOid(), orderBean.getCompanyId(),
AfterSalesType.SYSTEM_CANCEL, "异常订单取消", "", null);
orderCancel(cancelOrderRequest);
//失败异步冲正库存,取消订单
backOrdersNotifyActivity(orderBean, mqMessageRequest.getBackOrdersNotifyActivityQueue(), mqMessageRequest.getBackOrdersNotifyActivityExchange());
return BaseOrderResponse.getErrorBaseOrderResponse(couponRedeemResponseBaseResponse.getCode(), "核销券码失败");
}
}
return BaseOrderResponse.getErrorBaseOrderResponse(RESPONSE_SUCCESS_STR, ""); return BaseOrderResponse.getErrorBaseOrderResponse(RESPONSE_SUCCESS_STR, "");
} }
......
...@@ -33,9 +33,14 @@ ...@@ -33,9 +33,14 @@
<version>1.2.1-SNAPSHOT</version> <version>1.2.1-SNAPSHOT</version>
</dependency> </dependency>
<dependency> <dependency>
<artifactId>couponcenter-sdk</artifactId>
<groupId>com.freemud.application.service.sdk</groupId>
<version>1.8.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>cn.freemud</groupId> <groupId>cn.freemud</groupId>
<artifactId>assortment-ordercenter-sdk</artifactId> <artifactId>assortment-ordercenter-sdk</artifactId>
<version>1.1.5.RELEASE</version> <version>1.1.6.RELEASE</version>
</dependency> </dependency>
<dependency> <dependency>
<groupId>com.freemud.application.service.sdk</groupId> <groupId>com.freemud.application.service.sdk</groupId>
......
...@@ -373,10 +373,10 @@ public class OrderServiceImpl implements Orderservice { ...@@ -373,10 +373,10 @@ public class OrderServiceImpl implements Orderservice {
return sendPaySuccessNoticeMessage(); return sendPaySuccessNoticeMessage();
} }
//核销优惠券,若核销失败直接退款 //核销优惠券,若核销失败直接退款
if (!ResponseResult.SUCCESS.getCode().equals(couponActivityService.verificationCoupon(orderBean).getCode())){ // if (!ResponseResult.SUCCESS.getCode().equals(couponActivityService.verificationCoupon(orderBean).getCode())){
orderRefund(orderBean, "核销券异常退款", openid, oid); // orderRefund(orderBean, "核销券异常退款", openid, oid);
return newSendPayFaileMessage(); // return newSendPayFaileMessage();
} // }
// 订单失败后 发消息重试 待实现 // 订单失败后 发消息重试 待实现
String takeCode; String takeCode;
String daySeq; String daySeq;
......
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