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
2a6756ed
Commit
2a6756ed
authored
Mar 08, 2021
by
chongfu.liang
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
商品券和换购券添加启用金额
parent
a1360bfa
Hide whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
92 additions
and
23 deletions
+92
-23
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/calculate/CalculationSharingDiscountResponseDto.java
+5
-0
shopping-cart-application-service/src/main/java/cn/freemud/service/impl/CouponPromotionService.java
+31
-2
shopping-cart-application-service/src/main/java/cn/freemud/service/impl/ShoppingCartNewServiceImpl.java
+18
-3
shopping-cart-application-service/src/main/java/cn/freemud/service/impl/calculate/CalculationSharingCartService.java
+3
-2
shopping-cart-application-service/src/main/java/cn/freemud/service/impl/calculate/CalculationSharingDiscountService.java
+2
-14
shopping-cart-application-service/src/main/java/cn/freemud/service/impl/calculate/promotion/CouponSharingService.java
+29
-2
No files found.
shopping-cart-application-service/src/main/java/cn/freemud/entities/dto/ActivityCalculationDiscountResponseDto.java
View file @
2a6756ed
...
...
@@ -90,6 +90,10 @@ public class ActivityCalculationDiscountResponseDto {
*/
private
Map
<
String
,
CheckSpqInfoResponseDto
>
validCouponMap
;
/**
* 校验后有效的spqid对应的uuid
*/
private
Map
<
String
,
List
<
String
>>
spqIdToCartUuid
;
/**
* 扣减库存
*/
private
List
<
SubtractStockVO
>
stocks
;
...
...
shopping-cart-application-service/src/main/java/cn/freemud/entities/dto/calculate/CalculationSharingDiscountResponseDto.java
View file @
2a6756ed
...
...
@@ -88,6 +88,11 @@ public class CalculationSharingDiscountResponseDto {
*/
private
Map
<
String
,
CheckSpqInfoResponseDto
>
validCouponMap
;
/**
* 校验后有效的spqid对应的uuid
*/
private
Map
<
String
,
List
<
String
>>
spqIdToCartUuid
;
/**
* 扣减库存
*/
private
List
<
SubtractStockVO
>
stocks
;
...
...
shopping-cart-application-service/src/main/java/cn/freemud/service/impl/CouponPromotionService.java
View file @
2a6756ed
...
...
@@ -13,6 +13,7 @@ import cn.freemud.enums.*;
import
cn.freemud.service.CouponService
;
import
cn.freemud.service.IPromotionService
;
import
com.freemud.sdk.api.assortment.shoppingcart.constant.CommonsConstant
;
import
com.freemud.sdk.api.assortment.shoppingcart.service.impl.ShoppingCartBaseServiceImpl
;
import
com.google.common.collect.Lists
;
import
org.apache.commons.collections4.CollectionUtils
;
import
org.apache.commons.collections4.MapUtils
;
...
...
@@ -42,8 +43,17 @@ public class CouponPromotionService implements IPromotionService {
@Autowired
private
CouponService
couponService
;
@Autowired
private
AssortmentSdkService
assortmentSdkService
;
@Autowired
private
ShoppingCartBaseServiceImpl
shoppingCartBaseService
;
@Override
public
void
updateShoppingCartGoodsDiscount
(
CouponPromotionVO
couponPromotionVO
,
ActivityQueryDto
activityQueryDto
,
ActivityCalculationDiscountResponseDto
.
CalculationDiscountResult
calculationDiscountResult
,
List
<
CartGoods
>
cartGoodsList
,
ShoppingCartGoodsResponseVo
shoppingCartGoodsResponseVo
,
UserLoginInfoDto
userLoginInfoDto
,
ShoppingCartInfoRequestVo
shoppingCartInfoRequestVo
)
{
public
void
updateShoppingCartGoodsDiscount
(
CouponPromotionVO
couponPromotionVO
,
ActivityQueryDto
activityQueryDto
,
ActivityCalculationDiscountResponseDto
.
CalculationDiscountResult
calculationDiscountResult
,
List
<
CartGoods
>
cartGoodsList
,
ShoppingCartGoodsResponseVo
shoppingCartGoodsResponseVo
,
UserLoginInfoDto
userLoginInfoDto
,
ShoppingCartInfoRequestVo
shoppingCartInfoRequestVo
)
{
// 用户选择了查询优惠券信息
if
(
couponPromotionVO
!=
null
&&
ObjectUtils
.
equals
(
CouponFlag
.
YES
.
getCode
(),
couponPromotionVO
.
getFlg
()))
{
List
<
CartGoods
>
tmpCartGoods
=
cartGoodsList
.
parallelStream
().
filter
(
k
->
k
.
getCartGoodsUid
()
...
...
@@ -83,12 +93,31 @@ public class CouponPromotionService implements IPromotionService {
}
}
shoppingCartGoodsResponseVo
.
setCouponDiscount
(
couponDiscount
);
Map
<
String
,
CheckSpqInfoResponseDto
>
validCouponMap
=
calculationDiscountResult
==
null
?
new
HashMap
<>()
:
calculationDiscountResult
.
getValidCouponMap
();
Map
<
String
,
List
<
String
>>
spqIdToCartUuid
=
calculationDiscountResult
==
null
?
new
HashMap
<>()
:
calculationDiscountResult
.
getSpqIdToCartUuid
();
if
(
MapUtils
.
isNotEmpty
(
validCouponMap
)
&&
MapUtils
.
isNotEmpty
(
spqIdToCartUuid
)
&&
calculationDiscountResult
!=
null
){
List
<
String
>
activityCodeList
=
calculationDiscountResult
.
getDiscounts
().
stream
().
map
(
p
->
p
.
getActivityCode
()).
collect
(
Collectors
.
toList
());
for
(
String
spqId
:
validCouponMap
.
keySet
())
{
if
(!
activityCodeList
.
contains
(
spqId
)){
// 表示商品券不够启用金额
List
<
String
>
uuidList
=
spqIdToCartUuid
.
get
(
spqId
);
if
(
CollectionUtils
.
isNotEmpty
(
uuidList
)){
List
<
CartGoods
>
newCartList
=
cartGoodsList
.
stream
().
filter
(
p
->
!
uuidList
.
contains
(
p
.
getCartGoodsUid
())).
collect
(
Collectors
.
toList
());
assortmentSdkService
.
setShoppingCart
(
shoppingCartInfoRequestVo
.
getPartnerId
(),
shoppingCartInfoRequestVo
.
getShopId
(),
userLoginInfoDto
.
getMemberId
(),
newCartList
,
null
,
null
,
this
.
shoppingCartBaseService
);
CheckSpqInfoResponseDto
checkSpqInfoResponseDto
=
validCouponMap
.
get
(
spqId
);
shoppingCartGoodsResponseVo
.
setChanged
(
true
);
shoppingCartGoodsResponseVo
.
setToastMsg
(
"当前购物车金额低于【"
+
checkSpqInfoResponseDto
.
getCouponName
()
+
"】优惠券起用金额门槛,券已自动移除购物车"
);
}
}
}
}
//循环购物车商品券
for
(
CartGoods
cartGoods
:
cartGoodsList
)
{
if
(
cartGoods
.
getCartGoodsUid
().
startsWith
(
CommonsConstant
.
COUPON_PREFIX
))
{
String
spqId
=
cartGoods
.
getCartGoodsUid
().
substring
(
CommonsConstant
.
COUPON_PREFIX
.
length
());
// 计算优惠信息时,已将券校验过,放在map中
Map
<
String
,
CheckSpqInfoResponseDto
>
validCouponMap
=
calculationDiscountResult
==
null
?
new
HashMap
<>()
:
calculationDiscountResult
.
getValidCouponMap
();
if
(
MapUtils
.
isNotEmpty
(
validCouponMap
))
{
CheckSpqInfoResponseDto
checkSpqInfoResponseDto
=
validCouponMap
.
get
(
spqId
);
if
(
checkSpqInfoResponseDto
!=
null
)
{
...
...
shopping-cart-application-service/src/main/java/cn/freemud/service/impl/ShoppingCartNewServiceImpl.java
View file @
2a6756ed
...
...
@@ -370,7 +370,8 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService {
,
deliveryAmount
,
ShoppingCartConstant
.
ADD_AND_UPDATE
,
partnerId
,
null
);
,
null
,
userId
);
buildShoppingCartGoodsResponse
(
shoppingCartGoodsResponseVo
,
discountResult
,
null
,
partnerId
);
}
...
...
@@ -496,7 +497,8 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService {
,
deliveryAmount
,
ShoppingCartConstant
.
ADD_AND_UPDATE
,
partnerId
,
null
);
,
null
,
userId
);
buildShoppingCartGoodsResponse
(
shoppingCartGoodsResponseVo
,
discountResult
,
null
,
partnerId
);
}
...
...
@@ -656,7 +658,8 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService {
,
deliveryAmount
,
ShoppingCartConstant
.
QUERY_INFO
,
partnerId
,
shoppingCartInfoRequestVo
.
getFlag
());
,
shoppingCartInfoRequestVo
.
getFlag
()
,
userId
);
buildShoppingCartGoodsResponse
(
shoppingCartGoodsResponseVo
,
calculationSharingDiscountResult
,
shoppingCartInfoRequestVo
.
getFlag
(),
partnerId
);
}
...
...
@@ -1157,6 +1160,7 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService {
List
<
ActivityCalculationDiscountRequestDto
.
CalculationDiscountGoods
>
calculationDiscountGoodsList
=
new
ArrayList
<>();
// 校验后有效的商品券map
Map
<
String
,
CheckSpqInfoResponseDto
>
validCouponMap
=
new
HashMap
<>(
16
);
HashMap
<
String
,
List
<
String
>>
spqIdToCartUuid
=
new
HashMap
<>(
16
);
for
(
int
i
=
cartGoodsList
.
size
()
-
1
;
i
>=
0
;
i
--)
{
CartGoods
cartGoods
=
cartGoodsList
.
get
(
i
);
String
cartGoodsUid
=
cartGoods
.
getCartGoodsUid
();
...
...
@@ -1181,6 +1185,15 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService {
cartGoodsList
.
remove
(
i
);
assortmentSdkService
.
setShoppingCart
(
partnerId
,
storeId
,
userId
,
cartGoodsList
,
null
,
null
,
this
.
shoppingCartBaseService
);
}
else
{
if
(
spqIdToCartUuid
.
containsKey
(
spqId
)){
List
<
String
>
uuidList
=
spqIdToCartUuid
.
get
(
spqId
);
uuidList
.
add
(
cartGoods
.
getCartGoodsUid
());
spqIdToCartUuid
.
put
(
spqId
,
uuidList
);
}
else
{
List
<
String
>
uuidList
=
new
ArrayList
<>();
uuidList
.
add
(
cartGoods
.
getCartGoodsUid
());
spqIdToCartUuid
.
put
(
spqId
,
uuidList
);
}
validCouponMap
.
put
(
spqId
,
checkSpqInfoResponseDto
);
cartGoods
.
setName
(
checkSpqInfoResponseDto
.
getCouponName
());
cartGoods
.
setSpuName
(
checkSpqInfoResponseDto
.
getCouponName
());
...
...
@@ -1234,12 +1247,14 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService {
// 返回成功
if
(
activityCalculationDiscountResponseDto
!=
null
&&
StringUtils
.
equals
(
activityCalculationDiscountResponseDto
.
getStatusCode
(),
ResponseCodeConstant
.
RESPONSE_SUCCESS_STR
))
{
ActivityCalculationDiscountResponseDto
.
CalculationDiscountResult
result
=
activityCalculationDiscountResponseDto
.
getResult
();
List
<
Integer
>
activityTypes
=
result
.
getDiscounts
().
stream
().
map
(
ActivityCalculationDiscountResponseDto
.
CalculationDiscountResult
.
Discount
::
getType
).
collect
(
Collectors
.
toList
());
if
(
activityTypes
.
contains
(
221
))
{
ActivityCalculationDiscountResponseDto
.
CalculationDiscountResult
.
Discount
discountDTO
=
result
.
getDiscounts
().
stream
().
filter
(
d
->
221
==
d
.
getType
()).
findFirst
().
get
();
convert2SendPoint
(
result
,
discountDTO
);
}
result
.
setValidCouponMap
(
validCouponMap
);
result
.
setSpqIdToCartUuid
(
spqIdToCartUuid
);
result
.
setDeliveryAmount
(
distributionFee
);
result
.
setDistributionFee
(
result
.
getDistributionFee
());
return
result
;
...
...
shopping-cart-application-service/src/main/java/cn/freemud/service/impl/calculate/CalculationSharingCartService.java
View file @
2a6756ed
...
...
@@ -68,7 +68,8 @@ public class CalculationSharingCartService {
,
Long
deliveryAmount
,
String
opt
,
String
partnerId
,
Integer
flag
)
{
,
Integer
flag
,
String
userId
)
{
/**
* 用促销价格初始化购物车行记录成交价
...
...
@@ -78,7 +79,7 @@ public class CalculationSharingCartService {
/**
* 可用券及券折扣
*/
promotionSharingService
.
updateShoppingCartGoodsDiscount
(
discountResult
,
cartGoodsList
,
shoppingCartGoodsResponseVo
,
couponPromotionVO
,
shoppingCartInfoRequestVo
);
promotionSharingService
.
updateShoppingCartGoodsDiscount
(
discountResult
,
cartGoodsList
,
shoppingCartGoodsResponseVo
,
couponPromotionVO
,
shoppingCartInfoRequestVo
,
userId
);
/**
* 满减处理
...
...
shopping-cart-application-service/src/main/java/cn/freemud/service/impl/calculate/CalculationSharingDiscountService.java
View file @
2a6756ed
...
...
@@ -8,6 +8,7 @@ import cn.freemud.entities.dto.calculate.CalculationSharingDiscountRequestDto;
import
cn.freemud.entities.dto.calculate.CalculationSharingDiscountResponseDto
;
import
cn.freemud.entities.dto.shoppingCart.SendPoint
;
import
cn.freemud.entities.vo.CartGoods
;
import
cn.freemud.entities.vo.ShoppingCartGoodsResponseVo
;
import
cn.freemud.entities.vo.ShoppingCartInfoRequestVo
;
import
cn.freemud.enums.*
;
import
cn.freemud.interceptor.BizServiceException
;
...
...
@@ -193,21 +194,7 @@ public class CalculationSharingDiscountService {
// 返回成功
if
(
sharingDiscountResponseDto
!=
null
&&
StringUtils
.
equals
(
sharingDiscountResponseDto
.
getStatusCode
(),
ResponseCodeConstant
.
RESPONSE_SUCCESS_STR
))
{
CalculationSharingDiscountResponseDto
.
CalculationDiscountResult
result
=
sharingDiscountResponseDto
.
getResult
();
if
(
validCouponMap
!=
null
){
List
<
String
>
activityCodeList
=
result
.
getDiscounts
().
stream
().
map
(
p
->
p
.
getActivityCode
()).
collect
(
Collectors
.
toList
());
for
(
String
spqId
:
validCouponMap
.
keySet
())
{
if
(!
activityCodeList
.
contains
(
spqId
)){
// 表示商品券不够启用金额
List
<
String
>
uuidList
=
spqIdToCartUuid
.
get
(
spqId
);
if
(
CollectionUtils
.
isNotEmpty
(
uuidList
)){
List
<
CartGoods
>
newCartList
=
cartGoodsList
.
stream
().
filter
(
p
->
!
uuidList
.
contains
(
p
.
getCartGoodsUid
())).
collect
(
Collectors
.
toList
());
assortmentSdkService
.
setShoppingCart
(
partnerId
,
storeId
,
userId
,
newCartList
,
null
,
null
,
this
.
shoppingCartBaseService
);
throw
new
BizServiceException
(
ResponseResult
.
COCO_COUPON_VALIDATOR_FAIL
,
sharingDiscountResponseDto
.
getMsg
());
}
}
}
}
List
<
Integer
>
activityTypes
=
result
.
getDiscounts
().
stream
().
map
(
CalculationSharingDiscountResponseDto
.
CalculationDiscountResult
.
Discount
::
getType
).
collect
(
Collectors
.
toList
());
if
(
activityTypes
.
contains
(
221
))
{
...
...
@@ -215,6 +202,7 @@ public class CalculationSharingDiscountService {
convert2SendPoint
(
result
,
discountDTO
);
}
result
.
setValidCouponMap
(
validCouponMap
);
result
.
setSpqIdToCartUuid
(
spqIdToCartUuid
);
result
.
setDeliveryAmount
(
deliveryAmount
);
result
.
setDistributionFee
(
result
.
getDistributionFee
());
return
result
;
...
...
shopping-cart-application-service/src/main/java/cn/freemud/service/impl/calculate/promotion/CouponSharingService.java
View file @
2a6756ed
...
...
@@ -9,7 +9,9 @@ import cn.freemud.entities.vo.*;
import
cn.freemud.enums.CouponFlag
;
import
cn.freemud.enums.GoodsTypeEnum
;
import
cn.freemud.service.CouponService
;
import
cn.freemud.service.impl.AssortmentSdkService
;
import
com.freemud.sdk.api.assortment.shoppingcart.constant.CommonsConstant
;
import
com.freemud.sdk.api.assortment.shoppingcart.service.impl.ShoppingCartBaseServiceImpl
;
import
com.google.common.collect.Lists
;
import
org.apache.commons.collections4.CollectionUtils
;
import
org.apache.commons.collections4.MapUtils
;
...
...
@@ -38,11 +40,18 @@ public class CouponSharingService {
@Autowired
private
CouponService
couponService
;
@Autowired
private
AssortmentSdkService
assortmentSdkService
;
@Autowired
private
ShoppingCartBaseServiceImpl
shoppingCartBaseService
;
public
void
updateShoppingCartGoodsDiscount
(
CalculationSharingDiscountResponseDto
.
CalculationDiscountResult
calculationDiscountResult
,
List
<
CartGoods
>
cartGoodsList
,
ShoppingCartGoodsResponseVo
shoppingCartGoodsResponseVo
,
CouponPromotionVO
couponPromotionVO
,
ShoppingCartInfoRequestVo
shoppingCartInfoRequestVo
)
{
,
ShoppingCartInfoRequestVo
shoppingCartInfoRequestVo
,
String
userId
)
{
// 用户选择了查询优惠券信息
if
(
couponPromotionVO
!=
null
&&
ObjectUtils
.
equals
(
CouponFlag
.
YES
.
getCode
(),
couponPromotionVO
.
getFlg
()))
{
List
<
CartGoods
>
tmpCartGoods
=
cartGoodsList
.
parallelStream
().
filter
(
k
->
k
.
getCartGoodsUid
()
...
...
@@ -83,12 +92,30 @@ public class CouponSharingService {
if
(
first
!=
null
)
couponDiscount
=
first
.
getDiscount
().
longValue
();
}
shoppingCartGoodsResponseVo
.
setCouponDiscount
(
couponDiscount
);
Map
<
String
,
CheckSpqInfoResponseDto
>
validCouponMap
=
calculationDiscountResult
==
null
?
new
HashMap
<>()
:
calculationDiscountResult
.
getValidCouponMap
();
Map
<
String
,
List
<
String
>>
spqIdToCartUuid
=
calculationDiscountResult
==
null
?
new
HashMap
<>()
:
calculationDiscountResult
.
getSpqIdToCartUuid
();
if
(
MapUtils
.
isNotEmpty
(
validCouponMap
)
&&
MapUtils
.
isNotEmpty
(
spqIdToCartUuid
)
&&
calculationDiscountResult
!=
null
){
List
<
String
>
activityCodeList
=
calculationDiscountResult
.
getDiscounts
().
stream
().
map
(
p
->
p
.
getActivityCode
()).
collect
(
Collectors
.
toList
());
for
(
String
spqId
:
validCouponMap
.
keySet
())
{
if
(!
activityCodeList
.
contains
(
spqId
)){
// 表示商品券不够启用金额
List
<
String
>
uuidList
=
spqIdToCartUuid
.
get
(
spqId
);
if
(
CollectionUtils
.
isNotEmpty
(
uuidList
)){
List
<
CartGoods
>
newCartList
=
cartGoodsList
.
stream
().
filter
(
p
->
!
uuidList
.
contains
(
p
.
getCartGoodsUid
())).
collect
(
Collectors
.
toList
());
assortmentSdkService
.
setShoppingCart
(
shoppingCartInfoRequestVo
.
getPartnerId
(),
shoppingCartInfoRequestVo
.
getShopId
(),
userId
,
newCartList
,
null
,
null
,
this
.
shoppingCartBaseService
);
CheckSpqInfoResponseDto
checkSpqInfoResponseDto
=
validCouponMap
.
get
(
spqId
);
shoppingCartGoodsResponseVo
.
setChanged
(
true
);
shoppingCartGoodsResponseVo
.
setToastMsg
(
"当前购物车金额低于【"
+
checkSpqInfoResponseDto
.
getCouponName
()
+
"】优惠券起用金额门槛,券已自动移除购物车"
);
}
}
}
}
//循环购物车商品券
for
(
CartGoods
cartGoods
:
cartGoodsList
)
{
if
(
cartGoods
.
getCartGoodsUid
().
startsWith
(
CommonsConstant
.
COUPON_PREFIX
))
{
String
spqId
=
cartGoods
.
getCartGoodsUid
().
substring
(
CommonsConstant
.
COUPON_PREFIX
.
length
());
// 计算优惠信息时,已将券校验过,放在map中
Map
<
String
,
CheckSpqInfoResponseDto
>
validCouponMap
=
calculationDiscountResult
==
null
?
new
HashMap
<>()
:
calculationDiscountResult
.
getValidCouponMap
();
if
(
MapUtils
.
isNotEmpty
(
validCouponMap
))
{
CheckSpqInfoResponseDto
checkSpqInfoResponseDto
=
validCouponMap
.
get
(
spqId
);
if
(
checkSpqInfoResponseDto
!=
null
)
{
...
...
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