Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
O
order-group
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
order-group-application
order-group
Commits
3e18580c
Commit
3e18580c
authored
Apr 28, 2022
by
胡敬轩
Browse files
Options
Browse Files
Download
Plain Diff
Merge remote-tracking branch 'remotes/origin/feature/Ka2.0.76-0427-0504-多卡支付'
parents
f4a1a80f
18abe8a8
Show whitespace changes
Inline
Side-by-side
Showing
15 changed files
with
463 additions
and
144 deletions
+463
-144
assortment-ordercenter-sdk/src/main/java/com/freemud/sdk/api/assortment/order/request/payment/MultiPayRequest.java
+83
-0
order-application-service/src/main/java/cn/freemud/adapter/OrderAdapter.java
+62
-1
order-application-service/src/main/java/cn/freemud/entities/dto/order/CreatePrepayRequestDto.java
+9
-1
order-application-service/src/main/java/cn/freemud/entities/dto/pay/MultiPayResponse.java
+106
-0
order-application-service/src/main/java/cn/freemud/entities/vo/CreateOrderVo.java
+1
-1
order-application-service/src/main/java/cn/freemud/entities/vo/SellCouponCreateOrderVo.java
+1
-1
order-application-service/src/main/java/cn/freemud/service/impl/CheckOrder.java
+18
-26
order-application-service/src/main/java/cn/freemud/service/impl/OrderServiceImpl.java
+3
-36
order-application-service/src/main/java/cn/freemud/service/impl/PayServiceImpl.java
+136
-20
order-application-service/src/main/java/cn/freemud/service/impl/SellCouponOrderServiceImpl.java
+1
-1
order-application-service/src/main/java/cn/freemud/service/thirdparty/ComPayClient.java
+9
-0
ordercenter-sdk/src/main/java/com/freemud/application/sdk/api/ordercenter/request/OrderExtInfoDto.java
+1
-1
ordercenter-sdk/src/main/java/com/freemud/application/sdk/api/ordercenter/response/orderInfo/OrderPayItemResp.java
+4
-0
shopping-cart-application-service/src/main/java/cn/freemud/entities/vo/ShoppingCartInfoRequestVo.java
+6
-0
shopping-cart-application-service/src/main/java/cn/freemud/service/impl/ShoppingCartNewServiceImpl.java
+23
-56
No files found.
assortment-ordercenter-sdk/src/main/java/com/freemud/sdk/api/assortment/order/request/payment/MultiPayRequest.java
0 → 100644
View file @
3e18580c
package
com
.
freemud
.
sdk
.
api
.
assortment
.
order
.
request
.
payment
;
import
lombok.Data
;
import
java.util.List
;
@Data
public
class
MultiPayRequest
{
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
Boolean
disable_service_goods_tag
=
false
;
private
String
request_source
=
"V1"
;
private
String
ver
=
"10"
;
private
String
storeName
;
private
Long
merchantDiscount
;
/**
* @see com.freemud
* 下单所用小程序类型:1微信,2支付宝,3抖音")
*/
private
Integer
applicationType
;
//储值卡支付列表
private
List
<
String
>
cardItems
;
}
order-application-service/src/main/java/cn/freemud/adapter/OrderAdapter.java
View file @
3e18580c
...
...
@@ -77,6 +77,7 @@ import com.freemud.sdk.api.assortment.order.entities.promption.SubtractStockVO;
import
com.freemud.sdk.api.assortment.order.enums.*
;
import
com.freemud.sdk.api.assortment.order.request.order.*
;
import
com.freemud.sdk.api.assortment.order.request.payment.CombPayRequest
;
import
com.freemud.sdk.api.assortment.order.request.payment.MultiPayRequest
;
import
com.freemud.sdk.api.assortment.order.request.payment.PayPlatformVO
;
import
com.freemud.sdk.api.assortment.order.request.payment.ProductVO
;
import
com.freemud.sdk.api.assortment.order.response.order.QueryOrderByIdResponse
;
...
...
@@ -3358,6 +3359,7 @@ public class OrderAdapter {
requestDto
.
setOpenId
(
userLoginInfoDto
.
getOpenId
());
requestDto
.
setFaceCode
(
createOrderVo
.
getFaceCode
());
requestDto
.
setCardCode
(
createOrderVo
.
getCardCode
());
requestDto
.
setCardCodes
(
createOrderVo
.
getCardCodes
());
requestDto
.
setPayCode
(
null
);
requestDto
.
setFatherOrderBean
(
createOrderOperateDto
.
getFatherOrderBean
());
requestDto
.
setProductOrderBean
(
createOrderOperateDto
.
getProductOrderBean
());
...
...
@@ -3942,7 +3944,7 @@ public class OrderAdapter {
orderExtInfoDto
.
setPackageAmountCollectType
(
shoppingCartGoodsDto
.
getPackageAmountCollectType
());
}
orderExtInfoDto
.
setUnDistribution
(
createOrderVo
.
getUnDistribution
());
//
orderExtInfoDto.setUnDistribution(createOrderVo.getUnDistribution());
return
orderExtInfoDto
;
}
...
...
@@ -4031,4 +4033,63 @@ public class OrderAdapter {
return
payItems
;
}
public
MultiPayRequest
convent2MultiPayOrderRequest
(
List
<
String
>
cardCodes
,
OrderBeanV1
orderBean
,
PaymentRequest
paymentRequest
,
String
partnerPayOvertime
,
String
orderClient
,
String
channel
,
Integer
totalAmount
)
{
MultiPayRequest
orderPayDto
=
new
MultiPayRequest
();
orderPayDto
.
setEbCode
(
paymentRequest
.
getPayCode
());
orderPayDto
.
setPartner_id
(
orderBean
.
getCompanyId
());
orderPayDto
.
setBody
(
paymentRequest
.
getPrincipalName
());
orderPayDto
.
setNotify_url
(
paymentRequest
.
getReverseNotifyiDcUrl
());
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
);
orderPayDto
.
setAmount
(
totalAmount
.
longValue
());
orderPayDto
.
setVip_amount
(
0L
);
orderPayDto
.
setAppId
(
paymentRequest
.
getWxAppId
());
orderPayDto
.
setPayCode
(
paymentRequest
.
getPayCode
());
orderPayDto
.
setVer
(
"V1"
);
orderPayDto
.
setStoreName
(
orderBean
.
getShopName
());
orderPayDto
.
setPayTimeOutTime
(
StringUtils
.
defaultIfBlank
(
partnerPayOvertime
,
"30"
));
List
<
ProductVO
>
productVOS
=
new
ArrayList
<
ProductVO
>();
if
(
CollectionUtils
.
isNotEmpty
(
orderBean
.
getProductList
()))
{
for
(
ProductBeanV1
product
:
orderBean
.
getProductList
())
{
ProductVO
productBean
=
new
ProductVO
();
productBean
.
setId
(
product
.
getProductId
());
productBean
.
setQuantity
(
product
.
getNumber
());
productBean
.
setSeq
(
product
.
getSequence
());
productBean
.
setSalesType
(
"NORMAL"
);
productBean
.
setPrice
(
product
.
getPrice
());
productBean
.
setName
(
product
.
getProductName
());
productVOS
.
add
(
productBean
);
}
}
orderPayDto
.
setMerchantDiscount
(
orderBean
.
getOriginalAmount
().
longValue
()
-
orderBean
.
getAmount
());
orderPayDto
.
setProducts
(
productVOS
);
List
<
PayPlatformVO
>
platforms
=
new
ArrayList
<>();
PayPlatformVO
payPlatformVO
=
new
PayPlatformVO
();
payPlatformVO
.
setClientCode
(
PayChannelType
.
SVC
.
getEbcode
());
payPlatformVO
.
setEbcode
(
PayChannelType
.
SVC
.
getEbcode
());
payPlatformVO
.
setAmount
(
0L
);
platforms
.
add
(
payPlatformVO
);
String
ebcode
=
PayChannelType
.
getByIndex
(
Byte
.
parseByte
(
channel
)).
getEbcode
();
payPlatformVO
=
new
PayPlatformVO
();
payPlatformVO
.
setAmount
(
0L
);
payPlatformVO
.
setClientCode
(
orderClient
);
payPlatformVO
.
setEbcode
(
ebcode
);
platforms
.
add
(
payPlatformVO
);
orderPayDto
.
setPlatforms
(
platforms
);
orderPayDto
.
setOut_order_no
(
orderBean
.
getOid
());
orderPayDto
.
setCardItems
(
cardCodes
);
//多卡支付
orderPayDto
.
setApplicationType
(
getPayApplicationType
(
orderBean
.
getOrderClient
()));
return
orderPayDto
;
}
}
order-application-service/src/main/java/cn/freemud/entities/dto/order/CreatePrepayRequestDto.java
View file @
3e18580c
...
...
@@ -7,6 +7,8 @@ import com.freemud.application.sdk.api.ordercenter.enums.OrderClientType;
import
com.freemud.application.sdk.api.ordercenter.request.OrderExtInfoDto
;
import
lombok.Data
;
import
java.util.List
;
@Data
public
class
CreatePrepayRequestDto
{
/**
...
...
@@ -26,9 +28,15 @@ public class CreatePrepayRequestDto {
*/
private
String
faceCode
;
/**
* 会员卡code
* 会员卡code
储值卡
*/
private
String
cardCode
;
/**
* 储值卡
*/
private
List
<
String
>
cardCodes
;
/**
* 支付渠道码
*/
...
...
order-application-service/src/main/java/cn/freemud/entities/dto/pay/MultiPayResponse.java
0 → 100644
View file @
3e18580c
/**
* 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
MultiPayResponse
{
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
fmTradeNo
;
@ApiModelProperty
(
value
=
"随机字符串(微信使用)"
)
private
String
nonceStr
;
@ApiModelProperty
(
value
=
"外部交易流水号,由上游系统生成,需保证唯一"
)
private
String
outOrderNo
;
@ApiModelProperty
(
value
=
"第三方支付交易序号"
)
private
String
platformTradeNo
;
@ApiModelProperty
(
value
=
"支付金额"
)
private
Integer
payAmount
;
@ApiModelProperty
(
value
=
"间联单号"
)
private
String
transId
;
//商户单号
private
String
endTransTradeNo
;
//储值卡类型:0一次性卡(礼品卡),3重复使用卡(储值卡)")
private
Integer
cardType
;
@ApiModelProperty
(
value
=
""
)
private
PayOrderBean
payOrder
;
//卡号 多卡支付multiPay接口返回
private
String
cardCode
;
@Data
public
static
class
PayOrderBean
{
/**
* appid : wx3ab08e23966343fe
* package : prepay_id=wx25143630149413bcd9fbad100070370076
* nonce_str : -610630281
* sign : D320B2B74D858EBE16841F43AE70E757
* timestamp : 1527230190
* signType : MD5
*/
private
String
appId
;
@JsonProperty
(
"package"
)
private
String
packageX
;
//@JsonProperty("nonce_str")
private
String
nonceStr
;
/**
* 支付签名
*/
private
String
paySign
;
private
String
timeStamp
;
/**
* 加密方式
*/
private
String
signType
;
private
String
aliPayOrder
;
}
}
}
order-application-service/src/main/java/cn/freemud/entities/vo/CreateOrderVo.java
View file @
3e18580c
...
...
@@ -290,7 +290,7 @@ public class CreateOrderVo {
*
* 1 表示不分账 ,其他情况 不传值 给基础服务
*/
private
Integer
unDistribution
;
//
private Integer unDistribution;
/**
* 是否使用电子风味卡,如果不为空则为使用
...
...
order-application-service/src/main/java/cn/freemud/entities/vo/SellCouponCreateOrderVo.java
View file @
3e18580c
...
...
@@ -64,7 +64,7 @@ public class SellCouponCreateOrderVo {
* <p>
* 1 表示不分账 ,其他情况 不传值 给基础服务
*/
private
Integer
unDistribution
;
//
private Integer unDistribution;
/**
...
...
order-application-service/src/main/java/cn/freemud/service/impl/CheckOrder.java
View file @
3e18580c
...
...
@@ -190,13 +190,13 @@ public class CheckOrder {
}
//校验会员svc卡信息
List
<
GetSvcInfoByMemberIdResponseVo
>
memberCardCode
=
checkCardCode
(
createOrderVo
.
getPartnerId
(),
userLoginInfoDto
.
getMemberId
(),
cardCodes
);
if
(
CollectionUtils
.
isNotEmpty
(
memberCardCode
))
{
// 【华莱士】【订单C端记录不分账的卡面编号】不让走分账,卡面编号--11840,11845,11846,11853,11854,11855,11857,11858,11859,11860,11861,11862,11863,11864,11865,11866,11906
long
count
=
memberCardCode
.
stream
().
filter
(
card
->
cardCodes
.
contains
(
card
.
getCardCode
())
&&
unDistributions
.
contains
(
card
.
getApplyId
())).
count
();
if
(
count
>
0
)
{
createOrderVo
.
setUnDistribution
(
1
);
}
}
//
if (CollectionUtils.isNotEmpty(memberCardCode)) {
//
// 【华莱士】【订单C端记录不分账的卡面编号】不让走分账,卡面编号--11840,11845,11846,11853,11854,11855,11857,11858,11859,11860,11861,11862,11863,11864,11865,11866,11906
//
long count = memberCardCode.stream().filter(card -> cardCodes.contains(card.getCardCode()) && unDistributions.contains(card.getApplyId())).count();
//
if (count > 0) {
//
createOrderVo.setUnDistribution(1);
//
}
//
}
createOrderVo
.
setUserId
(
userLoginInfoDto
.
getMemberId
());
return
userLoginInfoDto
;
}
...
...
@@ -205,13 +205,13 @@ public class CheckOrder {
if
(
StringUtils
.
isNotBlank
(
requestVo
.
getCardCode
()))
{
//校验会员svc卡信息
List
<
GetSvcInfoByMemberIdResponseVo
>
memberCardCode
=
checkCardCode
(
partnerId
,
memberId
,
Sets
.
newHashSet
(
requestVo
.
getCardCode
()));
if
(
CollectionUtils
.
isNotEmpty
(
memberCardCode
))
{
// 【华莱士】【订单C端记录不分账的卡面编号】不让走分账,卡面编号--11840,11845,11846,11853,11854,11855,11857,11858,11859,11860,11861,11862,11863,11864,11865,11866,11906
long
count
=
memberCardCode
.
stream
().
filter
(
card
->
Sets
.
newHashSet
(
requestVo
.
getCardCode
()).
contains
(
card
.
getCardCode
())
&&
unDistributions
.
contains
(
card
.
getApplyId
())).
count
();
if
(
count
>
0
)
{
requestVo
.
setUnDistribution
(
1
);
}
}
//
if (CollectionUtils.isNotEmpty(memberCardCode)) {
//
// 【华莱士】【订单C端记录不分账的卡面编号】不让走分账,卡面编号--11840,11845,11846,11853,11854,11855,11857,11858,11859,11860,11861,11862,11863,11864,11865,11866,11906
//
long count = memberCardCode.stream().filter(card -> Sets.newHashSet(requestVo.getCardCode()).contains(card.getCardCode()) && unDistributions.contains(card.getApplyId())).count();
//
if (count > 0) {
//
requestVo.setUnDistribution(1);
//
}
//
}
}
}
...
...
@@ -1252,20 +1252,12 @@ public class CheckOrder {
||
responseDTO
.
getData
().
size
()
==
0
)
{
throw
new
ServiceException
(
ResponseResult
.
USER_SVC_CARD_ERROR
);
}
//svc卡无效
boolean
b
=
true
;
for
(
GetSvcInfoByMemberIdResponseVo
getSvcInfoByMemberIdResponse
:
responseDTO
.
getData
())
{
for
(
String
cardCode
:
cardCodes
){
if
(
cardCode
.
equals
(
getSvcInfoByMemberIdResponse
.
getCardCode
())
&&
getSvcInfoByMemberIdResponse
.
getStatusFlag
()
==
0
)
{
b
=
false
;
break
;
}
}
}
if
(
b
)
{
List
<
GetSvcInfoByMemberIdResponseVo
>
memberDatas
=
responseDTO
.
getData
().
stream
().
filter
(
data
->
data
.
getStatusFlag
()
==
0
).
collect
(
Collectors
.
toList
());
Set
<
String
>
memberCardCodes
=
memberDatas
.
stream
().
map
(
GetSvcInfoByMemberIdResponseVo
::
getCardCode
).
collect
(
Collectors
.
toSet
());
if
(!
memberCardCodes
.
containsAll
(
cardCodes
)){
throw
new
ServiceException
(
ResponseResult
.
USER_SVC_CARD_ERROR
);
}
return
responseDTO
.
getData
()
;
return
memberDatas
;
}
public
void
checkOrderByStore
(
StoreResponseDto
storeResponseDto
)
{
...
...
order-application-service/src/main/java/cn/freemud/service/impl/OrderServiceImpl.java
View file @
3e18580c
...
...
@@ -393,40 +393,6 @@ public class OrderServiceImpl implements Orderservice {
if
(!
PayStatus
.
NOT_PAY
.
getCode
().
equals
(
orderBean
.
getPayStatus
())
||
!
NewOrderStatus
.
PENDING_PAYMENT
.
getIndex
().
equals
(
orderBean
.
getStatusV2
()))
{
return
sendPaySuccessNoticeMessage
();
}
//若该订单使用了优惠券,则移除卡包,移除失败也不退款,现在支付成功个调用核销,无需调用此功能
// couponActivityService.callbackNotify(orderBean);
try
{
//美团POS需求,混合支付(现金+储值卡)时,储值卡的交易流水号在预支付时是没有的,导致订单里没有储值卡的流水号,这里查一下支付信息,将储值卡的流水号信息更新到订单信息里
List
<
OrderPayItemResp
>
payItem
=
orderBean
.
getOrderPayItem
();
if
(
CollectionUtils
.
isNotEmpty
(
payItem
)
&&
payItem
.
size
()
>
1
)
{
MultiQueryRequest
queryPay
=
new
MultiQueryRequest
();
queryPay
.
setPartnerId
(
Integer
.
valueOf
(
partnerId
));
queryPay
.
setStoreId
(
storeId
);
queryPay
.
setOutOrderNo
(
orderBean
.
getOid
());
MultiQueryRespDto
payResponse
=
comPayClient
.
paymentApplicationQuery
(
queryPay
,
Integer
.
valueOf
(
partnerId
));
if
(
null
!=
payResponse
&&
null
!=
payResponse
.
getData
()
&&
CollectionUtils
.
isNotEmpty
(
payResponse
.
getData
().
getQueryList
()))
{
List
<
MultiPaymentRespDto
>
payList
=
payResponse
.
getData
().
getQueryList
();
// 和订单里的匹配
payList
.
forEach
(
pay
->
{
payItem
.
forEach
(
item
->
{
if
(
item
.
getTransId
().
equals
(
pay
.
getTransId
()))
{
item
.
setFmTradeNo
(
pay
.
getFmTradeNo
());
item
.
setOutOrderNo
(
pay
.
getOutOrderNo
());
}
});
});
// 更新订单信息
OrderEditRequest
editReq
=
new
OrderEditRequest
(
orderBean
.
getOid
(),
orderBean
.
getExtInfo
(),
orderBean
.
getCompanyId
());
editReq
.
setPayChannel
(
PayChannelType
.
COMB
.
getEbcode
());
editReq
.
setPayChannelName
(
PayChannelType
.
COMB
.
getName
());
editReq
.
setPayChannelType
(
PayChannelType
.
COMB
.
getIndex
());
editReq
.
setOrderPayItem
(
payItem
);
orderCenterSdkService
.
orderEdit
(
editReq
);
}
}
}
catch
(
Exception
ignored
)
{
}
//这个异常catch住,不影响业务流程
String
takeCode
;
String
daySeq
;
...
...
@@ -2546,6 +2512,7 @@ public class OrderServiceImpl implements Orderservice {
private
void
preSetPayChannelType
(
BaseCreateOrderRequest
request
,
CreateOrderVo
createOrderVo
)
{
Long
amount
=
request
.
getAmount
();
String
cardCode
=
createOrderVo
.
getCardCode
();
List
<
String
>
cardCodes
=
createOrderVo
.
getCardCodes
();
CreateOrderUnionPayCardVo
unionPayCard
=
createOrderVo
.
getUnionPayCard
();
if
(
amount
>
0
)
{
PayChannelType
channelType
=
null
;
...
...
@@ -2553,7 +2520,7 @@ public class OrderServiceImpl implements Orderservice {
if
(
Objects
.
nonNull
(
unionPayCard
))
{
channelType
=
PayChannelType
.
USVCP
;
this
.
setPrePayChannel
(
request
,
channelType
);
}
else
if
(
StringUtils
.
isNotBlank
(
cardCode
))
{
}
else
if
(
StringUtils
.
isNotBlank
(
cardCode
)
||
CollectionUtils
.
isNotEmpty
(
cardCodes
)
)
{
// 储值卡支付
channelType
=
PayChannelType
.
SVC
;
this
.
setPrePayChannel
(
request
,
channelType
);
...
...
@@ -2632,7 +2599,7 @@ public class OrderServiceImpl implements Orderservice {
orderExtInfoDto
.
setPackageAmountCollectType
(
shoppingCartGoodsDto
.
getPackageAmountCollectType
());
}
orderExtInfoDto
.
setUnDistribution
(
createOrderVo
.
getUnDistribution
());
//
orderExtInfoDto.setUnDistribution(createOrderVo.getUnDistribution());
return
orderExtInfoDto
;
}
...
...
order-application-service/src/main/java/cn/freemud/service/impl/PayServiceImpl.java
View file @
3e18580c
...
...
@@ -66,6 +66,7 @@ import com.freemud.sdk.api.assortment.order.request.order.MultiOrderRefundReques
import
com.freemud.sdk.api.assortment.order.request.order.OrderEditRequest
;
import
com.freemud.sdk.api.assortment.order.request.order.PaymentRequest
;
import
com.freemud.sdk.api.assortment.order.request.payment.CombPayRequest
;
import
com.freemud.sdk.api.assortment.order.request.payment.MultiPayRequest
;
import
com.freemud.sdk.api.assortment.order.response.order.MultiOrderRefundResponse
;
import
com.google.common.collect.Lists
;
import
org.apache.commons.collections4.CollectionUtils
;
...
...
@@ -161,7 +162,13 @@ public class PayServiceImpl {
PaymentRequest
paymentRequest
=
orderBodyConvertToPaymentBody
(
createPrepayRequestDto
.
getOpenId
(),
createPrepayRequestDto
.
getPartnerId
(),
createPrepayRequestDto
.
getWxAppId
(),
createPrepayRequestDto
.
getPayCode
());
long
totalAmount
=
createPrepayRequestDto
.
getTotalAmount
();
String
cardCode
=
createPrepayRequestDto
.
getCardCode
();
// String cardCode = createPrepayRequestDto.getCardCode();
List
<
String
>
cardCodes
=
new
ArrayList
<>();
if
(
CollectionUtils
.
isNotEmpty
(
createPrepayRequestDto
.
getCardCodes
())){
cardCodes
=
createPrepayRequestDto
.
getCardCodes
();
}
else
if
(
StringUtils
.
isNotBlank
(
createPrepayRequestDto
.
getCardCode
())){
cardCodes
.
add
(
createPrepayRequestDto
.
getCardCode
());
}
String
transId
=
createPrepayRequestDto
.
getTransId
();
if
(
totalAmount
<
0
)
{
throw
new
ServiceException
(
ResponseResult
.
PAY_AMOUNT_ERROR
);
...
...
@@ -171,13 +178,15 @@ public class PayServiceImpl {
// } else if (totalAmount > 0 && StringUtils.isNotBlank(createPrepayRequestDto.getFaceCode())) {
//扫脸支付
// orderPayResponse = facePay(createPrepayRequestDto.getFaceCode(), createPrepayRequestDto.getProductOrderBean(), paymentRequest, LogThreadLocal.getTrackingNo());
}
else
if
(
totalAmount
>
0
&&
StringUtils
.
isBlank
(
cardCode
))
{
}
else
if
(
totalAmount
>
0
&&
CollectionUtils
.
isEmpty
(
cardCodes
))
{
//现金线上支付
// String partnerPayOvertime = this.getPartnerPayOvertime(createPrepayRequestDto.getPartnerId());
orderPayResponse
=
getPreOrderPay
(
createPrepayRequestDto
.
getFatherOrderBean
(),
paymentRequest
,
createPrepayRequestDto
.
getCardAmount
(),
transId
,
createPrepayRequestDto
.
getOrderExtInfoDTO
());
}
else
if
(
totalAmount
>
0
&&
StringUtils
.
isNotBlank
(
cardCode
))
{
}
else
if
(
totalAmount
>
0
&&
CollectionUtils
.
isNotEmpty
(
cardCodes
))
{
//混合支付+svc卡(礼品卡)
orderPayResponse
=
switchSvcOrComb
(
totalAmount
,
cardCode
,
createPrepayRequestDto
.
getFatherOrderBean
(),
paymentRequest
,
transId
,
createPrepayRequestDto
.
getChannel
());
// orderPayResponse = switchSvcOrComb(totalAmount, cardCode, createPrepayRequestDto.getFatherOrderBean(), paymentRequest, transId, createPrepayRequestDto.getChannel());
//多卡混合支付
orderPayResponse
=
multiPay
(
cardCodes
,
createPrepayRequestDto
.
getFatherOrderBean
(),
paymentRequest
,
(
int
)
totalAmount
,
createPrepayRequestDto
.
getChannel
());
}
else
{
// 0元订单如果不需要支付,自定义支付单号
orderPayResponse
=
getOrderPayResponse
(
paymentRequest
,
createPrepayRequestDto
.
getFatherOrderBean
());
...
...
@@ -187,7 +196,7 @@ public class PayServiceImpl {
}
}
if
(
orderPayResponse
==
null
||
Objects
.
isNull
(
orderPayResponse
.
getFmId
()))
{
BaseResponse
baseResponse
=
failPreOrderPay
(
LogThreadLocal
.
getTrackingNo
(),
createPrepayRequestDto
.
getProductOrderBean
(),
cardCode
,
createPrepayRequestDto
.
getOrderClient
(),
BaseResponse
baseResponse
=
failPreOrderPay
(
LogThreadLocal
.
getTrackingNo
(),
createPrepayRequestDto
.
getProductOrderBean
(),
cardCode
s
,
createPrepayRequestDto
.
getOrderClient
(),
Objects
.
isNull
(
orderPayResponse
)
?
null
:
orderPayResponse
.
getMsg
());
// 电子风味卡需要给用户特殊的返回
if
(
totalAmount
>
0
&&
Objects
.
nonNull
(
createPrepayRequestDto
.
getUnionPayCard
()))
{
...
...
@@ -199,22 +208,22 @@ public class PayServiceImpl {
throw
new
ServiceException
(
baseResponse
.
getCode
(),
baseResponse
.
getMessage
());
}
createOrderResponse
=
orderAdapter
.
convent2CreateFatherSonOrderResponseVo
(
orderPayResponse
,
createPrepayRequestDto
.
getProductOrderBean
());
//更新订单支付信息
if
(
StringUtils
.
isNotBlank
(
cardCode
))
{
if
(
Objects
.
nonNull
(
createPrepayRequestDto
.
getOrderExtInfoDTO
()))
{
createPrepayRequestDto
.
getOrderExtInfoDTO
().
setCardCode
(
cardCode
);
}
else
{
OrderExtInfoDto
dto
=
new
OrderExtInfoDto
();
dto
.
setCardCode
(
cardCode
);
createPrepayRequestDto
.
setOrderExtInfoDTO
(
dto
);
}
}
//更新订单支付信息
多卡支付有多个卡号,不用拓展字段了
//
if (StringUtils.isNotBlank(cardCode)) {
//
if (Objects.nonNull(createPrepayRequestDto.getOrderExtInfoDTO())) {
//
createPrepayRequestDto.getOrderExtInfoDTO().setCardCode(cardCode);
//
}else {
//
OrderExtInfoDto dto = new OrderExtInfoDto();
//
dto.setCardCode(cardCode);
//
createPrepayRequestDto.setOrderExtInfoDTO(dto);
//
}
//
}
BaseResponse
baseEditResponse
=
this
.
updateOrderInfo
(
orderPayResponse
,
createPrepayRequestDto
.
getOrderExtInfoDTO
(),
createPrepayRequestDto
.
getProductOrderBean
(),
LogThreadLocal
.
getTrackingNo
());
if
(
baseEditResponse
!=
null
)
{
throw
new
ServiceException
(
baseEditResponse
.
getCode
(),
baseEditResponse
.
getMessage
());
}
if
(
totalAmount
>
0
&&
StringUtils
.
isBlank
(
cardCode
)
&&
Objects
.
isNull
(
createPrepayRequestDto
.
getUnionPayCard
()))
{
if
(
totalAmount
>
0
&&
CollectionUtils
.
isEmpty
(
cardCodes
)
&&
Objects
.
isNull
(
createPrepayRequestDto
.
getUnionPayCard
()))
{
createOrderResponse
.
setPaySuccess
(
false
);
}
else
if
(
orderPayResponse
.
getPayChannelType
()
!=
null
&&
PayChannelType
.
COMB
.
getEbcode
().
equals
(
orderPayResponse
.
getPayChannelType
().
getEbcode
()))
{
createOrderResponse
.
setPaySuccess
(
false
);
...
...
@@ -1019,11 +1028,13 @@ public class PayServiceImpl {
//混合支付项
if
(
CollectionUtils
.
isNotEmpty
(
orderPayResponse
.
getPayItem
()))
{
orderEditRequest
.
setOrderPayItem
(
orderPayResponse
.
getPayItem
());
if
(
orderPayResponse
.
getPayItem
().
size
()
==
2
)
{
//混合支付已经处理好PayChannelType了
/*if (orderPayResponse.getPayItem().size() == 2) {
orderEditRequest.setPayChannel(PayChannelType.COMB.getEbcode());
orderEditRequest.setPayChannelName(PayChannelType.COMB.getName());
orderEditRequest.setPayChannelType(PayChannelType.COMB.getIndex());
}
}
*/
}
UpdateOrderReq
updateOrderReq
=
new
UpdateOrderReq
();
...
...
@@ -1088,7 +1099,7 @@ public class PayServiceImpl {
/**
* 支付失败处理
*/
private
BaseResponse
failPreOrderPay
(
String
trackingNo
,
OrderBeanV1
orderBean
,
String
cardCode
,
OrderClientType
orderClient
,
String
msg
)
{
private
BaseResponse
failPreOrderPay
(
String
trackingNo
,
OrderBeanV1
orderBean
,
List
<
String
>
cardCodes
,
OrderClientType
orderClient
,
String
msg
)
{
List
<
OrderClientType
>
notCancelOrderClientList
=
Lists
.
newArrayList
(
OrderClientType
.
APP
);
if
(!
notCancelOrderClientList
.
contains
(
orderClient
))
{
//失败冲正库存,冲正活动库存,取消订单
...
...
@@ -1121,7 +1132,7 @@ public class PayServiceImpl {
orderQueueService
.
backOrdersStatusChange
(
orderBean
.
getOid
(),
orderBean
.
getStatus
(),
PayStatusEnum
.
NOT_PAY
.
getCode
());
}
//svc 卡支付失败
if
(
StringUtils
.
isNotBlank
(
cardCode
))
{
if
(
CollectionUtils
.
isNotEmpty
(
cardCodes
))
{
return
ResponseUtil
.
error
(
ResponseResultEnum
.
PAY_BACKEND_CONFIG_ERROR
.
getCode
(),
StringUtils
.
isNotBlank
(
msg
)
?
msg
:
ResponseResultEnum
.
PAY_BACKEND_CONFIG_ERROR
.
getMessage
(),
null
);
}
return
ResponseUtil
.
error
(
ResponseResultEnum
.
PAY_UNIFIED_ORDER_ERROR
.
getCode
(),
ResponseResultEnum
.
PAY_UNIFIED_ORDER_ERROR
.
getMessage
(),
null
);
...
...
@@ -1535,4 +1546,109 @@ public class PayServiceImpl {
}
/**
* 创建多卡支付
*/
public
OrderPayResponse
multiPay
(
List
<
String
>
cardNos
,
OrderBeanV1
orderBean
,
PaymentRequest
paymentRequest
,
Integer
totalAmount
,
String
channel
)
{
// 统一走多卡支付Ka2.0.76-0427-0504
String
partnerPayOvertime
=
this
.
getPartnerPayOvertime
(
orderBean
.
getCompanyId
());
String
storeId
=
orderBean
.
getShopId
();
String
ebCode
=
this
.
getPayCodeByChanel
(
paymentRequest
.
getWxAppId
(),
channel
,
storeId
);
OrderPayResponse
orderPayResponse
=
new
OrderPayResponse
();
if
(
StringUtils
.
isBlank
(
ebCode
))
{
orderPayResponse
.
setMsg
(
"请先联系相关人员配置商户对应的支付渠道"
);
return
orderPayResponse
;
}
MultiPayRequest
combPayRequest
=
orderAdapter
.
convent2MultiPayOrderRequest
(
cardNos
,
orderBean
,
paymentRequest
,
partnerPayOvertime
,
ebCode
,
channel
,
totalAmount
);
MultiPayResponse
multiPayResponse
=
comPayClient
.
multiPay
(
combPayRequest
,
combPayRequest
.
getPartner_id
());
if
(
multiPayResponse
==
null
||
!
ResponseCodeConstant
.
PAYMENT_RESPONSE_SUCCESS
.
equals
(
multiPayResponse
.
getCode
()))
{
orderPayResponse
.
setMsg
(
multiPayResponse
!=
null
?
"支付:"
+
multiPayResponse
.
getMsg
()
:
"混合支付忙不过来啦,请稍后再试"
);
return
orderPayResponse
;
}
List
<
MultiPayResponse
.
PayPlatform
>
payPlatforms
=
multiPayResponse
.
getData
().
getPayPlatformResponseList
();
if
(
payPlatforms
.
size
()
==
0
)
{
orderPayResponse
.
setMsg
(
"混合支付:生成预支付失败"
);
return
orderPayResponse
;
}
orderPayResponse
.
setWxAppid
(
paymentRequest
.
getWxAppId
());
orderPayResponse
.
setOpenId
(
paymentRequest
.
getOpenId
());
orderPayResponse
.
setPartnerId
(
orderBean
.
getCompanyId
());
orderPayResponse
.
setOrderId
(
orderBean
.
getOid
());
orderPayResponse
.
setMsg
(
"success"
);
orderPayResponse
.
setPayId
(
""
);
MultiPayResponse
.
PayPlatform
cashPay
=
null
;
boolean
allCardPay
=
true
;
//是否纯储值卡支付
for
(
MultiPayResponse
.
PayPlatform
pt
:
payPlatforms
)
{
if
(!
PayChannelType
.
SVC
.
getEbcode
().
equals
(
pt
.
getEbCode
()))
{
cashPay
=
pt
;
allCardPay
=
false
;
}
else
{
SvcPayItem
payItem
=
new
SvcPayItem
();
payItem
.
setCardCode
(
pt
.
getCardCode
());
payItem
.
setSvcTransId
(
pt
.
getPlatformTradeNo
());
payItem
.
setTransId
(
pt
.
getTransId
());
if
(
CollectionUtils
.
isEmpty
(
orderPayResponse
.
getSvcPayItems
())){
List
<
SvcPayItem
>
svcPayItems
=
new
ArrayList
<>();
svcPayItems
.
add
(
payItem
);
orderPayResponse
.
setSvcPayItems
(
svcPayItems
);
}
else
{
orderPayResponse
.
getSvcPayItems
().
add
(
payItem
);
}
}
orderPayResponse
.
setFmId
(
pt
.
getTransId
());
orderPayResponse
.
setPayTransId
(
pt
.
getTransId
());
PayChannelType
payChannelType
=
PayChannelType
.
getByEbcode
(
pt
.
getEbCode
());
if
(
pt
.
getCardType
()
!=
null
&&
pt
.
getCardType
()
==
0
)
{
payChannelType
=
PayChannelType
.
GIFTCARD
;
}
orderPayResponse
.
setPayChannelType
(
payChannelType
);
orderPayResponse
.
setPayEbcode
(
pt
.
getEbCode
());
OrderPayItemResp
payItem
=
new
OrderPayItemResp
();
payItem
.
setFmTradeNo
(
pt
.
getFmTradeNo
());
payItem
.
setStoreId
(
storeId
);
payItem
.
setPayChannelType
(
payChannelType
.
getIndex
().
intValue
());
payItem
.
setPayChannelName
(
payChannelType
.
getName
());
payItem
.
setTransId
(
pt
.
getTransId
());
payItem
.
setPartnerId
(
combPayRequest
.
getPartner_id
());
payItem
.
setPayAmount
(
new
BigDecimal
(
pt
.
getPayAmount
()));
payItem
.
setCardCode
(
pt
.
getCardCode
());
orderPayResponse
.
getPayItem
().
add
(
payItem
);
MultiPayResponse
.
PayPlatform
.
PayOrderBean
payOrderBean
=
pt
.
getPayOrder
();
if
(
null
!=
payOrderBean
)
{
OrderPayResponse
.
PayOrderBean
payBean
=
new
OrderPayResponse
.
PayOrderBean
();
payBean
.
setAppid
(
payOrderBean
.
getAppId
());
payBean
.
setNonceStr
(
payOrderBean
.
getNonceStr
());
payBean
.
setPackageX
(
payOrderBean
.
getPackageX
());
payBean
.
setSign
(
payOrderBean
.
getPaySign
());
payBean
.
setSignType
(
payOrderBean
.
getSignType
());
payBean
.
setTimestamp
(
payOrderBean
.
getTimeStamp
());
payBean
.
setAliPayOrder
(
payOrderBean
.
getAliPayOrder
());
orderPayResponse
.
setPayOrder
(
payBean
);
}
}
if
(!
allCardPay
)
{
orderPayResponse
.
setPayChannelType
(
PayChannelType
.
COMB
);
}
//现金线上支付
if
(
cashPay
!=
null
)
{
String
transId
=
cashPay
.
getTransId
();
orderPayResponse
.
setFmId
(
cashPay
.
getFmTradeNo
());
orderPayResponse
.
setEndTransId
(
cashPay
.
getEndTransTradeNo
());
redisCache
.
save
(
RedisUtil
.
getPaymentTransIdOrderKey
(
transId
),
orderBean
.
getOid
(),
1L
,
TimeUnit
.
DAYS
);
//加入轮训队列
putDelMq
(
orderBean
.
getCompanyId
(),
storeId
,
orderPayResponse
.
getFmId
(),
orderBean
.
getOid
(),
PayChannelType
.
getByEbcode
(
transId
).
getIndex
().
intValue
());
}
return
orderPayResponse
;
}
}
order-application-service/src/main/java/cn/freemud/service/impl/SellCouponOrderServiceImpl.java
View file @
3e18580c
...
...
@@ -464,7 +464,7 @@ public class SellCouponOrderServiceImpl implements OrderFactoryService {
orderExtInfoDto
.
setSessionKey
(
userLoginInfoDto
.
getSessionKey
());
orderExtInfoDto
.
setFormId
(
requestVo
.
getFormId
());
orderExtInfoDto
.
setFromAppId
(
userLoginInfoDto
.
getWxAppId
());
orderExtInfoDto
.
setUnDistribution
(
requestVo
.
getUnDistribution
());
//
orderExtInfoDto.setUnDistribution(requestVo.getUnDistribution());
createPrepayRequestDto
.
setOrderExtInfoDTO
(
orderExtInfoDto
);
if
(
StringUtils
.
isNotBlank
(
requestVo
.
getCardCode
())
||
createPrepayRequestDto
.
getTotalAmount
()
==
0
)
{
return
ResponseUtil
.
success
(
payService
.
createPrepayOrder
(
createPrepayRequestDto
));
...
...
order-application-service/src/main/java/cn/freemud/service/thirdparty/ComPayClient.java
View file @
3e18580c
...
...
@@ -16,9 +16,11 @@ package cn.freemud.service.thirdparty;
import
cn.freemud.annotations.LogIgnoreFeign
;
import
cn.freemud.constant.ResponseCodeKeyConstant
;
import
cn.freemud.entities.dto.pay.CombPayResponse
;
import
cn.freemud.entities.dto.pay.MultiPayResponse
;
import
cn.freemud.entities.dto.pay.MultiQueryRequest
;
import
cn.freemud.entities.dto.pay.MultiQueryRespDto
;
import
com.freemud.sdk.api.assortment.order.request.payment.CombPayRequest
;
import
com.freemud.sdk.api.assortment.order.request.payment.MultiPayRequest
;
import
org.springframework.cloud.openfeign.FeignClient
;
import
org.springframework.web.bind.annotation.PostMapping
;
import
org.springframework.web.bind.annotation.RequestBody
;
...
...
@@ -44,4 +46,11 @@ public interface ComPayClient {
@PostMapping
(
"/payment/application/query"
)
MultiQueryRespDto
paymentApplicationQuery
(
@RequestBody
MultiQueryRequest
multiQueryRequest
,
@RequestHeader
(
"partnerId"
)
Integer
partnerId
);
/**
* 多卡支付统一下单
*/
@LogIgnoreFeign
(
logMessage
=
"multiPay"
,
messageFieldName
=
ResponseCodeKeyConstant
.
MSG
)
@PostMapping
(
"/payment/application/multiPay"
)
MultiPayResponse
multiPay
(
@RequestBody
MultiPayRequest
multiPayRequest
,
@RequestHeader
(
"partnerId"
)
String
partnerId
);
}
ordercenter-sdk/src/main/java/com/freemud/application/sdk/api/ordercenter/request/OrderExtInfoDto.java
View file @
3e18580c
...
...
@@ -214,7 +214,7 @@ public class OrderExtInfoDto {
*
* 1 表示不分账 ,其他情况 不传值 给基础服务
*/
private
Integer
unDistribution
;
//
private Integer unDistribution;
/**
...
...
ordercenter-sdk/src/main/java/com/freemud/application/sdk/api/ordercenter/response/orderInfo/OrderPayItemResp.java
View file @
3e18580c
...
...
@@ -38,4 +38,7 @@ public class OrderPayItemResp {
* 支付交易号
*/
private
String
orderPayItemCode
;
//卡号 多卡支付multiPay接口返回
private
String
cardCode
;
}
\ No newline at end of file
shopping-cart-application-service/src/main/java/cn/freemud/entities/vo/ShoppingCartInfoRequestVo.java
View file @
3e18580c
...
...
@@ -120,6 +120,12 @@ public class ShoppingCartInfoRequestVo extends BaseRequestVo {
* svc 卡支付使用
*/
private
String
cardCode
;
/**
* svc 卡支付使用 多卡
*/
private
List
<
String
>
cardCodes
;
/**
* 收货地址ID、svc卡支付外卖订单必传
*/
...
...
shopping-cart-application-service/src/main/java/cn/freemud/service/impl/ShoppingCartNewServiceImpl.java
View file @
3e18580c
...
...
@@ -1012,11 +1012,17 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService {
*/
@Override
public
BaseResponse
getGoodsListCheck
(
ShoppingCartInfoRequestVo
shoppingCartInfoRequestVo
)
{
if
(
StringUtils
.
isBlank
(
shoppingCartInfoRequestVo
.
getCardCode
()))
{
List
<
String
>
cardCodes
=
new
ArrayList
<>();
if
(
CollectionUtils
.
isNotEmpty
(
shoppingCartInfoRequestVo
.
getCardCodes
())){
cardCodes
.
addAll
(
shoppingCartInfoRequestVo
.
getCardCodes
());
}
else
if
(
StringUtils
.
isNotBlank
(
shoppingCartInfoRequestVo
.
getCardCode
())){
cardCodes
.
add
(
shoppingCartInfoRequestVo
.
getCardCode
());
}
if
(
CollectionUtils
.
isEmpty
(
cardCodes
))
{
return
ResponseUtil
.
error
(
ResponseResult
.
PARAMETER_MISSING
);
}
//打包带走外卖
if
(
StringUtils
.
isNotBlank
(
shoppingCartInfoRequestVo
.
getCardCode
()
)
&&
Objects
.
equals
(
shoppingCartInfoRequestVo
.
getOrderType
(),
2
)
if
(
CollectionUtils
.
isNotEmpty
(
cardCodes
)
&&
Objects
.
equals
(
shoppingCartInfoRequestVo
.
getOrderType
(),
2
)
&&
StringUtils
.
isBlank
(
shoppingCartInfoRequestVo
.
getReceiveId
()))
{
return
ResponseUtil
.
error
(
ResponseResult
.
PARAMETER_MISSING
);
}
...
...
@@ -1034,7 +1040,7 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService {
BaseListCartGoodsVO
result
=
goodsList
.
getResult
();
//SVC卡支付
SVCCardPay
(
shoppingCartInfoRequestVo
.
getCardCode
()
,
shoppingCartInfoRequestVo
.
getReceiveId
(),
partnerId
,
storeId
,
result
);
SVCCardPay
(
cardCodes
,
shoppingCartInfoRequestVo
.
getReceiveId
(),
partnerId
,
storeId
,
result
);
return
ResponseUtil
.
success
(
goodsList
.
getResult
());
}
else
{
...
...
@@ -1045,7 +1051,7 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService {
}
ShoppingCartGoodsResponseVo
shoppingCartGoodsResponseVo
=
goodsList
.
getResult
();
//SVC卡支付
SVCCardPay
(
shoppingCartInfoRequestVo
.
getCardCode
()
,
shoppingCartInfoRequestVo
.
getReceiveId
(),
partnerId
,
storeId
,
shoppingCartGoodsResponseVo
);
SVCCardPay
(
cardCodes
,
shoppingCartInfoRequestVo
.
getReceiveId
(),
partnerId
,
storeId
,
shoppingCartGoodsResponseVo
);
return
ResponseUtil
.
success
(
goodsList
.
getResult
());
}
...
...
@@ -2512,16 +2518,16 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService {
* 储值卡支付余额校验
* 校验订单商品金额与外卖配送费
*/
private
void
SVCCardPay
(
String
cardCode
,
String
receiveId
,
String
partnerId
,
String
storeId
,
private
void
SVCCardPay
(
List
<
String
>
cardCodes
,
String
receiveId
,
String
partnerId
,
String
storeId
,
BaseListCartGoodsVO
shoppingCartGoodsResponseVo
)
{
if
(
StringUtils
.
isBlank
(
cardCode
))
{
if
(
CollectionUtils
.
isEmpty
(
cardCodes
))
{
return
;
}
Integer
orderAmount
=
shoppingCartGoodsResponseVo
.
getTotalAmount
().
intValue
();
String
trackingNo
=
LogThreadLocal
.
getTrackingNo
();
SVCCardAmountRequest
request
=
new
SVCCardAmountRequest
();
request
.
setPartnerId
(
partnerId
);
request
.
setCardCodes
(
Arrays
.
asList
(
cardCode
)
);
request
.
setCardCodes
(
cardCodes
);
//查询svc卡金额
BaseResponse
<
SVCCardAmountResponse
>
response
=
svcAppClient
.
batchQueryCardAmount
(
request
);
if
(
response
==
null
)
{
...
...
@@ -2530,15 +2536,12 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService {
if
(
response
.
getResult
()
==
null
||
CollectionUtils
.
isEmpty
(
response
.
getResult
().
getCardSimpleInfos
()))
{
throw
new
ServiceException
(
ResponseResult
.
USER_SVC_CARD_ERROR
);
}
boolean
check
=
this
.
checkSvcComPay
(
partnerId
,
storeId
);
Integer
applyType
=
response
.
getResult
().
getCardSimpleInfos
().
get
(
0
).
getApplyType
();
applyType
=
applyType
==
null
?
3
:
applyType
;
String
svcDesc
=
applyType
==
3
?
"储值卡支付¥"
:
"礼品卡支付¥"
;
if
(
check
)
{
//混合支付无需校验svc卡余额,但是配送和包装费不计算在svc卡支付
Integer
amount1
=
response
.
getResult
().
getCardSimpleInfos
().
get
(
0
).
getAmount
();
Integer
vamount
=
response
.
getResult
().
getCardSimpleInfos
().
get
(
0
).
getVamount
();
Integer
svcTotalAmount
=
amount1
+
vamount
;
int
totalAmount
=
response
.
getResult
().
getCardSimpleInfos
().
stream
().
mapToInt
(
CardSimpleInfo:
:
getAmount
).
sum
();
int
totalVamount
=
response
.
getResult
().
getCardSimpleInfos
().
stream
().
mapToInt
(
CardSimpleInfo:
:
getVamount
).
sum
();
Integer
svcTotalAmount
=
totalAmount
+
totalVamount
;
//获取实际配送费
Integer
deliveryAmount
=
0
;
Integer
svcPayAmount
=
0
;
...
...
@@ -2558,39 +2561,22 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService {
String
amountStr
=
bigDecimal
.
divide
(
new
BigDecimal
(
100
)).
setScale
(
2
,
BigDecimal
.
ROUND_HALF_UP
).
toString
();
shoppingCartGoodsResponseVo
.
setSvcPayAmount
(
amountStr
);
shoppingCartGoodsResponseVo
.
setSvcDiscountDesc
(
svcDesc
+
amountStr
);
}
else
{
//获取实际配送费
if
(
StringUtils
.
isNotBlank
(
receiveId
)
&&
shoppingCartGoodsResponseVo
.
getDiscountDeliveryAmount
()
!=
null
)
{
Integer
deliveryAmount
=
shoppingCartGoodsResponseVo
.
getDiscountDeliveryAmount
().
intValue
();
orderAmount
+=
deliveryAmount
;
}
Integer
amount1
=
response
.
getResult
().
getCardSimpleInfos
().
get
(
0
).
getAmount
();
Integer
vamount
=
response
.
getResult
().
getCardSimpleInfos
().
get
(
0
).
getVamount
();
if
(
orderAmount
>
amount1
+
vamount
)
{
throw
new
ServiceException
(
ResponseResult
.
USER_SVC_CARD_AMOUNT_DEFICIENCY
);
}
BigDecimal
bigDecimal
=
new
BigDecimal
(
orderAmount
);
String
amountStr
=
bigDecimal
.
divide
(
new
BigDecimal
(
100
)).
setScale
(
2
,
BigDecimal
.
ROUND_HALF_UP
).
toString
();
shoppingCartGoodsResponseVo
.
setTotalAmount
(
0L
);
shoppingCartGoodsResponseVo
.
setSvcDiscountDesc
(
svcDesc
+
amountStr
);
}
}
/**
* 储值卡支付余额校验
* 校验订单商品金额与外卖配送费
*/
private
void
SVCCardPay
(
String
cardCode
,
String
receiveId
,
String
partnerId
,
String
storeId
,
private
void
SVCCardPay
(
List
<
String
>
cardCodes
,
String
receiveId
,
String
partnerId
,
String
storeId
,
ShoppingCartGoodsResponseVo
shoppingCartGoodsResponseVo
)
{
if
(
StringUtils
.
isBlank
(
cardCode
))
{
if
(
CollectionUtils
.
isEmpty
(
cardCodes
))
{
return
;
}
Integer
orderAmount
=
shoppingCartGoodsResponseVo
.
getTotalAmount
().
intValue
();
String
trackingNo
=
LogThreadLocal
.
getTrackingNo
();
SVCCardAmountRequest
request
=
new
SVCCardAmountRequest
();
request
.
setPartnerId
(
partnerId
);
request
.
setCardCodes
(
Arrays
.
asList
(
cardCode
)
);
request
.
setCardCodes
(
cardCodes
);
//查询svc卡金额
BaseResponse
<
SVCCardAmountResponse
>
response
=
svcAppClient
.
batchQueryCardAmount
(
request
);
if
(
response
==
null
)
{
...
...
@@ -2599,15 +2585,13 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService {
if
(
response
.
getResult
()
==
null
||
CollectionUtils
.
isEmpty
(
response
.
getResult
().
getCardSimpleInfos
()))
{
throw
new
ServiceException
(
ResponseResult
.
USER_SVC_CARD_ERROR
);
}
boolean
check
=
this
.
checkSvcComPay
(
partnerId
,
storeId
);
Integer
applyType
=
response
.
getResult
().
getCardSimpleInfos
().
get
(
0
).
getApplyType
();
applyType
=
applyType
==
null
?
3
:
applyType
;
String
svcDesc
=
applyType
==
3
?
"储值卡支付¥"
:
"礼品卡支付¥"
;
if
(
check
)
{
//混合支付无需校验svc卡余额,但是配送和包装费不计算在svc卡支付
Integer
amount1
=
response
.
getResult
().
getCardSimpleInfos
().
get
(
0
).
getAmount
();
Integer
vamount
=
response
.
getResult
().
getCardSimpleInfos
().
get
(
0
).
getVamount
();
Integer
svcTotalAmount
=
amount1
+
vamount
;
int
totalAmount
=
response
.
getResult
().
getCardSimpleInfos
().
stream
().
mapToInt
(
CardSimpleInfo:
:
getAmount
).
sum
();
int
totalVamount
=
response
.
getResult
().
getCardSimpleInfos
().
stream
().
mapToInt
(
CardSimpleInfo:
:
getVamount
).
sum
();
Integer
svcTotalAmount
=
totalAmount
+
totalVamount
;
//获取实际配送费
Integer
deliveryAmount
=
0
;
Integer
svcPayAmount
=
0
;
...
...
@@ -2626,25 +2610,8 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService {
String
amountStr
=
bigDecimal
.
divide
(
new
BigDecimal
(
100
)).
setScale
(
2
,
BigDecimal
.
ROUND_HALF_UP
).
toString
();
shoppingCartGoodsResponseVo
.
setSvcPayAmount
(
amountStr
);
shoppingCartGoodsResponseVo
.
setSvcDiscountDesc
(
svcDesc
+
amountStr
);
}
else
{
//获取实际配送费
if
(
StringUtils
.
isNotBlank
(
receiveId
)
&&
shoppingCartGoodsResponseVo
.
getDiscountDeliveryAmount
()
!=
null
)
{
Integer
deliveryAmount
=
shoppingCartGoodsResponseVo
.
getDiscountDeliveryAmount
().
intValue
();
orderAmount
+=
deliveryAmount
;
}
Integer
amount1
=
response
.
getResult
().
getCardSimpleInfos
().
get
(
0
).
getAmount
();
Integer
vamount
=
response
.
getResult
().
getCardSimpleInfos
().
get
(
0
).
getVamount
();
if
(
orderAmount
>
amount1
+
vamount
)
{
throw
new
ServiceException
(
ResponseResult
.
USER_SVC_CARD_AMOUNT_DEFICIENCY
);
}
BigDecimal
bigDecimal
=
new
BigDecimal
(
orderAmount
);
String
amountStr
=
bigDecimal
.
divide
(
new
BigDecimal
(
100
)).
setScale
(
2
,
BigDecimal
.
ROUND_HALF_UP
).
toString
();
shoppingCartGoodsResponseVo
.
setTotalAmount
(
0L
);
shoppingCartGoodsResponseVo
.
setSvcDiscountDesc
(
svcDesc
+
amountStr
);
}
}
/**
* 储值卡支付查询配送费
*
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment