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
300d7310
Commit
300d7310
authored
Oct 17, 2020
by
huiyang.chen
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
fix 随单购折扣信息
parent
40cdf4f6
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
50 additions
and
26 deletions
+50
-26
shopping-cart-application-service/src/main/java/cn/freemud/service/impl/mcoffee/calculation/CouponDiscountCalculation.java
+50
-26
No files found.
shopping-cart-application-service/src/main/java/cn/freemud/service/impl/mcoffee/calculation/CouponDiscountCalculation.java
View file @
300d7310
...
...
@@ -64,7 +64,8 @@ public class CouponDiscountCalculation {
// private CardBinClient cardBinClient;
@Value
(
"${coupon.app.id}"
)
private
String
appid
;
@Value
(
"${mccafe.universal.coupon.code }"
)
private
String
mccafeUniversalCouponCode
;
private
static
final
String
mcafe
=
"mccafe"
;
...
...
@@ -75,9 +76,9 @@ public class CouponDiscountCalculation {
*/
public
void
updateShoppingCartGoodsDiscount
(
CouponPromotionVO
couponPromotionVO
,
ActivityCalculationDiscountResponseDto
.
CalculationDiscountResult
calculationDiscountResult
,
List
<
CartGoods
>
cartGoodsList
,
ShoppingCartGoodsResponseVo
shoppingCartGoodsResponseVo
)
{
if
(
calculationDiscountResult
==
null
||
CollectionUtils
.
isEmpty
(
calculationDiscountResult
.
get
Coupon
Discounts
())
||
!
calculationDiscountResult
.
get
CouponDiscounts
().
stream
().
anyMatch
(
discount
->
(
ActivityTypeEnum
.
TYPE_3
.
getCode
().
equals
(
discount
.
getActivity
Type
())
||(
ActivityTypeEnum
.
TYPE_31
.
getCode
().
equals
(
discount
.
get
ActivityType
()))
||
(
ActivityTypeEnum
.
TYPE_32
.
getCode
().
equals
(
discount
.
getActivity
Type
()))
)))
{
if
(
calculationDiscountResult
==
null
||
CollectionUtils
.
isEmpty
(
calculationDiscountResult
.
getDiscounts
())
||
!
calculationDiscountResult
.
get
Discounts
().
stream
().
anyMatch
(
discount
->
(
ActivityTypeEnum
.
TYPE_3
.
getCode
().
equals
(
discount
.
get
Type
())
||(
ActivityTypeEnum
.
TYPE_31
.
getCode
().
equals
(
discount
.
get
Type
()))
||
(
ActivityTypeEnum
.
TYPE_32
.
getCode
().
equals
(
discount
.
get
Type
()))
)))
{
return
;
}
List
<
ActivityCalculationDiscountResponseDto
.
CalculationDiscountResult
.
Goods
>
goodsList
=
calculationDiscountResult
.
getGoods
();
...
...
@@ -85,12 +86,26 @@ public class CouponDiscountCalculation {
return
;
}
//订单级别券优惠
List
<
ActivityCalculationDiscountResponseDto
.
CalculationDiscountResult
.
Discount
>
discounts
=
calculationDiscountResult
.
getDiscounts
();
if
(
CollectionUtils
.
isEmpty
(
discounts
))
{
return
;
}
List
<
ActivityCalculationDiscountResponseDto
.
CalculationDiscountResult
.
Discount
>
couponDiscounts
=
discounts
.
stream
().
filter
(
discount
->
(
ActivityTypeEnum
.
TYPE_3
.
getCode
().
equals
(
discount
.
getType
())
||
(
ActivityTypeEnum
.
TYPE_31
.
getCode
().
equals
(
discount
.
getType
()))
||
(
ActivityTypeEnum
.
TYPE_32
.
getCode
().
equals
(
discount
.
getType
())))).
collect
(
Collectors
.
toList
());
if
(
CollectionUtils
.
isNotEmpty
(
couponDiscounts
))
{
return
;
}
Map
<
String
,
ActivityCalculationDiscountResponseDto
.
CalculationDiscountResult
.
Goods
>
goodsMap
=
goodsList
.
parallelStream
()
.
collect
(
Collectors
.
toMap
(
ActivityCalculationDiscountResponseDto
.
CalculationDiscountResult
.
Goods
::
getGoodsId
,
Function
.
identity
(),
(
k1
,
k2
)
->
k1
));
.
collect
(
Collectors
.
toMap
(
ActivityCalculationDiscountResponseDto
.
CalculationDiscountResult
.
Goods
::
getCartGoodsUid
,
Function
.
identity
(),
(
k1
,
k2
)
->
k1
));
// 匹配随单购悦享卡
ActivityCalculationDiscountResponseDto
.
CalculationDiscountResult
.
Discount
discountMon
=
couponDiscounts
.
stream
().
filter
(
t
->
(
ActivityTypeEnum
.
TYPE_32
.
getCode
().
equals
(
t
.
getType
())
&&
mccafeUniversalCouponCode
.
equals
(
t
.
getActivityCode
()))).
findFirst
().
orElse
(
null
);
for
(
CartGoods
cartGoods
:
cartGoodsList
)
{
//商品券商品
if
(
StringUtils
.
isNotBlank
(
cartGoods
.
getCouponCode
()))
{
if
(
StringUtils
.
isNotBlank
(
cartGoods
.
getCouponCode
())
||
discountMon
!=
null
)
{
// String couponCode = cartGoods.getCouponCode();
// // 计算优惠信息时,已将券校验过,放在map中
// Map<String, CheckSpqInfoResponseDto> validCouponMap = calculationDiscountResult.getValidCouponMap();
...
...
@@ -105,19 +120,18 @@ public class CouponDiscountCalculation {
// cartGoods.setSpuName(checkSpqInfoResponseDto.getSpuName());
// }
// }
if
(
goodsMap
.
get
(
cartGoods
.
get
GoodsI
d
())
==
null
)
{
if
(
goodsMap
.
get
(
cartGoods
.
get
CartGoodsUi
d
())
==
null
)
{
continue
;
}
cartGoods
.
setAmount
(
goodsMap
.
get
(
cartGoods
.
get
GoodsI
d
()).
getRealAmount
());
cartGoods
.
setAmount
(
goodsMap
.
get
(
cartGoods
.
get
CartGoodsUi
d
()).
getRealAmount
());
}
}
// 当couponCode不为空时,需计算优惠价格
long
couponDiscount
=
0
;
List
<
ActivityCalculationDiscountResponseDto
.
CalculationDiscountResult
.
CouponResults
>
couponResultsList
=
calculationDiscountResult
.
getCouponDiscounts
();
if
(
CollectionUtils
.
isNotEmpty
(
couponResultsList
))
{
for
(
ActivityCalculationDiscountResponseDto
.
CalculationDiscountResult
.
CouponResults
couponResults
:
couponResultsList
)
{
couponDiscount
=
couponDiscount
+
(
couponResults
.
getDiscountAmount
()
==
null
?
0
:
couponResults
.
getDiscountAmount
());
if
(
CollectionUtils
.
isNotEmpty
(
couponDiscounts
))
{
for
(
ActivityCalculationDiscountResponseDto
.
CalculationDiscountResult
.
Discount
couponResults
:
couponDiscounts
)
{
couponDiscount
=
couponDiscount
+
(
couponResults
.
getDiscount
()
==
null
?
0
:
couponResults
.
getDiscount
());
}
}
shoppingCartGoodsResponseVo
.
setCouponDiscount
(
couponDiscount
);
...
...
@@ -129,13 +143,21 @@ public class CouponDiscountCalculation {
*/
public
void
updateShoppingCartGoodsApportion
(
ActivityCalculationDiscountResponseDto
.
CalculationDiscountResult
calculationDiscountResult
,
ShoppingCartGoodsDto
shoppingCartGoodsDto
){
if
(
calculationDiscountResult
==
null
||
CollectionUtils
.
isEmpty
(
calculationDiscountResult
.
get
Coupon
Discounts
())
||
!
calculationDiscountResult
.
get
CouponDiscounts
().
stream
().
anyMatch
(
discount
->
(
ActivityTypeEnum
.
TYPE_3
.
getCode
().
equals
(
discount
.
getActivity
Type
())
||(
ActivityTypeEnum
.
TYPE_31
.
getCode
().
equals
(
discount
.
get
ActivityType
()))
||
(
ActivityTypeEnum
.
TYPE_32
.
getCode
().
equals
(
discount
.
getActivity
Type
()))
)))
{
if
(
calculationDiscountResult
==
null
||
CollectionUtils
.
isEmpty
(
calculationDiscountResult
.
getDiscounts
())
||
!
calculationDiscountResult
.
get
Discounts
().
stream
().
anyMatch
(
discount
->
(
ActivityTypeEnum
.
TYPE_3
.
getCode
().
equals
(
discount
.
get
Type
())
||(
ActivityTypeEnum
.
TYPE_31
.
getCode
().
equals
(
discount
.
get
Type
()))
||
(
ActivityTypeEnum
.
TYPE_32
.
getCode
().
equals
(
discount
.
get
Type
()))
)))
{
return
;
}
//订单级别券优惠
List
<
ActivityCalculationDiscountResponseDto
.
CalculationDiscountResult
.
CouponResults
>
couponDiscounts
=
calculationDiscountResult
.
getCouponDiscounts
();
List
<
ActivityCalculationDiscountResponseDto
.
CalculationDiscountResult
.
Discount
>
couponDiscounts
=
calculationDiscountResult
.
getDiscounts
();
if
(
CollectionUtils
.
isEmpty
(
couponDiscounts
))
{
return
;
}
List
<
ActivityCalculationDiscountResponseDto
.
CalculationDiscountResult
.
Discount
>
discounts
=
couponDiscounts
.
stream
().
filter
(
discount
->
(
ActivityTypeEnum
.
TYPE_3
.
getCode
().
equals
(
discount
.
getType
())
||
(
ActivityTypeEnum
.
TYPE_31
.
getCode
().
equals
(
discount
.
getType
()))
||
(
ActivityTypeEnum
.
TYPE_32
.
getCode
().
equals
(
discount
.
getType
())))).
collect
(
Collectors
.
toList
());
if
(
CollectionUtils
.
isNotEmpty
(
discounts
))
{
return
;
}
List
<
ActivityCalculationDiscountResponseDto
.
CalculationDiscountResult
.
Goods
>
goodsList
=
calculationDiscountResult
.
getGoods
();
if
(
CollectionUtils
.
isEmpty
(
goodsList
))
{
...
...
@@ -143,19 +165,21 @@ public class CouponDiscountCalculation {
}
Map
<
String
,
ActivityCalculationDiscountResponseDto
.
CalculationDiscountResult
.
Goods
>
goodsMap
=
goodsList
.
parallelStream
()
.
collect
(
Collectors
.
toMap
(
ActivityCalculationDiscountResponseDto
.
CalculationDiscountResult
.
Goods
::
get
GoodsI
d
,
Function
.
identity
(),
(
k1
,
k2
)
->
k1
));
.
collect
(
Collectors
.
toMap
(
ActivityCalculationDiscountResponseDto
.
CalculationDiscountResult
.
Goods
::
get
CartGoodsUi
d
,
Function
.
identity
(),
(
k1
,
k2
)
->
k1
));
// 匹配随单购悦享卡
ActivityCalculationDiscountResponseDto
.
CalculationDiscountResult
.
Discount
discount
=
discounts
.
stream
().
filter
(
t
->
(
ActivityTypeEnum
.
TYPE_32
.
getCode
().
equals
(
t
.
getType
())
&&
mccafeUniversalCouponCode
.
equals
(
t
.
getActivityCode
()))).
findFirst
().
orElse
(
null
);
for
(
ShoppingCartGoodsDto
.
CartGoodsDetailDto
cartGoods
:
shoppingCartGoodsDto
.
getProducts
())
{
//商品券商品
if
(
StringUtils
.
isNotEmpty
(
cartGoods
.
getCouponCode
()))
{
if
(
StringUtils
.
isNotEmpty
(
cartGoods
.
getCouponCode
())
||
discount
!=
null
)
{
List
<
ActivityDiscountsDto
>
productActivityDiscountsDtos
=
new
ArrayList
<>();
for
(
ActivityCalculationDiscountResponseDto
.
CalculationDiscountResult
.
CouponResults
couponDiscount
:
couponD
iscounts
)
{
if
(
couponDiscount
.
getCouponCode
().
equals
(
cartGoods
.
getCouponCode
()))
{
for
(
ActivityCalculationDiscountResponseDto
.
CalculationDiscountResult
.
Discount
couponDiscount
:
d
iscounts
)
{
if
(
couponDiscount
.
getActivityCode
().
equals
(
cartGoods
.
getCouponCode
()))
{
ActivityDiscountsDto
activityDiscountsDto
=
new
ActivityDiscountsDto
();
activityDiscountsDto
.
setActivityCode
(
couponDiscount
.
get
Coupon
Code
());
activityDiscountsDto
.
setActivityCode
(
couponDiscount
.
get
Activity
Code
());
activityDiscountsDto
.
setActivityName
(
couponDiscount
.
getActivityName
());
activityDiscountsDto
.
setActivityType
(
couponDiscount
.
get
Activity
Type
());
activityDiscountsDto
.
setDiscountAmount
(
0
-
couponDiscount
.
getDiscount
Amount
());
activityDiscountsDto
.
setActivityType
(
couponDiscount
.
getType
());
activityDiscountsDto
.
setDiscountAmount
(
0
-
couponDiscount
.
getDiscount
());
productActivityDiscountsDtos
.
add
(
activityDiscountsDto
);
cartGoods
.
setTotalDiscountAmount
(-
activityDiscountsDto
.
getDiscountAmount
());
...
...
@@ -164,14 +188,14 @@ public class CouponDiscountCalculation {
}
}
if
(
goodsMap
.
get
(
cartGoods
.
get
SkuI
d
())
==
null
)
{
if
(
goodsMap
.
get
(
cartGoods
.
get
CartGoodsUi
d
())
==
null
)
{
continue
;
}
//商品券键位编号为空
if
(
StringUtils
.
isBlank
(
goodsMap
.
get
(
cartGoods
.
get
SkuI
d
()).
getArtNo
())){
if
(
StringUtils
.
isBlank
(
goodsMap
.
get
(
cartGoods
.
get
CartGoodsUi
d
()).
getArtNo
())){
throw
new
ServiceException
(
ResponseResult
.
SHOPPING_CART_SEAT_EMPTY
);
}
cartGoods
.
setCustomerCode
(
goodsMap
.
get
(
cartGoods
.
get
SkuI
d
()).
getArtNo
());
cartGoods
.
setCustomerCode
(
goodsMap
.
get
(
cartGoods
.
get
CartGoodsUi
d
()).
getArtNo
());
}
}
...
...
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