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
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
10 changed files
with
23 additions
and
19 deletions
+23
-19
order-application-service/src/main/java/cn/freemud/adapter/PromotionAdapter.java
+0
-0
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
This diff is collapsed.
Click to expand it.
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