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
4198f4d3
Commit
4198f4d3
authored
Aug 06, 2020
by
徐康
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
麦咖啡批量锁券和核销券
parent
5e28039c
Show whitespace changes
Inline
Side-by-side
Showing
9 changed files
with
204 additions
and
163 deletions
+204
-163
order-application-service/src/main/java/cn/freemud/adapter/CouponAdapter.java
+80
-4
order-application-service/src/main/java/cn/freemud/entities/dto/coupon/MCCafeCouponRequest.java
+1
-1
order-application-service/src/main/java/cn/freemud/service/impl/CheckMCCafeOrder.java
+2
-2
order-application-service/src/main/java/cn/freemud/service/impl/MCCafeOrderServiceImpl.java
+19
-122
order-application-service/src/main/java/cn/freemud/service/mccafe/CouponClientService.java
+7
-3
order-application-service/src/main/java/cn/freemud/service/mccafe/impl/CouponClientServiceImpl.java
+85
-21
order-application-service/src/main/java/cn/freemud/service/mccafe/impl/MCCafeOrderCenterSdkServiceImpl.java
+2
-2
order-application-service/src/main/java/cn/freemud/service/mccafe/thirdparty/CouponOfflineMCCafeClient.java
+4
-4
order-application-service/src/test/java/cn.freemud/service/CouponActivityServiceTest.java
+4
-4
No files found.
order-application-service/src/main/java/cn/freemud/adapter/CouponAdapter.java
View file @
4198f4d3
...
...
@@ -15,6 +15,10 @@ package cn.freemud.adapter;
import
cn.freemud.base.constant.Version
;
import
cn.freemud.base.util.DateUtil
;
import
cn.freemud.entities.dto.*
;
import
cn.freemud.entities.dto.coupon.MCCafeCouponRequest
;
import
cn.freemud.entities.dto.coupon.MCCafeCouponLockRequest
;
import
cn.freemud.entities.dto.coupon.MCCafeProductRedeemVo
;
import
cn.freemud.entities.dto.coupon.MCCafeTransactionVo
;
import
cn.freemud.entities.dto.openplatform.AddWeixinCardCodeRequestDto
;
import
cn.freemud.entities.dto.openplatform.AddWeixinCardCodeResponseDto
;
import
cn.freemud.entities.dto.openplatform.AddWeixinCardJudgeRequestDto
;
...
...
@@ -22,12 +26,13 @@ import cn.freemud.entities.dto.openplatform.AddWeixinCardJudgeResponseDto;
import
cn.freemud.entities.dto.promotion.CouponPromotionDto
;
import
cn.freemud.entities.dto.promotion.OrderBeanRequest
;
import
cn.freemud.entities.vo.*
;
import
cn.freemud.enums.ActivityChannelEnum
;
import
cn.freemud.enums.ActivityShareType
;
import
cn.freemud.enums.CouponStatus
;
import
cn.freemud.enums.CouponTypeEnum
;
import
cn.freemud.enums.*
;
import
cn.freemud.utils.BeanUtil
;
import
com.freemud.application.sdk.api.ordercenter.enums.OrderClientType
;
import
com.freemud.card.sdk.vo.coupon.request.MemberAddCouponVo
;
import
com.freemud.sdk.api.assortment.order.enums.QueryOrderAccountType
;
import
com.freemud.sdk.api.assortment.order.request.order.CreateOrderAccountRequest
;
import
com.freemud.sdk.api.assortment.order.response.order.QueryOrdersResponse
;
import
com.google.common.collect.Lists
;
import
com.google.common.collect.Maps
;
import
org.apache.commons.collections4.CollectionUtils
;
...
...
@@ -557,4 +562,75 @@ public class CouponAdapter {
couponPromotionDto
.
setFlg
(
flg
);
return
couponPromotionDto
;
}
public
MCCafeCouponRequest
convert2MCCafeCouponRequest
(
QueryOrdersResponse
.
DataBean
.
OrderBean
orderBean
,
CreateOrderAccountRequest
accountBean
)
{
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
=
org
.
apache
.
commons
.
lang3
.
StringUtils
.
isNotBlank
(
productBean
.
getSpecification
())
?
productBean
.
getSpecification
()
:
productBean
.
getProductId
();
if
(!
org
.
springframework
.
util
.
CollectionUtils
.
isEmpty
(
productBean
.
getDiscountList
()))
{
List
<
QueryOrdersResponse
.
DataBean
.
OrderBean
.
ProductBean
.
ProductDiscount
>
discounts
=
productBean
.
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
mcCafeCouponRequest
;
}
public
MCCafeCouponLockRequest
convert2MCCafeCouponLockRequest
(
QueryOrdersResponse
.
DataBean
.
OrderBean
orderBean
,
CreateOrderAccountRequest
accountBean
)
{
MCCafeCouponLockRequest
mcCafeCouponLockRequest
=
new
MCCafeCouponLockRequest
();
mcCafeCouponLockRequest
.
setVer
(
Integer
.
valueOf
(
Version
.
VERSION_1
));
mcCafeCouponLockRequest
.
setReqType
(
CouponReqTypeEnum
.
UNLOCK
.
getCode
());
mcCafeCouponLockRequest
.
setPartnerId
(
orderBean
.
getCompanyId
());
mcCafeCouponLockRequest
.
setStoreId
(
orderBean
.
getShopId
());
// 订单号
mcCafeCouponLockRequest
.
setTransId
(
orderBean
.
getOid
());
mcCafeCouponLockRequest
.
setCoupon
(
accountBean
.
getAccountId
());
mcCafeCouponLockRequest
.
setOfferId
(
accountBean
.
getAccountId
());
mcCafeCouponLockRequest
.
setNumber
(
"1"
);
mcCafeCouponLockRequest
.
setChannel
(
OrderSourceType
.
ALIPAY
.
getCode
().
equals
(
orderBean
.
getSource
())?
MCCafeChannelEnum
.
MOCOFFEE_ZFB
.
getName
():
MCCafeChannelEnum
.
MOCOFFEE_WX
.
getName
());
mcCafeCouponLockRequest
.
setOperatorId
(
"-1"
);
mcCafeCouponLockRequest
.
setStationId
(
"-1"
);
mcCafeCouponLockRequest
.
setSign
(
"skip"
);
return
mcCafeCouponLockRequest
;
}
}
order-application-service/src/main/java/cn/freemud/entities/dto/coupon/MCCafeCo
n
ponRequest.java
→
order-application-service/src/main/java/cn/freemud/entities/dto/coupon/MCCafeCo
u
ponRequest.java
View file @
4198f4d3
...
...
@@ -13,7 +13,7 @@ import java.util.List;
@Builder
@NoArgsConstructor
@AllArgsConstructor
public
class
MCCafeCo
n
ponRequest
{
public
class
MCCafeCo
u
ponRequest
{
/**
* 接口版本
*/
...
...
order-application-service/src/main/java/cn/freemud/service/impl/CheckMCCafeOrder.java
View file @
4198f4d3
...
...
@@ -17,7 +17,7 @@ import cn.freemud.base.util.DateUtil;
import
cn.freemud.constant.ResponseCodeConstant
;
import
cn.freemud.constant.StoreConstant
;
import
cn.freemud.entities.dto.*
;
import
cn.freemud.entities.dto.coupon.MCCafeCo
n
ponRequest
;
import
cn.freemud.entities.dto.coupon.MCCafeCo
u
ponRequest
;
import
cn.freemud.entities.dto.order.BusinessDate
;
import
cn.freemud.entities.dto.shoppingCart.GetShoppingCartGoodsApportionDto
;
import
cn.freemud.entities.dto.shoppingCart.ShoppingCartGoodsDto
;
...
...
@@ -568,7 +568,7 @@ public class CheckMCCafeOrder {
// }
if
(
StringUtils
.
isNotBlank
(
createOrderVo
.
getCouponCode
()))
{
// 校验couponCode
CouponQueryResponse
couponQueryResponse
=
couponClientService
.
query
(
MCCafeCo
n
ponRequest
.
builder
()
CouponQueryResponse
couponQueryResponse
=
couponClientService
.
query
(
MCCafeCo
u
ponRequest
.
builder
()
.
ver
(
Integer
.
valueOf
(
Version
.
VERSION_1
))
.
reqtype
(
CouponReqTypeEnum
.
QUERY
.
getCode
())
.
partnerId
(
Integer
.
parseInt
(
createOrderVo
.
getPartnerId
()))
...
...
order-application-service/src/main/java/cn/freemud/service/impl/MCCafeOrderServiceImpl.java
View file @
4198f4d3
...
...
@@ -17,7 +17,6 @@ import cn.freemud.amqp.Header;
import
cn.freemud.amqp.MQAction
;
import
cn.freemud.amqp.MQMessage
;
import
cn.freemud.amqp.MQService
;
import
cn.freemud.base.constant.Version
;
import
cn.freemud.base.entity.BaseResponse
;
import
cn.freemud.base.log.LogTreadLocal
;
import
cn.freemud.base.util.DateUtil
;
...
...
@@ -69,21 +68,11 @@ import com.freemud.application.sdk.api.paymentcenter.client.service.PaymentNewSe
import
com.freemud.application.sdk.api.storecenter.response.StoreResponse
;
import
com.freemud.application.sdk.api.storecenter.service.StoreCenterService
;
import
com.freemud.application.sdk.api.structure.service.MessageCenterClient
;
import
com.freemud.sdk.api.assortment.message.config.MessageOfficialRefundPushMqConfig
;
import
com.freemud.sdk.api.assortment.message.entity.MpTemplateMsg
;
import
com.freemud.sdk.api.assortment.message.entity.MpTemplateMsgDataValue
;
import
com.freemud.sdk.api.assortment.message.enums.MessageEventType
;
import
com.freemud.sdk.api.assortment.message.request.MessagePushOrderTemplateRequest
;
import
com.freemud.sdk.api.assortment.message.request.MessageTemplateRequest
;
import
com.freemud.sdk.api.assortment.message.service.IMessageTemplatePushService
;
import
cn.freemud.enums.CouponReqTypeEnum
;
import
cn.freemud.enums.MCCafeChannelEnum
;
import
com.freemud.sdk.api.assortment.order.enums.OldOrderStatus
;
import
com.freemud.sdk.api.assortment.order.enums.QueryOrderAccountType
;
import
cn.freemud.entities.dto.coupon.MCCafeConponRequest
;
import
cn.freemud.entities.dto.coupon.MCCafeCouponLockRequest
;
import
cn.freemud.entities.dto.coupon.MCCafeProductRedeemVo
;
import
cn.freemud.entities.dto.coupon.MCCafeTransactionVo
;
import
cn.freemud.entities.dto.coupon.MCCafeCouponRequest
;
import
com.freemud.sdk.api.assortment.order.request.order.*
;
import
com.freemud.sdk.api.assortment.order.response.order.*
;
import
com.freemud.sdk.api.assortment.order.response.payment.OrderPayResponse
;
...
...
@@ -210,12 +199,14 @@ public class MCCafeOrderServiceImpl implements MCCafeOrderService {
String
trackingNo
=
LogThreadLocal
.
getTrackingNo
();
// 查询用户信息、校验svc卡,余额购物车校验
AssortmentCustomerInfoVo
userLoginInfoDto
=
checkMCCafeOrder
.
checkOrderByMember
(
createOrderVo
,
trackingNo
);
// 查询门店信息 营业时间、营业状态,服务器当前时间在营业时间内
StoreResponse
.
BizVO
storeResponseDto
=
checkMCCafeOrder
.
checkOrderByStore
(
createOrderVo
,
trackingNo
);
// 查询购物车(内部校验券点餐方式,券是否可用) 校验当前订单类型的下单参数
ShoppingCartGoodsDto
shoppingCartGoodsDto
=
checkMCCafeOrder
.
getMCCafeShoppingCartGoodsDto
(
createOrderVo
);
// 查询门店信息 营业时间、营业状态,服务器当前时间在营业时间内
StoreResponse
.
BizVO
storeResponseDto
=
checkMCCafeOrder
.
checkOrderByStore
(
createOrderVo
,
trackingNo
);
// 查询小程序自提外卖配置信息 校验当前订单类型的下单参数 校验外卖是否满足起送条件
Integer
pushOrderTime
=
checkMCCafeOrder
.
checkOrderByOrderType
(
createOrderVo
,
userLoginInfoDto
,
storeResponseDto
,
shoppingCartGoodsDto
,
trackingNo
);
checkMCCafeOrder
.
checkOrderByOrderType
(
createOrderVo
,
userLoginInfoDto
,
storeResponseDto
,
shoppingCartGoodsDto
,
trackingNo
);
//暂时没有使用
Integer
pushOrderTime
=
0
;
OrderExtInfoDto
extInfo
=
getExtInfo
(
userLoginInfoDto
,
storeResponseDto
,
pushOrderTime
,
createOrderVo
);
//1.9.2套餐需求同步优化创建订单代码
BaseResponse
createOrderOperateDtoResponse
=
this
.
sdkCreateOrder
(
createOrderVo
,
storeResponseDto
,
shoppingCartGoodsDto
,
userLoginInfoDto
);
...
...
@@ -891,19 +882,19 @@ public class MCCafeOrderServiceImpl implements MCCafeOrderService {
}
//核销优惠券
MCCafeConponRequest
mcCafeCon
ponRequest
=
convertOrderBean2CouponLockRequest
(
orderBean
);
if
(
null
!=
mcCafeCon
ponRequest
)
{
CouponRedeemResponse
couponRedeemResponse
=
couponClientService
.
redeem
(
mcCafeCon
ponRequest
);
//失败则取消订单并解锁优惠券
if
(!
RESPONSE_SUCCESS_CODE
.
equals
(
couponRedeemResponse
.
getStatusCode
()))
{
//异步冲正库存积分等
CancelOrderRequest
cancelOrderRequest
=
orderAdapter
.
convent2CancelOrderRequest
(
orderBean
.
getOid
(),
orderBean
.
getCompanyId
(),
AfterSalesType
.
SYSTEM_CANCEL
,
"支付核销优惠券失败"
,
LogTreadLocal
.
getTrackingNo
(),
null
);
orderCenterSdkService
.
orderCancel
(
cancelOrderRequest
);
backOrdersStatusChange
(
orderBean
.
getOid
(),
orderBean
.
getStatus
());
throw
new
ServiceException
(
ResponseResult
.
COUPON_VERIFICATION_FAIL
);
}
}
// MCCafeCouponRequest mcCafeCou
ponRequest = convertOrderBean2CouponLockRequest(orderBean);
// if(null != mcCafeCou
ponRequest) {
// CouponRedeemResponse couponRedeemResponse = couponClientService.redeem(mcCafeCou
ponRequest);
//
//失败则取消订单并解锁优惠券
//
if(!RESPONSE_SUCCESS_CODE.equals(couponRedeemResponse.getStatusCode())) {
//
//异步冲正库存积分等
//
CancelOrderRequest cancelOrderRequest = orderAdapter.convent2CancelOrderRequest(orderBean.getOid(), orderBean.getCompanyId(),
//
AfterSalesType.SYSTEM_CANCEL, "支付核销优惠券失败", LogTreadLocal.getTrackingNo(), null);
//
orderCenterSdkService.orderCancel(cancelOrderRequest);
//
backOrdersStatusChange(orderBean.getOid(), orderBean.getStatus());
//
throw new ServiceException(ResponseResult.COUPON_VERIFICATION_FAIL);
//
}
//
}
//若该订单使用了优惠券,则移除卡包,移除失败也不退款
couponActivityService
.
callbackNotify
(
orderBean
);
...
...
@@ -1021,100 +1012,6 @@ public class MCCafeOrderServiceImpl implements MCCafeOrderService {
return
list
;
}
private
MCCafeConponRequest
convertOrderBean2CouponLockRequest
(
OrderBean
orderBean
)
{
if
(
null
==
orderBean
||
CollectionUtils
.
isEmpty
(
orderBean
.
getAccountList
()))
{
return
null
;
}
Optional
<
OrderBean
.
AccountBean
>
accountRequest
=
orderBean
.
getAccountList
().
stream
().
filter
(
account
->
orderAdapter
.
getQueryOrderAccountType
(
orderAdapter
.
getOrderAccountType
(
account
.
getType
())).
equals
(
QueryOrderAccountType
.
COUPON
)
||
orderAdapter
.
getQueryOrderAccountType
(
orderAdapter
.
getOrderAccountType
(
account
.
getType
())).
equals
(
QueryOrderAccountType
.
PRODUCT_COUPON
)
||
orderAdapter
.
getQueryOrderAccountType
(
orderAdapter
.
getOrderAccountType
(
account
.
getType
())).
equals
(
QueryOrderAccountType
.
DISCOUNT_COUPON
)).
findFirst
();
if
(!
accountRequest
.
isPresent
()
||
accountRequest
.
get
().
getPrice
()
==
0
)
{
return
null
;
}
OrderBean
.
AccountBean
accountBean
=
accountRequest
.
get
();
List
<
MCCafeProductRedeemVo
>
products
=
new
ArrayList
<>();
//商品券核销核销参数
if
(
QueryOrderAccountType
.
PRODUCT_COUPON
.
equals
(
orderAdapter
.
getQueryOrderAccountType
(
orderAdapter
.
getOrderAccountType
(
accountBean
.
getType
()))))
{
for
(
int
i
=
0
;
i
<
orderBean
.
getProductList
().
size
();
i
++)
{
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
<
OrderBean
.
ProductBean
.
ProductDiscount
>
discounts
=
orderBean
.
getProductList
().
get
(
i
).
getDiscountList
().
stream
().
filter
(
productDiscount
->
productDiscount
.
getDiscountId
().
equals
(
accountBean
.
getAccountId
())).
collect
(
Collectors
.
toList
());
for
(
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
);
}
}
}
}
MCCafeConponRequest
mcCafeConponRequest
=
new
MCCafeConponRequest
();
mcCafeConponRequest
.
setVer
(
Integer
.
valueOf
(
Version
.
VERSION_1
));
mcCafeConponRequest
.
setReqtype
(
CouponReqTypeEnum
.
REDEEM
.
getCode
());
mcCafeConponRequest
.
setPartnerId
(
Integer
.
parseInt
(
orderBean
.
getCompanyId
()));
mcCafeConponRequest
.
setStore_id
(
orderBean
.
getShopId
());
mcCafeConponRequest
.
setStation_id
(
"-1"
);
mcCafeConponRequest
.
setOperator_id
(
"-1"
);
// 订单号
mcCafeConponRequest
.
setTrans_id
(
orderBean
.
getOid
());
mcCafeConponRequest
.
setChannel
(
OrderSourceType
.
ALIPAY
.
getCode
().
equals
(
orderBean
.
getSource
())?
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
);
mcCafeConponRequest
.
setTransactions
(
transactions
);
mcCafeConponRequest
.
setSign
(
"skip"
);
mcCafeConponRequest
.
setAppFlag
(
"kgd.N"
);
mcCafeConponRequest
.
setBusiness_date
(
cn
.
freemud
.
base
.
util
.
DateUtil
.
convert2Str
(
new
Date
(),
cn
.
freemud
.
base
.
util
.
DateUtil
.
FORMAT_yyyyMMdd
));
return
mcCafeConponRequest
;
}
private
MCCafeCouponLockRequest
convertOrderBean2CouponUnlockRequest
(
OrderBean
orderBean
)
{
if
(
null
==
orderBean
||
CollectionUtils
.
isEmpty
(
orderBean
.
getAccountList
()))
{
return
null
;
}
Optional
<
OrderBean
.
AccountBean
>
accountRequest
=
orderBean
.
getAccountList
().
stream
().
filter
(
account
->
orderAdapter
.
getQueryOrderAccountType
(
orderAdapter
.
getOrderAccountType
(
account
.
getType
())).
equals
(
QueryOrderAccountType
.
COUPON
)
||
orderAdapter
.
getQueryOrderAccountType
(
orderAdapter
.
getOrderAccountType
(
account
.
getType
())).
equals
(
QueryOrderAccountType
.
PRODUCT_COUPON
)
||
orderAdapter
.
getQueryOrderAccountType
(
orderAdapter
.
getOrderAccountType
(
account
.
getType
())).
equals
(
QueryOrderAccountType
.
DISCOUNT_COUPON
)).
findFirst
();
if
(!
accountRequest
.
isPresent
()
||
accountRequest
.
get
().
getPrice
()
==
0
)
{
return
null
;
}
OrderBean
.
AccountBean
accountBean
=
accountRequest
.
get
();
MCCafeCouponLockRequest
mcCafeCouponLockRequest
=
new
MCCafeCouponLockRequest
();
mcCafeCouponLockRequest
.
setVer
(
Integer
.
valueOf
(
Version
.
VERSION_1
));
mcCafeCouponLockRequest
.
setReqType
(
CouponReqTypeEnum
.
UNLOCK
.
getCode
());
mcCafeCouponLockRequest
.
setPartnerId
(
orderBean
.
getCompanyId
());
mcCafeCouponLockRequest
.
setStoreId
(
orderBean
.
getShopId
());
// 订单号
mcCafeCouponLockRequest
.
setTransId
(
orderBean
.
getOid
());
mcCafeCouponLockRequest
.
setCoupon
(
accountBean
.
getAccountId
());
mcCafeCouponLockRequest
.
setOfferId
(
accountBean
.
getAccountId
());
mcCafeCouponLockRequest
.
setNumber
(
"1"
);
mcCafeCouponLockRequest
.
setChannel
(
OrderSourceType
.
ALIPAY
.
getCode
().
equals
(
orderBean
.
getSource
())?
MCCafeChannelEnum
.
MOCOFFEE_ZFB
.
getName
():
MCCafeChannelEnum
.
MOCOFFEE_WX
.
getName
());
mcCafeCouponLockRequest
.
setOperatorId
(
"-1"
);
mcCafeCouponLockRequest
.
setStationId
(
"-1"
);
mcCafeCouponLockRequest
.
setSign
(
"skip"
);
return
mcCafeCouponLockRequest
;
}
/**
* 支付后通知确认返回信息
*/
...
...
order-application-service/src/main/java/cn/freemud/service/mccafe/CouponClientService.java
View file @
4198f4d3
...
...
@@ -3,7 +3,7 @@ package cn.freemud.service.mccafe;
import
com.freemud.application.sdk.api.couponcenter.offline.response.CouponBaseResponse
;
import
com.freemud.application.sdk.api.couponcenter.offline.response.CouponQueryResponse
;
import
com.freemud.application.sdk.api.couponcenter.offline.response.CouponRedeemResponse
;
import
cn.freemud.entities.dto.coupon.MCCafeCo
n
ponRequest
;
import
cn.freemud.entities.dto.coupon.MCCafeCo
u
ponRequest
;
import
cn.freemud.entities.dto.coupon.MCCafeCouponLockRequest
;
import
com.freemud.sdk.api.assortment.order.request.order.CreateOrderAccountRequest
;
import
com.freemud.sdk.api.assortment.order.response.order.QueryOrdersResponse
;
...
...
@@ -14,15 +14,19 @@ public interface CouponClientService {
CouponRedeemResponse
redeem
(
QueryOrdersResponse
.
DataBean
.
OrderBean
orderBean
,
List
<
CreateOrderAccountRequest
>
accounts
);
CouponRedeemResponse
redeem
(
MCCafeCo
nponRequest
mcCafeCon
ponRequest
);
CouponRedeemResponse
redeem
(
MCCafeCo
uponRequest
mcCafeCou
ponRequest
);
CouponRedeemResponse
redeemBatch
(
QueryOrdersResponse
.
DataBean
.
OrderBean
orderBean
,
List
<
CreateOrderAccountRequest
>
accounts
);
CouponRedeemResponse
cancelRedeem
(
QueryOrdersResponse
.
DataBean
.
OrderBean
orderBean
,
List
<
CreateOrderAccountRequest
>
accounts
);
CouponQueryResponse
query
(
MCCafeCo
nponRequest
mcCafeCon
ponRequest
);
CouponQueryResponse
query
(
MCCafeCo
uponRequest
mcCafeCou
ponRequest
);
CouponBaseResponse
lock
(
QueryOrdersResponse
.
DataBean
.
OrderBean
orderBean
,
List
<
CreateOrderAccountRequest
>
accounts
);
CouponBaseResponse
lock
(
MCCafeCouponLockRequest
mcCafeCouponLockRequest
);
CouponBaseResponse
lockBatch
(
QueryOrdersResponse
.
DataBean
.
OrderBean
orderBean
,
List
<
CreateOrderAccountRequest
>
accounts
);
CouponBaseResponse
unlock
(
MCCafeCouponLockRequest
mcCafeCouponLockRequest
);
}
order-application-service/src/main/java/cn/freemud/service/mccafe/impl/CouponClientServiceImpl.java
View file @
4198f4d3
package
cn
.
freemud
.
service
.
mccafe
.
impl
;
import
cn.freemud.adapter.CouponAdapter
;
import
cn.freemud.base.constant.Version
;
import
cn.freemud.entities.dto.coupon.MCCafeConponRequest
;
import
cn.freemud.constant.ResponseCodeConstant
;
import
cn.freemud.entities.dto.coupon.MCCafeCouponRequest
;
import
cn.freemud.entities.dto.coupon.MCCafeCouponLockRequest
;
import
cn.freemud.entities.dto.coupon.MCCafeProductRedeemVo
;
import
cn.freemud.entities.dto.coupon.MCCafeTransactionVo
;
...
...
@@ -18,6 +20,7 @@ import com.freemud.sdk.api.assortment.order.request.order.CreateOrderAccountRequ
import
com.freemud.sdk.api.assortment.order.response.order.QueryOrdersResponse
;
import
org.apache.commons.collections4.CollectionUtils
;
import
org.apache.commons.lang3.StringUtils
;
import
org.springframework.beans.BeanUtils
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
...
...
@@ -30,6 +33,9 @@ public class CouponClientServiceImpl implements CouponClientService {
@Autowired
private
CouponOfflineMCCafeClient
couponOfflineMCCafeClient
;
@Autowired
private
CouponAdapter
couponAdapter
;
@Override
public
CouponRedeemResponse
redeem
(
QueryOrdersResponse
.
DataBean
.
OrderBean
orderBean
,
List
<
CreateOrderAccountRequest
>
accounts
)
{
if
(
null
==
orderBean
||
CollectionUtils
.
isEmpty
(
accounts
))
{
...
...
@@ -67,16 +73,16 @@ public class CouponClientServiceImpl implements CouponClientService {
}
}
}
MCCafeCo
nponRequest
mcCafeConponRequest
=
new
MCCafeCon
ponRequest
();
mcCafeCo
n
ponRequest
.
setVer
(
Integer
.
valueOf
(
Version
.
VERSION_1
));
mcCafeCo
n
ponRequest
.
setReqtype
(
CouponReqTypeEnum
.
REDEEM
.
getCode
());
mcCafeCo
n
ponRequest
.
setPartnerId
(
Integer
.
parseInt
(
orderBean
.
getCompanyId
()));
mcCafeCo
n
ponRequest
.
setStore_id
(
orderBean
.
getShopId
());
mcCafeCo
n
ponRequest
.
setStation_id
(
"-1"
);
mcCafeCo
n
ponRequest
.
setOperator_id
(
"-1"
);
MCCafeCo
uponRequest
mcCafeCouponRequest
=
new
MCCafeCou
ponRequest
();
mcCafeCo
u
ponRequest
.
setVer
(
Integer
.
valueOf
(
Version
.
VERSION_1
));
mcCafeCo
u
ponRequest
.
setReqtype
(
CouponReqTypeEnum
.
REDEEM
.
getCode
());
mcCafeCo
u
ponRequest
.
setPartnerId
(
Integer
.
parseInt
(
orderBean
.
getCompanyId
()));
mcCafeCo
u
ponRequest
.
setStore_id
(
orderBean
.
getShopId
());
mcCafeCo
u
ponRequest
.
setStation_id
(
"-1"
);
mcCafeCo
u
ponRequest
.
setOperator_id
(
"-1"
);
// 订单号
mcCafeCo
n
ponRequest
.
setTrans_id
(
orderBean
.
getOid
());
mcCafeCo
n
ponRequest
.
setChannel
(
OrderClientType
.
ALIPAY
.
getIndex
().
toString
().
equals
(
orderBean
.
getOrderClient
())?
MCCafeChannelEnum
.
MOCOFFEE_ZFB
.
getName
():
MCCafeChannelEnum
.
MOCOFFEE_WX
.
getName
());
mcCafeCo
u
ponRequest
.
setTrans_id
(
orderBean
.
getOid
());
mcCafeCo
u
ponRequest
.
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
());
...
...
@@ -85,34 +91,58 @@ public class CouponClientServiceImpl implements CouponClientService {
mcCafeTransactionVo
.
setProducts
(
products
);
}
transactions
.
add
(
mcCafeTransactionVo
);
mcCafeCo
n
ponRequest
.
setTransactions
(
transactions
);
mcCafeCo
n
ponRequest
.
setSign
(
"skip"
);
mcCafeCo
u
ponRequest
.
setTransactions
(
transactions
);
mcCafeCo
u
ponRequest
.
setSign
(
"skip"
);
mcCafeCo
n
ponRequest
.
setAppFlag
(
"kgd.N"
);
mcCafeCo
n
ponRequest
.
setBusiness_date
(
cn
.
freemud
.
base
.
util
.
DateUtil
.
convert2Str
(
new
Date
(),
cn
.
freemud
.
base
.
util
.
DateUtil
.
FORMAT_yyyyMMdd
));
mcCafeCo
u
ponRequest
.
setAppFlag
(
"kgd.N"
);
mcCafeCo
u
ponRequest
.
setBusiness_date
(
cn
.
freemud
.
base
.
util
.
DateUtil
.
convert2Str
(
new
Date
(),
cn
.
freemud
.
base
.
util
.
DateUtil
.
FORMAT_yyyyMMdd
));
return
couponOfflineMCCafeClient
.
redeem
(
mcCafeCo
n
ponRequest
);
return
couponOfflineMCCafeClient
.
redeem
(
mcCafeCo
u
ponRequest
);
}
@Override
public
CouponRedeemResponse
redeem
(
MCCafeCo
nponRequest
mcCafeCon
ponRequest
)
{
return
couponOfflineMCCafeClient
.
redeem
(
mcCafeCo
n
ponRequest
);
public
CouponRedeemResponse
redeem
(
MCCafeCo
uponRequest
mcCafeCou
ponRequest
)
{
return
couponOfflineMCCafeClient
.
redeem
(
mcCafeCo
u
ponRequest
);
}
@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
;
}
CouponRedeemResponse
couponRedeemResponse
=
new
CouponRedeemResponse
();
List
<
MCCafeCouponRequest
>
list
=
new
ArrayList
<>();
accountList
.
forEach
(
accountBean
->
list
.
add
(
couponAdapter
.
convert2MCCafeCouponRequest
(
orderBean
,
accountBean
)));
for
(
MCCafeCouponRequest
request
:
list
)
{
CouponRedeemResponse
redeemResponse
=
redeem
(
request
);
if
(!
ResponseCodeConstant
.
RESPONSE_SUCCESS_STR
.
equals
(
redeemResponse
.
getStatusCode
()))
{
BeanUtils
.
copyProperties
(
redeemResponse
,
couponRedeemResponse
);
break
;
}
}
return
couponRedeemResponse
;
}
@Override
public
CouponRedeemResponse
cancelRedeem
(
QueryOrdersResponse
.
DataBean
.
OrderBean
orderBean
,
List
<
CreateOrderAccountRequest
>
accounts
)
{
MCCafeCo
nponRequest
mcCafeConponRequest
=
new
MCCafeCon
ponRequest
();
return
couponOfflineMCCafeClient
.
cancelRedeem
(
mcCafeCo
n
ponRequest
);
MCCafeCo
uponRequest
mcCafeCouponRequest
=
new
MCCafeCou
ponRequest
();
return
couponOfflineMCCafeClient
.
cancelRedeem
(
mcCafeCo
u
ponRequest
);
}
@Override
public
CouponQueryResponse
query
(
MCCafeCo
nponRequest
mcCafeCon
ponRequest
)
{
return
couponOfflineMCCafeClient
.
query
(
mcCafeCo
n
ponRequest
);
public
CouponQueryResponse
query
(
MCCafeCo
uponRequest
mcCafeCou
ponRequest
)
{
return
couponOfflineMCCafeClient
.
query
(
mcCafeCo
u
ponRequest
);
}
@Override
...
...
@@ -148,6 +178,40 @@ public class CouponClientServiceImpl implements CouponClientService {
}
@Override
public
CouponBaseResponse
lock
(
MCCafeCouponLockRequest
mcCafeCouponLockRequest
)
{
return
null
;
}
@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
;
}
CouponBaseResponse
couponBaseResponse
=
new
CouponBaseResponse
();
List
<
MCCafeCouponLockRequest
>
list
=
new
ArrayList
<>();
accountList
.
forEach
(
accountBean
->
list
.
add
(
couponAdapter
.
convert2MCCafeCouponLockRequest
(
orderBean
,
accountBean
)));
for
(
MCCafeCouponLockRequest
request
:
list
)
{
CouponBaseResponse
baseResponse
=
lock
(
request
);
if
(!
ResponseCodeConstant
.
RESPONSE_SUCCESS_STR
.
equals
(
baseResponse
.
getStatusCode
()))
{
BeanUtils
.
copyProperties
(
baseResponse
,
couponBaseResponse
);
break
;
}
}
return
couponBaseResponse
;
}
@Override
public
CouponBaseResponse
unlock
(
MCCafeCouponLockRequest
mcCafeCouponLockRequest
)
{
return
couponOfflineMCCafeClient
.
unlock
(
mcCafeCouponLockRequest
);
}
...
...
order-application-service/src/main/java/cn/freemud/service/mccafe/impl/MCCafeOrderCenterSdkServiceImpl.java
View file @
4198f4d3
...
...
@@ -204,7 +204,7 @@ public class MCCafeOrderCenterSdkServiceImpl implements MCCafeOrderCenterSdkServ
// 如果是自提,则冻结优惠券,失败提示下单失败并冲正库存积分等
// 如果是外卖,则核销优惠券,失败提示下单失败并冲正库存积分等
if
(
OldOrderType
.
TAKE_OUT
.
getCode
().
equals
(
orderBean
.
getType
()))
{
CouponRedeemResponse
couponRedeemResponse
=
couponClientService
.
redeem
(
orderBean
,
accounts
);
CouponRedeemResponse
couponRedeemResponse
=
couponClientService
.
redeem
Batch
(
orderBean
,
accounts
);
if
(
couponRedeemResponse
!=
null
){
...
...
@@ -219,7 +219,7 @@ public class MCCafeOrderCenterSdkServiceImpl implements MCCafeOrderCenterSdkServ
}
}
}
else
if
(
OldOrderType
.
COLLECT_GOODS
.
getCode
().
equals
(
orderBean
.
getType
())
||
OldOrderType
.
EAT_IN
.
getCode
().
equals
(
orderBean
.
getType
()))
{
CouponBaseResponse
couponBaseResponse
=
couponClientService
.
lock
(
orderBean
,
accounts
);
CouponBaseResponse
couponBaseResponse
=
couponClientService
.
lock
Batch
(
orderBean
,
accounts
);
if
(
couponBaseResponse
!=
null
){
...
...
order-application-service/src/main/java/cn/freemud/service/mccafe/thirdparty/CouponOfflineMCCafeClient.java
View file @
4198f4d3
...
...
@@ -4,7 +4,7 @@ import com.freemud.application.sdk.api.couponcenter.offline.response.CouponBaseR
import
com.freemud.application.sdk.api.couponcenter.offline.response.CouponQueryResponse
;
import
com.freemud.application.sdk.api.couponcenter.offline.response.CouponRedeemResponse
;
import
cn.freemud.entities.dto.coupon.MCCafeCouponLockRequest
;
import
cn.freemud.entities.dto.coupon.MCCafeCo
n
ponRequest
;
import
cn.freemud.entities.dto.coupon.MCCafeCo
u
ponRequest
;
import
org.springframework.cloud.netflix.feign.FeignClient
;
import
org.springframework.web.bind.annotation.PostMapping
;
import
org.springframework.web.bind.annotation.RequestMapping
;
...
...
@@ -14,13 +14,13 @@ import org.springframework.web.bind.annotation.RequestMapping;
public
interface
CouponOfflineMCCafeClient
{
@PostMapping
(
"/mccafe/redeem"
)
CouponRedeemResponse
redeem
(
MCCafeCo
nponRequest
mcCafeCon
ponRequest
);
CouponRedeemResponse
redeem
(
MCCafeCo
uponRequest
mcCafeCou
ponRequest
);
@PostMapping
(
"/mccafe/cancelRedeem"
)
CouponRedeemResponse
cancelRedeem
(
MCCafeCo
nponRequest
mcCafeCon
ponRequest
);
CouponRedeemResponse
cancelRedeem
(
MCCafeCo
uponRequest
mcCafeCou
ponRequest
);
@PostMapping
(
"/mccafe/query"
)
CouponQueryResponse
query
(
MCCafeCo
nponRequest
mcCafeCon
ponRequest
);
CouponQueryResponse
query
(
MCCafeCo
uponRequest
mcCafeCou
ponRequest
);
@PostMapping
(
"/mccafe/lock"
)
CouponBaseResponse
lock
(
MCCafeCouponLockRequest
MCCafeCouponLockRequest
);
...
...
order-application-service/src/test/java/cn.freemud/service/CouponActivityServiceTest.java
View file @
4198f4d3
...
...
@@ -2,7 +2,7 @@ package cn.freemud.service;
import
cn.freemud.OrderApplication
;
import
cn.freemud.base.constant.Version
;
import
cn.freemud.entities.dto.coupon.MCCafeCo
n
ponRequest
;
import
cn.freemud.entities.dto.coupon.MCCafeCo
u
ponRequest
;
import
cn.freemud.entities.dto.coupon.MCCafeCouponLockRequest
;
import
cn.freemud.entities.dto.coupon.MCCafeProductRedeemVo
;
import
cn.freemud.entities.dto.coupon.MCCafeTransactionVo
;
...
...
@@ -30,7 +30,7 @@ public class CouponActivityServiceTest {
@Test
public
void
redeemTest
()
{
MCCafeCo
nponRequest
couponCodeVerificationDto
=
new
MCCafeCon
ponRequest
();
MCCafeCo
uponRequest
couponCodeVerificationDto
=
new
MCCafeCou
ponRequest
();
couponCodeVerificationDto
.
setVer
(
Integer
.
valueOf
(
Version
.
VERSION_1
));
couponCodeVerificationDto
.
setReqtype
(
CouponReqTypeEnum
.
REDEEM
.
getCode
());
couponCodeVerificationDto
.
setPartnerId
(
1205
);
...
...
@@ -63,7 +63,7 @@ public class CouponActivityServiceTest {
@Test
public
void
cancelRedeemTest
()
{
MCCafeCo
nponRequest
couponCodeVerificationDto
=
new
MCCafeCon
ponRequest
();
MCCafeCo
uponRequest
couponCodeVerificationDto
=
new
MCCafeCou
ponRequest
();
couponCodeVerificationDto
.
setVer
(
Integer
.
valueOf
(
Version
.
VERSION_1
));
couponCodeVerificationDto
.
setReqtype
(
CouponReqTypeEnum
.
CANCEL_REDEEM
.
getCode
());
couponCodeVerificationDto
.
setPartnerId
(
1205
);
...
...
@@ -96,7 +96,7 @@ public class CouponActivityServiceTest {
@Test
public
void
queryTest
()
{
MCCafeCo
nponRequest
couponCodeVerificationDto
=
new
MCCafeCon
ponRequest
();
MCCafeCo
uponRequest
couponCodeVerificationDto
=
new
MCCafeCou
ponRequest
();
couponCodeVerificationDto
.
setVer
(
Integer
.
valueOf
(
Version
.
VERSION_1
));
couponCodeVerificationDto
.
setReqtype
(
CouponReqTypeEnum
.
QUERY
.
getCode
());
couponCodeVerificationDto
.
setPartnerId
(
1205
);
...
...
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