Commit 6782d598 by 胡博文

Merge branch 'feature/feature/mn-coupon-bowen-0830'

# Conflicts:
#	shopping-cart-application-service/src/main/java/cn/freemud/service/impl/ShoppingCartNewServiceImpl.java
parents 1e16ec9b d92f3331
......@@ -104,6 +104,12 @@ public class CartGoods {
* 商品券code
*/
private String couponCode;
/**
* 0 可用 1 不可用 (结算页识别是否需要传买M赠N券code)
* 默认不可用,经过算价后进行更新。
*/
private Integer canUseCoupon = 1;
/**
* 商品券门槛金额
*/
......
......@@ -36,6 +36,8 @@ public class CartParamDto {
private String cartGoodsUid;
private Integer canUseCoupon;
private Integer qty;
private MealClearOperationEnum operationType;
......
......@@ -941,6 +941,16 @@ public interface ShoppingCartBaseService {
BaseResponse<List<CartGoods>> updateGoodsQty(CartParamDto cartParamDto, String trackingNo);
/**
* 更新券状态
*
* @param cartParamDto
* @param trackingNo
* @return
*/
BaseResponse updateGoodsCouponStatus(CartParamDto cartParamDto, String trackingNo);
/**
* 查询组织机构
* @param partnerId
* @param storeId
......
......@@ -194,6 +194,11 @@ public class CollageCartBaseServiceImpl implements ShoppingCartBaseService {
}
}
@Override
public BaseResponse updateGoodsCouponStatus(CartParamDto cartParamDto, String trackingNo) {
return null;
}
/**
* 获取当前购物车版本
* 默认0
......
......@@ -442,6 +442,11 @@ public class MealCartBaseServiceImpl implements ShoppingCartBaseService {
}
@Override
public BaseResponse updateGoodsCouponStatus(CartParamDto cartParamDto, String trackingNo) {
return null;
}
@Override
public void checkNoProductExistMenu(CheckCartRequest checkCartRequest, Set<String> keySet) {
// 当商品不存在于菜单中且不是商品券时,需置空移除
List<String> removeList = new ArrayList<>();
......
......@@ -248,6 +248,32 @@ public class ShoppingCartBaseServiceImpl implements ShoppingCartBaseService {
}
}
/**
* 更新购物车券状态
*
* @param cartParamDto
* @param trackingNo
* @return
*/
@Override
public BaseResponse updateGoodsCouponStatus(CartParamDto cartParamDto, String trackingNo) {
try {
String redisKey = getShoppingCartGoodsKey(cartParamDto);
BoundHashOperations<String, String, CartGoods> operations = redisTemplate.boundHashOps(redisKey);
CartGoods cartGoods = operations.get(cartParamDto.getCartGoodsUid());
if (cartGoods != null) {
// 更新券状态
cartGoods.setCanUseCoupon(cartParamDto.getCanUseCoupon());
operations.put(cartParamDto.getCartGoodsUid(), cartGoods);
}
//return this.getCartGoodsList(cartParamDto, trackingNo);
} catch (Exception e) {
ShoppingSdkLogUtil.printErrorLog("assortment-shoppingcart-sdk", trackingNo, e.getMessage(), "updateGoodsCouponStatus", cartParamDto, e, Level.ERROR);
}
return CartResponseUtil.success();
}
@Override
public BaseResponse clear(CartParamDto cartParamDto, String trackingNo) {
try {
......
......@@ -128,6 +128,11 @@ public class ShoppingCartMallBaseServiceImpl implements ShoppingCartBaseService
}
@Override
public BaseResponse updateGoodsCouponStatus(CartParamDto cartParamDto, String trackingNo) {
return null;
}
@Override
public BaseResponse clear(CartParamDto cartParamDto, String trackingNo) {
try {
redisTemplate.delete(this.getShoppingCartGoodsKey(cartParamDto));
......
......@@ -102,6 +102,11 @@ public class CreateOrderVo {
private Byte marketingType;
/**
* 1、结算页 0
*/
private Integer flag;
/**
* 到店类型 orderType 传1的时候 如果reachStoreTyp为空转成订单类型4 如果不为空存储4(打包带走)和5(店内就餐)
*/
private Integer reachStoreType;
......
......@@ -57,6 +57,11 @@ public class ShoppingCartInfoRequestVo {
*/
private Integer flag;
/**
* 1 为结算页用券
*/
private Integer useCouponFlag;
/**
* 优惠券code
*/
private String couponCode;
......
......@@ -667,6 +667,8 @@ public class CheckOrder {
.useCustomerScore(createOrderVo.getUseCustomerScore())
.buyMemberCard(buyMemberCard)
.menuType(createOrderVo.getMenuType())
.useCouponFlag(1)//结算页
//.flag(1)
// 预定单类型传递 购物车中进行查询
.bizType(createOrderVo.getBizType())
.build();
......
......@@ -106,7 +106,6 @@ public class AbstractListCartGoodsService implements ListCartGoodsService {
// 获取购物车和加车商品信息
CheckBussinessRulesBO checkBussinessRulesBO = this.getShoppingCartInfo(listCartGoodsBO);
// 业务校验,例如商品数量库存之类的信息
AddGoodsToShoppingCartBO addGoodsToShoppingCartBO = this.checkBusinessRules(listCartGoodsBO, checkBussinessRulesBO);
......
......@@ -13,6 +13,7 @@
package cn.freemud.entities.vo;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.freemud.sdk.api.assortment.shoppingcart.constant.CommonsConstant;
import lombok.Data;
import lombok.NoArgsConstructor;
......@@ -93,6 +94,12 @@ public class CartGoods {
* 商品券code
*/
private String couponCode;
/**
* 0 可用 1 不可用 (结算页识别是否需要传买M赠N券code)
*/
@JsonIgnore
private Integer canUseCoupon = 1;
/**
* 商品券名称
*/
......
......@@ -57,6 +57,8 @@ public class ShoppingCartInfoRequestVo extends BaseRequestVo {
* 结算页会查询用户优惠券,点餐页不会查询用户优惠券
*/
private Integer flag;
//1:结算页
private Integer useCouponFlag;
/**
* 优惠券code
*/
......
......@@ -342,9 +342,9 @@ public abstract class AbstractShoppingCartImpl implements ShoppingCartNewService
//外卖场景下 查询门店配送信息
if(BusinessTypeEnum.SAAS_DELIVERY.getCode().equals(menuType)){
calculationDiscountResult = this.getActivityCalculationDiscountResponse(partnerId, storeId, userId, appId, orderType,isMember, cartGoodsList, coupons, sendGoodsList,BusinessTypeEnum.getByType(menuType).getCode(),deliveryAmount,null);
calculationDiscountResult = this.getActivityCalculationDiscountResponse(partnerId, storeId, userId, appId, orderType,isMember, cartGoodsList, coupons, sendGoodsList,BusinessTypeEnum.getByType(menuType).getCode(),deliveryAmount,null, null);
}else{
calculationDiscountResult = this.getActivityCalculationDiscountResponse(partnerId, storeId, userId, appId, orderType,isMember, cartGoodsList, coupons, sendGoodsList,BusinessTypeEnum.getByType(menuType).getCode(),null,null);
calculationDiscountResult = this.getActivityCalculationDiscountResponse(partnerId, storeId, userId, appId, orderType,isMember, cartGoodsList, coupons, sendGoodsList,BusinessTypeEnum.getByType(menuType).getCode(),null,null, null);
}
return calculationDiscountResult;
......
......@@ -97,7 +97,7 @@ public interface ShoppingCartNewService {
boolean isMember,
List<CartGoods> cartGoodsList,
List<ActivityCalculationDiscountRequestDto.CalculationDiscountCoupon> coupons,
List<ShoppingCartInfoRequestVo.SendGoods> sendGoodsList,String menuType,Long distributionFee,Integer bizType);
List<ShoppingCartInfoRequestVo.SendGoods> sendGoodsList,String menuType,Long distributionFee,Integer bizType, Integer accountFlag);
List<CartGoods> updateCartGoodsLegal(CartGoods cartGoods, String userId, ShoppingCartGoodsBaseResponseVo shoppingCartGoodsResponseVo, AddShoppingCartGoodsRequestVo addShoppingCartGoodsRequestVo, List<CartGoods> oldAllCartGoodsList);
......
......@@ -20,7 +20,9 @@ import com.freemud.application.sdk.api.base.SDKCommonBaseContextWare;
import com.freemud.application.sdk.api.log.LogThreadLocal;
import com.freemud.application.sdk.api.productcenter.domain.ProductBeanDTO;
import com.freemud.sdk.api.assortment.shoppingcart.constant.CommonsConstant;
import com.freemud.sdk.api.assortment.shoppingcart.constant.RedisKeyConstant;
import com.freemud.sdk.api.assortment.shoppingcart.constant.ShoppingCartConstant;
import com.freemud.sdk.api.assortment.shoppingcart.enums.BizTypeEnum;
import com.freemud.sdk.api.assortment.shoppingcart.enums.BusinessTypeEnum;
import com.freemud.sdk.api.assortment.shoppingcart.request.CheckCartRequest;
import com.freemud.sdk.api.assortment.shoppingcart.request.GetProductInfoRequest;
......@@ -37,6 +39,7 @@ import cn.freemud.entities.dto.GetMenuResponseDto.DataBean.RootNodeBean.Children
import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
import java.util.concurrent.TimeUnit;
import java.util.stream.Collectors;
......@@ -101,6 +104,37 @@ public class AssortmentSdkService {
return updateNowBuyGoodsQtyBySdk(buyType,partnerId, userId, storeId, cartGoodsUid, qty, tableNumber, shoppingCartService,bizType);
}
/**
* 更新购物车 买M赠N券商品状态
*
* @param partnerId 商户号
* @param userId 用户id
* @param storeId 门店id
* @return
*/
public void updateGoodsCouponStatus(String partnerId, String userId, String storeId, List<CartGoods> cartGoods,ShoppingCartBaseService shoppingCartService,Integer bizType) {
com.freemud.sdk.api.assortment.shoppingcart.domain.CartParamDto cartParamDto = getCartParamDto(partnerId, storeId, userId);
for (CartGoods cartGood : cartGoods) {
int buyType = 0 ;
cartParamDto.setCartGoodsUid(cartGood.getCartGoodsUid());
// 0 表示券可用 1 表示不可用
cartParamDto.setCanUseCoupon(0);
// cartParamDto.setTableNumber(tableNumber);
cartParamDto.setUserId(userId);
cartParamDto.setBizType(bizType);
//立即购买==1 ,设置新的缓存key
if(buyType == ShoppingCartConstant.NOW_BUY_TYPE) {
cartParamDto.setBuyType(buyType);
}
shoppingCartService.updateGoodsCouponStatus(cartParamDto, LogThreadLocal.getTrackingNo());
}
}
/**
* 调用聚合sdk获取缓存中购物车信息
*
......
......@@ -790,7 +790,7 @@ public class ShoppingCartCollageServiceImpl extends AbstractShoppingCartImpl imp
}
@Override
public ActivityCalculationDiscountResponseDto.CalculationDiscountResult getActivityCalculationDiscountResponse(String partnerId, String storeId, String userId, String appId, Integer orderType, boolean isMember, List<CartGoods> cartGoodsList, List<ActivityCalculationDiscountRequestDto.CalculationDiscountCoupon> coupons, List<ShoppingCartInfoRequestVo.SendGoods> sendGoodsList, String menuType, Long distributionFee,Integer bizType) {
public ActivityCalculationDiscountResponseDto.CalculationDiscountResult getActivityCalculationDiscountResponse(String partnerId, String storeId, String userId, String appId, Integer orderType, boolean isMember, List<CartGoods> cartGoodsList, List<ActivityCalculationDiscountRequestDto.CalculationDiscountCoupon> coupons, List<ShoppingCartInfoRequestVo.SendGoods> sendGoodsList, String menuType, Long distributionFee,Integer bizType, Integer accoutFlag) {
ActivityCalculationDiscountRequestDto activityCalculationDiscountRequestDto = getActivityCalculationDiscountRequestDto(partnerId, storeId, userId, appId, orderType);
List<ActivityCalculationDiscountRequestDto.CalculationDiscountGoods> calculationDiscountGoodsList = new ArrayList<>();
// 校验后有效的商品券map
......
......@@ -138,6 +138,7 @@ public class ShoppingCartMallServiceImpl implements ShoppingCartNewService {
String menuType = addShoppingCartGoodsRequestVo.getMenuType();
Integer orderType = addShoppingCartGoodsRequestVo.getOrderType();
addShoppingCartGoodsRequestVo.setShopId(storeId);
Integer accountType = 0; //非结算页
//清空临时购物车
// 构造请求参数,进行清空购物车
if(ShoppingCartConstant.NOW_BUY_TYPE == addShoppingCartGoodsRequestVo.getBuyType()) {
......@@ -189,7 +190,7 @@ public class ShoppingCartMallServiceImpl implements ShoppingCartNewService {
ActivityQueryDto activityQueryDto = activityAdapter.getActivityQueryDto(partnerId, storeId, userId, appId, addShoppingCartGoodsRequestVo.getOrderType());
ActivityCalculationDiscountResponseDto.CalculationDiscountResult discountResult = null;
discountResult = sharingDiscountService.getCalculationSharingDiscountResult(menuType, partnerId, storeId, userId, appId, orderType, assortmentCustomerInfoVo.isMemberPaid(), allCartGoodsList, new ArrayList<>(), null, deliveryAmount, null,null);
discountResult = sharingDiscountService.getCalculationSharingDiscountResult(menuType, partnerId, storeId, userId, appId, orderType, assortmentCustomerInfoVo.isMemberPaid(), allCartGoodsList, new ArrayList<>(), null, deliveryAmount, null,null, accountType);
sharingCartService.distribute(discountResult, allCartGoodsList, shoppingCartGoodsResponseVo, null, null, null, activityQueryDto, menuType, deliveryAmount, ShoppingCartConstant.ADD_AND_UPDATE, partnerId, null, userId, storeId);
buildShoppingCartGoodsResponse(shoppingCartGoodsResponseVo,discountResult,null,partnerId);
......@@ -245,6 +246,7 @@ public class ShoppingCartMallServiceImpl implements ShoppingCartNewService {
String receiveId = updateShoppingCartGoodsQtyRequestVo.getReceiveId();
String menuType = updateShoppingCartGoodsQtyRequestVo.getMenuType();
Integer orderType=updateShoppingCartGoodsQtyRequestVo.getOrderType();
Integer accountFlag = 0;// 非结算页
// 先验证商品是否存在
CartGoods cartGoods = assortmentSdkService.getCartGoodsBySdk(partnerId, userId, storeId, cartGoodsUid, "", shoppingCartBaseService,null);
......@@ -283,7 +285,7 @@ public class ShoppingCartMallServiceImpl implements ShoppingCartNewService {
, new ArrayList() //券
, null //加价购商品
, deliveryAmount
, null,null);
, null,null, accountFlag);
sharingCartService.distribute(discountResult
, cartGoodsList
......@@ -364,6 +366,7 @@ public class ShoppingCartMallServiceImpl implements ShoppingCartNewService {
String couponCode = shoppingCartInfoRequestVo.getCouponCode();
String activityCode = shoppingCartInfoRequestVo.getActivityCode();
List<ChooseCouponVo> couponCodes = shoppingCartInfoRequestVo.getCouponCodes();
Integer accountFlag = shoppingCartInfoRequestVo.getFlag();
// 兼容老版本
if (CollectionUtils.isNotEmpty(couponCodes) && StringUtils.isEmpty(couponCode)) {
ChooseCouponVo otherCouponCode = couponCodes.stream()
......@@ -441,7 +444,7 @@ public class ShoppingCartMallServiceImpl implements ShoppingCartNewService {
, coupons
, sendGoods
, deliveryAmount
, null,null);
, null,null, accountFlag);
sharingCartService.distribute(calculationSharingDiscountResult
, cartGoodsList
, shoppingCartGoodsResponseVo
......@@ -529,6 +532,7 @@ public class ShoppingCartMallServiceImpl implements ShoppingCartNewService {
String storeId = shoppingCartInfoRequestVo.getShopId();
String couponCode = shoppingCartInfoRequestVo.getCouponCode();
String activityCode = shoppingCartInfoRequestVo.getActivityCode();
Integer accountFlag = shoppingCartInfoRequestVo.getFlag();
List<ChooseCouponVo> couponCodes = shoppingCartInfoRequestVo.getCouponCodes();
if (Objects.isNull(couponCode) && CollectionUtils.isNotEmpty(couponCodes)) {
ChooseCouponVo otherCouponCode = couponCodes.stream()
......@@ -598,7 +602,7 @@ public class ShoppingCartMallServiceImpl implements ShoppingCartNewService {
, coupons
, shoppingCartInfoRequestVo.getSendGoods()
, deliveryAmount
, shoppingCartInfoRequestVo,null);
, shoppingCartInfoRequestVo,null, accountFlag);
// 活动校验
calculationSharingValidatorService.validator(discountResult
......@@ -630,8 +634,8 @@ public class ShoppingCartMallServiceImpl implements ShoppingCartNewService {
@Override
public ActivityCalculationDiscountResponseDto.CalculationDiscountResult getActivityCalculationDiscountResponse(
String partnerId, String storeId, String userId, String appId, Integer orderType,boolean isMember, List<CartGoods> cartGoodsList,
List<ActivityCalculationDiscountRequestDto.CalculationDiscountCoupon> coupons, List<ShoppingCartInfoRequestVo.SendGoods> sendGoodsList,String menuType,Long distributionFee,Integer bizType) {
String partnerId, String storeId, String userId, String appId, Integer orderType, boolean isMember, List<CartGoods> cartGoodsList,
List<ActivityCalculationDiscountRequestDto.CalculationDiscountCoupon> coupons, List<ShoppingCartInfoRequestVo.SendGoods> sendGoodsList, String menuType, Long distributionFee, Integer bizType, Integer accountFlag) {
return null;
}
......
......@@ -427,7 +427,7 @@ public class ShoppingCartMealServiceImpl implements ShoppingCartNewService {
if (CollectionUtils.isEmpty(cartGoodsList)) {
return;
}
ActivityCalculationDiscountResponseDto.CalculationDiscountResult calculationDiscountResult = this.getActivityCalculationDiscountResponse(partnerId, storeId, userId, appId, orderType, isMember, cartGoodsList, new ArrayList<>(), new ArrayList<>(), BusinessTypeEnum.SAAS_MALL.getCode(), 0L,null);
ActivityCalculationDiscountResponseDto.CalculationDiscountResult calculationDiscountResult = this.getActivityCalculationDiscountResponse(partnerId, storeId, userId, appId, orderType, isMember, cartGoodsList, new ArrayList<>(), new ArrayList<>(), BusinessTypeEnum.SAAS_MALL.getCode(), 0L,null, null);
if(calculationDiscountResult == null) {
return;
}
......@@ -556,7 +556,7 @@ public class ShoppingCartMealServiceImpl implements ShoppingCartNewService {
@Override
public ActivityCalculationDiscountResponseDto.CalculationDiscountResult getActivityCalculationDiscountResponse(String partnerId, String storeId, String userId, String appId, Integer orderType, boolean isMember,
List<CartGoods> cartGoodsList, List<ActivityCalculationDiscountRequestDto.CalculationDiscountCoupon> coupons, List<ShoppingCartInfoRequestVo.SendGoods> sendGoodsList,String menuType,Long distributionFee,Integer bizType) {
List<CartGoods> cartGoodsList, List<ActivityCalculationDiscountRequestDto.CalculationDiscountCoupon> coupons, List<ShoppingCartInfoRequestVo.SendGoods> sendGoodsList,String menuType,Long distributionFee,Integer bizType, Integer accountFlag) {
ActivityCalculationDiscountRequestDto activityCalculationDiscountRequestDto = getActivityCalculationDiscountRequestDto(partnerId, storeId, userId, appId, orderType);
List<ActivityCalculationDiscountRequestDto.CalculationDiscountGoods> calculationDiscountGoodsList = new ArrayList<>();
cartGoodsList = cartGoodsList.stream().filter(t -> !isWeightProduct(t)).collect(Collectors.toList());
......
......@@ -83,7 +83,7 @@ public class CalculationSharingDiscountService {
, List<ActivityCalculationDiscountRequestDto.CalculationDiscountCoupon> coupons
, List<ShoppingCartInfoRequestVo.SendGoods> sendGoodsList
, Long deliveryAmount
, ShoppingCartInfoRequestVo shoppingCartInfoRequestVo,Integer bizType) {
, ShoppingCartInfoRequestVo shoppingCartInfoRequestVo,Integer bizType, Integer accountFlag) {
ActivityCalculationDiscountRequestDto calculationSharingDiscountRequestDto = this.commonSharingDto(partnerId, storeId, userId, appId, orderType);
......@@ -155,8 +155,15 @@ public class CalculationSharingDiscountService {
coupon.setCode(checkSpqInfo.getCouponCode());
coupon.setActivityCode(checkSpqInfo.getActiveCode());
ActivityCalculationDiscountRequestDto.CalculationDiscountCoupon calculationDiscountCoupon = coupons.stream().filter(p -> coupon.getActivityCode().equals(p.getActivityCode()) && coupon.getCode().equals(p.getCode())).findFirst().orElse(null);
accountFlag = accountFlag == null ? 0 : accountFlag;
if (calculationDiscountCoupon == null) {
coupons.add(coupon);
if (GoodsTypeEnum.BUY_M_SEND_N_COUPON.getGoodsType().equals(cartGoods.getGoodsType()) && accountFlag == 1 ){
if (cartGoods.getCanUseCoupon() == 0) {
coupons.add(coupon);
}
} else {
coupons.add(coupon);
}
}
// 添加商品券代表的商品放入促销
String goodsId = StringUtils.isNotBlank(checkSpqInfo.getSkuId()) ? checkSpqInfo.getSkuId() : checkSpqInfo.getSpuId();
......
......@@ -9,4 +9,6 @@ apollo.meta=http://212.129.229.203
env=dev
apollo.cluster=default
apollo.bootstrap.enabled=true
apollo.bootstrap.namespaces=shopping_cart,micro_progeram_commons
\ No newline at end of file
apollo.bootstrap.namespaces=shopping_cart,micro_progeram_commons
......@@ -24,4 +24,8 @@ management.metrics.tags.application=${spring.application.name}
management.endpoint.shutdown.enabled=true
#management.security.enabled=false
management.health.rabbit.enabled=false
apollo.plugin.namespace=openstore.gray.rule
\ No newline at end of file
apollo.plugin.namespace=openstore.gray.rule
spring.redis.host= 212.129.146.110
spring.redis.port=6382
spring.redis.password=LvA6SmLAitP2kG
\ 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