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
a9b6da53
Commit
a9b6da53
authored
Dec 31, 2021
by
ping.wu
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
券预校验与锁定新接口对接
parent
739e5ef7
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
47 additions
and
83 deletions
+47
-83
order-application-service/src/main/java/cn/freemud/adapter/CouponAdapter.java
+40
-79
order-application-service/src/main/java/cn/freemud/entities/dto/coupon/PreCheckAndLockReq.java
+0
-1
order-application-service/src/main/java/cn/freemud/service/business/impl/OrderBusinessServiceImpl.java
+2
-1
order-application-service/src/main/java/cn/freemud/service/thirdparty/CouponOfflineClient.java
+5
-2
No files found.
order-application-service/src/main/java/cn/freemud/adapter/CouponAdapter.java
View file @
a9b6da53
...
@@ -33,14 +33,10 @@ import cn.freemud.management.entities.dto.request.order.MCCafeProductRedeemVo;
...
@@ -33,14 +33,10 @@ import cn.freemud.management.entities.dto.request.order.MCCafeProductRedeemVo;
import
cn.freemud.management.entities.dto.request.order.MCCafeTransactionVo
;
import
cn.freemud.management.entities.dto.request.order.MCCafeTransactionVo
;
import
cn.freemud.management.entities.dto.response.coupon.McdNetBatchQueryResponse
;
import
cn.freemud.management.entities.dto.response.coupon.McdNetBatchQueryResponse
;
import
cn.freemud.management.entities.dto.response.coupon.McdNetCouponProductRespDto
;
import
cn.freemud.management.entities.dto.response.coupon.McdNetCouponProductRespDto
;
import
cn.freemud.management.enums.SettlementTypeEnum
;
import
cn.freemud.service.mccafe.CouponClientService
;
import
cn.freemud.utils.BeanUtil
;
import
cn.freemud.utils.BeanUtil
;
import
cn.freemud.utils.PropertyConvertUtil
;
import
cn.freemud.utils.PropertyConvertUtil
;
import
com.alibaba.fastjson.JSON
;
import
com.alibaba.fastjson.JSON
;
import
com.freemud.application.sdk.api.couponcenter.offline.domain.ProductRedeemVO
;
import
com.alibaba.fastjson.JSONObject
;
import
com.freemud.application.sdk.api.couponcenter.offline.domain.TransactionVO
;
import
com.freemud.application.sdk.api.couponcenter.offline.request.CouponRequest
;
import
com.freemud.application.sdk.api.ordercenter.entities.v1.AccountBeanV1
;
import
com.freemud.application.sdk.api.ordercenter.entities.v1.AccountBeanV1
;
import
com.freemud.application.sdk.api.ordercenter.entities.v1.OrderBeanV1
;
import
com.freemud.application.sdk.api.ordercenter.entities.v1.OrderBeanV1
;
import
com.freemud.application.sdk.api.ordercenter.entities.v1.ProductBeanV1
;
import
com.freemud.application.sdk.api.ordercenter.entities.v1.ProductBeanV1
;
...
@@ -49,6 +45,7 @@ import com.freemud.application.sdk.api.ordercenter.enums.BizTypeEnum;
...
@@ -49,6 +45,7 @@ import com.freemud.application.sdk.api.ordercenter.enums.BizTypeEnum;
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.enums.OrderSettlementType
;
import
com.freemud.application.sdk.api.ordercenter.enums.OrderSettlementType
;
import
com.freemud.application.sdk.api.ordercenter.enums.orderv1.OrderTypeV1
;
import
com.freemud.application.sdk.api.ordercenter.enums.orderv1.OrderTypeV1
;
import
com.freemud.application.sdk.api.ordercenter.request.OrderExtInfoDto
;
import
com.freemud.application.sdk.api.ordercenter.response.orderInfo.OrderSettlementResp
;
import
com.freemud.application.sdk.api.ordercenter.response.orderInfo.OrderSettlementResp
;
import
com.freemud.sdk.api.assortment.order.enums.OldOrderAccountType
;
import
com.freemud.sdk.api.assortment.order.enums.OldOrderAccountType
;
import
com.freemud.sdk.api.assortment.order.enums.QueryOrderAccountType
;
import
com.freemud.sdk.api.assortment.order.enums.QueryOrderAccountType
;
...
@@ -57,7 +54,6 @@ import com.google.common.collect.Lists;
...
@@ -57,7 +54,6 @@ import com.google.common.collect.Lists;
import
com.google.common.collect.Maps
;
import
com.google.common.collect.Maps
;
import
org.apache.commons.collections4.CollectionUtils
;
import
org.apache.commons.collections4.CollectionUtils
;
import
org.apache.commons.lang.StringUtils
;
import
org.apache.commons.lang.StringUtils
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Component
;
import
org.springframework.stereotype.Component
;
import
java.math.BigDecimal
;
import
java.math.BigDecimal
;
...
@@ -886,7 +882,7 @@ public class CouponAdapter {
...
@@ -886,7 +882,7 @@ public class CouponAdapter {
return
null
;
return
null
;
}
}
// fisherman begin 筛选订单级别优惠
// fisherman begin 筛选订单级别优惠
List
<
OrderSettlementResp
>
coupon
List
=
orderBean
.
getOrderSettlementDetailList
().
stream
().
filter
(
orderSettlement
->
List
<
OrderSettlementResp
>
orderCouponSettlement
List
=
orderBean
.
getOrderSettlementDetailList
().
stream
().
filter
(
orderSettlement
->
Objects
.
equals
(
"0"
,
orderSettlement
.
getProductId
())
&&
(
Objects
.
equals
(
"0"
,
orderSettlement
.
getProductId
())
&&
(
orderSettlement
.
getSettlementType
().
equals
(
OrderSettlementType
.
CASH_COUPON
.
getIndex
())
orderSettlement
.
getSettlementType
().
equals
(
OrderSettlementType
.
CASH_COUPON
.
getIndex
())
||
orderSettlement
.
getSettlementType
().
equals
(
OrderSettlementType
.
PRODUCT_COUPON
.
getIndex
())
||
orderSettlement
.
getSettlementType
().
equals
(
OrderSettlementType
.
PRODUCT_COUPON
.
getIndex
())
...
@@ -894,23 +890,16 @@ public class CouponAdapter {
...
@@ -894,23 +890,16 @@ public class CouponAdapter {
||
orderSettlement
.
getSettlementType
().
equals
(
OrderSettlementType
.
FREIGHT_COUPON
.
getIndex
())
||
orderSettlement
.
getSettlementType
().
equals
(
OrderSettlementType
.
FREIGHT_COUPON
.
getIndex
())
)
)
).
collect
(
Collectors
.
toList
());
).
collect
(
Collectors
.
toList
());
if
(
CollectionUtils
.
isEmpty
(
coupon
List
))
{
if
(
CollectionUtils
.
isEmpty
(
orderCouponSettlement
List
))
{
return
null
;
return
null
;
}
}
//fisherman 【01测16灰18全,【华莱士】【疑难专项】一个订单多张优惠券使用场景】 https://www.tapd.cn/43862731/prong/stories/view/1143862731001037477
//fisherman 【01测16灰18全,【华莱士】【疑难专项】一个订单多张优惠券使用场景】 https://www.tapd.cn/43862731/prong/stories/view/1143862731001037477
return
this
.
commonMethodVerificationNew
(
couponList
,
orderBean
,
openId
);
}
private
PreCheckAndLockReq
commonMethodVerificationNew
(
List
<
OrderSettlementResp
>
orderCouponSettlementList
,
OrderBeanV1
orderBean
,
String
openId
)
{
PreCheckAndLockReq
preCheckAndLockReq
=
new
PreCheckAndLockReq
();
PreCheckAndLockReq
preCheckAndLockReq
=
new
PreCheckAndLockReq
();
preCheckAndLockReq
.
setPartnerId
(
orderBean
.
getCompanyId
());
preCheckAndLockReq
.
setPartnerId
(
orderBean
.
getCompanyId
());
preCheckAndLockReq
.
setTransId
(
orderBean
.
getOid
());
preCheckAndLockReq
.
setTransId
(
orderBean
.
getOid
());
//优惠券渠道
com
.
freemud
.
sdk
.
api
.
assortment
.
order
.
enums
.
ActivityChannelEnum
activityChannelEnum
=
orderTypeEnumConvert2ActivityChannel
(
orderBean
.
getOrderType
(),
orderBean
.
getBizType
());
com
.
freemud
.
sdk
.
api
.
assortment
.
order
.
enums
.
ActivityChannelEnum
activityChannelEnum
=
orderTypeEnumConvert2ActivityChannel
(
orderBean
.
getOrderType
(),
orderBean
.
getBizType
());
preCheckAndLockReq
.
setRedeemScene
(
activityChannelEnum
.
getCode
());
preCheckAndLockReq
.
setRedeemScene
(
activityChannelEnum
.
getCode
());
preCheckAndLockReq
.
setAppId
(
orderBean
.
getAppId
());
preCheckAndLockReq
.
setAppId
(
orderBean
.
getAppId
());
...
@@ -918,30 +907,25 @@ public class CouponAdapter {
...
@@ -918,30 +907,25 @@ public class CouponAdapter {
preCheckAndLockReq
.
setOrderPaymentAmount
(
orderBean
.
getActualPayAmount
().
intValue
());
preCheckAndLockReq
.
setOrderPaymentAmount
(
orderBean
.
getActualPayAmount
().
intValue
());
preCheckAndLockReq
.
setOpenId
(
openId
);
preCheckAndLockReq
.
setOpenId
(
openId
);
//门店组织机构信息需要掉接口,在外层设置
PreCheckAndLockReq
.
StoreInfo
storeInfo
=
new
PreCheckAndLockReq
.
StoreInfo
();
PreCheckAndLockReq
.
StoreInfo
storeInfo
=
new
PreCheckAndLockReq
.
StoreInfo
();
storeInfo
.
setStoreId
(
orderBean
.
getShopId
());
storeInfo
.
setStoreId
(
orderBean
.
getShopId
());
storeInfo
.
setStoreName
(
orderBean
.
getShopName
());
storeInfo
.
setStoreName
(
orderBean
.
getShopName
());
preCheckAndLockReq
.
setStoreInfo
(
storeInfo
);
preCheckAndLockReq
.
setStoreInfo
(
storeInfo
);
List
<
PreCheckAndLockReq
.
CouponInfo
>
couponInfos
=
this
.
getTransactionList
(
orderCouponSettlementList
,
orderBean
,
openId
);
List
<
PreCheckAndLockReq
.
CouponInfo
>
couponInfos
=
this
.
getTransactionList
(
orderCouponSettlementList
,
orderBean
);
preCheckAndLockReq
.
setCouponInfoList
(
couponInfos
);
preCheckAndLockReq
.
setCouponInfoList
(
couponInfos
);
// preCheckAndLockReq.setTradeNo();
//
if
(
Objects
.
equals
(
OrderClientType
.
ALIPAY
.
getIndex
().
toString
(),
orderBean
.
getOrderClient
())){
// couponRequest.setChannel(activityChannelEnum.getCode());
if
(
orderBean
.
getExtInfo
().
contains
(
"prepayId"
)){
// couponRequest.setStation_id("-1");
OrderExtInfoDto
orderExtInfoDto
=
JSONObject
.
parseObject
(
orderBean
.
getExtInfo
(),
OrderExtInfoDto
.
class
);
// couponRequest.setOperator_id("-1");
preCheckAndLockReq
.
setTradeNo
(
orderExtInfoDto
.
getPrepayId
());
// couponRequest.setStore_id(orderBean.getShopId());
}
//// couponRequest.setMemberId(orderBean.getUserId());
}
// couponRequest.setOpenid(openId);
// // 订单号 替换成唯一序号
// couponRequest.setTrans_id(orderBean.getOid());
// couponRequest.setBusiness_date(com.freemud.application.sdk.api.util.DateUtil.convert2String(new Date(), com.freemud.application.sdk.api.util.DateUtil.FORMAT_yyyyMMdd));
// // 配送券逻辑 end
// couponRequest.setTransactions(transactions);
return
preCheckAndLockReq
;
return
preCheckAndLockReq
;
}
}
private
com
.
freemud
.
sdk
.
api
.
assortment
.
order
.
enums
.
ActivityChannelEnum
orderTypeEnumConvert2ActivityChannel
(
Integer
orderType
,
Integer
bizType
)
{
private
com
.
freemud
.
sdk
.
api
.
assortment
.
order
.
enums
.
ActivityChannelEnum
orderTypeEnumConvert2ActivityChannel
(
Integer
orderType
,
Integer
bizType
)
{
if
(
Objects
.
equals
(
BizTypeEnum
.
MALL
.
getBizType
(),
bizType
)){
if
(
Objects
.
equals
(
BizTypeEnum
.
MALL
.
getBizType
(),
bizType
)){
return
com
.
freemud
.
sdk
.
api
.
assortment
.
order
.
enums
.
ActivityChannelEnum
.
saasmall
;
return
com
.
freemud
.
sdk
.
api
.
assortment
.
order
.
enums
.
ActivityChannelEnum
.
saasmall
;
...
@@ -955,63 +939,40 @@ public class CouponAdapter {
...
@@ -955,63 +939,40 @@ public class CouponAdapter {
}
}
}
}
private
List
<
PreCheckAndLockReq
.
CouponInfo
>
getTransactionList
(
List
<
OrderSettlementResp
>
orderCouponSettlementList
,
/**
OrderBeanV1
orderBean
,
* 组装券信息
String
openId
)
{
*/
private
List
<
PreCheckAndLockReq
.
CouponInfo
>
getTransactionList
(
List
<
OrderSettlementResp
>
orderCouponSettlementList
,
OrderBeanV1
orderBean
)
{
List
<
PreCheckAndLockReq
.
CouponInfo
>
couponInfos
=
new
ArrayList
<>();
List
<
PreCheckAndLockReq
.
CouponInfo
>
couponInfos
=
new
ArrayList
<>();
List
<
TransactionVO
>
transactions
=
new
ArrayList
<>();
orderCouponSettlementList
.
forEach
(
orderSettlement
->
{
orderCouponSettlementList
.
forEach
(
orderSettlement
->
{
TransactionVO
couponCodeVerificationTransDto
=
new
TransactionVO
();
//商品券参数
//商品券参数
// List<PreCheckAndLockReq.ProductInfo> products = new ArrayList<>();
List
<
PreCheckAndLockReq
.
ProductInfo
>
products
=
null
;
List
<
ProductRedeemVO
>
products
=
new
ArrayList
<>();
if
(
orderSettlement
.
getSettlementType
().
equals
(
OrderSettlementType
.
PRODUCT_COUPON
.
getIndex
()))
{
if
(
orderSettlement
.
getSettlementType
().
equals
(
OrderSettlementType
.
PRODUCT_COUPON
.
getIndex
()))
{
products
=
new
ArrayList
<>();
// List<OrderSettlementResp> couponList = orderBean.getOrderSettlementDetailList().stream().filter(productSettlement ->
List
<
OrderSettlementResp
>
couponProductList
=
orderBean
.
getOrderSettlementDetailList
().
stream
().
filter
(
productSettlement
->
// !Objects.equals("0",orderSettlement.getProductId()) && orderSettlement.getSettlementType().equals(OrderSettlementType.PRODUCT_COUPON.getIndex())
!
Objects
.
equals
(
"0"
,
productSettlement
.
getProductId
())
// ).collect(Collectors.toList());
&&
Objects
.
equals
(
orderSettlement
.
getExternalObjectId
(),
productSettlement
.
getExternalObjectId
())
//
&&
OrderSettlementType
.
PRODUCT_COUPON
.
getIndex
().
equals
(
productSettlement
.
getSettlementType
())
// for (OrderSettlementResp settlementResp : couponList){
).
collect
(
Collectors
.
toList
());
// PreCheckAndLockReq.ProductInfo productInfo = new PreCheckAndLockReq.ProductInfo();
// productInfo.setProductId(settlementResp.getProductId());
for
(
OrderSettlementResp
couponProduct
:
couponProductList
){
//
PreCheckAndLockReq
.
ProductInfo
productInfo
=
new
PreCheckAndLockReq
.
ProductInfo
();
// products.add(productInfo);
productInfo
.
setProductId
(
couponProduct
.
getProductId
());
// }
//商品名称 原价从订单商品获取
productInfo
.
setQty
(
couponProduct
.
getNumber
());
List
<
AccountBeanV1
>
accountBeans
=
orderBean
.
getAccountList
();
productInfo
.
setCouponDiscountTotalAmount
(
Math
.
abs
(
couponProduct
.
getSettlementAmount
().
intValue
()));
AccountBeanV1
accountBean
=
accountBeans
.
get
(
0
);
products
.
add
(
productInfo
);
for
(
int
i
=
0
;
i
<
orderBean
.
getProductList
().
size
();
i
++)
{
ProductBeanV1
productBean
=
orderBean
.
getProductList
().
get
(
i
);
String
pid
=
StringUtils
.
isNotBlank
(
productBean
.
getSpecification
())
?
productBean
.
getSpecification
()
:
productBean
.
getProductId
();
if
(!
org
.
springframework
.
util
.
CollectionUtils
.
isEmpty
(
orderBean
.
getProductList
().
get
(
i
).
getDiscountList
()))
{
List
<
ProductDiscountV1
>
discounts
=
orderBean
.
getProductList
().
get
(
i
).
getDiscountList
().
stream
().
filter
(
productDiscount
->
productDiscount
.
getDiscountId
().
equals
(
accountBean
.
getAccountId
())).
collect
(
Collectors
.
toList
());
for
(
ProductDiscountV1
productDiscount
:
discounts
)
{
if
(
productDiscount
.
getDiscountType
()
==
null
||
productDiscount
.
getDiscountType
()
==
0
)
{
continue
;
}
ProductRedeemVO
couponCodeVerificationProductDto
=
new
ProductRedeemVO
();
couponCodeVerificationProductDto
.
setPid
(
pid
);
couponCodeVerificationProductDto
.
setConsume_num
(
productDiscount
.
getDiscountQty
());
couponCodeVerificationProductDto
.
setSeq
(
i
+
1
);
couponCodeVerificationProductDto
.
setRedeem_price
(
new
BigDecimal
(
productBean
.
getPrice
()));
products
.
add
(
couponCodeVerificationProductDto
);
}
}
}
}
}
}
couponCodeVerificationTransDto
.
setCode
(
orderSettlement
.
getExternalObjectId
());
PreCheckAndLockReq
.
CouponInfo
couponInfo
=
new
PreCheckAndLockReq
.
CouponInfo
();
couponCodeVerificationTransDto
.
setOpenId
(
openId
);
couponInfo
.
setCode
(
orderSettlement
.
getExternalObjectId
());
Long
discountPrice
=
orderSettlement
.
getSettlementAmount
().
longValue
();
couponInfo
.
setDiscountAmount
(
Math
.
abs
(
orderSettlement
.
getSettlementAmount
().
intValue
()));
couponCodeVerificationTransDto
.
setTotalAmount
(
Math
.
abs
(
discountPrice
));
if
(
CollectionUtils
.
isNotEmpty
(
products
))
{
if
(
CollectionUtils
.
isNotEmpty
(
products
))
{
coupon
CodeVerificationTransDto
.
setProducts
(
products
);
coupon
Info
.
setProductList
(
products
);
}
}
transactions
.
add
(
couponCodeVerificationTransDt
o
);
couponInfos
.
add
(
couponInf
o
);
});
});
return
couponInfos
;
return
couponInfos
;
}
}
...
...
order-application-service/src/main/java/cn/freemud/entities/dto/coupon/PreCheckAndLockReq.java
View file @
a9b6da53
...
@@ -34,7 +34,6 @@ public class PreCheckAndLockReq {
...
@@ -34,7 +34,6 @@ public class PreCheckAndLockReq {
@ApiModelProperty
(
value
=
"券信息列表"
,
required
=
true
)
@ApiModelProperty
(
value
=
"券信息列表"
,
required
=
true
)
private
List
<
CouponInfo
>
couponInfoList
;
private
List
<
CouponInfo
>
couponInfoList
;
@ApiModelProperty
(
value
=
"用户微信openid"
)
@ApiModelProperty
(
value
=
"用户微信openid"
)
private
String
openId
;
private
String
openId
;
...
...
order-application-service/src/main/java/cn/freemud/service/business/impl/OrderBusinessServiceImpl.java
View file @
a9b6da53
...
@@ -323,7 +323,8 @@ public class OrderBusinessServiceImpl implements OrderBusinessService {
...
@@ -323,7 +323,8 @@ public class OrderBusinessServiceImpl implements OrderBusinessService {
PreCheckAndLockReq
request
=
couponAdapter
.
convert2PreCheckRequest
(
orderBean
,
openId
);
PreCheckAndLockReq
request
=
couponAdapter
.
convert2PreCheckRequest
(
orderBean
,
openId
);
if
(
request
!=
null
)
{
if
(
request
!=
null
)
{
// request.setChannel_ids(getOrgCodes(orderBean.getCompanyId(),orderBean.getShopId()));
// request.setChannel_ids(getOrgCodes(orderBean.getCompanyId(),orderBean.getShopId()));
BaseResponse
<
CouponLockResponse
>
couponLockResponseBaseResponse
=
offlineCouponSdkService
.
preCheckAndLock
(
request
);
request
.
getStoreInfo
().
setChannelIdList
(
getOrgCodes
(
orderBean
.
getCompanyId
(),
orderBean
.
getShopId
()));
BaseResponse
couponLockResponseBaseResponse
=
offlineCouponSdkService
.
preCheckAndLock
(
request
);
if
(!
ObjectUtils
.
equals
(
RESPONSE_SUCCESS_STR
,
couponLockResponseBaseResponse
.
getCode
()))
{
if
(!
ObjectUtils
.
equals
(
RESPONSE_SUCCESS_STR
,
couponLockResponseBaseResponse
.
getCode
()))
{
CancelOrderRequest
cancelOrderRequest
=
orderSdkAdapter
.
convent2CancelOrderRequest
(
orderBean
.
getOid
(),
orderBean
.
getCompanyId
(),
AfterSalesType
.
SYSTEM_CANCEL
,
"锁定券码失败"
,
""
,
null
);
CancelOrderRequest
cancelOrderRequest
=
orderSdkAdapter
.
convent2CancelOrderRequest
(
orderBean
.
getOid
(),
orderBean
.
getCompanyId
(),
AfterSalesType
.
SYSTEM_CANCEL
,
"锁定券码失败"
,
""
,
null
);
orderCancel
(
cancelOrderRequest
);
orderCancel
(
cancelOrderRequest
);
...
...
order-application-service/src/main/java/cn/freemud/service/thirdparty/CouponOfflineClient.java
View file @
a9b6da53
...
@@ -18,7 +18,10 @@ public interface CouponOfflineClient {
...
@@ -18,7 +18,10 @@ public interface CouponOfflineClient {
@PostMapping
(
"/api"
)
@PostMapping
(
"/api"
)
CouponCodeResponseDto
verification
(
CouponCodeVerificationDto
couponCodeVerificationDto
);
CouponCodeResponseDto
verification
(
CouponCodeVerificationDto
couponCodeVerificationDto
);
/**
* 预校验锁定券新接口
*/
@LogIgnoreFeign
(
logMessage
=
"precheckAndLock"
,
messageFieldName
=
ResponseCodeKeyConstant
.
MSG
,
statusCodeFieldName
=
ResponseCodeKeyConstant
.
STATUS_CODE
)
@LogIgnoreFeign
(
logMessage
=
"precheckAndLock"
,
messageFieldName
=
ResponseCodeKeyConstant
.
MSG
,
statusCodeFieldName
=
ResponseCodeKeyConstant
.
STATUS_CODE
)
@PostMapping
(
"/
precheck/redeem
"
)
@PostMapping
(
"/
standard/checkandlock
"
)
BaseResponse
<
CouponLockResponse
>
preCheckAndLock
(
PreCheckAndLockReq
couponCodeVerificationDto
);
BaseResponse
preCheckAndLock
(
PreCheckAndLockReq
couponCodeVerificationDto
);
}
}
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