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
9ee59d09
Commit
9ee59d09
authored
Nov 01, 2022
by
周晓航
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'feature/zxh/套餐商品库存新模式-20221018' into qa
parents
07e7fcd8
7e25a9c1
Expand all
Show whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
60 additions
and
16 deletions
+60
-16
assortment-ordercenter-sdk/src/main/java/com/freemud/sdk/api/assortment/order/adapter/OrderSdkAdapter.java
+10
-0
shopping-cart-application-service/src/main/java/cn/freemud/adapter/ShoppingCartConvertAdapter.java
+29
-2
shopping-cart-application-service/src/main/java/cn/freemud/service/impl/ProductServiceImpl.java
+19
-13
shopping-cart-application-service/src/main/java/cn/freemud/service/impl/ShoppingCartNewServiceImpl.java
+1
-0
shopping-cart-application-service/src/test/spock/cn/freemud/service/impl/ShoppingCartNewDiscountSpock.groovy
+1
-1
shopping-cart-application-service/src/test/spock/cn/freemud/service/impl/ShoppingCartOldDiscountSpock.groovy
+0
-0
No files found.
assortment-ordercenter-sdk/src/main/java/com/freemud/sdk/api/assortment/order/adapter/OrderSdkAdapter.java
View file @
9ee59d09
...
...
@@ -1967,13 +1967,23 @@ public class OrderSdkAdapter {
updateStocksRequest
.
setTransTime
(
DateUtil
.
convert2String
(
new
Date
(),
DateUtil
.
FORMAT_YYYY_MM_DD_HHMMSS
));
List
<
UpdateProductStockRequestDto
.
ProductStock
>
productStocks
=
new
ArrayList
<>();
if
(
CollectionUtils
.
isNotEmpty
(
products
))
{
/**
* 别问代码为什么这么写 人家基础服务不处理这种逻辑
* 本上扣什么库存 怎么扣 不应该由订单关注, 应该是商品服务自己去处理 反正我是挺无语的
*/
products
.
forEach
(
product
->
{
// 套餐商品 基础服务为7 额外扣除库存逻辑
if
(
Objects
.
nonNull
(
product
.
getOriginalProductType
())
&&
ProductTypeEnum
.
SETMEAL_UPPRICE_PRODUCT
.
getCode
().
compareTo
(
product
.
getOriginalProductType
())
==
0
)
{
// 关联模式 把套餐传递过去 用于商品服务扣除 固定搭配的库存
if
(
product
.
getStockMode
().
compareTo
(
2
)
==
0
)
{
UpdateProductStockRequestDto
.
ProductStock
productStocksVO
=
this
.
getProductStockVo
(
product
);
productStocks
.
add
(
productStocksVO
);
}
else
{
if
(
product
.
getHasStockProudct
()
!=
null
&&
product
.
getHasStockProudct
())
{
UpdateProductStockRequestDto
.
ProductStock
productStocksVO
=
this
.
getProductStockVo
(
product
);
productStocks
.
add
(
productStocksVO
);
}
}
// 需要处理 过滤出 可选搭配
if
(
CollectionUtils
.
isNotEmpty
(
product
.
getComboProduct
()))
{
if
(
product
.
getStockMode
().
compareTo
(
2
)
==
0
)
{
...
...
shopping-cart-application-service/src/main/java/cn/freemud/adapter/ShoppingCartConvertAdapter.java
View file @
9ee59d09
...
...
@@ -25,6 +25,7 @@ import cn.freemud.enums.ActivityTypeEnum;
import
cn.freemud.enums.GoodsTypeEnum
;
import
cn.freemud.enums.ProductType
;
import
cn.freemud.utils.BeanUtil
;
import
cn.freemud.utils.LogUtil
;
import
com.alibaba.fastjson.JSON
;
import
com.alibaba.fastjson.JSONObject
;
import
com.freemud.application.sdk.api.log.ErrorLog
;
...
...
@@ -135,6 +136,7 @@ public class ShoppingCartConvertAdapter {
cartGoodsDetailDto
.
setCategoryName
(
cartGoods
.
getCategoryName
());
cartGoodsDetailDto
.
setCouponCode
(
cartGoods
.
getCouponCode
());
cartGoodsDetailDto
.
setStockLimit
(
cartGoods
.
isStockLimit
());
cartGoodsDetailDto
.
setStockMode
(
cartGoods
.
getStockMode
());
cartGoodsDetailDto
.
setProductCode
(
cartGoods
.
getCustomerCode
());
cartGoodsDetailDto
.
setCustomerCode
(
cartGoods
.
getCustomerCode
());
cartGoodsDetailDto
.
setWeight
(
cartGoods
.
getWeight
());
...
...
@@ -176,7 +178,7 @@ public class ShoppingCartConvertAdapter {
comboProduct
.
setProductType
(
comboxGoods
.
isWeightType
()
?
ProductType
.
WEIGHT_PRODUCT
.
getCode
()
:
ProductType
.
SETMEAL
.
getCode
());
comboProduct
.
setParentProductId
(
cartGoods
.
getGoodsId
());
comboProduct
.
setIsFixedProduct
(
true
);
comboProduct
.
setStockLimit
(
c
art
Goods
.
isStockLimit
());
comboProduct
.
setStockLimit
(
c
ombox
Goods
.
isStockLimit
());
comboProduct
.
setCustomerCode
(
comboxGoods
.
getCustomerCode
());
comboProduct
.
setWeight
(
comboxGoods
.
getWeight
());
comboProduct
.
setUnit
(
comboxGoods
.
getUnit
());
...
...
@@ -346,7 +348,7 @@ public class ShoppingCartConvertAdapter {
cartGoodsDetailDto
.
setProductType
(
comboxGoods
.
isWeightType
()
?
ProductType
.
WEIGHT_PRODUCT
.
getCode
()
:
ProductType
.
SETMEAL
.
getCode
());
cartGoodsDetailDto
.
setParentProductId
(
cartGoods
.
getGoodsId
());
cartGoodsDetailDto
.
setIsFixedProduct
(
isFixed
);
cartGoodsDetailDto
.
setStockLimit
(
c
art
Goods
.
isStockLimit
());
cartGoodsDetailDto
.
setStockLimit
(
c
ombox
Goods
.
isStockLimit
());
cartGoodsDetailDto
.
setCustomerCode
(
comboxGoods
.
getCustomerCode
());
cartGoodsDetailDto
.
setWeight
(
comboxGoods
.
getWeight
());
cartGoodsDetailDto
.
setUnit
(
comboxGoods
.
getUnit
());
...
...
@@ -643,6 +645,31 @@ public class ShoppingCartConvertAdapter {
return
result
;
}
/**
* 只维护 套餐券的 model 和 库存限制
* @param cartGoods
* @param productBeans
*/
public
void
updateStockModelAndStockLimit
(
CartGoods
cartGoods
,
List
<
ProductTypeBeanDTO
>
productBeans
)
{
try
{
// LogUtil.info("fisherman 套餐券",JSON.toJSON(cartGoods),JSON.toJSONString(productBeans));
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 @
9ee59d09
...
...
@@ -14,7 +14,10 @@ import cn.freemud.entities.vo.GetMemberCouponRequestVo;
import
cn.freemud.entities.vo.ShoppingCartGoodsResponseVo
;
import
cn.freemud.service.ProductService
;
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.util.CartResponseUtil
;
import
com.freemud.sdk.api.assortment.shoppingcart.util.PropertyConvertUtil
;
...
...
@@ -55,7 +58,7 @@ public class ProductServiceImpl implements ProductService {
private
ShoppingCartConvertAdapter
shoppingCartConvertAdapter
;
@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
();
ProductBaseResponse
<
List
<
String
>>
requiredProductList
=
productClient
.
getRequiredProductList
(
request
);
if
(
null
!=
requiredProductList
&&
ResponseCodeConstant
.
RESPONSE_SUCCESS
.
equals
(
requiredProductList
.
getErrcode
())
&&
...
...
@@ -76,15 +79,15 @@ public class ProductServiceImpl implements ProductService {
public
BaseResponse
<
CheckCartRequest
>
checkAllCartGoodsNew
(
CheckCartRequest
checkCartRequest
)
{
try
{
ValidateShopProductRequest
validateShopProductRequest
=
shoppingCartConvertAdapter
.
getValidateShopProductRequest
(
checkCartRequest
);
if
(
CollectionUtils
.
isEmpty
(
validateShopProductRequest
.
getProductTypeList
()))
{
if
(
CollectionUtils
.
isEmpty
(
validateShopProductRequest
.
getProductTypeList
()))
{
return
CartResponseUtil
.
success
(
checkCartRequest
);
}
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
.
getShoppingCartGoodsResponseVo
().
setChanged
(
true
);
checkCartRequest
.
getShoppingCartGoodsResponseVo
().
setToastMsg
(
ShoppingCartConstant
.
SHOPPING_CART_INVALIAD_GOODS
);
return
CartResponseUtil
.
error
(
valiadResponse
.
getErrmsg
(),
checkCartRequest
);
return
CartResponseUtil
.
error
(
valiadResponse
.
getErrmsg
(),
checkCartRequest
);
}
ValiadShopProductResponse
valiadResult
=
valiadResponse
.
getData
();
if
(
CollectionUtils
.
isEmpty
(
valiadResult
.
getSuccessList
()))
{
...
...
@@ -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
));
//非法商品(商品是否存在、商品是否处于上架状态)自动移除,返回前端提示
boolean
hasChange
=
false
;
for
(
CartGoods
cartGoods
:
checkCartRequest
.
getCartGoodsList
())
{
for
(
CartGoods
cartGoods
:
checkCartRequest
.
getCartGoodsList
())
{
// 当goodsId为空或商品是商品券时直接跳过
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
.
BUY_M_SEND_N_COUPON
.
getGoodsType
()))
{
continue
;
}
if
(!
successMap
.
containsKey
(
cartGoods
.
getCartGoodsUid
())){
if
(!
successMap
.
containsKey
(
cartGoods
.
getCartGoodsUid
()))
{
hasChange
=
true
;
cartGoods
.
setCartGoodsUid
(
null
);
checkCartRequest
.
getShoppingCartGoodsResponseVo
().
setChanged
(
true
);
checkCartRequest
.
getShoppingCartGoodsResponseVo
().
setToastMsg
(
ShoppingCartConstant
.
SHOPPING_CART_INVALIAD_GOODS
);
}
}
if
(
hasChange
){
if
(
hasChange
)
{
setToastMsgIfNotExist
(
checkCartRequest
.
getShoppingCartGoodsResponseVo
(),
ShoppingCartConstant
.
SHOPPING_CART_GOODS_CHANGE
);
checkCartRequest
.
getCartGoodsList
().
removeIf
(
k
->
StringUtils
.
isEmpty
(
k
.
getCartGoodsUid
()));
}
...
...
@@ -122,6 +125,8 @@ public class ProductServiceImpl implements ProductService {
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
.
BUY_M_SEND_N_COUPON
.
getGoodsType
()))
{
//商品券 如果是套餐 需要维护套餐的 stockMode stockLimit 用于库存扣减 【【礼赞】套餐商品创建页&编辑页新增库存模式选择】 https://www.tapd.cn/43862731/prong/stories/view/1143862731001053416
shoppingCartConvertAdapter
.
updateStockModelAndStockLimit
(
cartGoods
,
productList
);
continue
;
}
// fisherman 添加原有商品类型
...
...
@@ -151,10 +156,11 @@ public class ProductServiceImpl implements ProductService {
}
catch
(
Exception
e
)
{
checkCartRequest
.
getShoppingCartGoodsResponseVo
().
setChanged
(
true
);
checkCartRequest
.
getShoppingCartGoodsResponseVo
().
setToastMsg
(
ShoppingCartConstant
.
SHOPPING_CART_INVALIAD_GOODS
);
return
CartResponseUtil
.
error
(
e
.
getMessage
(),
checkCartRequest
);
return
CartResponseUtil
.
error
(
e
.
getMessage
(),
checkCartRequest
);
}
}
/**
* 当ToastMsg为空时才赋值
*
...
...
@@ -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
)
{
//获取所有商品券cartGoodsUid=sqp+code
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
());
.
filter
(
k
->
StringUtils
.
isNotBlank
(
k
.
getCouponCode
())).
map
(
CartGoods:
:
getCouponCode
).
collect
(
Collectors
.
toList
());
}
if
(
CollectionUtils
.
isEmpty
(
couponIds
))
{
return
goodsStates
;
...
...
@@ -194,7 +200,7 @@ public class ProductServiceImpl implements ProductService {
List
<
String
>
activityCode
;
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
());
couponOrderWayMap
=
getCouponOrderWay
(
partnerId
,
activityCode
,
orderWay
,
trackingNo
);
//遍历商品券是否有当前点餐方式点餐
...
...
@@ -280,7 +286,7 @@ public class ProductServiceImpl implements ProductService {
List
<
CartGoods
>
cartGoodsByProduct
=
cartGoodsList
.
stream
()
.
filter
(
cartGoods
->
cartGoods
.
getCartGoodsUid
().
startsWith
(
CommonsConstant
.
COUPON_PREFIX
))
.
collect
(
Collectors
.
toList
());
if
(
CollectionUtils
.
isEmpty
(
cartGoodsByProduct
)){
if
(
CollectionUtils
.
isEmpty
(
cartGoodsByProduct
))
{
cartGoodsByProduct
=
cartGoodsList
.
stream
()
.
filter
(
cartGoods
->
StringUtils
.
isNotBlank
(
cartGoods
.
getCouponCode
()))
.
collect
(
Collectors
.
toList
());
...
...
shopping-cart-application-service/src/main/java/cn/freemud/service/impl/ShoppingCartNewServiceImpl.java
View file @
9ee59d09
...
...
@@ -1201,6 +1201,7 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService {
shoppingCartGoodsResponseVo
.
setToastMsg
(
cartGoodsResponseVo
.
getToastMsg
());
}
cartGoodsList
=
JSONArray
.
parseArray
(
JSONObject
.
toJSONString
(
checkCartRequest
.
getCartGoodsList
()),
CartGoods
.
class
);
// LogUtil.info("fisherman 套餐券 002 ",JSON.toJSON(cartGoodsList),JSON.toJSONString(checkCartRequest));
boolean
cannotOrder
=
true
;
for
(
CartGoods
p
:
cartGoodsList
)
{
//singleOrder=1 表示为不可单点商品, 商品全部为不可单点商品时 不可下单
...
...
shopping-cart-application-service/src/test/spock/cn/freemud/service/impl/ShoppingCartNewDiscountSpock.groovy
View file @
9ee59d09
...
...
@@ -204,7 +204,7 @@ class ShoppingCartNewDiscountSpock extends Specification {
,
ProductInfosDto
.
class
)
// Shop/ValidateShopProduct
def
valiadProductResponse
=
JSON
.
parseObject
(
"{\"data\":{\"failureList\":[],\"successList\":[{\"code\":0,\"productType\":{\"additionalGroupList\":[],\"barcode\":\"\",\"brandId\":\"\",\"brandName\":\"\",\"businessNo\":\"\",\"category\":\"\",\"categoryName\":\"\",\"companyId\":\"2690\",\"customerCode\":\"isStockLimit001\",\"finalPrice\":106,\"foreignName\":\"\",\"isDishware\":0,\"isSkuProduct\":0,\"linkedId\":\"\",\"memberDiscount\":0,\"name\":\"迦勒套餐限制库存\",\"openMemberDiscount\":0,\"originalPrice\":100,\"packPrice\":0,\"picture\":\"https://picture.sandload.cn/1666144031098.jpg\",\"pid\":\"255176569631514924\",\"productAttributeGroupList\":[],\"productBindingCouponTypes\":[],\"productCode\":\"123123123asdf\",\"productComboList\":[{\"customerCode\":\"jrb\",\"finalPrice\":33,\"foreignProductName\":\"\",\"linkedId\":\"\",\"originalPrice\":33,\"packPrice\":1,\"picture\":\"https://picture.sandload.cn/1628583566754.jpg\",\"productCode\":\"5566\",\"productId\":\"215806490097850416\",\"productName\":\"柚子的鸡肉棒\",\"productType\":1,\"quantity\":1,\"tax\":0.0,\"taxId\":\"\",\"unit\":\"\",\"weight\":0.0,\"weightType\":0}],\"productGroupList\":[{\"allowRepeat\":1,\"groupCode\":\"迦勒套餐0021\",\"groupDetail\":[{\"customerCode\":\"jrb\",\"foreignProductName\":\"\",\"linkedId\":\"\",\"markUpPrice\":33,\"picture\":\"https://picture.sandload.cn/1628583566754.jpg\",\"productCode\":\"5566\",\"productFinalPrice\":33,\"productId\":\"215806490097850416\",\"productName\":\"柚子的鸡肉棒\",\"productPrice\":33,\"productType\":1,\"stockLimit\":2,\"tax\":0.0,\"taxId\":\"\",\"unit\":\"\",\"weight\":0.0,\"weightType\":0},{\"customerCode\":\"hb\",\"foreignProductName\":\"\",\"linkedId\":\"\",\"markUpPrice\":2,\"picture\":\"https://picture.sandload.cn/1628583887266.png\",\"productCode\":\"445533\",\"productFinalPrice\":2,\"productId\":\"215806824348227645\",\"productName\":\"柚子的汉堡\",\"productPrice\":2,\"productType\":1,\"stockLimit\":2,\"tax\":0.0,\"taxId\":\"\",\"unit\":\"\",\"weight\":0.0,\"weightType\":0},{\"customerCode\":\"gl\",\"foreignProductName\":\"\",\"linkedId\":\"\",\"markUpPrice\":4,\"picture\":\"https://picture.sandload.cn/1628587383665.jpg\",\"productCode\":\"776655\",\"productFinalPrice\":40,\"productId\":\"215810517496862722\",\"productName\":\"柚子的果篮\",\"productPrice\":40,\"productType\":1,\"stockLimit\":1,\"tax\":0.0,\"taxId\":\"\",\"unit\":\"\",\"weight\":0.0,\"weightType\":0}],\"linkId\":\"2690\",\"maxNumber\":5,\"minNumber\":3,\"must\":1,\"name\":\"迦勒商品租\",\"options\":\"\",\"pgid\":\"251946861712302120\",\"remark\":\"\",\"total\":0}],\"productPictureList\":[{\"sequence\":\"0\",\"type\":\"default\",\"url\":\"https://picture.sandload.cn/1666144031098.jpg\"}],\"riseSell\":1,\"singleOrder\":0,\"skuList\":[],\"skuSpecValues\":[],\"specification\":\"\",\"status\":2,\"stock\":50,\"stockLimit\":1,\"type\":7,\"unit\":\"\",\"weight\":0.0,\"weightType\":0},\"skuId\":\"255176569631514924\",\"spuId\":\"255176569631514924\",\"uuid\":\"e58094b9-412f-4c46-9278-1d81cd694fb5\"}]},\"errcode\":100,\"errmsg\":\"获取门店必选分类商品成功\"}"
def
valiadProductResponse
=
JSON
.
parseObject
(
"{\"data\":{\"failureList\":[],\"successList\":[{\"code\":0,\"productType\":{\"additionalGroupList\":[],\"barcode\":\"\",\"brandId\":\"\",\"brandName\":\"\",\"businessNo\":\"\",\"category\":\"\",\"categoryName\":\"\",\"companyId\":\"2690\",\"customerCode\":\"isStockLimit001\",\"finalPrice\":106,\"foreignName\":\"\",\"isDishware\":0,\"isSkuProduct\":0,\"linkedId\":\"\",\"memberDiscount\":0,\"name\":\"迦勒套餐限制库存\",\"openMemberDiscount\":0,\"originalPrice\":100,\"
stockMode\":2,\"
packPrice\":0,\"picture\":\"https://picture.sandload.cn/1666144031098.jpg\",\"pid\":\"255176569631514924\",\"productAttributeGroupList\":[],\"productBindingCouponTypes\":[],\"productCode\":\"123123123asdf\",\"productComboList\":[{\"customerCode\":\"jrb\",\"finalPrice\":33,\"foreignProductName\":\"\",\"linkedId\":\"\",\"originalPrice\":33,\"packPrice\":1,\"picture\":\"https://picture.sandload.cn/1628583566754.jpg\",\"productCode\":\"5566\",\"productId\":\"215806490097850416\",\"productName\":\"柚子的鸡肉棒\",\"productType\":1,\"quantity\":1,\"tax\":0.0,\"taxId\":\"\",\"unit\":\"\",\"weight\":0.0,\"weightType\":0}],\"productGroupList\":[{\"allowRepeat\":1,\"groupCode\":\"迦勒套餐0021\",\"groupDetail\":[{\"customerCode\":\"jrb\",\"foreignProductName\":\"\",\"linkedId\":\"\",\"markUpPrice\":33,\"picture\":\"https://picture.sandload.cn/1628583566754.jpg\",\"productCode\":\"5566\",\"productFinalPrice\":33,\"productId\":\"215806490097850416\",\"productName\":\"柚子的鸡肉棒\",\"productPrice\":33,\"productType\":1,\"stockLimit\":2,\"tax\":0.0,\"taxId\":\"\",\"unit\":\"\",\"weight\":0.0,\"weightType\":0},{\"customerCode\":\"hb\",\"foreignProductName\":\"\",\"linkedId\":\"\",\"markUpPrice\":2,\"picture\":\"https://picture.sandload.cn/1628583887266.png\",\"productCode\":\"445533\",\"productFinalPrice\":2,\"productId\":\"215806824348227645\",\"productName\":\"柚子的汉堡\",\"productPrice\":2,\"productType\":1,\"stockLimit\":2,\"tax\":0.0,\"taxId\":\"\",\"unit\":\"\",\"weight\":0.0,\"weightType\":0},{\"customerCode\":\"gl\",\"foreignProductName\":\"\",\"linkedId\":\"\",\"markUpPrice\":4,\"picture\":\"https://picture.sandload.cn/1628587383665.jpg\",\"productCode\":\"776655\",\"productFinalPrice\":40,\"productId\":\"215810517496862722\",\"productName\":\"柚子的果篮\",\"productPrice\":40,\"productType\":1,\"stockLimit\":1,\"tax\":0.0,\"taxId\":\"\",\"unit\":\"\",\"weight\":0.0,\"weightType\":0}],\"linkId\":\"2690\",\"maxNumber\":5,\"minNumber\":3,\"must\":1,\"name\":\"迦勒商品租\",\"options\":\"\",\"pgid\":\"251946861712302120\",\"remark\":\"\",\"total\":0}],\"productPictureList\":[{\"sequence\":\"0\",\"type\":\"default\",\"url\":\"https://picture.sandload.cn/1666144031098.jpg\"}],\"riseSell\":1,\"singleOrder\":0,\"skuList\":[],\"skuSpecValues\":[],\"specification\":\"\",\"status\":2,\"stock\":50,\"stockLimit\":1,\"type\":7,\"unit\":\"\",\"weight\":0.0,\"weightType\":0},\"skuId\":\"255176569631514924\",\"spuId\":\"255176569631514924\",\"uuid\":\"e58094b9-412f-4c46-9278-1d81cd694fb5\"}]},\"errcode\":100,\"errmsg\":\"获取门店必选分类商品成功\"}"
,
new
TypeReference
<
ProductBaseResponse
<
ValiadShopProductResponse
>>()
{})
def
activityQueryResponseDto
=
JSON
.
parseObject
(
"{\"msg\":\"成功\",\"result\":[],\"statusCode\":\"100\",\"ver\":1}"
...
...
shopping-cart-application-service/src/test/spock/cn/freemud/service/impl/ShoppingCartOldDiscountSpock.groovy
View file @
9ee59d09
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