Commit 85b9d96a by xiaoer.li@freemud.com

Merge remote-tracking branch 'remotes/origin/feature/2020-1104-混合支付' into develop

# Conflicts:
#	assortment-ordercenter-sdk/pom.xml
#	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
#	assortment-ordercenter-sdk/src/main/java/com/freemud/sdk/api/assortment/order/request/payment/ProductVO.java
#	assortment-ordercenter-sdk/src/main/java/com/freemud/sdk/api/assortment/order/response/order/QueryOrdersResponse.java
#	order-application-service/pom.xml
#	order-application-service/src/main/java/cn/freemud/adapter/OrderAdapter.java
#	order-application-service/src/main/java/cn/freemud/entities/dto/order/CreatePrepayRequestDto.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
#	ordercenter-sdk/pom.xml
#	ordercenter-sdk/src/main/java/com/freemud/application/sdk/api/ordercenter/request/create/CreateOrderRequest.java
#	ordercenter-sdk/src/main/java/com/freemud/application/sdk/api/ordercenter/request/create/OrderPayItemCreateReq.java
#	ordercenter-sdk/src/main/java/com/freemud/application/sdk/api/ordercenter/response/orderInfo/OrderInfoReqs.java
#	shopping-cart-application-service/src/main/java/cn/freemud/service/impl/ShoppingCartNewServiceImpl.java
parents 884237d1 e9f57b1a
...@@ -263,6 +263,7 @@ public class OrderSdkAdapter { ...@@ -263,6 +263,7 @@ public class OrderSdkAdapter {
//订单重量 //订单重量
Double orderWeight = sumOrderWeight(requestVO.getProducts()); Double orderWeight = sumOrderWeight(requestVO.getProducts());
request.setWeight(orderWeight); request.setWeight(orderWeight);
request.setOrderPayItemCreateReqList(requestVO.getOrderPayItemCreateReqList());
// 扩展字段(第三方商品分类编号) // 扩展字段(第三方商品分类编号)
if (null != requestVO && null != requestVO.getOtherInfo()) { if (null != requestVO && null != requestVO.getOtherInfo()) {
request.setExtInfo(JSONObject.toJSONString(requestVO.getOtherInfo())); request.setExtInfo(JSONObject.toJSONString(requestVO.getOtherInfo()));
...@@ -1183,6 +1184,10 @@ public class OrderSdkAdapter { ...@@ -1183,6 +1184,10 @@ public class OrderSdkAdapter {
data.setExpressChannelName(orderInfoReqs.getExpressChannelName()); data.setExpressChannelName(orderInfoReqs.getExpressChannelName());
//发票信息 //发票信息
data.setOrderInvoice(orderInfoReqs.getOrderInvoice()); data.setOrderInvoice(orderInfoReqs.getOrderInvoice());
//todo:混合支付
if (CollectionUtils.isNotEmpty(orderInfoReqs.getOrderPayItemCreateReqList())) {
data.setOrderPayItem(this.getOrderItemPayList(orderInfoReqs.getOrderPayItemCreateReqList()));
}
//订单类型回传 //订单类型回传
if (orderInfoReqs.getMarketingType() != null) { if (orderInfoReqs.getMarketingType() != null) {
...@@ -1192,6 +1197,23 @@ public class OrderSdkAdapter { ...@@ -1192,6 +1197,23 @@ public class OrderSdkAdapter {
return data; return data;
} }
/**
* 混合支付转换
* @param OrderPayItemReqs
*/
private List<QueryOrdersResponse.DataBean.OrderBean.OrderPayItem> getOrderItemPayList(List<OrderPayItemReqs> OrderPayItemReqs) {
List<QueryOrdersResponse.DataBean.OrderBean.OrderPayItem> OrderPayItemList = new ArrayList<>(2);
for (OrderPayItemReqs orderPayItemReq : OrderPayItemReqs) {
QueryOrdersResponse.DataBean.OrderBean.OrderPayItem orderPayItem = new QueryOrdersResponse.DataBean.OrderBean.OrderPayItem();
orderPayItem.setOrderCode(orderPayItemReq.getOrderCode());
orderPayItem.setOrderPayItemCode(orderPayItemReq.getOrderPayItemCode());
orderPayItem.setPayAmount(orderPayItemReq.getPayAmount());
orderPayItem.setPayChannelName(orderPayItemReq.getPayChannelName());
orderPayItem.setPayChannelType(orderPayItemReq.getPayChannelType());
OrderPayItemList.add(orderPayItem);
}
return OrderPayItemList;
}
public QueryOrdersResponse convent2QueryOrdersResponse(BaseResponse<QueryOrderForUserResp> baseResponse) { public QueryOrdersResponse convent2QueryOrdersResponse(BaseResponse<QueryOrderForUserResp> baseResponse) {
QueryOrdersResponse response = new QueryOrdersResponse(); QueryOrdersResponse response = new QueryOrdersResponse();
response.setErrcode(Integer.parseInt(baseResponse.getCode())); response.setErrcode(Integer.parseInt(baseResponse.getCode()));
...@@ -1622,9 +1644,6 @@ public class OrderSdkAdapter { ...@@ -1622,9 +1644,6 @@ public class OrderSdkAdapter {
activityUpdateStockRequest.setPartnerCode(orderBean.getCompanyId()); activityUpdateStockRequest.setPartnerCode(orderBean.getCompanyId());
activityUpdateStockRequest.setStoreId(orderBean.getShopId()); activityUpdateStockRequest.setStoreId(orderBean.getShopId());
activityUpdateStockRequest.setVer("1"); activityUpdateStockRequest.setVer("1");
// add by miaohui 20201030 for 【ID1018638】【C端服务端】活动库存接口调整对接
activityUpdateStockRequest.setUserId(orderBean.getUserId());
activityUpdateStockRequest.setOrderCreateTime(DateUtil.getCurrentDate(DateUtil.FORMAT_yyyyMMdd_date));
return activityUpdateStockRequest; return activityUpdateStockRequest;
} }
...@@ -2815,13 +2834,6 @@ public class OrderSdkAdapter { ...@@ -2815,13 +2834,6 @@ public class OrderSdkAdapter {
extInfo.setProductGroupList(product.getProductGroupList()); extInfo.setProductGroupList(product.getProductGroupList());
orderItemCreateReq.setExtInfo(JSONObject.toJSONString(extInfo)); orderItemCreateReq.setExtInfo(JSONObject.toJSONString(extInfo));
// 拼单加购人信息 add by miaohui 2020.10.12 start
orderItemCreateReq.setUserId(product.getUserId());
orderItemCreateReq.setNickName(product.getNickName());
orderItemCreateReq.setPhotoUrl(product.getPhotoUrl());
// 拼单加购人信息 add by miaohui 2020.10.12 end
orderItemList.add(orderItemCreateReq); orderItemList.add(orderItemCreateReq);
if (product.getTotalDiscountAmount() != null && product.getTotalDiscountAmount() > 0L && !isMaterial) { if (product.getTotalDiscountAmount() != null && product.getTotalDiscountAmount() > 0L && !isMaterial) {
//优惠信息转换 //优惠信息转换
......
...@@ -4,10 +4,10 @@ import com.freemud.application.sdk.api.ordercenter.enums.OrderClientType; ...@@ -4,10 +4,10 @@ import com.freemud.application.sdk.api.ordercenter.enums.OrderClientType;
import com.freemud.application.sdk.api.ordercenter.request.OrderExtendedReq; import com.freemud.application.sdk.api.ordercenter.request.OrderExtendedReq;
import com.freemud.application.sdk.api.ordercenter.request.create.OrderPayItemCreateReq; import com.freemud.application.sdk.api.ordercenter.request.create.OrderPayItemCreateReq;
import com.freemud.application.sdk.api.ordercenter.request.create.OrderTaskReq; import com.freemud.application.sdk.api.ordercenter.request.create.OrderTaskReq;
import com.freemud.application.sdk.api.ordercenter.request.create.OrderPayItemCreateReq;
import com.freemud.application.sdk.api.promotioncenter.request.promotion.ActivityUpdateStockRequest; import com.freemud.application.sdk.api.promotioncenter.request.promotion.ActivityUpdateStockRequest;
import com.freemud.sdk.api.assortment.order.config.BaseConfig; import com.freemud.sdk.api.assortment.order.config.BaseConfig;
import com.freemud.sdk.api.assortment.order.enums.*; import com.freemud.sdk.api.assortment.order.enums.*;
import lombok.Builder;
import lombok.Data; import lombok.Data;
import java.util.Date; import java.util.Date;
...@@ -174,6 +174,7 @@ public class BaseCreateOrderRequest extends BaseConfig { ...@@ -174,6 +174,7 @@ public class BaseCreateOrderRequest extends BaseConfig {
*/ */
private Byte marketingType; private Byte marketingType;
private List<OrderPayItemCreateReq> orderPayItemCreateReqList;
@Data @Data
public static class DeliveryTypeInfo { public static class DeliveryTypeInfo {
/** /**
......
package com.freemud.sdk.api.assortment.order.request.order; package com.freemud.sdk.api.assortment.order.request.order;
import com.freemud.application.sdk.api.ordercenter.entities.PayItem;
import com.freemud.sdk.api.assortment.order.config.BaseConfig; import com.freemud.sdk.api.assortment.order.config.BaseConfig;
import lombok.Data; import lombok.Data;
import java.util.List;
@Data @Data
public class OrderEditRequest extends BaseConfig { public class OrderEditRequest extends BaseConfig {
...@@ -17,8 +20,10 @@ public class OrderEditRequest extends BaseConfig { ...@@ -17,8 +20,10 @@ public class OrderEditRequest extends BaseConfig {
*/ */
private String extInfo; private String extInfo;
private List<PayItem> orderPayItem;
public OrderEditRequest(String orderId, String extInfo) { public OrderEditRequest(String orderId, String extInfo) {
this.orderId = orderId; this.orderId = orderId;
this.extInfo = extInfo; this.extInfo = extInfo;
} }
} }
package com.freemud.sdk.api.assortment.order.request.payment;
import lombok.Data;
import java.util.List;
@Data
public class CombPayRequest {
private List<PayPlatformVO> platforms;
/**
* 用户标识
*/
private String open_id;
/**
* 回调通知地址
*/
private String notify_url;
/**
* 是否需要开发票:1为需要
*/
private Integer invoice_flag;
/**
* 支付总金额,以分为单位
*/
private Long amount;
/**
* 会员支付金额,以分为单位
*/
private Long vip_amount;
/**
* 不可打折金额,以分为单位
*/
private Integer undis_amount;
/**
* 订单描述
*/
private String body;
/**
* 外部交易流水号,由上游系统生成,需保证唯一
*/
private String out_order_no;
private List<ProductVO> products;
private String goodsTag;
/**
* 商户编号(由非码提供)
*/
private String partner_id;
/**
* 商家门店号(在线支付需要提前定义)
*/
private String store_id;
/**
* 业务日期
*/
private String business_date;
/**
* 营业员编号(可以使用固定值)
*/
private String operator_id = "1";
/**
* 商家POS机编号(可以使用固定值,扫码付必传)
*/
private String station_id = "1";;
private String appId;
private String payCode;
private String payTimeOutTime;
private String ebCode;
private String cardCode;
private Boolean disable_service_goods_tag = false;
private String request_source ="V1";
private String ver ="10";
}
...@@ -8,7 +8,7 @@ import java.math.BigDecimal; ...@@ -8,7 +8,7 @@ import java.math.BigDecimal;
public class ProductVO { public class ProductVO {
private String id; private String id;
private BigDecimal quantity; private Integer quantity;
private Integer seq; private Integer seq;
private Long price; private Long price;
private String name; private String name;
......
...@@ -417,6 +417,16 @@ public class QueryOrdersResponse { ...@@ -417,6 +417,16 @@ public class QueryOrdersResponse {
private String downstreamThirdOrderCode; private String downstreamThirdOrderCode;
/**
* 发票明细
*/
private OrderInvoice orderInvoice;
/**
* 混合支付list
*/
private List<OrderPayItem> orderPayItem;
@NoArgsConstructor @NoArgsConstructor
@Data @Data
public static class AddDeliveryInfo { public static class AddDeliveryInfo {
...@@ -557,21 +567,6 @@ public class QueryOrdersResponse { ...@@ -557,21 +567,6 @@ public class QueryOrdersResponse {
private Long id; private Long id;
/** /**
* 加购人ID
*/
private String userId;
/**
* 加购人昵称
*/
private String nickName;
/**
* 加购人头像
*/
private String photoUrl;
/**
* 套餐子商品 * 套餐子商品
*/ */
public List<ProductBean> comboProduct; public List<ProductBean> comboProduct;
...@@ -768,6 +763,23 @@ public class QueryOrdersResponse { ...@@ -768,6 +763,23 @@ public class QueryOrdersResponse {
// 扩展字段 // 扩展字段
private String extInfo; private String extInfo;
} }
@NoArgsConstructor
@Data
public static class OrderPayItem {
private Long orderId;
/**
* 订单号
*/
private String orderCode;
private Integer payChannelType;
private String payChannelName;
/**
* 支付交易号
*/
private String orderPayItemCode;
private BigDecimal payAmount;
}
} }
} }
} }
...@@ -12,10 +12,14 @@ ...@@ -12,10 +12,14 @@
*/ */
package com.freemud.sdk.api.assortment.order.response.payment; package com.freemud.sdk.api.assortment.order.response.payment;
import com.freemud.application.sdk.api.ordercenter.entities.PayItem;
import lombok.Data; import lombok.Data;
import lombok.NoArgsConstructor; import lombok.NoArgsConstructor;
import lombok.ToString; import lombok.ToString;
import java.util.ArrayList;
import java.util.List;
@NoArgsConstructor @NoArgsConstructor
@Data @Data
@ToString @ToString
...@@ -59,6 +63,7 @@ public class OrderPayResponse { ...@@ -59,6 +63,7 @@ public class OrderPayResponse {
private String wxAppid; private String wxAppid;
private String orderId; private String orderId;
private List<PayItem> payItem = new ArrayList<>();
@NoArgsConstructor @NoArgsConstructor
@Data @Data
...@@ -86,4 +91,5 @@ public class OrderPayResponse { ...@@ -86,4 +91,5 @@ public class OrderPayResponse {
private String aliPayOrder; private String aliPayOrder;
} }
} }
...@@ -690,6 +690,7 @@ public class OrderCenterSdkServiceImpl implements OrderCenterSdkService { ...@@ -690,6 +690,7 @@ public class OrderCenterSdkServiceImpl implements OrderCenterSdkService {
request.setOrderCode(orderEdit.getOrderId()); request.setOrderCode(orderEdit.getOrderId());
request.setExtInfo(orderEdit.getExtInfo()); request.setExtInfo(orderEdit.getExtInfo());
request.setOrderClient(OrderClientType.SAAS.getIndex()); request.setOrderClient(OrderClientType.SAAS.getIndex());
request.setOrderPayItem(orderEdit.getOrderPayItem());
com.freemud.application.sdk.api.ordercenter.response.BaseResponse response = orderSdkService.editOrder(request, orderEdit.getTrackingNo()); com.freemud.application.sdk.api.ordercenter.response.BaseResponse response = orderSdkService.editOrder(request, orderEdit.getTrackingNo());
return orderSdkAdapter.convent2BaseOrderResponse(response); return orderSdkAdapter.convent2BaseOrderResponse(response);
} }
......
...@@ -60,7 +60,7 @@ ...@@ -60,7 +60,7 @@
<dependency> <dependency>
<artifactId>promotioncenter-sdk</artifactId> <artifactId>promotioncenter-sdk</artifactId>
<groupId>com.freemud.application.service.sdk</groupId> <groupId>com.freemud.application.service.sdk</groupId>
<version>2.6.5.SNAPSHOT</version> <version>2.3.RELEASE</version>
</dependency> </dependency>
<dependency> <dependency>
<groupId>com.freemud.sdk.api.assortment</groupId> <groupId>com.freemud.sdk.api.assortment</groupId>
...@@ -88,7 +88,7 @@ ...@@ -88,7 +88,7 @@
<dependency> <dependency>
<groupId>com.freemud.application.service.sdk</groupId> <groupId>com.freemud.application.service.sdk</groupId>
<artifactId>storecenter-sdk</artifactId> <artifactId>storecenter-sdk</artifactId>
<version>3.2.9-SNAPSHOT</version> <version>3.1.9.RELEASE</version>
</dependency> </dependency>
<dependency> <dependency>
<groupId>cn.freemud</groupId> <groupId>cn.freemud</groupId>
...@@ -315,7 +315,7 @@ ...@@ -315,7 +315,7 @@
<dependency> <dependency>
<groupId>com.freemud.application.service.sdk</groupId> <groupId>com.freemud.application.service.sdk</groupId>
<artifactId>paymentcenter-sdk</artifactId> <artifactId>paymentcenter-sdk</artifactId>
<version>2.9.2-SNAPSHOT</version> <version>2.9.RELEASE</version>
</dependency> </dependency>
<dependency> <dependency>
<groupId>com.freemud.sdk.api.assortment</groupId> <groupId>com.freemud.sdk.api.assortment</groupId>
......
...@@ -17,6 +17,7 @@ public class ResponseCodeConstant { ...@@ -17,6 +17,7 @@ public class ResponseCodeConstant {
// 电子风味卡,密码错误或者余额不足,需要特殊处理 // 电子风味卡,密码错误或者余额不足,需要特殊处理
public final static String PASSWORD_WRONG = "8200407"; public final static String PASSWORD_WRONG = "8200407";
public final static String NOT_SUFFICIENT_FUND = "8200407"; public final static String NOT_SUFFICIENT_FUND = "8200407";
public final static Integer PAYMENT_RESPONSE_SUCCESS = 200;
private final static Set<Object> successResponseCodeSet = new HashSet<>(); private final static Set<Object> successResponseCodeSet = new HashSet<>();
......
...@@ -9,6 +9,9 @@ import lombok.Data; ...@@ -9,6 +9,9 @@ import lombok.Data;
import java.util.List; import java.util.List;
import java.math.BigDecimal;
import java.util.List;
@Data @Data
public class CreatePrepayRequestDto { public class CreatePrepayRequestDto {
/** /**
...@@ -72,4 +75,13 @@ public class CreatePrepayRequestDto { ...@@ -72,4 +75,13 @@ public class CreatePrepayRequestDto {
private CreateOrderVo.UnionPayCard unionPayCard; private CreateOrderVo.UnionPayCard unionPayCard;
private List<OrderPayItemCreateReq> orderPayItemCreateReqList; private List<OrderPayItemCreateReq> orderPayItemCreateReqList;
/**
* svc支付金额
*/
private BigDecimal svcAmount;
/**
* 现金支付金额
*/
private BigDecimal cashAmount;
private String storeId;
} }
/**
* All rights Reserved, Designed By www.freemud.cn
*
* @Title: OrderPayResponseDto
* @Package cn.freemud.entities.dto
* @Description:
* @author: liming.guo
* @date: 2018/5/25 17:10
* @version V1.0
* @Copyright: 2018 www.freemud.cn Inc. All rights reserved.
* 注意:本内容仅限于上海非码科技内部传阅,禁止外泄以及用于其他的商业目
*/
package cn.freemud.entities.dto.pay;
import com.fasterxml.jackson.annotation.JsonProperty;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.ToString;
import java.util.List;
@NoArgsConstructor
@Data
@ToString
public class CombPayResponse {
private int code;
@ApiModelProperty(value = "提示信息")
private String msg;
private PayPlatforms data;
@Data
public static class PayPlatforms {
private List<PayPlatform> payPlatformResponseList;
}
@Data
static public class PayPlatform {
@ApiModelProperty(value = "app_id编号(微信使用)")
private String appId;
@ApiModelProperty(value = "支付渠道编号")
private String ebCode;
//@ApiModelProperty(value = "验签可配置")
private String sign;
@ApiModelProperty(value = "非码交易流水号")
private String fmTradeNo;
@ApiModelProperty(value = "随机字符串(微信使用)")
private String nonceStr;
@ApiModelProperty(value = "外部交易流水号,由上游系统生成,需保证唯一")
private String outOrderNo;
@ApiModelProperty(value = "包名(微信使用)")
@JsonProperty("package")
private String _package;
@ApiModelProperty(value = "支付帐号")
private String payAccount;
@ApiModelProperty(value = "签名(微信使用)")
private String paySign;
@ApiModelProperty(value = "签名类型(微信使用)")
private String paySignType;
@ApiModelProperty(value = "支付渠道描述")
private String platformDesc;
@ApiModelProperty(value = "第三方支付交易序号")
private String platformTradeNo;
@ApiModelProperty(value = "预订单编号")
private String prepayId;
@ApiModelProperty(value = "时间戳(微信使用)")
private String timestamp;
@ApiModelProperty(value = "间联单号")
private String transId;
@ApiModelProperty(value = "支付宝秘钥参数")
private String aliPayOrder;
}
}
...@@ -13,6 +13,7 @@ ...@@ -13,6 +13,7 @@
package cn.freemud.entities.vo; package cn.freemud.entities.vo;
import cn.freemud.entities.dto.UserDeliveryInfoDto; import cn.freemud.entities.dto.UserDeliveryInfoDto;
import com.freemud.application.sdk.api.ordercenter.request.create.OrderPayItemCreateReq;
import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModel;
import com.freemud.application.sdk.api.ordercenter.request.create.OrderPayItemCreateReq; import com.freemud.application.sdk.api.ordercenter.request.create.OrderPayItemCreateReq;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
...@@ -25,6 +26,8 @@ import javax.validation.Valid; ...@@ -25,6 +26,8 @@ import javax.validation.Valid;
import javax.validation.constraints.NotNull; import javax.validation.constraints.NotNull;
import javax.validation.constraints.Pattern; import javax.validation.constraints.Pattern;
import java.util.ArrayList; import java.util.ArrayList;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List; import java.util.List;
...@@ -257,6 +260,18 @@ public class CreateOrderVo { ...@@ -257,6 +260,18 @@ public class CreateOrderVo {
private UnionPayCard unionPayCard; private UnionPayCard unionPayCard;
/** /**
* 混合支付
*/
private List<OrderPayItemCreateReq> orderPayItemCreateReqList = new ArrayList<>();
/**
* svc支付金额
*/
private BigDecimal svcAmount;
/**
* 现金支付金额
*/
private BigDecimal cashAmount;
/**
* 电子风味卡 * 电子风味卡
*/ */
@Data @Data
......
...@@ -12,7 +12,7 @@ ...@@ -12,7 +12,7 @@
*/ */
package cn.freemud.service.impl; package cn.freemud.service.impl;
import cn.freemud.base.constant.Version; import cn.freemud.adapter.OrderAdapter;
import cn.freemud.base.util.DateUtil; import cn.freemud.base.util.DateUtil;
import cn.freemud.constant.ResponseCodeConstant; import cn.freemud.constant.ResponseCodeConstant;
import cn.freemud.constant.StoreConstant; import cn.freemud.constant.StoreConstant;
...@@ -27,11 +27,8 @@ import cn.freemud.manager.StoreTableNumberManager; ...@@ -27,11 +27,8 @@ import cn.freemud.manager.StoreTableNumberManager;
import cn.freemud.service.CouponService; import cn.freemud.service.CouponService;
import cn.freemud.service.adapter.OrderCheckAdapter; import cn.freemud.service.adapter.OrderCheckAdapter;
import cn.freemud.service.thirdparty.ShoppingCartClient; import cn.freemud.service.thirdparty.ShoppingCartClient;
import cn.freemud.service.thirdparty.StockClient;
import cn.freemud.utils.LogUtil; import cn.freemud.utils.LogUtil;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.TypeReference;
import com.freemud.api.assortment.datamanager.entity.db.AssortmentOpenPlatformIappWxappConfig; import com.freemud.api.assortment.datamanager.entity.db.AssortmentOpenPlatformIappWxappConfig;
import com.freemud.api.assortment.datamanager.entity.db.AssortmentOpenPlatformPartnerStoreDeliveryConfig; import com.freemud.api.assortment.datamanager.entity.db.AssortmentOpenPlatformPartnerStoreDeliveryConfig;
import com.freemud.api.assortment.datamanager.entity.vo.AssortmentCustomerInfoVo; import com.freemud.api.assortment.datamanager.entity.vo.AssortmentCustomerInfoVo;
...@@ -39,7 +36,6 @@ import com.freemud.api.assortment.datamanager.manager.AssortmentOpenPlatformIapp ...@@ -39,7 +36,6 @@ import com.freemud.api.assortment.datamanager.manager.AssortmentOpenPlatformIapp
import com.freemud.api.assortment.datamanager.manager.AssortmentOpenPlatformPartnerStoreDeliveryConfigManager; import com.freemud.api.assortment.datamanager.manager.AssortmentOpenPlatformPartnerStoreDeliveryConfigManager;
import com.freemud.api.assortment.datamanager.manager.customer.AssortmentCustomerInfoManager; import com.freemud.api.assortment.datamanager.manager.customer.AssortmentCustomerInfoManager;
import com.freemud.application.sdk.api.base.BaseResponse; import com.freemud.application.sdk.api.base.BaseResponse;
import com.freemud.application.sdk.api.couponcenter.offline.response.CouponQueryResponse;
import com.freemud.application.sdk.api.log.LogThreadLocal; import com.freemud.application.sdk.api.log.LogThreadLocal;
import com.freemud.application.sdk.api.membercenter.request.QueryReceiveAddressRequest; import com.freemud.application.sdk.api.membercenter.request.QueryReceiveAddressRequest;
import com.freemud.application.sdk.api.membercenter.request.StatisticalPropertyRequest; import com.freemud.application.sdk.api.membercenter.request.StatisticalPropertyRequest;
...@@ -47,6 +43,10 @@ import com.freemud.application.sdk.api.membercenter.response.GetSvcInfoByMemberI ...@@ -47,6 +43,10 @@ import com.freemud.application.sdk.api.membercenter.response.GetSvcInfoByMemberI
import com.freemud.application.sdk.api.membercenter.response.QueryReceiveAddressResponse; import com.freemud.application.sdk.api.membercenter.response.QueryReceiveAddressResponse;
import com.freemud.application.sdk.api.membercenter.service.MemberCenterService; import com.freemud.application.sdk.api.membercenter.service.MemberCenterService;
import com.freemud.application.sdk.api.membercenter.service.MemberPropertyService; import com.freemud.application.sdk.api.membercenter.service.MemberPropertyService;
import com.freemud.application.sdk.api.ordercenter.enums.PayChannelType;
import com.freemud.application.sdk.api.paymentcenter.client.request.SVCCardAmountRequest;
import com.freemud.application.sdk.api.paymentcenter.client.response.SVCCardAmountResponse;
import com.freemud.application.sdk.api.paymentcenter.client.service.PaymentNewService;
import com.freemud.application.sdk.api.storecenter.request.QueryDeliveryRequest; import com.freemud.application.sdk.api.storecenter.request.QueryDeliveryRequest;
import com.freemud.application.sdk.api.storecenter.request.StoreInfoRequest; import com.freemud.application.sdk.api.storecenter.request.StoreInfoRequest;
import com.freemud.application.sdk.api.storecenter.response.QueryDeliverDetailResponse; import com.freemud.application.sdk.api.storecenter.response.QueryDeliverDetailResponse;
...@@ -62,6 +62,7 @@ import org.springframework.beans.factory.annotation.Value; ...@@ -62,6 +62,7 @@ import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import java.awt.geom.Point2D; import java.awt.geom.Point2D;
import java.math.BigDecimal;
import java.text.ParseException; import java.text.ParseException;
import java.text.SimpleDateFormat; import java.text.SimpleDateFormat;
import java.util.*; import java.util.*;
...@@ -100,14 +101,15 @@ public class CheckOrder { ...@@ -100,14 +101,15 @@ public class CheckOrder {
// private OrderAdapter orderAdapter; // private OrderAdapter orderAdapter;
@Autowired @Autowired
private StoreServiceImpl storeService; private StoreServiceImpl storeService;
@Autowired
private StockClient stockClient;
@Autowired
private ItemServiceImpl itemService;
@Autowired @Autowired
private CouponService couponService; private CouponService couponService;
private static Gson gson = new Gson(); private static Gson gson = new Gson();
@Autowired
private PaymentNewService paymentNewService;
@Autowired
private OrderAdapter orderAdapter;
/** /**
* 下单会员相关校验 * 下单会员相关校验
*/ */
...@@ -782,4 +784,44 @@ public class CheckOrder { ...@@ -782,4 +784,44 @@ public class CheckOrder {
// } // }
} }
/**
* 混合支付
* @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,createOrderVo.getPayChannelType()));
createOrderVo.setPayChannelType(PayChannelType.COMB.getIndex());
createOrderVo.setCashAmount(cashAmout);
createOrderVo.setSvcAmount(svcAmounts);
return true;
}
}
return false;
}
} }
...@@ -183,7 +183,7 @@ public class OrderAdapterServiceImpl implements OrderAdapterService { ...@@ -183,7 +183,7 @@ public class OrderAdapterServiceImpl implements OrderAdapterService {
} }
try { try {
ConfirmOrderDto confirmOrderDto = orderAdapter.convent2ConfirmOrderDto(message); ConfirmOrderDto confirmOrderDto = orderAdapter.convent2ConfirmOrderDto(message);
// 通过交易号从缓存中拿订单号,如果有数据则实际订单号为其value值 // 蜜雪专用:通过交易号从缓存中拿订单号,如果有数据则实际订单号为其value值
String orderId = redisCache.getValue(RedisUtil.getPaymentTransIdOrderKey(confirmOrderDto.getOrderId())); String orderId = redisCache.getValue(RedisUtil.getPaymentTransIdOrderKey(confirmOrderDto.getOrderId()));
if (StringUtils.isNotBlank(orderId)) { if (StringUtils.isNotBlank(orderId)) {
log.info("从缓存中获取的订单数据,trackingNo:{},transId:{},orderId:{}", LogTreadLocal.getTrackingNo(), confirmOrderDto.getOrderId(), orderId); log.info("从缓存中获取的订单数据,trackingNo:{},transId:{},orderId:{}", LogTreadLocal.getTrackingNo(), confirmOrderDto.getOrderId(), orderId);
......
/**
* All rights Reserved, Designed By www.freemud.cn
*
* @Title: PaymentClient
* @Package cn.freemud.service.thirdparty
* @Description: 支付服务
* @author: liming.guo
* @date: 2018/5/12519:24
* @version V1.0
* @Copyright: 2018 www.freemud.cn Inc. All rights reserved.
* 注意:本内容仅限于上海非码科技内部传阅,禁止外泄以及用于其他的商业目
*/
package cn.freemud.service.thirdparty;
import cn.freemud.entities.dto.pay.CombPayResponse;
import com.freemud.sdk.api.assortment.order.request.payment.CombPayRequest;
import org.springframework.cloud.netflix.feign.FeignClient;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestHeader;
import org.springframework.web.bind.annotation.RequestMapping;
@FeignClient(name = "payment-center-application-api",url="${saas.paymentcenter.application.api.feign.url}")
@RequestMapping(produces = {"application/json;charset=UTF-8"})
public interface ComPayClient {
/**
* 统一下单
*/
@PostMapping("/payment/application/pay")
CombPayResponse combPay(@RequestBody CombPayRequest combPayRequest, @RequestHeader("partnerId") String partnerId);
}
package com.freemud.application.sdk.api.ordercenter.entities;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* All rights Reserved, Designed By www.freemud.cn
*
* @Title: com.freemud.application.sdk.api.ordercenter.entities PayItem
* @Description: TDO 描述....
* @author: 铁牌灵魂工程师
* @date: 2020/11/7
* @Copyright: www.freemud.cn Inc. All rights reserved.
* 注意:本内容仅限于上海非码科技内部传阅,禁止外泄以及用于其他的商业目
*/
@NoArgsConstructor
@Data
public class PayItem {
private String partnerId;
private String fmTradeNo;
private Integer payChannelType;
private String transId;
}
package com.freemud.application.sdk.api.ordercenter.enums;
import lombok.AllArgsConstructor;
import lombok.Getter;
@Getter
@AllArgsConstructor
public enum PayChannelType {
WECHAT((byte)1,"10211","微信"),
SVC((byte)2,"10102","储值卡"),
ALIPAY((byte)3,"10300","支付宝"),
COMB((byte)4,"","混合支付"),
USVCP((byte)5,"10556", "电子风味卡支付");
private Byte index;
private String ebcode;
private String name;
public static final String API_DESC = "订单支付渠道类型 1:微信 2:储值卡 3:支付宝 4:混合支付,5:电子风味卡支付";
public static PayChannelType getByIndex(byte index) {
for (PayChannelType payType : values()) {
if (payType.getIndex().equals(index)) {
return payType;
}
}
return null;
}
public static PayChannelType getByEbcode(String ebcode) {
for (PayChannelType payType : values()) {
if (payType.getEbcode().equals(ebcode)) {
return payType;
}
}
return null;
}
}
...@@ -12,8 +12,11 @@ ...@@ -12,8 +12,11 @@
*/ */
package com.freemud.application.sdk.api.ordercenter.request; package com.freemud.application.sdk.api.ordercenter.request;
import com.freemud.application.sdk.api.ordercenter.entities.PayItem;
import lombok.Data; import lombok.Data;
import java.util.List;
@Data @Data
public class UpdateOrderReq { public class UpdateOrderReq {
...@@ -24,5 +27,6 @@ public class UpdateOrderReq { ...@@ -24,5 +27,6 @@ public class UpdateOrderReq {
private String extInfo; private String extInfo;
private Integer orderClient; private Integer orderClient;
private List<PayItem> orderPayItem;
} }
package com.freemud.application.sdk.api.ordercenter.request.create; package com.freemud.application.sdk.api.ordercenter.request.create;
import lombok.Data; import lombok.Data;
import java.math.BigDecimal;
import lombok.Getter; import lombok.Getter;
import lombok.Setter; import lombok.Setter;
import lombok.ToString; import lombok.ToString;
...@@ -21,9 +23,13 @@ public class OrderPayItemCreateReq { ...@@ -21,9 +23,13 @@ public class OrderPayItemCreateReq {
private String storeId; private String storeId;
private String payChannelType; private Integer payChannelType;
private String payChannelName; private String payChannelName;
/**
* 支付渠道码
*/
private String payEbCode;
private String operator; private String operator;
......
...@@ -13,7 +13,6 @@ ...@@ -13,7 +13,6 @@
package com.freemud.application.sdk.api.ordercenter.response.orderInfo; package com.freemud.application.sdk.api.ordercenter.response.orderInfo;
import com.freemud.application.sdk.api.ordercenter.request.OrderExtendedReq; import com.freemud.application.sdk.api.ordercenter.request.OrderExtendedReq;
import com.freemud.application.sdk.api.ordercenter.request.OrderTraceInfoResp;
import lombok.Data; import lombok.Data;
import java.math.BigDecimal; import java.math.BigDecimal;
...@@ -158,7 +157,7 @@ public class OrderInfoReqs { ...@@ -158,7 +157,7 @@ public class OrderInfoReqs {
//门店订单序号 //门店订单序号
private Integer daySeq; private Integer daySeq;
//订单特殊类型 1:普通订单 2:拼团订单 3:秒杀订单 4:拼单订单 //订单特殊类型 1:普通订单 2:拼团订单 3:秒杀订单
private Integer marketingType; private Integer marketingType;
//销售类型对应的场景值 //销售类型对应的场景值
...@@ -271,4 +270,9 @@ public class OrderInfoReqs { ...@@ -271,4 +270,9 @@ public class OrderInfoReqs {
//支付渠道类型 //支付渠道类型
private String payChannelType; private String payChannelType;
/**
* 支付信息
*/
private List<OrderPayItemReqs> orderPayItemCreateReqList;
} }
package com.freemud.application.sdk.api.ordercenter.response.orderInfo;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.math.BigDecimal;
/**
* All rights Reserved, Designed By www.freemud.cn
*
* @Title: com.freemud.application.sdk.api.ordercenter.request OrderPayItemReq
* @Description: TDO 描述....
* @author: 铁牌灵魂工程师
* @date: 2020/11/5
* @Copyright: www.freemud.cn Inc. All rights reserved.
* 注意:本内容仅限于上海非码科技内部传阅,禁止外泄以及用于其他的商业目
*/
@Data
@NoArgsConstructor
public class OrderPayItemReqs {
private Long id;
private Long orderId;
/**
* 订单号
*/
private String orderCode;
/**
* 商户号
*/
private String partnerId;
/**
* 门店ID
*/
private String storeId;
/**
* 支付类型
*/
private Integer payChannelType;
private String ebCode;
private String payChannelName;
/**
* 支付交易号
*/
private String orderPayItemCode;
private BigDecimal payAmount;
}
...@@ -145,6 +145,10 @@ public class ShoppingCartGoodsResponseVo extends ShoppingCartGoodsBaseResponseV ...@@ -145,6 +145,10 @@ public class ShoppingCartGoodsResponseVo extends ShoppingCartGoodsBaseResponseV
* 麦咖啡-咖啡月卡价格 * 麦咖啡-咖啡月卡价格
*/ */
private Long payCardFee; private Long payCardFee;
/**
* svc卡支付金额
*/
private BigDecimal svcPayAmount;
private Integer version; private Integer version;
......
...@@ -1639,10 +1639,10 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService { ...@@ -1639,10 +1639,10 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService {
if (response.getData() == null || response.getData().getData() == null || response.getData().getData().getCardSimpleInfos().size() > 1) { if (response.getData() == null || response.getData().getData() == null || response.getData().getData().getCardSimpleInfos().size() > 1) {
throw new ServiceException(ResponseResult.USER_SVC_CARD_ERROR); throw new ServiceException(ResponseResult.USER_SVC_CARD_ERROR);
} }
//获取实际配送费,配送费不 //获取实际配送费
Integer deliveryAmount = 0; Integer deliveryAmount = 0;
if (StringUtils.isNotBlank(receiveId) && shoppingCartGoodsResponseVo.getDiscountDeliveryAmount() != null) { if (StringUtils.isNotBlank(receiveId) && shoppingCartGoodsResponseVo.getDiscountDeliveryAmount() != null) {
// Integer deliveryAmount = getDeliveryAmount(receiveId, partnerId, storeId); //Integer deliveryAmount = getDeliveryAmount(receiveId, partnerId, storeId);
deliveryAmount = shoppingCartGoodsResponseVo.getDiscountDeliveryAmount().intValue(); deliveryAmount = shoppingCartGoodsResponseVo.getDiscountDeliveryAmount().intValue();
orderAmount += deliveryAmount; orderAmount += deliveryAmount;
} }
...@@ -1650,15 +1650,22 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService { ...@@ -1650,15 +1650,22 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService {
Integer amount1 = response.getData().getData().getCardSimpleInfos().get(0).getAmount(); Integer amount1 = response.getData().getData().getCardSimpleInfos().get(0).getAmount();
Integer vamount = response.getData().getData().getCardSimpleInfos().get(0).getVamount(); Integer vamount = response.getData().getData().getCardSimpleInfos().get(0).getVamount();
BigDecimal svcPayAmount = BigDecimal.ZERO; BigDecimal svcPayAmount = BigDecimal.ZERO;
//本金+赠送金额
if (orderAmount > amount1 + vamount) { if (orderAmount > amount1 + vamount) {
//throw new ServiceException(ResponseResult.USER_SVC_CARD_AMOUNT_DEFICIENCY);
svcPayAmount = new BigDecimal(amount1 + vamount).divide(new BigDecimal(100)).setScale(2, BigDecimal.ROUND_HALF_UP); svcPayAmount = new BigDecimal(amount1 + vamount).divide(new BigDecimal(100)).setScale(2, BigDecimal.ROUND_HALF_UP);
shoppingCartGoodsResponseVo.setTotalAmount(orderAmount - svcPayAmount.multiply(new BigDecimal(100)).longValue()); shoppingCartGoodsResponseVo.setTotalAmount(orderAmount - svcPayAmount.multiply(new BigDecimal(100)).longValue());
}else{ }
else {
svcPayAmount = new BigDecimal(orderAmount - deliveryAmount).divide(new BigDecimal(100)).setScale(2, BigDecimal.ROUND_HALF_UP); svcPayAmount = new BigDecimal(orderAmount - deliveryAmount).divide(new BigDecimal(100)).setScale(2, BigDecimal.ROUND_HALF_UP);
shoppingCartGoodsResponseVo.setTotalAmount(deliveryAmount.longValue()); shoppingCartGoodsResponseVo.setTotalAmount(deliveryAmount.longValue());
} }
shoppingCartGoodsResponseVo.setSvcPayAmount(svcPayAmount); shoppingCartGoodsResponseVo.setSvcPayAmount(svcPayAmount);
shoppingCartGoodsResponseVo.setSvcDiscountDesc("储值卡支付¥" + svcPayAmount); shoppingCartGoodsResponseVo.setSvcDiscountDesc("储值卡支付¥" + svcPayAmount);
//BigDecimal bigDecimal = new BigDecimal(orderAmount);
//String amountStr = bigDecimal.divide(new BigDecimal(100)).setScale(2, BigDecimal.ROUND_HALF_UP).toString();
//shoppingCartGoodsResponseVo.setTotalAmount(0L);
//shoppingCartGoodsResponseVo.setSvcDiscountDesc("储值卡支付¥" + amountStr);
} }
/** /**
......
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