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
jenkins
order-group
Commits
d95fdfe1
Commit
d95fdfe1
authored
Dec 19, 2019
by
shuhu.hou@freemud.cn
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'feature/20191119_套餐特价'
parents
75ec00c5
36dc5151
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
14 additions
and
2 deletions
+14
-2
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/SetMealServiceImpl.java
+7
-2
No files found.
shopping-cart-application-service/src/main/java/cn/freemud/adapter/ShoppingCartConvertAdapter.java
View file @
d95fdfe1
...
@@ -153,12 +153,16 @@ public class ShoppingCartConvertAdapter {
...
@@ -153,12 +153,16 @@ public class ShoppingCartConvertAdapter {
*
*
* @param apportionGoodsList 促销均摊列表
* @param apportionGoodsList 促销均摊列表
* @param cartGoodsDetailDto 当前商品行
* @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
)
{
private
void
setTotalDiscountAndSalePrice
(
List
<
ActivityCalculationDiscountResponseDto
.
CalculationDiscountResult
.
ApportionGoods
>
apportionGoodsList
,
ShoppingCartGoodsDto
.
CartGoodsDetailDto
cartGoodsDetailDto
,
Map
<
String
,
String
>
duplicateGoodsMap
)
{
Long
originalPrice
=
cartGoodsDetailDto
.
getOriginalPrice
();
Long
originalPrice
=
cartGoodsDetailDto
.
getOriginalPrice
();
Long
discountPrice
=
0L
;
Long
discountPrice
=
0L
;
int
goodsTotalQty
=
apportionGoodsList
.
stream
().
mapToInt
(
apportionGoods
->
apportionGoods
.
getGoodsQuantity
()).
sum
();
int
goodsTotalQty
=
apportionGoodsList
.
stream
().
mapToInt
(
apportionGoods
->
apportionGoods
.
getGoodsQuantity
()).
sum
();
for
(
ActivityCalculationDiscountResponseDto
.
CalculationDiscountResult
.
ApportionGoods
apportionGoods
:
apportionGoodsList
)
{
for
(
ActivityCalculationDiscountResponseDto
.
CalculationDiscountResult
.
ApportionGoods
apportionGoods
:
apportionGoodsList
)
{
//折扣=所有折扣和*百分比(当前行商品数量/购物车总商品数量)
discountPrice
+=
apportionGoods
.
getApportionDetails
().
stream
().
filter
(
d
->
ObjectUtils
.
notEqual
(
ActivityTypeEnum
.
TYPE_32
.
getCode
(),
d
.
getActivityType
())
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
())
&&
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
;
).
mapToLong
(
t
->
t
.
getActivityApportionAmount
()
*
apportionGoods
.
getGoodsQuantity
()).
sum
()
*
cartGoodsDetailDto
.
getQty
()
/
goodsTotalQty
;
...
@@ -166,17 +170,20 @@ public class ShoppingCartConvertAdapter {
...
@@ -166,17 +170,20 @@ public class ShoppingCartConvertAdapter {
String
currentGoodsIdMap
=
duplicateGoodsMap
.
get
(
cartGoodsDetailDto
.
getSkuId
());
String
currentGoodsIdMap
=
duplicateGoodsMap
.
get
(
cartGoodsDetailDto
.
getSkuId
());
if
(
currentGoodsIdMap
!=
null
)
{
if
(
currentGoodsIdMap
!=
null
)
{
String
[]
value
=
currentGoodsIdMap
.
split
(
","
);
String
[]
value
=
currentGoodsIdMap
.
split
(
","
);
//不是最后一行商品,折扣为discountPrice
if
(
Integer
.
parseInt
(
value
[
0
])
>
1
)
{
if
(
Integer
.
parseInt
(
value
[
0
])
>
1
)
{
int
totalDiscountPrice
=
Integer
.
parseInt
(
value
[
1
])
+
discountPrice
.
intValue
();
int
totalDiscountPrice
=
Integer
.
parseInt
(
value
[
1
])
+
discountPrice
.
intValue
();
int
index
=
Integer
.
parseInt
(
value
[
0
])
-
1
;
int
index
=
Integer
.
parseInt
(
value
[
0
])
-
1
;
duplicateGoodsMap
.
put
(
cartGoodsDetailDto
.
getSkuId
(),
String
.
format
(
"%s,%s"
,
index
,
totalDiscountPrice
));
duplicateGoodsMap
.
put
(
cartGoodsDetailDto
.
getSkuId
(),
String
.
format
(
"%s,%s"
,
index
,
totalDiscountPrice
));
}
else
{
}
else
{
//最后一行
Long
totalDiscountAmount
=
0L
;
Long
totalDiscountAmount
=
0L
;
for
(
ActivityCalculationDiscountResponseDto
.
CalculationDiscountResult
.
ApportionGoods
apportionGoods
:
apportionGoodsList
)
{
for
(
ActivityCalculationDiscountResponseDto
.
CalculationDiscountResult
.
ApportionGoods
apportionGoods
:
apportionGoodsList
)
{
totalDiscountAmount
+=
apportionGoods
.
getApportionDetails
().
stream
().
filter
(
d
->
ObjectUtils
.
notEqual
(
ActivityTypeEnum
.
TYPE_32
.
getCode
(),
d
.
getActivityType
())
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
())
&&
ObjectUtils
.
notEqual
(
ActivityTypeEnum
.
TYPE_104
.
getCode
(),
d
.
getActivityType
())
&&
ObjectUtils
.
notEqual
(
ActivityTypeEnum
.
TYPE_2
.
getCode
(),
d
.
getActivityType
())
).
mapToLong
(
t
->
t
.
getActivityApportionAmount
()
*
apportionGoods
.
getGoodsQuantity
()).
sum
();
).
mapToLong
(
t
->
t
.
getActivityApportionAmount
()
*
apportionGoods
.
getGoodsQuantity
()).
sum
();
}
}
//折扣为:总折扣金额-已折扣金额
discountPrice
=
totalDiscountAmount
-
Integer
.
parseInt
(
value
[
1
]);
discountPrice
=
totalDiscountAmount
-
Integer
.
parseInt
(
value
[
1
]);
}
}
}
}
...
...
shopping-cart-application-service/src/main/java/cn/freemud/service/impl/SetMealServiceImpl.java
View file @
d95fdfe1
...
@@ -86,7 +86,12 @@ public class SetMealServiceImpl implements IPromotionService {
...
@@ -86,7 +86,12 @@ public class SetMealServiceImpl implements IPromotionService {
List
<
ShoppingCartGoodsDto
.
CartGoodsDetailDto
>
cartGoodsDetailDtos
=
shoppingCartGoodsDto
.
getProducts
();
List
<
ShoppingCartGoodsDto
.
CartGoodsDetailDto
>
cartGoodsDetailDtos
=
shoppingCartGoodsDto
.
getProducts
();
List
<
ActivityCalculationDiscountResponseDto
.
CalculationDiscountResult
.
ApportionGoods
>
apportionGoods
=
calculationDiscountResult
==
null
?
new
ArrayList
<>()
List
<
ActivityCalculationDiscountResponseDto
.
CalculationDiscountResult
.
ApportionGoods
>
apportionGoods
=
calculationDiscountResult
==
null
?
new
ArrayList
<>()
:
calculationDiscountResult
.
getApportionGoods
();
:
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
())
{
for
(
CartGoods
cartGoods
:
shoppingCartGoodsResponseVo
.
getProducts
())
{
if
(
ObjectUtils
.
equals
(
GoodsTypeEnum
.
SET_MEAL_GOODS
.
getGoodsType
(),
cartGoods
.
getGoodsType
()))
{
if
(
ObjectUtils
.
equals
(
GoodsTypeEnum
.
SET_MEAL_GOODS
.
getGoodsType
(),
cartGoods
.
getGoodsType
()))
{
...
@@ -97,7 +102,7 @@ public class SetMealServiceImpl implements IPromotionService {
...
@@ -97,7 +102,7 @@ public class SetMealServiceImpl implements IPromotionService {
int
productGroupDiscountAmount
=
cartGoods
.
getProductGroupList
().
stream
().
mapToInt
(
t
->
t
.
getFinalPrice
().
intValue
()
*
t
.
getQty
()).
sum
();
int
productGroupDiscountAmount
=
cartGoods
.
getProductGroupList
().
stream
().
mapToInt
(
t
->
t
.
getFinalPrice
().
intValue
()
*
t
.
getQty
()).
sum
();
totalDiscountAmount
+=
discountAmount
-
productGroupDiscountAmount
*
cartGoods
.
getQty
();
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
.
setTotalDiscountAmount
(
parentCartGoods
.
getTotalDiscountAmount
()+
cartGoods
.
getOriginalAmount
().
intValue
()
-
cartGoods
.
getAmount
().
intValue
());
parentCartGoods
.
getActivityDiscountsDtos
().
add
(
getActivityDiscountsDto
(
discountAmount
-
productGroupDiscountAmount
*
cartGoods
.
getQty
()));
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