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
5d924d09
Commit
5d924d09
authored
Feb 23, 2021
by
chongfu.liang
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
兼容老商品券
parent
230e33da
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
66 additions
and
20 deletions
+66
-20
shopping-cart-application-service/src/main/java/cn/freemud/service/ShoppingCartNewService.java
+3
-3
shopping-cart-application-service/src/main/java/cn/freemud/service/impl/ShoppingCartNewServiceImpl.java
+26
-9
shopping-cart-application-service/src/main/java/cn/freemud/service/impl/calculate/CalculationSharingDiscountService.java
+11
-3
shopping-cart-application-service/src/main/java/cn/freemud/service/impl/calculate/promotion/CouponSharingService.java
+26
-5
No files found.
shopping-cart-application-service/src/main/java/cn/freemud/service/ShoppingCartNewService.java
View file @
5d924d09
...
...
@@ -110,7 +110,7 @@ public interface ShoppingCartNewService {
*
* @param partnerId
* @param storeId
* @param
spuId
* @param
couponCode
* @param productIds
* @return
*/
...
...
@@ -140,7 +140,7 @@ public interface ShoppingCartNewService {
*
* @param partnerId
* @param storeId
* @param
spuId
* @param
couponCode
* @param productIds
* @param menuType
* @param goodsId
...
...
@@ -300,7 +300,7 @@ public interface ShoppingCartNewService {
updateCartGoodsLegal
(
cartGoods
,
userId
,
shoppingCartGoodsResponseVo
,
addShoppingCartGoodsRequestVo
,
allCartGoodsList
);
// 如果购物车中有商品券,则当前添加的商品是特价商品时,需要提示“已选商品券,与其他优惠商品不同享,商品将恢复原价”
boolean
haveCouponProduct
=
allCartGoodsList
.
parallelStream
().
anyMatch
(
k
->
StringUtils
.
isNotBlank
(
k
.
getCouponCode
(
)));
boolean
haveCouponProduct
=
allCartGoodsList
.
parallelStream
().
anyMatch
(
k
->
(
StringUtils
.
isNotBlank
(
k
.
getCouponCode
())
||
k
.
getCartGoodsUid
().
startsWith
(
CommonsConstant
.
COUPON_PREFIX
)));
if
(
haveCouponProduct
&&
isSpecialGoods
(
addShoppingCartGoodsRequestVo
.
getPartnerId
(),
addShoppingCartGoodsRequestVo
.
getShopId
(),
userId
,
addShoppingCartGoodsRequestVo
.
getAppId
(),
goodsId
,
addShoppingCartGoodsRequestVo
.
getOrderType
()))
{
// 如果购物车先加入商品券,再加入促销商品,toast提示“已选商品券,与其他优惠商品不同享,商品将恢复原价”
setToastMsgIfNotExist
(
shoppingCartGoodsResponseVo
,
ShoppingCartConstant
.
HAS_GOODS_COUPON_WHEN_ADD_SPECIAL_GOODS
);
...
...
shopping-cart-application-service/src/main/java/cn/freemud/service/impl/ShoppingCartNewServiceImpl.java
View file @
5d924d09
...
...
@@ -287,6 +287,9 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService {
String
receiveId
=
addShoppingCartGoodsRequestVo
.
getReceiveId
();
String
tableNumber
=
addShoppingCartGoodsRequestVo
.
getTableNumber
();
String
couponCode
=
addShoppingCartGoodsRequestVo
.
getCouponCode
();
// 商品券和换购券券号
if
(
spuId
.
startsWith
(
CommonsConstant
.
COUPON_PREFIX
)){
// 兼容老版本
couponCode
=
spuId
.
substring
(
CommonsConstant
.
COUPON_PREFIX
.
length
());
}
CartGoods
cartGoods
=
ShoppingCartConvertAdapter
.
convent2CartGoods
(
addShoppingCartGoodsRequestVo
);
List
<
Long
>
productIds
=
new
ArrayList
<>();
...
...
@@ -1153,14 +1156,20 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService {
Map
<
String
,
CheckSpqInfoResponseDto
>
validCouponMap
=
new
HashMap
<>(
16
);
for
(
int
i
=
cartGoodsList
.
size
()
-
1
;
i
>=
0
;
i
--)
{
CartGoods
cartGoods
=
cartGoodsList
.
get
(
i
);
String
cartGoodsUid
=
cartGoods
.
getCartGoodsUid
();
// 商品不是商品券
if
(
StringUtils
.
isBlank
(
cartGoods
.
getCouponCode
()))
{
if
(
StringUtils
.
isBlank
(
cartGoods
.
getCouponCode
())
&&
!
cartGoodsUid
.
startsWith
(
CommonsConstant
.
COUPON_PREFIX
)
)
{
this
.
addCalculationDiscountGoods
(
calculationDiscountGoodsList
,
cartGoods
);
}
// 商品是商品券
else
{
// 商品券ID换取商品
String
couponCode
=
cartGoods
.
getCouponCode
();
String
couponCode
=
""
;
if
(
cartGoodsUid
.
startsWith
(
CommonsConstant
.
COUPON_PREFIX
)){
couponCode
=
cartGoods
.
getCartGoodsUid
().
substring
(
CommonsConstant
.
COUPON_PREFIX
.
length
());
}
else
{
couponCode
=
cartGoods
.
getCouponCode
();
}
CheckSpqInfoRequestDto
checkSpqInfoRequestDto
=
new
CheckSpqInfoRequestDto
(
partnerId
,
storeId
,
couponCode
,
menuType
);
CheckSpqInfoResponseDto
checkSpqInfoResponseDto
=
null
;
if
(
GoodsTypeEnum
.
HG_COUPON_GOODS
.
getGoodsType
().
equals
(
cartGoods
.
getGoodsType
()))
{
...
...
@@ -1173,8 +1182,11 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService {
cartGoodsList
.
remove
(
i
);
assortmentSdkService
.
setShoppingCart
(
partnerId
,
storeId
,
userId
,
cartGoodsList
,
null
,
null
,
this
.
shoppingCartBaseService
);
}
else
{
validCouponMap
.
put
(
couponCode
,
checkSpqInfoResponseDto
);
validCouponMap
.
put
(
couponCode
+
checkSpqInfoResponseDto
.
getSkuId
(),
checkSpqInfoResponseDto
);
if
(
cartGoodsUid
.
startsWith
(
CommonsConstant
.
COUPON_PREFIX
)){
validCouponMap
.
put
(
couponCode
,
checkSpqInfoResponseDto
);
}
else
{
validCouponMap
.
put
(
couponCode
+
checkSpqInfoResponseDto
.
getSkuId
(),
checkSpqInfoResponseDto
);
}
cartGoods
.
setName
(
checkSpqInfoResponseDto
.
getCouponName
());
cartGoods
.
setSpuName
(
checkSpqInfoResponseDto
.
getCouponName
());
cartGoods
.
setStockLimit
(
checkSpqInfoResponseDto
.
isStockLimit
());
...
...
@@ -1187,9 +1199,9 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService {
// 换购券传给促销要带code
String
goodsId
=
StringUtils
.
isEmpty
(
checkSpqInfoResponseDto
.
getSkuId
())
?
checkSpqInfoResponseDto
.
getSpuId
()
:
checkSpqInfoResponseDto
.
getSkuId
();
if
(
GoodsTypeEnum
.
HG_COUPON_GOODS
.
getGoodsType
().
equals
(
cartGoods
.
getGoodsType
()))
{
this
.
addCalculationDiscountGoods
(
calculationDiscountGoodsList
,
goodsId
,
1
,
checkSpqInfoResponseDto
.
getPrice
(),
100
,
cartGoods
.
getCartGoodsUid
()
,
cartGoods
.
getSpuId
());
this
.
addCalculationDiscountGoods
(
calculationDiscountGoodsList
,
goodsId
,
1
,
checkSpqInfoResponseDto
.
getPrice
(),
100
,
cartGoods
Uid
,
cartGoods
.
getSpuId
());
}
else
{
this
.
addCalculationDiscountGoods
(
calculationDiscountGoodsList
,
goodsId
,
1
,
checkSpqInfoResponseDto
.
getPrice
(),
100
,
cartGoods
.
getCartGoodsUid
()
);
this
.
addCalculationDiscountGoods
(
calculationDiscountGoodsList
,
goodsId
,
1
,
checkSpqInfoResponseDto
.
getPrice
(),
100
,
cartGoods
Uid
);
}
}
}
...
...
@@ -1699,8 +1711,14 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService {
}
else
{
cartGoods
.
setGoodsType
(
GoodsTypeEnum
.
COUPON_GOODS
.
getGoodsType
());
}
cartGoods
.
setCouponCode
(
couponCode
);
cartGoods
.
setSpuId
(
spuId
);
if
(
StringUtils
.
isBlank
(
addShoppingCartGoodsRequestVo
.
getCouponCode
())){
//老商品券
cartGoods
.
setCartGoodsUid
(
spuId
);
}
else
{
cartGoods
.
setCouponCode
(
couponCode
);
}
// 商品券Id
String
spqId
=
spuId
.
substring
(
CommonsConstant
.
COUPON_PREFIX
.
length
());
cartGoods
.
setSpuId
(
spqId
);
cartGoods
.
setSkuId
(
spuId2
);
cartGoods
.
setOriginalPrice
(
0L
);
cartGoods
.
setOriginalAmount
(
0L
);
...
...
@@ -1722,7 +1740,6 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService {
}
}
cartGoods
.
setStockLimit
(
stockLimit
);
List
<
String
>
goodsIds
=
allCartGoodsList
.
parallelStream
().
map
(
CartGoods:
:
getGoodsId
).
collect
(
Collectors
.
toList
());
boolean
hasSpecialGoods
=
hasSpecialGoods
(
addShoppingCartGoodsRequestVo
.
getPartnerId
(),
addShoppingCartGoodsRequestVo
.
getShopId
(),
userId
,
addShoppingCartGoodsRequestVo
.
getAppId
(),
goodsIds
,
addShoppingCartGoodsRequestVo
.
getOrderType
());
// 如果购物车先加入促销活动的商品,再加入商品券时,toast提示“该商品券与其他活动不同享,购物车中已优惠的商品将恢复原价”
...
...
shopping-cart-application-service/src/main/java/cn/freemud/service/impl/calculate/CalculationSharingDiscountService.java
View file @
5d924d09
...
...
@@ -84,11 +84,16 @@ public class CalculationSharingDiscountService {
int
cartSize
=
cartGoodsList
.
size
()
-
1
;
for
(
int
i
=
cartSize
;
i
>=
0
;
i
--)
{
CartGoods
cartGoods
=
cartGoodsList
.
get
(
i
);
if
(
StringUtils
.
isBlank
(
cartGoods
.
getCouponCode
()))
{
//非商品券
if
(
StringUtils
.
isBlank
(
cartGoods
.
getCouponCode
())
&&
!
cartGoods
.
getCartGoodsUid
().
startsWith
(
CommonsConstant
.
COUPON_PREFIX
)
)
{
//非商品券
this
.
setCommonDiscountGoods
(
calculationDiscountGoodsList
,
cartGoods
);
}
else
{
//商品券->商品券ID换取商品
String
couponCode
=
cartGoods
.
getCouponCode
();
boolean
useCoupon
=
true
;
// 优惠券放在coupon字段而不是uuid中
if
(
cartGoods
.
getCartGoodsUid
().
startsWith
(
CommonsConstant
.
COUPON_PREFIX
)){
couponCode
=
cartGoods
.
getCartGoodsUid
().
substring
(
CommonsConstant
.
COUPON_PREFIX
.
length
());
useCoupon
=
false
;
}
CheckSpqInfoRequestDto
checkSpqInfoRequestDto
=
new
CheckSpqInfoRequestDto
(
partnerId
,
storeId
,
couponCode
,
menuType
);
CheckSpqInfoResponseDto
checkSpqInfo
=
null
;
if
(
GoodsTypeEnum
.
HG_COUPON_GOODS
.
getGoodsType
().
equals
(
cartGoods
.
getGoodsType
()))
{
...
...
@@ -103,8 +108,11 @@ public class CalculationSharingDiscountService {
assortmentSdkService
.
setShoppingCart
(
partnerId
,
storeId
,
userId
,
cartGoodsList
,
null
,
null
,
this
.
shoppingCartBaseService
);
//跑业务异常 商品券不存
}
else
{
validCouponMap
.
put
(
couponCode
,
checkSpqInfo
);
validCouponMap
.
put
(
couponCode
+
checkSpqInfo
.
getSkuId
(),
checkSpqInfo
);
if
(
useCoupon
){
validCouponMap
.
put
(
couponCode
+
checkSpqInfo
.
getSkuId
(),
checkSpqInfo
);
}
else
{
validCouponMap
.
put
(
couponCode
,
checkSpqInfo
);
}
cartGoods
.
setName
(
checkSpqInfo
.
getCouponName
());
cartGoods
.
setSpuName
(
checkSpqInfo
.
getCouponName
());
cartGoods
.
setStockLimit
(
checkSpqInfo
.
isStockLimit
());
...
...
shopping-cart-application-service/src/main/java/cn/freemud/service/impl/calculate/promotion/CouponSharingService.java
View file @
5d924d09
...
...
@@ -45,7 +45,8 @@ public class CouponSharingService {
,
ShoppingCartInfoRequestVo
shoppingCartInfoRequestVo
)
{
// 用户选择了查询优惠券信息
if
(
couponPromotionVO
!=
null
&&
ObjectUtils
.
equals
(
CouponFlag
.
YES
.
getCode
(),
couponPromotionVO
.
getFlg
()))
{
List
<
CartGoods
>
tmpCartGoods
=
cartGoodsList
.
parallelStream
().
filter
(
k
->
StringUtils
.
isNotBlank
(
k
.
getCouponCode
())).
collect
(
Collectors
.
toList
());
List
<
CartGoods
>
tmpCartGoods
=
cartGoodsList
.
parallelStream
().
filter
(
k
->
(
StringUtils
.
isNotBlank
(
k
.
getCouponCode
())
||
k
.
getCartGoodsUid
()
.
startsWith
(
CommonsConstant
.
COUPON_PREFIX
))).
collect
(
Collectors
.
toList
());
// 是否存在商品券
boolean
hasGoodssCoupon
=
CollectionUtils
.
isNotEmpty
(
tmpCartGoods
);
// 构建可用不可用优惠券
...
...
@@ -83,12 +84,22 @@ public class CouponSharingService {
shoppingCartGoodsResponseVo
.
setCouponDiscount
(
couponDiscount
);
//循环购物车商品券
for
(
CartGoods
cartGoods
:
cartGoodsList
)
{
if
(
StringUtils
.
isNotBlank
(
cartGoods
.
getCouponCode
()))
{
if
(
StringUtils
.
isNotBlank
(
cartGoods
.
getCouponCode
())
||
cartGoods
.
getCartGoodsUid
().
startsWith
(
CommonsConstant
.
COUPON_PREFIX
)
)
{
String
couponCode
=
cartGoods
.
getCouponCode
();
boolean
useCoupon
=
true
;
// 优惠券放在coupon字段而不是uuid中
if
(
cartGoods
.
getCartGoodsUid
().
startsWith
(
CommonsConstant
.
COUPON_PREFIX
)){
couponCode
=
cartGoods
.
getCartGoodsUid
().
substring
(
CommonsConstant
.
COUPON_PREFIX
.
length
());
useCoupon
=
false
;
}
// 计算优惠信息时,已将券校验过,放在map中
Map
<
String
,
CheckSpqInfoResponseDto
>
validCouponMap
=
calculationDiscountResult
==
null
?
new
HashMap
<>()
:
calculationDiscountResult
.
getValidCouponMap
();
if
(
MapUtils
.
isNotEmpty
(
validCouponMap
))
{
CheckSpqInfoResponseDto
checkSpqInfoResponseDto
=
validCouponMap
.
get
(
couponCode
+
cartGoods
.
getSkuId
());
CheckSpqInfoResponseDto
checkSpqInfoResponseDto
;
if
(
useCoupon
){
checkSpqInfoResponseDto
=
validCouponMap
.
get
(
couponCode
+
cartGoods
.
getSkuId
());
}
else
{
checkSpqInfoResponseDto
=
validCouponMap
.
get
(
couponCode
);
}
if
(
checkSpqInfoResponseDto
!=
null
)
{
cartGoods
.
setOriginalPrice
(
checkSpqInfoResponseDto
.
getPrice
());
cartGoods
.
setSpuId
(
checkSpqInfoResponseDto
.
getSpuId
());
...
...
@@ -126,12 +137,22 @@ public class CouponSharingService {
}
//循环购物车商品券
for
(
CartGoods
cartGoods
:
cartGoodsList
)
{
if
(
StringUtils
.
isNotBlank
(
cartGoods
.
getCouponCode
()))
{
if
(
StringUtils
.
isNotBlank
(
cartGoods
.
getCouponCode
())
||
cartGoods
.
getCartGoodsUid
().
startsWith
(
CommonsConstant
.
COUPON_PREFIX
)
)
{
String
couponCode
=
cartGoods
.
getCouponCode
();
boolean
useCoupon
=
true
;
// 优惠券放在coupon字段而不是uuid中
if
(
cartGoods
.
getCartGoodsUid
().
startsWith
(
CommonsConstant
.
COUPON_PREFIX
)){
couponCode
=
cartGoods
.
getCartGoodsUid
().
substring
(
CommonsConstant
.
COUPON_PREFIX
.
length
());
useCoupon
=
false
;
}
// 计算优惠信息时,已将券校验过,放在map中
Map
<
String
,
CheckSpqInfoResponseDto
>
validCouponMap
=
discountResult
==
null
?
new
HashMap
<>()
:
discountResult
.
getValidCouponMap
();
if
(
MapUtils
.
isNotEmpty
(
validCouponMap
))
{
CheckSpqInfoResponseDto
checkSpqInfoResponseDto
=
validCouponMap
.
get
(
couponCode
+
cartGoods
.
getSkuId
());
CheckSpqInfoResponseDto
checkSpqInfoResponseDto
;
if
(
useCoupon
){
checkSpqInfoResponseDto
=
validCouponMap
.
get
(
couponCode
+
cartGoods
.
getSkuId
());
}
else
{
checkSpqInfoResponseDto
=
validCouponMap
.
get
(
couponCode
);
}
if
(
checkSpqInfoResponseDto
!=
null
)
{
cartGoods
.
setOriginalPrice
(
checkSpqInfoResponseDto
.
getPrice
());
cartGoods
.
setSpuId
(
checkSpqInfoResponseDto
.
getSpuId
());
...
...
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