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
230e33da
Commit
230e33da
authored
Feb 23, 2021
by
chongfu.liang
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
频次券支持一笔订单多商品
parent
91ae36bb
Show whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
61 additions
and
51 deletions
+61
-51
assortment-shoppingcart-sdk/src/main/java/com/freemud/sdk/api/assortment/shoppingcart/service/ShoppingCartBaseService.java
+9
-1
shopping-cart-application-service/src/main/java/cn/freemud/adapter/ShoppingCartConvertAdapter.java
+1
-1
shopping-cart-application-service/src/main/java/cn/freemud/service/ShoppingCartNewService.java
+5
-5
shopping-cart-application-service/src/main/java/cn/freemud/service/impl/CouponPromotionService.java
+15
-5
shopping-cart-application-service/src/main/java/cn/freemud/service/impl/ShoppingCartNewServiceImpl.java
+19
-27
shopping-cart-application-service/src/main/java/cn/freemud/service/impl/calculate/CalculationSharingDiscountService.java
+5
-4
shopping-cart-application-service/src/main/java/cn/freemud/service/impl/calculate/promotion/CouponSharingService.java
+7
-8
No files found.
assortment-shoppingcart-sdk/src/main/java/com/freemud/sdk/api/assortment/shoppingcart/service/ShoppingCartBaseService.java
View file @
230e33da
...
@@ -393,7 +393,10 @@ public interface ShoppingCartBaseService {
...
@@ -393,7 +393,10 @@ public interface ShoppingCartBaseService {
//获取所有商品券cartGoodsUid=sqp+code
//获取所有商品券cartGoodsUid=sqp+code
List
<
String
>
couponIds
=
cartGoodsList
.
parallelStream
()
List
<
String
>
couponIds
=
cartGoodsList
.
parallelStream
()
.
filter
(
k
->
StringUtils
.
isNotEmpty
(
k
.
getCartGoodsUid
())&&
k
.
getCartGoodsUid
().
startsWith
(
CommonsConstant
.
COUPON_PREFIX
)).
map
(
CartGoods:
:
getSpuId
).
collect
(
Collectors
.
toList
());
.
filter
(
k
->
StringUtils
.
isNotEmpty
(
k
.
getCartGoodsUid
())&&
k
.
getCartGoodsUid
().
startsWith
(
CommonsConstant
.
COUPON_PREFIX
)).
map
(
CartGoods:
:
getSpuId
).
collect
(
Collectors
.
toList
());
if
(
CollectionUtils
.
isEmpty
(
couponIds
))
{
couponIds
=
cartGoodsList
.
parallelStream
()
.
filter
(
k
->
StringUtils
.
isNotBlank
(
k
.
getCouponCode
())).
map
(
CartGoods:
:
getCouponCode
).
collect
(
Collectors
.
toList
());
}
if
(
CollectionUtils
.
isEmpty
(
couponIds
))
{
if
(
CollectionUtils
.
isEmpty
(
couponIds
))
{
return
goodsStates
;
return
goodsStates
;
}
}
...
@@ -434,6 +437,11 @@ public interface ShoppingCartBaseService {
...
@@ -434,6 +437,11 @@ public interface ShoppingCartBaseService {
List
<
CartGoods
>
cartGoodsByProduct
=
cartGoodsList
.
stream
()
List
<
CartGoods
>
cartGoodsByProduct
=
cartGoodsList
.
stream
()
.
filter
(
cartGoods
->
cartGoods
.
getCartGoodsUid
().
startsWith
(
CommonsConstant
.
COUPON_PREFIX
))
.
filter
(
cartGoods
->
cartGoods
.
getCartGoodsUid
().
startsWith
(
CommonsConstant
.
COUPON_PREFIX
))
.
collect
(
Collectors
.
toList
());
.
collect
(
Collectors
.
toList
());
if
(
CollectionUtils
.
isEmpty
(
cartGoodsByProduct
)){
cartGoodsByProduct
=
cartGoodsList
.
stream
()
.
filter
(
cartGoods
->
StringUtils
.
isNotBlank
(
cartGoods
.
getCouponCode
()))
.
collect
(
Collectors
.
toList
());
}
for
(
CartGoods
cartGoods
:
cartGoodsByProduct
)
{
for
(
CartGoods
cartGoods
:
cartGoodsByProduct
)
{
DetailVO
detail
=
detailsMap
.
get
(
cartGoods
.
getSpuId
());
DetailVO
detail
=
detailsMap
.
get
(
cartGoods
.
getSpuId
());
String
activeCode
=
detail
!=
null
?
detail
.
getActiveCode
()
:
""
;
String
activeCode
=
detail
!=
null
?
detail
.
getActiveCode
()
:
""
;
...
...
shopping-cart-application-service/src/main/java/cn/freemud/adapter/ShoppingCartConvertAdapter.java
View file @
230e33da
...
@@ -414,7 +414,7 @@ public class ShoppingCartConvertAdapter {
...
@@ -414,7 +414,7 @@ public class ShoppingCartConvertAdapter {
cartGoods
.
setQty
(
qty
);
cartGoods
.
setQty
(
qty
);
cartGoods
.
setCouponCode
(
addShoppingCartGoodsRequestVo
.
getCouponCode
());
cartGoods
.
setCouponCode
(
addShoppingCartGoodsRequestVo
.
getCouponCode
());
Integer
goodsType
=
StringUtils
.
isEmpty
(
skuId
)||
ObjectUtils
.
equals
(
spuId
,
skuId
)
?
GoodsTypeEnum
.
SPU_GOODS
.
getGoodsType
()
:
GoodsTypeEnum
.
SKU_GOODS
.
getGoodsType
();
Integer
goodsType
=
StringUtils
.
isEmpty
(
skuId
)||
ObjectUtils
.
equals
(
spuId
,
skuId
)
?
GoodsTypeEnum
.
SPU_GOODS
.
getGoodsType
()
:
GoodsTypeEnum
.
SKU_GOODS
.
getGoodsType
();
if
(
spuId
.
startsWith
(
CommonsConstant
.
COUPON_PREFIX
))
{
if
(
spuId
.
startsWith
(
CommonsConstant
.
COUPON_PREFIX
)
||
StringUtils
.
isNotBlank
(
addShoppingCartGoodsRequestVo
.
getCouponCode
())
)
{
goodsType
=
GoodsTypeEnum
.
COUPON_GOODS
.
getGoodsType
();
goodsType
=
GoodsTypeEnum
.
COUPON_GOODS
.
getGoodsType
();
}
else
if
(
CollectionUtils
.
isNotEmpty
(
addShoppingCartGoodsRequestVo
.
getProductComboList
())
||
CollectionUtils
.
isNotEmpty
(
addShoppingCartGoodsRequestVo
.
getProductGroupList
()))
{
}
else
if
(
CollectionUtils
.
isNotEmpty
(
addShoppingCartGoodsRequestVo
.
getProductComboList
())
||
CollectionUtils
.
isNotEmpty
(
addShoppingCartGoodsRequestVo
.
getProductGroupList
()))
{
goodsType
=
GoodsTypeEnum
.
SET_MEAL_GOODS
.
getGoodsType
();
goodsType
=
GoodsTypeEnum
.
SET_MEAL_GOODS
.
getGoodsType
();
...
...
shopping-cart-application-service/src/main/java/cn/freemud/service/ShoppingCartNewService.java
View file @
230e33da
...
@@ -116,12 +116,12 @@ public interface ShoppingCartNewService {
...
@@ -116,12 +116,12 @@ public interface ShoppingCartNewService {
*/
*/
default
String
validCoupon
(
String
partnerId
default
String
validCoupon
(
String
partnerId
,
String
storeId
,
String
storeId
,
String
spuId
,
String
couponCode
,
List
<
Long
>
productIds
,
List
<
Long
>
productIds
,
String
menuType
,
String
menuType
,
CouponProductDto
couponProductDto
)
{
,
CouponProductDto
couponProductDto
)
{
String
spuId2
;
String
spuId2
;
CheckSpqInfoRequestDto
checkSpqInfoRequestDto
=
new
CheckSpqInfoRequestDto
(
partnerId
,
storeId
,
spuId
.
substring
(
CommonsConstant
.
COUPON_PREFIX
.
length
())
,
menuType
);
CheckSpqInfoRequestDto
checkSpqInfoRequestDto
=
new
CheckSpqInfoRequestDto
(
partnerId
,
storeId
,
couponCode
,
menuType
);
CouponService
couponService
=
SDKCommonBaseContextWare
.
getBean
(
CouponService
.
class
);
CouponService
couponService
=
SDKCommonBaseContextWare
.
getBean
(
CouponService
.
class
);
CheckSpqInfoResponseDto
checkSpqInfoResponseDto
=
couponService
.
checkSpqInfo
(
checkSpqInfoRequestDto
);
CheckSpqInfoResponseDto
checkSpqInfoResponseDto
=
couponService
.
checkSpqInfo
(
checkSpqInfoRequestDto
);
if
(
checkSpqInfoResponseDto
==
null
)
{
if
(
checkSpqInfoResponseDto
==
null
)
{
...
@@ -148,13 +148,13 @@ public interface ShoppingCartNewService {
...
@@ -148,13 +148,13 @@ public interface ShoppingCartNewService {
*/
*/
default
String
validCoupon
(
String
partnerId
default
String
validCoupon
(
String
partnerId
,
String
storeId
,
String
storeId
,
String
spuId
,
String
couponCode
,
List
<
Long
>
productIds
,
List
<
Long
>
productIds
,
String
menuType
,
String
menuType
,
String
goodsId
,
String
goodsId
,
CouponProductDto
couponProductDto
)
{
,
CouponProductDto
couponProductDto
)
{
String
spuId2
;
String
spuId2
;
CheckSpqInfoRequestDto
checkSpqInfoRequestDto
=
new
CheckSpqInfoRequestDto
(
partnerId
,
storeId
,
spuId
.
substring
(
CommonsConstant
.
COUPON_PREFIX
.
length
())
,
menuType
);
CheckSpqInfoRequestDto
checkSpqInfoRequestDto
=
new
CheckSpqInfoRequestDto
(
partnerId
,
storeId
,
couponCode
,
menuType
);
CouponService
couponService
=
SDKCommonBaseContextWare
.
getBean
(
CouponService
.
class
);
CouponService
couponService
=
SDKCommonBaseContextWare
.
getBean
(
CouponService
.
class
);
CheckSpqInfoResponseDto
checkSpqInfoResponseDto
=
couponService
.
checkSpqInfo
(
checkSpqInfoRequestDto
,
goodsId
);
CheckSpqInfoResponseDto
checkSpqInfoResponseDto
=
couponService
.
checkSpqInfo
(
checkSpqInfoRequestDto
,
goodsId
);
LogUtil
.
info
(
"validCoupon.CheckSpqInfoResponseDto"
,
JSON
.
toJSONString
(
checkSpqInfoRequestDto
),
JSON
.
toJSONString
(
checkSpqInfoResponseDto
));
LogUtil
.
info
(
"validCoupon.CheckSpqInfoResponseDto"
,
JSON
.
toJSONString
(
checkSpqInfoRequestDto
),
JSON
.
toJSONString
(
checkSpqInfoResponseDto
));
...
@@ -300,7 +300,7 @@ public interface ShoppingCartNewService {
...
@@ -300,7 +300,7 @@ public interface ShoppingCartNewService {
updateCartGoodsLegal
(
cartGoods
,
userId
,
shoppingCartGoodsResponseVo
,
addShoppingCartGoodsRequestVo
,
allCartGoodsList
);
updateCartGoodsLegal
(
cartGoods
,
userId
,
shoppingCartGoodsResponseVo
,
addShoppingCartGoodsRequestVo
,
allCartGoodsList
);
// 如果购物车中有商品券,则当前添加的商品是特价商品时,需要提示“已选商品券,与其他优惠商品不同享,商品将恢复原价”
// 如果购物车中有商品券,则当前添加的商品是特价商品时,需要提示“已选商品券,与其他优惠商品不同享,商品将恢复原价”
boolean
haveCouponProduct
=
allCartGoodsList
.
parallelStream
().
anyMatch
(
k
->
k
.
getCartGoodsUid
().
startsWith
(
CommonsConstant
.
COUPON_PREFIX
));
boolean
haveCouponProduct
=
allCartGoodsList
.
parallelStream
().
anyMatch
(
k
->
StringUtils
.
isNotBlank
(
k
.
getCouponCode
()
));
if
(
haveCouponProduct
&&
isSpecialGoods
(
addShoppingCartGoodsRequestVo
.
getPartnerId
(),
addShoppingCartGoodsRequestVo
.
getShopId
(),
userId
,
addShoppingCartGoodsRequestVo
.
getAppId
(),
goodsId
,
addShoppingCartGoodsRequestVo
.
getOrderType
()))
{
if
(
haveCouponProduct
&&
isSpecialGoods
(
addShoppingCartGoodsRequestVo
.
getPartnerId
(),
addShoppingCartGoodsRequestVo
.
getShopId
(),
userId
,
addShoppingCartGoodsRequestVo
.
getAppId
(),
goodsId
,
addShoppingCartGoodsRequestVo
.
getOrderType
()))
{
// 如果购物车先加入商品券,再加入促销商品,toast提示“已选商品券,与其他优惠商品不同享,商品将恢复原价”
// 如果购物车先加入商品券,再加入促销商品,toast提示“已选商品券,与其他优惠商品不同享,商品将恢复原价”
setToastMsgIfNotExist
(
shoppingCartGoodsResponseVo
,
ShoppingCartConstant
.
HAS_GOODS_COUPON_WHEN_ADD_SPECIAL_GOODS
);
setToastMsgIfNotExist
(
shoppingCartGoodsResponseVo
,
ShoppingCartConstant
.
HAS_GOODS_COUPON_WHEN_ADD_SPECIAL_GOODS
);
...
...
shopping-cart-application-service/src/main/java/cn/freemud/service/impl/CouponPromotionService.java
View file @
230e33da
...
@@ -46,8 +46,8 @@ public class CouponPromotionService implements IPromotionService {
...
@@ -46,8 +46,8 @@ public class CouponPromotionService implements IPromotionService {
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
()))
{
if
(
couponPromotionVO
!=
null
&&
ObjectUtils
.
equals
(
CouponFlag
.
YES
.
getCode
(),
couponPromotionVO
.
getFlg
()))
{
List
<
CartGoods
>
tmpCartGoods
=
cartGoodsList
.
parallelStream
().
filter
(
k
->
k
.
getCartGoodsUid
()
List
<
CartGoods
>
tmpCartGoods
=
cartGoodsList
.
parallelStream
().
filter
(
k
->
(
k
.
getCartGoodsUid
()
.
startsWith
(
CommonsConstant
.
COUPON_PREFIX
)).
collect
(
Collectors
.
toList
());
.
startsWith
(
CommonsConstant
.
COUPON_PREFIX
)
||
StringUtils
.
isNotBlank
(
k
.
getCouponCode
()))
).
collect
(
Collectors
.
toList
());
// 是否存在商品券
// 是否存在商品券
boolean
hasGoodssCoupon
=
CollectionUtils
.
isNotEmpty
(
tmpCartGoods
);
boolean
hasGoodssCoupon
=
CollectionUtils
.
isNotEmpty
(
tmpCartGoods
);
// 构建可用不可用优惠券
// 构建可用不可用优惠券
...
@@ -85,12 +85,22 @@ public class CouponPromotionService implements IPromotionService {
...
@@ -85,12 +85,22 @@ public class CouponPromotionService implements IPromotionService {
shoppingCartGoodsResponseVo
.
setCouponDiscount
(
couponDiscount
);
shoppingCartGoodsResponseVo
.
setCouponDiscount
(
couponDiscount
);
//循环购物车商品券
//循环购物车商品券
for
(
CartGoods
cartGoods
:
cartGoodsList
)
{
for
(
CartGoods
cartGoods
:
cartGoodsList
)
{
if
(
cartGoods
.
getCartGoodsUid
().
startsWith
(
CommonsConstant
.
COUPON_PREFIX
))
{
String
couponCode
=
cartGoods
.
getCouponCode
();
String
spqId
=
cartGoods
.
getCartGoodsUid
().
substring
(
CommonsConstant
.
COUPON_PREFIX
.
length
());
boolean
useCoupon
=
true
;
// 优惠券放在coupon字段而不是uuid中
if
(
cartGoods
.
getCartGoodsUid
().
startsWith
(
CommonsConstant
.
COUPON_PREFIX
)){
couponCode
=
cartGoods
.
getCartGoodsUid
().
substring
(
CommonsConstant
.
COUPON_PREFIX
.
length
());
useCoupon
=
false
;
}
if
(
StringUtils
.
isNotBlank
(
couponCode
))
{
// 计算优惠信息时,已将券校验过,放在map中
// 计算优惠信息时,已将券校验过,放在map中
Map
<
String
,
CheckSpqInfoResponseDto
>
validCouponMap
=
calculationDiscountResult
==
null
?
new
HashMap
<>()
:
calculationDiscountResult
.
getValidCouponMap
();
Map
<
String
,
CheckSpqInfoResponseDto
>
validCouponMap
=
calculationDiscountResult
==
null
?
new
HashMap
<>()
:
calculationDiscountResult
.
getValidCouponMap
();
if
(
MapUtils
.
isNotEmpty
(
validCouponMap
))
{
if
(
MapUtils
.
isNotEmpty
(
validCouponMap
))
{
CheckSpqInfoResponseDto
checkSpqInfoResponseDto
=
validCouponMap
.
get
(
spqId
);
CheckSpqInfoResponseDto
checkSpqInfoResponseDto
=
null
;
if
(
useCoupon
){
checkSpqInfoResponseDto
=
validCouponMap
.
get
(
couponCode
+
cartGoods
.
getSkuId
());
}
else
{
checkSpqInfoResponseDto
=
validCouponMap
.
get
(
couponCode
);
}
if
(
checkSpqInfoResponseDto
!=
null
)
{
if
(
checkSpqInfoResponseDto
!=
null
)
{
cartGoods
.
setOriginalPrice
(
checkSpqInfoResponseDto
.
getPrice
());
cartGoods
.
setOriginalPrice
(
checkSpqInfoResponseDto
.
getPrice
());
cartGoods
.
setSpuId
(
checkSpqInfoResponseDto
.
getSpuId
());
cartGoods
.
setSpuId
(
checkSpqInfoResponseDto
.
getSpuId
());
...
...
shopping-cart-application-service/src/main/java/cn/freemud/service/impl/ShoppingCartNewServiceImpl.java
View file @
230e33da
...
@@ -286,22 +286,23 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService {
...
@@ -286,22 +286,23 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService {
Integer
orderType
=
addShoppingCartGoodsRequestVo
.
getOrderType
();
Integer
orderType
=
addShoppingCartGoodsRequestVo
.
getOrderType
();
String
receiveId
=
addShoppingCartGoodsRequestVo
.
getReceiveId
();
String
receiveId
=
addShoppingCartGoodsRequestVo
.
getReceiveId
();
String
tableNumber
=
addShoppingCartGoodsRequestVo
.
getTableNumber
();
String
tableNumber
=
addShoppingCartGoodsRequestVo
.
getTableNumber
();
String
couponCode
=
addShoppingCartGoodsRequestVo
.
getCouponCode
();
// 商品券和换购券券号
CartGoods
cartGoods
=
ShoppingCartConvertAdapter
.
convent2CartGoods
(
addShoppingCartGoodsRequestVo
);
CartGoods
cartGoods
=
ShoppingCartConvertAdapter
.
convent2CartGoods
(
addShoppingCartGoodsRequestVo
);
List
<
Long
>
productIds
=
new
ArrayList
<>();
List
<
Long
>
productIds
=
new
ArrayList
<>();
//商品skuId或者商品券的商品id
//商品skuId或者商品券的商品id
String
spuId2
=
spuId
;
String
spuId2
=
spuId
;
CouponProductDto
couponProductDto
=
new
CouponProductDto
();
CouponProductDto
couponProductDto
=
new
CouponProductDto
();
if
(
!
spuId
.
startsWith
(
CommonsConstant
.
COUPON_PREFIX
))
{
if
(
StringUtils
.
isBlank
(
couponCode
))
{
productIds
.
add
(
Long
.
parseLong
(
goodsId
));
productIds
.
add
(
Long
.
parseLong
(
goodsId
));
}
else
{
}
else
{
//校验券是否有效 这里是新的商品券支持多商品及换购券
//校验券是否有效 这里是新的商品券支持多商品及换购券
if
(
StringUtils
.
isNotBlank
(
skuId
))
{
if
(
StringUtils
.
isNotBlank
(
skuId
))
{
spuId2
=
validCoupon
(
partnerId
,
storeId
,
spuId
,
productIds
,
BusinessTypeEnum
.
getByType
(
addShoppingCartGoodsRequestVo
.
getMenuType
()).
getCode
(),
skuId
,
couponProductDto
);
spuId2
=
validCoupon
(
partnerId
,
storeId
,
couponCode
,
productIds
,
BusinessTypeEnum
.
getByType
(
addShoppingCartGoodsRequestVo
.
getMenuType
()).
getCode
(),
skuId
,
couponProductDto
);
cartGoods
.
setGoodsId
(
spuId
);
cartGoods
.
setGoodsId
(
spuId
);
}
else
{
}
else
{
// 老版本商品券
// 老版本商品券
spuId2
=
validCoupon
(
partnerId
,
storeId
,
spuId
,
productIds
,
BusinessTypeEnum
.
getByType
(
addShoppingCartGoodsRequestVo
.
getMenuType
()).
getCode
(),
couponProductDto
);
spuId2
=
validCoupon
(
partnerId
,
storeId
,
couponCode
,
productIds
,
BusinessTypeEnum
.
getByType
(
addShoppingCartGoodsRequestVo
.
getMenuType
()).
getCode
(),
couponProductDto
);
}
}
}
}
// 获取商品详细信息
// 获取商品详细信息
...
@@ -327,13 +328,13 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService {
...
@@ -327,13 +328,13 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService {
queryManyGoodsStocks
(
addShoppingCartGoodsRequestVo
,
productIds
,
productBeanListSpuClass
,
skuId
,
checkQty
);
queryManyGoodsStocks
(
addShoppingCartGoodsRequestVo
,
productIds
,
productBeanListSpuClass
,
skuId
,
checkQty
);
String
productName
=
null
;
String
productName
=
null
;
// 当添加的商品不是商品券时
// 当添加的商品不是商品券时
if
(
!
spuId
.
startsWith
(
CommonsConstant
.
COUPON_PREFIX
))
{
if
(
StringUtils
.
isBlank
(
couponCode
))
{
//添加非商品券商品
//添加非商品券商品
addNotProductGoods
(
addShoppingCartGoodsRequestVo
,
cartGoods
,
goodsId
,
userId
,
shoppingCartGoodsResponseVo
,
allCartGoodsList
);
addNotProductGoods
(
addShoppingCartGoodsRequestVo
,
cartGoods
,
goodsId
,
userId
,
shoppingCartGoodsResponseVo
,
allCartGoodsList
);
}
else
{
}
else
{
// 当商品是商品券,里面会判断如果购物车中已有商品券,会将cartGoods的CartGoodsUid设为null
// 当商品是商品券,里面会判断如果购物车中已有商品券,会将cartGoods的CartGoodsUid设为null
this
.
addProductGoods
(
addShoppingCartGoodsRequestVo
,
cartGoods
,
spuId2
,
userId
,
shoppingCartGoodsResponseVo
,
this
.
addProductGoods
(
addShoppingCartGoodsRequestVo
,
cartGoods
,
spuId2
,
userId
,
shoppingCartGoodsResponseVo
,
spuId
,
allCartGoodsList
,
productBeanListSpuClass
,
couponProductDto
);
spuId
,
allCartGoodsList
,
productBeanListSpuClass
,
couponProductDto
,
couponCode
);
}
}
Long
deliveryAmount
=
calculateDeliveryAmount
(
receiveId
,
partnerId
,
storeId
,
userLoginInfoDto
.
getWxAppid
(),
shoppingCartGoodsResponseVo
,
addShoppingCartGoodsRequestVo
.
getOrderType
());
Long
deliveryAmount
=
calculateDeliveryAmount
(
receiveId
,
partnerId
,
storeId
,
userLoginInfoDto
.
getWxAppid
(),
shoppingCartGoodsResponseVo
,
addShoppingCartGoodsRequestVo
.
getOrderType
());
...
@@ -1152,17 +1153,15 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService {
...
@@ -1152,17 +1153,15 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService {
Map
<
String
,
CheckSpqInfoResponseDto
>
validCouponMap
=
new
HashMap
<>(
16
);
Map
<
String
,
CheckSpqInfoResponseDto
>
validCouponMap
=
new
HashMap
<>(
16
);
for
(
int
i
=
cartGoodsList
.
size
()
-
1
;
i
>=
0
;
i
--)
{
for
(
int
i
=
cartGoodsList
.
size
()
-
1
;
i
>=
0
;
i
--)
{
CartGoods
cartGoods
=
cartGoodsList
.
get
(
i
);
CartGoods
cartGoods
=
cartGoodsList
.
get
(
i
);
String
cartGoodsUid
=
cartGoods
.
getCartGoodsUid
();
// 商品不是商品券
// 商品不是商品券
if
(!
cartGoodsUid
.
startsWith
(
CommonsConstant
.
COUPON_PREFIX
))
{
if
(
StringUtils
.
isBlank
(
cartGoods
.
getCouponCode
()))
{
//this.addCalculationDiscountGoods(calculationDiscountGoodsList, cartGoods.getGoodsId(), cartGoods.getQty(), cartGoods.getFinalPrice(), cartGoods.getMemberDiscount(), cartGoodsUid);
this
.
addCalculationDiscountGoods
(
calculationDiscountGoodsList
,
cartGoods
);
this
.
addCalculationDiscountGoods
(
calculationDiscountGoodsList
,
cartGoods
);
}
}
// 商品是商品券
// 商品是商品券
else
{
else
{
// 商品券ID换取商品
// 商品券ID换取商品
String
spqId
=
cartGoods
.
getCartGoodsUid
().
substring
(
CommonsConstant
.
COUPON_PREFIX
.
length
()
);
String
couponCode
=
cartGoods
.
getCouponCode
(
);
CheckSpqInfoRequestDto
checkSpqInfoRequestDto
=
new
CheckSpqInfoRequestDto
(
partnerId
,
storeId
,
spqId
,
menuType
);
CheckSpqInfoRequestDto
checkSpqInfoRequestDto
=
new
CheckSpqInfoRequestDto
(
partnerId
,
storeId
,
couponCode
,
menuType
);
CheckSpqInfoResponseDto
checkSpqInfoResponseDto
=
null
;
CheckSpqInfoResponseDto
checkSpqInfoResponseDto
=
null
;
if
(
GoodsTypeEnum
.
HG_COUPON_GOODS
.
getGoodsType
().
equals
(
cartGoods
.
getGoodsType
()))
{
if
(
GoodsTypeEnum
.
HG_COUPON_GOODS
.
getGoodsType
().
equals
(
cartGoods
.
getGoodsType
()))
{
checkSpqInfoResponseDto
=
couponService
.
checkSpqInfo
(
checkSpqInfoRequestDto
,
cartGoods
.
getSkuId
());
checkSpqInfoResponseDto
=
couponService
.
checkSpqInfo
(
checkSpqInfoRequestDto
,
cartGoods
.
getSkuId
());
...
@@ -1174,7 +1173,8 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService {
...
@@ -1174,7 +1173,8 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService {
cartGoodsList
.
remove
(
i
);
cartGoodsList
.
remove
(
i
);
assortmentSdkService
.
setShoppingCart
(
partnerId
,
storeId
,
userId
,
cartGoodsList
,
null
,
null
,
this
.
shoppingCartBaseService
);
assortmentSdkService
.
setShoppingCart
(
partnerId
,
storeId
,
userId
,
cartGoodsList
,
null
,
null
,
this
.
shoppingCartBaseService
);
}
else
{
}
else
{
validCouponMap
.
put
(
spqId
,
checkSpqInfoResponseDto
);
validCouponMap
.
put
(
couponCode
,
checkSpqInfoResponseDto
);
validCouponMap
.
put
(
couponCode
+
checkSpqInfoResponseDto
.
getSkuId
(),
checkSpqInfoResponseDto
);
cartGoods
.
setName
(
checkSpqInfoResponseDto
.
getCouponName
());
cartGoods
.
setName
(
checkSpqInfoResponseDto
.
getCouponName
());
cartGoods
.
setSpuName
(
checkSpqInfoResponseDto
.
getCouponName
());
cartGoods
.
setSpuName
(
checkSpqInfoResponseDto
.
getCouponName
());
cartGoods
.
setStockLimit
(
checkSpqInfoResponseDto
.
isStockLimit
());
cartGoods
.
setStockLimit
(
checkSpqInfoResponseDto
.
isStockLimit
());
...
@@ -1187,9 +1187,9 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService {
...
@@ -1187,9 +1187,9 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService {
// 换购券传给促销要带code
// 换购券传给促销要带code
String
goodsId
=
StringUtils
.
isEmpty
(
checkSpqInfoResponseDto
.
getSkuId
())
?
checkSpqInfoResponseDto
.
getSpuId
()
:
checkSpqInfoResponseDto
.
getSkuId
();
String
goodsId
=
StringUtils
.
isEmpty
(
checkSpqInfoResponseDto
.
getSkuId
())
?
checkSpqInfoResponseDto
.
getSpuId
()
:
checkSpqInfoResponseDto
.
getSkuId
();
if
(
GoodsTypeEnum
.
HG_COUPON_GOODS
.
getGoodsType
().
equals
(
cartGoods
.
getGoodsType
()))
{
if
(
GoodsTypeEnum
.
HG_COUPON_GOODS
.
getGoodsType
().
equals
(
cartGoods
.
getGoodsType
()))
{
this
.
addCalculationDiscountGoods
(
calculationDiscountGoodsList
,
goodsId
,
1
,
checkSpqInfoResponseDto
.
getPrice
(),
100
,
cartGoods
Uid
,
cartGoods
.
getSpuId
());
this
.
addCalculationDiscountGoods
(
calculationDiscountGoodsList
,
goodsId
,
1
,
checkSpqInfoResponseDto
.
getPrice
(),
100
,
cartGoods
.
getCartGoodsUid
()
,
cartGoods
.
getSpuId
());
}
else
{
}
else
{
this
.
addCalculationDiscountGoods
(
calculationDiscountGoodsList
,
goodsId
,
1
,
checkSpqInfoResponseDto
.
getPrice
(),
100
,
cartGoods
Uid
);
this
.
addCalculationDiscountGoods
(
calculationDiscountGoodsList
,
goodsId
,
1
,
checkSpqInfoResponseDto
.
getPrice
(),
100
,
cartGoods
.
getCartGoodsUid
()
);
}
}
}
}
}
}
...
@@ -1691,24 +1691,16 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService {
...
@@ -1691,24 +1691,16 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService {
*/
*/
private
void
addProductGoods
(
AddShoppingCartGoodsRequestVo
addShoppingCartGoodsRequestVo
private
void
addProductGoods
(
AddShoppingCartGoodsRequestVo
addShoppingCartGoodsRequestVo
,
CartGoods
cartGoods
,
String
spuId2
,
String
userId
,
ShoppingCartGoodsResponseVo
shoppingCartGoodsResponseVo
,
String
spuId
,
CartGoods
cartGoods
,
String
spuId2
,
String
userId
,
ShoppingCartGoodsResponseVo
shoppingCartGoodsResponseVo
,
String
spuId
,
List
<
CartGoods
>
allCartGoodsList
,
List
<
ProductBeanDTO
>
productBeanListSpuClass
,
CouponProductDto
couponProductDto
)
{
,
List
<
CartGoods
>
allCartGoodsList
,
List
<
ProductBeanDTO
>
productBeanListSpuClass
,
CouponProductDto
couponProductDto
,
String
couponCode
)
{
// 商品券商品list
List
<
CartGoods
>
tmpCartGoods
=
allCartGoodsList
.
parallelStream
().
filter
(
k
->
(
k
.
getCartGoodsUid
().
startsWith
(
CommonsConstant
.
COUPON_PREFIX
)
&&
!
k
.
getCartGoodsUid
().
equals
(
spuId
))).
collect
(
Collectors
.
toList
());
// 当已有商品券时,不得添加(暂时的限制)
if
(
CollectionUtils
.
isNotEmpty
(
tmpCartGoods
))
{
setToastMsgIfNotExist
(
shoppingCartGoodsResponseVo
,
ShoppingCartConstant
.
ONE_TRADE_CAN_ONLY_USE_ONE_GOODS_COUPON
);
cartGoods
.
setCartGoodsUid
(
null
);
}
else
{
cartGoods
.
setCartGoodsUid
(
spuId
);
// 设置商品类型为商品券
// 设置商品类型为商品券
if
(
CouponTypeEnum
.
TYPE_4
.
getCode
().
equals
(
couponProductDto
.
getType
()))
{
if
(
CouponTypeEnum
.
TYPE_4
.
getCode
().
equals
(
couponProductDto
.
getType
()))
{
cartGoods
.
setGoodsType
(
GoodsTypeEnum
.
HG_COUPON_GOODS
.
getGoodsType
());
cartGoods
.
setGoodsType
(
GoodsTypeEnum
.
HG_COUPON_GOODS
.
getGoodsType
());
}
else
{
}
else
{
cartGoods
.
setGoodsType
(
GoodsTypeEnum
.
COUPON_GOODS
.
getGoodsType
());
cartGoods
.
setGoodsType
(
GoodsTypeEnum
.
COUPON_GOODS
.
getGoodsType
());
}
}
// 商品券Id
cartGoods
.
setCouponCode
(
couponCode
);
String
spqId
=
spuId
.
substring
(
CommonsConstant
.
COUPON_PREFIX
.
length
());
cartGoods
.
setSpuId
(
spuId
);
cartGoods
.
setSpuId
(
spqId
);
cartGoods
.
setSkuId
(
spuId2
);
cartGoods
.
setSkuId
(
spuId2
);
cartGoods
.
setOriginalPrice
(
0L
);
cartGoods
.
setOriginalPrice
(
0L
);
cartGoods
.
setOriginalAmount
(
0L
);
cartGoods
.
setOriginalAmount
(
0L
);
...
@@ -1738,10 +1730,10 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService {
...
@@ -1738,10 +1730,10 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService {
setToastMsgIfNotExist
(
shoppingCartGoodsResponseVo
,
ShoppingCartConstant
.
HAS_OTHER_ACTIVITY_WHEN_ADD_GOODS_COUPON
);
setToastMsgIfNotExist
(
shoppingCartGoodsResponseVo
,
ShoppingCartConstant
.
HAS_OTHER_ACTIVITY_WHEN_ADD_GOODS_COUPON
);
}
}
//校验合法性,更新缓存中购物车信息
//校验合法性,更新缓存中购物车信息
LogUtil
.
info
(
"updateCartGoodsLegal"
,
JSON
.
toJSONString
(
cartGoods
),
JSON
.
toJSONString
(
allCartGoodsList
));
LogUtil
.
info
(
"updateCartGoodsLegal"
,
JSON
.
toJSONString
(
cartGoods
),
JSON
.
toJSONString
(
allCartGoodsList
));
updateCartGoodsLegal
(
cartGoods
,
userId
,
shoppingCartGoodsResponseVo
,
addShoppingCartGoodsRequestVo
,
allCartGoodsList
);
updateCartGoodsLegal
(
cartGoods
,
userId
,
shoppingCartGoodsResponseVo
,
addShoppingCartGoodsRequestVo
,
allCartGoodsList
);
}
}
}
/**
/**
...
...
shopping-cart-application-service/src/main/java/cn/freemud/service/impl/calculate/CalculationSharingDiscountService.java
View file @
230e33da
...
@@ -84,12 +84,12 @@ public class CalculationSharingDiscountService {
...
@@ -84,12 +84,12 @@ public class CalculationSharingDiscountService {
int
cartSize
=
cartGoodsList
.
size
()
-
1
;
int
cartSize
=
cartGoodsList
.
size
()
-
1
;
for
(
int
i
=
cartSize
;
i
>=
0
;
i
--)
{
for
(
int
i
=
cartSize
;
i
>=
0
;
i
--)
{
CartGoods
cartGoods
=
cartGoodsList
.
get
(
i
);
CartGoods
cartGoods
=
cartGoodsList
.
get
(
i
);
if
(
!
cartGoods
.
getCartGoodsUid
().
startsWith
(
CommonsConstant
.
COUPON_PREFIX
))
{
//非商品券
if
(
StringUtils
.
isBlank
(
cartGoods
.
getCouponCode
()
))
{
//非商品券
this
.
setCommonDiscountGoods
(
calculationDiscountGoodsList
,
cartGoods
);
this
.
setCommonDiscountGoods
(
calculationDiscountGoodsList
,
cartGoods
);
}
}
else
{
//商品券->商品券ID换取商品
else
{
//商品券->商品券ID换取商品
String
spqId
=
cartGoods
.
getCartGoodsUid
().
substring
(
CommonsConstant
.
COUPON_PREFIX
.
length
()
);
String
couponCode
=
cartGoods
.
getCouponCode
(
);
CheckSpqInfoRequestDto
checkSpqInfoRequestDto
=
new
CheckSpqInfoRequestDto
(
partnerId
,
storeId
,
spqId
,
menuType
);
CheckSpqInfoRequestDto
checkSpqInfoRequestDto
=
new
CheckSpqInfoRequestDto
(
partnerId
,
storeId
,
couponCode
,
menuType
);
CheckSpqInfoResponseDto
checkSpqInfo
=
null
;
CheckSpqInfoResponseDto
checkSpqInfo
=
null
;
if
(
GoodsTypeEnum
.
HG_COUPON_GOODS
.
getGoodsType
().
equals
(
cartGoods
.
getGoodsType
()))
{
if
(
GoodsTypeEnum
.
HG_COUPON_GOODS
.
getGoodsType
().
equals
(
cartGoods
.
getGoodsType
()))
{
checkSpqInfo
=
couponService
.
checkSpqInfo
(
checkSpqInfoRequestDto
,
cartGoods
.
getSkuId
());
checkSpqInfo
=
couponService
.
checkSpqInfo
(
checkSpqInfoRequestDto
,
cartGoods
.
getSkuId
());
...
@@ -103,7 +103,8 @@ public class CalculationSharingDiscountService {
...
@@ -103,7 +103,8 @@ public class CalculationSharingDiscountService {
assortmentSdkService
.
setShoppingCart
(
partnerId
,
storeId
,
userId
,
cartGoodsList
,
null
,
null
,
this
.
shoppingCartBaseService
);
assortmentSdkService
.
setShoppingCart
(
partnerId
,
storeId
,
userId
,
cartGoodsList
,
null
,
null
,
this
.
shoppingCartBaseService
);
//跑业务异常 商品券不存
//跑业务异常 商品券不存
}
else
{
}
else
{
validCouponMap
.
put
(
spqId
,
checkSpqInfo
);
validCouponMap
.
put
(
couponCode
,
checkSpqInfo
);
validCouponMap
.
put
(
couponCode
+
checkSpqInfo
.
getSkuId
(),
checkSpqInfo
);
cartGoods
.
setName
(
checkSpqInfo
.
getCouponName
());
cartGoods
.
setName
(
checkSpqInfo
.
getCouponName
());
cartGoods
.
setSpuName
(
checkSpqInfo
.
getCouponName
());
cartGoods
.
setSpuName
(
checkSpqInfo
.
getCouponName
());
cartGoods
.
setStockLimit
(
checkSpqInfo
.
isStockLimit
());
cartGoods
.
setStockLimit
(
checkSpqInfo
.
isStockLimit
());
...
...
shopping-cart-application-service/src/main/java/cn/freemud/service/impl/calculate/promotion/CouponSharingService.java
View file @
230e33da
...
@@ -45,8 +45,7 @@ public class CouponSharingService {
...
@@ -45,8 +45,7 @@ public class CouponSharingService {
,
ShoppingCartInfoRequestVo
shoppingCartInfoRequestVo
)
{
,
ShoppingCartInfoRequestVo
shoppingCartInfoRequestVo
)
{
// 用户选择了查询优惠券信息
// 用户选择了查询优惠券信息
if
(
couponPromotionVO
!=
null
&&
ObjectUtils
.
equals
(
CouponFlag
.
YES
.
getCode
(),
couponPromotionVO
.
getFlg
()))
{
if
(
couponPromotionVO
!=
null
&&
ObjectUtils
.
equals
(
CouponFlag
.
YES
.
getCode
(),
couponPromotionVO
.
getFlg
()))
{
List
<
CartGoods
>
tmpCartGoods
=
cartGoodsList
.
parallelStream
().
filter
(
k
->
k
.
getCartGoodsUid
()
List
<
CartGoods
>
tmpCartGoods
=
cartGoodsList
.
parallelStream
().
filter
(
k
->
StringUtils
.
isNotBlank
(
k
.
getCouponCode
())).
collect
(
Collectors
.
toList
());
.
startsWith
(
CommonsConstant
.
COUPON_PREFIX
)).
collect
(
Collectors
.
toList
());
// 是否存在商品券
// 是否存在商品券
boolean
hasGoodssCoupon
=
CollectionUtils
.
isNotEmpty
(
tmpCartGoods
);
boolean
hasGoodssCoupon
=
CollectionUtils
.
isNotEmpty
(
tmpCartGoods
);
// 构建可用不可用优惠券
// 构建可用不可用优惠券
...
@@ -84,12 +83,12 @@ public class CouponSharingService {
...
@@ -84,12 +83,12 @@ public class CouponSharingService {
shoppingCartGoodsResponseVo
.
setCouponDiscount
(
couponDiscount
);
shoppingCartGoodsResponseVo
.
setCouponDiscount
(
couponDiscount
);
//循环购物车商品券
//循环购物车商品券
for
(
CartGoods
cartGoods
:
cartGoodsList
)
{
for
(
CartGoods
cartGoods
:
cartGoodsList
)
{
if
(
cartGoods
.
getCartGoodsUid
().
startsWith
(
CommonsConstant
.
COUPON_PREFIX
))
{
if
(
StringUtils
.
isNotBlank
(
cartGoods
.
getCouponCode
()
))
{
String
spqId
=
cartGoods
.
getCartGoodsUid
().
substring
(
CommonsConstant
.
COUPON_PREFIX
.
length
()
);
String
couponCode
=
cartGoods
.
getCouponCode
(
);
// 计算优惠信息时,已将券校验过,放在map中
// 计算优惠信息时,已将券校验过,放在map中
Map
<
String
,
CheckSpqInfoResponseDto
>
validCouponMap
=
calculationDiscountResult
==
null
?
new
HashMap
<>()
:
calculationDiscountResult
.
getValidCouponMap
();
Map
<
String
,
CheckSpqInfoResponseDto
>
validCouponMap
=
calculationDiscountResult
==
null
?
new
HashMap
<>()
:
calculationDiscountResult
.
getValidCouponMap
();
if
(
MapUtils
.
isNotEmpty
(
validCouponMap
))
{
if
(
MapUtils
.
isNotEmpty
(
validCouponMap
))
{
CheckSpqInfoResponseDto
checkSpqInfoResponseDto
=
validCouponMap
.
get
(
spqId
);
CheckSpqInfoResponseDto
checkSpqInfoResponseDto
=
validCouponMap
.
get
(
couponCode
+
cartGoods
.
getSkuId
()
);
if
(
checkSpqInfoResponseDto
!=
null
)
{
if
(
checkSpqInfoResponseDto
!=
null
)
{
cartGoods
.
setOriginalPrice
(
checkSpqInfoResponseDto
.
getPrice
());
cartGoods
.
setOriginalPrice
(
checkSpqInfoResponseDto
.
getPrice
());
cartGoods
.
setSpuId
(
checkSpqInfoResponseDto
.
getSpuId
());
cartGoods
.
setSpuId
(
checkSpqInfoResponseDto
.
getSpuId
());
...
@@ -127,12 +126,12 @@ public class CouponSharingService {
...
@@ -127,12 +126,12 @@ public class CouponSharingService {
}
}
//循环购物车商品券
//循环购物车商品券
for
(
CartGoods
cartGoods
:
cartGoodsList
)
{
for
(
CartGoods
cartGoods
:
cartGoodsList
)
{
if
(
cartGoods
.
getCartGoodsUid
().
startsWith
(
CommonsConstant
.
COUPON_PREFIX
))
{
if
(
StringUtils
.
isNotBlank
(
cartGoods
.
getCouponCode
()
))
{
String
spqId
=
cartGoods
.
getCartGoodsUid
().
substring
(
CommonsConstant
.
COUPON_PREFIX
.
length
()
);
String
couponCode
=
cartGoods
.
getCouponCode
(
);
// 计算优惠信息时,已将券校验过,放在map中
// 计算优惠信息时,已将券校验过,放在map中
Map
<
String
,
CheckSpqInfoResponseDto
>
validCouponMap
=
discountResult
==
null
?
new
HashMap
<>()
:
discountResult
.
getValidCouponMap
();
Map
<
String
,
CheckSpqInfoResponseDto
>
validCouponMap
=
discountResult
==
null
?
new
HashMap
<>()
:
discountResult
.
getValidCouponMap
();
if
(
MapUtils
.
isNotEmpty
(
validCouponMap
))
{
if
(
MapUtils
.
isNotEmpty
(
validCouponMap
))
{
CheckSpqInfoResponseDto
checkSpqInfoResponseDto
=
validCouponMap
.
get
(
spqId
);
CheckSpqInfoResponseDto
checkSpqInfoResponseDto
=
validCouponMap
.
get
(
couponCode
+
cartGoods
.
getSkuId
()
);
if
(
checkSpqInfoResponseDto
!=
null
)
{
if
(
checkSpqInfoResponseDto
!=
null
)
{
cartGoods
.
setOriginalPrice
(
checkSpqInfoResponseDto
.
getPrice
());
cartGoods
.
setOriginalPrice
(
checkSpqInfoResponseDto
.
getPrice
());
cartGoods
.
setSpuId
(
checkSpqInfoResponseDto
.
getSpuId
());
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