Commit 06961ce3 by 徐康

Merge remote-tracking branch 'origin/qa' into qa

parents 781219c1 6884a45a
......@@ -1175,6 +1175,7 @@ public class OrderSdkAdapter {
data.setOrderPayItem(this.getOrderItemPayList(orderInfoReqs.getOrderPayItemCreateReqList()));
}
data.setPayChannelType(orderInfoReqs.getPayChannelType());
data.setPickUpGoodsNo(orderInfoReqs.getPickUpGoodsNo());
return data;
}
......
......@@ -416,9 +416,10 @@ public class QueryOrdersResponse {
*/
//订单支付详情
private List<OrderPayItemResp> orderPayItemCreateReqList;
private List<OrderPayItem> orderPayItem;
private String pickUpGoodsNo;
@NoArgsConstructor
@Data
public static class AddDeliveryInfo {
......
......@@ -85,7 +85,7 @@
</dependency>
<dependency>
<groupId>cn.freemud</groupId>
<version>1.4.31-SNAPSHOT</version>
<version>1.6.7-SNAPSHOT</version>
<artifactId>ordercenter-sdk</artifactId>
</dependency>
<dependency>
......
......@@ -34,8 +34,10 @@ import com.freemud.application.sdk.api.log.LogThreadLocal;
import com.freemud.application.sdk.api.log.ThirdPartyLog;
import com.freemud.application.sdk.api.ordercenter.enums.NewOrderStatus;
import com.freemud.application.sdk.api.ordercenter.enums.OrderClientType;
import com.freemud.application.sdk.api.ordercenter.enums.PayChannelType;
import com.freemud.application.sdk.api.ordercenter.response.orderInfo.OrderInfoReqs;
import com.freemud.application.sdk.api.ordercenter.response.orderInfo.OrderItemResp;
import com.freemud.application.sdk.api.ordercenter.response.orderInfo.OrderPayItemReqs;
import com.freemud.application.sdk.api.ordercenter.response.orderInfo.OrderSettlementResp;
import com.freemud.sdk.api.assortment.orderdistributor.request.DisRequest;
import com.freemud.sdk.api.assortment.orderdistributor.service.OrderDistributionService;
......@@ -51,10 +53,7 @@ import org.springframework.context.ApplicationContext;
import org.springframework.stereotype.Component;
import org.springframework.util.CollectionUtils;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
import java.util.*;
@Component
@Slf4j
......@@ -221,12 +220,23 @@ public class OrderCallBackMQService {
AssortmentOpenPlatformWxapp wxApp = openPlatformWxappManager.findByPartnerIdAndWxappId(userLoginInfoDto.getPartnerId(), userLoginInfoDto.getWxAppid());
wechatReportOrderDto.setSubMchId(wxApp == null ? "" : wxApp.getMchId());
}
// 混合支付
Integer userAmount = 0;
if (orderInfoReqs.getOrderPayItemCreateReqList().size()>0) {
OrderPayItemReqs orderPayItemReqs = orderInfoReqs.getOrderPayItemCreateReqList()
.stream()
.filter(s -> s.getPayChannelType().equals(PayChannelType.WECHAT.getIndex()) || s.getPayChannelType().equals(PayChannelType.ALIPAY.getIndex()))
.findFirst().orElse(null);
if (orderPayItemReqs!=null) {
userAmount = orderPayItemReqs.getPayAmount().intValue();
}
}
wechatReportOrderDto.setPayVoucher(orderInfoReqs.getPayRequestNo());
wechatReportOrderDto.setSubAppId(userLoginInfoDto.getWxAppid());
wechatReportOrderDto.setOutShopNo(orderInfoReqs.getStoreId());
wechatReportOrderDto.setSubOpenId(userLoginInfoDto.getOpenId());
wechatReportOrderDto.setLoginToken(userLoginInfoDto.getSessionKey());
wechatReportOrderDto.setUserAmount(orderInfoReqs.getSettlementAmount().intValue());
wechatReportOrderDto.setUserAmount(userAmount >0 ? userAmount :orderInfoReqs.getSettlementAmount().intValue());
wechatReportOrderDto.setOutOrderNo(orderInfoReqs.getOrderCode());
wechatReportOrderDto.setTransactionId(orderExtInfoDto.getPaid_no());
wechatReportOrderDto.setOutTradeNo(orderExtInfoDto.getPayTransId());
......@@ -245,7 +255,7 @@ public class OrderCallBackMQService {
}
}
}
wechatReportOrderDto.setTotalAmount(discountAmount+orderInfoReqs.getSettlementAmount().intValue());
wechatReportOrderDto.setTotalAmount(discountAmount+(userAmount >0 ? userAmount : orderInfoReqs.getSettlementAmount().intValue()));
wechatReportOrderDto.setDiscountAmount(discountAmount);
//订单状态 (2—用户下单;1—支付完成)
wechatReportOrderDto.setStatus(NewOrderStatus.PENDING_PAYMENT.getIndex().equals(orderInfoReqs.getOrderState()) ? 2 : 1);
......
......@@ -227,7 +227,7 @@ public class DeliveryAdapter {
if(CollectionUtils.isNotEmpty(productList.getComboProduct())) {
productList.getComboProduct().forEach(comboProduct -> {
ProductInfo deliveryComboProductInfo = new ProductInfo();
deliveryComboProductInfo.setProductCode(comboProduct.getProductId().substring(4));
deliveryComboProductInfo.setProductCode(comboProduct.getProductId().length()>4?comboProduct.getProductId().substring(4):comboProduct.getProductId());
String productNameCombo = StringUtils.isBlank(comboProduct.getSpecificationName()) ? comboProduct.getProductName() : comboProduct.getSpecificationName();
String grillingCombo = "";
......
......@@ -1148,6 +1148,9 @@ public class OrderAdapter {
responseVo.setOrderPayType(PayChannelType.WECHAT.getName());
}
}
else if (ordersBean.getOrderPayItem().size()>0) {
responseVo.setOrderPayType(PayChannelType.COMB.getName());
}
else {
if (OrderSourceType.ALIPAY.getCode().equals(ordersBean.getSource())) {
responseVo.setOrderPayType("支付宝支付");
......
......@@ -12,12 +12,13 @@
*/
package cn.freemud.entities.dto;
import com.freemud.application.sdk.api.ordercenter.response.OrderPayItemResp;
import com.freemud.application.sdk.api.ordercenter.response.orderInfo.OrderCostResp;
import com.freemud.sdk.api.assortment.order.response.order.QueryOrdersResponse;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.apache.commons.lang.builder.ToStringBuilder;
import org.apache.commons.lang.builder.ToStringStyle;
import java.math.BigDecimal;
import java.util.List;
......@@ -199,6 +200,7 @@ public class QueryOrdersResponseDto {
private AddDeliveryInfo addInfo;
private List<OrderCostResp> orderCostDetailList;
private List<QueryOrdersResponse.DataBean.OrderBean.OrderPayItem> orderPayItem;
/**
* 订单操作状态(从订单操作历史表中获取)
......@@ -278,6 +280,12 @@ public class QueryOrdersResponseDto {
*/
private BigDecimal weight;
/**
* 混合支付详情
*/
private List<OrderPayItemResp> orderPayItemCreateReqList;
@NoArgsConstructor
@Data
public static class AddDeliveryInfo {
......
......@@ -75,6 +75,7 @@ import com.freemud.application.sdk.api.deliverycenter.service.DeliveryService;
import com.freemud.application.sdk.api.log.ApiLog;
import com.freemud.application.sdk.api.log.ErrorLog;
import com.freemud.application.sdk.api.log.LogThreadLocal;
import com.freemud.application.sdk.api.ordercenter.entities.PayItem;
import com.freemud.application.sdk.api.ordercenter.enums.AfterSalesType;
import com.freemud.application.sdk.api.ordercenter.enums.OrderClientType;
import com.freemud.application.sdk.api.ordercenter.enums.PayChannelType;
......@@ -1728,7 +1729,7 @@ public class OrderServiceImpl implements Orderservice {
String partnerId = orderBean.getCompanyId();
int state = PayRefundStatus.SUCCESS.getCode();
if (orderBean.getAmount() != 0) {
if("4".equalsIgnoreCase(orderBean.getPayChannelType())){
if(null != orderBean.getOrderPayItem() && orderBean.getOrderPayItem().size()>0){
//调用支付退款
MultiOrderRefundRequest multiOrderRefundRequest = orderAdapter.getMultiOrderPayRefundRequest(orderBean, refundId);
MultiOrderRefundResponse multiOrderRefundResponse = mulitiPaymentClient.paymentApplicationRefund(multiOrderRefundRequest,orderBean.getCompanyId());
......@@ -2373,29 +2374,6 @@ public class OrderServiceImpl implements Orderservice {
boolean tigger = false;
OrderPayResponse orderPayResponse = new OrderPayResponse();
/*
SVCCardAmountRequest svcRequest = new SVCCardAmountRequest();
svcRequest.setPartnerId(orderBean.getCompanyId());
svcRequest.setCardCodes(Arrays.asList(cardCode));
//查询svc卡余额
com.freemud.application.sdk.api.base.BaseResponse<SVCCardAmountResponse> svcCardAmount = paymentNewService.querySVCCardAmount(svcRequest, trackingNo);
if (svcCardAmount == null
|| !ResponseCodeConstant.RESPONSE_SUCCESS_STR.equals(svcCardAmount.getCode())
|| svcCardAmount.getData().getData() == null
|| CollectionUtils.isEmpty(svcCardAmount.getData().getData().getCardSimpleInfos())) {
orderPayResponse.setMsg(Objects.isNull(svcCardAmount) ? "获取svc卡余额异常" : svcCardAmount.getMessage());
return orderPayResponse;
}
// 校验金额
Integer svcAmount = svcCardAmount.getData().getData().getCardSimpleInfos().get(0).getAmount() ;
Integer svcVAmount = svcCardAmount.getData().getData().getCardSimpleInfos().get(0).getVamount() ;
//todo : svc卡的金额小于订单金额
if(svcAmount + svcVAmount >0 && totalAmount> svcAmount + svcVAmount){
tigger = true;
}
*/
tigger = true;
//混合支付
if (tigger && StringUtils.isNotBlank(channel)) {
......@@ -2769,7 +2747,7 @@ public class OrderServiceImpl implements Orderservice {
orderEditRequest.setPayChannelType(PayChannelType.getByEbcode(orderPayResponse.getPayMode()).getIndex());
}
//混合支付项
if (CollectionUtils.isNotEmpty(orderPayResponse.getPayItem()) && orderPayResponse.getPayMode().equals(PayChannelType.COMB.getEbcode())) {
if (CollectionUtils.isNotEmpty(orderPayResponse.getPayItem())) {
orderEditRequest.setOrderPayItem(orderPayResponse.getPayItem());
orderEditRequest.setPayChannel(PayChannelType.COMB.getEbcode());
orderEditRequest.setPayChannelName(PayChannelType.COMB.getName());
......@@ -3362,6 +3340,17 @@ public class OrderServiceImpl implements Orderservice {
orderPayResponse.setPartnerId(orderBean.getCompanyId());
orderPayResponse.setOrderId(orderBean.getOid());
orderPayResponse.setPayMode(PayChannelType.SVC.getEbcode());
for (CombPayResponse.PayPlatform pt : payPlatforms) {
PayItem payItem = new PayItem();
payItem.setFmTradeNo(pt.getFmTradeNo());
payItem.setStoreId(storeId);
payItem.setPayChannelType(PayChannelType.getByEbcode(pt.getEbCode()).getIndex().intValue());
payItem.setPayChannelName(PayChannelType.getByEbcode(pt.getEbCode()).getName());
payItem.setTransId(pt.getTransId());
payItem.setPartnerId(combPayRequest.getPartner_id());
payItem.setPayAmount(new BigDecimal(pt.getPayAmount()));
orderPayResponse.getPayItem().add(payItem);
}
}
return orderPayResponse;
......@@ -3400,7 +3389,7 @@ public class OrderServiceImpl implements Orderservice {
do {
try {
request = orderCenterSdkService.orderCancel(cancelOrderRequest);
if (ResponseCodeConstant.RESPONSE_SUCCESS.equals(request.getErrcode())) {
if (request!=request) {
break;
}
} catch (Exception e) {}
......@@ -3409,9 +3398,9 @@ public class OrderServiceImpl implements Orderservice {
backOrdersStatusChange(orderBean.getOid(), orderBean.getStatus());
if(ResponseCodeConstant.RESPONSE_SUCCESS.equals(request.getErrcode())) {
return this.newSendPayFaileMessage();
} else {
return this.newSendPaySuccessNoticeMessage();
} else {
return this.newSendPayFaileMessage();
}
}
......
......@@ -128,7 +128,7 @@ public class SaasOrderMangerServiceImpl implements OrderManagerService {
//支付退款
PayRefundResponse refundResponse = new PayRefundResponse();
try {
if("4".equalsIgnoreCase(orderBean.getPayChannelType())){
if(null != orderBean.getOrderPayItem() && orderBean.getOrderPayItem().size()>0){
refundResponse = paymentHandle.multiRefund(orderBean);
}else{
refundResponse = paymentHandle.refund(request, orderBean);
......@@ -162,7 +162,7 @@ public class SaasOrderMangerServiceImpl implements OrderManagerService {
//支付退款
PayRefundResponse refundResponse = new PayRefundResponse();
try {
if("4".equalsIgnoreCase(orderBean.getPayChannelType())){
if(null != orderBean.getOrderPayItem() && orderBean.getOrderPayItem().size()>0){
refundResponse = paymentHandle.multiRefund(orderBean);
}else{
refundResponse = paymentHandle.refund(request, orderBean);
......
package cn.freemud.entities.dto.product;
import lombok.Data;
import java.util.List;
/**
* All rights Reserved, Designed By sunary.site
*
* @version v1.0
* @Title: IntelliJ IDEA
* @Package cn.freemud.entities.dto.product
* @Description: 请简单描述下这个类是做什么用的
* @author: yu.sun
* @date: 2020-11-25 11:51:44
* @Copyright: 2019 www.freemud.cn Inc. All rights reserved.
*/
@Data
public class ProductTypeBeanDTO {
private String businessNo;
private String barcode;
private String brandId;
private String brandName;
private String category;
private String categoryName;
private String companyId;
private String customerCode;
private String productCode;
private Long finalPrice;
private Integer isSkuProduct;
private String name;
private Long originalPrice;
private Long packPrice;
private String picture;
private String pid;
private String specification;
private Integer status;
private Integer stock;
private Integer stockLimit;
private int type;
private String unit;
private Integer riseSell;
private String rawMaterial;
private Double tax;
private String taxId;
private Integer openMemberDiscount;
private Integer memberDiscount;
private List<ProductAttributeGroupListBean> productAttributeGroupList;
private List<ProductPictureListBean> productPictureList;
private List<SkuProductBean> skuList;
private List<ProductComboType> productComboList;
private List<ProductGroupType> productGroupList;
private List<SkuProductBean.SkuSpecValue> skuSpecValues;
private List<PackageProductTypeDto> packageProductTypes;
private List<ProductGroupType> additionalGroupList;
private List<ProductComboDetailTypeDto> productComboInfos;
private Integer isDishware;
private Integer weightType;
private Double weight;
public Integer getMemberDiscountResult() {
return this.openMemberDiscount != null && this.openMemberDiscount == 1 ? this.memberDiscount : 100;
}
public ProductTypeBeanDTO() {
}
@Data
public static class ProductComboDetailTypeDto {
private String productId;
private Integer quantity;
private Integer sequence;
public ProductComboDetailTypeDto() {
}
}
@Data
public static class ProductAttributeGroupListBean {
private String attributeName;
private Integer attributeType;
private List<AttributeValueBean> attributeValues;
public ProductAttributeGroupListBean() {
}
}
@Data
public static class AttributeValueBean {
private String attributeId;
private String attributeValue;
private Long id;
private Long price;
private Integer sequence;
private Integer status;
public AttributeValueBean() {
}
}
@Data
public static class PackageProductTypeDto {
private Long groupId;
private Integer sequence;
public PackageProductTypeDto() {
}
}
@Data
public static class ProductGroupType {
private String pgid;
private String linkId;
private String groupCode;
private String options;
private String name;
private Integer must;
private Integer allowRepeat;
private Integer minNumber;
private Integer maxNumber;
private String remark;
private Integer total;
private List<ProductGroupType.GroupDetailType> groupDetail;
public ProductGroupType() {
}
@Data
public static class GroupDetailType {
private String productId;
private String productName;
private String customerCode;
private Integer productPrice;
protected Integer productFinalPrice;
protected Integer markUpPrice;
private String picture;
private Integer stockLimit;
protected String unit;
protected String productCode;
private Integer weightType;
private Double weight;
private Double tax;
private String taxId;
}
}
@Data
public static class ProductComboType {
private String productId;
private String productName;
private String customerCode;
private Integer originalPrice;
protected Integer finalPrice;
protected Integer packPrice;
private String picture;
protected String unit;
protected String productCode;
private Integer quantity;
private Integer weightType;
private Double weight;
private Double tax;
private String taxId;
}
@Data
public static class ProductPictureListBean {
private String pictureId;
private String productId;
private String sequence;
private String type;
private String url;
@Data
public static class AttributeValueBean {
private String attributeId;
private String attributeValue;
private Long id;
private Long price;
private Integer sequence;
private Integer status;
public AttributeValueBean() {
}
}
}
@Data
public static class ProductLabelNameListBean {
private String id;
private String name;
private String partnerId;
List<?> productList;
private String storeId;
private String type;
public ProductLabelNameListBean() {
}
}
@Data
public static class SpecificationGroupBean {
private String partnerId;
private Integer sequence;
private String specId;
private String specName;
private List<SpecificationGroupBean.SpecValueVo> specValueVos;
public SpecificationGroupBean() {
}
@Data
public static class SpecValueVo {
private Integer sequence;
private String specId;
private String specValue;
private String specValueId;
public SpecValueVo() {
}
}
}
@Data
public static class SkuProductBean {
private String customerCode;
private String productCode;
private Long finalPrice;
private Long originalPrice;
private String productName;
private Integer productType;
private Integer sequence;
private String skuCode;
private String skuId;
private Integer status;
private Integer stockLimit;
private Integer stockQty;
private Long packPrice;
private Integer riseSell;
private String rawMaterial;
private Double tax;
private String taxId;
private List<SkuProductBean.SkuSpecValue> skuSpecValues;
private List<ProductGroupType> additionalGroupList;
private Double weight;
protected String unit;
private Integer openMemberDiscount;
private Integer memberDiscount;
public Integer getMemberDiscountResult() {
return this.openMemberDiscount != null && this.openMemberDiscount == 1 ? this.memberDiscount : 100;
}
public SkuProductBean() {
}
@Data
public static class SkuSpecValue {
private String productId;
private Integer sequence;
private String specId;
private String specName;
private String specValue;
private String specValueId;
public SkuSpecValue() {
}
}
@Data
public static class PackageProductTypeDto {
private Long groupId;
private Integer sequence;
public PackageProductTypeDto() {
}
}
}
}
package cn.freemud.entities.dto.product;
import com.freemud.application.sdk.api.productcenter.domain.ProductBeanDTO;
import lombok.Data;
import java.util.Map;
......@@ -24,9 +24,9 @@ public class ValiadShopProductResult {
private String message;
private String skuId;
private String spuId;
private ProductBeanDTO productType;
private ProductTypeBeanDTO productType;
private String uuid;
private Map<String,ProductBeanDTO> subProductTypeMap;
private Map<String,ProductTypeBeanDTO> subProductTypeMap;
}
......@@ -9,6 +9,7 @@ import cn.freemud.constant.ShoppingCartConstant;
import cn.freemud.entities.dto.*;
import cn.freemud.entities.dto.activity.ActivityQueryDto;
import cn.freemud.entities.dto.activity.ActivityQueryResponseDto;
import cn.freemud.entities.dto.product.ProductTypeBeanDTO;
import cn.freemud.entities.dto.product.ValiadShopProductResponse;
import cn.freemud.entities.dto.product.ValiadShopProductResult;
import cn.freemud.entities.dto.product.ValidateShopProductRequest;
......@@ -1655,7 +1656,8 @@ public class ShoppingCartMCoffeeServiceImpl {
}
if (PRODUCT_PRICE_CHANGE == validaProduct.getCode()) {
changePriceSpu.add(spuName);
List<ProductBeanDTO> productList = validateResult.getFailureList().stream().map(ValiadShopProductResult::getProductType).collect(Collectors.toList());
List<ProductTypeBeanDTO> productList =
validateResult.getFailureList().stream().map(ValiadShopProductResult::getProductType).collect(Collectors.toList());
shoppingCartConvertAdapter.updateCartGoodsInfoForMCoffee(cartGoods, productList);
}
if (PRODUCT_GROUP_EMPTY == validaProduct.getCode()) {
......@@ -1690,9 +1692,9 @@ public class ShoppingCartMCoffeeServiceImpl {
continue;
}
for (ValiadShopProductResult valiadShopProductResult : validateResult.getSuccessList()){
ProductBeanDTO productType = valiadShopProductResult.getProductType();
ProductTypeBeanDTO productType = valiadShopProductResult.getProductType();
if(ObjectUtils.equals(productType.getPid(), cartGoods.getSpuId())){
Map<String,ProductBeanDTO> subProductTypeMap = valiadShopProductResult.getSubProductTypeMap();
Map<String,ProductTypeBeanDTO> subProductTypeMap = valiadShopProductResult.getSubProductTypeMap();
shoppingCartConvertAdapter.updateCartGoodsInfo(cartGoods, productType,subProductTypeMap);
break;
}
......
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