Commit 84554661 by 周晓航

Merge branch 'feature-商品限购活动限购次数记录,扣减,冲正-1039517-zxh20211118'

parents 8ae6c36f 2a89b036
...@@ -18,13 +18,14 @@ import com.freemud.application.sdk.api.ordercenter.request.create.CreateOrderReq ...@@ -18,13 +18,14 @@ import com.freemud.application.sdk.api.ordercenter.request.create.CreateOrderReq
import com.freemud.application.sdk.api.ordercenter.request.create.*; import com.freemud.application.sdk.api.ordercenter.request.create.*;
import com.freemud.application.sdk.api.ordercenter.response.*; import com.freemud.application.sdk.api.ordercenter.response.*;
import com.freemud.application.sdk.api.ordercenter.response.orderInfo.*; import com.freemud.application.sdk.api.ordercenter.response.orderInfo.*;
import com.freemud.application.sdk.api.promotioncenter.request.promotion.ActivityUpdateStockRequest;
import com.freemud.application.sdk.api.stockapi.domain.ProductStocksVO; import com.freemud.application.sdk.api.stockapi.domain.ProductStocksVO;
import com.freemud.application.sdk.api.stockapi.request.UpdateStocksRequest; import com.freemud.application.sdk.api.stockapi.request.UpdateStocksRequest;
import com.freemud.application.sdk.api.util.DateUtil; import com.freemud.application.sdk.api.util.DateUtil;
import com.freemud.sdk.api.assortment.order.constant.CommonConstant; import com.freemud.sdk.api.assortment.order.constant.CommonConstant;
import com.freemud.sdk.api.assortment.order.domain.OrderStatesVO; import com.freemud.sdk.api.assortment.order.domain.OrderStatesVO;
import com.freemud.sdk.api.assortment.order.domain.ResponseCodeConstant; import com.freemud.sdk.api.assortment.order.domain.ResponseCodeConstant;
import com.freemud.sdk.api.assortment.order.entities.promption.ActivityUpdateStockRequest;
import com.freemud.sdk.api.assortment.order.entities.promption.SubtractStockVO;
import com.freemud.sdk.api.assortment.order.enums.*; import com.freemud.sdk.api.assortment.order.enums.*;
import com.freemud.sdk.api.assortment.order.request.order.OrderDownloadRequest; import com.freemud.sdk.api.assortment.order.request.order.OrderDownloadRequest;
import com.freemud.sdk.api.assortment.order.request.order.*; import com.freemud.sdk.api.assortment.order.request.order.*;
...@@ -1913,14 +1914,14 @@ public class OrderSdkAdapter { ...@@ -1913,14 +1914,14 @@ public class OrderSdkAdapter {
} }
public ActivityUpdateStockRequest convert2ActivityUpdateStockRequest(OrderBeanV1 orderBean, public ActivityUpdateStockRequest convert2ActivityUpdateStockRequest(OrderBeanV1 orderBean,
List<ActivityUpdateStockRequest.StockBeanDto> stockBeanDtos) { List<SubtractStockVO> stockBeanDtos) {
if (orderBean == null || CollectionUtils.isEmpty(stockBeanDtos)) { if (orderBean == null || CollectionUtils.isEmpty(stockBeanDtos)) {
return null; return null;
} }
List<String> activityList = new ArrayList<>(); List<String> activityList = new ArrayList<>();
// 只记录订单级别的活动ID // 只记录订单级别的活动ID
if (CollectionUtils.isNotEmpty(stockBeanDtos)) { if (CollectionUtils.isNotEmpty(stockBeanDtos)) {
activityList.addAll(stockBeanDtos.stream().filter(ad -> StringUtils.isNotBlank(ad.getActivityCode())).map(ActivityUpdateStockRequest.StockBeanDto::getActivityCode).distinct().collect(Collectors.toList())); activityList.addAll(stockBeanDtos.stream().filter(ad -> StringUtils.isNotBlank(ad.getActivityCode())).map(SubtractStockVO::getActivityCode).distinct().collect(Collectors.toList()));
} }
ActivityUpdateStockRequest updateStockRequest = new ActivityUpdateStockRequest(); ActivityUpdateStockRequest updateStockRequest = new ActivityUpdateStockRequest();
updateStockRequest.setStock(stockBeanDtos); updateStockRequest.setStock(stockBeanDtos);
......
package com.freemud.sdk.api.assortment.order.entities.promption;
import lombok.Data;
import java.util.List;
/**
* @author : xh.Z
* @email : fisherman0510@163.com
* @Date : 2021/11/18 下午3:45
* @description :
*/
@Data
public class ActivityUpdateStockRequest {
private String ver;
private String orderId;
private String partnerCode;
private String storeId;
List<SubtractStockVO> stock;
List<String> activityList;
private String orderCreateTime;
private String userId;
}
package com.freemud.sdk.api.assortment.order.entities.promption;
import lombok.Data;
/**
* @author : xh.Z
* @email : fisherman0510@163.com
* @Date : 2021/11/18 下午4:21
* @description :
*/
@Data
public class SubtractStockGoodsVO {
//商品编号
private String goodsId;
//库存
private Integer stock;
//等级编码,当不同等级都有自己的库存时,字段必填
private Integer benefitSeq;
}
package com.freemud.sdk.api.assortment.order.entities.promption;
import lombok.Data;
/**
* @author : xh.Z
* @email : fisherman0510@163.com
* @Date : 2021/11/18 下午3:37
* @description :
*/
@Data
public class SubtractStockUserGoodsVO {
//商品编号
private String goodsId;
//库存
private Integer stock;
}
package com.freemud.sdk.api.assortment.order.entities.promption;
import lombok.Data;
import java.util.List;
/**
* All rights Reserved, Designed By www.freemud.com
*
* @version V1.0
* @Title:
* @Package: cn.freemud.entities.vo
* @Descripttion:
* @author: shuhu.hou
* @date: 2019/8/28
* @Copyright: 2017 www.freemud.cn Inc. All rights reserved.
* 注意:本内容仅限于上海非码科技内部传阅,禁止外泄以及用于其他的商业目.
*/
@Data
public class SubtractStockVO {
//活动编码
private String activityCode;
private Integer activityStock;
//活动类型
private Integer activityType;
//商品库存扣除列表
private List<SubtractStockGoodsVO> goodsStock;
/**
* 用户商品库存扣减集合
*/
private List<SubtractStockUserGoodsVO> userGoodsStock;
}
package com.freemud.sdk.api.assortment.order.request.order; package com.freemud.sdk.api.assortment.order.request.order;
import com.freemud.application.sdk.api.promotioncenter.request.promotion.ActivityUpdateStockRequest;
import com.freemud.sdk.api.assortment.order.config.BaseConfig; import com.freemud.sdk.api.assortment.order.config.BaseConfig;
import com.freemud.sdk.api.assortment.order.entities.promption.ActivityUpdateStockRequest;
import lombok.Data; import lombok.Data;
import java.util.List; import java.util.List;
......
...@@ -2,8 +2,8 @@ package com.freemud.sdk.api.assortment.order.request.order; ...@@ -2,8 +2,8 @@ package com.freemud.sdk.api.assortment.order.request.order;
import com.freemud.application.sdk.api.ordercenter.enums.OrderClientType; import com.freemud.application.sdk.api.ordercenter.enums.OrderClientType;
import com.freemud.application.sdk.api.ordercenter.request.OrderExtendedReq; import com.freemud.application.sdk.api.ordercenter.request.OrderExtendedReq;
import com.freemud.application.sdk.api.promotioncenter.request.promotion.ActivityUpdateStockRequest;
import com.freemud.sdk.api.assortment.order.config.BaseConfig; import com.freemud.sdk.api.assortment.order.config.BaseConfig;
import com.freemud.sdk.api.assortment.order.entities.promption.ActivityUpdateStockRequest;
import com.freemud.sdk.api.assortment.order.enums.*; import com.freemud.sdk.api.assortment.order.enums.*;
import lombok.Data; import lombok.Data;
......
package com.freemud.sdk.api.assortment.order.request.order; package com.freemud.sdk.api.assortment.order.request.order;
import com.freemud.application.sdk.api.ordercenter.request.create.OrderTaskReq;
import com.freemud.application.sdk.api.promotioncenter.request.promotion.ActivityUpdateStockRequest;
import com.freemud.application.sdk.api.ordercenter.request.OrderExtendedReq; import com.freemud.application.sdk.api.ordercenter.request.OrderExtendedReq;
import com.freemud.application.sdk.api.ordercenter.request.create.OrderTaskReq;
import com.freemud.sdk.api.assortment.order.config.BaseConfig; import com.freemud.sdk.api.assortment.order.config.BaseConfig;
import com.freemud.sdk.api.assortment.order.enums.*; import com.freemud.sdk.api.assortment.order.entities.promption.ActivityUpdateStockRequest;
import lombok.Builder; import com.freemud.sdk.api.assortment.order.enums.OldOrderStatus;
import com.freemud.sdk.api.assortment.order.enums.PayStatus;
import com.freemud.sdk.api.assortment.order.enums.QueryOrderType;
import com.freemud.sdk.api.assortment.order.enums.QueryPayType;
import lombok.Data; import lombok.Data;
import java.util.Date; import java.util.Date;
......
...@@ -40,7 +40,6 @@ import com.freemud.application.sdk.api.ordercenter.response.orderInfo.QueryByCod ...@@ -40,7 +40,6 @@ import com.freemud.application.sdk.api.ordercenter.response.orderInfo.QueryByCod
import com.freemud.application.sdk.api.ordercenter.service.OrderDownLoadSdkService; import com.freemud.application.sdk.api.ordercenter.service.OrderDownLoadSdkService;
import com.freemud.application.sdk.api.ordercenter.service.OrderSdkService; import com.freemud.application.sdk.api.ordercenter.service.OrderSdkService;
import com.freemud.application.sdk.api.promotioncenter.dto.promotion.DiscountDTO; import com.freemud.application.sdk.api.promotioncenter.dto.promotion.DiscountDTO;
import com.freemud.application.sdk.api.promotioncenter.request.promotion.ActivityUpdateStockRequest;
import com.freemud.application.sdk.api.promotioncenter.request.promotion.CalculationDiscountRequest; import com.freemud.application.sdk.api.promotioncenter.request.promotion.CalculationDiscountRequest;
import com.freemud.application.sdk.api.promotioncenter.response.CalculationDiscountResponseDTO; import com.freemud.application.sdk.api.promotioncenter.response.CalculationDiscountResponseDTO;
import com.freemud.application.sdk.api.promotioncenter.service.PromotionSdkService; import com.freemud.application.sdk.api.promotioncenter.service.PromotionSdkService;
...@@ -62,6 +61,7 @@ import com.freemud.application.sdk.api.structure.service.MessageCenterClient; ...@@ -62,6 +61,7 @@ import com.freemud.application.sdk.api.structure.service.MessageCenterClient;
import com.freemud.sdk.api.assortment.order.adapter.*; import com.freemud.sdk.api.assortment.order.adapter.*;
import com.freemud.sdk.api.assortment.order.constant.CommonConstant; import com.freemud.sdk.api.assortment.order.constant.CommonConstant;
import com.freemud.sdk.api.assortment.order.domain.ResponseCodeConstant; import com.freemud.sdk.api.assortment.order.domain.ResponseCodeConstant;
import com.freemud.sdk.api.assortment.order.entities.promption.ActivityUpdateStockRequest;
import com.freemud.sdk.api.assortment.order.enums.*; import com.freemud.sdk.api.assortment.order.enums.*;
import com.freemud.sdk.api.assortment.order.request.order.CreateOrderRequest; import com.freemud.sdk.api.assortment.order.request.order.CreateOrderRequest;
import com.freemud.sdk.api.assortment.order.request.order.OrderDownloadRequest; import com.freemud.sdk.api.assortment.order.request.order.OrderDownloadRequest;
...@@ -69,6 +69,7 @@ import com.freemud.sdk.api.assortment.order.request.order.*; ...@@ -69,6 +69,7 @@ import com.freemud.sdk.api.assortment.order.request.order.*;
import com.freemud.sdk.api.assortment.order.response.order.*; import com.freemud.sdk.api.assortment.order.response.order.*;
import com.freemud.sdk.api.assortment.order.service.OrderCenterSdkService; import com.freemud.sdk.api.assortment.order.service.OrderCenterSdkService;
import com.freemud.sdk.api.assortment.order.util.AssortOrderLogUtil; import com.freemud.sdk.api.assortment.order.util.AssortOrderLogUtil;
import com.freemud.sdk.api.assortment.order.util.BeanUtil;
import com.freemud.sdk.api.assortment.order.vo.AssortmentOrderProductVo; import com.freemud.sdk.api.assortment.order.vo.AssortmentOrderProductVo;
import com.google.gson.Gson; import com.google.gson.Gson;
import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.collections4.CollectionUtils;
...@@ -185,6 +186,18 @@ public class OrderCenterSdkServiceImpl implements OrderCenterSdkService { ...@@ -185,6 +186,18 @@ public class OrderCenterSdkServiceImpl implements OrderCenterSdkService {
return orderSdkAdapter.convent2NEWOrderInfoReqs(order); return orderSdkAdapter.convent2NEWOrderInfoReqs(order);
} }
/**
* 请使用 订单服务的feign调用
* @param orderBean
* @param products
* @param updateStockRequest
* @param accounts
* @param mqMessageRequest
* @param menuType
* @param openId
* @return
*/
@Deprecated
private BaseOrderResponse updateStockAndScore(OrderBeanV1 orderBean, List<CreateOrderProductRequest> products, ActivityUpdateStockRequest updateStockRequest, private BaseOrderResponse updateStockAndScore(OrderBeanV1 orderBean, List<CreateOrderProductRequest> products, ActivityUpdateStockRequest updateStockRequest,
List<CreateOrderAccountRequest> accounts, MqMessageRequest mqMessageRequest, String menuType, String openId) { List<CreateOrderAccountRequest> accounts, MqMessageRequest mqMessageRequest, String menuType, String openId) {
//TODO 转换获取库存信息,扣减库存 //TODO 转换获取库存信息,扣减库存
...@@ -206,7 +219,8 @@ public class OrderCenterSdkServiceImpl implements OrderCenterSdkService { ...@@ -206,7 +219,8 @@ public class OrderCenterSdkServiceImpl implements OrderCenterSdkService {
// update by miaohui 20201030 for 【ID1018638】【C端服务端】活动库存接口调整对接 // update by miaohui 20201030 for 【ID1018638】【C端服务端】活动库存接口调整对接
// 原逻辑只检测扣减库存不为空时调用,现改为扣减库存不为空或参加活动不为空时调用 // 原逻辑只检测扣减库存不为空时调用,现改为扣减库存不为空或参加活动不为空时调用
if (activityUpdateStockRequest != null && (CollectionUtils.isNotEmpty(activityUpdateStockRequest.getStock()) || CollectionUtils.isNotEmpty(activityUpdateStockRequest.getActivityList()))) { if (activityUpdateStockRequest != null && (CollectionUtils.isNotEmpty(activityUpdateStockRequest.getStock()) || CollectionUtils.isNotEmpty(activityUpdateStockRequest.getActivityList()))) {
BaseResponse activityResponse = promotionSdkService.subtractStock(activityUpdateStockRequest, ""); com.freemud.application.sdk.api.promotioncenter.request.promotion.ActivityUpdateStockRequest req = this.convertSdkBean(activityUpdateStockRequest);
BaseResponse activityResponse = promotionSdkService.subtractStock(req, "");
// ThirdPartyLog.infoConvertJson(System.currentTimeMillis(), System.currentTimeMillis(), // ThirdPartyLog.infoConvertJson(System.currentTimeMillis(), System.currentTimeMillis(),
// "subtractStock", JSONObject.toJSONString(activityUpdateStockRequest), JSONObject.toJSONString(activityResponse)); // "subtractStock", JSONObject.toJSONString(activityUpdateStockRequest), JSONObject.toJSONString(activityResponse));
if (!ObjectUtils.equals(RESPONSE_SUCCESS_STR, activityResponse.getCode())) { if (!ObjectUtils.equals(RESPONSE_SUCCESS_STR, activityResponse.getCode())) {
...@@ -267,6 +281,19 @@ public class OrderCenterSdkServiceImpl implements OrderCenterSdkService { ...@@ -267,6 +281,19 @@ public class OrderCenterSdkServiceImpl implements OrderCenterSdkService {
} }
/** /**
* 注意该方法 只是为了兼容 sdk 的bean
* sdk的bean太老了,有字段没有赋值,但是不影响 这废弃接口调用
* 上层接口需要废除,
* @param activityUpdateStockRequest
* @return
*/
private com.freemud.application.sdk.api.promotioncenter.request.promotion.ActivityUpdateStockRequest convertSdkBean(ActivityUpdateStockRequest activityUpdateStockRequest){
com.freemud.application.sdk.api.promotioncenter.request.promotion.ActivityUpdateStockRequest req = new com.freemud.application.sdk.api.promotioncenter.request.promotion.ActivityUpdateStockRequest();
BeanUtil.convertBean(activityUpdateStockRequest,req);
return req;
}
/**
* 围餐更新库存和积分 * 围餐更新库存和积分
*/ */
private BaseOrderResponse updateWcStockAndScore(OrderBeanV1 orderBean, List<CreateOrderProductRequest> products, ActivityUpdateStockRequest updateStockRequest, private BaseOrderResponse updateWcStockAndScore(OrderBeanV1 orderBean, List<CreateOrderProductRequest> products, ActivityUpdateStockRequest updateStockRequest,
...@@ -276,7 +303,8 @@ public class OrderCenterSdkServiceImpl implements OrderCenterSdkService { ...@@ -276,7 +303,8 @@ public class OrderCenterSdkServiceImpl implements OrderCenterSdkService {
// update by miaohui 20201030 for 【ID1018638】【C端服务端】活动库存接口调整对接 // update by miaohui 20201030 for 【ID1018638】【C端服务端】活动库存接口调整对接
// 原逻辑只检测扣减库存不为空时调用,现改为扣减库存不为空或参加活动不为空时调用 // 原逻辑只检测扣减库存不为空时调用,现改为扣减库存不为空或参加活动不为空时调用
if (activityUpdateStockRequest != null && (CollectionUtils.isNotEmpty(activityUpdateStockRequest.getStock()) || CollectionUtils.isNotEmpty(activityUpdateStockRequest.getActivityList()))) { if (activityUpdateStockRequest != null && (CollectionUtils.isNotEmpty(activityUpdateStockRequest.getStock()) || CollectionUtils.isNotEmpty(activityUpdateStockRequest.getActivityList()))) {
BaseResponse activityResponse = promotionSdkService.subtractStock(activityUpdateStockRequest, ""); com.freemud.application.sdk.api.promotioncenter.request.promotion.ActivityUpdateStockRequest req = this.convertSdkBean(activityUpdateStockRequest);
BaseResponse activityResponse = promotionSdkService.subtractStock(req, "");
ThirdPartyLog.infoConvertJson(System.currentTimeMillis(), System.currentTimeMillis(), ThirdPartyLog.infoConvertJson(System.currentTimeMillis(), System.currentTimeMillis(),
"subtractStock", JSONObject.toJSONString(activityUpdateStockRequest), JSONObject.toJSONString(activityResponse)); "subtractStock", JSONObject.toJSONString(activityUpdateStockRequest), JSONObject.toJSONString(activityResponse));
if (!ObjectUtils.equals(RESPONSE_SUCCESS_STR, activityResponse.getCode())) { if (!ObjectUtils.equals(RESPONSE_SUCCESS_STR, activityResponse.getCode())) {
......
...@@ -19,12 +19,6 @@ import cn.freemud.constant.RedisKeyConstant; ...@@ -19,12 +19,6 @@ import cn.freemud.constant.RedisKeyConstant;
import cn.freemud.constant.ResponseCodeConstant; import cn.freemud.constant.ResponseCodeConstant;
import cn.freemud.entities.bo.CreateOrderBONew; import cn.freemud.entities.bo.CreateOrderBONew;
import cn.freemud.entities.dto.*; import cn.freemud.entities.dto.*;
import cn.freemud.entities.dto.activity.ShareDiscountActivityDto;
import cn.freemud.entities.dto.order.CreateOrderAccountDto;
import cn.freemud.entities.dto.order.CreateOrderProductDto;
import cn.freemud.entities.dto.order.*;
import cn.freemud.entities.dto.pay.*;
import cn.freemud.entities.dto.pay.CombPayResponse;
import cn.freemud.entities.dto.order.CreateOrderOperateDto; import cn.freemud.entities.dto.order.CreateOrderOperateDto;
import cn.freemud.entities.dto.order.CreatePrepayRequestDto; import cn.freemud.entities.dto.order.CreatePrepayRequestDto;
import cn.freemud.entities.dto.pay.OrderPayResponse; import cn.freemud.entities.dto.pay.OrderPayResponse;
...@@ -71,14 +65,14 @@ import com.freemud.application.sdk.api.ordercenter.request.OrderConditionsReq; ...@@ -71,14 +65,14 @@ import com.freemud.application.sdk.api.ordercenter.request.OrderConditionsReq;
import com.freemud.application.sdk.api.ordercenter.request.OrderExtInfoDto; import com.freemud.application.sdk.api.ordercenter.request.OrderExtInfoDto;
import com.freemud.application.sdk.api.ordercenter.request.OrderExtendedReq; import com.freemud.application.sdk.api.ordercenter.request.OrderExtendedReq;
import com.freemud.application.sdk.api.ordercenter.response.BaseDownLoadResponse; import com.freemud.application.sdk.api.ordercenter.response.BaseDownLoadResponse;
import com.freemud.application.sdk.api.ordercenter.response.orderInfo.*;
import com.freemud.application.sdk.api.ordercenter.response.orderInfo.AfterSalesOrderResp; import com.freemud.application.sdk.api.ordercenter.response.orderInfo.AfterSalesOrderResp;
import com.freemud.application.sdk.api.ordercenter.response.orderInfo.OrderInfoReqs; import com.freemud.application.sdk.api.ordercenter.response.orderInfo.OrderInfoReqs;
import com.freemud.application.sdk.api.ordercenter.response.orderInfo.OrderSettlementResp; import com.freemud.application.sdk.api.ordercenter.response.orderInfo.OrderSettlementResp;
import com.freemud.application.sdk.api.promotioncenter.dto.promotion.GoodsStockDTO;
import com.freemud.application.sdk.api.promotioncenter.request.promotion.ActivityUpdateStockRequest;
import com.freemud.sdk.api.assortment.order.constant.OrderRedisKeyConstant; import com.freemud.sdk.api.assortment.order.constant.OrderRedisKeyConstant;
import com.freemud.sdk.api.assortment.order.entities.OrderRefundConfigEntity; import com.freemud.sdk.api.assortment.order.entities.OrderRefundConfigEntity;
import com.freemud.sdk.api.assortment.order.entities.promption.ActivityUpdateStockRequest;
import com.freemud.sdk.api.assortment.order.entities.promption.SubtractStockGoodsVO;
import com.freemud.sdk.api.assortment.order.entities.promption.SubtractStockVO;
import com.freemud.sdk.api.assortment.order.enums.*; import com.freemud.sdk.api.assortment.order.enums.*;
import com.freemud.sdk.api.assortment.order.request.order.*; import com.freemud.sdk.api.assortment.order.request.order.*;
import com.freemud.sdk.api.assortment.order.request.payment.CombPayRequest; import com.freemud.sdk.api.assortment.order.request.payment.CombPayRequest;
...@@ -354,29 +348,9 @@ public class OrderAdapter { ...@@ -354,29 +348,9 @@ public class OrderAdapter {
ActivityUpdateStockRequest activityUpdateStockRequest = this.initActivityUpdateStockRequest(activityDiscountsDtos); ActivityUpdateStockRequest activityUpdateStockRequest = this.initActivityUpdateStockRequest(activityDiscountsDtos);
//设置库存扣减 //设置库存扣减
if (CollectionUtils.isNotEmpty(shoppingCartGoodsDto.getStocks())) { List<SubtractStockVO> stocks = this.getStocks(shoppingCartGoodsDto.getStocks());
List<ActivityUpdateStockRequest.StockBeanDto> stocks = new ArrayList<>();
for (SubtractStockVO stockVO : shoppingCartGoodsDto.getStocks()) {
ActivityUpdateStockRequest.StockBeanDto stockBeanDto = new ActivityUpdateStockRequest.StockBeanDto();
stockBeanDto.setActivityCode(stockVO.getActivityCode());
stockBeanDto.setActivityStock(stockVO.getActivityStock() == null ? 1 : stockVO.getActivityStock());
if (CollectionUtils.isNotEmpty(stockVO.getGoodsStock())) {
List<GoodsStockDTO> goodsStockDTOS = new ArrayList<>();
stockVO.getGoodsStock().forEach(goods -> {
GoodsStockDTO goodsStockDTO = new GoodsStockDTO();
goodsStockDTO.setBenefitSeq(goods.getBenefitSeq());
goodsStockDTO.setGoodsId(goods.getGoodsId());
int stock = goods.getStock() == null ? 1 : goods.getStock();
goodsStockDTO.setStock(stock);
goodsStockDTOS.add(goodsStockDTO);
});
stockBeanDto.setGoodsStock(goodsStockDTOS);
}
stocks.add(stockBeanDto);
}
activityUpdateStockRequest.setStock(stocks); activityUpdateStockRequest.setStock(stocks);
}
createOrderDto.setActivityUpdateStockRequest(activityUpdateStockRequest); createOrderDto.setActivityUpdateStockRequest(activityUpdateStockRequest);
createOrderDto.setPayChannelType(createOrderVo.getPayChannelType()); createOrderDto.setPayChannelType(createOrderVo.getPayChannelType());
...@@ -613,6 +587,38 @@ public class OrderAdapter { ...@@ -613,6 +587,38 @@ public class OrderAdapter {
return createOrderDto; return createOrderDto;
} }
/**
* 提取公共方法
* @param shoppingCartStocks
* @return
*/
private List<SubtractStockVO> getStocks(List<SubtractStockVO> shoppingCartStocks){
List<SubtractStockVO> stocks = new ArrayList<>();
if (CollectionUtils.isNotEmpty(shoppingCartStocks)) {
for (SubtractStockVO stockVO : shoppingCartStocks) {
SubtractStockVO stockBeanDto = new SubtractStockVO();
stockBeanDto.setActivityCode(stockVO.getActivityCode());
stockBeanDto.setActivityStock(stockVO.getActivityStock() == null ? 1 : stockVO.getActivityStock());
if (CollectionUtils.isNotEmpty(stockVO.getGoodsStock())) {
List<SubtractStockGoodsVO> goodsStockDTOS = new ArrayList<>();
stockVO.getGoodsStock().forEach(goods -> {
SubtractStockGoodsVO goodsStockDTO = new SubtractStockGoodsVO();
goodsStockDTO.setBenefitSeq(goods.getBenefitSeq());
goodsStockDTO.setGoodsId(goods.getGoodsId());
int stock = goods.getStock() == null ? 1 : goods.getStock();
goodsStockDTO.setStock(stock);
goodsStockDTOS.add(goodsStockDTO);
});
stockBeanDto.setGoodsStock(goodsStockDTOS);
}
// fisherman 用户限购库存-> 返回促销的值
stockBeanDto.setUserGoodsStock(stockVO.getUserGoodsStock());
stocks.add(stockBeanDto);
}
}
return stocks;
}
public ConfirmOrderDto convent2ConfirmOrderDto(PaysuccessNoticeMessage message) { public ConfirmOrderDto convent2ConfirmOrderDto(PaysuccessNoticeMessage message) {
ConfirmOrderDto confirmOrderDto = new ConfirmOrderDto(); ConfirmOrderDto confirmOrderDto = new ConfirmOrderDto();
confirmOrderDto.setOrderId(message.getTrans_id()); confirmOrderDto.setOrderId(message.getTrans_id());
...@@ -3085,29 +3091,10 @@ public class OrderAdapter { ...@@ -3085,29 +3091,10 @@ public class OrderAdapter {
// update by miaohui 20201030 for 【ID1018638】【C端服务端】活动库存接口调整对接 // update by miaohui 20201030 for 【ID1018638】【C端服务端】活动库存接口调整对接
ActivityUpdateStockRequest activityUpdateStockRequest = this.initActivityUpdateStockRequest(activityDiscountsDtos); ActivityUpdateStockRequest activityUpdateStockRequest = this.initActivityUpdateStockRequest(activityDiscountsDtos);
//设置库存扣减 //设置库存扣减
if (shoppingCartGoodsResponse != null && CollectionUtils.isNotEmpty(shoppingCartGoodsResponse.getStocks())) { List<SubtractStockVO> stocks = this.getStocks(shoppingCartGoodsResponse.getStocks());
List<ActivityUpdateStockRequest.StockBeanDto> stocks = new ArrayList<>();
for (cn.freemud.entities.dto.promotion.SubtractStockVO stockVO : shoppingCartGoodsResponse.getStocks()) {
ActivityUpdateStockRequest.StockBeanDto stockBeanDto = new ActivityUpdateStockRequest.StockBeanDto();
stockBeanDto.setActivityCode(stockVO.getActivityCode());
stockBeanDto.setActivityStock(stockVO.getActivityStock() == null ? 1 : stockVO.getActivityStock());
if (CollectionUtils.isNotEmpty(stockVO.getGoodsStock())) {
List<GoodsStockDTO> goodsStockDTOS = new ArrayList<>();
stockVO.getGoodsStock().forEach(goods -> {
GoodsStockDTO goodsStockDTO = new GoodsStockDTO();
goodsStockDTO.setBenefitSeq(goods.getBenefitSeq());
goodsStockDTO.setGoodsId(goods.getGoodsId());
int stock = goods.getStock() == null ? 1 : goods.getStock();
goodsStockDTO.setStock(stock);
goodsStockDTOS.add(goodsStockDTO);
});
stockBeanDto.setGoodsStock(goodsStockDTOS);
}
stocks.add(stockBeanDto);
}
activityUpdateStockRequest.setStock(stocks); activityUpdateStockRequest.setStock(stocks);
}
sdkUpdateOrderProductInfoRequest.setActivityUpdateStockRequest(activityUpdateStockRequest); sdkUpdateOrderProductInfoRequest.setActivityUpdateStockRequest(activityUpdateStockRequest);
return sdkUpdateOrderProductInfoRequest; return sdkUpdateOrderProductInfoRequest;
} }
......
...@@ -21,9 +21,9 @@ import com.freemud.application.sdk.api.ordercenter.enums.PayChannelType; ...@@ -21,9 +21,9 @@ import com.freemud.application.sdk.api.ordercenter.enums.PayChannelType;
import com.freemud.application.sdk.api.ordercenter.request.OrderExtInfoDto; import com.freemud.application.sdk.api.ordercenter.request.OrderExtInfoDto;
import com.freemud.application.sdk.api.ordercenter.request.OrderExtendedReq; import com.freemud.application.sdk.api.ordercenter.request.OrderExtendedReq;
import com.freemud.application.sdk.api.ordercenter.request.create.*; import com.freemud.application.sdk.api.ordercenter.request.create.*;
import com.freemud.application.sdk.api.promotioncenter.request.promotion.ActivityUpdateStockRequest;
import com.freemud.application.sdk.api.storecenter.response.StoreResponse; import com.freemud.application.sdk.api.storecenter.response.StoreResponse;
import com.freemud.application.sdk.api.util.DateUtil; import com.freemud.application.sdk.api.util.DateUtil;
import com.freemud.sdk.api.assortment.order.entities.promption.ActivityUpdateStockRequest;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import java.util.ArrayList; import java.util.ArrayList;
......
package cn.freemud.entities.dto; package cn.freemud.entities.dto;
import com.freemud.application.sdk.api.promotioncenter.dto.promotion.GoodsStockDTO; import com.freemud.sdk.api.assortment.order.entities.promption.SubtractStockVO;
import com.freemud.application.sdk.api.promotioncenter.request.promotion.ActivityUpdateStockRequest;
import lombok.Data; import lombok.Data;
import java.util.List; import java.util.List;
...@@ -76,7 +75,7 @@ public class ActivityCalculationDiscountResponseDto { ...@@ -76,7 +75,7 @@ public class ActivityCalculationDiscountResponseDto {
/** /**
* 活动集合 * 活动集合
*/ */
List<ActivityUpdateStockRequest.StockBeanDto> stocks; List<SubtractStockVO> stocks;
@Data @Data
public static class ActivityPrompt { public static class ActivityPrompt {
......
package cn.freemud.entities.dto.promotion; package cn.freemud.entities.dto.promotion;
import com.freemud.sdk.api.assortment.order.entities.promption.SubtractStockVO;
import lombok.Data; import lombok.Data;
import java.util.ArrayList; import java.util.ArrayList;
......
package cn.freemud.entities.dto.promotion; package cn.freemud.entities.dto.promotion;
import cn.freemud.entities.dto.shoppingCart.ActivityDiscountsDto; import cn.freemud.entities.dto.shoppingCart.ActivityDiscountsDto;
import cn.freemud.entities.vo.*; import cn.freemud.entities.vo.ActivityClassifyCouponBean;
import cn.freemud.entities.vo.ActivityTip;
import cn.freemud.entities.vo.ShoppingCartCustomerScoreVo;
import com.freemud.sdk.api.assortment.order.entities.promption.SubtractStockVO;
import lombok.Data; import lombok.Data;
import javax.validation.constraints.NotNull; import javax.validation.constraints.NotNull;
......
package cn.freemud.entities.dto.shoppingCart; package cn.freemud.entities.dto.shoppingCart;
import cn.freemud.entities.dto.OrderProductAddInfo;
import cn.freemud.entities.vo.SubtractStockVO;
import com.alibaba.fastjson.JSON;
import lombok.Builder;
import lombok.Data; import lombok.Data;
import org.apache.commons.collections4.CollectionUtils;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
@Data @Data
......
package cn.freemud.entities.dto.shoppingCart; package cn.freemud.entities.dto.shoppingCart;
import cn.freemud.entities.dto.OrderProductAddInfo; import cn.freemud.entities.dto.OrderProductAddInfo;
import cn.freemud.entities.vo.SubtractStockVO;
import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSON;
import com.freemud.sdk.api.assortment.order.entities.promption.SubtractStockVO;
import lombok.Builder; import lombok.Builder;
import lombok.Data; import lombok.Data;
import lombok.NoArgsConstructor; import lombok.NoArgsConstructor;
......
package cn.freemud.entities.vo; package cn.freemud.entities.vo;
import com.freemud.sdk.api.assortment.order.entities.promption.SubtractStockGoodsVO;
import com.freemud.sdk.api.assortment.order.entities.promption.SubtractStockUserGoodsVO;
import lombok.Data; import lombok.Data;
import java.util.List; import java.util.List;
...@@ -15,8 +17,11 @@ import java.util.List; ...@@ -15,8 +17,11 @@ import java.util.List;
* @date: 2019/8/28 * @date: 2019/8/28
* @Copyright: 2017 www.freemud.cn Inc. All rights reserved. * @Copyright: 2017 www.freemud.cn Inc. All rights reserved.
* 注意:本内容仅限于上海非码科技内部传阅,禁止外泄以及用于其他的商业目. * 注意:本内容仅限于上海非码科技内部传阅,禁止外泄以及用于其他的商业目.
* 该类后期 删除,禁止再使用, 请使用下面的类
* @see com.freemud.sdk.api.assortment.order.entities.promption.SubtractStockVO
*/ */
@Data @Data
@Deprecated
public class SubtractStockVO { public class SubtractStockVO {
//活动编码 //活动编码
private String activityCode; private String activityCode;
...@@ -26,13 +31,9 @@ public class SubtractStockVO { ...@@ -26,13 +31,9 @@ public class SubtractStockVO {
//商品库存扣除列表 //商品库存扣除列表
private List<SubtractStockGoodsVO> goodsStock; private List<SubtractStockGoodsVO> goodsStock;
@Data /**
public static class SubtractStockGoodsVO { * 用户商品库存扣减集合
//商品编号 */
private String goodsId; private List<SubtractStockUserGoodsVO> userGoodsStock;
//库存
private Integer stock;
//等级编码,当不同等级都有自己的库存时,字段必填
private Integer benefitSeq;
}
} }
...@@ -27,6 +27,7 @@ public enum ActivityTypeEnum { ...@@ -27,6 +27,7 @@ public enum ActivityTypeEnum {
TYPE_21(21, "单品折扣"), TYPE_21(21, "单品折扣"),
TYPE_22(22, "单品立减"), TYPE_22(22, "单品立减"),
TYPE_27(27, "会员价优惠"), TYPE_27(27, "会员价优惠"),
TYPE_29(29, "商品活动"),
/** /**
* 优惠券 * 优惠券
*/ */
......
...@@ -10,6 +10,7 @@ import cn.freemud.service.business.OrderBusinessService; ...@@ -10,6 +10,7 @@ import cn.freemud.service.business.OrderBusinessService;
import cn.freemud.service.impl.OrderQueueService; import cn.freemud.service.impl.OrderQueueService;
import cn.freemud.service.thirdparty.CustomerApplicationClient; import cn.freemud.service.thirdparty.CustomerApplicationClient;
import cn.freemud.service.thirdparty.CustomerClient; import cn.freemud.service.thirdparty.CustomerClient;
import cn.freemud.service.thirdparty.PromotionDiscountClient;
import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.freemud.application.sdk.api.base.BaseResponse; import com.freemud.application.sdk.api.base.BaseResponse;
...@@ -30,7 +31,7 @@ import com.freemud.application.sdk.api.ordercenter.response.OrderBaseResp; ...@@ -30,7 +31,7 @@ import com.freemud.application.sdk.api.ordercenter.response.OrderBaseResp;
import com.freemud.application.sdk.api.ordercenter.response.PaySuccessResp; import com.freemud.application.sdk.api.ordercenter.response.PaySuccessResp;
import com.freemud.application.sdk.api.ordercenter.response.orderInfo.OrderInfoReqs; import com.freemud.application.sdk.api.ordercenter.response.orderInfo.OrderInfoReqs;
import com.freemud.application.sdk.api.ordercenter.service.OrderSdkService; import com.freemud.application.sdk.api.ordercenter.service.OrderSdkService;
import com.freemud.application.sdk.api.promotioncenter.request.promotion.ActivityUpdateStockRequest; import com.freemud.application.sdk.api.promotioncenter.response.PromotionResponseDTO;
import com.freemud.application.sdk.api.promotioncenter.service.PromotionSdkService; import com.freemud.application.sdk.api.promotioncenter.service.PromotionSdkService;
import com.freemud.application.sdk.api.stockapi.request.UpdateStocksRequest; import com.freemud.application.sdk.api.stockapi.request.UpdateStocksRequest;
import com.freemud.application.sdk.api.stockapi.service.StockSdkService; import com.freemud.application.sdk.api.stockapi.service.StockSdkService;
...@@ -42,6 +43,7 @@ import com.freemud.application.sdk.api.storecenter.service.StoreCenterService; ...@@ -42,6 +43,7 @@ import com.freemud.application.sdk.api.storecenter.service.StoreCenterService;
import com.freemud.sdk.api.assortment.order.adapter.OrderSdkAdapter; import com.freemud.sdk.api.assortment.order.adapter.OrderSdkAdapter;
import com.freemud.sdk.api.assortment.order.constant.CommonConstant; import com.freemud.sdk.api.assortment.order.constant.CommonConstant;
import com.freemud.sdk.api.assortment.order.domain.ResponseCodeConstant; import com.freemud.sdk.api.assortment.order.domain.ResponseCodeConstant;
import com.freemud.sdk.api.assortment.order.entities.promption.ActivityUpdateStockRequest;
import com.freemud.sdk.api.assortment.order.enums.*; import com.freemud.sdk.api.assortment.order.enums.*;
import com.freemud.sdk.api.assortment.order.request.order.*; import com.freemud.sdk.api.assortment.order.request.order.*;
import com.freemud.sdk.api.assortment.order.response.order.BaseOrderResponse; import com.freemud.sdk.api.assortment.order.response.order.BaseOrderResponse;
...@@ -100,6 +102,9 @@ public class OrderBusinessServiceImpl implements OrderBusinessService { ...@@ -100,6 +102,9 @@ public class OrderBusinessServiceImpl implements OrderBusinessService {
@Value("${avoid.version.upgrade.config:}") @Value("${avoid.version.upgrade.config:}")
private String avoidVersionUpgradeConfig; private String avoidVersionUpgradeConfig;
@Autowired
private PromotionDiscountClient promotionDiscountClient;
...@@ -280,15 +285,16 @@ public class OrderBusinessServiceImpl implements OrderBusinessService { ...@@ -280,15 +285,16 @@ public class OrderBusinessServiceImpl implements OrderBusinessService {
// update by miaohui 20201030 for 【ID1018638】【C端服务端】活动库存接口调整对接 // update by miaohui 20201030 for 【ID1018638】【C端服务端】活动库存接口调整对接
// 原逻辑只检测扣减库存不为空时调用,现改为扣减库存不为空或参加活动不为空时调用 // 原逻辑只检测扣减库存不为空时调用,现改为扣减库存不为空或参加活动不为空时调用
if (activityUpdateStockRequest != null && (CollectionUtils.isNotEmpty(activityUpdateStockRequest.getStock()) || CollectionUtils.isNotEmpty(activityUpdateStockRequest.getActivityList()))) { if (activityUpdateStockRequest != null && (CollectionUtils.isNotEmpty(activityUpdateStockRequest.getStock()) || CollectionUtils.isNotEmpty(activityUpdateStockRequest.getActivityList()))) {
BaseResponse activityResponse = promotionSdkService.subtractStock(activityUpdateStockRequest, ""); // BaseResponse activityResponse = promotionSdkService.subtractStock(activityUpdateStockRequest, "");
if (!ObjectUtils.equals(RESPONSE_SUCCESS_STR, activityResponse.getCode())) { PromotionResponseDTO activityResponse = promotionDiscountClient.subtractStock(activityUpdateStockRequest);
if (!ObjectUtils.equals(RESPONSE_SUCCESS_STR, activityResponse.getStatusCode())) {
//TODO 失败取消订单,异步冲正库存 //TODO 失败取消订单,异步冲正库存
CancelOrderRequest cancelOrderRequest = orderSdkAdapter.convent2CancelOrderRequest(orderBean.getOid(), orderBean.getCompanyId(), CancelOrderRequest cancelOrderRequest = orderSdkAdapter.convent2CancelOrderRequest(orderBean.getOid(), orderBean.getCompanyId(),
AfterSalesType.SYSTEM_CANCEL, "活动库存不足", "", null); AfterSalesType.SYSTEM_CANCEL, "活动库存不足", "", null);
orderCancel(cancelOrderRequest); orderCancel(cancelOrderRequest);
//失败异步冲正库存,取消订单 //失败异步冲正库存,取消订单
orderQueueService.backOrdersStatusChange(orderBean.getOid(),orderBean.getStatus()); orderQueueService.backOrdersStatusChange(orderBean.getOid(),orderBean.getStatus());
return BaseOrderResponse.getErrorBaseOrderResponse(activityResponse.getCode(), "活动库存不足"); return BaseOrderResponse.getErrorBaseOrderResponse(activityResponse.getStatusCode(), "活动库存不足");
} }
} }
......
...@@ -54,6 +54,7 @@ import com.freemud.application.sdk.api.storecenter.request.StoreInfoRequest; ...@@ -54,6 +54,7 @@ import com.freemud.application.sdk.api.storecenter.request.StoreInfoRequest;
import com.freemud.application.sdk.api.storecenter.response.StoreResponse; import com.freemud.application.sdk.api.storecenter.response.StoreResponse;
import com.freemud.application.sdk.api.storecenter.service.StoreCenterService; import com.freemud.application.sdk.api.storecenter.service.StoreCenterService;
import com.freemud.sdk.api.assortment.order.adapter.OrderSdkAdapter; import com.freemud.sdk.api.assortment.order.adapter.OrderSdkAdapter;
import com.freemud.sdk.api.assortment.order.entities.promption.SubtractStockVO;
import com.freemud.sdk.api.assortment.order.request.order.CancelOrderRequest; import com.freemud.sdk.api.assortment.order.request.order.CancelOrderRequest;
import com.freemud.sdk.api.assortment.order.request.order.OrderEditRequest; import com.freemud.sdk.api.assortment.order.request.order.OrderEditRequest;
import com.freemud.sdk.api.assortment.order.request.order.QueryRelatedOrderByCodeRequest; import com.freemud.sdk.api.assortment.order.request.order.QueryRelatedOrderByCodeRequest;
......
...@@ -25,8 +25,8 @@ import cn.freemud.entities.dto.product.ProductInfo; ...@@ -25,8 +25,8 @@ import cn.freemud.entities.dto.product.ProductInfo;
import cn.freemud.entities.dto.product.ValidateProductInfosDto; import cn.freemud.entities.dto.product.ValidateProductInfosDto;
import cn.freemud.entities.dto.promotion.CalculationDiscountGoodsDto; import cn.freemud.entities.dto.promotion.CalculationDiscountGoodsDto;
import cn.freemud.entities.dto.promotion.CalculationDiscountRequestDto; import cn.freemud.entities.dto.promotion.CalculationDiscountRequestDto;
import cn.freemud.entities.live.WeChatReportVO;
import cn.freemud.entities.dto.store.StoreMixResponseDto; import cn.freemud.entities.dto.store.StoreMixResponseDto;
import cn.freemud.entities.live.WeChatReportVO;
import cn.freemud.entities.vo.*; import cn.freemud.entities.vo.*;
import cn.freemud.enums.*; import cn.freemud.enums.*;
import cn.freemud.handler.WeChatLiveMsgHandle; import cn.freemud.handler.WeChatLiveMsgHandle;
...@@ -36,26 +36,18 @@ import cn.freemud.redis.RedisCache; ...@@ -36,26 +36,18 @@ import cn.freemud.redis.RedisCache;
import cn.freemud.service.CouponService; import cn.freemud.service.CouponService;
import cn.freemud.service.OrderFactoryService; import cn.freemud.service.OrderFactoryService;
import cn.freemud.service.business.OrderBusinessService; import cn.freemud.service.business.OrderBusinessService;
import cn.freemud.service.thirdparty.PaymentNewClient;
import cn.freemud.service.thirdparty.CouponOnlineClient; import cn.freemud.service.thirdparty.CouponOnlineClient;
import cn.freemud.service.thirdparty.PaymentNewClient;
import cn.freemud.service.thirdparty.PromotionDiscountClient; import cn.freemud.service.thirdparty.PromotionDiscountClient;
import cn.freemud.service.thirdparty.StoreItemClient; import cn.freemud.service.thirdparty.StoreItemClient;
import cn.freemud.utils.AppLogUtil; import cn.freemud.utils.AppLogUtil;
import cn.freemud.utils.ResponseUtil; import cn.freemud.utils.ResponseUtil;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.freemud.api.assortment.datamanager.entity.db.AssortmentOpenPlatformIappWxappStore; import com.freemud.api.assortment.datamanager.entity.db.AssortmentOpenPlatformIappWxappStore;
import com.freemud.api.assortment.datamanager.entity.db.AssortmentOpenPlatformPartnerConfig; import com.freemud.api.assortment.datamanager.entity.db.AssortmentOpenPlatformPartnerConfig;
import com.freemud.api.assortment.datamanager.entity.vo.AssortmentCustomerInfoVo; import com.freemud.api.assortment.datamanager.entity.vo.AssortmentCustomerInfoVo;
import com.freemud.api.assortment.datamanager.manager.AssortmentOpenPlatformIappWxappStoreManager; import com.freemud.api.assortment.datamanager.manager.AssortmentOpenPlatformIappWxappStoreManager;
import com.freemud.api.assortment.datamanager.manager.AssortmentOpenPlatformPartnerConfigManager; import com.freemud.api.assortment.datamanager.manager.AssortmentOpenPlatformPartnerConfigManager;
import com.freemud.application.sdk.api.base.SDKCommonBaseContextWare;
import com.freemud.application.sdk.api.couponcenter.online.domain.ActiveDetailVO;
import com.freemud.application.sdk.api.couponcenter.online.domain.AppKeyVO;
import com.freemud.application.sdk.api.couponcenter.online.request.ActiveBatchQueryRequest;
import com.freemud.application.sdk.api.couponcenter.online.request.PartnerRequest;
import com.freemud.application.sdk.api.couponcenter.online.service.FMActiveSdkService;
import com.freemud.application.sdk.api.constant.ResponseResultEnum;
import com.freemud.application.sdk.api.log.LogThreadLocal; import com.freemud.application.sdk.api.log.LogThreadLocal;
import com.freemud.application.sdk.api.log.ThirdPartyLog; import com.freemud.application.sdk.api.log.ThirdPartyLog;
import com.freemud.application.sdk.api.ordercenter.entities.v1.OrderBeanV1; import com.freemud.application.sdk.api.ordercenter.entities.v1.OrderBeanV1;
...@@ -65,7 +57,6 @@ import com.freemud.application.sdk.api.ordercenter.enums.OrderType; ...@@ -65,7 +57,6 @@ import com.freemud.application.sdk.api.ordercenter.enums.OrderType;
import com.freemud.application.sdk.api.ordercenter.enums.*; import com.freemud.application.sdk.api.ordercenter.enums.*;
import com.freemud.application.sdk.api.ordercenter.request.OrderChangeStateReq; import com.freemud.application.sdk.api.ordercenter.request.OrderChangeStateReq;
import com.freemud.application.sdk.api.ordercenter.request.OrderExtInfoDto; import com.freemud.application.sdk.api.ordercenter.request.OrderExtInfoDto;
import com.freemud.application.sdk.api.ordercenter.request.UpdateOrderReq;
import com.freemud.application.sdk.api.ordercenter.request.create.CreateOrderRequest; import com.freemud.application.sdk.api.ordercenter.request.create.CreateOrderRequest;
import com.freemud.application.sdk.api.ordercenter.request.create.DeliveryContactInfoCreateReq; import com.freemud.application.sdk.api.ordercenter.request.create.DeliveryContactInfoCreateReq;
import com.freemud.application.sdk.api.ordercenter.request.create.OrderItemCreateReq; import com.freemud.application.sdk.api.ordercenter.request.create.OrderItemCreateReq;
...@@ -75,15 +66,12 @@ import com.freemud.application.sdk.api.ordercenter.response.orderInfo.OrderInfoR ...@@ -75,15 +66,12 @@ import com.freemud.application.sdk.api.ordercenter.response.orderInfo.OrderInfoR
import com.freemud.application.sdk.api.ordercenter.response.orderInfo.OrderItemResp; import com.freemud.application.sdk.api.ordercenter.response.orderInfo.OrderItemResp;
import com.freemud.application.sdk.api.ordercenter.service.OrderSdkService; import com.freemud.application.sdk.api.ordercenter.service.OrderSdkService;
import com.freemud.application.sdk.api.productcenter.service.MenuService; import com.freemud.application.sdk.api.productcenter.service.MenuService;
import com.freemud.application.sdk.api.promotioncenter.request.promotion.ActivityUpdateStockRequest;
import com.freemud.application.sdk.api.promotioncenter.response.PromotionResponseDTO; import com.freemud.application.sdk.api.promotioncenter.response.PromotionResponseDTO;
import com.freemud.application.sdk.api.stockapi.request.UpdateStocksRequest; import com.freemud.application.sdk.api.stockapi.request.UpdateStocksRequest;
import com.freemud.application.sdk.api.stockapi.service.StockSdkService; import com.freemud.application.sdk.api.stockapi.service.StockSdkService;
import com.freemud.application.sdk.api.storecenter.request.vo.GetOrgTreeListRequest;
import com.freemud.application.sdk.api.storecenter.request.StoreInfoRequest;
import com.freemud.application.sdk.api.storecenter.response.StoreResponse;
import com.freemud.application.sdk.api.storecenter.service.StoreCenterService;
import com.freemud.sdk.api.assortment.order.adapter.OrderSdkAdapter; import com.freemud.sdk.api.assortment.order.adapter.OrderSdkAdapter;
import com.freemud.sdk.api.assortment.order.entities.promption.ActivityUpdateStockRequest;
import com.freemud.sdk.api.assortment.order.entities.promption.SubtractStockVO;
import com.freemud.sdk.api.assortment.order.enums.StockChangeType; import com.freemud.sdk.api.assortment.order.enums.StockChangeType;
import com.freemud.sdk.api.assortment.order.request.order.*; import com.freemud.sdk.api.assortment.order.request.order.*;
import com.freemud.sdk.api.assortment.order.response.order.BaseOrderResponse; import com.freemud.sdk.api.assortment.order.response.order.BaseOrderResponse;
...@@ -382,7 +370,7 @@ public class SellCouponOrderServiceImpl implements OrderFactoryService { ...@@ -382,7 +370,7 @@ public class SellCouponOrderServiceImpl implements OrderFactoryService {
CreateOrderRequest createOrderRequest = (CreateOrderRequest) createOrderRequestResponse.getResult(); CreateOrderRequest createOrderRequest = (CreateOrderRequest) createOrderRequestResponse.getResult();
//标准化平台虚拟商品特价活动计算,不包含蜜雪APP买虚拟商品 //标准化平台虚拟商品特价活动计算,不包含蜜雪APP买虚拟商品
List<ActivityUpdateStockRequest.StockBeanDto> stockBeanDtos = calculationDiscount(partnerId, storeId, userLoginInfoDto.getMemberId(), productInfosDto.getData().getProducts().get(0), createOrderRequest); List<SubtractStockVO> stockBeanDtos = calculationDiscount(partnerId, storeId, userLoginInfoDto.getMemberId(), productInfosDto.getData().getProducts().get(0), createOrderRequest);
OrderBaseResp<OrderInfoReqs> orderInfoReqsBaseResponse = orderSdkService.createOrder(createOrderRequest, trackingNo); OrderBaseResp<OrderInfoReqs> orderInfoReqsBaseResponse = orderSdkService.createOrder(createOrderRequest, trackingNo);
CreateOrderResponse createOrderResponse = orderSdkAdapter.convent2NEWOrderInfoReqs(orderInfoReqsBaseResponse); CreateOrderResponse createOrderResponse = orderSdkAdapter.convent2NEWOrderInfoReqs(orderInfoReqsBaseResponse);
...@@ -1095,7 +1083,7 @@ public class SellCouponOrderServiceImpl implements OrderFactoryService { ...@@ -1095,7 +1083,7 @@ public class SellCouponOrderServiceImpl implements OrderFactoryService {
/** /**
* 查询促销优惠,赋值订单金额,商品优惠后金额,优惠记录 * 查询促销优惠,赋值订单金额,商品优惠后金额,优惠记录
*/ */
private List<ActivityUpdateStockRequest.StockBeanDto> calculationDiscount(String partnerId,String storeId,String userId,ProductInfo products,CreateOrderRequest createOrderRequest){ private List<SubtractStockVO> calculationDiscount(String partnerId, String storeId, String userId, ProductInfo products, CreateOrderRequest createOrderRequest){
CalculationDiscountRequestDto calculationDiscountRequestDto = new CalculationDiscountRequestDto(); CalculationDiscountRequestDto calculationDiscountRequestDto = new CalculationDiscountRequestDto();
calculationDiscountRequestDto.setStoreId(storeId); calculationDiscountRequestDto.setStoreId(storeId);
calculationDiscountRequestDto.setPartnerCode(partnerId); calculationDiscountRequestDto.setPartnerCode(partnerId);
...@@ -1109,12 +1097,16 @@ public class SellCouponOrderServiceImpl implements OrderFactoryService { ...@@ -1109,12 +1097,16 @@ public class SellCouponOrderServiceImpl implements OrderFactoryService {
discountGoodsDtoList.add(discountGoodsDto); discountGoodsDtoList.add(discountGoodsDto);
calculationDiscountRequestDto.setGoods(discountGoodsDtoList); calculationDiscountRequestDto.setGoods(discountGoodsDtoList);
//买券包调促销指定只计算限时特价 [2,21] //买券包调促销指定只计算限时特价 [2,21,29] 29.商品限购
calculationDiscountRequestDto.setActivityTypes(Arrays.asList(2,21)); calculationDiscountRequestDto.setActivityTypes(Arrays.asList(ActivityTypeEnum.TYPE_2.getCode(), ActivityTypeEnum.TYPE_21.getCode(), ActivityTypeEnum.TYPE_29.getCode()));
calculationDiscountRequestDto.setVer(1); calculationDiscountRequestDto.setVer(1);
calculationDiscountRequestDto.setApplication("isaas"); calculationDiscountRequestDto.setApplication("isaas");
ActivityCalculationDiscountResponseDto activityCalculationDiscountResponseDto = promotionDiscountClient.calculationDiscountSharing(calculationDiscountRequestDto); ActivityCalculationDiscountResponseDto activityCalculationDiscountResponseDto = promotionDiscountClient.calculationDiscountSharing(calculationDiscountRequestDto);
if (!ResponseResult.SUCCESS.getCode().equals(activityCalculationDiscountResponseDto.getStatusCode()) || activityCalculationDiscountResponseDto.getResult() == null) { if (!ResponseResult.SUCCESS.getCode().equals(activityCalculationDiscountResponseDto.getStatusCode()) || activityCalculationDiscountResponseDto.getResult() == null) {
// fisherman 商品限购虚拟券 服务端拦截校验
if (Objects.equals(activityCalculationDiscountResponseDto.getStatusCode(),"80033")) {
throw new ServiceException(activityCalculationDiscountResponseDto.getStatusCode(),activityCalculationDiscountResponseDto.getMsg());
}
return null; return null;
} }
ActivityCalculationDiscountResponseDto.CalculationDiscountResult result = activityCalculationDiscountResponseDto.getResult(); ActivityCalculationDiscountResponseDto.CalculationDiscountResult result = activityCalculationDiscountResponseDto.getResult();
...@@ -1125,7 +1117,7 @@ public class SellCouponOrderServiceImpl implements OrderFactoryService { ...@@ -1125,7 +1117,7 @@ public class SellCouponOrderServiceImpl implements OrderFactoryService {
for (ActivityCalculationDiscountResponseDto.CalculationDiscountResult.Goods good : result.getGoods()){ for (ActivityCalculationDiscountResponseDto.CalculationDiscountResult.Goods good : result.getGoods()){
if(good.getGoodsId().equals(products.getPid())){ if(good.getGoodsId().equals(products.getPid())){
if(CollectionUtils.isEmpty(good.getDiscounts())){ if(CollectionUtils.isEmpty(good.getDiscounts())){
return null; return result.getStocks();
} }
List<ActivityCalculationDiscountResponseDto.CalculationDiscountResult.Goods.GoodsDiscount> discounts = good.getDiscounts(); List<ActivityCalculationDiscountResponseDto.CalculationDiscountResult.Goods.GoodsDiscount> discounts = good.getDiscounts();
OrderSettlementCreateReq orderSettlementCreateReq = new OrderSettlementCreateReq(); OrderSettlementCreateReq orderSettlementCreateReq = new OrderSettlementCreateReq();
......
...@@ -21,6 +21,7 @@ import cn.freemud.enums.ActivityGroupStatusEnum; ...@@ -21,6 +21,7 @@ import cn.freemud.enums.ActivityGroupStatusEnum;
import cn.freemud.enums.ResponseResult; import cn.freemud.enums.ResponseResult;
import cn.freemud.manager.SpellGroupOrderDataManager; import cn.freemud.manager.SpellGroupOrderDataManager;
import cn.freemud.service.SpellGroupOrderService; import cn.freemud.service.SpellGroupOrderService;
import cn.freemud.service.thirdparty.PromotionDiscountClient;
import cn.freemud.utils.ResponseUtil; import cn.freemud.utils.ResponseUtil;
import com.freemud.api.assortment.datamanager.entity.vo.AssortmentCustomerInfoVo; import com.freemud.api.assortment.datamanager.entity.vo.AssortmentCustomerInfoVo;
import com.freemud.api.assortment.datamanager.manager.customer.AssortmentCustomerInfoManager; import com.freemud.api.assortment.datamanager.manager.customer.AssortmentCustomerInfoManager;
...@@ -33,12 +34,13 @@ import com.freemud.application.sdk.api.ordercenter.request.create.OrderTaskReq; ...@@ -33,12 +34,13 @@ import com.freemud.application.sdk.api.ordercenter.request.create.OrderTaskReq;
import com.freemud.application.sdk.api.ordercenter.response.OrderBaseResp; import com.freemud.application.sdk.api.ordercenter.response.OrderBaseResp;
import com.freemud.application.sdk.api.ordercenter.response.orderInfo.OrderInfoReqs; import com.freemud.application.sdk.api.ordercenter.response.orderInfo.OrderInfoReqs;
import com.freemud.application.sdk.api.ordercenter.service.OrderSdkService; import com.freemud.application.sdk.api.ordercenter.service.OrderSdkService;
import com.freemud.application.sdk.api.promotioncenter.request.promotion.ActivityUpdateStockRequest; import com.freemud.application.sdk.api.promotioncenter.response.PromotionResponseDTO;
import com.freemud.application.sdk.api.promotioncenter.service.PromotionSdkService; import com.freemud.application.sdk.api.promotioncenter.service.PromotionSdkService;
import com.freemud.application.sdk.api.storecenter.request.StoreInfoRequest; import com.freemud.application.sdk.api.storecenter.request.StoreInfoRequest;
import com.freemud.application.sdk.api.storecenter.response.StoreResponse; import com.freemud.application.sdk.api.storecenter.response.StoreResponse;
import com.freemud.application.sdk.api.storecenter.service.StoreCenterService; import com.freemud.application.sdk.api.storecenter.service.StoreCenterService;
import com.freemud.sdk.api.assortment.order.adapter.OrderSdkAdapter; import com.freemud.sdk.api.assortment.order.adapter.OrderSdkAdapter;
import com.freemud.sdk.api.assortment.order.entities.promption.ActivityUpdateStockRequest;
import com.freemud.sdk.api.assortment.order.enums.AutoOrderConfigTime; import com.freemud.sdk.api.assortment.order.enums.AutoOrderConfigTime;
import com.freemud.sdk.api.assortment.order.request.order.CancelOrderRequest; import com.freemud.sdk.api.assortment.order.request.order.CancelOrderRequest;
import com.freemud.sdk.api.assortment.order.request.order.OrderStatusChangeRequestDto; import com.freemud.sdk.api.assortment.order.request.order.OrderStatusChangeRequestDto;
...@@ -107,6 +109,9 @@ public class SpellGroupOrderServiceImpl implements SpellGroupOrderService { ...@@ -107,6 +109,9 @@ public class SpellGroupOrderServiceImpl implements SpellGroupOrderService {
@Value("${program.backorders_notify_activity_exchange}") @Value("${program.backorders_notify_activity_exchange}")
private String backOrdersNotifyActivityExchange; private String backOrdersNotifyActivityExchange;
@Autowired
private PromotionDiscountClient promotionDiscountClient;
@Override @Override
public BaseResponse createSpellGroupOrder(CreateSpellGroupOrderReq createSpellGroupOrderReq) { public BaseResponse createSpellGroupOrder(CreateSpellGroupOrderReq createSpellGroupOrderReq) {
String trackingNo = LogThreadLocal.getTrackingNo(); String trackingNo = LogThreadLocal.getTrackingNo();
...@@ -226,17 +231,17 @@ public class SpellGroupOrderServiceImpl implements SpellGroupOrderService { ...@@ -226,17 +231,17 @@ public class SpellGroupOrderServiceImpl implements SpellGroupOrderService {
private BaseOrderResponse updateActivityStock(OrderBeanV1 orderBean, CreateSpellGroupOrderDto createSpellGroupOrderDto) { private BaseOrderResponse updateActivityStock(OrderBeanV1 orderBean, CreateSpellGroupOrderDto createSpellGroupOrderDto) {
ActivityUpdateStockRequest activityUpdateStockRequest = spellGroupOrderAdapter.convert2ActivityUpdateStockRequest(orderBean, createSpellGroupOrderDto); ActivityUpdateStockRequest activityUpdateStockRequest = spellGroupOrderAdapter.convert2ActivityUpdateStockRequest(orderBean, createSpellGroupOrderDto);
if (activityUpdateStockRequest != null && (CollectionUtils.isNotEmpty(activityUpdateStockRequest.getStock()) || CollectionUtils.isNotEmpty(activityUpdateStockRequest.getActivityList()))) { if (activityUpdateStockRequest != null && (CollectionUtils.isNotEmpty(activityUpdateStockRequest.getStock()) || CollectionUtils.isNotEmpty(activityUpdateStockRequest.getActivityList()))) {
com.freemud.application.sdk.api.base.BaseResponse activityResponse = promotionSdkService.subtractStock(activityUpdateStockRequest, ""); PromotionResponseDTO activityResponse = promotionDiscountClient.subtractStock(activityUpdateStockRequest);
// ThirdPartyLog.infoConvertJson(System.currentTimeMillis(), System.currentTimeMillis(), // ThirdPartyLog.infoConvertJson(System.currentTimeMillis(), System.currentTimeMillis(),
// "subtractStock", JSONObject.toJSONString(activityUpdateStockRequest), JSONObject.toJSONString(activityResponse)); // "subtractStock", JSONObject.toJSONString(activityUpdateStockRequest), JSONObject.toJSONString(activityResponse));
if (!ObjectUtils.equals(RESPONSE_SUCCESS_STR, activityResponse.getCode())) { if (!ObjectUtils.equals(RESPONSE_SUCCESS_STR, activityResponse.getStatusCode())) {
//TODO 失败取消订单,异步冲正库存 //TODO 失败取消订单,异步冲正库存
CancelOrderRequest cancelOrderRequest = orderSdkAdapter.convent2CancelOrderRequest(orderBean.getOid(), orderBean.getCompanyId(), CancelOrderRequest cancelOrderRequest = orderSdkAdapter.convent2CancelOrderRequest(orderBean.getOid(), orderBean.getCompanyId(),
AfterSalesType.SYSTEM_CANCEL, "活动库存不足", "", null); AfterSalesType.SYSTEM_CANCEL, "活动库存不足", "", null);
orderCancel(cancelOrderRequest); orderCancel(cancelOrderRequest);
//失败异步冲正库存,取消订单 //失败异步冲正库存,取消订单
backOrdersNotifyActivity(orderBean, backOrdersChangeOrderStatusConsumerQueue, backOrdersNotifyActivityExchange); backOrdersNotifyActivity(orderBean, backOrdersChangeOrderStatusConsumerQueue, backOrdersNotifyActivityExchange);
return BaseOrderResponse.getErrorBaseOrderResponse(activityResponse.getCode(), "活动库存不足"); return BaseOrderResponse.getErrorBaseOrderResponse(activityResponse.getStatusCode(), "活动库存不足");
} }
} }
return BaseOrderResponse.getErrorBaseOrderResponse(RESPONSE_SUCCESS_STR, ""); return BaseOrderResponse.getErrorBaseOrderResponse(RESPONSE_SUCCESS_STR, "");
......
...@@ -12,21 +12,20 @@ ...@@ -12,21 +12,20 @@
*/ */
package cn.freemud.service.thirdparty; package cn.freemud.service.thirdparty;
import cn.freemud.base.entity.BaseResponse;
import cn.freemud.annotations.LogIgnoreFeign; import cn.freemud.annotations.LogIgnoreFeign;
import cn.freemud.constant.ResponseCodeConstant;
import cn.freemud.constant.ResponseCodeKeyConstant; import cn.freemud.constant.ResponseCodeKeyConstant;
import cn.freemud.entities.dto.ActivityCalculationDiscountRequestDto;
import cn.freemud.entities.dto.ActivityCalculationDiscountResponseDto; import cn.freemud.entities.dto.ActivityCalculationDiscountResponseDto;
import cn.freemud.entities.dto.ActivityQueryRequestDto; import cn.freemud.entities.dto.ActivityQueryRequestDto;
import cn.freemud.entities.dto.activity.ActivityQueryResponseDto; import cn.freemud.entities.dto.activity.ActivityQueryResponseDto;
import cn.freemud.entities.dto.promotion.*; import cn.freemud.entities.dto.promotion.*;
import cn.freemud.entities.vo.QueryGroupHistoryRequest; import cn.freemud.entities.vo.QueryGroupHistoryRequest;
import cn.freemud.entities.vo.QuerySpellGroupRequest; import cn.freemud.entities.vo.QuerySpellGroupRequest;
import com.freemud.application.sdk.api.promotioncenter.request.promotion.ActivityUpdateStockRequest;
import com.freemud.application.sdk.api.promotioncenter.response.PromotionResponseDTO; import com.freemud.application.sdk.api.promotioncenter.response.PromotionResponseDTO;
import com.freemud.sdk.api.assortment.order.entities.promption.ActivityUpdateStockRequest;
import org.springframework.cloud.openfeign.FeignClient; import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
@FeignClient(name = "promotion-service", url = "${saas.activityclient.feign.url}") @FeignClient(name = "promotion-service", url = "${saas.activityclient.feign.url}")
@RequestMapping(produces = {"application/json;charset=UTF-8"}) @RequestMapping(produces = {"application/json;charset=UTF-8"})
......
...@@ -14,7 +14,10 @@ import cn.freemud.entities.dto.product.GroupDetail; ...@@ -14,7 +14,10 @@ import cn.freemud.entities.dto.product.GroupDetail;
import cn.freemud.entities.dto.product.ProductAttributeGroup; import cn.freemud.entities.dto.product.ProductAttributeGroup;
import cn.freemud.entities.dto.product.ProductGroup; import cn.freemud.entities.dto.product.ProductGroup;
import cn.freemud.entities.dto.shoppingCart.ShoppingCartGoodsDto; import cn.freemud.entities.dto.shoppingCart.ShoppingCartGoodsDto;
import cn.freemud.entities.vo.*; import cn.freemud.entities.vo.CreateOrderBaseVo;
import cn.freemud.entities.vo.CreateOrderResponseVo;
import cn.freemud.entities.vo.GetProductsVo;
import cn.freemud.entities.vo.PaysuccessNoticeMessage;
import cn.freemud.enums.OrderSourceType; import cn.freemud.enums.OrderSourceType;
import cn.freemud.enums.ResponseResult; import cn.freemud.enums.ResponseResult;
import cn.freemud.enums.*; import cn.freemud.enums.*;
...@@ -41,16 +44,16 @@ import com.freemud.application.sdk.api.ordercenter.request.create.DeliveryContac ...@@ -41,16 +44,16 @@ import com.freemud.application.sdk.api.ordercenter.request.create.DeliveryContac
import com.freemud.application.sdk.api.ordercenter.request.create.OrderCostCreateReq; import com.freemud.application.sdk.api.ordercenter.request.create.OrderCostCreateReq;
import com.freemud.application.sdk.api.ordercenter.request.create.OrderItemCreateReq; import com.freemud.application.sdk.api.ordercenter.request.create.OrderItemCreateReq;
import com.freemud.application.sdk.api.ordercenter.request.create.OrderSettlementCreateReq; import com.freemud.application.sdk.api.ordercenter.request.create.OrderSettlementCreateReq;
import com.freemud.application.sdk.api.promotioncenter.dto.promotion.GoodsStockDTO;
import com.freemud.application.sdk.api.promotioncenter.request.promotion.ActivityUpdateStockRequest;
import com.freemud.application.sdk.api.stockapi.request.UpdateStocksRequest; import com.freemud.application.sdk.api.stockapi.request.UpdateStocksRequest;
import com.freemud.sdk.api.assortment.order.adapter.OrderSdkAdapter; import com.freemud.sdk.api.assortment.order.adapter.OrderSdkAdapter;
import com.freemud.sdk.api.assortment.order.entities.promption.ActivityUpdateStockRequest;
import com.freemud.sdk.api.assortment.order.entities.promption.SubtractStockGoodsVO;
import com.freemud.sdk.api.assortment.order.entities.promption.SubtractStockVO;
import com.freemud.sdk.api.assortment.order.enums.*; import com.freemud.sdk.api.assortment.order.enums.*;
import com.freemud.sdk.api.assortment.order.request.order.*; import com.freemud.sdk.api.assortment.order.request.order.*;
import com.freemud.sdk.api.assortment.order.response.order.BaseOrderResponse; import com.freemud.sdk.api.assortment.order.response.order.BaseOrderResponse;
import com.freemud.sdk.api.assortment.order.response.order.CreateOrderResponse; import com.freemud.sdk.api.assortment.order.response.order.CreateOrderResponse;
import com.freemud.sdk.api.assortment.order.response.order.QueryRelatedOrderByCodeResp; import com.freemud.sdk.api.assortment.order.response.order.QueryRelatedOrderByCodeResp;
//import com.freemud.sdk.api.assortment.order.response.payment.OrderPayResponse;
import com.freemud.sdk.api.assortment.order.util.ClassUtils; import com.freemud.sdk.api.assortment.order.util.ClassUtils;
import com.freemud.sdk.api.assortment.order.vo.ProductGroupVo; import com.freemud.sdk.api.assortment.order.vo.ProductGroupVo;
import com.freemud.sdk.api.assortment.payment.request.UnifiedOrderRequest; import com.freemud.sdk.api.assortment.payment.request.UnifiedOrderRequest;
...@@ -148,7 +151,7 @@ public class SaasMallOrderService extends UniversalOrderService { ...@@ -148,7 +151,7 @@ public class SaasMallOrderService extends UniversalOrderService {
protected BaseResponse sendActivityUpdateStock(CreateOrderBo createOrderBo, CreateOrderResponse createOrderResponse) { protected BaseResponse sendActivityUpdateStock(CreateOrderBo createOrderBo, CreateOrderResponse createOrderResponse) {
BaseCreateOrderRequest baseCreateOrderRequest = createOrderBo.getBaseCreateOrderRequest(); BaseCreateOrderRequest baseCreateOrderRequest = createOrderBo.getBaseCreateOrderRequest();
List<CreateOrderProductRequest> products = baseCreateOrderRequest.getProducts(); List<CreateOrderProductRequest> products = baseCreateOrderRequest.getProducts();
ActivityUpdateStockRequest activityUpdateStockRequest = baseCreateOrderRequest.getActivityUpdateStockRequest(); com.freemud.sdk.api.assortment.order.entities.promption.ActivityUpdateStockRequest activityUpdateStockRequest = baseCreateOrderRequest.getActivityUpdateStockRequest();
List<CreateOrderAccountRequest> accounts = baseCreateOrderRequest.getAccounts(); List<CreateOrderAccountRequest> accounts = baseCreateOrderRequest.getAccounts();
// mq 老代码里 商城订单不发送mq 这里就注释下 需要再开放 // mq 老代码里 商城订单不发送mq 这里就注释下 需要再开放
...@@ -688,15 +691,15 @@ public class SaasMallOrderService extends UniversalOrderService { ...@@ -688,15 +691,15 @@ public class SaasMallOrderService extends UniversalOrderService {
//设置库存扣减 //设置库存扣减
if (CollectionUtils.isNotEmpty(shoppingCartGoodsDto.getStocks())) { if (CollectionUtils.isNotEmpty(shoppingCartGoodsDto.getStocks())) {
List<ActivityUpdateStockRequest.StockBeanDto> stocks = new ArrayList<>(); List<SubtractStockVO> stocks = new ArrayList<>();
for (SubtractStockVO stockVO : shoppingCartGoodsDto.getStocks()) { for (SubtractStockVO stockVO : shoppingCartGoodsDto.getStocks()) {
ActivityUpdateStockRequest.StockBeanDto stockBeanDto = new ActivityUpdateStockRequest.StockBeanDto(); SubtractStockVO stockBeanDto = new SubtractStockVO();
stockBeanDto.setActivityCode(stockVO.getActivityCode()); stockBeanDto.setActivityCode(stockVO.getActivityCode());
stockBeanDto.setActivityStock(stockVO.getActivityStock() == null ? 1 : stockVO.getActivityStock()); stockBeanDto.setActivityStock(stockVO.getActivityStock() == null ? 1 : stockVO.getActivityStock());
if (CollectionUtils.isNotEmpty(stockVO.getGoodsStock())) { if (CollectionUtils.isNotEmpty(stockVO.getGoodsStock())) {
List<GoodsStockDTO> goodsStockDTOS = new ArrayList<>(); List<SubtractStockGoodsVO> goodsStockDTOS = new ArrayList<>();
stockVO.getGoodsStock().forEach(goods -> { stockVO.getGoodsStock().forEach(goods -> {
GoodsStockDTO goodsStockDTO = new GoodsStockDTO(); SubtractStockGoodsVO goodsStockDTO = new SubtractStockGoodsVO();
goodsStockDTO.setBenefitSeq(goods.getBenefitSeq()); goodsStockDTO.setBenefitSeq(goods.getBenefitSeq());
goodsStockDTO.setGoodsId(goods.getGoodsId()); goodsStockDTO.setGoodsId(goods.getGoodsId());
int stock = goods.getStock() == null ? 1 : goods.getStock(); int stock = goods.getStock() == null ? 1 : goods.getStock();
......
package cn.freemud.entities.vo; package cn.freemud.entities.vo;
import cn.freemud.entities.vo.promotion.SubtractStockUserGoodsVO;
import lombok.Data; import lombok.Data;
import java.util.List; import java.util.List;
...@@ -26,6 +27,11 @@ public class SubtractStockVO { ...@@ -26,6 +27,11 @@ public class SubtractStockVO {
//商品库存扣除列表 //商品库存扣除列表
private List<SubtractStockGoodsVO> goodsStock; private List<SubtractStockGoodsVO> goodsStock;
/**
* 用户商品库存扣减集合
*/
private List<SubtractStockUserGoodsVO> userGoodsStock;
@Data @Data
public static class SubtractStockGoodsVO { public static class SubtractStockGoodsVO {
//商品编号 //商品编号
......
package cn.freemud.entities.vo.promotion;
import lombok.Data;
/**
* @author : xh.Z
* @email : fisherman0510@163.com
* @Date : 2021/11/18 下午3:25
* @description :
*/
@Data
public class SubtractStockUserGoodsVO {
//商品编号
private String goodsId;
//库存
private Integer stock;
}
package cn.freemud.handle;
import cn.freemud.entities.dto.calculate.Discount;
import cn.freemud.entities.vo.ShoppingCartInfoRequestVo;
import cn.freemud.entities.vo.SubtractStockVO;
import cn.freemud.enums.ActivityTypeEnum;
import org.apache.commons.collections4.CollectionUtils;
import org.springframework.stereotype.Component;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.function.Function;
import java.util.stream.Collectors;
/**
* @author : xh.Z
* @email : fisherman0510@163.com
* @Date : 2021/11/18 下午2:42
* @description :
*/
@Component
public class PromotionCommonMethodHandle {
/**
* 库存扣减加价购商品 要过滤掉没有换购的商品
*
* @param stocks 扣减库存
* @param shoppingCartInfoRequestVo 购物车请求信息
* @param addMoneyDiscounts 加价购活动
* @return 返回应该扣减的加价购商品库存
*/
public List<SubtractStockVO> filterSendGoodsStocks(List<SubtractStockVO> stocks, ShoppingCartInfoRequestVo shoppingCartInfoRequestVo, List<Discount> addMoneyDiscounts) {
if (CollectionUtils.isEmpty(stocks) || CollectionUtils.isEmpty(addMoneyDiscounts)) {
return stocks;
}
List<SubtractStockVO> subtractStockVOs = stocks.stream().filter(subtractStockVO -> ActivityTypeEnum.TYPE_81.getCode().equals(subtractStockVO.getActivityType())).collect(Collectors.toList());
List<SubtractStockVO.SubtractStockGoodsVO> goodsStock = null;
if (CollectionUtils.isNotEmpty(subtractStockVOs)) {
SubtractStockVO subtractStockVO = subtractStockVOs.get(0);
goodsStock = subtractStockVO.getGoodsStock();
}
if (null == goodsStock) {
return stocks;
}
Map<String, SubtractStockVO.SubtractStockGoodsVO> mapSubstractStocks = new HashMap<>();
if (CollectionUtils.isNotEmpty(goodsStock)) {
mapSubstractStocks = goodsStock.stream().collect(Collectors.toMap(SubtractStockVO.SubtractStockGoodsVO::getGoodsId, Function.identity(), (k1, k2) -> k1));
}
//获取加价购商品
List<ShoppingCartInfoRequestVo.SendGoods> sendGoods = shoppingCartInfoRequestVo.getSendGoods();
if (CollectionUtils.isNotEmpty(sendGoods)) {
List<String> needSendGoodsId = sendGoods.stream().map(ShoppingCartInfoRequestVo.SendGoods::getGoodsId).collect(Collectors.toList());
goodsStock.clear();
for (String goodId : needSendGoodsId) {
SubtractStockVO.SubtractStockGoodsVO subtractStockGoodsVO = mapSubstractStocks.get(goodId);
if (null != mapSubstractStocks.get(goodId)) {
goodsStock.add(subtractStockGoodsVO);
}
}
} else {
return stocks.stream().filter(subtractStockVO -> !ActivityTypeEnum.TYPE_81.getCode().equals(subtractStockVO.getActivityType())).collect(Collectors.toList());
}
return stocks;
}
}
...@@ -9,6 +9,7 @@ import cn.freemud.entities.dto.calculate.*; ...@@ -9,6 +9,7 @@ import cn.freemud.entities.dto.calculate.*;
import cn.freemud.entities.dto.shoppingCart.ShoppingCartGoodsDto; import cn.freemud.entities.dto.shoppingCart.ShoppingCartGoodsDto;
import cn.freemud.entities.vo.*; import cn.freemud.entities.vo.*;
import cn.freemud.enums.ActivityTypeEnum; import cn.freemud.enums.ActivityTypeEnum;
import cn.freemud.handle.PromotionCommonMethodHandle;
import cn.freemud.service.IPromotionService; import cn.freemud.service.IPromotionService;
import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.collections4.CollectionUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
...@@ -35,6 +36,9 @@ public class DefaultPromotionService implements IPromotionService { ...@@ -35,6 +36,9 @@ public class DefaultPromotionService implements IPromotionService {
@Autowired @Autowired
private ShoppingCartConvertAdapter shoppingCartConvertAdapter; private ShoppingCartConvertAdapter shoppingCartConvertAdapter;
@Autowired
private PromotionCommonMethodHandle promotionCommonMethodHandle;
@Override @Override
public void updateShoppingCartGoodsDiscount(CouponPromotionVO couponPromotionVO, ActivityQueryDto activityQueryDto, CalculationDiscountResult calculationDiscountResult, List<CartGoods> cartGoodsList, ShoppingCartGoodsResponseVo shoppingCartGoodsResponseVo, UserLoginInfoDto userLoginInfoDto, ShoppingCartInfoRequestVo shoppingCartInfoRequestVo) { public void updateShoppingCartGoodsDiscount(CouponPromotionVO couponPromotionVO, ActivityQueryDto activityQueryDto, CalculationDiscountResult calculationDiscountResult, List<CartGoods> cartGoodsList, ShoppingCartGoodsResponseVo shoppingCartGoodsResponseVo, UserLoginInfoDto userLoginInfoDto, ShoppingCartInfoRequestVo shoppingCartInfoRequestVo) {
long totalOriginalAmount = 0L; long totalOriginalAmount = 0L;
...@@ -163,36 +167,6 @@ public class DefaultPromotionService implements IPromotionService { ...@@ -163,36 +167,6 @@ public class DefaultPromotionService implements IPromotionService {
* @return 返回应该扣减的加价购商品库存 * @return 返回应该扣减的加价购商品库存
*/ */
private List<SubtractStockVO> filterSendGoodsStocks(List<SubtractStockVO> stocks, ShoppingCartInfoRequestVo shoppingCartInfoRequestVo, List<Discount> addMoneyDiscounts) { private List<SubtractStockVO> filterSendGoodsStocks(List<SubtractStockVO> stocks, ShoppingCartInfoRequestVo shoppingCartInfoRequestVo, List<Discount> addMoneyDiscounts) {
if (CollectionUtils.isEmpty(stocks) || CollectionUtils.isEmpty(addMoneyDiscounts)) { return promotionCommonMethodHandle.filterSendGoodsStocks(stocks, shoppingCartInfoRequestVo, addMoneyDiscounts);
return stocks;
}
List<SubtractStockVO> subtractStockVOs = stocks.stream().filter(subtractStockVO -> ActivityTypeEnum.TYPE_81.getCode().equals(subtractStockVO.getActivityType())).collect(Collectors.toList());
List<SubtractStockVO.SubtractStockGoodsVO> goodsStock = null;
if (CollectionUtils.isNotEmpty(subtractStockVOs)) {
SubtractStockVO subtractStockVO = subtractStockVOs.get(0);
goodsStock = subtractStockVO.getGoodsStock();
}
if (null == goodsStock) {
return stocks;
}
Map<String, SubtractStockVO.SubtractStockGoodsVO> mapSubstractStocks = new HashMap<>();
if (CollectionUtils.isNotEmpty(goodsStock)) {
mapSubstractStocks = goodsStock.stream().collect(Collectors.toMap(SubtractStockVO.SubtractStockGoodsVO::getGoodsId, Function.identity(), (k1, k2) -> k1));
}
//获取加价购商品
List<ShoppingCartInfoRequestVo.SendGoods> sendGoods = shoppingCartInfoRequestVo.getSendGoods();
if (CollectionUtils.isNotEmpty(sendGoods)) {
List<String> needSendGoodsId = sendGoods.stream().map(ShoppingCartInfoRequestVo.SendGoods::getGoodsId).collect(Collectors.toList());
goodsStock.clear();
for (String goodId : needSendGoodsId) {
SubtractStockVO.SubtractStockGoodsVO subtractStockGoodsVO = mapSubstractStocks.get(goodId);
if (null != mapSubstractStocks.get(goodId)) {
goodsStock.add(subtractStockGoodsVO);
}
}
} else {
return stocks.stream().filter(subtractStockVO -> !ActivityTypeEnum.TYPE_81.getCode().equals(subtractStockVO.getActivityType())).collect(Collectors.toList());
}
return stocks;
} }
} }
...@@ -9,14 +9,17 @@ import cn.freemud.entities.dto.shoppingCart.ShoppingCartGoodsDto; ...@@ -9,14 +9,17 @@ import cn.freemud.entities.dto.shoppingCart.ShoppingCartGoodsDto;
import cn.freemud.entities.vo.*; import cn.freemud.entities.vo.*;
import cn.freemud.enums.ActivityTypeEnum; import cn.freemud.enums.ActivityTypeEnum;
import cn.freemud.enums.OrderChannelType; import cn.freemud.enums.OrderChannelType;
import cn.freemud.handle.PromotionCommonMethodHandle;
import cn.freemud.service.impl.calculate.promotion.*; import cn.freemud.service.impl.calculate.promotion.*;
import com.freemud.sdk.api.assortment.shoppingcart.enums.BusinessTypeEnum; import com.freemud.sdk.api.assortment.shoppingcart.enums.BusinessTypeEnum;
import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.collections4.CollectionUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.util.*; import java.util.ArrayList;
import java.util.function.Function; import java.util.HashMap;
import java.util.LinkedList;
import java.util.List;
import java.util.stream.Collectors; import java.util.stream.Collectors;
/** /**
...@@ -48,6 +51,8 @@ public class CalculationSharingEquallyService { ...@@ -48,6 +51,8 @@ public class CalculationSharingEquallyService {
@Autowired @Autowired
private CouponSharingService promotionSharingService; private CouponSharingService promotionSharingService;
@Autowired
private PromotionCommonMethodHandle promotionCommonMethodHandle;
/** /**
* 均摊服务 * 均摊服务
* @param discountResult * @param discountResult
...@@ -242,37 +247,7 @@ public class CalculationSharingEquallyService { ...@@ -242,37 +247,7 @@ public class CalculationSharingEquallyService {
private List<SubtractStockVO> filterSendGoodsStocks(List<SubtractStockVO> stocks private List<SubtractStockVO> filterSendGoodsStocks(List<SubtractStockVO> stocks
, ShoppingCartInfoRequestVo shoppingCartInfoRequestVo , ShoppingCartInfoRequestVo shoppingCartInfoRequestVo
, List<Discount> addMoneyDiscounts) { , List<Discount> addMoneyDiscounts) {
if (CollectionUtils.isEmpty(stocks) || CollectionUtils.isEmpty(addMoneyDiscounts)) { return promotionCommonMethodHandle.filterSendGoodsStocks(stocks, shoppingCartInfoRequestVo, addMoneyDiscounts);
return stocks;
}
List<SubtractStockVO> subtractStockVOs = stocks.stream().filter(subtractStockVO -> ActivityTypeEnum.TYPE_81.getCode().equals(subtractStockVO.getActivityType())).collect(Collectors.toList());
List<SubtractStockVO.SubtractStockGoodsVO> goodsStock = null;
if (CollectionUtils.isNotEmpty(subtractStockVOs)) {
SubtractStockVO subtractStockVO = subtractStockVOs.get(0);
goodsStock = subtractStockVO.getGoodsStock();
}
if (null == goodsStock) {
return stocks;
}
Map<String, SubtractStockVO.SubtractStockGoodsVO> mapSubstractStocks = new HashMap<>();
if (CollectionUtils.isNotEmpty(goodsStock)) {
mapSubstractStocks = goodsStock.stream().collect(Collectors.toMap(SubtractStockVO.SubtractStockGoodsVO::getGoodsId, Function.identity(), (k1, k2) -> k1));
}
//获取加价购商品
List<ShoppingCartInfoRequestVo.SendGoods> sendGoods = shoppingCartInfoRequestVo.getSendGoods();
if (CollectionUtils.isNotEmpty(sendGoods)) {
List<String> needSendGoodsId = sendGoods.stream().map(ShoppingCartInfoRequestVo.SendGoods::getGoodsId).collect(Collectors.toList());
goodsStock.clear();
for (String goodId : needSendGoodsId) {
SubtractStockVO.SubtractStockGoodsVO subtractStockGoodsVO = mapSubstractStocks.get(goodId);
if (null != mapSubstractStocks.get(goodId)) {
goodsStock.add(subtractStockGoodsVO);
}
}
} else {
return stocks.stream().filter(subtractStockVO -> !ActivityTypeEnum.TYPE_81.getCode().equals(subtractStockVO.getActivityType())).collect(Collectors.toList());
}
return stocks;
} }
} }
...@@ -13,6 +13,7 @@ import cn.freemud.entities.vo.*; ...@@ -13,6 +13,7 @@ import cn.freemud.entities.vo.*;
import cn.freemud.enums.ActivityChannelEnum; import cn.freemud.enums.ActivityChannelEnum;
import cn.freemud.enums.ActivityTypeEnum; import cn.freemud.enums.ActivityTypeEnum;
import cn.freemud.enums.ResponseResult; import cn.freemud.enums.ResponseResult;
import cn.freemud.handle.PromotionCommonMethodHandle;
import cn.freemud.interceptor.ServiceException; import cn.freemud.interceptor.ServiceException;
import cn.freemud.service.CommonService; import cn.freemud.service.CommonService;
import cn.freemud.service.impl.ItemServiceImpl; import cn.freemud.service.impl.ItemServiceImpl;
...@@ -34,7 +35,6 @@ import org.springframework.beans.factory.annotation.Autowired; ...@@ -34,7 +35,6 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.util.*; import java.util.*;
import java.util.function.Function;
import java.util.stream.Collectors; import java.util.stream.Collectors;
...@@ -84,6 +84,9 @@ public class CalculationServiceImpl { ...@@ -84,6 +84,9 @@ public class CalculationServiceImpl {
@Autowired @Autowired
private FreightCalculation freightCalculation; private FreightCalculation freightCalculation;
@Autowired
private PromotionCommonMethodHandle promotionCommonMethodHandle;
/** /**
* 更新购物车行优惠信息 * 更新购物车行优惠信息
*/ */
...@@ -315,37 +318,7 @@ public class CalculationServiceImpl { ...@@ -315,37 +318,7 @@ public class CalculationServiceImpl {
* @return 返回应该扣减的加价购商品库存 * @return 返回应该扣减的加价购商品库存
*/ */
private List<SubtractStockVO> filterSendGoodsStocks(List<SubtractStockVO> stocks, ShoppingCartInfoRequestVo shoppingCartInfoRequestVo, List<Discount> addMoneyDiscounts) { private List<SubtractStockVO> filterSendGoodsStocks(List<SubtractStockVO> stocks, ShoppingCartInfoRequestVo shoppingCartInfoRequestVo, List<Discount> addMoneyDiscounts) {
if (CollectionUtils.isEmpty(stocks) || CollectionUtils.isEmpty(addMoneyDiscounts)) { return promotionCommonMethodHandle.filterSendGoodsStocks(stocks, shoppingCartInfoRequestVo, addMoneyDiscounts);
return stocks;
}
List<SubtractStockVO> subtractStockVOs = stocks.stream().filter(subtractStockVO -> ActivityTypeEnum.TYPE_81.getCode().equals(subtractStockVO.getActivityType())).collect(Collectors.toList());
List<SubtractStockVO.SubtractStockGoodsVO> goodsStock = null;
if (CollectionUtils.isNotEmpty(subtractStockVOs)) {
SubtractStockVO subtractStockVO = subtractStockVOs.get(0);
goodsStock = subtractStockVO.getGoodsStock();
}
if (null == goodsStock) {
return stocks;
}
Map<String, SubtractStockVO.SubtractStockGoodsVO> mapSubstractStocks = new HashMap<>();
if (CollectionUtils.isNotEmpty(goodsStock)) {
mapSubstractStocks = goodsStock.stream().collect(Collectors.toMap(SubtractStockVO.SubtractStockGoodsVO::getGoodsId, Function.identity(), (k1, k2) -> k1));
}
//获取加价购商品
List<ShoppingCartInfoRequestVo.SendGoods> sendGoods = shoppingCartInfoRequestVo.getSendGoods();
if (CollectionUtils.isNotEmpty(sendGoods)) {
List<String> needSendGoodsId = sendGoods.stream().map(ShoppingCartInfoRequestVo.SendGoods::getGoodsId).collect(Collectors.toList());
goodsStock.clear();
for (String goodId : needSendGoodsId) {
SubtractStockVO.SubtractStockGoodsVO subtractStockGoodsVO = mapSubstractStocks.get(goodId);
if (null != mapSubstractStocks.get(goodId)) {
goodsStock.add(subtractStockGoodsVO);
}
}
} else {
return stocks.stream().filter(subtractStockVO -> !ActivityTypeEnum.TYPE_81.getCode().equals(subtractStockVO.getActivityType())).collect(Collectors.toList());
}
return stocks;
} }
......
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