购物车物流规则匹配问题处理
This commit is contained in:
parent
edfd75d31b
commit
5ab2865f0d
@ -124,7 +124,7 @@ public enum ResultCode {
|
||||
* 购物车
|
||||
*/
|
||||
CART_ERROR(30001, "读取结算页的购物车异常"),
|
||||
|
||||
GOODS_NOT_SUPPORT(30002, "以下商品不支持当前收货地址:"),
|
||||
SHIPPING_NOT_APPLY(30005, "当前选择地址暂不支持配送!"),
|
||||
/**
|
||||
* 订单
|
||||
|
@ -53,6 +53,10 @@ public class TradeDTO implements Serializable {
|
||||
@ApiModelProperty(value = "是否需要发票")
|
||||
private Boolean needReceipt;
|
||||
|
||||
|
||||
@ApiModelProperty(value = "不支持配送方式")
|
||||
private List<CartSkuVO> notSupportFreight;
|
||||
|
||||
/**
|
||||
* 购物车类型
|
||||
*/
|
||||
|
@ -81,6 +81,7 @@ public class TradeBuilder {
|
||||
*/
|
||||
public TradeDTO buildTrade(CartTypeEnum checkedWay) {
|
||||
TradeDTO tradeDTO = cartService.readDTO(checkedWay);
|
||||
tradeDTO.setNotSupportFreight(null);
|
||||
List<CartSkuVO> collect = tradeDTO.getSkuList().parallelStream().filter(i -> Boolean.TRUE.equals(i.getChecked())).collect(Collectors.toList());
|
||||
//拼团类型订单预处理
|
||||
if (checkedWay.equals(CartTypeEnum.PINTUAN)) {
|
||||
|
@ -15,6 +15,7 @@ import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.core.annotation.Order;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
@ -39,6 +40,7 @@ public class SkuFreightRender implements CartRenderStep {
|
||||
return;
|
||||
}
|
||||
//循环渲染购物车商品运费价格
|
||||
forSku:
|
||||
for (CartSkuVO cartSkuVO : cartSkuVOS) {
|
||||
String freightTemplateId = cartSkuVO.getGoodsSku().getFreightTemplateId();
|
||||
//如果商品设置卖家承担运费,则跳出计算
|
||||
@ -62,12 +64,20 @@ public class SkuFreightRender implements CartRenderStep {
|
||||
//获取匹配的收货地址
|
||||
for (FreightTemplateChild templateChild : freightTemplate.getFreightTemplateChildList()) {
|
||||
//如果当前模版包含,则返回
|
||||
if (templateChild.getAreaId().indexOf(addressId) > 0) {
|
||||
if (templateChild.getAreaId().contains(addressId)) {
|
||||
freightTemplateChild = templateChild;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (freightTemplateChild == null) {
|
||||
if (tradeDTO.getNotSupportFreight() == null) {
|
||||
tradeDTO.setNotSupportFreight(new ArrayList<>());
|
||||
}
|
||||
tradeDTO.getNotSupportFreight().add(cartSkuVO);
|
||||
continue forSku;
|
||||
}
|
||||
|
||||
FreightTemplateChildDTO freightTemplateChildDTO = new FreightTemplateChildDTO(freightTemplateChild);
|
||||
|
||||
freightTemplateChildDTO.setPricingMethod(freightTemplate.getPricingMethod());
|
||||
|
@ -388,7 +388,6 @@ public class CartServiceImpl implements CartService {
|
||||
|
||||
TradeDTO tradeDTO = this.readDTO(cartTypeEnum);
|
||||
MemberAddress memberAddress = memberAddressService.getById(shippingAddressId);
|
||||
this.checkAddressScope(tradeDTO.getSkuList(), memberAddress);
|
||||
tradeDTO.setMemberAddress(memberAddress);
|
||||
this.resetTradeDTO(tradeDTO);
|
||||
}
|
||||
@ -487,9 +486,11 @@ public class CartServiceImpl implements CartService {
|
||||
tradeDTO.setStoreRemark(tradeParams.getRemark());
|
||||
//过滤勾选商品
|
||||
List<CartSkuVO> collect = tradeDTO.getSkuList().parallelStream().filter(i -> Boolean.TRUE.equals(i.getChecked())).collect(Collectors.toList());
|
||||
//校验收获地址
|
||||
MemberAddress memberAddress = tradeDTO.getMemberAddress();
|
||||
this.checkAddressScope(collect, memberAddress);
|
||||
this.resetTradeDTO(tradeDTO);
|
||||
//构建交易
|
||||
Trade trade = tradeBuilder.createTrade(cartTypeEnum, tradeParams.getParentOrderSn());
|
||||
this.cleanChecked(tradeDTO);
|
||||
return trade;
|
||||
@ -514,16 +515,22 @@ public class CartServiceImpl implements CartService {
|
||||
}
|
||||
String freightTemplateId = cartSkuVO.getGoodsSku().getFreightTemplateId();
|
||||
FreightTemplateVO freightTemplate = freightTemplateService.getFreightTemplate(freightTemplateId);
|
||||
String[] addressId = memberAddress.getConsigneeAddressIdPath().split(",");
|
||||
//收货地址判定
|
||||
forTemplates:
|
||||
if (freightTemplate != null && freightTemplate.getFreightTemplateChildList() != null && !freightTemplate.getFreightTemplateChildList().isEmpty()) {
|
||||
|
||||
FreightTemplateChild freightTemplateChild = freightTemplate.getFreightTemplateChildList().get(0);
|
||||
// 检查当前配送地址的城市id是否存在与配送模版的城市id里面
|
||||
if (!freightTemplateChild.getAreaId().contains(addressId[1])) {
|
||||
throw new ServiceException("当前选择地址暂不支持配送!");
|
||||
//获取市级别id
|
||||
String addressId = memberAddress.getConsigneeAddressIdPath().split(",")[1];
|
||||
//获取匹配的收货地址
|
||||
for (FreightTemplateChild templateChild : freightTemplate.getFreightTemplateChildList()) {
|
||||
//如果当前模版包含,则返回
|
||||
if (templateChild.getAreaId().contains(addressId)) {
|
||||
break forTemplates;
|
||||
}
|
||||
}
|
||||
throw new ServiceException(ResultCode.GOODS_NOT_SUPPORT, cartSkuVO.getGoodsSku().getGoodsName());
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user