Commit 96540de7 by 刘鹏飞

创单增加用户买一赠一寄杯活动选择的商品和券

parent f33d6f7e
......@@ -178,6 +178,12 @@ public class CreateOrderVo {
@Valid
private PremiumExchangeActivity premiumExchangeActivity;
/**
* 买一赠一选择的商品
*/
private List<chooseGood> chooseGoods;
/**
* 是否使用用户积分
* 1=不显示积分
......@@ -346,4 +352,43 @@ public class CreateOrderVo {
*/
private String ruleId;
}
@Data
public static class chooseGood {
/**
* 活动类型
*/
private Integer activeType;
/**
* 活动号
*/
private String activeCode;
/**
* 赠送商品id
*/
private String goodsId;
/**
* 赠送商品数量
*/
private Integer qty;
/**
* 可兑换商品券编号
*/
private String couponCode ;
/**
* 商品券兑换数量
*/
private Integer couponQty;
/**
* 是否已选择寄杯
*/
private Boolean sendCoupon;
}
}
......@@ -135,4 +135,48 @@ public class ShoppingCartInfoRequestVo {
private String ruleId;
}
/**
* 买一赠一寄件商品
*/
private List<ChooseGood> chooseGoods;
@Data
public static class ChooseGood {
/**
* 活动类型
*/
private Integer activeType;
/**
* 活动号
*/
private String activeCode;
/**
* 赠送商品id
*/
private String goodsId;
/**
* 赠送商品数量
*/
private Integer qty;
/**
* 可兑换商品券编号
*/
private String couponCode ;
/**
* 商品券兑换数量
*/
private Integer couponQty;
/**
* 是否已选择寄杯
*/
private Boolean sendCoupon;
}
}
......@@ -32,6 +32,7 @@ import cn.freemud.service.thirdparty.ShoppingCartClient;
import cn.freemud.service.thirdparty.StockClient;
import cn.freemud.utils.LogUtil;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.TypeReference;
import com.freemud.api.assortment.datamanager.entity.db.AssortmentOpenPlatformIappWxappConfig;
......@@ -505,6 +506,8 @@ public class CheckOrder {
}
// 通过购物车获取优惠信息
GetShoppingCartGoodsApportionDto requestDto = new GetShoppingCartGoodsApportionDto();
// 设置用户选择的买一赠一商品信息
shoppingCartInfoRequestVo.setChooseGoods(JSONArray.parseArray(JSONObject.toJSONString(createOrderVo.getChooseGoods()), ShoppingCartInfoRequestVo.ChooseGood.class));
requestDto.setShoppingCartInfoRequestVo(shoppingCartInfoRequestVo);
//加价购商品 校验放购物车校验
requestDto.setPremiumExchangeActivity(createOrderVo.getPremiumExchangeActivity());
......
......@@ -162,6 +162,10 @@ public class ShoppingCartGoodsResponseVo extends ShoppingCartGoodsBaseResponseV
@Data
public static class chooseGood {
/**
* 活动code
*/
private String activeCode;
/**
* 活动类型
......@@ -174,11 +178,26 @@ public class ShoppingCartGoodsResponseVo extends ShoppingCartGoodsBaseResponseV
private String goodsName;
/**
* 赠送商品id
*/
private String goodsId;
/**
* 赠送商品数量
*/
private Integer qty;
/**
* 可兑换商品券编号
*/
private String couponCode ;
/**
* 可兑换券的数量
*/
private Integer couponQty ;
/**
* 可兑换商品券名称
*/
private String couponName ;
......
......@@ -62,6 +62,12 @@ public class ShoppingCartInfoRequestVo extends BaseRequestVo {
* 加价购商品
*/
private List<SendGoods> sendGoods;
/**
* 买一赠一寄件商品
*/
private List<ChooseGood> chooseGoods;
/**
* 是否使用用户积分
* 1=不显示积分
......@@ -131,4 +137,43 @@ public class ShoppingCartInfoRequestVo extends BaseRequestVo {
*/
private String freightCouponCode;
@Data
public static class ChooseGood {
/**
* 活动类型
*/
private Integer activeType;
/**
* 活动号
*/
private String activeCode;
/**
* 赠送商品id
*/
private String goodsId;
/**
* 赠送商品数量
*/
private Integer qty;
/**
* 可兑换商品券编号
*/
private String couponCode ;
/**
* 商品券兑换数量
*/
private Integer couponQty;
/**
* 是否已选择寄杯
*/
private Boolean sendCoupon;
}
}
/**
* All rights Reserved, Designed By www.freemud.cn
*
* @Title: CouponService
* @Package cn.freemud.service
* @Description:
* @author: pengfei.liu
* @date: 2020/11/23
* @version V1.0
* @Copyright: 2020 www.freemud.cn Inc. All rights reserved.
* 注意:本内容仅限于上海非码科技内部传阅,禁止外泄以及用于其他的商业目
*/
package cn.freemud.service.active;
public interface ActiveFactory {
/**
* 获取构建用户选择商品数量实现
* @param partnerId
* @return
*/
ActiveService getBuildChooseGoodsService(String partnerId);
}
/**
* All rights Reserved, Designed By www.freemud.cn
*
* @Title: CouponService
* @Package cn.freemud.service
* @Description:
* @author: pengfei.liu
* @date: 2020/11/23
* @version V1.0
* @Copyright: 2020 www.freemud.cn Inc. All rights reserved.
* 注意:本内容仅限于上海非码科技内部传阅,禁止外泄以及用于其他的商业目
*/
package cn.freemud.service.active;
import cn.freemud.entities.dto.calculate.CalculationSharingDiscountRequestDto;
import cn.freemud.entities.vo.ShoppingCartInfoRequestVo;
import java.util.List;
public interface ActiveService {
/**
* 构建用户选择商品数量
* @param calculationSharingDiscountRequestDto
*/
void buildChooseGoodsService(CalculationSharingDiscountRequestDto calculationSharingDiscountRequestDto, List<ShoppingCartInfoRequestVo.ChooseGood> chooseGoods);
}
/**
* All rights Reserved, Designed By www.freemud.cn
*
* @Title: CouponService
* @Package cn.freemud.service
* @Description:
* @author: pengfei.liu
* @date: 2020/11/23
* @version V1.0
* @Copyright: 2020 www.freemud.cn Inc. All rights reserved.
* 注意:本内容仅限于上海非码科技内部传阅,禁止外泄以及用于其他的商业目
*/
package cn.freemud.service.active.impl;
import cn.freemud.service.active.ActiveFactory;
import cn.freemud.service.active.ActiveService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import java.util.List;
@Service
public class ActiveFactoryImpl implements ActiveFactory {
/**
* coco商户
*/
@Value("#{'${coco.partnerId}'.split(',')}")
private List<String> cocoPartnerId;
/**
* coco的活动类
*/
@Autowired
@Qualifier("cocoActiveService")
ActiveService CocoActiveServiceImpl;
/**
* 平台活动类
*/
@Autowired
@Qualifier("platformActiveService")
ActiveService platformActiveService;
@Override
public ActiveService getBuildChooseGoodsService(String partnerId) {
if(cocoPartnerId.contains(partnerId)){
return CocoActiveServiceImpl;
}else{
return platformActiveService;
}
}
}
/**
* All rights Reserved, Designed By www.freemud.cn
*
* @Title: CouponService
* @Package cn.freemud.service
* @Description:
* @author: pengfei.liu
* @date: 2020/11/23
* @version V1.0
* @Copyright: 2020 www.freemud.cn Inc. All rights reserved.
* 注意:本内容仅限于上海非码科技内部传阅,禁止外泄以及用于其他的商业目
*/
package cn.freemud.service.active.impl;
import cn.freemud.entities.dto.calculate.CalculationSharingDiscountRequestDto;
import cn.freemud.entities.vo.ShoppingCartInfoRequestVo;
import cn.freemud.enums.ActivityTypeEnum;
import cn.freemud.service.active.ActiveService;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.List;
@Service("cocoActiveService")
public class CocoActiveServiceImpl implements ActiveService {
/**
* 用户只能选择1商品和1数量传给促销
* @param calculationSharingDiscountRequestDto
* @param chooseGoods
*/
@Override
public void buildChooseGoodsService(CalculationSharingDiscountRequestDto calculationSharingDiscountRequestDto, List<ShoppingCartInfoRequestVo.ChooseGood> chooseGoods) {
// 买一赠一寄件活动
// coco一次只能选择一种商品,一种商品只能选择一件
List<CalculationSharingDiscountRequestDto.CalculationActivityReqVO> selectActivityList = calculationSharingDiscountRequestDto.getSelectActivityList() == null ? new ArrayList<>() : calculationSharingDiscountRequestDto.getSelectActivityList();
if(null != chooseGoods && !chooseGoods.isEmpty()){
// 从用户选择的商品中选择第一个
ShoppingCartInfoRequestVo.ChooseGood chooseGood = chooseGoods.get(0);
CalculationSharingDiscountRequestDto.CalculationActivityReqVO calculationActivityReqVO = new CalculationSharingDiscountRequestDto.CalculationActivityReqVO();
calculationActivityReqVO.setActivityCode(chooseGood.getActiveCode());
calculationActivityReqVO.setActivityType(ActivityTypeEnum.TYPE_63.getCode());
// 设置商品的数量为1
List<CalculationSharingDiscountRequestDto.CalculationSendGoodsReqVO> sendGoods = new ArrayList<>();
CalculationSharingDiscountRequestDto.CalculationSendGoodsReqVO sendGood = new CalculationSharingDiscountRequestDto.CalculationSendGoodsReqVO();
sendGood.setGoodsId(chooseGood.getGoodsId());
sendGood.setGoodsQuantity(1);
sendGoods.add(sendGood);
calculationActivityReqVO.setSendGoods(sendGoods);
selectActivityList.add(calculationActivityReqVO);
}
calculationSharingDiscountRequestDto.setSelectActivityList(selectActivityList);
}
}
/**
* All rights Reserved, Designed By www.freemud.cn
*
* @Title: CouponService
* @Package cn.freemud.service
* @Description:
* @author: pengfei.liu
* @date: 2020/11/23
* @version V1.0
* @Copyright: 2020 www.freemud.cn Inc. All rights reserved.
* 注意:本内容仅限于上海非码科技内部传阅,禁止外泄以及用于其他的商业目
*/
package cn.freemud.service.active.impl;
import cn.freemud.entities.dto.calculate.CalculationSharingDiscountRequestDto;
import cn.freemud.entities.vo.ShoppingCartInfoRequestVo;
import cn.freemud.enums.ActivityTypeEnum;
import cn.freemud.service.active.ActiveService;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.List;
@Service("platformActiveService")
public class PlatformActiveServiceImpl implements ActiveService {
/**
* 用户选择的商品和数量都要传给促销
* @param calculationSharingDiscountRequestDto
* @param chooseGoods
*/
@Override
public void buildChooseGoodsService(CalculationSharingDiscountRequestDto calculationSharingDiscountRequestDto, List<ShoppingCartInfoRequestVo.ChooseGood> chooseGoods) {
// 买一赠一寄件活动
List<CalculationSharingDiscountRequestDto.CalculationActivityReqVO> selectActivityList = calculationSharingDiscountRequestDto.getSelectActivityList() == null ? new ArrayList<>() : calculationSharingDiscountRequestDto.getSelectActivityList();
if(null != chooseGoods && !chooseGoods.isEmpty()){
CalculationSharingDiscountRequestDto.CalculationActivityReqVO calculationActivityReqVO = new CalculationSharingDiscountRequestDto.CalculationActivityReqVO();
List<CalculationSharingDiscountRequestDto.CalculationSendGoodsReqVO> sendGoods = new ArrayList<>();
chooseGoods.forEach(chooseGood -> {
calculationActivityReqVO.setActivityCode(chooseGood.getActiveCode());
calculationActivityReqVO.setActivityType(ActivityTypeEnum.TYPE_63.getCode());
CalculationSharingDiscountRequestDto.CalculationSendGoodsReqVO sendGood = new CalculationSharingDiscountRequestDto.CalculationSendGoodsReqVO();
sendGood.setGoodsId(chooseGood.getGoodsId());
sendGood.setGoodsQuantity(1);
sendGoods.add(sendGood);
});
selectActivityList.add(calculationActivityReqVO);
}
calculationSharingDiscountRequestDto.setSelectActivityList(selectActivityList);
}
}
......@@ -319,7 +319,8 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService {
, allCartGoodsList
, new ArrayList<>() //券
, null //加价购商品
, deliveryAmount);
, deliveryAmount
, null);
//
sharingCartService.distribute(discountResult
......@@ -443,7 +444,8 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService {
, cartGoodsList
, new ArrayList() //券
, null //加价购商品
, deliveryAmount);
, deliveryAmount
, null);
sharingCartService.distribute(discountResult
, cartGoodsList
......@@ -598,7 +600,8 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService {
, cartGoodsList
, coupons
, sendGoods
, deliveryAmount);
, deliveryAmount
, null);
sharingCartService.distribute(calculationSharingDiscountResult
, cartGoodsList
, shoppingCartGoodsResponseVo
......@@ -802,7 +805,8 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService {
, cartGoodsList
, coupons
, shoppingCartInfoRequestVo.getSendGoods()
, deliveryAmount);
, deliveryAmount
, shoppingCartInfoRequestVo);
//直接利用促销返回做均摊
sharingEquallyService.equally(discountResult
......
......@@ -13,6 +13,8 @@ import cn.freemud.enums.*;
import cn.freemud.interceptor.ServiceException;
import cn.freemud.service.CommonService;
import cn.freemud.service.CouponService;
import cn.freemud.service.active.ActiveFactory;
import cn.freemud.service.active.ActiveService;
import cn.freemud.service.impl.AssortmentSdkService;
import cn.freemud.service.thirdparty.CalculationClient;
import cn.freemud.utils.PropertyConvertUtil;
......@@ -57,6 +59,9 @@ public class CalculationSharingDiscountService {
@Autowired
private CalculationClient calculationClient;
@Autowired
private ActiveFactory activeFactory;
public CalculationSharingDiscountResponseDto.CalculationDiscountResult getCalculationSharingDiscountResult(String menuType
, String partnerId
, String storeId
......@@ -67,7 +72,8 @@ public class CalculationSharingDiscountService {
, List<CartGoods> cartGoodsList
, List<CalculationSharingDiscountRequestDto.CalculationDiscountCoupon> coupons
, List<ShoppingCartInfoRequestVo.SendGoods> sendGoodsList
, Long deliveryAmount) {
, Long deliveryAmount
, ShoppingCartInfoRequestVo shoppingCartInfoRequestVo) {
CalculationSharingDiscountRequestDto calculationSharingDiscountRequestDto = this.commonSharingDto(partnerId, storeId, userId, appId, orderType);
......@@ -159,6 +165,11 @@ public class CalculationSharingDiscountService {
calculationSharingDiscountRequestDto.setIsMember(isMember);
CalculationSharingDiscountResponseDto sharingDiscountResponseDto;
// 构建买一送一寄杯活动用户选择信息
ActiveService activeService = activeFactory.getBuildChooseGoodsService(partnerId);
activeService.buildChooseGoodsService(calculationSharingDiscountRequestDto,shoppingCartInfoRequestVo == null ? null : shoppingCartInfoRequestVo.getChooseGoods());
try {
log.info("start sharing discount dto={}", JSON.toJSONString(calculationSharingDiscountRequestDto));
sharingDiscountResponseDto = calculationClient.calculationSharingDiscount(calculationSharingDiscountRequestDto);
......
......@@ -128,6 +128,7 @@ public class CalculationSharingEquallyService {
* 加价购商品
*/
additionSharingService.equally(shoppingCartInfoRequestVo, shoppingCartGoodsDto, discountResult, premiumExchangeActivity, shoppingCartGoodsResponseVo);
/**
* 积分抵扣
*/
......
......@@ -230,7 +230,11 @@ public class BuyOneGiveOneSendService {
innerSendGoods.forEach(innerSendGood -> {
ShoppingCartGoodsResponseVo.chooseGood chooseGood = new ShoppingCartGoodsResponseVo.chooseGood();
chooseGood.setActiveCode(sendActivity.getActivityCode());
chooseGood.setActiveType(sendActivity.getActivityType());
chooseGood.setGoodsId(innerSendGood.getGoodsId());
chooseGood.setQty(innerSendGood.getSendNumber());
chooseGood.setCouponQty(1);
chooseGood.setCouponCode(innerSendGood.getSendCouponCode());
chooseGood.setCouponName(innerSendGood.getSendCouponName());
chooseGood.setSendCoupon(innerSendGood.getSendCoupon());
......@@ -243,4 +247,6 @@ public class BuyOneGiveOneSendService {
shoppingCartGoodsResponseVo.setChooseGoods(chooseGoods);
}
}
\ No newline at end of file
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