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
524253ba
Commit
524253ba
authored
Apr 19, 2021
by
chongfu.liang
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
满赠
parent
35c8fa42
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
188 additions
and
34 deletions
+188
-34
shopping-cart-application-service/src/main/java/cn/freemud/demo/entities/bo/goods/BenefitBeanBO.java
+89
-1
shopping-cart-application-service/src/main/java/cn/freemud/demo/entities/bo/goods/CalculationDiscountBO.java
+2
-0
shopping-cart-application-service/src/main/java/cn/freemud/demo/entities/bo/promotion/ActivityBO.java
+4
-0
shopping-cart-application-service/src/main/java/cn/freemud/demo/service/impl/AbstractApportionService.java
+1
-1
shopping-cart-application-service/src/main/java/cn/freemud/demo/service/impl/DistributeServiceImpl.java
+2
-1
shopping-cart-application-service/src/main/java/cn/freemud/demo/service/impl/MessageServiceImpl.java
+90
-31
No files found.
shopping-cart-application-service/src/main/java/cn/freemud/demo/entities/bo/goods/BenefitBeanBO.java
View file @
524253ba
package
cn
.
freemud
.
demo
.
entities
.
bo
.
goods
;
import
cn.freemud.entities.dto.BenefitBeanDto
;
import
lombok.Data
;
import
java.util.List
;
@Data
public
class
BenefitBeanBO
{
public
class
BenefitBeanBO
implements
Comparable
<
BenefitBeanBO
>
{
/**
* 优惠券名称
...
...
@@ -23,5 +26,90 @@ public class BenefitBeanBO {
private
Integer
benefitSeq
;
private
Integer
benefitType
;
private
List
<
BenefitBeanDto
.
ActivitySendGoodsVO
>
sendGoodsList
;
@Override
public
int
compareTo
(
BenefitBeanBO
o
)
{
return
this
.
thresholdAmount
.
compareTo
(
o
.
getThresholdAmount
());
}
@Data
public
static
class
ActivitySendGoodsVO
{
/**
* 活动号
*/
private
String
activityCode
;
/**
* 商品id
*/
private
String
goodsId
;
/**
* 商品CODE
*/
private
String
goodsCode
;
/**
* 商品名
*/
private
String
goodsName
;
/**
* 原价
*/
private
Integer
originalPrice
;
/**
* 现价
*/
private
Integer
nowPrice
;
/**
* 限制数量
*/
private
Integer
quantityLimit
;
/**
* 赠送数量
*/
private
Integer
sendNumber
;
/**
* 赠品类型 0或null为计件赠品 1为称重赠品
*/
private
Integer
sendGoodsType
;
/**
* 赠品重量 g为单位
*/
private
Integer
sendGoodsWeight
;
/**
* 排序
*/
private
Integer
serialNumber
;
/**
* 商品类型:2、是加料商品,9、是虚拟商品,7、是套餐商品,1、是单品
*/
private
Integer
productType
;
/**
* 商品可兑换的券号
*/
private
String
sendCouponCode
;
/**
* 商品可兑换的券名称
*/
private
String
sendCouponName
;
/**
* 是否兑换券
*/
private
boolean
sendCoupon
=
false
;
}
}
shopping-cart-application-service/src/main/java/cn/freemud/demo/entities/bo/goods/CalculationDiscountBO.java
View file @
524253ba
...
...
@@ -117,6 +117,8 @@ public class CalculationDiscountBO {
private
Long
thresholdAmount
;
private
Long
totalAmount
;
private
Long
alreadyDiscountAmount
;
private
List
<
CalculationSharingDiscountResponseDto
.
CalculationDiscountResult
.
SendGoods
>
sendGoods
;
}
@Data
...
...
shopping-cart-application-service/src/main/java/cn/freemud/demo/entities/bo/promotion/ActivityBO.java
View file @
524253ba
...
...
@@ -63,6 +63,10 @@ public class ActivityBO {
*/
private
Integer
activityType
;
/**
* 活动子类型 1 阶梯 2 每满
*/
private
Integer
activitySubType
;
/**
* 适用于优惠券活动,优惠券类型,0:满减券 1:代金券
*/
private
Integer
couponType
;
...
...
shopping-cart-application-service/src/main/java/cn/freemud/demo/service/impl/AbstractApportionService.java
View file @
524253ba
...
...
@@ -1703,7 +1703,7 @@ public class AbstractApportionService implements GetShoppingCartGoodsApportionSe
CalculationDiscountBO
.
CalculationDiscountResult
.
Goods
goods
=
discountForGift
.
get
(
k
);
CalculationDiscountBO
.
CalculationDiscountResult
.
Goods
.
GoodsDiscount
discount
=
goods
.
getDiscounts
()
.
stream
()
.
filter
(
g
->
ActivityTypeEnum
.
TYPE_63
.
getCode
().
equals
(
g
.
getType
())
||
ActivityTypeEnum
.
TYPE_62
.
getCode
().
equals
(
g
.
getType
())
||
ActivityTypeEnum
.
TYPE_61
.
getCode
().
equals
(
g
.
getType
()))
.
filter
(
g
->
ActivityTypeEnum
.
TYPE_63
.
getCode
().
equals
(
g
.
getType
())
||
ActivityTypeEnum
.
TYPE_62
.
getCode
().
equals
(
g
.
getType
())
||
ActivityTypeEnum
.
TYPE_61
.
getCode
().
equals
(
g
.
getType
())
||
ActivityTypeEnum
.
TYPE_230
.
getCode
().
equals
(
g
.
getType
())
)
.
findFirst
()
.
get
();
ShoppingCartApportionBO
.
CartGoodsDetailDto
cartGoodsDetailDto
=
new
ShoppingCartApportionBO
.
CartGoodsDetailDto
();
...
...
shopping-cart-application-service/src/main/java/cn/freemud/demo/service/impl/DistributeServiceImpl.java
View file @
524253ba
...
...
@@ -94,6 +94,7 @@ public class DistributeServiceImpl implements DistributeService {
activityTypeEnums
.
add
(
ActivityTypeEnum
.
TYPE_12
);
activityTypeEnums
.
add
(
ActivityTypeEnum
.
TYPE_3
);
activityTypeEnums
.
add
(
ActivityTypeEnum
.
TYPE_31
);
activityTypeEnums
.
add
(
ActivityTypeEnum
.
TYPE_230
);
GetActivityBO
getActivityBO
=
new
GetActivityBO
();
getActivityBO
.
setActivityTypeEnums
(
activityTypeEnums
);
...
...
@@ -139,7 +140,7 @@ public class DistributeServiceImpl implements DistributeService {
if
(
CollectionUtils
.
isNotEmpty
(
discountMap
.
getDiscounts
()))
{
sum
=
discountMap
.
getDiscounts
()
.
stream
()
.
filter
(
d
->
typeEnums
.
contains
(
d
.
getType
()))
.
filter
(
d
->
typeEnums
.
contains
(
d
.
getType
())
&&
!
d
.
getType
().
equals
(
ActivityTypeEnum
.
TYPE_230
.
getCode
())
)
.
mapToLong
(
CalculationDiscountBO
.
CalculationDiscountResult
.
Goods
.
GoodsDiscount
::
getDiscount
)
.
sum
();
cart
.
setAmount
(
cart
.
getAmount
()
+
sum
);
...
...
shopping-cart-application-service/src/main/java/cn/freemud/demo/service/impl/MessageServiceImpl.java
View file @
524253ba
...
...
@@ -4,13 +4,17 @@ import cn.freemud.demo.entities.bo.goods.BenefitBeanBO;
import
cn.freemud.demo.entities.bo.goods.CalculationDiscountBO
;
import
cn.freemud.demo.entities.bo.promotion.ActivityBO
;
import
cn.freemud.demo.service.MessageService
;
import
cn.freemud.entities.dto.BenefitBeanDto
;
import
cn.freemud.entities.dto.calculate.CalculationSharingDiscountResponseDto
;
import
cn.freemud.entities.vo.ActivityList
;
import
cn.freemud.enums.ActivityTypeEnum
;
import
cn.freemud.enums.GiftTypeEnum
;
import
cn.freemud.utils.WebUtil
;
import
org.apache.commons.collections4.CollectionUtils
;
import
org.springframework.stereotype.Service
;
import
java.util.ArrayList
;
import
java.util.Collections
;
import
java.util.List
;
import
java.util.Objects
;
import
java.util.stream.Collectors
;
...
...
@@ -91,6 +95,32 @@ public class MessageServiceImpl implements MessageService {
activityList
.
add
(
notInShopping
);
}
}
if
(
Objects
.
equals
(
ActivityTypeEnum
.
TYPE_230
.
getCode
(),
activityBO
.
getActivityType
()))
{
ActivityList
notInShopping
=
new
ActivityList
();
// 规则:满5赠奶茶2件,炸鸡1件,满10赠布丁3件,牛奶1份,鸡翅2份,
// 提示语:满5元可获赠奶茶*2,炸鸡*1
//阶梯满赠
if
(
GiftTypeEnum
.
TYPE_1
.
getType
().
equals
(
activityBO
.
getActivitySubType
()))
{
notInShopping
.
setTipType
(
6
);
}
//每满赠
else
if
(
GiftTypeEnum
.
TYPE_2
.
getType
().
equals
(
activityBO
.
getActivitySubType
()))
{
notInShopping
.
setTipType
(
7
);
}
Collections
.
sort
(
benefitBeanBOList
);
BenefitBeanBO
benefitBean
=
benefitBeanBOList
.
get
(
0
);
int
len
=
benefitBean
.
getSendGoodsList
().
size
();
notInShopping
.
setSatisfy
(
WebUtil
.
formatAmount
(
benefitBean
.
getThresholdAmount
()
*
1.00
/
100
).
toString
());
List
<
ActivityList
.
SendGoods
>
sends
=
new
ArrayList
();
for
(
int
i
=
0
;
i
<
len
;
i
++)
{
ActivityList
.
SendGoods
goods
=
new
ActivityList
.
SendGoods
();
goods
.
setQty
(
benefitBean
.
getSendGoodsList
().
get
(
i
).
getSendNumber
());
goods
.
setGoodsName
(
benefitBean
.
getSendGoodsList
().
get
(
i
).
getGoodsName
());
sends
.
add
(
goods
);
}
notInShopping
.
setSends
(
sends
);
activityList
.
add
(
notInShopping
);
}
return
activityList
;
}
/**
...
...
@@ -105,40 +135,69 @@ public class MessageServiceImpl implements MessageService {
ArrayList
<
ActivityList
>
result
=
new
ArrayList
<>();
ActivityList
satisfyList
=
new
ActivityList
();
CalculationDiscountBO
.
CalculationDiscountResult
.
ActivityPrompt
activityPrompt
=
activityPrompts
.
get
(
0
);
if
(
activityPrompt
.
getAlreadyDiscountAmount
()
==
null
||
activityPrompt
.
getAlreadyDiscountAmount
()
==
0
)
{
messageBuilder
.
append
(
"满 <span style=\"color:#fa5555\">"
)
.
append
(
WebUtil
.
formatAmount
(
activityPrompt
.
getThresholdAmount
()
*
1.00
/
100
))
.
append
(
"</span> 减 <span style=\"color:#fa5555\">"
)
.
append
(
WebUtil
.
formatAmount
(
activityPrompt
.
getDiscountAmout
()
*
1.00
/
100
))
.
append
(
"</span> "
)
.
append
(
"还差 <span style=\"color:#fa5555\">"
)
.
append
(
WebUtil
.
formatAmount
((
activityPrompt
.
getThresholdAmount
()
-
activityPrompt
.
getTotalAmount
())
*
1.00
/
100
))
.
append
(
"</span> 元"
);
// 满足 X 元 减 Y 元 还差 Z元
satisfyList
.
setTipType
(
3
);
if
(
Objects
.
equals
(
ActivityTypeEnum
.
TYPE_11
.
getCode
(),
activityResponseDto
.
getActivityType
())
||
Objects
.
equals
(
ActivityTypeEnum
.
TYPE_12
.
getCode
(),
activityResponseDto
.
getActivityType
()))
{
if
(
activityPrompt
.
getAlreadyDiscountAmount
()
==
null
||
activityPrompt
.
getAlreadyDiscountAmount
()
==
0
)
{
messageBuilder
.
append
(
"满 <span style=\"color:#fa5555\">"
)
.
append
(
WebUtil
.
formatAmount
(
activityPrompt
.
getThresholdAmount
()
*
1.00
/
100
))
.
append
(
"</span> 减 <span style=\"color:#fa5555\">"
)
.
append
(
WebUtil
.
formatAmount
(
activityPrompt
.
getDiscountAmout
()
*
1.00
/
100
))
.
append
(
"</span> "
)
.
append
(
"还差 <span style=\"color:#fa5555\">"
)
.
append
(
WebUtil
.
formatAmount
((
activityPrompt
.
getThresholdAmount
()
-
activityPrompt
.
getTotalAmount
())
*
1.00
/
100
))
.
append
(
"</span> 元"
);
// 满足 X 元 减 Y 元 还差 Z元
satisfyList
.
setTipType
(
3
);
satisfyList
.
setSatisfy
(
WebUtil
.
formatAmount
(
activityPrompt
.
getThresholdAmount
()
*
1.00
/
100
).
toString
());
satisfyList
.
setDeduct
(
WebUtil
.
formatAmount
(
activityPrompt
.
getDiscountAmout
()
*
1.00
/
100
).
toString
());
satisfyList
.
setMissing
(
WebUtil
.
formatAmount
((
activityPrompt
.
getThresholdAmount
()
-
activityPrompt
.
getTotalAmount
())
*
1.00
/
100
).
toString
());
}
else
{
Long
toDiscountAmout
;
if
(
Objects
.
equals
(
ActivityTypeEnum
.
TYPE_11
.
getCode
(),
activityResponseDto
.
getActivityType
()))
{
toDiscountAmout
=
activityPrompt
.
getDiscountAmout
()
+
activityPrompt
.
getAlreadyDiscountAmount
();
}
else
{
toDiscountAmout
=
activityPrompt
.
getDiscountAmout
();
}
//已减 X 元 再买 Y 元 减 Z 元
messageBuilder
.
append
(
"已减 <span style=\"color:#fa5555\">"
)
.
append
(
WebUtil
.
formatAmount
(
activityPrompt
.
getAlreadyDiscountAmount
()
*
1.00
/
100
))
.
append
(
"</span> 元 再买 <span style=\"color:#fa5555\">"
)
.
append
(
WebUtil
.
formatAmount
((
activityPrompt
.
getThresholdAmount
()
-
activityPrompt
.
getTotalAmount
())
*
1.00
/
100
))
.
append
(
"</span> 元减 <span style=\"color:#fa5555\">"
)
.
append
(
WebUtil
.
formatAmount
(
toDiscountAmout
*
1.00
/
100
))
.
append
(
"</span> 元"
);
satisfyList
.
setTipType
(
4
);
satisfyList
.
setDeduct
(
WebUtil
.
formatAmount
(
activityPrompt
.
getAlreadyDiscountAmount
()
*
1.00
/
100
).
toString
());
satisfyList
.
setAgainBuy
(
WebUtil
.
formatAmount
((
activityPrompt
.
getThresholdAmount
()
-
activityPrompt
.
getTotalAmount
())
*
1.00
/
100
).
toString
());
satisfyList
.
setAgianDeduct
(
WebUtil
.
formatAmount
(
toDiscountAmout
*
1.00
/
100
).
toString
());
}
}
if
(
Objects
.
equals
(
ActivityTypeEnum
.
TYPE_230
.
getCode
(),
activityResponseDto
.
getActivityType
())
&&
CollectionUtils
.
isNotEmpty
(
activityPrompt
.
getSendGoods
()))
{
satisfyList
.
setTipType
(
10
);
List
<
ActivityList
.
SendGoods
>
sends
=
new
ArrayList
();
for
(
CalculationSharingDiscountResponseDto
.
CalculationDiscountResult
.
SendGoods
sendGood
:
activityPrompt
.
getSendGoods
())
{
ActivityList
.
SendGoods
send
=
new
ActivityList
.
SendGoods
();
send
.
setGoodsName
(
sendGood
.
getGoodsName
());
send
.
setQty
(
sendGood
.
getSendNumber
());
sends
.
add
(
send
);
}
satisfyList
.
setSends
(
sends
);
satisfyList
.
setSatisfy
(
WebUtil
.
formatAmount
(
activityPrompt
.
getThresholdAmount
()
*
1.00
/
100
).
toString
());
satisfyList
.
setDeduct
(
WebUtil
.
formatAmount
(
activityPrompt
.
getDiscountAmout
()
*
1.00
/
100
).
toString
());
satisfyList
.
setMissing
(
WebUtil
.
formatAmount
((
activityPrompt
.
getThresholdAmount
()
-
activityPrompt
.
getTotalAmount
())
*
1.00
/
100
).
toString
());
}
else
{
Long
toDiscountAmout
;
if
(
Objects
.
equals
(
ActivityTypeEnum
.
TYPE_11
.
getCode
(),
activityResponseDto
.
getActivityType
()))
{
toDiscountAmout
=
activityPrompt
.
getDiscountAmout
()
+
activityPrompt
.
getAlreadyDiscountAmount
();
}
else
{
toDiscountAmout
=
activityPrompt
.
getDiscountAmout
();
if
(
GiftTypeEnum
.
TYPE_1
.
getType
().
equals
(
activityResponseDto
.
getActivitySubType
()))
{
satisfyList
.
setTipType
(
8
);
}
else
{
satisfyList
.
setTipType
(
7
);
}
if
(
activityPrompt
.
getTotalAmount
()>=
activityPrompt
.
getThresholdAmount
())
{
if
(
GiftTypeEnum
.
TYPE_1
.
getType
().
equals
(
activityResponseDto
.
getActivitySubType
()))
{
satisfyList
.
setTipType
(
10
);
}
else
{
satisfyList
.
setTipType
(
7
);
}
}
//已减 X 元 再买 Y 元 减 Z 元
messageBuilder
.
append
(
"已减 <span style=\"color:#fa5555\">"
)
.
append
(
WebUtil
.
formatAmount
(
activityPrompt
.
getAlreadyDiscountAmount
()
*
1.00
/
100
))
.
append
(
"</span> 元 再买 <span style=\"color:#fa5555\">"
)
.
append
(
WebUtil
.
formatAmount
((
activityPrompt
.
getThresholdAmount
()
-
activityPrompt
.
getTotalAmount
())
*
1.00
/
100
))
.
append
(
"</span> 元减 <span style=\"color:#fa5555\">"
)
.
append
(
WebUtil
.
formatAmount
(
toDiscountAmout
*
1.00
/
100
))
.
append
(
"</span> 元"
);
satisfyList
.
setTipType
(
4
);
satisfyList
.
setDeduct
(
WebUtil
.
formatAmount
(
activityPrompt
.
getAlreadyDiscountAmount
()
*
1.00
/
100
).
toString
());
satisfyList
.
setAgainBuy
(
WebUtil
.
formatAmount
((
activityPrompt
.
getThresholdAmount
()
-
activityPrompt
.
getTotalAmount
())
*
1.00
/
100
).
toString
());
satisfyList
.
setAgianDeduct
(
WebUtil
.
formatAmount
(
toDiscountAmout
*
1.00
/
100
).
toString
());
}
result
.
add
(
satisfyList
);
return
result
;
...
...
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