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
4a8e97c2
Commit
4a8e97c2
authored
Oct 23, 2020
by
徐康
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
券冲正解锁走后台任务
parent
edb47e50
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
0 additions
and
232 deletions
+0
-232
order-application-service/src/main/java/cn/freemud/service/mccafe/CouponClientService.java
+0
-21
order-application-service/src/main/java/cn/freemud/service/mccafe/impl/CouponClientServiceImpl.java
+0
-211
No files found.
order-application-service/src/main/java/cn/freemud/service/mccafe/CouponClientService.java
View file @
4a8e97c2
...
@@ -15,34 +15,13 @@ import java.util.List;
...
@@ -15,34 +15,13 @@ import java.util.List;
public
interface
CouponClientService
{
public
interface
CouponClientService
{
CouponRedeemResponse
redeem
(
QueryOrdersResponse
.
DataBean
.
OrderBean
orderBean
,
List
<
CreateOrderAccountRequest
>
accounts
);
CouponRedeemResponse
redeem
(
MCCafeCouponRequest
mcCafeCouponRequest
);
CouponRedeemResponse
redeem
(
MCCafeCouponRequest
mcCafeCouponRequest
);
CouponRedeemResponse
redeemBatch
(
QueryOrdersResponse
.
DataBean
.
OrderBean
orderBean
,
List
<
CreateOrderAccountRequest
>
accounts
);
List
<
CouponRedeemResponse
>
redeemBatch
(
QueryOrdersResponseDto
.
DataBean
.
OrderBean
orderBean
);
List
<
CouponRedeemResponse
>
redeemBatch
(
QueryOrdersResponseDto
.
DataBean
.
OrderBean
orderBean
);
CouponRedeemResponse
cancelRedeem
(
QueryOrdersResponse
.
DataBean
.
OrderBean
orderBean
,
List
<
CreateOrderAccountRequest
>
accounts
);
CouponQueryResponse
query
(
MCCafeCouponRequest
mcCafeCouponRequest
);
McdNetBatchQueryResponse
batchQuery
(
MCCafeCouponRequest
mcCafeCouponRequest
);
McdNetBatchQueryResponse
batchQuery
(
MCCafeCouponRequest
mcCafeCouponRequest
);
CouponBaseResponse
lock
(
QueryOrdersResponse
.
DataBean
.
OrderBean
orderBean
,
List
<
CreateOrderAccountRequest
>
accounts
);
CouponBaseResponse
lock
(
MCCafeCouponLockRequest
mcCafeCouponLockRequest
);
CouponBaseResponse
lock
(
MCCafeCouponLockRequest
mcCafeCouponLockRequest
);
CouponBaseResponse
lockBatch
(
QueryOrdersResponse
.
DataBean
.
OrderBean
orderBean
,
List
<
CreateOrderAccountRequest
>
accounts
);
List
<
CouponBaseResponse
>
lockBatch
(
QueryOrdersResponseDto
.
DataBean
.
OrderBean
orderBean
);
List
<
CouponBaseResponse
>
lockBatch
(
QueryOrdersResponseDto
.
DataBean
.
OrderBean
orderBean
);
CouponBaseResponse
unlock
(
MCCafeCouponLockRequest
mcCafeCouponLockRequest
);
/**
* 移除卡包
* @param orderBean
* @return
*/
BaseResponse
callbackNotify
(
QueryOrdersResponseDto
.
DataBean
.
OrderBean
orderBean
)
;
}
}
order-application-service/src/main/java/cn/freemud/service/mccafe/impl/CouponClientServiceImpl.java
View file @
4a8e97c2
...
@@ -59,106 +59,11 @@ public class CouponClientServiceImpl implements CouponClientService {
...
@@ -59,106 +59,11 @@ public class CouponClientServiceImpl implements CouponClientService {
private
EmailAlertService
emailAlertService
;
private
EmailAlertService
emailAlertService
;
@Override
@Override
public
CouponRedeemResponse
redeem
(
QueryOrdersResponse
.
DataBean
.
OrderBean
orderBean
,
List
<
CreateOrderAccountRequest
>
accounts
)
{
if
(
null
==
orderBean
||
CollectionUtils
.
isEmpty
(
accounts
))
{
return
null
;
}
Optional
<
CreateOrderAccountRequest
>
accountRequest
=
accounts
.
stream
().
filter
(
account
->
account
.
getAccountType
().
equals
(
QueryOrderAccountType
.
COUPON
)
||
account
.
getAccountType
().
equals
(
QueryOrderAccountType
.
PRODUCT_COUPON
)
||
account
.
getAccountType
().
equals
(
QueryOrderAccountType
.
DISCOUNT_COUPON
)).
findFirst
();
if
(!
accountRequest
.
isPresent
()
||
accountRequest
.
get
().
getPrice
()
==
0
)
{
return
null
;
}
CreateOrderAccountRequest
accountBean
=
accountRequest
.
get
();
List
<
MCCafeProductRedeemVo
>
products
=
new
ArrayList
<>();
//商品券核销核销参数
if
(
QueryOrderAccountType
.
PRODUCT_COUPON
.
equals
(
accountBean
.
getAccountType
()))
{
for
(
int
i
=
0
;
i
<
orderBean
.
getProductList
().
size
();
i
++)
{
QueryOrdersResponse
.
DataBean
.
OrderBean
.
ProductBean
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
<
QueryOrdersResponse
.
DataBean
.
OrderBean
.
ProductBean
.
ProductDiscount
>
discounts
=
orderBean
.
getProductList
().
get
(
i
).
getDiscountList
().
stream
().
filter
(
productDiscount
->
productDiscount
.
getDiscountId
().
equals
(
accountBean
.
getAccountId
())).
collect
(
Collectors
.
toList
());
for
(
QueryOrdersResponse
.
DataBean
.
OrderBean
.
ProductBean
.
ProductDiscount
productDiscount
:
discounts
)
{
if
(
productDiscount
.
getDiscountType
()
==
null
||
productDiscount
.
getDiscountType
()
==
0
)
{
continue
;
}
MCCafeProductRedeemVo
mcCafeProductRedeemVo
=
new
MCCafeProductRedeemVo
();
mcCafeProductRedeemVo
.
setPid
(
pid
);
mcCafeProductRedeemVo
.
setKeyProductCode
(
productBean
.
getCustomerCode
());
mcCafeProductRedeemVo
.
setCustomer_code
(
productBean
.
getCustomerCode
());
mcCafeProductRedeemVo
.
setConsume_num
(
productDiscount
.
getDiscountQty
());
mcCafeProductRedeemVo
.
setSeq
(
i
+
1
);
products
.
add
(
mcCafeProductRedeemVo
);
}
}
}
}
MCCafeCouponRequest
mcCafeCouponRequest
=
new
MCCafeCouponRequest
();
mcCafeCouponRequest
.
setVer
(
Integer
.
valueOf
(
Version
.
VERSION_1
));
mcCafeCouponRequest
.
setReqtype
(
CouponReqTypeEnum
.
REDEEM
.
getCode
());
mcCafeCouponRequest
.
setPartnerId
(
Integer
.
parseInt
(
orderBean
.
getCompanyId
()));
mcCafeCouponRequest
.
setStore_id
(
orderBean
.
getShopId
());
mcCafeCouponRequest
.
setStation_id
(
"-1"
);
mcCafeCouponRequest
.
setOperator_id
(
"-1"
);
// 订单号
mcCafeCouponRequest
.
setTrans_id
(
orderBean
.
getOid
());
mcCafeCouponRequest
.
setChannel
(
OrderClientType
.
ALIPAY
.
getIndex
().
toString
().
equals
(
orderBean
.
getOrderClient
())?
MCCafeChannelEnum
.
MOCOFFEE_ZFB
.
getName
():
MCCafeChannelEnum
.
MOCOFFEE_WX
.
getName
());
List
<
MCCafeTransactionVo
>
transactions
=
new
ArrayList
<>();
MCCafeTransactionVo
mcCafeTransactionVo
=
new
MCCafeTransactionVo
();
mcCafeTransactionVo
.
setCode
(
accountBean
.
getAccountId
());
mcCafeTransactionVo
.
setTotalAmount
(-
accountBean
.
getPrice
());
if
(
CollectionUtils
.
isNotEmpty
(
products
))
{
mcCafeTransactionVo
.
setProducts
(
products
);
}
transactions
.
add
(
mcCafeTransactionVo
);
mcCafeCouponRequest
.
setTransactions
(
transactions
);
mcCafeCouponRequest
.
setSign
(
"skip"
);
mcCafeCouponRequest
.
setAppFlag
(
"kgd.N"
);
mcCafeCouponRequest
.
setBusiness_date
(
cn
.
freemud
.
base
.
util
.
DateUtil
.
convert2Str
(
new
Date
(),
cn
.
freemud
.
base
.
util
.
DateUtil
.
FORMAT_yyyyMMdd
));
return
couponOfflineMCCafeClient
.
redeem
(
mcCafeCouponRequest
);
}
@Override
public
CouponRedeemResponse
redeem
(
MCCafeCouponRequest
mcCafeCouponRequest
)
{
public
CouponRedeemResponse
redeem
(
MCCafeCouponRequest
mcCafeCouponRequest
)
{
return
couponOfflineMCCafeClient
.
redeem
(
mcCafeCouponRequest
);
return
couponOfflineMCCafeClient
.
redeem
(
mcCafeCouponRequest
);
}
}
@Override
@Override
public
CouponRedeemResponse
redeemBatch
(
QueryOrdersResponse
.
DataBean
.
OrderBean
orderBean
,
List
<
CreateOrderAccountRequest
>
accounts
)
{
if
(
null
==
orderBean
||
CollectionUtils
.
isEmpty
(
accounts
))
{
return
null
;
}
List
<
CreateOrderAccountRequest
>
accountList
=
accounts
.
stream
().
filter
(
account
->
(
account
.
getAccountType
().
equals
(
QueryOrderAccountType
.
COUPON
)
||
account
.
getAccountType
().
equals
(
QueryOrderAccountType
.
PRODUCT_COUPON
)
||
account
.
getAccountType
().
equals
(
QueryOrderAccountType
.
DISCOUNT_COUPON
))
&&
account
.
getPrice
()
!=
0
l
).
collect
(
Collectors
.
toList
());
if
(
CollectionUtils
.
isEmpty
(
accountList
))
{
return
null
;
}
List
<
MCCafeCouponRequest
>
list
=
accountList
.
stream
().
map
(
accountBean
->
couponAdapter
.
convert2MCCafeCouponRequest
(
orderBean
,
accountBean
)).
collect
(
Collectors
.
toList
());
CouponRedeemResponse
couponRedeemResponse
=
new
CouponRedeemResponse
();
redeem:
for
(
MCCafeCouponRequest
request
:
list
)
{
retry:
for
(
int
i
=
0
;
i
<
3
;
i
++)
{
couponRedeemResponse
=
redeem
(
request
);
if
(
ResponseCodeConstant
.
RESPONSE_SUCCESS
.
equals
(
couponRedeemResponse
.
getStatusCode
()))
{
continue
redeem
;
}
}
}
return
couponRedeemResponse
;
}
@Override
public
List
<
CouponRedeemResponse
>
redeemBatch
(
QueryOrdersResponseDto
.
DataBean
.
OrderBean
orderBean
)
{
public
List
<
CouponRedeemResponse
>
redeemBatch
(
QueryOrdersResponseDto
.
DataBean
.
OrderBean
orderBean
)
{
if
(
null
==
orderBean
||
CollectionUtils
.
isEmpty
(
orderBean
.
getAccountList
()))
{
if
(
null
==
orderBean
||
CollectionUtils
.
isEmpty
(
orderBean
.
getAccountList
()))
{
return
null
;
return
null
;
...
@@ -198,92 +103,17 @@ public class CouponClientServiceImpl implements CouponClientService {
...
@@ -198,92 +103,17 @@ public class CouponClientServiceImpl implements CouponClientService {
return
couponRedeemResponseList
;
return
couponRedeemResponseList
;
}
}
@Override
public
CouponRedeemResponse
cancelRedeem
(
QueryOrdersResponse
.
DataBean
.
OrderBean
orderBean
,
List
<
CreateOrderAccountRequest
>
accounts
)
{
MCCafeCouponRequest
mcCafeCouponRequest
=
new
MCCafeCouponRequest
();
return
couponOfflineMCCafeClient
.
cancelRedeem
(
mcCafeCouponRequest
);
}
@Override
public
CouponQueryResponse
query
(
MCCafeCouponRequest
mcCafeCouponRequest
)
{
return
couponOfflineMCCafeClient
.
query
(
mcCafeCouponRequest
);
}
@Override
@Override
public
McdNetBatchQueryResponse
batchQuery
(
MCCafeCouponRequest
mcCafeCouponRequest
)
{
public
McdNetBatchQueryResponse
batchQuery
(
MCCafeCouponRequest
mcCafeCouponRequest
)
{
return
couponOfflineMCCafeClient
.
batchQuery
(
mcCafeCouponRequest
);
return
couponOfflineMCCafeClient
.
batchQuery
(
mcCafeCouponRequest
);
}
}
@Override
@Override
public
CouponBaseResponse
lock
(
QueryOrdersResponse
.
DataBean
.
OrderBean
orderBean
,
List
<
CreateOrderAccountRequest
>
accounts
)
{
if
(
null
==
orderBean
||
CollectionUtils
.
isEmpty
(
accounts
))
{
return
null
;
}
Optional
<
CreateOrderAccountRequest
>
accountRequest
=
accounts
.
stream
().
filter
(
account
->
account
.
getAccountType
().
equals
(
QueryOrderAccountType
.
COUPON
)
||
account
.
getAccountType
().
equals
(
QueryOrderAccountType
.
PRODUCT_COUPON
)
||
account
.
getAccountType
().
equals
(
QueryOrderAccountType
.
DISCOUNT_COUPON
)).
findFirst
();
if
(!
accountRequest
.
isPresent
()
||
accountRequest
.
get
().
getPrice
()
==
0
)
{
return
null
;
}
CreateOrderAccountRequest
accountBean
=
accountRequest
.
get
();
MCCafeCouponLockRequest
couponCodeVerificationDto
=
new
MCCafeCouponLockRequest
();
couponCodeVerificationDto
.
setVer
(
Integer
.
valueOf
(
Version
.
VERSION_1
));
couponCodeVerificationDto
.
setReqType
(
CouponReqTypeEnum
.
LOCK
.
getCode
());
couponCodeVerificationDto
.
setPartnerId
(
orderBean
.
getCompanyId
());
couponCodeVerificationDto
.
setStoreId
(
orderBean
.
getShopId
());
// 订单号
couponCodeVerificationDto
.
setTransId
(
orderBean
.
getOid
());
couponCodeVerificationDto
.
setCoupon
(
accountBean
.
getAccountId
());
couponCodeVerificationDto
.
setOfferId
(
accountBean
.
getAccountId
());
couponCodeVerificationDto
.
setNumber
(
"1"
);
couponCodeVerificationDto
.
setChannel
(
OrderClientType
.
ALIPAY
.
getIndex
().
toString
().
equals
(
orderBean
.
getOrderClient
())
?
MCCafeChannelEnum
.
MOCOFFEE_ZFB
.
getName
():
MCCafeChannelEnum
.
MOCOFFEE_WX
.
getName
());
couponCodeVerificationDto
.
setOperatorId
(
"-1"
);
couponCodeVerificationDto
.
setStationId
(
"-1"
);
couponCodeVerificationDto
.
setSign
(
"skip"
);
return
couponOfflineMCCafeClient
.
lock
(
couponCodeVerificationDto
);
}
@Override
public
CouponBaseResponse
lock
(
MCCafeCouponLockRequest
mcCafeCouponLockRequest
)
{
public
CouponBaseResponse
lock
(
MCCafeCouponLockRequest
mcCafeCouponLockRequest
)
{
return
couponOfflineMCCafeClient
.
lock
(
mcCafeCouponLockRequest
);
return
couponOfflineMCCafeClient
.
lock
(
mcCafeCouponLockRequest
);
}
}
@Override
@Override
public
CouponBaseResponse
lockBatch
(
QueryOrdersResponse
.
DataBean
.
OrderBean
orderBean
,
List
<
CreateOrderAccountRequest
>
accounts
)
{
if
(
null
==
orderBean
||
CollectionUtils
.
isEmpty
(
accounts
))
{
return
null
;
}
List
<
CreateOrderAccountRequest
>
accountList
=
accounts
.
stream
().
filter
(
account
->
(
account
.
getAccountType
().
equals
(
QueryOrderAccountType
.
COUPON
)
||
account
.
getAccountType
().
equals
(
QueryOrderAccountType
.
PRODUCT_COUPON
)
||
account
.
getAccountType
().
equals
(
QueryOrderAccountType
.
DISCOUNT_COUPON
))
&&
account
.
getPrice
()
!=
0
l
).
collect
(
Collectors
.
toList
());
if
(
CollectionUtils
.
isEmpty
(
accountList
))
{
return
null
;
}
List
<
MCCafeCouponLockRequest
>
list
=
accountList
.
stream
().
map
(
accountBean
->
couponAdapter
.
convert2MCCafeCouponLockRequest
(
orderBean
,
accountBean
)).
collect
(
Collectors
.
toList
());
CouponBaseResponse
baseResponse
=
new
CouponBaseResponse
();
lock:
for
(
MCCafeCouponLockRequest
request
:
list
)
{
retry:
for
(
int
i
=
0
;
i
<
3
;
i
++)
{
baseResponse
=
lock
(
request
);
if
(
ResponseCodeConstant
.
RESPONSE_SUCCESS
.
equals
(
baseResponse
.
getStatusCode
()))
{
continue
lock
;
}
}
}
return
baseResponse
;
}
@Override
public
List
<
CouponBaseResponse
>
lockBatch
(
QueryOrdersResponseDto
.
DataBean
.
OrderBean
orderBean
)
{
public
List
<
CouponBaseResponse
>
lockBatch
(
QueryOrdersResponseDto
.
DataBean
.
OrderBean
orderBean
)
{
if
(
null
==
orderBean
||
CollectionUtils
.
isEmpty
(
orderBean
.
getAccountList
()))
{
if
(
null
==
orderBean
||
CollectionUtils
.
isEmpty
(
orderBean
.
getAccountList
()))
{
return
null
;
return
null
;
...
@@ -323,45 +153,4 @@ public class CouponClientServiceImpl implements CouponClientService {
...
@@ -323,45 +153,4 @@ public class CouponClientServiceImpl implements CouponClientService {
return
baseResponseList
;
return
baseResponseList
;
}
}
@Override
public
CouponBaseResponse
unlock
(
MCCafeCouponLockRequest
mcCafeCouponLockRequest
)
{
return
couponOfflineMCCafeClient
.
unlock
(
mcCafeCouponLockRequest
);
}
@Override
public
BaseResponse
callbackNotify
(
QueryOrdersResponseDto
.
DataBean
.
OrderBean
orderBean
)
{
if
(
CollectionUtils
.
isEmpty
(
orderBean
.
getAccountList
()))
{
return
ResponseUtil
.
success
();
}
List
<
QueryOrdersResponseDto
.
DataBean
.
OrderBean
.
AccountBean
>
accountBeanList
=
orderBean
.
getAccountList
().
stream
().
filter
(
account
->
account
.
getType
().
equals
(
OldOrderAccountType
.
COUPON
.
getCode
())
||
account
.
getType
().
equals
(
OldOrderAccountType
.
PRODUCT_COUPON
.
getCode
())
||
account
.
getType
().
equals
(
OldOrderAccountType
.
DISCOUNT_COUPON
.
getCode
())).
collect
(
Collectors
.
toList
());
if
(
CollectionUtils
.
isEmpty
(
accountBeanList
))
{
return
ResponseUtil
.
success
();
}
String
orderCode
=
orderBean
.
getOid
();
String
partnerId
=
orderBean
.
getCompanyId
();
List
<
String
>
failedList
=
new
ArrayList
<>();
for
(
QueryOrdersResponseDto
.
DataBean
.
OrderBean
.
AccountBean
accountBean
:
accountBeanList
)
{
String
couponCode
=
accountBean
.
getAccountId
();
try
{
//移除卡包失败,邮件报警
com
.
freemud
.
application
.
sdk
.
api
.
base
.
BaseResponse
baseResponse
=
offlineCouponSdkService
.
callbackNotify
(
couponCode
,
orderCode
,
partnerId
,
""
);
if
(!
Objects
.
equals
(
baseResponse
.
getCode
(),
cn
.
freemud
.
enums
.
ResponseResult
.
SUCCESS
.
getCode
()))
{
emailAlertService
.
sendEmailAlert
(
"券码移除卡包失败"
,
String
.
format
(
"request:%s \r\nresponse:%s"
,
"券码号:"
+
couponCode
+
"订单号:"
+
orderCode
,
JSONObject
.
toJSONString
(
baseResponse
)));
failedList
.
add
(
couponCode
);
}
}
catch
(
Exception
ex
)
{
emailAlertService
.
sendEmailAlert
(
"券码移除卡包异常"
,
String
.
format
(
"request:%s \r\nexception:%s"
,
"券码号:"
+
couponCode
+
"订单号:"
+
orderCode
,
Throwables
.
getStackTraceAsString
(
ex
)));
ErrorLog
.
printErrorLog
(
"verification_error"
,
"/callbackNotify"
,
orderCode
,
ex
);
failedList
.
add
(
couponCode
);
}
}
if
(
CollectionUtils
.
isNotEmpty
(
failedList
))
{
return
ResponseUtil
.
error
(
cn
.
freemud
.
enums
.
ResponseResult
.
COUPON_CALLBACK_FAIL
.
getCode
(),
"优惠券移除卡包失败:"
+
failedList
.
toString
());
}
return
ResponseUtil
.
success
();
}
}
}
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