Commit 48a7c6d1 by ping.wu

Merge branches 'feature/20210715_购物车可用优惠券改造_wuping' and 'master' of…

Merge branches 'feature/20210715_购物车可用优惠券改造_wuping' and 'master' of http://gitlab.freemud.com/order-group-application/order-group

# Conflicts:
#	shopping-cart-application-service/src/main/java/cn/freemud/service/impl/ShoppingCartNewServiceImpl.java
parents b0a51ffd 3bddb48a
......@@ -3,6 +3,7 @@ package cn.freemud.manager;
import cn.freemud.constant.RedisKeyConstant;
import cn.freemud.entities.dto.product.ProductInfo;
import cn.freemud.enums.ResponseResult;
import cn.freemud.redis.RedisCache;
import org.apache.commons.collections4.CollectionUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
......@@ -21,11 +22,15 @@ import java.util.stream.Collectors;
*/
@Component
public class BuyProductOnceManager {
// @Autowired
// protected RedisTemplate redisTemplate;
@Autowired
protected RedisTemplate redisTemplate;
private RedisCache redisCache;
//用户限购:每人每单限购一次 / 禁用
public ResponseResult checkBuyProductOnce(List<ProductInfo> products, String partnerId, String userId) {
RedisTemplate redisTemplate = redisCache.getRedisTemplate();
List<ProductInfo> productsCheck = products.stream().filter(product -> product.getIsLimitNumProduct() == 1).collect(Collectors.toList());
if (CollectionUtils.isNotEmpty(productsCheck)) {
//每人每单限购一次
......@@ -55,6 +60,7 @@ public class BuyProductOnceManager {
//清掉key
public boolean removeCheckBuyProductOnceKey(String partnerId, String userId,String pid) {
RedisTemplate redisTemplate = redisCache.getRedisTemplate();
String key = this.getCheckBuyProductOnceKey(partnerId, userId,pid);
redisTemplate.delete(key);
return true;
......
......@@ -3,6 +3,7 @@ package cn.freemud.manager;
import cn.freemud.constant.RedisKeyConstant;
import cn.freemud.enums.OrderTackCodeRuleEnum;
import cn.freemud.enums.OrderType;
import cn.freemud.redis.RedisCache;
import com.freemud.api.assortment.datamanager.entity.db.AssortmentTackCodeRule;
import com.freemud.api.assortment.datamanager.manager.AssortmentTackCodeRuleManager;
import com.freemud.sdk.api.assortment.order.request.order.ConfirmOrderRequest;
......@@ -29,8 +30,12 @@ import java.util.function.Function;
public class OrderTackCodeManager {
@Autowired
private AssortmentTackCodeRuleManager assortmentTackCodeRuleManager;
// @Autowired
// protected RedisTemplate redisTemplate;
@Autowired
protected RedisTemplate redisTemplate;
private RedisCache redisCache;
public final static String numberChar = "0123456789";
......@@ -46,6 +51,7 @@ public class OrderTackCodeManager {
* @return
*/
public String generateTackCode(Integer orderType, String partnerId, String storeId, ConfirmOrderRequest var1, Function<Integer, String> fun) {
RedisTemplate redisTemplate = redisCache.getRedisTemplate();
String key = this.getOrderTackCodeKey(partnerId);
String randomKey = getRandomOrderTackCodeKey(partnerId, storeId);
String rule = (String) redisTemplate.opsForHash().entries(key).get("rule");
......@@ -168,6 +174,7 @@ public class OrderTackCodeManager {
}
private void initTackCodeSettingHash(AssortmentTackCodeRule assortmentTackCodeRule,String randomKey, Map<Object, Object> tackCodeSettingMap){
RedisTemplate redisTemplate = redisCache.getRedisTemplate();
tackCodeSettingMap.put("eatInHead", assortmentTackCodeRule.getEatInHead());
tackCodeSettingMap.put("eatInCode", Integer.valueOf(assortmentTackCodeRule.getEatInCode()));
tackCodeSettingMap.put("eatInLength", assortmentTackCodeRule.getEatInCode().length());
......
......@@ -23,10 +23,7 @@ import cn.freemud.entities.dto.openplatform.AddWeixinCardCodeResponseDto;
import cn.freemud.entities.dto.openplatform.AddWeixinCardJudgeRequestDto;
import cn.freemud.entities.dto.openplatform.AddWeixinCardJudgeResponseDto;
import cn.freemud.entities.vo.*;
import cn.freemud.enums.ActivityChannelEnum;
import cn.freemud.enums.ActivityShareType;
import cn.freemud.enums.CouponStatus;
import cn.freemud.enums.CouponTypeEnum;
import cn.freemud.enums.*;
import cn.freemud.utils.BeanUtil;
//import com.freemud.card.sdk.vo.coupon.request.MemberAddCouponVo;
import com.google.common.collect.Lists;
......@@ -555,7 +552,7 @@ public class CouponAdapter {
couponPromotionVO.setStoreId(shoppingCartInfoRequestVo.getShopId());
// 删除配送券-> 商品券使用逻辑组装 fisherman购物车配送券组装
String couponCode1 = shoppingCartInfoRequestVo.getCouponCode();
List<ShoppingCartInfoRequestVo.couponCode> couponCodes = shoppingCartInfoRequestVo.getCouponCodes();
List<ChooseCouponVo> couponCodes = shoppingCartInfoRequestVo.getCouponCodes();
if(CollectionUtils.isNotEmpty(couponCodes)){
Set<String > setCoupons = new HashSet<>();
couponCodes.forEach(c -> setCoupons.add(c.getCouponCode()));
......@@ -567,7 +564,12 @@ public class CouponAdapter {
}
couponPromotionVO.setOrderType(shoppingCartInfoRequestVo.getOrderType());
couponPromotionVO.setFlg(shoppingCartInfoRequestVo.getFlag());
// couponPromotionVO.setFlg(shoppingCartInfoRequestVo.getFlag());
couponPromotionVO.setAvailableCouponQueryFlag(shoppingCartInfoRequestVo.getFlag() == null ? "":shoppingCartInfoRequestVo.getFlag().toString());
if(Objects.equals(shoppingCartInfoRequestVo.getFlag(), SubmitPageEnum.YES.getCode())){
couponPromotionVO.setAvailableCouponQueryFlag(shoppingCartInfoRequestVo.getVersion());
}
couponPromotionVO.setUnChooseCouponCode(shoppingCartInfoRequestVo.getUnChooseCouponCode());
// 重新校验一遍 couponcodes
if (CollectionUtils.isNotEmpty(couponPromotionVO.getCouponCodes())) {
......@@ -598,7 +600,11 @@ public class CouponAdapter {
couponPromotionVO.setStoreId(baseRequestDTO.getShopId());
couponPromotionVO.setCouponCode(baseRequestDTO.getCouponCode());
couponPromotionVO.setOrderType(baseRequestDTO.getOrderType());
couponPromotionVO.setFlg(baseRequestDTO.getFlag());
// couponPromotionVO.setFlg(baseRequestDTO.getFlag());
couponPromotionVO.setAvailableCouponQueryFlag(baseRequestDTO.getFlag() == null ? "":baseRequestDTO.getFlag().toString());
if(Objects.equals(baseRequestDTO.getFlag(), SubmitPageEnum.YES.getCode())){
couponPromotionVO.setAvailableCouponQueryFlag(baseRequestDTO.getVersion());
}
couponPromotionVO.setUnChooseCouponCode(baseRequestDTO.getUnChooseCouponCode());
return couponPromotionVO;
}
......@@ -609,21 +615,21 @@ public class CouponAdapter {
* @param baseRequestDTO
* @return
*/
public CouponPromotionVO getCouponPromotionVO(ShoppingCartGoodsApportionBO baseRequestDTO) {
CouponPromotionVO couponPromotionVO = new CouponPromotionVO();
List<ShoppingCartGoodsApportionBO.couponCode> couponCodes = baseRequestDTO.getCouponCodes();
if (CollectionUtils.isNotEmpty(couponCodes)) {
Set<String> setCoupons = new HashSet<>();
couponCodes.forEach(c -> setCoupons.add(c.getCouponCode()));
couponPromotionVO.setCouponCodes(setCoupons);
}
couponPromotionVO.setPartnerId(baseRequestDTO.getPartnerId());
couponPromotionVO.setUserId(baseRequestDTO.getUserId());
couponPromotionVO.setStoreId(baseRequestDTO.getShopId());
couponPromotionVO.setCouponCode(baseRequestDTO.getCouponCode());
couponPromotionVO.setOrderType(baseRequestDTO.getOrderType());
couponPromotionVO.setFlg(baseRequestDTO.getFlag());
return couponPromotionVO;
}
// public CouponPromotionVO getCouponPromotionVO(ShoppingCartGoodsApportionBO baseRequestDTO) {
// CouponPromotionVO couponPromotionVO = new CouponPromotionVO();
// List<ShoppingCartGoodsApportionBO.couponCode> couponCodes = baseRequestDTO.getCouponCodes();
// if (CollectionUtils.isNotEmpty(couponCodes)) {
// Set<String> setCoupons = new HashSet<>();
// couponCodes.forEach(c -> setCoupons.add(c.getCouponCode()));
// couponPromotionVO.setCouponCodes(setCoupons);
// }
// couponPromotionVO.setPartnerId(baseRequestDTO.getPartnerId());
// couponPromotionVO.setUserId(baseRequestDTO.getUserId());
// couponPromotionVO.setStoreId(baseRequestDTO.getShopId());
// couponPromotionVO.setCouponCode(baseRequestDTO.getCouponCode());
// couponPromotionVO.setOrderType(baseRequestDTO.getOrderType());
// couponPromotionVO.setFlg(baseRequestDTO.getFlag());
// return couponPromotionVO;
// }
}
......@@ -311,7 +311,7 @@ public class ShoppingCartController {
* @param couponCodes
* @return
*/
private BaseResponse verifyCouponCodes (List<ShoppingCartInfoRequestVo.couponCode> couponCodes){
private BaseResponse verifyCouponCodes (List<ChooseCouponVo> couponCodes){
if (CollectionUtils.isNotEmpty(couponCodes) && couponCodes.size() > 1) {
long count = couponCodes.stream().filter(c -> c.getCouponType().compareTo(CouponTypeEnum.TYPE_1.getCode()) == 0
|| c.getCouponType().compareTo(CouponTypeEnum.TYPE_3.getCode()) == 0).count();
......
......@@ -10,7 +10,7 @@ import cn.freemud.entities.dto.CheckSpqInfoResponseDto;
import cn.freemud.entities.vo.ActivityClassifyCouponBean;
import cn.freemud.entities.vo.CartGoods;
import cn.freemud.entities.vo.CouponPromotionVO;
import cn.freemud.enums.CouponFlag;
import cn.freemud.enums.AvailableCouponQueryFlagEnum;
import cn.freemud.enums.GoodsTypeEnum;
import cn.freemud.service.CouponService;
import cn.freemud.service.impl.AssortmentSdkService;
......@@ -51,8 +51,7 @@ public class DistributeAdapter {
}
if (type == 2){
// 用户选择了查询优惠券信息
if (couponPromotionVO != null && ObjectUtils.equals(CouponFlag.YES.getCode(), couponPromotionVO.getFlg())) {
if (couponPromotionVO != null && !ObjectUtils.equals(AvailableCouponQueryFlagEnum.NO.getCode(), couponPromotionVO.getAvailableCouponQueryFlag())) {
List<CartGoods> tmpCartGoods = cartGoodsList.parallelStream().filter(k -> CommonUtils.isProductCoupon(k.getCouponCode(), k.getCartGoodsUid())).collect(Collectors.toList());
// 是否存在商品券
boolean hasGoodssCoupon = CollectionUtils.isNotEmpty(tmpCartGoods);
......
......@@ -207,7 +207,7 @@ public class ShoppingCartDemoController {
premiumRequest.setOrderType(listCartGoodsBO.getOrderType());
premiumRequest.setSessionId(listCartGoodsBO.getSessionId());
premiumRequest.setShopId(listCartGoodsBO.getShopId());
premiumRequest.setVersion(listCartGoodsBO.getVersion());
// premiumRequest.setVersion(listCartGoodsBO.getVersion());
if (!CollectionUtils.isEmpty(baseRequestDTO.getCouponCodes())) {
List<PremiumExchangeRequestVo.couponCode> list = new ArrayList<>();
baseRequestDTO.getCouponCodes().forEach(couponCode -> {
......
......@@ -15,6 +15,7 @@ import java.util.List;
@Data
public class ListCartGoodsBO extends BaseBo {
private String version;
@NotEmpty(message = "spuId不能为空")
private String spuId;
......
......@@ -12,18 +12,15 @@ import cn.freemud.demo.entities.bo.goods.*;
import cn.freemud.demo.entities.bo.member.*;
import cn.freemud.demo.entities.bo.product.GetRequiredProductListBO;
import cn.freemud.demo.entities.bo.promotion.ActivityBO;
import cn.freemud.demo.manager.coupon.CouponManager;
import cn.freemud.demo.manager.customer.CustomerManager;
import cn.freemud.demo.manager.product.ProductManager;
import cn.freemud.demo.manager.promotion.PromotionManager;
import cn.freemud.demo.service.GetShoppingCartGoodsApportionService;
import cn.freemud.demo.utils.CommonUtils;
import cn.freemud.entities.dto.ActivityCalculationDiscountRequestDto;
import cn.freemud.entities.dto.ActivityCalculationDiscountResponseDto;
import cn.freemud.entities.dto.CheckSpqInfoResponseDto;
import cn.freemud.entities.dto.activity.ActivityDiscountsDto;
import cn.freemud.entities.dto.activity.ActivityQueryDto;
import cn.freemud.entities.dto.calculate.CalculationSharingDiscountResponseDto;
import cn.freemud.entities.dto.shoppingCart.SendPoint;
import cn.freemud.entities.vo.*;
import cn.freemud.enums.*;
......@@ -735,7 +732,7 @@ public class AbstractApportionService implements GetShoppingCartGoodsApportionSe
return null;
} else if ((Objects.equals(baseRequestDTO.getOrderType(), CreateOrderType.TAKE_OUT.getCode())
|| Objects.equals(baseRequestDTO.getReachStoreType(), OrderType.COLLECT_GOODS.getCode()))
&& Objects.equals(baseRequestDTO.getFlag(), CouponFlag.YES.getCode())) {
&& Objects.equals(baseRequestDTO.getFlag(), SubmitPageEnum.YES.getCode())) {
return shoppingGoodsAmountBO.getNewPackAmount() == null ? 0L : shoppingGoodsAmountBO.getNewPackAmount();
}
return null;
......
......@@ -27,7 +27,6 @@ import cn.freemud.interceptor.ServiceException;
import cn.freemud.redis.RedisCache;
import cn.freemud.service.CouponService;
import cn.freemud.service.impl.AssortmentSdkService;
import cn.freemud.service.impl.calculate.CalculationCommonService;
import cn.freemud.utils.LogUtil;
import cn.freemud.utils.WebUtil;
import com.alibaba.fastjson.JSONArray;
......@@ -619,7 +618,7 @@ public class AbstractListCartGoodsService implements ListCartGoodsService {
return null;
} else if ((Objects.equals(baseRequestDTO.getOrderType(), CreateOrderType.TAKE_OUT.getCode())
|| Objects.equals(baseRequestDTO.getReachStoreType(), OrderType.COLLECT_GOODS.getCode()))
&& Objects.equals(baseRequestDTO.getFlag(), CouponFlag.YES.getCode())) {
&& Objects.equals(baseRequestDTO.getFlag(), SubmitPageEnum.YES.getCode())) {
return shoppingGoodsAmountBO.getNewPackAmount() == null ? 0L : shoppingGoodsAmountBO.getNewPackAmount();
}
return null;
......
package cn.freemud.entities.vo;
import lombok.Data;
@Data
public class ChooseCouponVo {
/**
* 优惠券
*/
private String couponCode;
/**
* 活动号
*/
private String activityCode;
/**
* 顺序
*/
private Integer index;
/**
* 优惠券类型
*/
private Integer couponType;
}
......@@ -23,7 +23,9 @@ public class CouponPromotionVO {
private String userId;
private String storeId;
private String couponCode;
private Integer flg;
// private Integer flg;
//是否查询可用优惠券,根据购物车版本是否为2判断
private String availableCouponQueryFlag;
private Integer orderType;
private String unChooseCouponCode;
// 用于存放 优惠券数组 兼并老版本的 couponCode
......
......@@ -189,6 +189,11 @@ public class ShoppingCartGoodsResponseVo extends ShoppingCartGoodsBaseResponseV
*/
private Integer verCompat = 0;
/**
* 选中的可用优惠券集合
*/
private List<ChooseCouponVo> couponCodes;
@Data
public static class chooseGood {
......
......@@ -31,6 +31,7 @@ public class ShoppingCartInfoRequestVo extends BaseRequestVo {
@NotBlank(message = "sessionId不能为空")
private String sessionId;
//固定值为2表示新版本小程序,不查询可用优惠券
private String version;
/**
* 购物车版本号(围餐,拼单)
......@@ -69,7 +70,7 @@ public class ShoppingCartInfoRequestVo extends BaseRequestVo {
/**
* 优惠券code列表
*/
private List<couponCode> couponCodes;
private List<ChooseCouponVo> couponCodes;
/**
* 是否使用月享卡2.0
......
package cn.freemud.enums;
public enum AvailableCouponQueryFlagEnum {
NO("2", "不查询"),
YES("1", "查询");
private String code;
private String desc;
AvailableCouponQueryFlagEnum(String code, String desc) {
this.code = code;
this.desc = desc;
}
public String getCode() {
return code;
}
public void setCode(String code) {
this.code = code;
}
public String getDesc() {
return desc;
}
public void setDesc(String desc) {
this.desc = desc;
}
}
......@@ -12,21 +12,21 @@
*/
package cn.freemud.enums;
public enum CouponFlag {
public enum SubmitPageEnum {
NO(0, "不查询"),
YES(1, "查询用户优惠券");
NO(0, "点餐页"),
YES(1, "结算页");
private Integer code;
private String desc;
CouponFlag(Integer code, String desc) {
SubmitPageEnum(Integer code, String desc) {
this.code = code;
this.desc = desc;
}
public static CouponFlag getByCode(Integer code) {
for (CouponFlag payType : values()) {
public static SubmitPageEnum getByCode(Integer code) {
for (SubmitPageEnum payType : values()) {
if (payType.getCode().equals(code)) {
return payType;
}
......
package cn.freemud.factory;
import cn.freemud.adapter.ActivityAdapter;
import cn.freemud.adapter.ShoppingCartConvertAdapter;
import cn.freemud.base.entity.BaseResponse;
import cn.freemud.constant.ResponseCodeConstant;
......@@ -9,7 +8,6 @@ import cn.freemud.entities.dto.*;
import cn.freemud.entities.dto.activity.ActivityQueryDto;
import cn.freemud.entities.dto.activity.ActivityQueryResponseDto;
import cn.freemud.entities.dto.shoppingCart.ShoppingCartGoodsDto;
import cn.freemud.entities.dto.user.GetSessionUserInfoDto;
import cn.freemud.entities.vo.*;
import cn.freemud.enums.*;
import cn.freemud.interceptor.BizServiceException;
......@@ -21,15 +19,12 @@ import cn.freemud.service.ShoppingCartNewService;
import cn.freemud.service.impl.*;
import cn.freemud.service.thirdparty.CustomerApplicationClient;
import cn.freemud.service.thirdparty.StockClient;
import cn.freemud.utils.BeanUtil;
import cn.freemud.utils.PromotionFactory;
import com.alibaba.fastjson.JSON;
import com.freemud.api.assortment.datamanager.entity.db.AssortmentOpenPlatformPartnerStoreDeliveryConfig;
import com.freemud.api.assortment.datamanager.entity.vo.AssortmentCustomerInfoVo;
import com.freemud.api.assortment.datamanager.manager.AssortmentOpenPlatformPartnerStoreDeliveryConfigManager;
import com.freemud.api.assortment.datamanager.manager.customer.AssortmentCustomerInfoManager;
import com.freemud.application.sdk.api.base.SDKCommonBaseContextWare;
import com.freemud.application.sdk.api.log.ApiLog;
import com.freemud.application.sdk.api.log.LogThreadLocal;
import com.freemud.application.sdk.api.membercenter.request.QueryReceiveAddressRequest;
import com.freemud.application.sdk.api.membercenter.response.QueryReceiveAddressResponse;
......@@ -43,7 +38,6 @@ import com.freemud.application.sdk.api.storecenter.service.StoreCenterService;
import com.freemud.sdk.api.assortment.shoppingcart.enums.BusinessTypeEnum;
import com.freemud.sdk.api.assortment.shoppingcart.service.ShoppingCartBaseService;
import com.google.common.collect.Lists;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang.ObjectUtils;
import org.apache.commons.lang.StringUtils;
......@@ -544,10 +538,10 @@ public abstract class AbstractShoppingCartImpl implements ShoppingCartNewService
shoppingCartGoodsResponseVo.setProducts(cartGoodsList);
shoppingCartGoodsResponseVo.setProductsCount(cartGoodsList.size());
if (StringUtils.isNotEmpty(toastMsg)) {
toastMsg=shoppingCartInfoRequestVo!=null && ObjectUtils.equals(1, shoppingCartInfoRequestVo.getFlag())?SHOPPING_CART_EMPTY_GOODS_LIST:SHOPPING_CART_INVALIAD_GOODS;
toastMsg=shoppingCartInfoRequestVo!=null && ObjectUtils.equals(SubmitPageEnum.YES.getCode(), shoppingCartInfoRequestVo.getFlag())?SHOPPING_CART_EMPTY_GOODS_LIST:SHOPPING_CART_INVALIAD_GOODS;
setToastMsgIfNotExist(shoppingCartGoodsResponseVo, toastMsg);
//结算页,只有商品全部非法(即products为空)时,才提示changed为true toastMsg 不为空
if (shoppingCartInfoRequestVo!=null && ObjectUtils.equals(1, shoppingCartInfoRequestVo.getFlag())){
if (shoppingCartInfoRequestVo!=null && ObjectUtils.equals(SubmitPageEnum.YES.getCode(), shoppingCartInfoRequestVo.getFlag())){
shoppingCartGoodsResponseVo.setChanged(CollectionUtils.isEmpty(cartGoodsList));
shoppingCartGoodsResponseVo.setToastMsg(CollectionUtils.isEmpty(cartGoodsList)?toastMsg:"");
}
......@@ -567,7 +561,7 @@ public abstract class AbstractShoppingCartImpl implements ShoppingCartNewService
shoppingCartGoodsResponseVo.setNewPackAmount(null);
} else if ((Objects.equals(shoppingCartInfoRequestVo.getOrderType(), CreateOrderType.TAKE_OUT.getCode())
|| Objects.equals(shoppingCartInfoRequestVo.getReachStoreType(), OrderType.COLLECT_GOODS.getCode()))
&& Objects.equals(shoppingCartInfoRequestVo.getFlag(), CouponFlag.YES.getCode())) {
&& Objects.equals(shoppingCartInfoRequestVo.getFlag(), SubmitPageEnum.YES.getCode())) {
Long packAmount = shoppingCartGoodsResponseVo.getNewPackAmount() == null ? 0 : shoppingCartGoodsResponseVo.getNewPackAmount();
Long originalTotalAmount = shoppingCartGoodsResponseVo.getOriginalTotalAmount() + packAmount;
Long totalAmount = shoppingCartGoodsResponseVo.getTotalAmount() + packAmount;
......
......@@ -8,7 +8,7 @@ import cn.freemud.entities.dto.activity.ActivityQueryDto;
import cn.freemud.entities.dto.shoppingCart.ShoppingCartGoodsDto;
import cn.freemud.entities.vo.*;
import cn.freemud.enums.ActivityTypeEnum;
import cn.freemud.enums.CouponFlag;
import cn.freemud.enums.AvailableCouponQueryFlagEnum;
import cn.freemud.enums.GoodsTypeEnum;
import cn.freemud.service.CouponService;
import cn.freemud.service.IPromotionService;
......@@ -56,7 +56,7 @@ public class CouponPromotionService implements IPromotionService {
ShoppingCartGoodsResponseVo shoppingCartGoodsResponseVo, UserLoginInfoDto userLoginInfoDto,
ShoppingCartInfoRequestVo shoppingCartInfoRequestVo) {
// 用户选择了查询优惠券信息
if (couponPromotionVO != null && ObjectUtils.equals(CouponFlag.YES.getCode(), couponPromotionVO.getFlg())) {
if (couponPromotionVO != null && !ObjectUtils.equals(AvailableCouponQueryFlagEnum.NO.getCode(), couponPromotionVO.getAvailableCouponQueryFlag())) {
List<CartGoods> tmpCartGoods = cartGoodsList.parallelStream().filter(k -> (k.getCartGoodsUid()
.startsWith(CommonsConstant.COUPON_PREFIX) || StringUtils.isNotBlank(k.getCouponCode()))).collect(Collectors.toList());
// 是否存在商品券
......@@ -100,6 +100,19 @@ public class CouponPromotionService implements IPromotionService {
couponDiscount = couponDiscount + (couponResults.getDiscountAmount() == null ? 0 : couponResults.getDiscountAmount());
}
}
if (CollectionUtils.isNotEmpty(calculationDiscountResult.getCouponDiscounts())) {
//选中优惠券赋值
List<ChooseCouponVo> couponCodes = new ArrayList<>();
for (ChooseCouponVo chooseCouponVo : shoppingCartInfoRequestVo.getCouponCodes()){
for (ActivityCalculationDiscountResponseDto.CalculationDiscountResult.CouponResults discount : calculationDiscountResult.getCouponDiscounts()){
if(chooseCouponVo.getCouponCode().equals(discount.getCouponCode())){
couponCodes.add(chooseCouponVo);
break;
}
}
}
shoppingCartGoodsResponseVo.setCouponCodes(couponCodes);
}
}
shoppingCartGoodsResponseVo.setCouponDiscount(couponDiscount);
......@@ -134,7 +147,7 @@ public class CouponPromotionService implements IPromotionService {
}
if (StringUtils.isNotBlank(couponCode)) {
List<String> validCouponCodeLis = new ArrayList<>();
if (couponPromotionVO != null && ObjectUtils.equals(CouponFlag.YES.getCode(), couponPromotionVO.getFlg())){
if (couponPromotionVO != null && !ObjectUtils.equals(AvailableCouponQueryFlagEnum.NO.getCode(), couponPromotionVO.getAvailableCouponQueryFlag())){
validCouponCodeLis = shoppingCartGoodsResponseVo.getAvailableCoupon().getUsableCoupons().stream().map(ActivityCouponBean::getCouponCode).collect(Collectors.toList());
} else {
couponPromotionVO = new CouponPromotionVO();
......
......@@ -453,6 +453,7 @@ public class CouponServiceImpl implements CouponService {
getMemberCouponListRequestDto.setStatusFlags(Arrays.asList(CouponStatus.STATUS_0.getCode(), CouponStatus.STATUS_2.getCode()));
getMemberCouponListRequestDto.setPageNum(1);
getMemberCouponListRequestDto.setPageSize(Integer.MAX_VALUE);
//获取会员服务的优惠券列表
GetMemberCouponListResponseDto.Result result = getMemberCouponList(getMemberCouponListRequestDto);
LogUtil.debug("CouponServiceImpl_getMemberCouponList", JSON.toJSONString(getMemberCouponListRequestDto), JSON.toJSONString(result));
List<GetMemberCouponListResponseDto.Result.MemberCoupon> memberCoupons = Lists.newArrayList();
......@@ -479,7 +480,7 @@ public class CouponServiceImpl implements CouponService {
Collectors.toMap(GetMemberCouponListResponseDto.Result.MemberCoupon::getCouponCode, a -> a, (k1, k2) -> k1));
List<String> couponCodes = Lists.newArrayList();
memberCoupons.forEach(memberCoupon -> {
// 只筛选小于结束时间得
// 只筛选券结束时间大于当前时间的
if (System.currentTimeMillis() < DateUtil.convert2Date(memberCoupon.getEndTime(), DateUtil.FORMAT_YYYY_MM_DD_HHMMSS).getTime()) {
couponCodes.add(memberCoupon.getCouponCode());
}
......@@ -498,7 +499,7 @@ public class CouponServiceImpl implements CouponService {
}
private List<CouponStateVo> buildAvailiableCoupons(List<CartGoods> cartGoods, String partnerId, String storeId, List<String> couponCodes, int isNew,String appId,String menuType,Integer freightAmount) {
String appSecret = getAppSecret(partnerId);
// String appSecret = getAppSecret(partnerId);
// 最大15一提交
int maxNum = 15;
int count = couponCodes.size() / maxNum;
......@@ -525,7 +526,6 @@ public class CouponServiceImpl implements CouponService {
}
}
// 构建计算SDK
List<CouponStateVo> couponStateList = Lists.newArrayList();
for (int j = 0; j <= count; j++) {
List calCouponCodes = null;
......@@ -534,9 +534,7 @@ public class CouponServiceImpl implements CouponService {
} else {
calCouponCodes = couponCodes.subList(maxNum * j, maxNum * j + maxNum);
}
// 书写逻辑
couponAvailableReqVo.setCouponCodes(calCouponCodes);
//CouponAvailableRespVo couponsAvailable = couponAvailableService.getCouponsAvailable(couponAvailableReqVo, appSecret);
CouponAvailableRespDto couponsAvailable = couponAdaptClient.getCouponsAvailable(couponAvailableReqVo);
LogUtil.info("availableCoupon_couponAvailableService.getCouponsAvailable", JSON.toJSONString(couponAvailableReqVo), JSON.toJSONString(couponsAvailable));
if (Objects.equals(String.valueOf(couponsAvailable.getResult()), ResponseResult.SUCCESS.getCode())
......@@ -1356,7 +1354,7 @@ public class CouponServiceImpl implements CouponService {
@Override
public void checkValidCoupon(CouponPromotionVO couponPromotionVO, List<String> couponList, Map<String, List<String>> spqIdToCartUuid, String couponCode, List<CartGoods> cartGoodsList) {
List<String> validCouponCodeLis = new ArrayList<>();
if (couponPromotionVO != null && ObjectUtils.equals(CouponFlag.YES.getCode(), couponPromotionVO.getFlg())){
if (couponPromotionVO != null && !ObjectUtils.equals(AvailableCouponQueryFlagEnum.NO.getCode(), couponPromotionVO.getAvailableCouponQueryFlag())){
validCouponCodeLis = couponList;
} else {
GetMemberCouponListRequestDto getMemberCouponListRequestDto = new GetMemberCouponListRequestDto(couponPromotionVO.getPartnerId(), couponPromotionVO.getUserId());
......
......@@ -437,10 +437,10 @@ public class ShoppingCartCollageServiceImpl extends AbstractShoppingCartImpl imp
String appId = shoppingCartInfoRequestVo.getAppId();
String couponCode = shoppingCartInfoRequestVo.getCouponCode();
String activityCode = shoppingCartInfoRequestVo.getActivityCode();
List<ShoppingCartInfoRequestVo.couponCode> couponCodes = shoppingCartInfoRequestVo.getCouponCodes();
List<ChooseCouponVo> couponCodes = shoppingCartInfoRequestVo.getCouponCodes();
// 兼容老版本
if (CollectionUtils.isNotEmpty(couponCodes) && StringUtils.isEmpty(couponCode)) {
ShoppingCartInfoRequestVo.couponCode otherCouponCode = couponCodes.stream()
ChooseCouponVo otherCouponCode = couponCodes.stream()
.filter(couponCode1 -> couponCode1.getCouponType()!=null && couponCode1.getCouponType().compareTo(CouponTypeEnum.TYPE_5.getCode()) != 0)
.findFirst().orElse(null);
if (otherCouponCode != null) {
......@@ -645,9 +645,9 @@ public class ShoppingCartCollageServiceImpl extends AbstractShoppingCartImpl imp
String couponCode = shoppingCartInfoRequestVo.getCouponCode();
String activityCode = shoppingCartInfoRequestVo.getActivityCode();
// 兼容老购物车
List<ShoppingCartInfoRequestVo.couponCode> couponCodes = shoppingCartInfoRequestVo.getCouponCodes();
List<ChooseCouponVo> couponCodes = shoppingCartInfoRequestVo.getCouponCodes();
if (Objects.isNull(couponCode) && CollectionUtils.isNotEmpty(couponCodes)) {
ShoppingCartInfoRequestVo.couponCode otherCouponCode = couponCodes.stream()
ChooseCouponVo otherCouponCode = couponCodes.stream()
.filter(couponCode1 -> couponCode1.getCouponType()!=null && couponCode1.getCouponType().compareTo(CouponTypeEnum.TYPE_5.getCode())!=0)
.findFirst().orElse(null);
if (otherCouponCode !=null) {
......
......@@ -369,10 +369,10 @@ public class ShoppingCartMallServiceImpl implements ShoppingCartNewService {
List<CartGoods> cartGoodsList = new ArrayList<>();
String couponCode = shoppingCartInfoRequestVo.getCouponCode();
String activityCode = shoppingCartInfoRequestVo.getActivityCode();
List<ShoppingCartInfoRequestVo.couponCode> couponCodes = shoppingCartInfoRequestVo.getCouponCodes();
List<ChooseCouponVo> couponCodes = shoppingCartInfoRequestVo.getCouponCodes();
// 兼容老版本
if (CollectionUtils.isNotEmpty(couponCodes) && StringUtils.isEmpty(couponCode)) {
ShoppingCartInfoRequestVo.couponCode otherCouponCode = couponCodes.stream()
ChooseCouponVo otherCouponCode = couponCodes.stream()
.filter(couponCode1 -> couponCode1.getCouponType()!=null && couponCode1.getCouponType().compareTo(CouponTypeEnum.TYPE_5.getCode()) != 0)
.findFirst().orElse(null);
if (otherCouponCode != null) {
......@@ -535,9 +535,9 @@ public class ShoppingCartMallServiceImpl implements ShoppingCartNewService {
String storeId = shoppingCartInfoRequestVo.getShopId();
String couponCode = shoppingCartInfoRequestVo.getCouponCode();
String activityCode = shoppingCartInfoRequestVo.getActivityCode();
List<ShoppingCartInfoRequestVo.couponCode> couponCodes = shoppingCartInfoRequestVo.getCouponCodes();
List<ChooseCouponVo> couponCodes = shoppingCartInfoRequestVo.getCouponCodes();
if (Objects.isNull(couponCode) && CollectionUtils.isNotEmpty(couponCodes)) {
ShoppingCartInfoRequestVo.couponCode otherCouponCode = couponCodes.stream()
ChooseCouponVo otherCouponCode = couponCodes.stream()
.filter(couponCode1 -> couponCode1.getCouponType()!=null && couponCode1.getCouponType().compareTo(CouponTypeEnum.TYPE_5.getCode())!=0)
.findFirst().orElse(null);
if (otherCouponCode !=null) {
......@@ -930,7 +930,7 @@ public class ShoppingCartMallServiceImpl implements ShoppingCartNewService {
return customerInfoVo1;
}
private List<CalculationSharingDiscountRequestDto.CalculationDiscountCoupon> buildCoupons(List<CalculationSharingDiscountRequestDto.CalculationDiscountCoupon> oldCoupons, List<ShoppingCartInfoRequestVo.couponCode> coupons){
private List<CalculationSharingDiscountRequestDto.CalculationDiscountCoupon> buildCoupons(List<CalculationSharingDiscountRequestDto.CalculationDiscountCoupon> oldCoupons, List<ChooseCouponVo> coupons){
// ApiLog.info("批量使用优惠券前,oldCoupons,coupons",oldCoupons,coupons);
......@@ -947,7 +947,7 @@ public class ShoppingCartMallServiceImpl implements ShoppingCartNewService {
if (coupons != null) {
for(int x = 0 ; x < coupons.size() ; x++){
ShoppingCartInfoRequestVo.couponCode cp = coupons.get(x);
ChooseCouponVo cp = coupons.get(x);
if(codes.contains(cp.getCouponCode())){
continue;
}
......
......@@ -266,10 +266,10 @@ public class CalculationCommonService {
shoppingCartGoodsResponseVo.setProductsCount(cartGoodsList.size());
String toastMsg = shoppingCartGoodsResponseVo.getToastMsg();
if (StringUtils.isNotEmpty(toastMsg)) {
toastMsg = shoppingCartInfoRequestVo != null && ObjectUtils.equals(1, shoppingCartInfoRequestVo.getFlag()) ? SHOPPING_CART_EMPTY_GOODS_LIST : SHOPPING_CART_INVALIAD_GOODS;
toastMsg = shoppingCartInfoRequestVo != null && ObjectUtils.equals(SubmitPageEnum.YES.getCode(), shoppingCartInfoRequestVo.getFlag()) ? SHOPPING_CART_EMPTY_GOODS_LIST : SHOPPING_CART_INVALIAD_GOODS;
setToastMsgIfNotExist(shoppingCartGoodsResponseVo, toastMsg);
//结算页,只有商品全部非法(即products为空)时,才提示changed为true toastMsg 不为空
if (shoppingCartInfoRequestVo != null && ObjectUtils.equals(1, shoppingCartInfoRequestVo.getFlag())) {
if (shoppingCartInfoRequestVo != null && ObjectUtils.equals(SubmitPageEnum.YES.getCode(), shoppingCartInfoRequestVo.getFlag())) {
shoppingCartGoodsResponseVo.setChanged(CollectionUtils.isEmpty(cartGoodsList));
shoppingCartGoodsResponseVo.setToastMsg(CollectionUtils.isEmpty(cartGoodsList) ? toastMsg : "");
}
......@@ -288,7 +288,7 @@ public class CalculationCommonService {
shoppingCartGoodsResponseVo.setNewPackAmount(null);
} else if ((Objects.equals(shoppingCartInfoRequestVo.getOrderType(), CreateOrderType.TAKE_OUT.getCode())
|| Objects.equals(shoppingCartInfoRequestVo.getReachStoreType(), OrderType.COLLECT_GOODS.getCode()))
&& Objects.equals(shoppingCartInfoRequestVo.getFlag(), CouponFlag.YES.getCode())) {
&& Objects.equals(shoppingCartInfoRequestVo.getFlag(), SubmitPageEnum.YES.getCode())) {
Long packAmount = shoppingCartGoodsResponseVo.getNewPackAmount() == null ? 0 : shoppingCartGoodsResponseVo.getNewPackAmount();
Long originalTotalAmount = shoppingCartGoodsResponseVo.getOriginalTotalAmount() + packAmount;
Long totalAmount = shoppingCartGoodsResponseVo.getTotalAmount() + packAmount;
......
......@@ -4,7 +4,7 @@ import cn.freemud.entities.dto.CheckSpqInfoResponseDto;
import cn.freemud.entities.dto.calculate.CalculationSharingDiscountResponseDto;
import cn.freemud.entities.vo.*;
import cn.freemud.enums.ActivityTypeEnum;
import cn.freemud.enums.CouponFlag;
import cn.freemud.enums.AvailableCouponQueryFlagEnum;
import cn.freemud.enums.GoodsTypeEnum;
import cn.freemud.service.CouponService;
import cn.freemud.service.impl.AssortmentSdkService;
......@@ -50,7 +50,7 @@ public class CouponSharingService {
, CouponPromotionVO couponPromotionVO
,ShoppingCartInfoRequestVo shoppingCartInfoRequestVo, String userId, String partnerId, String storeId, Integer orderType) {
// 用户选择了查询优惠券信息
if (couponPromotionVO != null && ObjectUtils.equals(CouponFlag.YES.getCode(), couponPromotionVO.getFlg())) {
if (couponPromotionVO != null && !ObjectUtils.equals(AvailableCouponQueryFlagEnum.NO.getCode(), couponPromotionVO.getAvailableCouponQueryFlag())) {
List<CartGoods> tmpCartGoods = cartGoodsList.parallelStream().filter(k -> (StringUtils.isNotBlank(k.getCouponCode()) || k.getCartGoodsUid()
.startsWith(CommonsConstant.COUPON_PREFIX))).collect(Collectors.toList());
// 是否存在商品券
......@@ -93,6 +93,17 @@ public class CouponSharingService {
List<Integer> asList = Arrays.asList( ActivityTypeEnum.TYPE_3.getCode(), ActivityTypeEnum.TYPE_31.getCode(), ActivityTypeEnum.TYPE_34.getCode());
List<CalculationSharingDiscountResponseDto.CalculationDiscountResult.Discount> couponResultsList = calculationDiscountResult.getDiscounts();
couponDiscount = couponResultsList.stream().filter(d -> asList.contains(d.getType())).mapToLong(d -> d.getDiscount().longValue()).sum();
//选中优惠券赋值
List<ChooseCouponVo> couponCodes = new ArrayList<>();
for (ChooseCouponVo chooseCouponVo : shoppingCartInfoRequestVo.getCouponCodes()){
for (CalculationSharingDiscountResponseDto.CalculationDiscountResult.Discount discount : couponResultsList){
if(chooseCouponVo.getCouponCode().equals(discount.getActivityCode())){
couponCodes.add(chooseCouponVo);
break;
}
}
}
shoppingCartGoodsResponseVo.setCouponCodes(couponCodes);
}
shoppingCartGoodsResponseVo.setCouponDiscount(couponDiscount);
......@@ -126,7 +137,7 @@ public class CouponSharingService {
useCoupon = false;
}
List<String> validCouponCodeLis = new ArrayList<>();
if (couponPromotionVO != null && ObjectUtils.equals(CouponFlag.YES.getCode(), couponPromotionVO.getFlg())){
if (couponPromotionVO != null && !ObjectUtils.equals(AvailableCouponQueryFlagEnum.NO.getCode(), couponPromotionVO.getAvailableCouponQueryFlag())){
validCouponCodeLis = shoppingCartGoodsResponseVo.getAvailableCoupon().getUsableCoupons().stream().map(ActivityCouponBean::getCouponCode).collect(Collectors.toList());
} else {
couponPromotionVO = new CouponPromotionVO();
......@@ -204,7 +215,7 @@ public class CouponSharingService {
// 计算优惠信息时,已将券校验过,放在map中
Map<String, CheckSpqInfoResponseDto> validCouponMap = discountResult == null ? new HashMap<>() : discountResult.getValidCouponMap();
Map<String, List<String>> spqIdToCartUuid = discountResult == null ? new HashMap<>() : discountResult.getSpqIdToCartUuid();
couponPromotionVO.setFlg(0);
// couponPromotionVO.setFlg(0);
// couponService.checkValidCoupon(couponPromotionVO, validCouponCodeLis, spqIdToCartUuid, couponCode, cartGoodsList);
......
......@@ -1852,10 +1852,10 @@ public class ShoppingCartMCoffeeServiceImpl {
shoppingCartGoodsResponseVo.setProducts(cartGoodsList);
shoppingCartGoodsResponseVo.setProductsCount(cartGoodsList.size());
if (StringUtils.isNotEmpty(toastMsg)) {
toastMsg = shoppingCartInfoRequestVo != null && ObjectUtils.equals(1, shoppingCartInfoRequestVo.getFlag()) ? SHOPPING_CART_EMPTY_GOODS_LIST : SHOPPING_CART_INVALIAD_GOODS;
toastMsg = shoppingCartInfoRequestVo != null && ObjectUtils.equals(SubmitPageEnum.YES.getCode(), shoppingCartInfoRequestVo.getFlag()) ? SHOPPING_CART_EMPTY_GOODS_LIST : SHOPPING_CART_INVALIAD_GOODS;
setToastMsgIfNotExist(shoppingCartGoodsResponseVo, toastMsg);
//结算页,只有商品全部非法(即products为空)时,才提示changed为true toastMsg 不为空
if (shoppingCartInfoRequestVo != null && ObjectUtils.equals(1, shoppingCartInfoRequestVo.getFlag())) {
if (shoppingCartInfoRequestVo != null && ObjectUtils.equals(SubmitPageEnum.YES.getCode(), shoppingCartInfoRequestVo.getFlag())) {
shoppingCartGoodsResponseVo.setChanged(CollectionUtils.isEmpty(cartGoodsList));
shoppingCartGoodsResponseVo.setToastMsg(CollectionUtils.isEmpty(cartGoodsList) ? toastMsg : "");
}
......
......@@ -774,15 +774,15 @@ public class CouponDiscountCalculation {
}
}
public CouponPromotionVO getCouponPromotionVO(String partnerId, String storeId, String userId, String couponCode, Integer orderType){
CouponPromotionVO couponPromotionVO = new CouponPromotionVO();
couponPromotionVO.setPartnerId(partnerId);
couponPromotionVO.setUserId(userId);
couponPromotionVO.setStoreId(storeId);
couponPromotionVO.setCouponCode(couponCode);
couponPromotionVO.setOrderType(orderType);
couponPromotionVO.setFlg(CouponFlag.YES.getCode());
return couponPromotionVO;
}
// public CouponPromotionVO getCouponPromotionVO(String partnerId, String storeId, String userId, String couponCode, Integer orderType){
// CouponPromotionVO couponPromotionVO = new CouponPromotionVO();
// couponPromotionVO.setPartnerId(partnerId);
// couponPromotionVO.setUserId(userId);
// couponPromotionVO.setStoreId(storeId);
// couponPromotionVO.setCouponCode(couponCode);
// couponPromotionVO.setOrderType(orderType);
// couponPromotionVO.setFlg(SubmitPageEnum.YES.getCode());
// return couponPromotionVO;
// }
}
......@@ -18,6 +18,7 @@ import cn.freemud.entities.dto.PromotionMessageDto;
import cn.freemud.entities.dto.calculate.CalculationSharingDiscountResponseDto;
import cn.freemud.entities.vo.*;
import cn.freemud.enums.ActivityTypeEnum;
import cn.freemud.enums.SubmitPageEnum;
import cn.freemud.service.impl.ShoppingCartNewServiceImpl;
import cn.freemud.service.shoppingCart.ShoppingCartRelationService;
import cn.freemud.utils.WebUtil;
......@@ -94,7 +95,7 @@ public class CocoShoppingCartRelationServiceImpl implements ShoppingCartRelation
});
if(!Objects.equals(flag,1)){
if(!Objects.equals(flag, SubmitPageEnum.YES.getCode())){
// 非结算页
orderingFoodPage(products,halfDiscountsMap,goodsDiscountsMap,gifeProductIds,shoppingCartGoodsResponseVo);
}else {// 结算页
......
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