Commit 323777d6 by 徐康

Merge branch 'feature/20201229_xukang_麦咖啡p5v1' into develop

# Conflicts:
#	order-application-service/src/test/java/cn/freemud/service/impl/MallOrderServiceImplTest.java
parents c859a3c0 7e11c139
...@@ -173,7 +173,7 @@ public class CreateOrderProductRequest extends BaseConfig { ...@@ -173,7 +173,7 @@ public class CreateOrderProductRequest extends BaseConfig {
private String category; private String category;
/** 商品税率**/ /** 商品税率**/
private double tax; private Double tax;
private String taxId; private String taxId;
......
...@@ -116,6 +116,12 @@ public class OrderAdapter { ...@@ -116,6 +116,12 @@ public class OrderAdapter {
private String mcCafePartnerId; private String mcCafePartnerId;
@Value("${mcCafe.refund.interval}") @Value("${mcCafe.refund.interval}")
private String mccafeRefundInterval; private String mccafeRefundInterval;
@Value("${macafe.waimai.tag}")
private String maCafeWaimaiTag;
@Value("${macafe.pick.tag}")
private String maCafePickTag;
@Value("${mccafe.monthCard.goodsId}")
private String mccafeMonthCardGoodsId;
@Value("${saas.reverseNotifyiDcUrl}") @Value("${saas.reverseNotifyiDcUrl}")
private String reverseNotifyiDcUrl; private String reverseNotifyiDcUrl;
...@@ -125,10 +131,6 @@ public class OrderAdapter { ...@@ -125,10 +131,6 @@ public class OrderAdapter {
private String backOrdersChangeOrderStatusConsumerQueue; private String backOrdersChangeOrderStatusConsumerQueue;
@Value("${program.backorders_notify_activity_exchange}") @Value("${program.backorders_notify_activity_exchange}")
private String backOrdersNotifyActivityExchange; private String backOrdersNotifyActivityExchange;
@Value("${macafe.waimai.tag}")
private String maCafeWaimaiTag;
@Value("${macafe.pick.tag}")
private String maCafePickTag;
@Autowired @Autowired
private ShoppingCartAdapter shoppingCartAdapter; private ShoppingCartAdapter shoppingCartAdapter;
@Autowired @Autowired
...@@ -190,6 +192,43 @@ public class OrderAdapter { ...@@ -190,6 +192,43 @@ public class OrderAdapter {
} }
} }
} }
if(null != shoppingCartGoodsDto.getPayCardFee() && 0l != shoppingCartGoodsDto.getPayCardFee() && StringUtils.isNotBlank(createOrderVo.getCardKeyCode())) {
CreateOrderProductRequest createOrderProductDemoDto = new CreateOrderProductRequest();
createOrderProductDemoDto.setProductId(mccafeMonthCardGoodsId);
createOrderProductDemoDto.setProductName("啡常月享卡");
createOrderProductDemoDto.setSpecification(mccafeMonthCardGoodsId);
createOrderProductDemoDto.setSpecificationName("啡常月享卡");
createOrderProductDemoDto.setPrice(shoppingCartGoodsDto.getPayCardFee());
createOrderProductDemoDto.setSalePrice(shoppingCartGoodsDto.getPayCardFee());
createOrderProductDemoDto.setTotalDiscountAmount(0l);
createOrderProductDemoDto.setNumber(1);
createOrderProductDemoDto.setProductType(ProductTypeEnum.WITH_ORDER_VIRTUAL_PRODUCT.getCode());
createOrderProductDemoDto.setParentProductId("0");
createOrderProductDemoDto.setIsFixedProduct(null);
createOrderProductDemoDto.setCustomerCode(createOrderVo.getCardKeyCode());
createOrderProductDemoDto.setProductCode(createOrderVo.getCardKeyCode());
createOrderProductDemoDto.setHasStockProudct(false);
createOrderProductDemoDto.setWeight(0d);
createOrderProductDemoDto.setStapleFood(0);
createOrderProductDemoDto.setTax(0d);
createOrderProductDemoDto.setTaxId("");
if(products.get(products.size()-1).getProductType().equals(ProductTypeEnum.TABLEWARE_PRODUCT.getCode())) {
products.add(products.size()-1, createOrderProductDemoDto);
} else {
products.add(createOrderProductDemoDto);
}
CreateOrderAccountRequest createOrderAccountDto = CreateOrderAccountRequest.builder()
.accountId("")
.name("啡常月享卡")
.price(shoppingCartGoodsDto.getPayCardFee())
.accountType(QueryOrderAccountType.MCCAFE_MONTH_CARD)
.sequence(orderAccountIndex++)
.productId(createOrderVo.getCardKeyCode())
.build();
orderAccountDtos.add(createOrderAccountDto);
}
createOrderDto.setProducts(products); createOrderDto.setProducts(products);
boolean hasDeliveryMonthCard = false; boolean hasDeliveryMonthCard = false;
for (ActivityDiscountsDto activityDiscountsDto : activityDiscountsDtos) { for (ActivityDiscountsDto activityDiscountsDto : activityDiscountsDtos) {
...@@ -278,17 +317,6 @@ public class OrderAdapter { ...@@ -278,17 +317,6 @@ public class OrderAdapter {
.build(); .build();
orderAccountDtos.add(createOrderAccountDto); orderAccountDtos.add(createOrderAccountDto);
} }
if(null != shoppingCartGoodsDto.getPayCardFee() && 0l != shoppingCartGoodsDto.getPayCardFee() && StringUtils.isNotBlank(createOrderVo.getCardKeyCode())) {
CreateOrderAccountRequest createOrderAccountDto = CreateOrderAccountRequest.builder()
.accountId("")
.name("啡常月享卡")
.price(shoppingCartGoodsDto.getPayCardFee())
.accountType(QueryOrderAccountType.MCCAFE_MONTH_CARD)
.sequence(orderAccountIndex++)
.productId(createOrderVo.getCardKeyCode())
.build();
orderAccountDtos.add(createOrderAccountDto);
}
createOrderDto.setAccounts(CollectionUtils.isNotEmpty(orderAccountDtos) ? orderAccountDtos : Collections.emptyList()); createOrderDto.setAccounts(CollectionUtils.isNotEmpty(orderAccountDtos) ? orderAccountDtos : Collections.emptyList());
//设置库存扣减 //设置库存扣减
...@@ -1285,19 +1313,6 @@ public class OrderAdapter { ...@@ -1285,19 +1313,6 @@ public class OrderAdapter {
//商品信息转换 //商品信息转换
convent2ProductVos(ordersBean.getProductList(), responseVo,ordersBean.getCompanyId()); convent2ProductVos(ordersBean.getProductList(), responseVo,ordersBean.getCompanyId());
responseVo.setOrderAccounts(convent2OrderAccountVo(ordersBean.getApportionDetails())); responseVo.setOrderAccounts(convent2OrderAccountVo(ordersBean.getApportionDetails()));
if(CollectionUtils.isNotEmpty(ordersBean.getOrderCostDetailList())) {
ordersBean.getOrderCostDetailList().forEach(o -> {
if(o.getCostType() == 10 && o.getBillType() == 1) {
ProductVo productVo = new ProductVo();
productVo.setQty(1);
productVo.setName(o.getCostName());
productVo.setSpuName(o.getCostName());
productVo.setFinalPrice(o.getCostAmount().longValue());
productVo.setOriginalPrice(o.getActualCostAmount().longValue());
responseVo.getProducts().add(productVo);
}
});
}
Long promotionAmount = 0L; Long promotionAmount = 0L;
Long deliveryAmount = 0L; Long deliveryAmount = 0L;
Long packageAmount = 0L; Long packageAmount = 0L;
......
...@@ -1300,28 +1300,6 @@ public class MCCafeOrderServiceImpl implements MCCafeOrderService { ...@@ -1300,28 +1300,6 @@ public class MCCafeOrderServiceImpl implements MCCafeOrderService {
return newSendPaySuccessNoticeMessage(); return newSendPaySuccessNoticeMessage();
} }
private PlatformBaseRequest getRequest(OrderBean orderInfo) {
PlatformBaseRequest request = new PlatformBaseRequest();
AssortmentOpenApiEncryptDto openApiEncrypts = cacheOpenApiEncryptManager.getAssortmentOpenApiEncrypt(orderInfo.getCompanyId(), OpenPlatformEncryptUrlType.REFUND_STATUS_CHANGE_NOTIFY_URL);
request.setAppId(openApiEncrypts.getAppId());
request.setPartnerId(orderInfo.getCompanyId());
request.setVer("1");
OrderRefundStatusChangeRequestBody orderBody = new OrderRefundStatusChangeRequestBody();
orderBody.setOrderCode(orderInfo.getOid());
orderBody.setTimeStamp(System.currentTimeMillis()+"");
orderBody.setRefundType(AfterSalesType.OTHER.getIndex().toString());
orderBody.setRefundStatus(com.freemud.sdk.api.assortment.order.enums.RefundStatus.COMPLETE_REFUND.getCode().toString());
orderBody.setRefundReason("门店线下退款");
request.setRequestBody(JSON.toJSONString(orderBody));
String content = MapBeanConvertUtil.sortObjWithoutSign(request);
try {
request.setSign(RSASignUtil.getSign(content, openApiEncrypts.getServerPrivateKey(), "UTF-8"));
} catch (Exception e) {
LogUtil.error("getPlatformBaseRequest", content, JSON.toJSONString(openApiEncrypts), e);
}
return request;
}
/** /**
* 取消配送 * 取消配送
* *
......
package cn.freemud.service.impl; package cn.freemud.service.impl;
import cn.freemud.entities.vo.CreateOrderVo;
import cn.freemud.management.entities.dto.request.order.OrderManagerRequest; import cn.freemud.management.entities.dto.request.order.OrderManagerRequest;
import cn.freemud.management.service.adapter.OrderManagerAdapter; import cn.freemud.management.service.adapter.OrderManagerAdapter;
import cn.freemud.management.thirdparty.MulitiPaymentClient; import cn.freemud.management.thirdparty.MulitiPaymentClient;
...@@ -8,6 +9,8 @@ import com.freemud.application.sdk.api.ordercenter.request.OrderConditionsReq; ...@@ -8,6 +9,8 @@ import com.freemud.application.sdk.api.ordercenter.request.OrderConditionsReq;
import com.freemud.application.sdk.api.ordercenter.service.OrderDownLoadSdkService; import com.freemud.application.sdk.api.ordercenter.service.OrderDownLoadSdkService;
import com.freemud.sdk.api.assortment.order.request.order.MultiOrderRefundRequest; import com.freemud.sdk.api.assortment.order.request.order.MultiOrderRefundRequest;
import com.freemud.sdk.api.assortment.order.response.order.MultiOrderRefundResponse; import com.freemud.sdk.api.assortment.order.response.order.MultiOrderRefundResponse;
import org.hibernate.validator.HibernateValidator;
import org.hibernate.validator.HibernateValidatorConfiguration;
import org.junit.Test; import org.junit.Test;
import org.junit.runner.RunWith; import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
...@@ -20,6 +23,11 @@ import org.springframework.core.SpringVersion; ...@@ -20,6 +23,11 @@ import org.springframework.core.SpringVersion;
import org.springframework.test.context.junit4.SpringRunner; import org.springframework.test.context.junit4.SpringRunner;
import springfox.documentation.spring.web.json.Json; import springfox.documentation.spring.web.json.Json;
import javax.validation.ConstraintViolation;
import javax.validation.Validation;
import javax.validation.ValidatorFactory;
import java.util.Set;
@RunWith(SpringRunner.class) @RunWith(SpringRunner.class)
@SpringBootTest @SpringBootTest
@EnableDiscoveryClient @EnableDiscoveryClient
......
...@@ -116,15 +116,12 @@ public class PaymentHandle { ...@@ -116,15 +116,12 @@ public class PaymentHandle {
orderRefundResponse = standardPaymentService.orderRefund(orderRefundRequest, ""); orderRefundResponse = standardPaymentService.orderRefund(orderRefundRequest, "");
}catch (Exception ex){ }catch (Exception ex){
ErrorLog.errorConvertJson(this.getClass(), "refundError", ex); ErrorLog.errorConvertJson(this.getClass(), "refundError", ex);
throw new OrderServiceException(ResponseResult.REFUND_EXCEPTION); return handlePayRefundResponse(PayRefundStatus.FAIL,orderRefundRequest.getRefundId());
} }
if (orderRefundResponse==null){ if (orderRefundResponse==null || ObjectUtils.notEqual(orderRefundResponse.getCode(),SUCCESS)){
throw new OrderServiceException(ResponseResult.REFUND_EXCEPTION); return handlePayRefundResponse(PayRefundStatus.FAIL,orderRefundRequest.getRefundId());
} }
if (ObjectUtils.notEqual(orderRefundResponse.getCode(),SUCCESS)){ refundStatus=ObjectUtils.equals(PayRefundStatus.SUCCESS.getCode(), orderRefundResponse.getData().getRefundStatus())?PayRefundStatus.SUCCESS:PayRefundStatus.FAIL;
throw new OrderServiceException(ResponseResult.REFUND_FAIL,orderRefundResponse.getMessage());
}
refundStatus=ObjectUtils.equals( PayRefundStatus.SUCCESS.getCode(), orderRefundResponse.getData().getRefundStatus())?PayRefundStatus.SUCCESS:PayRefundStatus.RUNNING;
return handlePayRefundResponse(refundStatus,orderRefundRequest.getRefundId()); return handlePayRefundResponse(refundStatus,orderRefundRequest.getRefundId());
} }
......
...@@ -15,8 +15,13 @@ import cn.freemud.management.thirdparty.CustomerMcCafeClient; ...@@ -15,8 +15,13 @@ import cn.freemud.management.thirdparty.CustomerMcCafeClient;
import cn.freemud.management.thirdparty.DeliveryMCCafeClient; import cn.freemud.management.thirdparty.DeliveryMCCafeClient;
import cn.freemud.management.util.ResponseUtil; import cn.freemud.management.util.ResponseUtil;
import com.freemud.application.sdk.api.deliverycenter.response.DeliveryResponseDto; import com.freemud.application.sdk.api.deliverycenter.response.DeliveryResponseDto;
import com.freemud.application.sdk.api.ordercenter.enums.AbnormalStateEnum;
import com.freemud.application.sdk.api.ordercenter.enums.OrderClientType;
import com.freemud.application.sdk.api.ordercenter.request.SdkUpdateAbnormalState;
import com.freemud.application.sdk.api.ordercenter.response.orderInfo.OrderCostResp; import com.freemud.application.sdk.api.ordercenter.response.orderInfo.OrderCostResp;
import com.freemud.application.sdk.api.ordercenter.service.OrderSdkService;
import com.freemud.sdk.api.assortment.message.enums.OrderType; import com.freemud.sdk.api.assortment.message.enums.OrderType;
import com.freemud.sdk.api.assortment.order.enums.PayRefundStatus;
import com.freemud.sdk.api.assortment.order.response.order.QueryOrdersResponse; import com.freemud.sdk.api.assortment.order.response.order.QueryOrdersResponse;
import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang.StringUtils; import org.apache.commons.lang.StringUtils;
...@@ -58,7 +63,7 @@ public class McCafeMangerServiceImpl implements OrderManagerService { ...@@ -58,7 +63,7 @@ public class McCafeMangerServiceImpl implements OrderManagerService {
@Resource @Resource
private DeliveryMCCafeClient deliveryMCCafeClient; private DeliveryMCCafeClient deliveryMCCafeClient;
@Resource @Resource
private CustomerMcCafeClient customerMcCafeClient; private OrderSdkService orderSdkService;
@Value("${mccafe.partner.id}") @Value("${mccafe.partner.id}")
private String macCafePartnerId; private String macCafePartnerId;
...@@ -124,10 +129,21 @@ public class McCafeMangerServiceImpl implements OrderManagerService { ...@@ -124,10 +129,21 @@ public class McCafeMangerServiceImpl implements OrderManagerService {
}else { }else {
//支付退款 //支付退款
PayRefundResponse refundResponse = paymentHandle.mcCafeRefund(orderManagerRequest, orderBean); PayRefundResponse refundResponse = paymentHandle.mcCafeRefund(orderManagerRequest, orderBean);
//订单拒单 if(refundResponse.getPayRefundStatus().getCode().equals(PayRefundStatus.SUCCESS.getCode())) {
saasOrderHandle.mcCafeOrderReject(orderManagerRequest, refundResponse, orderBean); //订单拒单
//冲正库存 saasOrderHandle.mcCafeOrderReject(orderManagerRequest, refundResponse, orderBean);
stockHandle.revert(orderManagerRequest, orderBean); //冲正库存
stockHandle.revert(orderManagerRequest, orderBean);
} else {
SdkUpdateAbnormalState sdkUpdateAbnormalState = new SdkUpdateAbnormalState();
sdkUpdateAbnormalState.setOrderCode(request.getOrderId());
sdkUpdateAbnormalState.setPartnerId(request.getPartnerId());
sdkUpdateAbnormalState.setAbnormalState(AbnormalStateEnum.ABNORMAL.getCode());
sdkUpdateAbnormalState.setAbnormalDesc("支付退款失败,订单入机失败回调异常");
sdkUpdateAbnormalState.setOrderClient(OrderClientType.SAAS.getIndex());
sdkUpdateAbnormalState.setOperator(request.getOperator());
orderSdkService.updateAbnormalState(sdkUpdateAbnormalState);
}
} }
return ResponseUtil.success(); return ResponseUtil.success();
} }
...@@ -186,11 +202,22 @@ public class McCafeMangerServiceImpl implements OrderManagerService { ...@@ -186,11 +202,22 @@ public class McCafeMangerServiceImpl implements OrderManagerService {
@Override @Override
public BaseResponse<OrderManagerResponse> orderAgreeRefund(OrderManagerRequest request, QueryOrdersResponse.DataBean.OrderBean orderBean) { public BaseResponse<OrderManagerResponse> orderAgreeRefund(OrderManagerRequest request, QueryOrdersResponse.DataBean.OrderBean orderBean) {
//支付退款 //支付退款
PayRefundResponse refund = paymentHandle.mcCafeRefund(request, orderBean); PayRefundResponse refundResponse = paymentHandle.mcCafeRefund(request, orderBean);
//订单拒单 if(refundResponse.getPayRefundStatus().getCode().equals(PayRefundStatus.SUCCESS.getCode())) {
saasOrderHandle.mcCafeRefundAgree(request,refund, orderBean); //订单拒单
//冲正库存 saasOrderHandle.mcCafeRefundAgree(request, refundResponse, orderBean);
stockHandle.revert(request, orderBean); //冲正库存
stockHandle.revert(request, orderBean);
} else {
SdkUpdateAbnormalState sdkUpdateAbnormalState = new SdkUpdateAbnormalState();
sdkUpdateAbnormalState.setOrderCode(request.getOrderId());
sdkUpdateAbnormalState.setPartnerId(request.getPartnerId());
sdkUpdateAbnormalState.setAbnormalState(AbnormalStateEnum.ABNORMAL.getCode());
sdkUpdateAbnormalState.setAbnormalDesc("支付退款失败,订单入机失败回调异常");
sdkUpdateAbnormalState.setOrderClient(OrderClientType.SAAS.getIndex());
sdkUpdateAbnormalState.setOperator(request.getOperator());
orderSdkService.updateAbnormalState(sdkUpdateAbnormalState);
}
return ResponseUtil.success(); return ResponseUtil.success();
} }
...@@ -215,11 +242,22 @@ public class McCafeMangerServiceImpl implements OrderManagerService { ...@@ -215,11 +242,22 @@ public class McCafeMangerServiceImpl implements OrderManagerService {
@Override @Override
public BaseResponse<OrderManagerResponse> orderCancel(OrderManagerRequest request, QueryOrdersResponse.DataBean.OrderBean orderBean) { public BaseResponse<OrderManagerResponse> orderCancel(OrderManagerRequest request, QueryOrdersResponse.DataBean.OrderBean orderBean) {
//支付退款 //支付退款
PayRefundResponse refund = paymentHandle.mcCafeRefund(request, orderBean); PayRefundResponse refundResponse = paymentHandle.mcCafeRefund(request, orderBean);
//订单拒单 if(refundResponse.getPayRefundStatus().getCode().equals(PayRefundStatus.SUCCESS.getCode())) {
saasOrderHandle.orderCancel(request,refund, orderBean); //订单拒单
//冲正库存 saasOrderHandle.orderCancel(request, refundResponse, orderBean);
stockHandle.revert(request, orderBean); //冲正库存
stockHandle.revert(request, orderBean);
} else {
SdkUpdateAbnormalState sdkUpdateAbnormalState = new SdkUpdateAbnormalState();
sdkUpdateAbnormalState.setOrderCode(request.getOrderId());
sdkUpdateAbnormalState.setPartnerId(request.getPartnerId());
sdkUpdateAbnormalState.setAbnormalState(AbnormalStateEnum.ABNORMAL.getCode());
sdkUpdateAbnormalState.setAbnormalDesc("支付退款失败,订单入机失败回调异常");
sdkUpdateAbnormalState.setOrderClient(OrderClientType.SAAS.getIndex());
sdkUpdateAbnormalState.setOperator(request.getOperator());
orderSdkService.updateAbnormalState(sdkUpdateAbnormalState);
}
return ResponseUtil.success(); return ResponseUtil.success();
} }
......
...@@ -25,6 +25,7 @@ public enum ProductTypeEnum { ...@@ -25,6 +25,7 @@ public enum ProductTypeEnum {
TABLEWARE_PRODUCT(12,"餐具商品"), TABLEWARE_PRODUCT(12,"餐具商品"),
MATERIAL_PRODUCT(88,"加料商品"), MATERIAL_PRODUCT(88,"加料商品"),
LITTLE_MATERIAL_PRODUCT(89,"小料"), LITTLE_MATERIAL_PRODUCT(89,"小料"),
WITH_ORDER_VIRTUAL_PRODUCT(90,"随单购虚拟商品"),
; ;
......
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