Commit 9ee59d09 by 周晓航

Merge branch 'feature/zxh/套餐商品库存新模式-20221018' into qa

parents 07e7fcd8 7e25a9c1
......@@ -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) {
......
......@@ -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(cartGoods.isStockLimit());
comboProduct.setStockLimit(comboxGoods.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(cartGoods.isStockLimit());
cartGoodsDetailDto.setStockLimit(comboxGoods.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);
}
}
/**
* 更新当前购物车商品行信息
......
......@@ -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());
......
......@@ -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 表示为不可单点商品, 商品全部为不可单点商品时 不可下单
......
......@@ -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}"
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment