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
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.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.request.UpdateStocksRequest;
import com.freemud.application.sdk.api.util.DateUtil;
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.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.request.order.OrderDownloadRequest;
import com.freemud.sdk.api.assortment.order.request.order.*;
......@@ -1913,14 +1914,14 @@ public class OrderSdkAdapter {
}
public ActivityUpdateStockRequest convert2ActivityUpdateStockRequest(OrderBeanV1 orderBean,
List<ActivityUpdateStockRequest.StockBeanDto> stockBeanDtos) {
List<SubtractStockVO> stockBeanDtos) {
if (orderBean == null || CollectionUtils.isEmpty(stockBeanDtos)) {
return null;
}
List<String> activityList = new ArrayList<>();
// 只记录订单级别的活动ID
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();
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;
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.entities.promption.ActivityUpdateStockRequest;
import lombok.Data;
import java.util.List;
......
......@@ -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.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.entities.promption.ActivityUpdateStockRequest;
import com.freemud.sdk.api.assortment.order.enums.*;
import lombok.Data;
......
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.create.OrderTaskReq;
import com.freemud.sdk.api.assortment.order.config.BaseConfig;
import com.freemud.sdk.api.assortment.order.enums.*;
import lombok.Builder;
import com.freemud.sdk.api.assortment.order.entities.promption.ActivityUpdateStockRequest;
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 java.util.Date;
......
......@@ -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.OrderSdkService;
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.response.CalculationDiscountResponseDTO;
import com.freemud.application.sdk.api.promotioncenter.service.PromotionSdkService;
......@@ -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.constant.CommonConstant;
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.request.order.CreateOrderRequest;
import com.freemud.sdk.api.assortment.order.request.order.OrderDownloadRequest;
......@@ -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.service.OrderCenterSdkService;
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.google.gson.Gson;
import org.apache.commons.collections4.CollectionUtils;
......@@ -185,6 +186,18 @@ public class OrderCenterSdkServiceImpl implements OrderCenterSdkService {
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,
List<CreateOrderAccountRequest> accounts, MqMessageRequest mqMessageRequest, String menuType, String openId) {
//TODO 转换获取库存信息,扣减库存
......@@ -206,7 +219,8 @@ public class OrderCenterSdkServiceImpl implements OrderCenterSdkService {
// update by miaohui 20201030 for 【ID1018638】【C端服务端】活动库存接口调整对接
// 原逻辑只检测扣减库存不为空时调用,现改为扣减库存不为空或参加活动不为空时调用
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(),
// "subtractStock", JSONObject.toJSONString(activityUpdateStockRequest), JSONObject.toJSONString(activityResponse));
if (!ObjectUtils.equals(RESPONSE_SUCCESS_STR, activityResponse.getCode())) {
......@@ -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,
......@@ -276,7 +303,8 @@ public class OrderCenterSdkServiceImpl implements OrderCenterSdkService {
// update by miaohui 20201030 for 【ID1018638】【C端服务端】活动库存接口调整对接
// 原逻辑只检测扣减库存不为空时调用,现改为扣减库存不为空或参加活动不为空时调用
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(),
"subtractStock", JSONObject.toJSONString(activityUpdateStockRequest), JSONObject.toJSONString(activityResponse));
if (!ObjectUtils.equals(RESPONSE_SUCCESS_STR, activityResponse.getCode())) {
......
......@@ -19,12 +19,6 @@ import cn.freemud.constant.RedisKeyConstant;
import cn.freemud.constant.ResponseCodeConstant;
import cn.freemud.entities.bo.CreateOrderBONew;
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.CreatePrepayRequestDto;
import cn.freemud.entities.dto.pay.OrderPayResponse;
......@@ -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.OrderExtendedReq;
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.OrderInfoReqs;
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.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.request.order.*;
import com.freemud.sdk.api.assortment.order.request.payment.CombPayRequest;
......@@ -354,29 +348,9 @@ public class OrderAdapter {
ActivityUpdateStockRequest activityUpdateStockRequest = this.initActivityUpdateStockRequest(activityDiscountsDtos);
//设置库存扣减
if (CollectionUtils.isNotEmpty(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);
}
List<SubtractStockVO> stocks = this.getStocks(shoppingCartGoodsDto.getStocks());
activityUpdateStockRequest.setStock(stocks);
activityUpdateStockRequest.setStock(stocks);
}
createOrderDto.setActivityUpdateStockRequest(activityUpdateStockRequest);
createOrderDto.setPayChannelType(createOrderVo.getPayChannelType());
......@@ -613,6 +587,38 @@ public class OrderAdapter {
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) {
ConfirmOrderDto confirmOrderDto = new ConfirmOrderDto();
confirmOrderDto.setOrderId(message.getTrans_id());
......@@ -3085,29 +3091,10 @@ public class OrderAdapter {
// update by miaohui 20201030 for 【ID1018638】【C端服务端】活动库存接口调整对接
ActivityUpdateStockRequest activityUpdateStockRequest = this.initActivityUpdateStockRequest(activityDiscountsDtos);
//设置库存扣减
if (shoppingCartGoodsResponse != null && CollectionUtils.isNotEmpty(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);
}
List<SubtractStockVO> stocks = this.getStocks(shoppingCartGoodsResponse.getStocks());
activityUpdateStockRequest.setStock(stocks);
sdkUpdateOrderProductInfoRequest.setActivityUpdateStockRequest(activityUpdateStockRequest);
return sdkUpdateOrderProductInfoRequest;
}
......
......@@ -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.OrderExtendedReq;
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.util.DateUtil;
import com.freemud.sdk.api.assortment.order.entities.promption.ActivityUpdateStockRequest;
import org.springframework.stereotype.Component;
import java.util.ArrayList;
......
package cn.freemud.entities.dto;
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.entities.promption.SubtractStockVO;
import lombok.Data;
import java.util.List;
......@@ -76,7 +75,7 @@ public class ActivityCalculationDiscountResponseDto {
/**
* 活动集合
*/
List<ActivityUpdateStockRequest.StockBeanDto> stocks;
List<SubtractStockVO> stocks;
@Data
public static class ActivityPrompt {
......
package cn.freemud.entities.dto.promotion;
import com.freemud.sdk.api.assortment.order.entities.promption.SubtractStockVO;
import lombok.Data;
import java.util.ArrayList;
......
package cn.freemud.entities.dto.promotion;
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 javax.validation.constraints.NotNull;
......
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 org.apache.commons.collections4.CollectionUtils;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
@Data
......
package cn.freemud.entities.dto.shoppingCart;
import cn.freemud.entities.dto.OrderProductAddInfo;
import cn.freemud.entities.vo.SubtractStockVO;
import com.alibaba.fastjson.JSON;
import com.freemud.sdk.api.assortment.order.entities.promption.SubtractStockVO;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
......
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 java.util.List;
......@@ -15,8 +17,11 @@ import java.util.List;
* @date: 2019/8/28
* @Copyright: 2017 www.freemud.cn Inc. All rights reserved.
* 注意:本内容仅限于上海非码科技内部传阅,禁止外泄以及用于其他的商业目.
* 该类后期 删除,禁止再使用, 请使用下面的类
* @see com.freemud.sdk.api.assortment.order.entities.promption.SubtractStockVO
*/
@Data
@Deprecated
public class SubtractStockVO {
//活动编码
private String activityCode;
......@@ -26,13 +31,9 @@ public class SubtractStockVO {
//商品库存扣除列表
private List<SubtractStockGoodsVO> goodsStock;
@Data
public static class SubtractStockGoodsVO {
//商品编号
private String goodsId;
//库存
private Integer stock;
//等级编码,当不同等级都有自己的库存时,字段必填
private Integer benefitSeq;
}
/**
* 用户商品库存扣减集合
*/
private List<SubtractStockUserGoodsVO> userGoodsStock;
}
......@@ -27,6 +27,7 @@ public enum ActivityTypeEnum {
TYPE_21(21, "单品折扣"),
TYPE_22(22, "单品立减"),
TYPE_27(27, "会员价优惠"),
TYPE_29(29, "商品活动"),
/**
* 优惠券
*/
......
......@@ -10,6 +10,7 @@ import cn.freemud.service.business.OrderBusinessService;
import cn.freemud.service.impl.OrderQueueService;
import cn.freemud.service.thirdparty.CustomerApplicationClient;
import cn.freemud.service.thirdparty.CustomerClient;
import cn.freemud.service.thirdparty.PromotionDiscountClient;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.freemud.application.sdk.api.base.BaseResponse;
......@@ -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.orderInfo.OrderInfoReqs;
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.stockapi.request.UpdateStocksRequest;
import com.freemud.application.sdk.api.stockapi.service.StockSdkService;
......@@ -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.constant.CommonConstant;
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.request.order.*;
import com.freemud.sdk.api.assortment.order.response.order.BaseOrderResponse;
......@@ -100,6 +102,9 @@ public class OrderBusinessServiceImpl implements OrderBusinessService {
@Value("${avoid.version.upgrade.config:}")
private String avoidVersionUpgradeConfig;
@Autowired
private PromotionDiscountClient promotionDiscountClient;
......@@ -280,15 +285,16 @@ public class OrderBusinessServiceImpl implements OrderBusinessService {
// update by miaohui 20201030 for 【ID1018638】【C端服务端】活动库存接口调整对接
// 原逻辑只检测扣减库存不为空时调用,现改为扣减库存不为空或参加活动不为空时调用
if (activityUpdateStockRequest != null && (CollectionUtils.isNotEmpty(activityUpdateStockRequest.getStock()) || CollectionUtils.isNotEmpty(activityUpdateStockRequest.getActivityList()))) {
BaseResponse activityResponse = promotionSdkService.subtractStock(activityUpdateStockRequest, "");
if (!ObjectUtils.equals(RESPONSE_SUCCESS_STR, activityResponse.getCode())) {
// BaseResponse activityResponse = promotionSdkService.subtractStock(activityUpdateStockRequest, "");
PromotionResponseDTO activityResponse = promotionDiscountClient.subtractStock(activityUpdateStockRequest);
if (!ObjectUtils.equals(RESPONSE_SUCCESS_STR, activityResponse.getStatusCode())) {
//TODO 失败取消订单,异步冲正库存
CancelOrderRequest cancelOrderRequest = orderSdkAdapter.convent2CancelOrderRequest(orderBean.getOid(), orderBean.getCompanyId(),
AfterSalesType.SYSTEM_CANCEL, "活动库存不足", "", null);
orderCancel(cancelOrderRequest);
//失败异步冲正库存,取消订单
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;
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.entities.promption.SubtractStockVO;
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.QueryRelatedOrderByCodeRequest;
......
......@@ -25,8 +25,8 @@ import cn.freemud.entities.dto.product.ProductInfo;
import cn.freemud.entities.dto.product.ValidateProductInfosDto;
import cn.freemud.entities.dto.promotion.CalculationDiscountGoodsDto;
import cn.freemud.entities.dto.promotion.CalculationDiscountRequestDto;
import cn.freemud.entities.live.WeChatReportVO;
import cn.freemud.entities.dto.store.StoreMixResponseDto;
import cn.freemud.entities.live.WeChatReportVO;
import cn.freemud.entities.vo.*;
import cn.freemud.enums.*;
import cn.freemud.handler.WeChatLiveMsgHandle;
......@@ -36,26 +36,18 @@ import cn.freemud.redis.RedisCache;
import cn.freemud.service.CouponService;
import cn.freemud.service.OrderFactoryService;
import cn.freemud.service.business.OrderBusinessService;
import cn.freemud.service.thirdparty.PaymentNewClient;
import cn.freemud.service.thirdparty.CouponOnlineClient;
import cn.freemud.service.thirdparty.PaymentNewClient;
import cn.freemud.service.thirdparty.PromotionDiscountClient;
import cn.freemud.service.thirdparty.StoreItemClient;
import cn.freemud.utils.AppLogUtil;
import cn.freemud.utils.ResponseUtil;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
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.vo.AssortmentCustomerInfoVo;
import com.freemud.api.assortment.datamanager.manager.AssortmentOpenPlatformIappWxappStoreManager;
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.ThirdPartyLog;
import com.freemud.application.sdk.api.ordercenter.entities.v1.OrderBeanV1;
......@@ -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.request.OrderChangeStateReq;
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.DeliveryContactInfoCreateReq;
import com.freemud.application.sdk.api.ordercenter.request.create.OrderItemCreateReq;
......@@ -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.service.OrderSdkService;
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.stockapi.request.UpdateStocksRequest;
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.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.request.order.*;
import com.freemud.sdk.api.assortment.order.response.order.BaseOrderResponse;
......@@ -382,7 +370,7 @@ public class SellCouponOrderServiceImpl implements OrderFactoryService {
CreateOrderRequest createOrderRequest = (CreateOrderRequest) createOrderRequestResponse.getResult();
//标准化平台虚拟商品特价活动计算,不包含蜜雪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);
CreateOrderResponse createOrderResponse = orderSdkAdapter.convent2NEWOrderInfoReqs(orderInfoReqsBaseResponse);
......@@ -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.setStoreId(storeId);
calculationDiscountRequestDto.setPartnerCode(partnerId);
......@@ -1109,12 +1097,16 @@ public class SellCouponOrderServiceImpl implements OrderFactoryService {
discountGoodsDtoList.add(discountGoodsDto);
calculationDiscountRequestDto.setGoods(discountGoodsDtoList);
//买券包调促销指定只计算限时特价 [2,21]
calculationDiscountRequestDto.setActivityTypes(Arrays.asList(2,21));
//买券包调促销指定只计算限时特价 [2,21,29] 29.商品限购
calculationDiscountRequestDto.setActivityTypes(Arrays.asList(ActivityTypeEnum.TYPE_2.getCode(), ActivityTypeEnum.TYPE_21.getCode(), ActivityTypeEnum.TYPE_29.getCode()));
calculationDiscountRequestDto.setVer(1);
calculationDiscountRequestDto.setApplication("isaas");
ActivityCalculationDiscountResponseDto activityCalculationDiscountResponseDto = promotionDiscountClient.calculationDiscountSharing(calculationDiscountRequestDto);
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;
}
ActivityCalculationDiscountResponseDto.CalculationDiscountResult result = activityCalculationDiscountResponseDto.getResult();
......@@ -1125,7 +1117,7 @@ public class SellCouponOrderServiceImpl implements OrderFactoryService {
for (ActivityCalculationDiscountResponseDto.CalculationDiscountResult.Goods good : result.getGoods()){
if(good.getGoodsId().equals(products.getPid())){
if(CollectionUtils.isEmpty(good.getDiscounts())){
return null;
return result.getStocks();
}
List<ActivityCalculationDiscountResponseDto.CalculationDiscountResult.Goods.GoodsDiscount> discounts = good.getDiscounts();
OrderSettlementCreateReq orderSettlementCreateReq = new OrderSettlementCreateReq();
......
......@@ -21,6 +21,7 @@ import cn.freemud.enums.ActivityGroupStatusEnum;
import cn.freemud.enums.ResponseResult;
import cn.freemud.manager.SpellGroupOrderDataManager;
import cn.freemud.service.SpellGroupOrderService;
import cn.freemud.service.thirdparty.PromotionDiscountClient;
import cn.freemud.utils.ResponseUtil;
import com.freemud.api.assortment.datamanager.entity.vo.AssortmentCustomerInfoVo;
import com.freemud.api.assortment.datamanager.manager.customer.AssortmentCustomerInfoManager;
......@@ -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.orderInfo.OrderInfoReqs;
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.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.entities.promption.ActivityUpdateStockRequest;
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.OrderStatusChangeRequestDto;
......@@ -107,6 +109,9 @@ public class SpellGroupOrderServiceImpl implements SpellGroupOrderService {
@Value("${program.backorders_notify_activity_exchange}")
private String backOrdersNotifyActivityExchange;
@Autowired
private PromotionDiscountClient promotionDiscountClient;
@Override
public BaseResponse createSpellGroupOrder(CreateSpellGroupOrderReq createSpellGroupOrderReq) {
String trackingNo = LogThreadLocal.getTrackingNo();
......@@ -226,17 +231,17 @@ public class SpellGroupOrderServiceImpl implements SpellGroupOrderService {
private BaseOrderResponse updateActivityStock(OrderBeanV1 orderBean, CreateSpellGroupOrderDto createSpellGroupOrderDto) {
ActivityUpdateStockRequest activityUpdateStockRequest = spellGroupOrderAdapter.convert2ActivityUpdateStockRequest(orderBean, createSpellGroupOrderDto);
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(),
// "subtractStock", JSONObject.toJSONString(activityUpdateStockRequest), JSONObject.toJSONString(activityResponse));
if (!ObjectUtils.equals(RESPONSE_SUCCESS_STR, activityResponse.getCode())) {
if (!ObjectUtils.equals(RESPONSE_SUCCESS_STR, activityResponse.getStatusCode())) {
//TODO 失败取消订单,异步冲正库存
CancelOrderRequest cancelOrderRequest = orderSdkAdapter.convent2CancelOrderRequest(orderBean.getOid(), orderBean.getCompanyId(),
AfterSalesType.SYSTEM_CANCEL, "活动库存不足", "", null);
orderCancel(cancelOrderRequest);
//失败异步冲正库存,取消订单
backOrdersNotifyActivity(orderBean, backOrdersChangeOrderStatusConsumerQueue, backOrdersNotifyActivityExchange);
return BaseOrderResponse.getErrorBaseOrderResponse(activityResponse.getCode(), "活动库存不足");
return BaseOrderResponse.getErrorBaseOrderResponse(activityResponse.getStatusCode(), "活动库存不足");
}
}
return BaseOrderResponse.getErrorBaseOrderResponse(RESPONSE_SUCCESS_STR, "");
......
......@@ -12,21 +12,20 @@
*/
package cn.freemud.service.thirdparty;
import cn.freemud.base.entity.BaseResponse;
import cn.freemud.annotations.LogIgnoreFeign;
import cn.freemud.constant.ResponseCodeConstant;
import cn.freemud.constant.ResponseCodeKeyConstant;
import cn.freemud.entities.dto.ActivityCalculationDiscountRequestDto;
import cn.freemud.entities.dto.ActivityCalculationDiscountResponseDto;
import cn.freemud.entities.dto.ActivityQueryRequestDto;
import cn.freemud.entities.dto.activity.ActivityQueryResponseDto;
import cn.freemud.entities.dto.promotion.*;
import cn.freemud.entities.vo.QueryGroupHistoryRequest;
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.sdk.api.assortment.order.entities.promption.ActivityUpdateStockRequest;
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}")
@RequestMapping(produces = {"application/json;charset=UTF-8"})
......
......@@ -14,7 +14,10 @@ import cn.freemud.entities.dto.product.GroupDetail;
import cn.freemud.entities.dto.product.ProductAttributeGroup;
import cn.freemud.entities.dto.product.ProductGroup;
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.ResponseResult;
import cn.freemud.enums.*;
......@@ -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.OrderItemCreateReq;
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.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.request.order.*;
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.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.vo.ProductGroupVo;
import com.freemud.sdk.api.assortment.payment.request.UnifiedOrderRequest;
......@@ -148,7 +151,7 @@ public class SaasMallOrderService extends UniversalOrderService {
protected BaseResponse sendActivityUpdateStock(CreateOrderBo createOrderBo, CreateOrderResponse createOrderResponse) {
BaseCreateOrderRequest baseCreateOrderRequest = createOrderBo.getBaseCreateOrderRequest();
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();
// mq 老代码里 商城订单不发送mq 这里就注释下 需要再开放
......@@ -688,15 +691,15 @@ public class SaasMallOrderService extends UniversalOrderService {
//设置库存扣减
if (CollectionUtils.isNotEmpty(shoppingCartGoodsDto.getStocks())) {
List<ActivityUpdateStockRequest.StockBeanDto> stocks = new ArrayList<>();
List<SubtractStockVO> stocks = new ArrayList<>();
for (SubtractStockVO stockVO : shoppingCartGoodsDto.getStocks()) {
ActivityUpdateStockRequest.StockBeanDto stockBeanDto = new ActivityUpdateStockRequest.StockBeanDto();
SubtractStockVO stockBeanDto = new SubtractStockVO();
stockBeanDto.setActivityCode(stockVO.getActivityCode());
stockBeanDto.setActivityStock(stockVO.getActivityStock() == null ? 1 : stockVO.getActivityStock());
if (CollectionUtils.isNotEmpty(stockVO.getGoodsStock())) {
List<GoodsStockDTO> goodsStockDTOS = new ArrayList<>();
List<SubtractStockGoodsVO> goodsStockDTOS = new ArrayList<>();
stockVO.getGoodsStock().forEach(goods -> {
GoodsStockDTO goodsStockDTO = new GoodsStockDTO();
SubtractStockGoodsVO goodsStockDTO = new SubtractStockGoodsVO();
goodsStockDTO.setBenefitSeq(goods.getBenefitSeq());
goodsStockDTO.setGoodsId(goods.getGoodsId());
int stock = goods.getStock() == null ? 1 : goods.getStock();
......
package cn.freemud.entities.vo;
import cn.freemud.entities.vo.promotion.SubtractStockUserGoodsVO;
import lombok.Data;
import java.util.List;
......@@ -26,6 +27,11 @@ public class SubtractStockVO {
//商品库存扣除列表
private List<SubtractStockGoodsVO> goodsStock;
/**
* 用户商品库存扣减集合
*/
private List<SubtractStockUserGoodsVO> userGoodsStock;
@Data
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.*;
import cn.freemud.entities.dto.shoppingCart.ShoppingCartGoodsDto;
import cn.freemud.entities.vo.*;
import cn.freemud.enums.ActivityTypeEnum;
import cn.freemud.handle.PromotionCommonMethodHandle;
import cn.freemud.service.IPromotionService;
import org.apache.commons.collections4.CollectionUtils;
import org.springframework.beans.factory.annotation.Autowired;
......@@ -35,6 +36,9 @@ public class DefaultPromotionService implements IPromotionService {
@Autowired
private ShoppingCartConvertAdapter shoppingCartConvertAdapter;
@Autowired
private PromotionCommonMethodHandle promotionCommonMethodHandle;
@Override
public void updateShoppingCartGoodsDiscount(CouponPromotionVO couponPromotionVO, ActivityQueryDto activityQueryDto, CalculationDiscountResult calculationDiscountResult, List<CartGoods> cartGoodsList, ShoppingCartGoodsResponseVo shoppingCartGoodsResponseVo, UserLoginInfoDto userLoginInfoDto, ShoppingCartInfoRequestVo shoppingCartInfoRequestVo) {
long totalOriginalAmount = 0L;
......@@ -163,36 +167,6 @@ public class DefaultPromotionService implements IPromotionService {
* @return 返回应该扣减的加价购商品库存
*/
private 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;
return promotionCommonMethodHandle.filterSendGoodsStocks(stocks, shoppingCartInfoRequestVo, addMoneyDiscounts);
}
}
......@@ -9,14 +9,17 @@ import cn.freemud.entities.dto.shoppingCart.ShoppingCartGoodsDto;
import cn.freemud.entities.vo.*;
import cn.freemud.enums.ActivityTypeEnum;
import cn.freemud.enums.OrderChannelType;
import cn.freemud.handle.PromotionCommonMethodHandle;
import cn.freemud.service.impl.calculate.promotion.*;
import com.freemud.sdk.api.assortment.shoppingcart.enums.BusinessTypeEnum;
import org.apache.commons.collections4.CollectionUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.*;
import java.util.function.Function;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.LinkedList;
import java.util.List;
import java.util.stream.Collectors;
/**
......@@ -48,6 +51,8 @@ public class CalculationSharingEquallyService {
@Autowired
private CouponSharingService promotionSharingService;
@Autowired
private PromotionCommonMethodHandle promotionCommonMethodHandle;
/**
* 均摊服务
* @param discountResult
......@@ -242,37 +247,7 @@ public class CalculationSharingEquallyService {
private 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;
return promotionCommonMethodHandle.filterSendGoodsStocks(stocks, shoppingCartInfoRequestVo, addMoneyDiscounts);
}
}
......@@ -13,6 +13,7 @@ import cn.freemud.entities.vo.*;
import cn.freemud.enums.ActivityChannelEnum;
import cn.freemud.enums.ActivityTypeEnum;
import cn.freemud.enums.ResponseResult;
import cn.freemud.handle.PromotionCommonMethodHandle;
import cn.freemud.interceptor.ServiceException;
import cn.freemud.service.CommonService;
import cn.freemud.service.impl.ItemServiceImpl;
......@@ -34,7 +35,6 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.*;
import java.util.function.Function;
import java.util.stream.Collectors;
......@@ -84,6 +84,9 @@ public class CalculationServiceImpl {
@Autowired
private FreightCalculation freightCalculation;
@Autowired
private PromotionCommonMethodHandle promotionCommonMethodHandle;
/**
* 更新购物车行优惠信息
*/
......@@ -315,37 +318,7 @@ public class CalculationServiceImpl {
* @return 返回应该扣减的加价购商品库存
*/
private 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;
return promotionCommonMethodHandle.filterSendGoodsStocks(stocks, shoppingCartInfoRequestVo, addMoneyDiscounts);
}
......
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