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
01e01e0a
Commit
01e01e0a
authored
Dec 20, 2019
by
张明警
Browse files
Options
Browse Files
Download
Plain Diff
Merge remote-tracking branch 'origin/master'
parents
9b72b44a
95a5989c
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
16 additions
and
4 deletions
+16
-4
shopping-cart-application-service/src/main/java/cn/freemud/adapter/ShoppingCartConvertAdapter.java
+7
-0
shopping-cart-application-service/src/main/java/cn/freemud/service/impl/CouponServiceImpl.java
+1
-1
shopping-cart-application-service/src/main/java/cn/freemud/service/impl/DefaultPromotionService.java
+1
-1
shopping-cart-application-service/src/main/java/cn/freemud/service/impl/SetMealServiceImpl.java
+7
-2
No files found.
shopping-cart-application-service/src/main/java/cn/freemud/adapter/ShoppingCartConvertAdapter.java
View file @
01e01e0a
...
...
@@ -153,12 +153,16 @@ public class ShoppingCartConvertAdapter {
*
* @param apportionGoodsList 促销均摊列表
* @param cartGoodsDetailDto 当前商品行
* @param duplicateGoodsMap 当前商品行 此map是为了促销除不尽时,拆商品行所用,例如,3份折扣10元
* key为:goodsId;value以逗号分割:0为goodsId分组对应的数量,value为已计算的折扣金额
*
*/
private
void
setTotalDiscountAndSalePrice
(
List
<
ActivityCalculationDiscountResponseDto
.
CalculationDiscountResult
.
ApportionGoods
>
apportionGoodsList
,
ShoppingCartGoodsDto
.
CartGoodsDetailDto
cartGoodsDetailDto
,
Map
<
String
,
String
>
duplicateGoodsMap
)
{
Long
originalPrice
=
cartGoodsDetailDto
.
getOriginalPrice
();
Long
discountPrice
=
0L
;
int
goodsTotalQty
=
apportionGoodsList
.
stream
().
mapToInt
(
apportionGoods
->
apportionGoods
.
getGoodsQuantity
()).
sum
();
for
(
ActivityCalculationDiscountResponseDto
.
CalculationDiscountResult
.
ApportionGoods
apportionGoods
:
apportionGoodsList
)
{
//折扣=所有折扣和*百分比(当前行商品数量/购物车总商品数量)
discountPrice
+=
apportionGoods
.
getApportionDetails
().
stream
().
filter
(
d
->
ObjectUtils
.
notEqual
(
ActivityTypeEnum
.
TYPE_32
.
getCode
(),
d
.
getActivityType
())
&&
ObjectUtils
.
notEqual
(
ActivityTypeEnum
.
TYPE_104
.
getCode
(),
d
.
getActivityType
())
&&
ObjectUtils
.
notEqual
(
ActivityTypeEnum
.
TYPE_2
.
getCode
(),
d
.
getActivityType
())
).
mapToLong
(
t
->
t
.
getActivityApportionAmount
()
*
apportionGoods
.
getGoodsQuantity
()).
sum
()
*
cartGoodsDetailDto
.
getQty
()
/
goodsTotalQty
;
...
...
@@ -166,17 +170,20 @@ public class ShoppingCartConvertAdapter {
String
currentGoodsIdMap
=
duplicateGoodsMap
.
get
(
cartGoodsDetailDto
.
getSkuId
());
if
(
currentGoodsIdMap
!=
null
)
{
String
[]
value
=
currentGoodsIdMap
.
split
(
","
);
//不是最后一行商品,折扣为discountPrice
if
(
Integer
.
parseInt
(
value
[
0
])
>
1
)
{
int
totalDiscountPrice
=
Integer
.
parseInt
(
value
[
1
])
+
discountPrice
.
intValue
();
int
index
=
Integer
.
parseInt
(
value
[
0
])
-
1
;
duplicateGoodsMap
.
put
(
cartGoodsDetailDto
.
getSkuId
(),
String
.
format
(
"%s,%s"
,
index
,
totalDiscountPrice
));
}
else
{
//最后一行
Long
totalDiscountAmount
=
0L
;
for
(
ActivityCalculationDiscountResponseDto
.
CalculationDiscountResult
.
ApportionGoods
apportionGoods
:
apportionGoodsList
)
{
totalDiscountAmount
+=
apportionGoods
.
getApportionDetails
().
stream
().
filter
(
d
->
ObjectUtils
.
notEqual
(
ActivityTypeEnum
.
TYPE_32
.
getCode
(),
d
.
getActivityType
())
&&
ObjectUtils
.
notEqual
(
ActivityTypeEnum
.
TYPE_104
.
getCode
(),
d
.
getActivityType
())
&&
ObjectUtils
.
notEqual
(
ActivityTypeEnum
.
TYPE_2
.
getCode
(),
d
.
getActivityType
())
).
mapToLong
(
t
->
t
.
getActivityApportionAmount
()
*
apportionGoods
.
getGoodsQuantity
()).
sum
();
}
//折扣为:总折扣金额-已折扣金额
discountPrice
=
totalDiscountAmount
-
Integer
.
parseInt
(
value
[
1
]);
}
}
...
...
shopping-cart-application-service/src/main/java/cn/freemud/service/impl/CouponServiceImpl.java
View file @
01e01e0a
...
...
@@ -532,7 +532,7 @@ public class CouponServiceImpl implements CouponService {
// 数量
product
.
setQuantity
(
cartGood
.
getQty
());
productList
.
add
(
product
);
totalAmount
=
totalAmount
+
cartGood
.
getOriginalPrice
()
*
cartGood
.
getQty
();
totalAmount
=
totalAmount
+
product
.
getAmount
()
*
cartGood
.
getQty
();
}
return
totalAmount
;
}
...
...
shopping-cart-application-service/src/main/java/cn/freemud/service/impl/DefaultPromotionService.java
View file @
01e01e0a
...
...
@@ -113,7 +113,7 @@ public class DefaultPromotionService implements IPromotionService {
shoppingCartGoodsDto
.
setActivityDiscountsDtos
(
activityDiscountsDtos
);
if
(
null
!=
calculationDiscountResult
&&
((
CollectionUtils
.
isNotEmpty
(
activityDiscountsDtos
)
||
CollectionUtils
.
isNotEmpty
(
addMoneyDiscounts
)))
)
{
if
(
null
!=
calculationDiscountResult
)
{
//处理加价购
List
<
SubtractStockVO
>
stocks
=
filterSendGoodsStocks
(
calculationDiscountResult
.
getStocks
(),
shoppingCartInfoRequestVo
,
addMoneyDiscounts
);
if
(
CollectionUtils
.
isNotEmpty
(
stocks
))
{
...
...
shopping-cart-application-service/src/main/java/cn/freemud/service/impl/SetMealServiceImpl.java
View file @
01e01e0a
...
...
@@ -86,7 +86,12 @@ public class SetMealServiceImpl implements IPromotionService {
List
<
ShoppingCartGoodsDto
.
CartGoodsDetailDto
>
cartGoodsDetailDtos
=
shoppingCartGoodsDto
.
getProducts
();
List
<
ActivityCalculationDiscountResponseDto
.
CalculationDiscountResult
.
ApportionGoods
>
apportionGoods
=
calculationDiscountResult
==
null
?
new
ArrayList
<>()
:
calculationDiscountResult
.
getApportionGoods
();
// key为:goodsId;value以逗号分割:0为goodsId分组对应的数量,value为已计算的折扣金额
//此map是为了促销除不尽时,拆商品行所用,例如,3份折扣10元
Map
<
String
,
String
>
duplicateGoodsMap
=
new
HashMap
<>();
shoppingCartGoodsResponseVo
.
getProducts
().
stream
().
filter
(
product
->
ObjectUtils
.
equals
(
GoodsTypeEnum
.
SET_MEAL_GOODS
.
getGoodsType
(),
product
.
getGoodsType
())).
collect
(
Collectors
.
groupingBy
(
CartGoods:
:
getGoodsId
,
Collectors
.
counting
())).
forEach
((
goodsId
,
count
)
->
{
duplicateGoodsMap
.
put
(
goodsId
,
String
.
format
(
"%s,0"
,
count
));
});
// 套餐优惠明细
for
(
CartGoods
cartGoods
:
shoppingCartGoodsResponseVo
.
getProducts
())
{
if
(
ObjectUtils
.
equals
(
GoodsTypeEnum
.
SET_MEAL_GOODS
.
getGoodsType
(),
cartGoods
.
getGoodsType
()))
{
...
...
@@ -97,7 +102,7 @@ public class SetMealServiceImpl implements IPromotionService {
int
productGroupDiscountAmount
=
cartGoods
.
getProductGroupList
().
stream
().
mapToInt
(
t
->
t
.
getFinalPrice
().
intValue
()
*
t
.
getQty
()).
sum
();
totalDiscountAmount
+=
discountAmount
-
productGroupDiscountAmount
*
cartGoods
.
getQty
();
// 添加套餐父商品
ShoppingCartGoodsDto
.
CartGoodsDetailDto
parentCartGoods
=
shoppingCartConvertAdapter
.
convertCartGoods2DetailGoods
(
cartGoods
,
apportionGoods
,
new
HashMap
<>()
);
ShoppingCartGoodsDto
.
CartGoodsDetailDto
parentCartGoods
=
shoppingCartConvertAdapter
.
convertCartGoods2DetailGoods
(
cartGoods
,
apportionGoods
,
duplicateGoodsMap
);
parentCartGoods
.
setTotalDiscountAmount
(
parentCartGoods
.
getTotalDiscountAmount
()+
cartGoods
.
getOriginalAmount
().
intValue
()
-
cartGoods
.
getAmount
().
intValue
());
parentCartGoods
.
getActivityDiscountsDtos
().
add
(
getActivityDiscountsDto
(
discountAmount
-
productGroupDiscountAmount
*
cartGoods
.
getQty
()));
// 添加套餐固定商品&可选商品: 做均摊
...
...
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