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
7e17bcbb
Commit
7e17bcbb
authored
Nov 06, 2020
by
xiaoer.li@freemud.com
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
混合支付Beta
parent
f0439a5c
Hide whitespace changes
Inline
Side-by-side
Showing
20 changed files
with
519 additions
and
49 deletions
+519
-49
assortment-ordercenter-sdk/src/main/java/com/freemud/sdk/api/assortment/order/adapter/OrderSdkAdapter.java
+22
-1
assortment-ordercenter-sdk/src/main/java/com/freemud/sdk/api/assortment/order/request/order/BaseCreateOrderRequest.java
+2
-3
assortment-ordercenter-sdk/src/main/java/com/freemud/sdk/api/assortment/order/request/payment/CombPayRequest.java
+72
-0
assortment-ordercenter-sdk/src/main/java/com/freemud/sdk/api/assortment/order/request/payment/OrderPayRefundRequest.java
+0
-0
assortment-ordercenter-sdk/src/main/java/com/freemud/sdk/api/assortment/order/request/payment/PayPlatformVO.java
+10
-0
assortment-ordercenter-sdk/src/main/java/com/freemud/sdk/api/assortment/order/request/payment/ProductVO.java
+16
-0
assortment-ordercenter-sdk/src/main/java/com/freemud/sdk/api/assortment/order/response/order/QueryOrdersResponse.java
+21
-0
order-application-service/src/main/java/cn/freemud/constant/ResponseCodeConstant.java
+1
-0
order-application-service/src/main/java/cn/freemud/entities/vo/CreateOrderVo.java
+14
-0
order-application-service/src/main/java/cn/freemud/enums/PayChannelType.java
+32
-0
order-application-service/src/main/java/cn/freemud/service/impl/CheckOrder.java
+51
-13
order-application-service/src/main/java/cn/freemud/service/impl/OrderAdapterServiceImpl.java
+1
-1
order-application-service/src/main/java/cn/freemud/service/impl/OrderServiceImpl.java
+133
-22
order-application-service/src/main/java/cn/freemud/service/thirdparty/ComPayClient.java
+35
-0
ordercenter-sdk/src/main/java/com/freemud/application/sdk/api/ordercenter/request/create/CreateOrderRequest.java
+1
-1
ordercenter-sdk/src/main/java/com/freemud/application/sdk/api/ordercenter/request/create/OrderPayItemCreateReq.java
+31
-0
ordercenter-sdk/src/main/java/com/freemud/application/sdk/api/ordercenter/response/orderInfo/OrderInfoReqs.java
+5
-1
ordercenter-sdk/src/main/java/com/freemud/application/sdk/api/ordercenter/response/orderInfo/OrderPayItemReqs.java
+48
-0
shopping-cart-application-service/src/main/java/cn/freemud/entities/vo/ShoppingCartGoodsResponseVo.java
+5
-0
shopping-cart-application-service/src/main/java/cn/freemud/service/impl/ShoppingCartNewServiceImpl.java
+19
-7
No files found.
assortment-ordercenter-sdk/src/main/java/com/freemud/sdk/api/assortment/order/adapter/OrderSdkAdapter.java
View file @
7e17bcbb
...
@@ -262,6 +262,7 @@ public class OrderSdkAdapter {
...
@@ -262,6 +262,7 @@ public class OrderSdkAdapter {
//订单重量
//订单重量
Double
orderWeight
=
sumOrderWeight
(
requestVO
.
getProducts
());
Double
orderWeight
=
sumOrderWeight
(
requestVO
.
getProducts
());
request
.
setWeight
(
orderWeight
);
request
.
setWeight
(
orderWeight
);
request
.
setOrderPayItemCreateReqList
(
requestVO
.
getOrderPayItemCreateReqList
());
return
request
;
return
request
;
}
}
...
@@ -1170,10 +1171,30 @@ public class OrderSdkAdapter {
...
@@ -1170,10 +1171,30 @@ 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
()));
}
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
()));
...
...
assortment-ordercenter-sdk/src/main/java/com/freemud/sdk/api/assortment/order/request/order/BaseCreateOrderRequest.java
View file @
7e17bcbb
...
@@ -2,11 +2,10 @@ package com.freemud.sdk.api.assortment.order.request.order;
...
@@ -2,11 +2,10 @@ package com.freemud.sdk.api.assortment.order.request.order;
import
com.freemud.application.sdk.api.ordercenter.enums.OrderClientType
;
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.Order
Task
Req
;
import
com.freemud.application.sdk.api.ordercenter.request.create.Order
PayItemCreate
Req
;
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
;
...
@@ -167,7 +166,7 @@ public class BaseCreateOrderRequest extends BaseConfig {
...
@@ -167,7 +166,7 @@ public class BaseCreateOrderRequest extends BaseConfig {
* 收货地址Id
* 收货地址Id
*/
*/
private
String
receiveId
;
private
String
receiveId
;
private
List
<
OrderPayItemCreateReq
>
orderPayItemCreateReqList
;
@Data
@Data
public
static
class
DeliveryTypeInfo
{
public
static
class
DeliveryTypeInfo
{
/**
/**
...
...
assortment-ordercenter-sdk/src/main/java/com/freemud/sdk/api/assortment/order/request/payment/CombPayRequest.java
0 → 100644
View file @
7e17bcbb
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
;
}
assortment-ordercenter-sdk/src/main/java/com/freemud/sdk/api/assortment/order/request/payment/OrderPayRefundRequest.java
deleted
100644 → 0
View file @
f0439a5c
assortment-ordercenter-sdk/src/main/java/com/freemud/sdk/api/assortment/order/request/payment/PayPlatformVO.java
0 → 100644
View file @
7e17bcbb
package
com
.
freemud
.
sdk
.
api
.
assortment
.
order
.
request
.
payment
;
import
lombok.Data
;
@Data
public
class
PayPlatformVO
{
private
String
ebcode
;
private
Long
amount
;
}
assortment-ordercenter-sdk/src/main/java/com/freemud/sdk/api/assortment/order/request/payment/ProductVO.java
0 → 100644
View file @
7e17bcbb
package
com
.
freemud
.
sdk
.
api
.
assortment
.
order
.
request
.
payment
;
import
lombok.Data
;
import
java.math.BigDecimal
;
@Data
public
class
ProductVO
{
private
String
id
;
private
Integer
quantity
;
private
Integer
seq
;
private
Long
price
;
private
String
name
;
private
String
salesType
=
"NORMAL"
;
}
assortment-ordercenter-sdk/src/main/java/com/freemud/sdk/api/assortment/order/response/order/QueryOrdersResponse.java
View file @
7e17bcbb
...
@@ -377,6 +377,10 @@ public class QueryOrdersResponse {
...
@@ -377,6 +377,10 @@ public class QueryOrdersResponse {
*/
*/
private
OrderInvoice
orderInvoice
;
private
OrderInvoice
orderInvoice
;
/**
* 混合支付list
*/
private
List
<
OrderPayItem
>
orderPayItem
;
@NoArgsConstructor
@NoArgsConstructor
@Data
@Data
...
@@ -714,6 +718,23 @@ public class QueryOrdersResponse {
...
@@ -714,6 +718,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
;
}
}
}
}
}
}
}
order-application-service/src/main/java/cn/freemud/constant/ResponseCodeConstant.java
View file @
7e17bcbb
...
@@ -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
<>();
...
...
order-application-service/src/main/java/cn/freemud/entities/vo/CreateOrderVo.java
View file @
7e17bcbb
...
@@ -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
io.swagger.annotations.ApiModelProperty
;
import
io.swagger.annotations.ApiModelProperty
;
import
cn.freemud.entities.dto.delivery.WeixinDeliveryAddressDto
;
import
cn.freemud.entities.dto.delivery.WeixinDeliveryAddressDto
;
...
@@ -23,6 +24,7 @@ import org.hibernate.validator.constraints.NotEmpty;
...
@@ -23,6 +24,7 @@ import org.hibernate.validator.constraints.NotEmpty;
import
javax.validation.Valid
;
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.math.BigDecimal
;
import
java.util.List
;
import
java.util.List
;
...
@@ -248,6 +250,18 @@ public class CreateOrderVo {
...
@@ -248,6 +250,18 @@ public class CreateOrderVo {
private
UnionPayCard
unionPayCard
;
private
UnionPayCard
unionPayCard
;
/**
/**
* 混合支付
*/
private
List
<
OrderPayItemCreateReq
>
orderPayItemCreateReqList
;
/**
* svc支付金额
*/
private
BigDecimal
svcAmount
;
/**
* 现金支付金额
*/
private
BigDecimal
cashAmount
;
/**
* 电子风味卡
* 电子风味卡
*/
*/
@Data
@Data
...
...
order-application-service/src/main/java/cn/freemud/enums/PayChannelType.java
0 → 100644
View file @
7e17bcbb
package
cn
.
freemud
.
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
;
}
}
order-application-service/src/main/java/cn/freemud/service/impl/CheckOrder.java
View file @
7e17bcbb
...
@@ -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
;
...
@@ -21,19 +21,14 @@ import cn.freemud.entities.dto.order.BusinessDate;
...
@@ -21,19 +21,14 @@ import cn.freemud.entities.dto.order.BusinessDate;
import
cn.freemud.entities.dto.shoppingCart.GetShoppingCartGoodsApportionDto
;
import
cn.freemud.entities.dto.shoppingCart.GetShoppingCartGoodsApportionDto
;
import
cn.freemud.entities.dto.shoppingCart.ShoppingCartGoodsDto
;
import
cn.freemud.entities.dto.shoppingCart.ShoppingCartGoodsDto
;
import
cn.freemud.entities.vo.*
;
import
cn.freemud.entities.vo.*
;
import
cn.freemud.enums.CouponFlag
;
import
cn.freemud.enums.*
;
import
cn.freemud.enums.CreateOrderType
;
import
cn.freemud.enums.ResponseResult
;
import
cn.freemud.interceptor.ServiceException
;
import
cn.freemud.interceptor.ServiceException
;
import
cn.freemud.manager.StoreTableNumberManager
;
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
;
...
@@ -41,7 +36,6 @@ import com.freemud.api.assortment.datamanager.manager.AssortmentOpenPlatformIapp
...
@@ -41,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
;
...
@@ -49,12 +43,14 @@ import com.freemud.application.sdk.api.membercenter.response.GetSvcInfoByMemberI
...
@@ -49,12 +43,14 @@ 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.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
;
import
com.freemud.application.sdk.api.storecenter.response.StoreResponse
;
import
com.freemud.application.sdk.api.storecenter.response.StoreResponse
;
import
com.freemud.application.sdk.api.storecenter.service.StoreCenterService
;
import
com.freemud.application.sdk.api.storecenter.service.StoreCenterService
;
import
cn.freemud.enums.CouponReqTypeEnum
;
import
com.google.common.collect.Lists
;
import
com.google.common.collect.Lists
;
import
com.google.gson.Gson
;
import
com.google.gson.Gson
;
import
org.apache.commons.collections4.CollectionUtils
;
import
org.apache.commons.collections4.CollectionUtils
;
...
@@ -65,6 +61,7 @@ import org.springframework.beans.factory.annotation.Value;
...
@@ -65,6 +61,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.*
;
...
@@ -103,14 +100,15 @@ public class CheckOrder {
...
@@ -103,14 +100,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
;
/**
/**
* 下单会员相关校验
* 下单会员相关校验
*/
*/
...
@@ -749,4 +747,44 @@ public class CheckOrder {
...
@@ -749,4 +747,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
;
}
}
}
order-application-service/src/main/java/cn/freemud/service/impl/OrderAdapterServiceImpl.java
View file @
7e17bcbb
...
@@ -177,7 +177,7 @@ public class OrderAdapterServiceImpl implements OrderAdapterService {
...
@@ -177,7 +177,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
);
...
...
order-application-service/src/main/java/cn/freemud/service/impl/OrderServiceImpl.java
View file @
7e17bcbb
...
@@ -21,7 +21,6 @@ import cn.freemud.amqp.MQService;
...
@@ -21,7 +21,6 @@ import cn.freemud.amqp.MQService;
import
cn.freemud.base.entity.BaseResponse
;
import
cn.freemud.base.entity.BaseResponse
;
import
cn.freemud.base.log.LogTreadLocal
;
import
cn.freemud.base.log.LogTreadLocal
;
import
cn.freemud.base.util.DateUtil
;
import
cn.freemud.base.util.DateUtil
;
import
cn.freemud.base.util.JsonUtil
;
import
cn.freemud.constant.OrderRefundConstant
;
import
cn.freemud.constant.OrderRefundConstant
;
import
cn.freemud.constant.RedisKeyConstant
;
import
cn.freemud.constant.RedisKeyConstant
;
import
cn.freemud.constant.ResponseCodeConstant
;
import
cn.freemud.constant.ResponseCodeConstant
;
...
@@ -38,6 +37,7 @@ import cn.freemud.entities.dto.order.CreateOrderOperateDto;
...
@@ -38,6 +37,7 @@ import cn.freemud.entities.dto.order.CreateOrderOperateDto;
import
cn.freemud.entities.dto.order.CreatePrepayRequestDto
;
import
cn.freemud.entities.dto.order.CreatePrepayRequestDto
;
import
cn.freemud.entities.dto.order.FacePayRequestDto
;
import
cn.freemud.entities.dto.order.FacePayRequestDto
;
import
cn.freemud.entities.dto.order.FacePayResponseDto
;
import
cn.freemud.entities.dto.order.FacePayResponseDto
;
import
cn.freemud.entities.dto.pay.CombPayResponse
;
import
cn.freemud.entities.dto.product.AttributeValue
;
import
cn.freemud.entities.dto.product.AttributeValue
;
import
cn.freemud.entities.dto.product.GroupDetail
;
import
cn.freemud.entities.dto.product.GroupDetail
;
import
cn.freemud.entities.dto.product.ProductAttributeGroup
;
import
cn.freemud.entities.dto.product.ProductAttributeGroup
;
...
@@ -48,10 +48,7 @@ import cn.freemud.entities.vo.*;
...
@@ -48,10 +48,7 @@ import cn.freemud.entities.vo.*;
import
cn.freemud.enums.*
;
import
cn.freemud.enums.*
;
import
cn.freemud.interceptor.ServiceException
;
import
cn.freemud.interceptor.ServiceException
;
import
cn.freemud.redis.RedisCache
;
import
cn.freemud.redis.RedisCache
;
import
cn.freemud.service.BuriedPointService
;
import
cn.freemud.service.*
;
import
cn.freemud.service.CouponActivityService
;
import
cn.freemud.service.OrderAdapterService
;
import
cn.freemud.service.Orderservice
;
import
cn.freemud.service.thirdparty.*
;
import
cn.freemud.service.thirdparty.*
;
import
cn.freemud.utils.*
;
import
cn.freemud.utils.*
;
import
com.alibaba.fastjson.JSON
;
import
com.alibaba.fastjson.JSON
;
...
@@ -70,8 +67,6 @@ import com.freemud.api.assortment.datamanager.manager.customer.AssortmentCustome
...
@@ -70,8 +67,6 @@ import com.freemud.api.assortment.datamanager.manager.customer.AssortmentCustome
import
com.freemud.api.assortment.datamanager.meal.MealCacheManager
;
import
com.freemud.api.assortment.datamanager.meal.MealCacheManager
;
import
com.freemud.application.sdk.api.constant.ResponseConstant
;
import
com.freemud.application.sdk.api.constant.ResponseConstant
;
import
com.freemud.application.sdk.api.constant.ResponseResultEnum
;
import
com.freemud.application.sdk.api.constant.ResponseResultEnum
;
import
com.freemud.application.sdk.api.couponcenter.offline.request.CouponRequest
;
import
com.freemud.application.sdk.api.couponcenter.offline.response.CouponRedeemResponse
;
import
com.freemud.application.sdk.api.couponcenter.offline.service.OfflineCouponSdkService
;
import
com.freemud.application.sdk.api.couponcenter.offline.service.OfflineCouponSdkService
;
import
com.freemud.application.sdk.api.deliverycenter.response.DeliveryInfoDto
;
import
com.freemud.application.sdk.api.deliverycenter.response.DeliveryInfoDto
;
import
com.freemud.application.sdk.api.deliverycenter.response.DeliveryResponseDto
;
import
com.freemud.application.sdk.api.deliverycenter.response.DeliveryResponseDto
;
...
@@ -84,13 +79,11 @@ import com.freemud.application.sdk.api.ordercenter.enums.OrderClientType;
...
@@ -84,13 +79,11 @@ import com.freemud.application.sdk.api.ordercenter.enums.OrderClientType;
import
com.freemud.application.sdk.api.ordercenter.request.OrderConditionsReq
;
import
com.freemud.application.sdk.api.ordercenter.request.OrderConditionsReq
;
import
com.freemud.application.sdk.api.ordercenter.request.OrderExtInfoDto
;
import
com.freemud.application.sdk.api.ordercenter.request.OrderExtInfoDto
;
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.OrderModifyRelatingCodeReq
;
import
com.freemud.application.sdk.api.ordercenter.request.carpark.ParkingOrderCreateReq
;
import
com.freemud.application.sdk.api.ordercenter.request.carpark.ParkingOrderCreateReq
;
import
com.freemud.application.sdk.api.ordercenter.response.carpark.OrderResp
;
import
com.freemud.application.sdk.api.ordercenter.response.carpark.OrderResp
;
import
com.freemud.application.sdk.api.ordercenter.response.BaseDownLoadResponse
;
import
com.freemud.application.sdk.api.ordercenter.response.BaseDownLoadResponse
;
import
com.freemud.application.sdk.api.ordercenter.response.orderInfo.OrderInfoReqs
;
import
com.freemud.application.sdk.api.ordercenter.response.orderInfo.OrderInfoReqs
;
import
com.freemud.application.sdk.api.ordercenter.response.orderInfo.OrderSettlementResp
;
import
com.freemud.application.sdk.api.ordercenter.response.orderInfo.OrderSettlementResp
;
import
com.freemud.application.sdk.api.ordercenter.response.orderInfo.QueryByCodeResponse
;
import
com.freemud.application.sdk.api.ordercenter.service.OrderDownLoadSdkService
;
import
com.freemud.application.sdk.api.ordercenter.service.OrderDownLoadSdkService
;
import
com.freemud.application.sdk.api.ordercenter.service.OrderSdkService
;
import
com.freemud.application.sdk.api.ordercenter.service.OrderSdkService
;
import
com.freemud.application.sdk.api.paymentcenter.client.request.CodePayRequest
;
import
com.freemud.application.sdk.api.paymentcenter.client.request.CodePayRequest
;
...
@@ -100,7 +93,6 @@ import com.freemud.application.sdk.api.paymentcenter.client.response.SVCCardAmou
...
@@ -100,7 +93,6 @@ import com.freemud.application.sdk.api.paymentcenter.client.response.SVCCardAmou
import
com.freemud.application.sdk.api.paymentcenter.client.service.PaymentNewService
;
import
com.freemud.application.sdk.api.paymentcenter.client.service.PaymentNewService
;
import
com.freemud.application.sdk.api.storecenter.request.GetListByCodesRequest
;
import
com.freemud.application.sdk.api.storecenter.request.GetListByCodesRequest
;
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.request.vo.GetOrgTreeListRequest
;
import
com.freemud.application.sdk.api.storecenter.response.GetListByCodesResponse
;
import
com.freemud.application.sdk.api.storecenter.response.GetListByCodesResponse
;
import
com.freemud.application.sdk.api.storecenter.response.StoreResponse
;
import
com.freemud.application.sdk.api.storecenter.response.StoreResponse
;
import
com.freemud.application.sdk.api.storecenter.service.StoreCenterService
;
import
com.freemud.application.sdk.api.storecenter.service.StoreCenterService
;
...
@@ -116,6 +108,7 @@ import com.freemud.sdk.api.assortment.message.service.IMessageTemplatePushServic
...
@@ -116,6 +108,7 @@ import com.freemud.sdk.api.assortment.message.service.IMessageTemplatePushServic
import
com.freemud.sdk.api.assortment.order.adapter.OrderSdkAdapter
;
import
com.freemud.sdk.api.assortment.order.adapter.OrderSdkAdapter
;
import
com.freemud.sdk.api.assortment.order.enums.OldOrderStatus
;
import
com.freemud.sdk.api.assortment.order.enums.OldOrderStatus
;
import
com.freemud.sdk.api.assortment.order.request.order.*
;
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.response.order.*
;
import
com.freemud.sdk.api.assortment.order.response.order.*
;
import
com.freemud.sdk.api.assortment.order.response.payment.OrderPayResponse
;
import
com.freemud.sdk.api.assortment.order.response.payment.OrderPayResponse
;
import
com.freemud.sdk.api.assortment.order.service.OrderCenterSdkService
;
import
com.freemud.sdk.api.assortment.order.service.OrderCenterSdkService
;
...
@@ -144,9 +137,7 @@ import org.springframework.stereotype.Service;
...
@@ -144,9 +137,7 @@ import org.springframework.stereotype.Service;
import
tk.mybatis.mapper.util.StringUtil
;
import
tk.mybatis.mapper.util.StringUtil
;
import
java.math.BigDecimal
;
import
java.math.BigDecimal
;
import
java.text.ParseException
;
import
java.text.SimpleDateFormat
;
import
java.text.SimpleDateFormat
;
import
java.time.Instant
;
import
java.time.LocalDateTime
;
import
java.time.LocalDateTime
;
import
java.time.format.DateTimeFormatter
;
import
java.time.format.DateTimeFormatter
;
import
java.util.*
;
import
java.util.*
;
...
@@ -155,7 +146,6 @@ import java.util.function.Function;
...
@@ -155,7 +146,6 @@ import java.util.function.Function;
import
java.util.stream.Collectors
;
import
java.util.stream.Collectors
;
import
static
cn
.
freemud
.
constant
.
OrderRefundConstant
.
ALLOW_REFUND
;
import
static
cn
.
freemud
.
constant
.
OrderRefundConstant
.
ALLOW_REFUND
;
import
static
com
.
freemud
.
sdk
.
api
.
assortment
.
order
.
domain
.
ResponseCodeConstant
.
RESPONSE_SUCCESS_STR
;
@Service
@Service
@Slf4j
@Slf4j
...
@@ -265,6 +255,12 @@ public class OrderServiceImpl implements Orderservice {
...
@@ -265,6 +255,12 @@ public class OrderServiceImpl implements Orderservice {
@Autowired
@Autowired
private
RedisTemplate
redisTemplate
;
private
RedisTemplate
redisTemplate
;
@Autowired
private
CustomerExtendClient
extendClient
;
@Autowired
private
ComPayClient
comPayClient
;
@Override
@Override
public
BaseResponse
checkBeforeCreateOrder
(
CheckBeforeCreateOrderRequestVo
requestVo
)
{
public
BaseResponse
checkBeforeCreateOrder
(
CheckBeforeCreateOrderRequestVo
requestVo
)
{
String
trackingNo
=
LogTreadLocal
.
getTrackingNo
();
String
trackingNo
=
LogTreadLocal
.
getTrackingNo
();
...
@@ -322,23 +318,26 @@ public class OrderServiceImpl implements Orderservice {
...
@@ -322,23 +318,26 @@ public class OrderServiceImpl implements Orderservice {
// 查询小程序自提外卖配置信息 校验当前订单类型的下单参数 校验外卖是否满足起送条件
// 查询小程序自提外卖配置信息 校验当前订单类型的下单参数 校验外卖是否满足起送条件
Integer
pushOrderTime
=
checkOrder
.
checkOrderByOrderType
(
createOrderVo
,
userLoginInfoDto
,
storeResponseDto
,
shoppingCartGoodsDto
,
trackingNo
);
Integer
pushOrderTime
=
checkOrder
.
checkOrderByOrderType
(
createOrderVo
,
userLoginInfoDto
,
storeResponseDto
,
shoppingCartGoodsDto
,
trackingNo
);
OrderExtInfoDto
extInfo
=
getExtInfo
(
userLoginInfoDto
,
storeResponseDto
,
pushOrderTime
,
createOrderVo
,
shoppingCartGoodsDto
);
OrderExtInfoDto
extInfo
=
getExtInfo
(
userLoginInfoDto
,
storeResponseDto
,
pushOrderTime
,
createOrderVo
,
shoppingCartGoodsDto
);
boolean
svcPay
=
checkOrder
.
checkSvcPay
(
createOrderVo
,
shoppingCartGoodsDto
,
trackingNo
);
//1.9.2套餐需求同步优化创建订单代码
//1.9.2套餐需求同步优化创建订单代码
BaseResponse
createOrderOperateDtoResponse
=
this
.
sdkCreateOrder
(
createOrderVo
,
storeResponseDto
,
shoppingCartGoodsDto
,
userLoginInfoDto
);
BaseResponse
createOrderOperateDtoResponse
=
this
.
sdkCreateOrder
(
createOrderVo
,
storeResponseDto
,
shoppingCartGoodsDto
,
userLoginInfoDto
);
if
(
createOrderOperateDtoResponse
==
null
||
!
ResponseResult
.
SUCCESS
.
getCode
().
equals
(
createOrderOperateDtoResponse
.
getCode
())
||
createOrderOperateDtoResponse
.
getResult
()
==
null
)
{
if
(
createOrderOperateDtoResponse
==
null
||
!
ResponseResult
.
SUCCESS
.
getCode
().
equals
(
createOrderOperateDtoResponse
.
getCode
())
||
createOrderOperateDtoResponse
.
getResult
()
==
null
)
{
return
createOrderOperateDtoResponse
;
return
createOrderOperateDtoResponse
;
}
}
CreateOrderOperateDto
createOrderOperateDto
=
(
CreateOrderOperateDto
)
createOrderOperateDtoResponse
.
getResult
();
CreateOrderOperateDto
createOrderOperateDto
=
(
CreateOrderOperateDto
)
createOrderOperateDtoResponse
.
getResult
();
// 设置集点值
/*
if
(
svcPay
)
{
ShoppingCartGoodsDto.SendPoint sendPoint = shoppingCartGoodsDto.getSendPoint();
//创建支付
if (sendPoint != null){
CreatePrepayRequestDto
createPrepayRequestDto
=
orderAdapter
.
convertToCreatePrepayRequestDto
(
userLoginInfoDto
,
createOrderOperateDto
,
createOrderVo
);
redisCache.save(RedisKeyConstant.KGD_SENDPOINT_ORDERID + createOrderOperateDto.getFatherOrderBean().getOid(), sendPoint, 1L, TimeUnit.DAYS);
return
this
.
createCombpayOrder
(
createPrepayRequestDto
);
}
else
{
//创建支付
CreatePrepayRequestDto
createPrepayRequestDto
=
orderAdapter
.
convertToCreatePrepayRequestDto
(
userLoginInfoDto
,
createOrderVo
,
createOrderOperateDto
,
extInfo
);
return
this
.
createPrepayOrder
(
createPrepayRequestDto
);
}
}
*/
//创建支付
CreatePrepayRequestDto
createPrepayRequestDto
=
orderAdapter
.
convertToCreatePrepayRequestDto
(
userLoginInfoDto
,
createOrderVo
,
createOrderOperateDto
,
extInfo
);
return
this
.
createPrepayOrder
(
createPrepayRequestDto
);
}
}
/**
/**
...
@@ -3100,4 +3099,116 @@ public class OrderServiceImpl implements Orderservice {
...
@@ -3100,4 +3099,116 @@ public class OrderServiceImpl implements Orderservice {
}
}
return
mealCodeRule
;
return
mealCodeRule
;
}
}
/**
* 创建混合支付预支付
*/
public
BaseResponse
createCombpayOrder
(
CreatePrepayRequestDto
createPrepayRequestDto
)
{
CreateOrderResponseVo
createOrderResponse
;
OrderPayResponse
orderPayResponse
=
null
;
PaymentRequest
paymentRequest
=
orderBodyConvertToPaymentBody
(
createPrepayRequestDto
.
getOpenId
()
,
createPrepayRequestDto
.
getPartnerId
()
,
createPrepayRequestDto
.
getWxAppId
()
,
null
);
long
totalAmount
=
createPrepayRequestDto
.
getTotalAmount
();
String
cardCode
=
createPrepayRequestDto
.
getCardCode
();
if
(
totalAmount
<
0
)
{
throw
new
ServiceException
(
ResponseResult
.
PAY_AMOUNT_ERROR
);
}
else
{
String
partnerPayOvertime
=
this
.
getPartnerPayOvertime
(
createPrepayRequestDto
.
getPartnerId
());
orderPayResponse
=
comPayOrder
(
paymentRequest
,
createPrepayRequestDto
,
partnerPayOvertime
);
}
if
(
orderPayResponse
==
null
||
Objects
.
isNull
(
orderPayResponse
.
getFmId
()))
{
return
failPreOrderPay
(
LogThreadLocal
.
getTrackingNo
(),
createPrepayRequestDto
.
getProductOrderBean
(),
cardCode
,
createPrepayRequestDto
.
getOrderClient
(),
Objects
.
isNull
(
orderPayResponse
)
?
null
:
orderPayResponse
.
getMsg
());
}
createOrderResponse
=
orderAdapter
.
convent2CreateFatherSonOrderResponseVo
(
orderPayResponse
,
createPrepayRequestDto
.
getProductOrderBean
());
BaseResponse
baseEditResponse
=
this
.
updateOrderInfo
(
orderPayResponse
,
createPrepayRequestDto
.
getOrderExtInfoDTO
(),
createPrepayRequestDto
.
getProductOrderBean
(),
LogThreadLocal
.
getTrackingNo
());
if
(
baseEditResponse
!=
null
)
{
return
baseEditResponse
;
}
if
(
totalAmount
>
0
&&
StringUtils
.
isBlank
(
cardCode
))
{
createOrderResponse
.
setPaySuccess
(
false
);
}
else
{
createOrderResponse
.
setPaySuccess
(
true
);
}
// 推荐优惠插件用户下单数据上报
if
(!
createOrderResponse
.
getPaySuccess
())
{
return
ResponseUtil
.
success
(
createOrderResponse
);
}
else
{
//如果是商品券支付0元,调用回调接口
PaysuccessNoticeMessage
message
=
new
PaysuccessNoticeMessage
();
message
.
setResult_code
(
100
);
message
.
setOut_trade_no
(
createOrderResponse
.
getFmId
());
message
.
setTrans_id
(
createOrderResponse
.
getOid
());
message
.
setTotal_fee
(
0
);
message
.
setOpenid
(
createPrepayRequestDto
.
getOpenId
());
message
.
setPlatform_coupon
(
0
);
message
.
setMerchant_coupon
(
0
);
orderAdapterService
.
paySuccessCallback
(
message
);
return
ResponseUtil
.
success
(
createOrderResponse
);
}
}
/**
* 创建混合支付
* @param paymentRequest
* @param createPrepayRequestDto
* @param partnerPayOvertime
* @return
*/
private
OrderPayResponse
comPayOrder
(
PaymentRequest
paymentRequest
,
CreatePrepayRequestDto
createPrepayRequestDto
,
String
partnerPayOvertime
)
{
OrderPayResponse
orderPayResponse
=
null
;
try
{
CombPayRequest
request
=
orderAdapter
.
convent2CombPayOrderRequest
(
paymentRequest
,
createPrepayRequestDto
,
partnerPayOvertime
);
CombPayResponse
responseBase
=
comPayClient
.
combPay
(
request
,
request
.
getPartner_id
());
if
(!
ResponseCodeConstant
.
PAYMENT_RESPONSE_SUCCESS
.
equals
(
responseBase
.
getCode
())
||
responseBase
.
getData
().
getPayPlatformResponseList
().
size
()==
0
)
{
//log.error("混合支付返回信息错误,trackingNo:{} request:{} response:{}", trackingNo, JSONObject.toJSONString(request), JSONObject.toJSONString(responseBase));
orderPayResponse
=
new
OrderPayResponse
();
orderPayResponse
.
setMsg
(
responseBase
.
getMsg
());
}
else
{
/**
* todo:加入轮训队列
*/
//putDelMq(request.getPartner_id(), request.getStore_id(), responseBase.getData(), orderBean.getOid());
//UnifiedOrderApiResponse unifiedOrderResponse = null;
/**
* 生成预支付参数
*/
CombPayResponse
.
PayPlatform
payPlatform
=
responseBase
.
getData
().
getPayPlatformResponseList
()
.
stream
()
.
filter
(
f
->
!
PayChannelType
.
SVC
.
getEbcode
().
equals
(
f
.
getEbCode
())).
findFirst
()
.
orElse
(
null
);
if
(
payPlatform
==
null
)
{
orderPayResponse
=
new
OrderPayResponse
();
orderPayResponse
.
setMsg
(
"提取现金支付失败"
);
}
else
{
orderPayResponse
=
orderAdapter
.
convent2OrderCombPayResponse
(
payPlatform
);
orderPayResponse
.
setOpenId
(
paymentRequest
.
getOpenId
());
orderPayResponse
.
setWxAppid
(
paymentRequest
.
getWxAppId
());
orderPayResponse
.
setPartnerId
(
createPrepayRequestDto
.
getPartnerId
());
orderPayResponse
.
setOrderId
(
createPrepayRequestDto
.
getTransId
());
}
}
}
catch
(
Exception
e
)
{
//TODO 邮件告警
//LogUtil.error("comPay_error", JSONObject.toJSONString(orderBean), JSONObject.toJSONString(paymentRequest), e);
orderPayResponse
=
new
OrderPayResponse
();
orderPayResponse
.
setMsg
(
"comPay_error"
);
}
return
orderPayResponse
;
}
}
}
order-application-service/src/main/java/cn/freemud/service/thirdparty/ComPayClient.java
0 → 100644
View file @
7e17bcbb
/**
* 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
);
}
ordercenter-sdk/src/main/java/com/freemud/application/sdk/api/ordercenter/request/create/CreateOrderRequest.java
View file @
7e17bcbb
...
@@ -214,5 +214,5 @@ public class CreateOrderRequest extends BaseRequest {
...
@@ -214,5 +214,5 @@ public class CreateOrderRequest extends BaseRequest {
private
String
appId
;
private
String
appId
;
private
Byte
payChannelType
;
private
Byte
payChannelType
;
private
List
<
OrderPayItemCreateReq
>
orderPayItemCreateReqList
;
}
}
ordercenter-sdk/src/main/java/com/freemud/application/sdk/api/ordercenter/request/create/OrderPayItemCreateReq.java
0 → 100644
View file @
7e17bcbb
package
com
.
freemud
.
application
.
sdk
.
api
.
ordercenter
.
request
.
create
;
import
lombok.Data
;
import
java.math.BigDecimal
;
@Data
public
class
OrderPayItemCreateReq
{
private
Long
id
;
private
Long
orderId
;
private
String
orderCode
;
private
String
partnerId
;
private
String
storeId
;
private
Integer
payChannelType
;
private
String
payChannelName
;
/**
* 支付渠道码
*/
private
String
payEbCode
;
private
String
operator
;
private
BigDecimal
payAmount
;
}
\ No newline at end of file
ordercenter-sdk/src/main/java/com/freemud/application/sdk/api/ordercenter/response/orderInfo/OrderInfoReqs.java
View file @
7e17bcbb
...
@@ -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
;
...
@@ -271,4 +270,9 @@ public class OrderInfoReqs {
...
@@ -271,4 +270,9 @@ public class OrderInfoReqs {
//支付渠道类型
//支付渠道类型
private
String
payChannelType
;
private
String
payChannelType
;
/**
* 支付信息
*/
private
List
<
OrderPayItemReqs
>
orderPayItemCreateReqList
;
}
}
ordercenter-sdk/src/main/java/com/freemud/application/sdk/api/ordercenter/response/orderInfo/OrderPayItemReqs.java
0 → 100644
View file @
7e17bcbb
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
;
}
shopping-cart-application-service/src/main/java/cn/freemud/entities/vo/ShoppingCartGoodsResponseVo.java
View file @
7e17bcbb
...
@@ -15,6 +15,7 @@ package cn.freemud.entities.vo;
...
@@ -15,6 +15,7 @@ package cn.freemud.entities.vo;
import
lombok.Builder
;
import
lombok.Builder
;
import
lombok.Data
;
import
lombok.Data
;
import
java.math.BigDecimal
;
import
java.util.List
;
import
java.util.List
;
@Data
@Data
...
@@ -140,5 +141,9 @@ public class ShoppingCartGoodsResponseVo extends ShoppingCartGoodsBaseResponseV
...
@@ -140,5 +141,9 @@ public class ShoppingCartGoodsResponseVo extends ShoppingCartGoodsBaseResponseV
* 麦咖啡-咖啡月卡价格
* 麦咖啡-咖啡月卡价格
*/
*/
private
Long
payCardFee
;
private
Long
payCardFee
;
/**
* svc卡支付金额
*/
private
BigDecimal
svcPayAmount
;
}
}
shopping-cart-application-service/src/main/java/cn/freemud/service/impl/ShoppingCartNewServiceImpl.java
View file @
7e17bcbb
...
@@ -1637,20 +1637,32 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService {
...
@@ -1637,20 +1637,32 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService {
throw
new
ServiceException
(
ResponseResult
.
USER_SVC_CARD_ERROR
);
throw
new
ServiceException
(
ResponseResult
.
USER_SVC_CARD_ERROR
);
}
}
//获取实际配送费
//获取实际配送费
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);
Integer
deliveryAmount
=
shoppingCartGoodsResponseVo
.
getDiscountDeliveryAmount
().
intValue
();
deliveryAmount
=
shoppingCartGoodsResponseVo
.
getDiscountDeliveryAmount
().
intValue
();
orderAmount
+=
deliveryAmount
;
orderAmount
+=
deliveryAmount
;
}
}
//混合支付无需校验svc卡余额,但是配送和包装费不计算在svc卡支付
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
;
//本金+赠送金额
if
(
orderAmount
>
amount1
+
vamount
)
{
if
(
orderAmount
>
amount1
+
vamount
)
{
throw
new
ServiceException
(
ResponseResult
.
USER_SVC_CARD_AMOUNT_DEFICIENCY
);
//throw new ServiceException(ResponseResult.USER_SVC_CARD_AMOUNT_DEFICIENCY);
svcPayAmount
=
new
BigDecimal
(
amount1
+
vamount
).
divide
(
new
BigDecimal
(
100
)).
setScale
(
2
,
BigDecimal
.
ROUND_HALF_UP
);
shoppingCartGoodsResponseVo
.
setTotalAmount
(
orderAmount
-
svcPayAmount
.
multiply
(
new
BigDecimal
(
100
)).
longValue
());
}
}
BigDecimal
bigDecimal
=
new
BigDecimal
(
orderAmount
);
else
{
String
amountStr
=
bigDecimal
.
divide
(
new
BigDecimal
(
100
)).
setScale
(
2
,
BigDecimal
.
ROUND_HALF_UP
).
toString
();
svcPayAmount
=
new
BigDecimal
(
orderAmount
-
deliveryAmount
).
divide
(
new
BigDecimal
(
100
)).
setScale
(
2
,
BigDecimal
.
ROUND_HALF_UP
);
shoppingCartGoodsResponseVo
.
setTotalAmount
(
0L
);
shoppingCartGoodsResponseVo
.
setTotalAmount
(
deliveryAmount
.
longValue
());
shoppingCartGoodsResponseVo
.
setSvcDiscountDesc
(
"储值卡支付¥"
+
amountStr
);
}
shoppingCartGoodsResponseVo
.
setSvcPayAmount
(
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);
}
}
/**
/**
...
...
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