Commit 96540de7 by 刘鹏飞

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

parent f33d6f7e
...@@ -178,6 +178,12 @@ public class CreateOrderVo { ...@@ -178,6 +178,12 @@ public class CreateOrderVo {
@Valid @Valid
private PremiumExchangeActivity premiumExchangeActivity; private PremiumExchangeActivity premiumExchangeActivity;
/**
* 买一赠一选择的商品
*/
private List<chooseGood> chooseGoods;
/** /**
* 是否使用用户积分 * 是否使用用户积分
* 1=不显示积分 * 1=不显示积分
...@@ -346,4 +352,43 @@ public class CreateOrderVo { ...@@ -346,4 +352,43 @@ public class CreateOrderVo {
*/ */
private String ruleId; 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 { ...@@ -135,4 +135,48 @@ public class ShoppingCartInfoRequestVo {
private String ruleId; 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; ...@@ -32,6 +32,7 @@ import cn.freemud.service.thirdparty.ShoppingCartClient;
import cn.freemud.service.thirdparty.StockClient; import cn.freemud.service.thirdparty.StockClient;
import cn.freemud.utils.LogUtil; import cn.freemud.utils.LogUtil;
import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.TypeReference; import com.alibaba.fastjson.TypeReference;
import com.freemud.api.assortment.datamanager.entity.db.AssortmentOpenPlatformIappWxappConfig; import com.freemud.api.assortment.datamanager.entity.db.AssortmentOpenPlatformIappWxappConfig;
...@@ -505,6 +506,8 @@ public class CheckOrder { ...@@ -505,6 +506,8 @@ public class CheckOrder {
} }
// 通过购物车获取优惠信息 // 通过购物车获取优惠信息
GetShoppingCartGoodsApportionDto requestDto = new GetShoppingCartGoodsApportionDto(); GetShoppingCartGoodsApportionDto requestDto = new GetShoppingCartGoodsApportionDto();
// 设置用户选择的买一赠一商品信息
shoppingCartInfoRequestVo.setChooseGoods(JSONArray.parseArray(JSONObject.toJSONString(createOrderVo.getChooseGoods()), ShoppingCartInfoRequestVo.ChooseGood.class));
requestDto.setShoppingCartInfoRequestVo(shoppingCartInfoRequestVo); requestDto.setShoppingCartInfoRequestVo(shoppingCartInfoRequestVo);
//加价购商品 校验放购物车校验 //加价购商品 校验放购物车校验
requestDto.setPremiumExchangeActivity(createOrderVo.getPremiumExchangeActivity()); requestDto.setPremiumExchangeActivity(createOrderVo.getPremiumExchangeActivity());
......
...@@ -162,6 +162,10 @@ public class ShoppingCartGoodsResponseVo extends ShoppingCartGoodsBaseResponseV ...@@ -162,6 +162,10 @@ public class ShoppingCartGoodsResponseVo extends ShoppingCartGoodsBaseResponseV
@Data @Data
public static class chooseGood { public static class chooseGood {
/**
* 活动code
*/
private String activeCode;
/** /**
* 活动类型 * 活动类型
...@@ -174,11 +178,26 @@ public class ShoppingCartGoodsResponseVo extends ShoppingCartGoodsBaseResponseV ...@@ -174,11 +178,26 @@ public class ShoppingCartGoodsResponseVo extends ShoppingCartGoodsBaseResponseV
private String goodsName; private String goodsName;
/** /**
* 赠送商品id
*/
private String goodsId;
/**
* 赠送商品数量
*/
private Integer qty;
/**
* 可兑换商品券编号 * 可兑换商品券编号
*/ */
private String couponCode ; private String couponCode ;
/** /**
* 可兑换券的数量
*/
private Integer couponQty ;
/**
* 可兑换商品券名称 * 可兑换商品券名称
*/ */
private String couponName ; private String couponName ;
......
...@@ -62,6 +62,12 @@ public class ShoppingCartInfoRequestVo extends BaseRequestVo { ...@@ -62,6 +62,12 @@ public class ShoppingCartInfoRequestVo extends BaseRequestVo {
* 加价购商品 * 加价购商品
*/ */
private List<SendGoods> sendGoods; private List<SendGoods> sendGoods;
/**
* 买一赠一寄件商品
*/
private List<ChooseGood> chooseGoods;
/** /**
* 是否使用用户积分 * 是否使用用户积分
* 1=不显示积分 * 1=不显示积分
...@@ -131,4 +137,43 @@ public class ShoppingCartInfoRequestVo extends BaseRequestVo { ...@@ -131,4 +137,43 @@ public class ShoppingCartInfoRequestVo extends BaseRequestVo {
*/ */
private String freightCouponCode; 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 { ...@@ -319,7 +319,8 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService {
, allCartGoodsList , allCartGoodsList
, new ArrayList<>() //券 , new ArrayList<>() //券
, null //加价购商品 , null //加价购商品
, deliveryAmount); , deliveryAmount
, null);
// //
sharingCartService.distribute(discountResult sharingCartService.distribute(discountResult
...@@ -443,7 +444,8 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService { ...@@ -443,7 +444,8 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService {
, cartGoodsList , cartGoodsList
, new ArrayList() //券 , new ArrayList() //券
, null //加价购商品 , null //加价购商品
, deliveryAmount); , deliveryAmount
, null);
sharingCartService.distribute(discountResult sharingCartService.distribute(discountResult
, cartGoodsList , cartGoodsList
...@@ -598,7 +600,8 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService { ...@@ -598,7 +600,8 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService {
, cartGoodsList , cartGoodsList
, coupons , coupons
, sendGoods , sendGoods
, deliveryAmount); , deliveryAmount
, null);
sharingCartService.distribute(calculationSharingDiscountResult sharingCartService.distribute(calculationSharingDiscountResult
, cartGoodsList , cartGoodsList
, shoppingCartGoodsResponseVo , shoppingCartGoodsResponseVo
...@@ -802,7 +805,8 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService { ...@@ -802,7 +805,8 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService {
, cartGoodsList , cartGoodsList
, coupons , coupons
, shoppingCartInfoRequestVo.getSendGoods() , shoppingCartInfoRequestVo.getSendGoods()
, deliveryAmount); , deliveryAmount
, shoppingCartInfoRequestVo);
//直接利用促销返回做均摊 //直接利用促销返回做均摊
sharingEquallyService.equally(discountResult sharingEquallyService.equally(discountResult
......
...@@ -13,6 +13,8 @@ import cn.freemud.enums.*; ...@@ -13,6 +13,8 @@ import cn.freemud.enums.*;
import cn.freemud.interceptor.ServiceException; import cn.freemud.interceptor.ServiceException;
import cn.freemud.service.CommonService; import cn.freemud.service.CommonService;
import cn.freemud.service.CouponService; 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.impl.AssortmentSdkService;
import cn.freemud.service.thirdparty.CalculationClient; import cn.freemud.service.thirdparty.CalculationClient;
import cn.freemud.utils.PropertyConvertUtil; import cn.freemud.utils.PropertyConvertUtil;
...@@ -57,6 +59,9 @@ public class CalculationSharingDiscountService { ...@@ -57,6 +59,9 @@ public class CalculationSharingDiscountService {
@Autowired @Autowired
private CalculationClient calculationClient; private CalculationClient calculationClient;
@Autowired
private ActiveFactory activeFactory;
public CalculationSharingDiscountResponseDto.CalculationDiscountResult getCalculationSharingDiscountResult(String menuType public CalculationSharingDiscountResponseDto.CalculationDiscountResult getCalculationSharingDiscountResult(String menuType
, String partnerId , String partnerId
, String storeId , String storeId
...@@ -67,7 +72,8 @@ public class CalculationSharingDiscountService { ...@@ -67,7 +72,8 @@ public class CalculationSharingDiscountService {
, List<CartGoods> cartGoodsList , List<CartGoods> cartGoodsList
, List<CalculationSharingDiscountRequestDto.CalculationDiscountCoupon> coupons , List<CalculationSharingDiscountRequestDto.CalculationDiscountCoupon> coupons
, List<ShoppingCartInfoRequestVo.SendGoods> sendGoodsList , List<ShoppingCartInfoRequestVo.SendGoods> sendGoodsList
, Long deliveryAmount) { , Long deliveryAmount
, ShoppingCartInfoRequestVo shoppingCartInfoRequestVo) {
CalculationSharingDiscountRequestDto calculationSharingDiscountRequestDto = this.commonSharingDto(partnerId, storeId, userId, appId, orderType); CalculationSharingDiscountRequestDto calculationSharingDiscountRequestDto = this.commonSharingDto(partnerId, storeId, userId, appId, orderType);
...@@ -159,6 +165,11 @@ public class CalculationSharingDiscountService { ...@@ -159,6 +165,11 @@ public class CalculationSharingDiscountService {
calculationSharingDiscountRequestDto.setIsMember(isMember); calculationSharingDiscountRequestDto.setIsMember(isMember);
CalculationSharingDiscountResponseDto sharingDiscountResponseDto; CalculationSharingDiscountResponseDto sharingDiscountResponseDto;
// 构建买一送一寄杯活动用户选择信息
ActiveService activeService = activeFactory.getBuildChooseGoodsService(partnerId);
activeService.buildChooseGoodsService(calculationSharingDiscountRequestDto,shoppingCartInfoRequestVo == null ? null : shoppingCartInfoRequestVo.getChooseGoods());
try { try {
log.info("start sharing discount dto={}", JSON.toJSONString(calculationSharingDiscountRequestDto)); log.info("start sharing discount dto={}", JSON.toJSONString(calculationSharingDiscountRequestDto));
sharingDiscountResponseDto = calculationClient.calculationSharingDiscount(calculationSharingDiscountRequestDto); sharingDiscountResponseDto = calculationClient.calculationSharingDiscount(calculationSharingDiscountRequestDto);
......
...@@ -128,6 +128,7 @@ public class CalculationSharingEquallyService { ...@@ -128,6 +128,7 @@ public class CalculationSharingEquallyService {
* 加价购商品 * 加价购商品
*/ */
additionSharingService.equally(shoppingCartInfoRequestVo, shoppingCartGoodsDto, discountResult, premiumExchangeActivity, shoppingCartGoodsResponseVo); additionSharingService.equally(shoppingCartInfoRequestVo, shoppingCartGoodsDto, discountResult, premiumExchangeActivity, shoppingCartGoodsResponseVo);
/** /**
* 积分抵扣 * 积分抵扣
*/ */
......
...@@ -230,7 +230,11 @@ public class BuyOneGiveOneSendService { ...@@ -230,7 +230,11 @@ public class BuyOneGiveOneSendService {
innerSendGoods.forEach(innerSendGood -> { innerSendGoods.forEach(innerSendGood -> {
ShoppingCartGoodsResponseVo.chooseGood chooseGood = new ShoppingCartGoodsResponseVo.chooseGood(); ShoppingCartGoodsResponseVo.chooseGood chooseGood = new ShoppingCartGoodsResponseVo.chooseGood();
chooseGood.setActiveCode(sendActivity.getActivityCode());
chooseGood.setActiveType(sendActivity.getActivityType()); chooseGood.setActiveType(sendActivity.getActivityType());
chooseGood.setGoodsId(innerSendGood.getGoodsId());
chooseGood.setQty(innerSendGood.getSendNumber());
chooseGood.setCouponQty(1);
chooseGood.setCouponCode(innerSendGood.getSendCouponCode()); chooseGood.setCouponCode(innerSendGood.getSendCouponCode());
chooseGood.setCouponName(innerSendGood.getSendCouponName()); chooseGood.setCouponName(innerSendGood.getSendCouponName());
chooseGood.setSendCoupon(innerSendGood.getSendCoupon()); chooseGood.setSendCoupon(innerSendGood.getSendCoupon());
...@@ -243,4 +247,6 @@ public class BuyOneGiveOneSendService { ...@@ -243,4 +247,6 @@ public class BuyOneGiveOneSendService {
shoppingCartGoodsResponseVo.setChooseGoods(chooseGoods); 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