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
b6e1ffa8
Commit
b6e1ffa8
authored
Nov 01, 2022
by
周晓航
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
优惠券的 套餐商品维护 stockmode
parent
87d733ab
Expand all
Show whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
43 additions
and
13 deletions
+43
-13
shopping-cart-application-service/src/main/java/cn/freemud/adapter/ShoppingCartConvertAdapter.java
+24
-0
shopping-cart-application-service/src/main/java/cn/freemud/service/impl/ProductServiceImpl.java
+19
-13
shopping-cart-application-service/src/test/spock/cn/freemud/service/impl/ShoppingCartOldDiscountSpock.groovy
+0
-0
No files found.
shopping-cart-application-service/src/main/java/cn/freemud/adapter/ShoppingCartConvertAdapter.java
View file @
b6e1ffa8
...
@@ -644,6 +644,30 @@ public class ShoppingCartConvertAdapter {
...
@@ -644,6 +644,30 @@ public class ShoppingCartConvertAdapter {
return
result
;
return
result
;
}
}
/**
* 只维护 套餐券的 model 和 库存限制
* @param cartGoods
* @param productBeans
*/
public
void
updateStockModelAndStockLimit
(
CartGoods
cartGoods
,
List
<
ProductTypeBeanDTO
>
productBeans
)
{
try
{
Optional
<
ProductTypeBeanDTO
>
firstProduct
=
productBeans
.
stream
().
filter
(
p
->
ObjectUtils
.
equals
(
p
.
getPid
(),
cartGoods
.
getSpuId
())).
findFirst
();
if
(!
firstProduct
.
isPresent
())
{
return
;
}
ProductTypeBeanDTO
spuProduct
=
firstProduct
.
get
();
boolean
isSkuProduct
=
ObjectUtils
.
equals
(
com
.
freemud
.
sdk
.
api
.
assortment
.
shoppingcart
.
constant
.
GoodsTypeEnum
.
SKU_GOODS
.
getGoodsType
(),
cartGoods
.
getGoodsType
());
SkuProductBean
skuProduct
=
isSkuProduct
?
spuProduct
.
getSkuList
().
stream
().
filter
(
p
->
ObjectUtils
.
equals
(
cartGoods
.
getSkuId
(),
p
.
getSkuId
())).
findFirst
().
orElse
(
null
):
null
;
if
(
isSkuProduct
&&
skuProduct
==
null
){
//特殊场景前端传一个skuid非spuid下多规格商品
throw
new
ServiceException
(
CartResponseConstant
.
FAIL
);
}
cartGoods
.
setStockLimit
(
isSkuProduct
?
ObjectUtils
.
equals
(
1
,
skuProduct
.
getStockLimit
())
:
ObjectUtils
.
equals
(
1
,
spuProduct
.
getStockLimit
()));
cartGoods
.
setStockMode
(
spuProduct
.
getStockMode
());
}
catch
(
Exception
ex
)
{
ShoppingSdkLogUtil
.
errorLog
(
"updateCartGoodsInfoNew_Error cartGoods:{},productBeans:{}"
,
ex
,
JSONObject
.
toJSONString
(
cartGoods
),
JSONObject
.
toJSONString
(
productBeans
));
cartGoods
.
setCartGoodsUid
(
null
);
}
}
/**
/**
* 更新当前购物车商品行信息
* 更新当前购物车商品行信息
...
...
shopping-cart-application-service/src/main/java/cn/freemud/service/impl/ProductServiceImpl.java
View file @
b6e1ffa8
...
@@ -14,7 +14,10 @@ import cn.freemud.entities.vo.GetMemberCouponRequestVo;
...
@@ -14,7 +14,10 @@ import cn.freemud.entities.vo.GetMemberCouponRequestVo;
import
cn.freemud.entities.vo.ShoppingCartGoodsResponseVo
;
import
cn.freemud.entities.vo.ShoppingCartGoodsResponseVo
;
import
cn.freemud.service.ProductService
;
import
cn.freemud.service.ProductService
;
import
cn.freemud.service.thirdparty.ProductClient
;
import
cn.freemud.service.thirdparty.ProductClient
;
import
com.freemud.sdk.api.assortment.shoppingcart.constant.*
;
import
com.freemud.sdk.api.assortment.shoppingcart.constant.ActivityChannelEnum
;
import
com.freemud.sdk.api.assortment.shoppingcart.constant.CommonsConstant
;
import
com.freemud.sdk.api.assortment.shoppingcart.constant.GoodsTypeEnum
;
import
com.freemud.sdk.api.assortment.shoppingcart.constant.ShoppingCartConstant
;
import
com.freemud.sdk.api.assortment.shoppingcart.domain.CartGoodsStates
;
import
com.freemud.sdk.api.assortment.shoppingcart.domain.CartGoodsStates
;
import
com.freemud.sdk.api.assortment.shoppingcart.util.CartResponseUtil
;
import
com.freemud.sdk.api.assortment.shoppingcart.util.CartResponseUtil
;
import
com.freemud.sdk.api.assortment.shoppingcart.util.PropertyConvertUtil
;
import
com.freemud.sdk.api.assortment.shoppingcart.util.PropertyConvertUtil
;
...
@@ -55,7 +58,7 @@ public class ProductServiceImpl implements ProductService {
...
@@ -55,7 +58,7 @@ public class ProductServiceImpl implements ProductService {
private
ShoppingCartConvertAdapter
shoppingCartConvertAdapter
;
private
ShoppingCartConvertAdapter
shoppingCartConvertAdapter
;
@Override
@Override
public
boolean
hasRequiredProducts
(
String
partnerId
,
String
storeId
,
List
<
CartGoods
>
cartGoodsList
,
String
menuType
)
{
public
boolean
hasRequiredProducts
(
String
partnerId
,
String
storeId
,
List
<
CartGoods
>
cartGoodsList
,
String
menuType
)
{
RequiredProductRequest
request
=
RequiredProductRequest
.
builder
().
channel
(
menuType
).
partnerId
(
partnerId
).
shopId
(
storeId
).
build
();
RequiredProductRequest
request
=
RequiredProductRequest
.
builder
().
channel
(
menuType
).
partnerId
(
partnerId
).
shopId
(
storeId
).
build
();
ProductBaseResponse
<
List
<
String
>>
requiredProductList
=
productClient
.
getRequiredProductList
(
request
);
ProductBaseResponse
<
List
<
String
>>
requiredProductList
=
productClient
.
getRequiredProductList
(
request
);
if
(
null
!=
requiredProductList
&&
ResponseCodeConstant
.
RESPONSE_SUCCESS
.
equals
(
requiredProductList
.
getErrcode
())
&&
if
(
null
!=
requiredProductList
&&
ResponseCodeConstant
.
RESPONSE_SUCCESS
.
equals
(
requiredProductList
.
getErrcode
())
&&
...
@@ -76,15 +79,15 @@ public class ProductServiceImpl implements ProductService {
...
@@ -76,15 +79,15 @@ public class ProductServiceImpl implements ProductService {
public
BaseResponse
<
CheckCartRequest
>
checkAllCartGoodsNew
(
CheckCartRequest
checkCartRequest
)
{
public
BaseResponse
<
CheckCartRequest
>
checkAllCartGoodsNew
(
CheckCartRequest
checkCartRequest
)
{
try
{
try
{
ValidateShopProductRequest
validateShopProductRequest
=
shoppingCartConvertAdapter
.
getValidateShopProductRequest
(
checkCartRequest
);
ValidateShopProductRequest
validateShopProductRequest
=
shoppingCartConvertAdapter
.
getValidateShopProductRequest
(
checkCartRequest
);
if
(
CollectionUtils
.
isEmpty
(
validateShopProductRequest
.
getProductTypeList
()))
{
if
(
CollectionUtils
.
isEmpty
(
validateShopProductRequest
.
getProductTypeList
()))
{
return
CartResponseUtil
.
success
(
checkCartRequest
);
return
CartResponseUtil
.
success
(
checkCartRequest
);
}
}
ProductBaseResponse
<
ValiadShopProductResponse
>
valiadResponse
=
productClient
.
validateShopProduct
(
validateShopProductRequest
);
ProductBaseResponse
<
ValiadShopProductResponse
>
valiadResponse
=
productClient
.
validateShopProduct
(
validateShopProductRequest
);
if
(
valiadResponse
==
null
||
!
Objects
.
equals
(
ResponseCodeConstant
.
RESPONSE_SUCCESS
,
valiadResponse
.
getErrcode
())
||
valiadResponse
.
getData
()==
null
)
{
if
(
valiadResponse
==
null
||
!
Objects
.
equals
(
ResponseCodeConstant
.
RESPONSE_SUCCESS
,
valiadResponse
.
getErrcode
())
||
valiadResponse
.
getData
()
==
null
)
{
checkCartRequest
.
getCartGoodsList
().
clear
();
checkCartRequest
.
getCartGoodsList
().
clear
();
checkCartRequest
.
getShoppingCartGoodsResponseVo
().
setChanged
(
true
);
checkCartRequest
.
getShoppingCartGoodsResponseVo
().
setChanged
(
true
);
checkCartRequest
.
getShoppingCartGoodsResponseVo
().
setToastMsg
(
ShoppingCartConstant
.
SHOPPING_CART_INVALIAD_GOODS
);
checkCartRequest
.
getShoppingCartGoodsResponseVo
().
setToastMsg
(
ShoppingCartConstant
.
SHOPPING_CART_INVALIAD_GOODS
);
return
CartResponseUtil
.
error
(
valiadResponse
.
getErrmsg
(),
checkCartRequest
);
return
CartResponseUtil
.
error
(
valiadResponse
.
getErrmsg
(),
checkCartRequest
);
}
}
ValiadShopProductResponse
valiadResult
=
valiadResponse
.
getData
();
ValiadShopProductResponse
valiadResult
=
valiadResponse
.
getData
();
if
(
CollectionUtils
.
isEmpty
(
valiadResult
.
getSuccessList
()))
{
if
(
CollectionUtils
.
isEmpty
(
valiadResult
.
getSuccessList
()))
{
...
@@ -96,21 +99,21 @@ public class ProductServiceImpl implements ProductService {
...
@@ -96,21 +99,21 @@ public class ProductServiceImpl implements ProductService {
Map
<
String
,
ValiadShopProductResult
>
successMap
=
valiadResult
.
getSuccessList
().
stream
().
collect
(
Collectors
.
toMap
(
ValiadShopProductResult:
:
getUuid
,
Function
.
identity
(),
(
k1
,
k2
)
->
k1
));
Map
<
String
,
ValiadShopProductResult
>
successMap
=
valiadResult
.
getSuccessList
().
stream
().
collect
(
Collectors
.
toMap
(
ValiadShopProductResult:
:
getUuid
,
Function
.
identity
(),
(
k1
,
k2
)
->
k1
));
//非法商品(商品是否存在、商品是否处于上架状态)自动移除,返回前端提示
//非法商品(商品是否存在、商品是否处于上架状态)自动移除,返回前端提示
boolean
hasChange
=
false
;
boolean
hasChange
=
false
;
for
(
CartGoods
cartGoods
:
checkCartRequest
.
getCartGoodsList
())
{
for
(
CartGoods
cartGoods
:
checkCartRequest
.
getCartGoodsList
())
{
// 当goodsId为空或商品是商品券时直接跳过
// 当goodsId为空或商品是商品券时直接跳过
if
(
StringUtils
.
isEmpty
(
cartGoods
.
getGoodsId
())
||
Objects
.
equals
(
cartGoods
.
getGoodsType
(),
GoodsTypeEnum
.
COUPON_GOODS
.
getGoodsType
())
if
(
StringUtils
.
isEmpty
(
cartGoods
.
getGoodsId
())
||
Objects
.
equals
(
cartGoods
.
getGoodsType
(),
GoodsTypeEnum
.
COUPON_GOODS
.
getGoodsType
())
||
Objects
.
equals
(
cartGoods
.
getGoodsType
(),
GoodsTypeEnum
.
HG_COUPON_GOODS
.
getGoodsType
())
||
Objects
.
equals
(
cartGoods
.
getGoodsType
(),
GoodsTypeEnum
.
HG_COUPON_GOODS
.
getGoodsType
())
||
Objects
.
equals
(
cartGoods
.
getGoodsType
(),
GoodsTypeEnum
.
BUY_M_SEND_N_COUPON
.
getGoodsType
()))
{
||
Objects
.
equals
(
cartGoods
.
getGoodsType
(),
GoodsTypeEnum
.
BUY_M_SEND_N_COUPON
.
getGoodsType
()))
{
continue
;
continue
;
}
}
if
(!
successMap
.
containsKey
(
cartGoods
.
getCartGoodsUid
())){
if
(!
successMap
.
containsKey
(
cartGoods
.
getCartGoodsUid
()))
{
hasChange
=
true
;
hasChange
=
true
;
cartGoods
.
setCartGoodsUid
(
null
);
cartGoods
.
setCartGoodsUid
(
null
);
checkCartRequest
.
getShoppingCartGoodsResponseVo
().
setChanged
(
true
);
checkCartRequest
.
getShoppingCartGoodsResponseVo
().
setChanged
(
true
);
checkCartRequest
.
getShoppingCartGoodsResponseVo
().
setToastMsg
(
ShoppingCartConstant
.
SHOPPING_CART_INVALIAD_GOODS
);
checkCartRequest
.
getShoppingCartGoodsResponseVo
().
setToastMsg
(
ShoppingCartConstant
.
SHOPPING_CART_INVALIAD_GOODS
);
}
}
}
}
if
(
hasChange
){
if
(
hasChange
)
{
setToastMsgIfNotExist
(
checkCartRequest
.
getShoppingCartGoodsResponseVo
(),
ShoppingCartConstant
.
SHOPPING_CART_GOODS_CHANGE
);
setToastMsgIfNotExist
(
checkCartRequest
.
getShoppingCartGoodsResponseVo
(),
ShoppingCartConstant
.
SHOPPING_CART_GOODS_CHANGE
);
checkCartRequest
.
getCartGoodsList
().
removeIf
(
k
->
StringUtils
.
isEmpty
(
k
.
getCartGoodsUid
()));
checkCartRequest
.
getCartGoodsList
().
removeIf
(
k
->
StringUtils
.
isEmpty
(
k
.
getCartGoodsUid
()));
}
}
...
@@ -122,6 +125,8 @@ public class ProductServiceImpl implements ProductService {
...
@@ -122,6 +125,8 @@ public class ProductServiceImpl implements ProductService {
if
(
StringUtils
.
isEmpty
(
cartGoods
.
getGoodsId
())
||
Objects
.
equals
(
cartGoods
.
getGoodsType
(),
GoodsTypeEnum
.
COUPON_GOODS
.
getGoodsType
())
if
(
StringUtils
.
isEmpty
(
cartGoods
.
getGoodsId
())
||
Objects
.
equals
(
cartGoods
.
getGoodsType
(),
GoodsTypeEnum
.
COUPON_GOODS
.
getGoodsType
())
||
Objects
.
equals
(
cartGoods
.
getGoodsType
(),
GoodsTypeEnum
.
HG_COUPON_GOODS
.
getGoodsType
())
||
Objects
.
equals
(
cartGoods
.
getGoodsType
(),
GoodsTypeEnum
.
HG_COUPON_GOODS
.
getGoodsType
())
||
Objects
.
equals
(
cartGoods
.
getGoodsType
(),
GoodsTypeEnum
.
BUY_M_SEND_N_COUPON
.
getGoodsType
()))
{
||
Objects
.
equals
(
cartGoods
.
getGoodsType
(),
GoodsTypeEnum
.
BUY_M_SEND_N_COUPON
.
getGoodsType
()))
{
//商品券 如果是套餐 需要维护套餐的 stockMode stockLimit 用于库存扣减 【【礼赞】套餐商品创建页&编辑页新增库存模式选择】 https://www.tapd.cn/43862731/prong/stories/view/1143862731001053416
shoppingCartConvertAdapter
.
updateStockModelAndStockLimit
(
cartGoods
,
productList
);
continue
;
continue
;
}
}
// fisherman 添加原有商品类型
// fisherman 添加原有商品类型
...
@@ -151,10 +156,11 @@ public class ProductServiceImpl implements ProductService {
...
@@ -151,10 +156,11 @@ public class ProductServiceImpl implements ProductService {
}
catch
(
Exception
e
)
{
}
catch
(
Exception
e
)
{
checkCartRequest
.
getShoppingCartGoodsResponseVo
().
setChanged
(
true
);
checkCartRequest
.
getShoppingCartGoodsResponseVo
().
setChanged
(
true
);
checkCartRequest
.
getShoppingCartGoodsResponseVo
().
setToastMsg
(
ShoppingCartConstant
.
SHOPPING_CART_INVALIAD_GOODS
);
checkCartRequest
.
getShoppingCartGoodsResponseVo
().
setToastMsg
(
ShoppingCartConstant
.
SHOPPING_CART_INVALIAD_GOODS
);
return
CartResponseUtil
.
error
(
e
.
getMessage
(),
checkCartRequest
);
return
CartResponseUtil
.
error
(
e
.
getMessage
(),
checkCartRequest
);
}
}
}
}
/**
/**
* 当ToastMsg为空时才赋值
* 当ToastMsg为空时才赋值
*
*
...
@@ -177,10 +183,10 @@ public class ProductServiceImpl implements ProductService {
...
@@ -177,10 +183,10 @@ public class ProductServiceImpl implements ProductService {
private
CartGoodsStates
updateSpqCartGoodsInfo
(
List
<
CartGoods
>
cartGoodsList
,
Integer
orderWay
,
String
partnerId
,
String
trackingNo
,
CartGoodsStates
goodsStates
,
String
storeId
)
{
private
CartGoodsStates
updateSpqCartGoodsInfo
(
List
<
CartGoods
>
cartGoodsList
,
Integer
orderWay
,
String
partnerId
,
String
trackingNo
,
CartGoodsStates
goodsStates
,
String
storeId
)
{
//获取所有商品券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
))
{
if
(
CollectionUtils
.
isEmpty
(
couponIds
))
{
couponIds
=
cartGoodsList
.
parallelStream
()
couponIds
=
cartGoodsList
.
parallelStream
()
.
filter
(
k
->
StringUtils
.
isNotBlank
(
k
.
getCouponCode
())).
map
(
CartGoods:
:
getCouponCode
).
collect
(
Collectors
.
toList
());
.
filter
(
k
->
StringUtils
.
isNotBlank
(
k
.
getCouponCode
())).
map
(
CartGoods:
:
getCouponCode
).
collect
(
Collectors
.
toList
());
}
}
if
(
CollectionUtils
.
isEmpty
(
couponIds
))
{
if
(
CollectionUtils
.
isEmpty
(
couponIds
))
{
return
goodsStates
;
return
goodsStates
;
...
@@ -194,7 +200,7 @@ public class ProductServiceImpl implements ProductService {
...
@@ -194,7 +200,7 @@ public class ProductServiceImpl implements ProductService {
List
<
String
>
activityCode
;
List
<
String
>
activityCode
;
Map
<
String
,
Boolean
>
couponOrderWayMap
;
Map
<
String
,
Boolean
>
couponOrderWayMap
;
detailsMap
=
detailVOList
.
stream
().
collect
(
Collectors
.
toMap
(
p
->
p
.
getCode
(),
(
p
)
->
p
,
(
v1
,
v2
)
->
v1
));
detailsMap
=
detailVOList
.
stream
().
collect
(
Collectors
.
toMap
(
p
->
p
.
getCode
(),
(
p
)
->
p
,
(
v1
,
v2
)
->
v1
));
activityCode
=
detailVOList
.
stream
().
map
(
p
->
p
.
getActiveCode
()).
collect
(
Collectors
.
toList
());
activityCode
=
detailVOList
.
stream
().
map
(
p
->
p
.
getActiveCode
()).
collect
(
Collectors
.
toList
());
couponOrderWayMap
=
getCouponOrderWay
(
partnerId
,
activityCode
,
orderWay
,
trackingNo
);
couponOrderWayMap
=
getCouponOrderWay
(
partnerId
,
activityCode
,
orderWay
,
trackingNo
);
//遍历商品券是否有当前点餐方式点餐
//遍历商品券是否有当前点餐方式点餐
...
@@ -280,7 +286,7 @@ public class ProductServiceImpl implements ProductService {
...
@@ -280,7 +286,7 @@ public class ProductServiceImpl implements ProductService {
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
)){
if
(
CollectionUtils
.
isEmpty
(
cartGoodsByProduct
))
{
cartGoodsByProduct
=
cartGoodsList
.
stream
()
cartGoodsByProduct
=
cartGoodsList
.
stream
()
.
filter
(
cartGoods
->
StringUtils
.
isNotBlank
(
cartGoods
.
getCouponCode
()))
.
filter
(
cartGoods
->
StringUtils
.
isNotBlank
(
cartGoods
.
getCouponCode
()))
.
collect
(
Collectors
.
toList
());
.
collect
(
Collectors
.
toList
());
...
...
shopping-cart-application-service/src/test/spock/cn/freemud/service/impl/ShoppingCartOldDiscountSpock.groovy
View file @
b6e1ffa8
This diff is collapsed.
Click to expand it.
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