|
|
@@ -1,23 +1,31 @@
|
|
|
package com.cyksj.service.order.impl;
|
|
|
|
|
|
+import cn.hutool.core.bean.BeanUtil;
|
|
|
import cn.hutool.core.collection.CollUtil;
|
|
|
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
|
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
|
+import com.cyksj.common.constant.Constant;
|
|
|
import com.cyksj.common.exception.BusinessRuntimeException;
|
|
|
+import com.cyksj.common.util.Jsons;
|
|
|
import com.cyksj.mapper.order.ShoppingCartDonMapper;
|
|
|
+import com.cyksj.model.entity.OrderDon;
|
|
|
import com.cyksj.model.entity.ShoppingCartDon;
|
|
|
import com.cyksj.model.request.OrderPayRequest;
|
|
|
+import com.cyksj.model.request.ShoppingCartDonReq;
|
|
|
import com.cyksj.model.request.UnifiedOrderPayReq;
|
|
|
import com.cyksj.model.views.GoodsDonSkuDetailView;
|
|
|
import com.cyksj.model.views.ShoppingCartDonPayDetailView;
|
|
|
import com.cyksj.service.order.OrderDonService;
|
|
|
import com.cyksj.service.order.ShoppingCartDonService;
|
|
|
import com.ejlchina.searcher.BeanSearcher;
|
|
|
+import com.ejlchina.searcher.param.Operator;
|
|
|
import com.ejlchina.searcher.util.MapUtils;
|
|
|
import lombok.RequiredArgsConstructor;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
|
|
|
+import java.math.BigDecimal;
|
|
|
import java.util.List;
|
|
|
+import java.util.Set;
|
|
|
|
|
|
/**
|
|
|
* 项目名: yhlxj
|
|
|
@@ -32,13 +40,15 @@ public class ShoppingCartOrderServiceImpl extends ServiceImpl<ShoppingCartDonMap
|
|
|
|
|
|
private final OrderDonService orderDonService;
|
|
|
@Override
|
|
|
- public void addGoodsShoppingCart(ShoppingCartDon goodsCartDon) {
|
|
|
+ public void addGoodsShoppingCart(ShoppingCartDonReq req) throws Exception {
|
|
|
//最多添加购物车数量30
|
|
|
int count = this.count(Wrappers.lambdaQuery(ShoppingCartDon.class)
|
|
|
- .eq(ShoppingCartDon::getUserId, goodsCartDon.getUserId()));
|
|
|
+ .eq(ShoppingCartDon::getUserId, req.getUserId()));
|
|
|
if (count >= 30) {
|
|
|
throw BusinessRuntimeException.getInstance("最多添加30件商品至购物车");
|
|
|
}
|
|
|
+ ShoppingCartDon goodsCartDon = new ShoppingCartDon();
|
|
|
+ BeanUtil.copyProperties(req, goodsCartDon);
|
|
|
Long skuId = goodsCartDon.getSkuId();
|
|
|
if (skuId == null) {
|
|
|
throw BusinessRuntimeException.getInstance("请指定商品添加至购物车");
|
|
|
@@ -54,9 +64,34 @@ public class ShoppingCartOrderServiceImpl extends ServiceImpl<ShoppingCartDonMap
|
|
|
if (!goodsDonSkuDetailView.getGoodsSkuStatus()) {
|
|
|
throw BusinessRuntimeException.getInstance("该商品规格已下架..");
|
|
|
}
|
|
|
+ BigDecimal shopCartPrice = goodsCartDon.getPrice();
|
|
|
+ if (shopCartPrice == null) {
|
|
|
+ throw BusinessRuntimeException.getInstance("添加购物车的商品价格为空");
|
|
|
+ }
|
|
|
+ BigDecimal price = goodsDonSkuDetailView.getPrice();
|
|
|
+ BigDecimal specificPrice = goodsDonSkuDetailView.getSpecificPrice();
|
|
|
+ String specificGoodsIdsStr = goodsDonSkuDetailView.getSpecificGoodsIds();
|
|
|
+ Boolean isSpecificPrice = false;
|
|
|
+ if (specificPrice != null && shopCartPrice.compareTo(specificPrice) == 0) {
|
|
|
+ //是否满足特定价格添加至购物车
|
|
|
+ Set<Long> specificGoodsIds = Jsons.parseSet(specificGoodsIdsStr, Long.class);
|
|
|
+ Number number = beanSearcher.searchCount(OrderDon.class, MapUtils.builder().field(OrderDon::getGoodsId, specificGoodsIds).op(Operator.InList)
|
|
|
+ .field(OrderDon::getUserId, goodsCartDon.getUserId())
|
|
|
+ .field(OrderDon::getStatus, Constant.noOrderAllStatus).op(Operator.NotIn)
|
|
|
+ .build());
|
|
|
+ if (number.intValue() == 0) {
|
|
|
+ throw BusinessRuntimeException.getInstance("您不满足该商品的特定价格要求");
|
|
|
+ }
|
|
|
+ isSpecificPrice = true;
|
|
|
+ goodsCartDon.setIsSpecificPrice(true);
|
|
|
+ }
|
|
|
+ if (!isSpecificPrice && shopCartPrice.compareTo(price) < 0) {
|
|
|
+ shopCartPrice = price;
|
|
|
+ }
|
|
|
if (goodsCartDon.getNum() == null) {
|
|
|
goodsCartDon.setNum(1);
|
|
|
}
|
|
|
+ goodsCartDon.setPrice(shopCartPrice);
|
|
|
goodsCartDon.setGoodsId(goodsDonSkuDetailView.getGoodsId());
|
|
|
goodsCartDon.setSkuId(skuId);
|
|
|
this.save(goodsCartDon);
|