Commit 15297d0f by chongfu.liang

fix

parent d7b89ef8
package cn.freemud.demo.entities;
import lombok.Data;
@Data
public class CheckSpqBO {
private String spuId;
private String skuId;
private Integer type;
private CouponDetailBO.Details details;
}
package cn.freemud.demo.manager.coupon; package cn.freemud.demo.manager.coupon;
import cn.freemud.demo.entities.CheckSpqBO;
import cn.freemud.demo.entities.CouponDetailBO; import cn.freemud.demo.entities.CouponDetailBO;
import cn.freemud.demo.entities.GetCouponDetailBO; import cn.freemud.demo.entities.GetCouponDetailBO;
import cn.freemud.demo.entities.bo.goods.GetProductBO; import cn.freemud.demo.entities.bo.goods.GetProductBO;
import cn.freemud.demo.entities.bo.goods.add.BaseAddGoodsBO;
public interface CouponService { public interface CouponService {
CouponDetailBO getCouponDetail(GetCouponDetailBO getCouponDetailBO); CouponDetailBO getCouponDetail(GetCouponDetailBO getCouponDetailBO);
CheckSpqBO checkSpq(BaseAddGoodsBO baseRequestBO);
} }
package cn.freemud.demo.manager.coupon; package cn.freemud.demo.manager.coupon;
import cn.freemud.constant.ResponseCodeConstant; import cn.freemud.constant.ResponseCodeConstant;
import cn.freemud.demo.entities.CouponDetailBO; import cn.freemud.demo.entities.*;
import cn.freemud.demo.entities.GetCouponDetailBO; import cn.freemud.demo.entities.bo.goods.GetProductBySkuIdResponseBO;
import cn.freemud.demo.entities.GetStoreBO; import cn.freemud.demo.entities.bo.goods.add.BaseAddGoodsBO;
import cn.freemud.demo.entities.bo.goods.add.MCoffeeAddGoodsBO; import cn.freemud.demo.entities.bo.goods.add.MCoffeeAddGoodsBO;
import cn.freemud.demo.manager.product.ProductManager;
import cn.freemud.demo.manager.store.StoreService; import cn.freemud.demo.manager.store.StoreService;
import cn.freemud.entities.dto.GetAppKeyRequestDto; import cn.freemud.entities.dto.GetAppKeyRequestDto;
import cn.freemud.entities.dto.GetAppKeyResponseDto; import cn.freemud.entities.dto.GetAppKeyResponseDto;
import cn.freemud.entities.dto.GetCouponDetailResponseDto; import cn.freemud.entities.dto.GetCouponDetailResponseDto;
import cn.freemud.enums.CouponStatus;
import cn.freemud.enums.ResponseResult; import cn.freemud.enums.ResponseResult;
import cn.freemud.enums.StoreItemStatus;
import cn.freemud.redis.RedisCache; import cn.freemud.redis.RedisCache;
import cn.freemud.service.thirdparty.CardBinClient; import cn.freemud.service.thirdparty.CardBinClient;
import cn.freemud.service.thirdparty.CouponOnlineClient; import cn.freemud.service.thirdparty.CouponOnlineClient;
...@@ -17,7 +20,9 @@ import cn.freemud.utils.LogUtil; ...@@ -17,7 +20,9 @@ import cn.freemud.utils.LogUtil;
import cn.freemud.utils.RedisUtil; import cn.freemud.utils.RedisUtil;
import com.freemud.card.sdk.comm.Finals; import com.freemud.card.sdk.comm.Finals;
import com.freemud.card.sdk.comm.SignUtil; import com.freemud.card.sdk.comm.SignUtil;
import com.freemud.sdk.api.assortment.shoppingcart.constant.CommonsConstant;
import com.google.common.base.Joiner; import com.google.common.base.Joiner;
import com.google.common.collect.Lists;
import ma.glasnost.orika.MapperFacade; import ma.glasnost.orika.MapperFacade;
import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang.StringUtils; import org.apache.commons.lang.StringUtils;
...@@ -27,10 +32,7 @@ import org.springframework.beans.factory.annotation.Value; ...@@ -27,10 +32,7 @@ import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import javax.annotation.Resource; import javax.annotation.Resource;
import java.util.List; import java.util.*;
import java.util.Map;
import java.util.Objects;
import java.util.TreeMap;
@Service("KgdCouponService") @Service("KgdCouponService")
public class KgdCouponServiceImpl implements CouponService { public class KgdCouponServiceImpl implements CouponService {
...@@ -54,6 +56,9 @@ public class KgdCouponServiceImpl implements CouponService { ...@@ -54,6 +56,9 @@ public class KgdCouponServiceImpl implements CouponService {
@Resource @Resource
private MapperFacade mapperFacade; private MapperFacade mapperFacade;
@Autowired
private ProductManager productManager;
@Override @Override
public CouponDetailBO getCouponDetail(GetCouponDetailBO getCouponDetailBO) { public CouponDetailBO getCouponDetail(GetCouponDetailBO getCouponDetailBO) {
Map<String, String> map = new TreeMap<String, String>(); Map<String, String> map = new TreeMap<String, String>();
...@@ -82,6 +87,79 @@ public class KgdCouponServiceImpl implements CouponService { ...@@ -82,6 +87,79 @@ public class KgdCouponServiceImpl implements CouponService {
return null; return null;
} }
@Override
public CheckSpqBO checkSpq(BaseAddGoodsBO baseRequestBO) {
CheckSpqBO result = new CheckSpqBO();
GetCouponDetailBO getCouponDetail = convert2GetCouponDetailBO(baseRequestBO);
// 如果是商品券,获取商品券信息
CouponDetailBO couponDetail = getCouponDetail(getCouponDetail);
if (couponDetail == null || !couponDetail.getResult().equals(ResponseCodeConstant.RESPONSE_SUCCESS_1) || CollectionUtils.isEmpty(couponDetail.getDetails())) {
return null;
}
if (CollectionUtils.isEmpty(couponDetail.getDetails())) {
return null;
}
Integer couponType = 0;
CouponDetailBO.Details couponActivityDetail = null;
if (StringUtils.isNotBlank(baseRequestBO.getSkuId())){
boolean productValid = false;
for (CouponDetailBO.Details detail : couponDetail.getDetails()) {
if (productValid) break;
if (!CouponStatus.STATUS_0.getCode().equals(detail.getStatus())) continue;
for (CouponDetailBO.ActiveProduct activeProduct : detail.getActiveProduct()) {
if (baseRequestBO.getSkuId().equals(activeProduct.getProductIdPartner())) {
productValid = true;
couponActivityDetail = detail;
couponType = detail.getType();
break;
}
}
}
//检查商品是否有效
if (!productValid) {
return null;
}
} else {
couponActivityDetail = couponDetail.getDetails().get(0);
}
// 判断该券是否在这个门店下(一个券可以在多个门店下使用)
List<String> couPonstoreIds = Lists.newArrayList();
for (CouponDetailBO.Details detail : couponDetail.getDetails()) {
if (!CouponStatus.STATUS_0.getCode().equals(detail.getStatus())) continue;
for (CouponDetailBO.ActiveRestrictionVOS activeRestrictionVO : detail.getActiveRestrictionVOS()) {
couPonstoreIds.add(activeRestrictionVO.getStoreIdPartner());
}
}
if (CollectionUtils.isNotEmpty(couPonstoreIds) && !couPonstoreIds.contains(baseRequestBO.getShopId())) {
return null;
}
//券返回的商品id
List<String> skuIds = Lists.newArrayList();
String skuId = baseRequestBO.getSkuId();
if (StringUtils.isBlank(skuId)){
skuId = couponDetail.getDetails().get(0).getActiveProduct().get(0).getProductIdPartner();
}
skuIds.add(skuId);
// 通过skuid查询spuid
GetProductBySkuIdBO getProductBySkuIdBO = convert2GetProductBySkuIdBO(baseRequestBO);
Map<String, GetProductBySkuIdResponseBO> productsInfoBySkuIds = productManager.getProductsInfoBySkuIds(getProductBySkuIdBO, baseRequestBO.getManagerService().getProductService());
GetProductBySkuIdResponseBO productsVo = productsInfoBySkuIds.get(skuId);
if (null == productsVo || !Objects.equals(productsVo.getStatus(), StoreItemStatus.PUT_ON_SALE.getCode())) {
return null;
}
result.setType(couponType);
result.setDetails(couponActivityDetail);
result.setSkuId(productsVo.getSkuId());
result.setSpuId(productsVo.getSpuId());
return result;
}
private CouponDetailBO convert2CouponDetailBO(GetCouponDetailResponseDto responseDto) { private CouponDetailBO convert2CouponDetailBO(GetCouponDetailResponseDto responseDto) {
CouponDetailBO couponDetailBO = mapperFacade.map(responseDto, CouponDetailBO.class); CouponDetailBO couponDetailBO = mapperFacade.map(responseDto, CouponDetailBO.class);
return couponDetailBO; return couponDetailBO;
...@@ -102,4 +180,27 @@ public class KgdCouponServiceImpl implements CouponService { ...@@ -102,4 +180,27 @@ public class KgdCouponServiceImpl implements CouponService {
return appSecret; return appSecret;
} }
private GetCouponDetailBO convert2GetCouponDetailBO(BaseAddGoodsBO baseRequestBO) {
GetCouponDetailBO getCouponDetailBO = new GetCouponDetailBO();
getCouponDetailBO.setPartnerId(baseRequestBO.getPartnerId());
getCouponDetailBO.setCouponCode(StringUtils.isBlank(baseRequestBO.getCouponCode()) ? baseRequestBO.getSpuId().substring(CommonsConstant.COUPON_PREFIX.length()) : baseRequestBO.getCouponCode());
getCouponDetailBO.setStoreCode(baseRequestBO.getShopId());
return getCouponDetailBO;
}
private GetProductBySkuIdBO convert2GetProductBySkuIdBO(BaseAddGoodsBO baseRequestBO) {
GetProductBySkuIdBO getProductBySkuIdBO = new GetProductBySkuIdBO();
getProductBySkuIdBO.setMenuType(baseRequestBO.getMenuType());
getProductBySkuIdBO.setPartnerId(baseRequestBO.getPartnerId());
List<String> skuids = new ArrayList<>();
skuids.add(baseRequestBO.getSkuId());
getProductBySkuIdBO.setSkuids(skuids);
getProductBySkuIdBO.setStoreId(baseRequestBO.getShopId());
return getProductBySkuIdBO;
}
} }
...@@ -92,7 +92,8 @@ public abstract class AbstractAddGoodsService implements AddGoodsService { ...@@ -92,7 +92,8 @@ public abstract class AbstractAddGoodsService implements AddGoodsService {
private static final String limitCartKey = "ecology:kgd:wxappconfig:open_platform_partner_wxapp_config:appkey_"; private static final String limitCartKey = "ecology:kgd:wxappconfig:open_platform_partner_wxapp_config:appkey_";
@Autowired
private CouponService couponService;
/** /**
* 加车的流程 * 加车的流程
...@@ -204,6 +205,9 @@ public abstract class AbstractAddGoodsService implements AddGoodsService { ...@@ -204,6 +205,9 @@ public abstract class AbstractAddGoodsService implements AddGoodsService {
// 获取商品信息 // 获取商品信息
GetProductBO getProductBO = convert2ProductBO(baseRequestBO); GetProductBO getProductBO = convert2ProductBO(baseRequestBO);
if (getProductBO == null){
throw new ServiceException(ResponseResult.SHOPPING_CART_COUPON_MIX_NOT_EXIST);
}
List<ProductBO> productsInfoList = productManager.getProductsInfo(getProductBO, baseRequestBO.getManagerService().getProductService()); List<ProductBO> productsInfoList = productManager.getProductsInfo(getProductBO, baseRequestBO.getManagerService().getProductService());
ProductBO productsInfo = productsInfoList.get(0); ProductBO productsInfo = productsInfoList.get(0);
bo.setProduct(productsInfo); bo.setProduct(productsInfo);
...@@ -260,7 +264,7 @@ public abstract class AbstractAddGoodsService implements AddGoodsService { ...@@ -260,7 +264,7 @@ public abstract class AbstractAddGoodsService implements AddGoodsService {
private GetCouponDetailBO convert2GetCouponDetailBO(BaseAddGoodsBO baseRequestBO) { private GetCouponDetailBO convert2GetCouponDetailBO(BaseAddGoodsBO baseRequestBO) {
GetCouponDetailBO getCouponDetailBO = new GetCouponDetailBO(); GetCouponDetailBO getCouponDetailBO = new GetCouponDetailBO();
getCouponDetailBO.setPartnerId(baseRequestBO.getPartnerId()); getCouponDetailBO.setPartnerId(baseRequestBO.getPartnerId());
getCouponDetailBO.setCouponCode(baseRequestBO.getCouponCode()); getCouponDetailBO.setCouponCode(StringUtils.isBlank(baseRequestBO.getCouponCode()) ? baseRequestBO.getSpuId().substring(CommonsConstant.COUPON_PREFIX.length()) : baseRequestBO.getCouponCode());
getCouponDetailBO.setStoreCode(baseRequestBO.getShopId()); getCouponDetailBO.setStoreCode(baseRequestBO.getShopId());
return getCouponDetailBO; return getCouponDetailBO;
...@@ -268,65 +272,19 @@ public abstract class AbstractAddGoodsService implements AddGoodsService { ...@@ -268,65 +272,19 @@ public abstract class AbstractAddGoodsService implements AddGoodsService {
private GetProductBO convert2ProductBO(BaseAddGoodsBO baseRequestBO) { private GetProductBO convert2ProductBO(BaseAddGoodsBO baseRequestBO) {
GetProductBO getProductBO = new GetProductBO(); GetProductBO getProductBO = new GetProductBO();
GetCouponDetailBO getCouponDetail = convert2GetCouponDetailBO(baseRequestBO);
getProductBO.setStoreId(baseRequestBO.getShopId()); getProductBO.setStoreId(baseRequestBO.getShopId());
getProductBO.setMenuType(baseRequestBO.getMenuType()); getProductBO.setMenuType(baseRequestBO.getMenuType());
getProductBO.setPartnerId(baseRequestBO.getPartnerId()); getProductBO.setPartnerId(baseRequestBO.getPartnerId());
if (baseRequestBO.getSpuId().startsWith(CommonsConstant.COUPON_PREFIX)) { if (baseRequestBO.getSpuId().startsWith(CommonsConstant.COUPON_PREFIX)) {
// 如果是商品券,获取商品券信息 CheckSpqBO checkSpqBO = couponService.checkSpq(baseRequestBO);
CouponDetailBO couponDetail = couponManager.getCouponDetail(getCouponDetail, baseRequestBO.getManagerService().getCouponService()); if (checkSpqBO == null){
if (couponDetail == null || !couponDetail.getResult().equals(ResponseCodeConstant.RESPONSE_SUCCESS_1) || CollectionUtils.isEmpty(couponDetail.getDetails())) {
return null;
}
if (CollectionUtils.isEmpty(couponDetail.getDetails())) {
return null;
}
Integer couponType = 0;
boolean productValid = false;
for (CouponDetailBO.Details detail : couponDetail.getDetails()) {
if (productValid) break;
if (!CouponStatus.STATUS_0.getCode().equals(detail.getStatus())) continue;
for (CouponDetailBO.ActiveProduct activeProduct : detail.getActiveProduct()) {
if (baseRequestBO.getSkuId().equals(activeProduct.getProductIdPartner())) {
productValid = true;
couponType = detail.getType();
break;
}
}
}
//检查商品是否有效
if (!productValid) {
return null;
}
// 判断该券是否在这个门店下(一个券可以在多个门店下使用)
List<String> couPonstoreIds = Lists.newArrayList();
for (CouponDetailBO.Details detail : couponDetail.getDetails()) {
if (!CouponStatus.STATUS_0.getCode().equals(detail.getStatus())) continue;
for (CouponDetailBO.ActiveRestrictionVOS activeRestrictionVO : detail.getActiveRestrictionVOS()) {
couPonstoreIds.add(activeRestrictionVO.getStoreIdPartner());
}
}
if (CollectionUtils.isNotEmpty(couPonstoreIds) && !couPonstoreIds.contains(baseRequestBO.getShopId())) {
return null;
}
//券返回的商品id
List<String> skuIds = Lists.newArrayList();
String skuId = baseRequestBO.getSpuId();
skuIds.add(skuId);
// 通过skuid查询spuid
GetProductBySkuIdBO getProductBySkuIdBO = convert2GetProductBySkuIdBO(baseRequestBO);
Map<String, GetProductBySkuIdResponseBO> productsInfoBySkuIds = productManager.getProductsInfoBySkuIds(getProductBySkuIdBO, baseRequestBO.getManagerService().getProductService());
GetProductBySkuIdResponseBO productsVo = productsInfoBySkuIds.get(skuId);
if (null == productsVo || !Objects.equals(productsVo.getStatus(), StoreItemStatus.PUT_ON_SALE.getCode())) {
return null; return null;
} }
getProductBO.setSpuid(Collections.singletonList(productsVo.getSpuId())); getProductBO.setSpuid(Collections.singletonList(checkSpqBO.getSpuId()));
getProductBO.setSkuid(Collections.singletonList(productsVo.getSkuId())); getProductBO.setSkuid(Collections.singletonList(checkSpqBO.getSkuId()));
getProductBO.setCouponType(couponType); getProductBO.setCouponType(checkSpqBO.getType());
getProductBO.setActivityCode(couponDetail.getDetails().get(0).getActive().getActiveCode()); getProductBO.setActivityCode(checkSpqBO.getDetails().getActive().getActiveCode());
} else { } else {
getProductBO.setSkuid(Collections.singletonList(baseRequestBO.getSkuId())); getProductBO.setSkuid(Collections.singletonList(baseRequestBO.getSkuId()));
getProductBO.setSpuid(Collections.singletonList(baseRequestBO.getSpuId())); getProductBO.setSpuid(Collections.singletonList(baseRequestBO.getSpuId()));
...@@ -621,7 +579,6 @@ public abstract class AbstractAddGoodsService implements AddGoodsService { ...@@ -621,7 +579,6 @@ public abstract class AbstractAddGoodsService implements AddGoodsService {
/** /**
* 设置没有加入购物车的提示语 * 设置没有加入购物车的提示语
* @param messageBuilder * @param messageBuilder
* @param activityList
*/ */
private ArrayList<ActivityList> setMessageNotInShoppingCart(StringBuilder messageBuilder, ActivityBO activityBO, List<BenefitBeanBO> benefitBeanBOList, BenefitBeanBO benefitBeanBO) { private ArrayList<ActivityList> setMessageNotInShoppingCart(StringBuilder messageBuilder, ActivityBO activityBO, List<BenefitBeanBO> benefitBeanBOList, BenefitBeanBO benefitBeanBO) {
......
...@@ -73,6 +73,7 @@ public class PlatformUpdateGoodsQtyService extends AbstractUpdateGoodsQtyService ...@@ -73,6 +73,7 @@ public class PlatformUpdateGoodsQtyService extends AbstractUpdateGoodsQtyService
this.setCommonDiscountGoods(calculationDiscountGoodsList,cartGoods); this.setCommonDiscountGoods(calculationDiscountGoodsList,cartGoods);
} }
else {//商品券->商品券ID换取商品 else {//商品券->商品券ID换取商品
String goodsId = StringUtils.isNotBlank(cartGoods.getSkuId()) ? cartGoods.getSkuId() : cartGoods.getSpuId(); String goodsId = StringUtils.isNotBlank(cartGoods.getSkuId()) ? cartGoods.getSkuId() : cartGoods.getSpuId();
GetCalculationDiscountBO.CalculationDiscountCoupon coupon = new GetCalculationDiscountBO.CalculationDiscountCoupon(); GetCalculationDiscountBO.CalculationDiscountCoupon coupon = new GetCalculationDiscountBO.CalculationDiscountCoupon();
coupon.setCode(cartGoods.getCouponCode()); coupon.setCode(cartGoods.getCouponCode());
...@@ -159,6 +160,9 @@ public class PlatformUpdateGoodsQtyService extends AbstractUpdateGoodsQtyService ...@@ -159,6 +160,9 @@ public class PlatformUpdateGoodsQtyService extends AbstractUpdateGoodsQtyService
@Override @Override
public AddGoodsToShoppingCartBO checkCustomBusinessRules(UpdateAddGoodsBO baseRequestDTO, CheckBussinessRulesBO checkBussinessRulesBO, AddGoodsToShoppingCartBO addGoodsToShoppingCartBO) { public AddGoodsToShoppingCartBO checkCustomBusinessRules(UpdateAddGoodsBO baseRequestDTO, CheckBussinessRulesBO checkBussinessRulesBO, AddGoodsToShoppingCartBO addGoodsToShoppingCartBO) {
// 校验商品券
// 商品券商品时间校验 // 商品券商品时间校验
ValidateShopProductRequestBO validateShopProductRequestBO = getValidateShopProductRequestBO(checkBussinessRulesBO.getProduct(), baseRequestDTO); ValidateShopProductRequestBO validateShopProductRequestBO = getValidateShopProductRequestBO(checkBussinessRulesBO.getProduct(), baseRequestDTO);
ValiadShopProductBO valiadShopProductBO = productManager.validateShopProduct(validateShopProductRequestBO, baseRequestDTO.getManagerService().getProductService()); ValiadShopProductBO valiadShopProductBO = productManager.validateShopProduct(validateShopProductRequestBO, baseRequestDTO.getManagerService().getProductService());
......
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