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
4403adbd
Commit
4403adbd
authored
Jul 24, 2020
by
xiaoer.li@freemud.com
Browse files
Options
Browse Files
Download
Plain Diff
Merge remote-tracking branch 'remotes/origin/feature/1.9.30_买一赠一&第X件Y折'
parents
971ea04e
b3b05aae
Hide whitespace changes
Inline
Side-by-side
Showing
9 changed files
with
154 additions
and
40 deletions
+154
-40
shopping-cart-application-service/src/main/java/cn/freemud/adapter/ShoppingCartConvertAdapter.java
+1
-0
shopping-cart-application-service/src/main/java/cn/freemud/entities/dto/ActivityCalculationDiscountRequestDto.java
+4
-0
shopping-cart-application-service/src/main/java/cn/freemud/entities/dto/ActivityCalculationDiscountResponseDto.java
+4
-0
shopping-cart-application-service/src/main/java/cn/freemud/entities/dto/shoppingCart/ShoppingCartGoodsDto.java
+4
-0
shopping-cart-application-service/src/main/java/cn/freemud/service/impl/BuySendPromotionService.java
+58
-13
shopping-cart-application-service/src/main/java/cn/freemud/service/impl/SetMealServiceImpl.java
+1
-1
shopping-cart-application-service/src/main/java/cn/freemud/service/impl/ShoppingCartNewServiceImpl.java
+5
-4
shopping-cart-application-service/src/main/java/cn/freemud/service/impl/TimeSalePromotionService.java
+1
-0
shopping-cart-application-service/src/main/java/cn/freemud/service/impl/XyDiscountServiceImpl.java
+76
-22
No files found.
shopping-cart-application-service/src/main/java/cn/freemud/adapter/ShoppingCartConvertAdapter.java
View file @
4403adbd
...
...
@@ -84,6 +84,7 @@ public class ShoppingCartConvertAdapter {
public
ShoppingCartGoodsDto
.
CartGoodsDetailDto
convertCartGoods2DetailGoods
(
CartGoods
cartGoods
,
List
<
ActivityCalculationDiscountResponseDto
.
CalculationDiscountResult
.
ApportionGoods
>
apportionGoodsList
,
Map
<
String
,
String
>
duplicateGoodsMap
)
{
// 设置基础信息
ShoppingCartGoodsDto
.
CartGoodsDetailDto
cartGoodsDetailDto
=
new
ShoppingCartGoodsDto
.
CartGoodsDetailDto
();
cartGoodsDetailDto
.
setCartGoodsUid
(
cartGoods
.
getCartGoodsUid
());
cartGoodsDetailDto
.
setSpuId
(
cartGoods
.
getSpuId
());
cartGoodsDetailDto
.
setSpuName
(
cartGoods
.
getSpuName
());
cartGoodsDetailDto
.
setSkuId
(
StringUtils
.
isEmpty
(
cartGoods
.
getSkuId
())
?
cartGoods
.
getSpuId
()
:
cartGoods
.
getSkuId
());
...
...
shopping-cart-application-service/src/main/java/cn/freemud/entities/dto/ActivityCalculationDiscountRequestDto.java
View file @
4403adbd
...
...
@@ -87,6 +87,10 @@ public class ActivityCalculationDiscountRequestDto {
*/
private
String
goodsId
;
/**
* 购物车行uid
*/
private
String
cartGoodsUid
;
/**
* 商品品类
*/
private
String
category
;
...
...
shopping-cart-application-service/src/main/java/cn/freemud/entities/dto/ActivityCalculationDiscountResponseDto.java
View file @
4403adbd
...
...
@@ -347,6 +347,10 @@ public class ActivityCalculationDiscountResponseDto {
private
Integer
apportionAmount
;
private
List
<
ApportionDetails
>
apportionDetails
;
/**
* 购物车行记录
*/
private
String
cartGoodsUid
;
@Data
public
static
class
ApportionDetails
{
...
...
shopping-cart-application-service/src/main/java/cn/freemud/entities/dto/shoppingCart/ShoppingCartGoodsDto.java
View file @
4403adbd
...
...
@@ -125,6 +125,10 @@ public class ShoppingCartGoodsDto {
@Data
public
static
class
CartGoodsDetailDto
{
/**
* 购物车行uid
*/
private
String
cartGoodsUid
;
/**
* spuId
*/
private
String
spuId
;
...
...
shopping-cart-application-service/src/main/java/cn/freemud/service/impl/BuySendPromotionService.java
View file @
4403adbd
...
...
@@ -24,7 +24,6 @@ import org.springframework.stereotype.Service;
import
java.util.*
;
import
java.util.function.Function
;
import
java.util.stream.Collectors
;
import
java.util.stream.Stream
;
/**
* All rights Reserved, Designed By www.freemud.cn
...
...
@@ -60,17 +59,37 @@ public class BuySendPromotionService implements IPromotionService {
if
(
CollectionUtils
.
isEmpty
(
sendActivityList
))
{
return
;
}
ActivityCalculationDiscountResponseDto
.
CalculationDiscountResult
.
SendActivity
sendActivity
=
getSendActivity
(
sendActivityList
,
ActivityTypeEnum
.
TYPE_61
);
if
(
sendActivity
==
null
)
{
//ActivityCalculationDiscountResponseDto.CalculationDiscountResult.SendActivity sendActivity = getSendActivity(sendActivityList, ActivityTypeEnum.TYPE_61);
//if (sendActivity == null) {
// return;
//}
//Todo 获取多个赠品list
List
<
ActivityCalculationDiscountResponseDto
.
CalculationDiscountResult
.
SendActivity
>
sendActivityLists
=
getSendActivityList
(
ActivityTypeEnum
.
TYPE_61
,
sendActivityList
);
//Todo 获取多个赠品list
if
(
sendActivityLists
.
size
()
==
0
)
{
return
;
}
List
<
ActivityCalculationDiscountResponseDto
.
CalculationDiscountResult
.
SendActivity
.
SendGoods
>
sendGoodsList
=
sendActivity
.
getSendGoods
();
if
(
CollectionUtils
.
isEmpty
(
sendGoodsList
))
{
return
;
//List<ActivityCalculationDiscountResponseDto.CalculationDiscountResult.SendActivity.SendGoods> sendGoodsList = sendActivity.getSendGoods();
//if (CollectionUtils.isEmpty(sendGoodsList)) {
// return;
//}
//Integer maxNum = sendActivity.getMaxNum();
//List<String> activitySpuIds = sendGoodsList.stream().map(each -> each.getCategory()).collect(Collectors.toList());
//Map<String, ActivityCalculationDiscountResponseDto.CalculationDiscountResult.SendActivity.SendGoods> sendGoodsMap = getSendGoodsMap(sendGoodsList);
//Todo
List
<
String
>
activitySpuIds
=
new
ArrayList
<>();
Map
<
String
,
ActivityCalculationDiscountResponseDto
.
CalculationDiscountResult
.
SendActivity
.
SendGoods
>
sendGoodsMap
=
new
HashMap
<>();
//Map<String, Integer> maxNums = new HashMap<>();
for
(
ActivityCalculationDiscountResponseDto
.
CalculationDiscountResult
.
SendActivity
activityList
:
sendActivityLists
)
{
for
(
ActivityCalculationDiscountResponseDto
.
CalculationDiscountResult
.
SendActivity
.
SendGoods
sendGood
:
activityList
.
getSendGoods
())
{
sendGoodsMap
.
put
(
sendGood
.
getGoodsId
(),
sendGood
);
//maxNums.put(sendGood.getGoodsId(), activityList.getMaxNum());
activitySpuIds
.
add
(
sendGood
.
getGoodsId
());
}
}
Integer
maxNum
=
sendActivity
.
getMaxNum
();
List
<
String
>
activitySpuIds
=
sendGoodsList
.
stream
().
map
(
each
->
each
.
getCategory
()).
collect
(
Collectors
.
toList
());
Map
<
String
,
ActivityCalculationDiscountResponseDto
.
CalculationDiscountResult
.
SendActivity
.
SendGoods
>
sendGoodsMap
=
getSendGoodsMap
(
sendGoodsList
);
activitySpuIds
=
activitySpuIds
.
stream
().
distinct
().
collect
(
Collectors
.
toList
());
List
<
CartGoods
>
newCartGoodsList
=
new
ArrayList
<>();
for
(
CartGoods
cartGood
:
cartGoodsList
)
{
/*if (cartGoodsList.stream().filter(c -> c.getSkuId().equals(cartGood.getSkuId())).count() >= 2){
...
...
@@ -92,6 +111,7 @@ public class BuySendPromotionService implements IPromotionService {
Long
givePackAmount
=
0L
;
// 优惠商品原总价格
Long
giveTotalAmount
=
0L
;
/*
for (CartGoods cartGoods : newCartGoodsList) {
cartGoods.setAmount(0L);
if (maxNum <= 0) {
...
...
@@ -108,10 +128,22 @@ public class BuySendPromotionService implements IPromotionService {
cartGoods.setOriginalAmount(cartGoods.getOriginalPrice() * cartGoods.getQty());
cartGoodsList.add(cartGoods);
}
*/
for
(
CartGoods
cartGoods
:
newCartGoodsList
)
{
//Integer max = maxNums.get(cartGoods.getGoodsId());
////if (max <= 0) continue;
//if (max < cartGoods.getQty()) {
// cartGoods.setQty(max);
//}
givePackAmount
=
givePackAmount
+
cartGoods
.
getPackPrice
()
*
cartGoods
.
getQty
();
giveTotalAmount
=
giveTotalAmount
+
cartGoods
.
getOriginalPrice
()
*
cartGoods
.
getQty
();
cartGoods
.
setOriginalAmount
(
cartGoods
.
getOriginalPrice
()
*
cartGoods
.
getQty
());
cartGoodsList
.
add
(
cartGoods
);
}
Integer
activityCartQty
=
cartGoodsList
.
stream
().
filter
(
each
->
Objects
.
equals
(
each
.
getActivityType
(),
ActivityTypeEnum
.
TYPE_61
.
getCode
())).
mapToInt
(
each
->
each
.
getQty
()).
sum
();
ActivityTip
activityTip
=
new
ActivityTip
();
activityTip
.
setActivityType
(
ActivityTypeEnum
.
TYPE_61
.
getCode
());
activityTip
.
setActivityQty
(
sendActivity
.
getMaxNum
());
//
activityTip.setActivityQty(sendActivity.getMaxNum());
activityTip
.
setActivityCartQty
(
activityCartQty
);
activityTip
.
setActivitySpuIds
(
activitySpuIds
);
// 当maxNum>=minNum,在加入买一赠一商品时提示“您参加的买赠优惠最多赠送N件哦~”
...
...
@@ -178,6 +210,19 @@ public class BuySendPromotionService implements IPromotionService {
}
/**
* 获取指定促销类型的SendActivity
*
* @param sendActivityList
* @param type
* @return
*/
private
List
<
ActivityCalculationDiscountResponseDto
.
CalculationDiscountResult
.
SendActivity
>
getSendActivityList
(
ActivityTypeEnum
type
,
List
<
ActivityCalculationDiscountResponseDto
.
CalculationDiscountResult
.
SendActivity
>
sendActivityList
)
{
List
<
ActivityCalculationDiscountResponseDto
.
CalculationDiscountResult
.
SendActivity
>
collect
=
sendActivityList
.
stream
().
filter
(
c
->
c
.
getActivityType
().
equals
(
type
.
getCode
())).
collect
(
Collectors
.
toList
());
return
collect
;
}
/**
* 筛选出spu商品中价格最低的商品,Key=spuId
*
* @param sendGoodsList
...
...
@@ -204,12 +249,12 @@ public class BuySendPromotionService implements IPromotionService {
*/
private
void
putNewCartGoodsList
(
Map
<
String
,
ActivityCalculationDiscountResponseDto
.
CalculationDiscountResult
.
SendActivity
.
SendGoods
>
sendGoodsMap
,
CartGoods
cartGood
,
List
<
CartGoods
>
newCartGoodsList
,
boolean
manyOrSingle
)
{
if
(
sendGoodsMap
.
get
(
cartGood
.
get
Spu
Id
())
==
null
)
{
if
(
sendGoodsMap
.
get
(
cartGood
.
get
Goods
Id
())
==
null
)
{
return
;
}
if
(
manyOrSingle
)
{
// 多规格
if
(!
Objects
.
equals
(
sendGoodsMap
.
get
(
cartGood
.
getS
p
uId
()).
getGoodsId
(),
cartGood
.
getSkuId
()))
{
if
(!
Objects
.
equals
(
sendGoodsMap
.
get
(
cartGood
.
getS
k
uId
()).
getGoodsId
(),
cartGood
.
getSkuId
()))
{
return
;
}
}
else
{
...
...
@@ -219,7 +264,7 @@ public class BuySendPromotionService implements IPromotionService {
return
;
}
}
ActivityCalculationDiscountResponseDto
.
CalculationDiscountResult
.
SendActivity
.
SendGoods
sendGoods
=
sendGoodsMap
.
get
(
cartGood
.
get
Spu
Id
());
ActivityCalculationDiscountResponseDto
.
CalculationDiscountResult
.
SendActivity
.
SendGoods
sendGoods
=
sendGoodsMap
.
get
(
cartGood
.
get
Goods
Id
());
CartGoods
cartGoods
=
shoppingCartConvertAdapter
.
convent2CartGoods
(
cartGood
,
sendGoods
.
getNowPrice
());
cartGoods
.
setClassificationId
(
cartGood
.
getClassificationId
());
cartGoods
.
setClassificationName
(
cartGood
.
getClassificationName
());
...
...
shopping-cart-application-service/src/main/java/cn/freemud/service/impl/SetMealServiceImpl.java
View file @
4403adbd
...
...
@@ -156,7 +156,7 @@ public class SetMealServiceImpl implements IPromotionService {
cartGoods
.
setAmount
(
productComboxAmount
+
productGroupAmount
*
cartGoods
.
getQty
());
//设置剩余优惠数量
numberMap
.
put
(
cartGoods
.
getGoodsId
(),
number
-
cartGoods
.
getQty
());
return
number
-
cartGoods
.
getQty
()
<
0
?
"该商品限"
+
goodsMap
.
get
(
cartGoods
.
getGoodsId
()).
getActualGoodsNumber
()
+
"份优惠 超出按照原价计算哦"
:
""
;
return
number
-
cartGoods
.
getQty
()
<
0
?
"该商品限"
+
number
+
"份优惠 超出按照原价计算哦"
:
""
;
}
else
{
cartGoods
.
setAmount
((
cartGoods
.
getFinalPrice
()
+
productGroupAmount
)
*
cartGoods
.
getQty
());
return
"该商品限"
+
goodsMap
.
get
(
cartGoods
.
getGoodsId
()).
getActualGoodsNumber
()
+
"份优惠 超出按照原价计算哦"
;
...
...
shopping-cart-application-service/src/main/java/cn/freemud/service/impl/ShoppingCartNewServiceImpl.java
View file @
4403adbd
...
...
@@ -743,7 +743,7 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService {
String
cartGoodsUid
=
cartGoods
.
getCartGoodsUid
();
// 商品不是商品券
if
(!
cartGoodsUid
.
startsWith
(
CommonsConstant
.
COUPON_PREFIX
))
{
this
.
addCalculationDiscountGoods
(
calculationDiscountGoodsList
,
cartGoods
.
getGoodsId
(),
cartGoods
.
getQty
(),
cartGoods
.
getFinalPrice
(),
cartGoods
.
getMemberDiscount
()
);
this
.
addCalculationDiscountGoods
(
calculationDiscountGoodsList
,
cartGoods
.
getGoodsId
(),
cartGoods
.
getQty
(),
cartGoods
.
getFinalPrice
(),
cartGoods
.
getMemberDiscount
(),
cartGoodsUid
);
}
// 商品是商品券
else
{
...
...
@@ -767,13 +767,13 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService {
coupons
.
add
(
coupon
);
// 添加商品券代表的商品
String
goodsId
=
StringUtils
.
isEmpty
(
checkSpqInfoResponseDto
.
getSkuId
())
?
checkSpqInfoResponseDto
.
getSpuId
()
:
checkSpqInfoResponseDto
.
getSkuId
();
this
.
addCalculationDiscountGoods
(
calculationDiscountGoodsList
,
goodsId
,
1
,
checkSpqInfoResponseDto
.
getPrice
(),
100
);
this
.
addCalculationDiscountGoods
(
calculationDiscountGoodsList
,
goodsId
,
1
,
checkSpqInfoResponseDto
.
getPrice
(),
100
,
cartGoodsUid
);
}
}
// 当加价购商品不为空时
if
(
CollectionUtils
.
isNotEmpty
(
sendGoodsList
))
{
for
(
ShoppingCartInfoRequestVo
.
SendGoods
sendGoods
:
sendGoodsList
)
{
this
.
addCalculationDiscountGoods
(
calculationDiscountGoodsList
,
sendGoods
.
getGoodsId
(),
sendGoods
.
getQty
(),
sendGoods
.
getOriginalPrice
(),
100
);
this
.
addCalculationDiscountGoods
(
calculationDiscountGoodsList
,
sendGoods
.
getGoodsId
(),
sendGoods
.
getQty
(),
sendGoods
.
getOriginalPrice
(),
100
,
""
);
}
}
calculationDiscountGoodsList
.
removeIf
(
calculationDiscountGoods
->
(
calculationDiscountGoods
.
getGoodsQuantity
().
equals
(
0
)));
...
...
@@ -823,9 +823,10 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService {
* @param originalPrice
*/
private
void
addCalculationDiscountGoods
(
List
<
ActivityCalculationDiscountRequestDto
.
CalculationDiscountGoods
>
calculationDiscountGoodsList
,
String
goodsId
,
Integer
goodsQuantity
,
Long
originalPrice
,
Integer
memberDiscount
)
{
String
goodsId
,
Integer
goodsQuantity
,
Long
originalPrice
,
Integer
memberDiscount
,
String
cartGoodsUid
)
{
ActivityCalculationDiscountRequestDto
.
CalculationDiscountGoods
calculationDiscountGoods
=
new
ActivityCalculationDiscountRequestDto
.
CalculationDiscountGoods
();
calculationDiscountGoods
.
setGoodsId
(
goodsId
);
calculationDiscountGoods
.
setCartGoodsUid
(
cartGoodsUid
);
calculationDiscountGoods
.
setGoodsQuantity
(
goodsQuantity
);
calculationDiscountGoods
.
setOriginalPrice
(
originalPrice
);
calculationDiscountGoods
.
setMemberDiscount
(
memberDiscount
);
...
...
shopping-cart-application-service/src/main/java/cn/freemud/service/impl/TimeSalePromotionService.java
View file @
4403adbd
...
...
@@ -8,6 +8,7 @@ import cn.freemud.entities.dto.shoppingCart.ShoppingCartGoodsDto;
import
cn.freemud.entities.vo.*
;
import
cn.freemud.enums.ActivityTypeEnum
;
import
cn.freemud.service.IPromotionService
;
import
lombok.extern.log4j.Log4j
;
import
org.apache.commons.collections4.CollectionUtils
;
import
org.apache.commons.lang.ObjectUtils
;
import
org.apache.commons.lang.StringUtils
;
...
...
shopping-cart-application-service/src/main/java/cn/freemud/service/impl/XyDiscountServiceImpl.java
View file @
4403adbd
...
...
@@ -36,36 +36,64 @@ public class XyDiscountServiceImpl implements IPromotionService {
@Override
public
void
updateShoppingCartGoodsDiscount
(
CouponPromotionVO
couponPromotionVO
,
ActivityQueryDto
activityQueryDto
,
ActivityCalculationDiscountResponseDto
.
CalculationDiscountResult
calculationDiscountResult
,
List
<
CartGoods
>
cartGoodsList
,
ShoppingCartGoodsResponseVo
shoppingCartGoodsResponseVo
,
UserLoginInfoDto
userLoginInfoDto
,
ShoppingCartInfoRequestVo
shoppingCartInfoRequestVo
)
{
ApportionGoodsDetail
apportionGoodsDetail
=
getApportionGoodsDetail
(
calculationDiscountResult
);
if
(
apportionGoodsDetail
!=
null
)
{
Optional
<
CartGoods
>
firstCartGoods
=
cartGoodsList
.
stream
().
filter
(
cartGoods
->
ObjectUtils
.
equals
(
apportionGoodsDetail
.
getGoodsId
(),
cartGoods
.
getGoodsId
())).
findFirst
();
if
(
firstCartGoods
.
isPresent
())
{
firstCartGoods
.
get
().
setAmount
(
firstCartGoods
.
get
().
getAmount
()
-
apportionGoodsDetail
.
getActivityApportionAmount
());
//ApportionGoodsDetail apportionGoodsDetail = getApportionGoodsDetail(calculationDiscountResult);
//if (apportionGoodsDetail != null) {
// Optional<CartGoods> firstCartGoods = cartGoodsList.stream().filter(cartGoods -> ObjectUtils.equals(apportionGoodsDetail.getGoodsId(), cartGoods.getGoodsId())).findFirst();
// if (firstCartGoods.isPresent()) {
// firstCartGoods.get().setAmount(firstCartGoods.get().getAmount() - apportionGoodsDetail.getActivityApportionAmount());
// }
//}
List
<
ApportionGoodsDetail
>
apportionGoodsDetail
=
getApportionGoodsDetail
(
calculationDiscountResult
);
if
(
apportionGoodsDetail
!=
null
&&
apportionGoodsDetail
.
size
()
>
0
)
{
for
(
CartGoods
cartGoods
:
cartGoodsList
)
{
for
(
ApportionGoodsDetail
detail
:
apportionGoodsDetail
)
{
if
(
detail
.
getCartGoodsUid
().
equals
(
cartGoods
.
getCartGoodsUid
()))
{
cartGoods
.
setAmount
(
cartGoods
.
getAmount
()
-
detail
.
getActivityApportionAmount
());
}
}
}
}
}
@Override
public
void
updateShoppingCartGoodsApportion
(
ShoppingCartGoodsResponseVo
shoppingCartGoodsResponseVo
,
ActivityCalculationDiscountResponseDto
.
CalculationDiscountResult
calculationDiscountResult
,
ShoppingCartGoodsDto
shoppingCartGoodsDto
,
CreateOrderVo
.
PremiumExchangeActivity
premiumExchangeActivity
,
ShoppingCartInfoRequestVo
shoppingCartInfoRequestVo
)
{
ApportionGoodsDetail
apportionGoodsDetail
=
getApportionGoodsDetail
(
calculationDiscountResult
);
if
(
apportionGoodsDetail
!=
null
)
{
Optional
<
ShoppingCartGoodsDto
.
CartGoodsDetailDto
>
firstCartGoods
=
shoppingCartGoodsDto
.
getProducts
().
stream
().
filter
(
cartGoods
->
ObjectUtils
.
equals
(
apportionGoodsDetail
.
getGoodsId
(),
cartGoods
.
getSkuId
())).
findFirst
();
if
(
firstCartGoods
.
isPresent
())
{
ShoppingCartGoodsDto
.
CartGoodsDetailDto
cartGoods
=
firstCartGoods
.
get
();
cartGoods
.
setTotalDiscountAmount
(
cartGoods
.
getTotalDiscountAmount
()
+
apportionGoodsDetail
.
getActivityApportionAmount
().
intValue
());
List
<
ActivityDiscountsDto
>
activityDiscountsDtoList
=
new
ArrayList
<>();
ActivityDiscountsDto
activityDiscountsDto
=
new
ActivityDiscountsDto
();
activityDiscountsDto
.
setActivityCode
(
apportionGoodsDetail
.
getActivityCode
());
activityDiscountsDto
.
setActivityName
(
apportionGoodsDetail
.
getActivityName
());
activityDiscountsDto
.
setActivityType
(
ActivityTypeEnum
.
TYPE_104
.
getCode
());
activityDiscountsDto
.
setDiscountAmount
(
apportionGoodsDetail
.
getActivityApportionAmount
().
intValue
());
activityDiscountsDtoList
.
add
(
activityDiscountsDto
);
cartGoods
.
setActivityDiscountsDtos
(
activityDiscountsDtoList
);
//ApportionGoodsDetail apportionGoodsDetail = getApportionGoodsDetail(calculationDiscountResult);
//if (apportionGoodsDetail != null) {
// Optional<ShoppingCartGoodsDto.CartGoodsDetailDto> firstCartGoods = shoppingCartGoodsDto.getProducts().stream().filter(cartGoods -> ObjectUtils.equals(apportionGoodsDetail.getGoodsId(), cartGoods.getSkuId())).findFirst();
// if (firstCartGoods.isPresent()) {
// ShoppingCartGoodsDto.CartGoodsDetailDto cartGoods = firstCartGoods.get();
// cartGoods.setTotalDiscountAmount(cartGoods.getTotalDiscountAmount() + apportionGoodsDetail.getActivityApportionAmount().intValue());
// List<ActivityDiscountsDto> activityDiscountsDtoList = new ArrayList<>();
// ActivityDiscountsDto activityDiscountsDto = new ActivityDiscountsDto();
// activityDiscountsDto.setActivityCode(apportionGoodsDetail.getActivityCode());
// activityDiscountsDto.setActivityName(apportionGoodsDetail.getActivityName());
// activityDiscountsDto.setActivityType(ActivityTypeEnum.TYPE_104.getCode());
// activityDiscountsDto.setDiscountAmount(apportionGoodsDetail.getActivityApportionAmount().intValue());
// activityDiscountsDtoList.add(activityDiscountsDto);
// cartGoods.setActivityDiscountsDtos(activityDiscountsDtoList);
// }
//}
List
<
ApportionGoodsDetail
>
apportionGoodsDetail
=
getApportionGoodsDetail
(
calculationDiscountResult
);
if
(
apportionGoodsDetail
!=
null
&&
apportionGoodsDetail
.
size
()
>
0
)
{
for
(
ShoppingCartGoodsDto
.
CartGoodsDetailDto
product
:
shoppingCartGoodsDto
.
getProducts
())
{
for
(
ApportionGoodsDetail
detail
:
apportionGoodsDetail
)
{
if
(
detail
.
getCartGoodsUid
().
equals
(
product
.
getCartGoodsUid
()))
{
product
.
setTotalDiscountAmount
(
product
.
getTotalDiscountAmount
()
+
detail
.
getActivityApportionAmount
().
intValue
());
List
<
ActivityDiscountsDto
>
activityDiscountsDtoList
=
new
ArrayList
<>();
ActivityDiscountsDto
activityDiscountsDto
=
new
ActivityDiscountsDto
();
activityDiscountsDto
.
setActivityCode
(
detail
.
getActivityCode
());
activityDiscountsDto
.
setActivityName
(
detail
.
getActivityName
());
activityDiscountsDto
.
setActivityType
(
ActivityTypeEnum
.
TYPE_104
.
getCode
());
activityDiscountsDto
.
setDiscountAmount
(
detail
.
getActivityApportionAmount
().
intValue
());
activityDiscountsDtoList
.
add
(
activityDiscountsDto
);
product
.
setActivityDiscountsDtos
(
activityDiscountsDtoList
);
}
}
}
}
}
/*
private ApportionGoodsDetail getApportionGoodsDetail(ActivityCalculationDiscountResponseDto.CalculationDiscountResult calculationDiscountResult) {
// 遍历购物车内的商品,如果存在则进行均摊
if (calculationDiscountResult == null || CollectionUtils.isEmpty(calculationDiscountResult.getApportionGoods())) {
...
...
@@ -87,8 +115,30 @@ public class XyDiscountServiceImpl implements IPromotionService {
}
return null;
}
*/
private
List
<
ApportionGoodsDetail
>
getApportionGoodsDetail
(
ActivityCalculationDiscountResponseDto
.
CalculationDiscountResult
calculationDiscountResult
)
{
// 遍历购物车内的商品,如果存在则进行均摊
if
(
calculationDiscountResult
==
null
||
CollectionUtils
.
isEmpty
(
calculationDiscountResult
.
getApportionGoods
()))
{
return
null
;
}
List
<
ApportionGoodsDetail
>
apportionGoodsDetail
=
new
ArrayList
<>();
for
(
ActivityCalculationDiscountResponseDto
.
CalculationDiscountResult
.
ApportionGoods
apportionGood
:
calculationDiscountResult
.
getApportionGoods
())
{
if
(!
CollectionUtils
.
isEmpty
(
apportionGood
.
getApportionDetails
()))
{
for
(
ActivityCalculationDiscountResponseDto
.
CalculationDiscountResult
.
ApportionGoods
.
ApportionDetails
apportionDetail
:
apportionGood
.
getApportionDetails
())
{
if
(
apportionDetail
.
getActivityType
().
equals
(
ActivityTypeEnum
.
TYPE_104
.
getCode
()))
{
ApportionGoodsDetail
detail
=
new
ApportionGoodsDetail
();
detail
.
setActivityApportionAmount
(
apportionDetail
.
getActivityApportionAmount
());
detail
.
setActivityCode
(
apportionDetail
.
getActivityCode
());
detail
.
setActivityName
(
apportionDetail
.
getActivityName
());
detail
.
setGoodsId
(
apportionGood
.
getGoodsId
());
detail
.
setCartGoodsUid
(
apportionGood
.
getCartGoodsUid
());
apportionGoodsDetail
.
add
(
detail
);
}
}
}
}
return
apportionGoodsDetail
;
}
@Data
private
class
ApportionGoodsDetail
{
/**
...
...
@@ -104,6 +154,10 @@ public class XyDiscountServiceImpl implements IPromotionService {
*/
private
Long
activityApportionAmount
;
private
String
goodsId
;
/**
* 购物车行uid
*/
private
String
cartGoodsUid
;
}
...
...
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