Commit 1618edf5 by ping.wu

购买虚拟商品特价

parent dc803552
...@@ -92,4 +92,7 @@ public class CalculationDiscountRequestDto { ...@@ -92,4 +92,7 @@ public class CalculationDiscountRequestDto {
* 拼团活动是,必传活动号 * 拼团活动是,必传活动号
*/ */
private List<String> groupActivityCode; private List<String> groupActivityCode;
//指定参与的活动类型
private List<Integer> activityTypes;
} }
...@@ -10,7 +10,10 @@ import cn.freemud.entities.Active; ...@@ -10,7 +10,10 @@ import cn.freemud.entities.Active;
import cn.freemud.entities.dto.*; import cn.freemud.entities.dto.*;
import cn.freemud.entities.dto.order.CreatePrepayRequestDto; import cn.freemud.entities.dto.order.CreatePrepayRequestDto;
import cn.freemud.entities.dto.product.GetValidateProductInfoDto; import cn.freemud.entities.dto.product.GetValidateProductInfoDto;
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.CalculationDiscountRequestDto;
import cn.freemud.entities.vo.GetMemberCouponRequestVo; import cn.freemud.entities.vo.GetMemberCouponRequestVo;
import cn.freemud.entities.vo.NgsSellCouponCreateOrderVo; import cn.freemud.entities.vo.NgsSellCouponCreateOrderVo;
import cn.freemud.entities.vo.PaysuccessNoticeMessage; import cn.freemud.entities.vo.PaysuccessNoticeMessage;
...@@ -24,6 +27,8 @@ import cn.freemud.manager.BuyProductOnceManager; ...@@ -24,6 +27,8 @@ import cn.freemud.manager.BuyProductOnceManager;
import cn.freemud.redis.RedisCache; import cn.freemud.redis.RedisCache;
import cn.freemud.service.CouponService; import cn.freemud.service.CouponService;
import cn.freemud.service.business.OrderBusinessService; import cn.freemud.service.business.OrderBusinessService;
import cn.freemud.service.thirdparty.PromotionActivityClient;
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;
...@@ -54,6 +59,7 @@ import com.freemud.application.sdk.api.productcenter.request.product.GetProductI ...@@ -54,6 +59,7 @@ import com.freemud.application.sdk.api.productcenter.request.product.GetProductI
import com.freemud.application.sdk.api.productcenter.response.menu.GetMenuCategoryInfoResponse; import com.freemud.application.sdk.api.productcenter.response.menu.GetMenuCategoryInfoResponse;
import com.freemud.application.sdk.api.productcenter.response.product.GetProductInfosResponse; import com.freemud.application.sdk.api.productcenter.response.product.GetProductInfosResponse;
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.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.StoreInfoRequest; import com.freemud.application.sdk.api.storecenter.request.StoreInfoRequest;
...@@ -151,6 +157,12 @@ public class SellCouponOrderServiceImpl { ...@@ -151,6 +157,12 @@ public class SellCouponOrderServiceImpl {
@Autowired @Autowired
private BuyProductOnceManager buyProductOnceManager; private BuyProductOnceManager buyProductOnceManager;
@Autowired
private PromotionDiscountClient promotionDiscountClient;
@Autowired
private PromotionActivityClient promotionActivityClient;
/** /**
* 卖券订单创建 * 卖券订单创建
*/ */
...@@ -201,7 +213,11 @@ public class SellCouponOrderServiceImpl { ...@@ -201,7 +213,11 @@ public class SellCouponOrderServiceImpl {
if (createOrderRequestResponse == null || !ResponseResult.SUCCESS.getCode().equals(createOrderRequestResponse.getCode()) || createOrderRequestResponse.getResult() == null) { if (createOrderRequestResponse == null || !ResponseResult.SUCCESS.getCode().equals(createOrderRequestResponse.getCode()) || createOrderRequestResponse.getResult() == null) {
return createOrderRequestResponse; return createOrderRequestResponse;
} }
CreateOrderRequest createOrderRequest = (CreateOrderRequest) createOrderRequestResponse.getResult(); CreateOrderRequest createOrderRequest = (CreateOrderRequest) createOrderRequestResponse.getResult();
//标准化平台虚拟商品特价活动计算,不包含蜜雪APP买虚拟商品
List<ActivityUpdateStockRequest.StockBeanDto> stockBeanDtos = calculationDiscount(partnerId, storeId, userLoginInfoDto.getMemberId(), productInfosDto.getData().getProducts().get(0), createOrderRequest);
com.freemud.application.sdk.api.ordercenter.response.BaseResponse<OrderInfoReqs> orderInfoReqsBaseResponse = orderSdkService.createOrder(createOrderRequest, trackingNo); com.freemud.application.sdk.api.ordercenter.response.BaseResponse<OrderInfoReqs> orderInfoReqsBaseResponse = orderSdkService.createOrder(createOrderRequest, trackingNo);
CreateOrderResponse createOrderResponse = orderSdkAdapter.convent2NEWOrderInfoReqs(orderInfoReqsBaseResponse); CreateOrderResponse createOrderResponse = orderSdkAdapter.convent2NEWOrderInfoReqs(orderInfoReqsBaseResponse);
if (createOrderResponse == null || createOrderResponse.getErrcode() != 100) { if (createOrderResponse == null || createOrderResponse.getErrcode() != 100) {
...@@ -228,6 +244,22 @@ public class SellCouponOrderServiceImpl { ...@@ -228,6 +244,22 @@ public class SellCouponOrderServiceImpl {
return ResponseUtil.error(baseResponse.getCode(),"商品库存不足"); return ResponseUtil.error(baseResponse.getCode(),"商品库存不足");
} }
} }
if(CollectionUtils.isNotEmpty(stockBeanDtos)){
// 扣减活动库存
ActivityUpdateStockRequest activityUpdateStockRequest = orderSdkAdapter.convert2ActivityUpdateStockRequest(orderBean, stockBeanDtos);
// 原逻辑只检测扣减库存不为空时调用,现改为扣减库存不为空或参加活动不为空时调用
if (activityUpdateStockRequest != null && (CollectionUtils.isNotEmpty(activityUpdateStockRequest.getStock()) || CollectionUtils.isNotEmpty(activityUpdateStockRequest.getActivityList()))) {
BaseResponse activityResponse = promotionActivityClient.subtractStock(activityUpdateStockRequest);
if (!ObjectUtils.equals(RESPONSE_SUCCESS_STR, activityResponse.getCode())) {
// 失败取消订单
CancelOrderRequest cancelOrderRequest = orderSdkAdapter.convent2CancelOrderRequest(orderBean.getOid(), orderBean.getCompanyId(),
AfterSalesType.SYSTEM_CANCEL, "活动库存不足", "", null);
BaseOrderResponse orderResponse = orderCenterSdkService.orderCancel(cancelOrderRequest);
return ResponseUtil.error(ResponseResult.ORDER_CREATE_ERROR.getCode(),"活动库存不足");
}
}
}
} }
//创建支付 //创建支付
...@@ -827,4 +859,65 @@ public class SellCouponOrderServiceImpl { ...@@ -827,4 +859,65 @@ public class SellCouponOrderServiceImpl {
return money; return money;
} }
/**
* 查询促销优惠,赋值订单金额,商品优惠后金额,优惠记录
*/
private List<ActivityUpdateStockRequest.StockBeanDto> calculationDiscount(String partnerId,String storeId,String userId,ProductInfo products,CreateOrderRequest createOrderRequest){
CalculationDiscountRequestDto calculationDiscountRequestDto = new CalculationDiscountRequestDto();
calculationDiscountRequestDto.setStoreId(storeId);
calculationDiscountRequestDto.setPartnerCode(partnerId);
calculationDiscountRequestDto.setUserId(userId);
List<CalculationDiscountGoodsDto> discountGoodsDtoList = new ArrayList<>();
CalculationDiscountGoodsDto discountGoodsDto = new CalculationDiscountGoodsDto();
discountGoodsDto.setGoodsId(products.getPid());
discountGoodsDto.setGoodsQuantity(1);
discountGoodsDto.setOriginalPrice(products.getFinalPrice().intValue());
discountGoodsDtoList.add(discountGoodsDto);
calculationDiscountRequestDto.setGoods(discountGoodsDtoList);
//买券包调促销指定只计算限时特价 [2,21]
calculationDiscountRequestDto.setActivityTypes(Arrays.asList(2,21));
calculationDiscountRequestDto.setVer(1);
ActivityCalculationDiscountResponseDto activityCalculationDiscountResponseDto = promotionDiscountClient.calculationDiscountSharing(calculationDiscountRequestDto);
if (!ResponseResult.SUCCESS.getCode().equals(activityCalculationDiscountResponseDto.getStatusCode()) || activityCalculationDiscountResponseDto.getResult() == null) {
return null;
}
ActivityCalculationDiscountResponseDto.CalculationDiscountResult result = activityCalculationDiscountResponseDto.getResult();
if(CollectionUtils.isEmpty(result.getDiscounts())){
return null;
}
if(CollectionUtils.isNotEmpty(result.getGoods())){
for (ActivityCalculationDiscountResponseDto.CalculationDiscountResult.Goods good : result.getGoods()){
if(good.getGoodsId().equals(products.getPid())){
if(CollectionUtils.isEmpty(good.getDiscounts())){
return null;
}
List<ActivityCalculationDiscountResponseDto.CalculationDiscountResult.Goods.GoodsDiscount> discounts = good.getDiscounts();
OrderSettlementCreateReq orderSettlementCreateReq = new OrderSettlementCreateReq();
Long discount = discounts.get(0).getDiscount();
orderSettlementCreateReq.setProductId(products.getPid());
orderSettlementCreateReq.setSettlementType(discounts.get(0).getType());
orderSettlementCreateReq.setSettlementAmount(products.getFinalPrice()-discount);
orderSettlementCreateReq.setShopDiscountAmount(discount);
orderSettlementCreateReq.setNumber(1);
orderSettlementCreateReq.setShopAmount(products.getFinalPrice()-discount);
orderSettlementCreateReq.setExternalObjectId(discounts.get(0).getActivityCode());
orderSettlementCreateReq.setIsOnline(true);
orderSettlementCreateReq.setExternalObjectName(discounts.get(0).getActivityName());
orderSettlementCreateReq.setNote(result.getDiscounts().get(0).getActivityName());
List<OrderSettlementCreateReq> orderSettlementCreateReqList = new ArrayList<>();
orderSettlementCreateReqList.add(orderSettlementCreateReq);
createOrderRequest.setOrderSettlementDetailList(orderSettlementCreateReqList);
createOrderRequest.setSettlementAmount(result.getTotalAmount());
createOrderRequest.setActualPayAmount(result.getTotalAmount());
createOrderRequest.getOrderItemList().get(0).setSettlementPrice(products.getFinalPrice()-discount);
createOrderRequest.getOrderItemList().get(0).setProductSharePrice(discount);
}
}
return result.getStocks();
}
return null;
}
} }
...@@ -14,6 +14,7 @@ package cn.freemud.service.thirdparty; ...@@ -14,6 +14,7 @@ package cn.freemud.service.thirdparty;
import cn.freemud.base.entity.BaseResponse; import cn.freemud.base.entity.BaseResponse;
import cn.freemud.entities.dto.*; import cn.freemud.entities.dto.*;
import com.freemud.application.sdk.api.promotioncenter.request.promotion.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.*;
...@@ -101,4 +102,10 @@ public interface PromotionActivityClient { ...@@ -101,4 +102,10 @@ public interface PromotionActivityClient {
@PostMapping("/activities/share/queryValidShareActivity") @PostMapping("/activities/share/queryValidShareActivity")
BaseResponse queryValidShareActivity(@RequestBody QueryValidShareActivityReq activityReq); BaseResponse queryValidShareActivity(@RequestBody QueryValidShareActivityReq activityReq);
/**
* 扣减活动库存
*/
@PostMapping("/activity/stock/subtractStock")
BaseResponse subtractStock(@RequestBody ActivityUpdateStockRequest activityReq);
} }
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