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
85b64ab9
Commit
85b64ab9
authored
Jul 15, 2020
by
huiyang.chen
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
满减和优化券优化分摊
parent
47abaae0
Show whitespace changes
Inline
Side-by-side
Showing
10 changed files
with
52 additions
and
27 deletions
+52
-27
order-application-service/src/main/java/cn/freemud/adapter/PromotionAdapter.java
+29
-8
order-application-service/src/main/java/cn/freemud/service/IPromotionService.java
+1
-1
order-application-service/src/main/java/cn/freemud/service/impl/ActivityCalculationDiscountService.java
+7
-7
order-application-service/src/main/java/cn/freemud/service/impl/CouponPromotionService.java
+1
-1
order-application-service/src/main/java/cn/freemud/service/impl/CustomerScoreService.java
+1
-1
order-application-service/src/main/java/cn/freemud/service/impl/DefaultPromotionService.java
+2
-2
order-application-service/src/main/java/cn/freemud/service/impl/EncircleOrderServiceImpl.java
+3
-2
order-application-service/src/main/java/cn/freemud/service/impl/FullPromotionService.java
+1
-1
order-application-service/src/main/java/cn/freemud/service/impl/SetMealPromotionService.java
+2
-2
order-application-service/src/main/java/cn/freemud/service/impl/TimeSalePromotionService.java
+5
-2
No files found.
order-application-service/src/main/java/cn/freemud/adapter/PromotionAdapter.java
View file @
85b64ab9
...
...
@@ -32,16 +32,23 @@ import java.util.stream.Collectors;
*/
public
class
PromotionAdapter
{
public
static
ShoppingCartGoodsResponse
.
CartGoodsDetailDto
convertCartGoods2DetailGoods
(
OrderBeanRequest
.
ProductBean
orderProductBean
,
int
originalDiscountAmount
,
List
<
CalculationApportionGoodsDto
>
apportionGoodsList
,
Map
<
String
,
String
>
duplicateGoodsMap
)
{
public
static
ShoppingCartGoodsResponse
.
CartGoodsDetailDto
convertCartGoods2DetailGoods
(
OrderBeanRequest
.
ProductBean
orderProductBean
,
int
originalDiscountAmount
,
List
<
CalculationApportionGoodsDto
>
apportionGoodsList
,
Map
<
String
,
String
>
duplicateGoodsMap
,
Boolean
isApportion
)
{
Integer
totalDiscount
=
originalDiscountAmount
;
List
<
CalculationApportionGoodsDto
>
apportionGoodsByGoodsId
=
apportionGoodsList
.
stream
().
filter
(
a
->
ObjectUtils
.
equals
(
orderProductBean
.
getProductId
(),
a
.
getGoodsId
())).
collect
(
Collectors
.
toList
());
if
(
CollectionUtils
.
isNotEmpty
(
apportionGoodsByGoodsId
))
{
Long
discountPrice
=
0L
;
int
goodsTotalQty
=
apportionGoodsList
.
stream
().
mapToInt
(
CalculationApportionGoodsDto:
:
getGoodsQuantity
).
sum
();
for
(
CalculationApportionGoodsDto
apportionGoods
:
apportionGoodsByGoodsId
)
{
if
(
isApportion
)
{
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
()
*
orderProductBean
.
getNumber
()
/
goodsTotalQty
;
}
else
{
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_12
.
getCode
(),
d
.
getActivityType
())
&&
ObjectUtils
.
notEqual
(
ActivityTypeEnum
.
TYPE_3
.
getCode
(),
d
.
getActivityType
())
).
mapToLong
(
t
->
t
.
getActivityApportionAmount
()
*
apportionGoods
.
getGoodsQuantity
()).
sum
()
*
orderProductBean
.
getNumber
()
/
goodsTotalQty
;
}
}
String
currentGoodsIdMap
=
duplicateGoodsMap
.
get
(
orderProductBean
.
getProductId
());
if
(
currentGoodsIdMap
!=
null
)
{
...
...
@@ -54,9 +61,16 @@ public class PromotionAdapter {
//最后一行
Long
totalDiscountAmount
=
0L
;
for
(
CalculationApportionGoodsDto
apportionGoods
:
apportionGoodsByGoodsId
)
{
if
(
isApportion
)
{
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
();
}
else
{
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_104
.
getCode
(),
d
.
getActivityType
())
&&
ObjectUtils
.
notEqual
(
ActivityTypeEnum
.
TYPE_12
.
getCode
(),
d
.
getActivityType
())
&&
ObjectUtils
.
notEqual
(
ActivityTypeEnum
.
TYPE_3
.
getCode
(),
d
.
getActivityType
())
).
mapToLong
(
t
->
t
.
getActivityApportionAmount
()
*
apportionGoods
.
getGoodsQuantity
()).
sum
();
}
}
//折扣为:总折扣金额-已折扣金额
discountPrice
=
totalDiscountAmount
-
Integer
.
parseInt
(
value
[
1
]);
...
...
@@ -64,7 +78,7 @@ public class PromotionAdapter {
}
totalDiscount
+=
discountPrice
.
intValue
();
}
return
convertCartGoods2DetailGoodsCommon
(
orderProductBean
,
totalDiscount
,
apportionGoodsByGoodsId
);
return
convertCartGoods2DetailGoodsCommon
(
orderProductBean
,
totalDiscount
,
apportionGoodsByGoodsId
,
isApportion
);
}
public
static
List
<
ShoppingCartGoodsResponse
.
CartGoodsDetailDto
>
convertCartGoods2DetailGoods
(
List
<
OrderBeanRequest
.
ProductBean
>
comboFixedProductList
,
Long
totalDiscountAmount
)
{
...
...
@@ -84,20 +98,20 @@ public class PromotionAdapter {
for
(
OrderBeanRequest
.
ProductBean
comboProduct
:
comboFixedProductList
)
{
//获取当前套餐可选或固定商品的均摊价格
if
(
size
--
==
1
)
{
result
.
add
(
convertCartGoods2DetailGoodsCommon
(
comboProduct
,
totalDiscountAmount
.
intValue
()
-
tempDiscount
,
null
));
result
.
add
(
convertCartGoods2DetailGoodsCommon
(
comboProduct
,
totalDiscountAmount
.
intValue
()
-
tempDiscount
,
null
,
true
));
}
else
{
Long
currentDiscountAmount
=
(
comboProduct
.
getNumber
()
*
comboProduct
.
getPrice
()
*
totalDiscountAmount
)
/
totalOriginalPrice
;
if
(
Objects
.
equals
(
comboProduct
.
getProductType
(),
ProductTypeEnum
.
WEIGHT_PRODUCT
.
getCode
()))
{
currentDiscountAmount
=
new
BigDecimal
(
comboProduct
.
getPrice
()+
""
).
multiply
(
comboProduct
.
getWeight
()).
longValue
()
*
totalDiscountAmount
/
totalOriginalPrice
;
}
tempDiscount
+=
currentDiscountAmount
.
intValue
();
result
.
add
(
convertCartGoods2DetailGoodsCommon
(
comboProduct
,
currentDiscountAmount
.
intValue
(),
null
));
result
.
add
(
convertCartGoods2DetailGoodsCommon
(
comboProduct
,
currentDiscountAmount
.
intValue
(),
null
,
true
));
}
}
return
result
;
}
public
static
ShoppingCartGoodsResponse
.
CartGoodsDetailDto
convertCartGoods2DetailGoodsCommon
(
OrderBeanRequest
.
ProductBean
orderProductBean
,
Integer
totalDiscountAmount
,
List
<
CalculationApportionGoodsDto
>
apportionGoodsList
)
{
public
static
ShoppingCartGoodsResponse
.
CartGoodsDetailDto
convertCartGoods2DetailGoodsCommon
(
OrderBeanRequest
.
ProductBean
orderProductBean
,
Integer
totalDiscountAmount
,
List
<
CalculationApportionGoodsDto
>
apportionGoodsList
,
Boolean
isApportion
)
{
ShoppingCartGoodsResponse
.
CartGoodsDetailDto
cartGoodsDetailDto
=
new
ShoppingCartGoodsResponse
.
CartGoodsDetailDto
();
cartGoodsDetailDto
.
setProductId
(
orderProductBean
.
getProductId
());
cartGoodsDetailDto
.
setOriginalPrice
(
orderProductBean
.
getPrice
());
...
...
@@ -120,7 +134,7 @@ public class PromotionAdapter {
}
if
(
CollectionUtils
.
isNotEmpty
(
apportionGoodsList
))
{
List
<
CalculationApportionGoodsDto
>
apportionGoodsByGoodsId
=
apportionGoodsList
.
stream
().
filter
(
a
->
ObjectUtils
.
equals
(
orderProductBean
.
getProductId
(),
a
.
getGoodsId
())).
collect
(
Collectors
.
toList
());
setActivityDiscounts
(
apportionGoodsByGoodsId
,
cartGoodsDetailDto
);
setActivityDiscounts
(
apportionGoodsByGoodsId
,
cartGoodsDetailDto
,
isApportion
);
}
return
cartGoodsDetailDto
;
}
...
...
@@ -135,7 +149,7 @@ public class PromotionAdapter {
}
}
private
static
void
setActivityDiscounts
(
List
<
CalculationApportionGoodsDto
>
apportionGoodsList
,
ShoppingCartGoodsResponse
.
CartGoodsDetailDto
cartGoodsDetailDto
)
{
private
static
void
setActivityDiscounts
(
List
<
CalculationApportionGoodsDto
>
apportionGoodsList
,
ShoppingCartGoodsResponse
.
CartGoodsDetailDto
cartGoodsDetailDto
,
Boolean
isApportion
)
{
if
(
CollectionUtils
.
isEmpty
(
apportionGoodsList
))
{
return
;
}
...
...
@@ -146,8 +160,15 @@ public class PromotionAdapter {
* 1. 商品券:cartGoodsDetailDto.couponCode非空,保留ApportionGoods#ApportionDetails#apportionType中32的
* 2. 普通商品:cartGoodsDetailDto.couponCode空,去掉32的
*/
List
<
CalculationApportionDetailDto
>
apportionDetails
=
apportionGoods
.
getApportionDetails
().
stream
().
filter
(
detail
->
!
detail
.
getActivityType
().
equals
(
ActivityTypeEnum
.
TYPE_32
.
getCode
())
List
<
CalculationApportionDetailDto
>
apportionDetails
=
new
ArrayList
<>();
if
(
isApportion
)
{
apportionDetails
=
apportionGoods
.
getApportionDetails
().
stream
().
filter
(
detail
->
!
detail
.
getActivityType
().
equals
(
ActivityTypeEnum
.
TYPE_32
.
getCode
())
&&
!
detail
.
getActivityType
().
equals
(
ActivityTypeEnum
.
TYPE_104
.
getCode
())
&&
!
detail
.
getActivityType
().
equals
(
ActivityTypeEnum
.
TYPE_2
.
getCode
())).
collect
(
Collectors
.
toList
());
}
else
{
apportionDetails
=
apportionGoods
.
getApportionDetails
().
stream
().
filter
(
detail
->
!
detail
.
getActivityType
().
equals
(
ActivityTypeEnum
.
TYPE_32
.
getCode
())
&&
!
detail
.
getActivityType
().
equals
(
ActivityTypeEnum
.
TYPE_104
.
getCode
())
&&
!
detail
.
getActivityType
().
equals
(
ActivityTypeEnum
.
TYPE_2
.
getCode
())
&&
ObjectUtils
.
notEqual
(
ActivityTypeEnum
.
TYPE_12
.
getCode
(),
detail
.
getActivityType
())
&&
ObjectUtils
.
notEqual
(
ActivityTypeEnum
.
TYPE_3
.
getCode
(),
detail
.
getActivityType
())).
collect
(
Collectors
.
toList
());
}
for
(
CalculationApportionDetailDto
detail
:
apportionDetails
)
{
List
<
ActivityDiscountsDto
>
currentDiscount
=
activityDiscountsDtoList
.
stream
().
filter
(
discount
->
ObjectUtils
.
equals
(
discount
.
getActivityCode
(),
detail
.
getActivityCode
())).
collect
(
Collectors
.
toList
());
if
(
CollectionUtils
.
isNotEmpty
(
currentDiscount
))
{
...
...
order-application-service/src/main/java/cn/freemud/service/IPromotionService.java
View file @
85b64ab9
...
...
@@ -23,5 +23,5 @@ public interface IPromotionService {
/**
* 优惠计算和均摊
*/
void
updateDiscountApportion
(
ShoppingCartGoodsResponse
shoppingCartGoodsResponse
,
OrderBeanRequest
request
,
CalculationDiscountResultDto
calculationDiscountResult
,
CouponPromotionDto
couponPromotionDto
,
ActivityQueryDto
activityQueryDto
);
void
updateDiscountApportion
(
ShoppingCartGoodsResponse
shoppingCartGoodsResponse
,
OrderBeanRequest
request
,
CalculationDiscountResultDto
calculationDiscountResult
,
CouponPromotionDto
couponPromotionDto
,
ActivityQueryDto
activityQueryDto
,
Boolean
isApportion
);
}
order-application-service/src/main/java/cn/freemud/service/impl/ActivityCalculationDiscountService.java
View file @
85b64ab9
...
...
@@ -66,7 +66,7 @@ public class ActivityCalculationDiscountService {
private
CustomerScoreService
customerScoreService
;
public
ShoppingCartGoodsResponse
updateDiscountApportion
(
OrderBeanRequest
request
,
CouponPromotionDto
couponPromotionDto
)
{
public
ShoppingCartGoodsResponse
updateDiscountApportion
(
OrderBeanRequest
request
,
CouponPromotionDto
couponPromotionDto
,
Boolean
isApportion
)
{
ShoppingCartGoodsResponse
shoppingCartGoodsResponse
=
new
ShoppingCartGoodsResponse
();
List
<
CalculationCouponDto
>
coupons
=
new
ArrayList
<>();
...
...
@@ -87,17 +87,17 @@ public class ActivityCalculationDiscountService {
CalculationDiscountResultDto
calculationDiscountResultDto
=
getCalculationResult
(
request
,
coupons
);
// 默认计算
defaultPromotionService
.
updateDiscountApportion
(
shoppingCartGoodsResponse
,
request
,
calculationDiscountResultDto
,
couponPromotionDto
,
activityQueryDto
);
defaultPromotionService
.
updateDiscountApportion
(
shoppingCartGoodsResponse
,
request
,
calculationDiscountResultDto
,
couponPromotionDto
,
activityQueryDto
,
isApportion
);
// 套餐计算
setMealPromotionService
.
updateDiscountApportion
(
shoppingCartGoodsResponse
,
request
,
calculationDiscountResultDto
,
couponPromotionDto
,
activityQueryDto
);
setMealPromotionService
.
updateDiscountApportion
(
shoppingCartGoodsResponse
,
request
,
calculationDiscountResultDto
,
couponPromotionDto
,
activityQueryDto
,
isApportion
);
// 优惠券计算
couponPromotionService
.
updateDiscountApportion
(
shoppingCartGoodsResponse
,
request
,
calculationDiscountResultDto
,
couponPromotionDto
,
activityQueryDto
);
couponPromotionService
.
updateDiscountApportion
(
shoppingCartGoodsResponse
,
request
,
calculationDiscountResultDto
,
couponPromotionDto
,
activityQueryDto
,
isApportion
);
// 满减
fullPromotionService
.
updateDiscountApportion
(
shoppingCartGoodsResponse
,
request
,
calculationDiscountResultDto
,
couponPromotionDto
,
activityQueryDto
);
fullPromotionService
.
updateDiscountApportion
(
shoppingCartGoodsResponse
,
request
,
calculationDiscountResultDto
,
couponPromotionDto
,
activityQueryDto
,
isApportion
);
// 限时特价
timeSalePromotionService
.
updateDiscountApportion
(
shoppingCartGoodsResponse
,
request
,
calculationDiscountResultDto
,
couponPromotionDto
,
activityQueryDto
);
timeSalePromotionService
.
updateDiscountApportion
(
shoppingCartGoodsResponse
,
request
,
calculationDiscountResultDto
,
couponPromotionDto
,
activityQueryDto
,
isApportion
);
// 积分抵扣
customerScoreService
.
updateDiscountApportion
(
shoppingCartGoodsResponse
,
request
,
calculationDiscountResultDto
,
couponPromotionDto
,
activityQueryDto
);
customerScoreService
.
updateDiscountApportion
(
shoppingCartGoodsResponse
,
request
,
calculationDiscountResultDto
,
couponPromotionDto
,
activityQueryDto
,
isApportion
);
return
shoppingCartGoodsResponse
;
}
...
...
order-application-service/src/main/java/cn/freemud/service/impl/CouponPromotionService.java
View file @
85b64ab9
...
...
@@ -25,7 +25,7 @@ public class CouponPromotionService implements IPromotionService {
@Autowired
private
CouponService
couponService
;
@Override
public
void
updateDiscountApportion
(
ShoppingCartGoodsResponse
shoppingCartGoodsResponse
,
OrderBeanRequest
request
,
CalculationDiscountResultDto
calculationDiscountResult
,
CouponPromotionDto
couponPromotionDto
,
ActivityQueryDto
activityQueryDto
)
{
public
void
updateDiscountApportion
(
ShoppingCartGoodsResponse
shoppingCartGoodsResponse
,
OrderBeanRequest
request
,
CalculationDiscountResultDto
calculationDiscountResult
,
CouponPromotionDto
couponPromotionDto
,
ActivityQueryDto
activityQueryDto
,
Boolean
isApportion
)
{
// 用户选择了查询优惠券信息
if
(
couponPromotionDto
!=
null
&&
ObjectUtils
.
equals
(
CouponFlag
.
YES
.
getCode
(),
couponPromotionDto
.
getFlg
()))
{
// 是否存在商品券
...
...
order-application-service/src/main/java/cn/freemud/service/impl/CustomerScoreService.java
View file @
85b64ab9
...
...
@@ -37,7 +37,7 @@ public class CustomerScoreService implements IPromotionService {
private
CustomScoreClient
customScoreClient
;
@Override
public
void
updateDiscountApportion
(
ShoppingCartGoodsResponse
shoppingCartGoodsResponse
,
OrderBeanRequest
request
,
CalculationDiscountResultDto
calculationDiscountResult
,
CouponPromotionDto
couponPromotionDto
,
ActivityQueryDto
activityQueryDto
)
{
public
void
updateDiscountApportion
(
ShoppingCartGoodsResponse
shoppingCartGoodsResponse
,
OrderBeanRequest
request
,
CalculationDiscountResultDto
calculationDiscountResult
,
CouponPromotionDto
couponPromotionDto
,
ActivityQueryDto
activityQueryDto
,
Boolean
isApportion
)
{
if
(
request
==
null
||
request
.
getUseCustomerScore
()
==
null
||
request
.
getUseCustomerScore
()
==
null
||
request
.
getUseCustomerScore
().
equals
(
CustomerScoreConstant
.
NO_DISPLAY
.
getValue
()))
{
return
;
}
...
...
order-application-service/src/main/java/cn/freemud/service/impl/DefaultPromotionService.java
View file @
85b64ab9
...
...
@@ -33,7 +33,7 @@ import java.util.stream.Collectors;
public
class
DefaultPromotionService
implements
IPromotionService
{
@Override
public
void
updateDiscountApportion
(
ShoppingCartGoodsResponse
shoppingCartGoodsResponse
,
OrderBeanRequest
request
,
CalculationDiscountResultDto
calculationDiscountResult
,
CouponPromotionDto
couponPromotionDto
,
ActivityQueryDto
activityQueryDto
)
{
public
void
updateDiscountApportion
(
ShoppingCartGoodsResponse
shoppingCartGoodsResponse
,
OrderBeanRequest
request
,
CalculationDiscountResultDto
calculationDiscountResult
,
CouponPromotionDto
couponPromotionDto
,
ActivityQueryDto
activityQueryDto
,
Boolean
isApportion
)
{
// 总原价
Long
originalTotalAmount
=
0L
;
// 总折扣
...
...
@@ -76,7 +76,7 @@ public class DefaultPromotionService implements IPromotionService {
if
(
Objects
.
equals
(
productBean
.
getProductType
(),
ProductTypeEnum
.
WEIGHT_PRODUCT
.
getCode
()))
{
originalDiscountAmount
=
new
BigDecimal
(
productBean
.
getPrice
()+
""
).
multiply
(
productBean
.
getWeight
()).
longValue
()
-
productBean
.
getSettlementPrice
();
}
cartGoodsDetailDtoList
.
add
(
PromotionAdapter
.
convertCartGoods2DetailGoods
(
productBean
,
originalDiscountAmount
.
intValue
(),
apportionGoodsList
,
duplicateGoodsMap
));
cartGoodsDetailDtoList
.
add
(
PromotionAdapter
.
convertCartGoods2DetailGoods
(
productBean
,
originalDiscountAmount
.
intValue
(),
apportionGoodsList
,
duplicateGoodsMap
,
isApportion
));
}
}
...
...
order-application-service/src/main/java/cn/freemud/service/impl/EncircleOrderServiceImpl.java
View file @
85b64ab9
...
...
@@ -382,7 +382,8 @@ public class EncircleOrderServiceImpl implements EncircleOrderService {
payIsArouseStatus
=
0
;
OrderBeanRequest
orderBeanRequest
=
orderAdapter
.
conventOrderBeanRequest
(
queryOrderByIdResponse
.
getData
(),
assortmentCustomerInfoVo
,
createReserveOrderVo
);
CouponPromotionDto
couponPromotionDto
=
couponAdapter
.
getCouponPromotionDto
(
orderBeanRequest
,
createReserveOrderVo
.
getCouponCode
(),
createReserveOrderVo
.
getActivityCode
(),
CouponFlag
.
YES
.
getCode
());
ShoppingCartGoodsResponse
shoppingCartGoodsResponse
=
calculationDiscountService
.
updateDiscountApportion
(
orderBeanRequest
,
couponPromotionDto
);
//新增是否需要分摊计算优化金额,满减和优化券不进行优惠分摊
ShoppingCartGoodsResponse
shoppingCartGoodsResponse
=
calculationDiscountService
.
updateDiscountApportion
(
orderBeanRequest
,
couponPromotionDto
,
false
);
calculationDiscountService
.
updatePreviewOrderInfoVo
(
previewOrderInfoVo
,
shoppingCartGoodsResponse
);
}
//是否唤起支付
...
...
@@ -445,7 +446,7 @@ public class EncircleOrderServiceImpl implements EncircleOrderService {
if
(!
prePayLock
)
{
OrderBeanRequest
orderBeanRequest
=
orderAdapter
.
conventOrderBeanRequest
(
queryOrderByIdResponse
.
getData
(),
assortmentCustomerInfoVo
,
createReserveOrderVo
);
CouponPromotionDto
couponPromotionDto
=
couponAdapter
.
getCouponPromotionDto
(
orderBeanRequest
,
createReserveOrderVo
.
getCouponCode
(),
createReserveOrderVo
.
getActivityCode
(),
CouponFlag
.
YES
.
getCode
());
shoppingCartGoodsResponse
=
calculationDiscountService
.
updateDiscountApportion
(
orderBeanRequest
,
couponPromotionDto
);
shoppingCartGoodsResponse
=
calculationDiscountService
.
updateDiscountApportion
(
orderBeanRequest
,
couponPromotionDto
,
true
);
}
boolean
isUpdateAccounts
=
CollectionUtils
.
isEmpty
(
queryOrderByIdResponse
.
getData
().
getAccountList
());
AssortmentSdkUpdateOrderProductInfoRequest
request
=
orderAdapter
.
conventShoppingPromotionInfo
(
shoppingCartGoodsResponse
,
queryOrderByIdResponse
,
assortmentCustomerInfoVo
,
isUpdateAccounts
,
createReserveOrderVo
);
...
...
order-application-service/src/main/java/cn/freemud/service/impl/FullPromotionService.java
View file @
85b64ab9
...
...
@@ -27,7 +27,7 @@ public class FullPromotionService implements IPromotionService {
private
ActivityService
activityService
;
@Override
public
void
updateDiscountApportion
(
ShoppingCartGoodsResponse
shoppingCartGoodsResponse
,
OrderBeanRequest
request
,
CalculationDiscountResultDto
calculationDiscountResult
,
CouponPromotionDto
couponPromotionDto
,
ActivityQueryDto
activityQueryDto
)
{
public
void
updateDiscountApportion
(
ShoppingCartGoodsResponse
shoppingCartGoodsResponse
,
OrderBeanRequest
request
,
CalculationDiscountResultDto
calculationDiscountResult
,
CouponPromotionDto
couponPromotionDto
,
ActivityQueryDto
activityQueryDto
,
Boolean
isApportion
)
{
this
.
buildActivityTip
(
shoppingCartGoodsResponse
,
calculationDiscountResult
,
activityQueryDto
);
List
<
CalculationGoodsActivityDto
>
discountList
=
(
calculationDiscountResult
==
null
||
calculationDiscountResult
.
getDiscounts
()
==
null
)
?
new
ArrayList
<>()
:
calculationDiscountResult
.
getDiscounts
();
...
...
order-application-service/src/main/java/cn/freemud/service/impl/SetMealPromotionService.java
View file @
85b64ab9
...
...
@@ -34,7 +34,7 @@ import java.util.stream.Collectors;
@Service
public
class
SetMealPromotionService
implements
IPromotionService
{
@Override
public
void
updateDiscountApportion
(
ShoppingCartGoodsResponse
shoppingCartGoodsResponse
,
OrderBeanRequest
request
,
CalculationDiscountResultDto
calculationDiscountResult
,
CouponPromotionDto
couponPromotionDto
,
ActivityQueryDto
activityQueryDto
)
{
public
void
updateDiscountApportion
(
ShoppingCartGoodsResponse
shoppingCartGoodsResponse
,
OrderBeanRequest
request
,
CalculationDiscountResultDto
calculationDiscountResult
,
CouponPromotionDto
couponPromotionDto
,
ActivityQueryDto
activityQueryDto
,
Boolean
isApportion
)
{
// 套餐商品
List
<
OrderBeanRequest
.
ProductBean
>
setMealProducts
=
request
.
getProductList
().
stream
()
.
filter
(
productBean
->
{
...
...
@@ -69,7 +69,7 @@ public class SetMealPromotionService implements IPromotionService {
Long
productGroupDiscountAmount
=
productBean
.
getComboProduct
().
stream
().
filter
(
t
->
!
t
.
getIsFixedProduct
()).
mapToLong
(
t
->
t
.
getPrice
()
*
t
.
getNumber
()
-
t
.
getSettlementPrice
()).
sum
();
totalDiscountAmount
+=
discountAmount
-
productGroupDiscountAmount
;
// 设置套餐主商品
ShoppingCartGoodsResponse
.
CartGoodsDetailDto
cartGoodsDetailDto
=
PromotionAdapter
.
convertCartGoods2DetailGoods
(
productBean
,
discountAmount
.
intValue
(),
apportionGoodsList
,
duplicateGoodsMap
);
ShoppingCartGoodsResponse
.
CartGoodsDetailDto
cartGoodsDetailDto
=
PromotionAdapter
.
convertCartGoods2DetailGoods
(
productBean
,
discountAmount
.
intValue
(),
apportionGoodsList
,
duplicateGoodsMap
,
true
);
cartGoodsDetailDto
.
getActivityDiscountsDtos
().
add
(
getActivityDiscountsDto
(
discountAmount
.
intValue
()
-
productGroupDiscountAmount
.
intValue
()));
long
apportionAmount
=
cartGoodsDetailDto
.
getTotalDiscountAmount
()
-
discountAmount
;
Long
comboFixedProductTotalDiscountAmount
=
discountAmount
-
productGroupDiscountAmount
+
apportionAmount
;
...
...
order-application-service/src/main/java/cn/freemud/service/impl/TimeSalePromotionService.java
View file @
85b64ab9
...
...
@@ -35,7 +35,7 @@ import java.util.stream.Collectors;
public
class
TimeSalePromotionService
implements
IPromotionService
{
@Override
public
void
updateDiscountApportion
(
ShoppingCartGoodsResponse
shoppingCartGoodsResponse
,
OrderBeanRequest
request
,
CalculationDiscountResultDto
calculationDiscountResult
,
CouponPromotionDto
couponPromotionDto
,
ActivityQueryDto
activityQueryDto
)
{
public
void
updateDiscountApportion
(
ShoppingCartGoodsResponse
shoppingCartGoodsResponse
,
OrderBeanRequest
request
,
CalculationDiscountResultDto
calculationDiscountResult
,
CouponPromotionDto
couponPromotionDto
,
ActivityQueryDto
activityQueryDto
,
Boolean
isApportion
)
{
if
(
calculationDiscountResult
==
null
||
CollectionUtils
.
isEmpty
(
calculationDiscountResult
.
getDiscounts
())
||
CollectionUtils
.
isEmpty
(
shoppingCartGoodsResponse
.
getProducts
())
||
!
calculationDiscountResult
.
getDiscounts
().
stream
().
anyMatch
(
discount
->
ActivityTypeEnum
.
TYPE_2
.
getCode
().
equals
(
discount
.
getType
())))
{
...
...
@@ -58,7 +58,10 @@ public class TimeSalePromotionService implements IPromotionService {
if
((
goods
=
goodsMap
.
get
(
product
.
getProductId
()))
==
null
)
{
continue
;
}
CalculationGoodsActivityDto
goodsDiscount
=
getGoodsDiscount
(
goods
.
getDiscounts
(),
ActivityTypeEnum
.
TYPE_2
);
CalculationGoodsActivityDto
goodsDiscount
=
null
;
if
(
isApportion
){
goodsDiscount
=
getGoodsDiscount
(
goods
.
getDiscounts
(),
ActivityTypeEnum
.
TYPE_2
);
}
if
(
goodsDiscount
==
null
)
{
continue
;
}
...
...
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