Commit 7d033456 by yu.sun

sunyu::update::new function about p5v1

parent 60cb0f5a
......@@ -200,6 +200,10 @@ public class CartGoods {
*/
private Boolean isTableware = false;
/**
* 是否是月享卡商品
*/
private int isMonthCard = 0;
/**
* 第三方商品编码
*/
private String customerCode;
......
package cn.freemud.entities.vo;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* All rights Reserved, Designed By sunary.site
*
* @version v1.0
* @Title: IntelliJ IDEA
* @Package cn.freemud.entities.vo
* @Description: 请简单描述下这个类是做什么用的
* @author: yu.sun
* @date: 2021-01-11 15:18:36
* @Copyright: 2019 www.freemud.cn Inc. All rights reserved.
*/
@Data
@NoArgsConstructor
public class MonthCardVo {
/**
* 卡号
*/
private String no;
/**
* 月享卡类型:1.月享卡(单商品购买);2.月享卡(多商品购买);3.普通月卡
*/
private Integer type;
}
......@@ -170,14 +170,21 @@ public class ShoppingCartMCoffeeServiceImpl {
if (CollectionUtils.isEmpty(oldCartGoodsList)) {
oldCartGoodsList = new ArrayList<>();
}
if(mcCafeTablewareSkuId.equals(skuId)) {
//餐具和月享卡数量限制
if(mcCafeTablewareSkuId.equals(skuId) || Objects.equals(addShoppingCartGoodsRequestVo.getIsMonthCard(),1)) {
for(CartGoods cartGoods : oldCartGoodsList) {
if(mcCafeTablewareSkuId.equals(cartGoods.getSkuId())) {
if (mcCafeTablewareSkuId.equals(cartGoods.getSkuId())) {
return ResponseUtil.error(ResponseResult.SHOPPING_CART_ADD_ERROR.getCode(), "不能重复添加餐具商品");
}
if (Objects.equals(addShoppingCartGoodsRequestVo.getIsMonthCard(),1) && cartGoods.getQty()>9){
shoppingCartGoodsResponseVo.setChanged(false);
shoppingCartGoodsResponseVo.setToastMsg("月享卡最多购买10张");
return ResponseUtil.success(shoppingCartGoodsResponseVo);
}
}
}
//商品券已添加情况校验
List<ActivityCalculationDiscountRequestDto.CalculationDiscountCoupon> coupons = checkGoodsCoupon(oldCartGoodsList, operationType, couponCode,goodsId, addShoppingCartGoodsRequestVo);
CartGoods addCartGoods = convent2CartGoods(addShoppingCartGoodsRequestVo, goodsId ,vo);
......@@ -196,6 +203,14 @@ public class ShoppingCartMCoffeeServiceImpl {
addCartGoods.setCouponName(couponName);
}
if (Objects.equals(1,addShoppingCartGoodsRequestVo.getIsMonthCard())){
CustomerInfoVo userLoginInfoDto = getCustomerInfoVo(sessionId);
couponName = getCouponNameByCode(addShoppingCartGoodsRequestVo.getMonthCardInfo().getNo(),userLoginInfoDto,
BusinessTypeEnum.getByType(addShoppingCartGoodsRequestVo.getMenuType()).getCode(),storeId);
addCartGoods.setCouponName(couponName);
assortmentSdkService.setShoppingCartCouponCode(partnerId, storeId, userId, addShoppingCartGoodsRequestVo.getMonthCardInfo().getNo(), shoppingCartBaseService, SaveCouponType.MON_COUPON.getCode());
}
// 如果购物车中有商品券,则当前添加的商品是特价商品时,需要提示“已选商品券,与其他优惠商品不同享,商品将恢复原价”
boolean haveCouponProduct = oldCartGoodsList.parallelStream().anyMatch(k -> k.getCartGoodsUid().startsWith(CommonsConstant.COUPON_PREFIX));
if (haveCouponProduct && isSpecialGoods(partnerId, storeId, userId, appId, goodsId, orderType)) {
......@@ -206,9 +221,12 @@ public class ShoppingCartMCoffeeServiceImpl {
// 购物车数据更新(保存商品原价)
List<CartGoods> newCartGoods = updateCartGoodsLegal(partnerId, storeId, orderType, tableNumber, menuType, userId, addCartGoods, shoppingCartGoodsResponseVo, oldCartGoodsList);
//月享卡购卡费用
Long payCardPrice =
newCartGoods.stream().filter(goods->Objects.equals(1,goods.getIsMonthCard())).mapToLong(CartGoods::getOriginalPrice).sum();
// 促销活动等价格计算
calculationService.updateShoppingCartGoodsDiscount(partnerId, storeId, userId, appId, orderType, assortmentCustomerInfoVo.isMemberPaid(), menuType, receiveId, null,
newCartGoods, coupons, new ArrayList<>(), shoppingCartGoodsResponseVo, null);
newCartGoods, coupons, new ArrayList<>(), shoppingCartGoodsResponseVo, payCardPrice);
// 返回购物车数据
setAddAndUpdateResponse(shoppingCartGoodsResponseVo, newCartGoods, null, ShoppingCartConstant.ADD_AND_UPDATE, null);
......@@ -423,19 +441,36 @@ public class ShoppingCartMCoffeeServiceImpl {
temList.addAll(checkCartGoods(partnerId, storeId, orderType, menuType, shoppingCartGoodsResponseVo, Arrays.asList(goods)));
}
cartGoodsList = temList;
//如果是餐具商品,则放到最后
if (CollectionUtils.isNotEmpty(cartGoodsList)) {
int size = cartGoodsList.size();
Boolean hasTableWareSku = false;
for(int i=0;i<size;i++) {
//如果是餐具商品,则放到最后
if(cartGoodsList.get(i).getSkuId().equals(mcCafeTablewareSkuId)) {
CartGoods cartGoods = cartGoodsList.get(i);
cartGoods.setIsTableware(true);
hasTableWareSku = true;
if(i != size-1) {
cartGoodsList.remove(i);
cartGoodsList.add(cartGoods);
break;
}
}
//如果有餐具,月享卡放倒数第二; 没有餐具,月享卡放最后
if(Objects.equals(1,cartGoodsList.get(i).getIsMonthCard())) {
CartGoods cartGoods = cartGoodsList.get(i);
if(hasTableWareSku && i != size-2) {
cartGoodsList.remove(i);
cartGoodsList.add(cartGoods);
break;
}else{
if(i != size-1) {
cartGoods.setIsMonthCard(1);
cartGoodsList.add(cartGoods);
break;
}
}
}
}
}
// 重新存储最新购物车
......@@ -1410,6 +1445,7 @@ public class ShoppingCartMCoffeeServiceImpl {
cartGoods.setSpuId(spuId);
cartGoods.setSkuId(skuId);
cartGoods.setQty(qty);
cartGoods.setIsMonthCard(addShoppingCartGoodsRequestVo.getIsMonthCard());
cartGoods.setCouponCode(addShoppingCartGoodsRequestVo.getCouponCode());
Integer goodsType = StringUtils.isEmpty(skuId) || ObjectUtils.equals(spuId, skuId) ? GoodsTypeEnum.SPU_GOODS.getGoodsType() : GoodsTypeEnum.SKU_GOODS.getGoodsType();
if (spuId.startsWith(CommonsConstant.COUPON_PREFIX)) {
......@@ -1420,12 +1456,16 @@ public class ShoppingCartMCoffeeServiceImpl {
// cartGoods.setCartGoodsUid(spuId);
} else if (CollectionUtils.isNotEmpty(addShoppingCartGoodsRequestVo.getProductComboList()) || CollectionUtils.isNotEmpty(addShoppingCartGoodsRequestVo.getProductGroupList())) {
goodsType = GoodsTypeEnum.SET_MEAL_GOODS.getGoodsType();
} else if (CommonsConstant.COUPON_TYPE == addShoppingCartGoodsRequestVo.getCouponType()){
} else if (CommonsConstant.COUPON_TYPE.equals(addShoppingCartGoodsRequestVo.getCouponType())){
goodsType = GoodsTypeEnum.ALL_COUPON_GOODS.getGoodsType();
}
if (addShoppingCartGoodsRequestVo.getOperationType() != null && addShoppingCartGoodsRequestVo.getOperationType() == 2) {
goodsType = GoodsTypeEnum.REDUCE_PRICE_GOODS.getGoodsType();
}
//月享卡卡号
if (null != addShoppingCartGoodsRequestVo.getMonthCardInfo()){
cartGoods.setCouponCode(addShoppingCartGoodsRequestVo.getMonthCardInfo().getNo());
}
cartGoods.setGoodsType(goodsType);
cartGoods.setExtra(addShoppingCartGoodsRequestVo.getExtra());
cartGoods.setSpecialExtra(addShoppingCartGoodsRequestVo.getSpecialExtra());
......
package cn.freemud.service.impl.mcoffee.entity;
import cn.freemud.entities.vo.CartGoods;
import cn.freemud.entities.vo.ComboxGoodsRequestVo;
import cn.freemud.entities.vo.MaterialRequestVo;
import cn.freemud.entities.vo.ShoppingCartInfoRequestVo;
import cn.freemud.entities.vo.*;
import lombok.Data;
import org.hibernate.validator.constraints.NotEmpty;
......@@ -133,4 +130,13 @@ public class MCoffeeAddGoodsRequestVo {
*/
private String groupName;
/**
* 当前商品是否为月享卡,0:否,1:是
*/
private int isMonthCard=0;
/**
* 月享卡加购信息
*/
private MonthCardVo monthCardInfo;
}
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