Commit 10eb9ecc by xiaoer.li@freemud.com

Merge branch 'feature/2020-1104-混合支付' into develop

# Conflicts:
#	assortment-ordercenter-sdk/src/main/java/com/freemud/sdk/api/assortment/order/adapter/OrderSdkAdapter.java
#	assortment-ordercenter-sdk/src/main/java/com/freemud/sdk/api/assortment/order/request/order/BaseCreateOrderRequest.java
#	order-application-service/src/main/java/cn/freemud/adapter/OrderAdapter.java
#	order-application-service/src/main/java/cn/freemud/entities/vo/CreateOrderVo.java
#	order-application-service/src/main/java/cn/freemud/service/impl/OrderServiceImpl.java
parents 3ed021c5 8875579c
......@@ -164,6 +164,7 @@ public class BaseCreateOrderRequest extends BaseConfig {
private String region;
private Byte payChannelType;
/**
* 收货地址Id
*/
......@@ -174,7 +175,6 @@ public class BaseCreateOrderRequest extends BaseConfig {
*/
private Byte marketingType;
private List<OrderPayItemCreateReq> orderPayItemCreateReqList;
@Data
public static class DeliveryTypeInfo {
/**
......
......@@ -342,9 +342,6 @@ public class OrderAdapter {
createOrderDto.setActivityUpdateStockRequest(activityUpdateStockRequest);
createOrderDto.setPayChannelType(createOrderVo.getPayChannelType());
createOrderDto.setPayChannelType(createOrderVo.getPayChannelType());
createOrderDto.setOrderPayItemCreateReqList(createOrderVo.getOrderPayItemCreateReqList());
createOrderDto.setOrderPayItemCreateReqList(createOrderVo.getOrderPayItemCreateReqList());
// createOrderDto.setOtherInfo(getOrderOtherInfo(shoppingCartGoodsDto));
return createOrderDto;
}
......@@ -656,12 +653,33 @@ public class OrderAdapter {
// createOrderDto.setPayChannel("10102");
// createOrderDto.setPayChannelName("储值卡支付");
// }
//电子风味卡
if (Objects.nonNull(createOrderVo.getUnionPayCard())) {
createOrderDto.setPayChannel(PayChannel.USVCP.getCode());
createOrderDto.setPayChannelName(PayChannel.USVCP.getDesc());
} else{
}
//混合支付
else if (PayChannelType.COMB.getIndex().equals(createOrderVo.getPayChannelType())) {
createOrderDto.setPayChannel(PayChannelType.COMB.getEbcode());
createOrderDto.setPayChannelName(PayChannelType.COMB.getName());
}
else if (PayChannelType.WECHAT.getIndex().equals(createOrderVo.getPayChannelType())) {
createOrderDto.setPayChannel(PayChannelType.WECHAT.getEbcode());
createOrderDto.setPayChannelName(PayChannelType.WECHAT.getName());
}
else if (PayChannelType.ALIPAY.getIndex().equals(createOrderVo.getPayChannelType())) {
createOrderDto.setPayChannel(PayChannelType.ALIPAY.getEbcode());
createOrderDto.setPayChannelName(PayChannelType.ALIPAY.getName());
}
else if(StringUtils.isNotBlank(createOrderVo.getCardCode())){
createOrderDto.setPayChannel(PayChannelType.SVC.getEbcode());
createOrderDto.setPayChannelName(PayChannelType.SVC.getName());
}
else{
createOrderDto.setPayChannel(getPayChannel4SharedOrder(Integer.valueOf(createOrderVo.getPayChannelType())));
createOrderDto.setPayChannelName(getPayChannelName(Integer.valueOf(createOrderVo.getPayChannelType())));
createOrderDto.setPayChannel(PayChannelType.USVCP.getEbcode());
createOrderDto.setPayChannelName(PayChannelType.USVCP.getName());
}
createOrderDto.setSource(OrderSourceType.SAAS.getCode());
createOrderDto.setSourceName(OrderSourceType.SAAS.getDesc());
......@@ -3769,6 +3787,15 @@ public class OrderAdapter {
return deleteOrderDto;
}
public CombPayRequest convent2CombPayOrderRequest(String cardNo
, QueryOrdersResponse.DataBean.OrderBean orderBean
, PaymentRequest paymentRequest
, String partnerPayOvertime
, String orderClient
, String channel
, Integer totalAmount
, Integer svcAmount
, Integer svcVAmount) {
/**
* 初始化扣减活动库存请求对象
* add by miaohui 20201030 for 【ID1018638】【C端服务端】活动库存接口调整对接
......@@ -3827,10 +3854,10 @@ public class OrderAdapter {
CombPayRequest orderPayDto = new CombPayRequest();
orderPayDto.setEbCode(paymentRequest.getPayCode());
orderPayDto.setPartner_id(createPrepayRequestDto.getPartnerId());
orderPayDto.setPartner_id(orderBean.getCompanyId());
orderPayDto.setBody(paymentRequest.getPrincipalName());
orderPayDto.setNotify_url(paymentRequest.getReverseNotifyiDcUrl());
orderPayDto.setStore_id(createPrepayRequestDto.getStoreId());
orderPayDto.setStore_id(orderBean.getShopId());
orderPayDto.setOpen_id(paymentRequest.getOpenId());
String businessDate = com.freemud.application.sdk.api.util.DateUtil.convert2String(new Date(), "yyyyMMdd");
orderPayDto.setBusiness_date(businessDate);
......
......@@ -73,15 +73,6 @@ public class CreatePrepayRequestDto {
* 使用电子风味卡
*/
private CreateOrderVo.UnionPayCard unionPayCard;
private List<OrderPayItemCreateReq> orderPayItemCreateReqList;
/**
* svc支付金额
*/
private BigDecimal svcAmount;
/**
* 现金支付金额
*/
private BigDecimal cashAmount;
private String storeId;
private String channel;
}
......@@ -285,19 +285,6 @@ public class CreateOrderVo {
*/
private String code;
}
/**
* 混合支付
*/
private List<OrderPayItemCreateReq> orderPayItemCreateReqList = new ArrayList<>();
/**
* svc支付金额
*/
private BigDecimal svcAmount;
/**
* 现金支付金额
*/
private BigDecimal cashAmount;
/**
* 电子风味卡
*/
......
......@@ -54,12 +54,14 @@ import com.freemud.application.sdk.api.storecenter.response.StoreResponse;
import com.freemud.application.sdk.api.storecenter.service.StoreCenterService;
import com.google.common.collect.Lists;
import com.google.gson.Gson;
import lombok.extern.log4j.Log4j;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang.ObjectUtils;
import org.apache.commons.lang.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
import sun.rmi.runtime.Log;
import java.awt.geom.Point2D;
import java.math.BigDecimal;
......@@ -69,6 +71,7 @@ import java.util.*;
import java.util.stream.Collectors;
@Component
@Log4j
public class CheckOrder {
// 配送费逻辑是否使用旧的
......@@ -792,44 +795,4 @@ public class CheckOrder {
// throw new ServiceException(ResponseResult.STORE_ITEM_STOP_BUSINESS);
// }
}
/**
* 混合支付
* @param createOrderVo
* @param shoppingCartGoodsDto
* @param trackingNo
* @return
*/
public boolean checkSvcPay(CreateOrderVo createOrderVo,ShoppingCartGoodsDto shoppingCartGoodsDto,String trackingNo) {
if (StringUtils.isBlank(createOrderVo.getCardCode())) {
return false;
}
SVCCardAmountRequest request = new SVCCardAmountRequest();
request.setPartnerId(createOrderVo.getPartnerId());
request.setCardCodes(Arrays.asList(createOrderVo.getCardCode()));
BaseResponse<SVCCardAmountResponse> svcCardAmount = paymentNewService.querySVCCardAmount(request, trackingNo);
if (svcCardAmount==null || svcCardAmount.getData()==null ||!ResponseResult.SUCCESS.getCode().equals(svcCardAmount.getCode())) {
throw new ServiceException(ResponseResult.USER_SVC_CARD_ERROR);
}
Integer svcAmount = 0 ;
Integer svcVAmount = 0 ;
Long totalVAmount = shoppingCartGoodsDto.getTotalAmount();
if (svcCardAmount.getData().getData().getCardSimpleInfos().size()>0) {
svcAmount = svcCardAmount.getData().getData().getCardSimpleInfos().get(0).getAmount();
svcVAmount = svcCardAmount.getData().getData().getCardSimpleInfos().get(0).getVamount();
//todo : svc卡的金额小于订单金额
if(svcAmount + svcVAmount >0 && totalVAmount> svcAmount + svcVAmount){
BigDecimal total = new BigDecimal(totalVAmount);
BigDecimal svcAmounts = new BigDecimal(svcAmount + svcVAmount);
BigDecimal cashAmout = total.subtract(svcAmounts);
createOrderVo.setOrderPayItemCreateReqList(orderAdapter.setOrderPayItem(cashAmout,svcAmounts,Byte.parseByte(createOrderVo.getChannel())));
createOrderVo.setPayChannelType(PayChannelType.COMB.getIndex());
createOrderVo.setCashAmount(cashAmout);
createOrderVo.setSvcAmount(svcAmounts);
return true;
}
}
return false;
}
}
......@@ -209,7 +209,7 @@ public class OrderAdapterServiceImpl implements OrderAdapterService {
try {
ConfirmOrderDto confirmOrderDto = orderAdapter.convent2ConfirmOrderDto(message);
// 蜜雪+混合支付专用:通过交易号从缓存中拿订单号,如果有数据则实际订单号为其value值
String orderId = redisCache.getValue(RedisUtil.getPaymentTransIdOrderKey(confirmOrderDto.getOrderId()));
String orderId = redisCache.getValue(RedisUtil.getPaymentTransIdOrderKey(message.getTrans_id()));
if (StringUtils.isNotBlank(orderId)) {
log.info("从缓存中获取的订单数据,trackingNo:{},transId:{},orderId:{}", LogTreadLocal.getTrackingNo(), confirmOrderDto.getOrderId(), orderId);
confirmOrderDto.setOrderId(orderId);
......
......@@ -20,5 +20,10 @@ public class PayItem {
private String partnerId;
private String fmTradeNo;
private Integer payChannelType;
private Integer payChannelName;
private String transId;
private String orderPayItemCode;
private String outOrderNo;
private String platformTradeNo;
private String endTransTradeNo;
}
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