|
@@ -22,14 +22,17 @@ import com.kxs.common.security.util.SecurityUtils;
|
|
|
import com.kxs.product.api.dto.kxsapp.shop.GoodsSubmitDTO;
|
|
import com.kxs.product.api.dto.kxsapp.shop.GoodsSubmitDTO;
|
|
|
import com.kxs.product.api.dto.kxsapp.shop.PayOrderDTO;
|
|
import com.kxs.product.api.dto.kxsapp.shop.PayOrderDTO;
|
|
|
import com.kxs.product.api.model.KxsShopGoods;
|
|
import com.kxs.product.api.model.KxsShopGoods;
|
|
|
|
|
+import com.kxs.product.api.model.KxsShopGoodsSku;
|
|
|
import com.kxs.product.api.model.KxsShopOrder;
|
|
import com.kxs.product.api.model.KxsShopOrder;
|
|
|
import com.kxs.product.api.model.KxsShopOrderInfo;
|
|
import com.kxs.product.api.model.KxsShopOrderInfo;
|
|
|
import com.kxs.product.api.vo.kxsapp.shop.*;
|
|
import com.kxs.product.api.vo.kxsapp.shop.*;
|
|
|
import com.kxs.product.biz.constant.enums.KxsShopEnum;
|
|
import com.kxs.product.biz.constant.enums.KxsShopEnum;
|
|
|
import com.kxs.product.biz.constant.enums.ProductErrorTypeEnum;
|
|
import com.kxs.product.biz.constant.enums.ProductErrorTypeEnum;
|
|
|
import com.kxs.product.biz.mapper.KxsShopGoodsMapper;
|
|
import com.kxs.product.biz.mapper.KxsShopGoodsMapper;
|
|
|
|
|
+import com.kxs.product.biz.mapper.KxsShopGoodsSkuMapper;
|
|
|
import com.kxs.product.biz.mapper.KxsShopOrderInfoMapper;
|
|
import com.kxs.product.biz.mapper.KxsShopOrderInfoMapper;
|
|
|
import com.kxs.product.biz.mapper.KxsShopOrderMapper;
|
|
import com.kxs.product.biz.mapper.KxsShopOrderMapper;
|
|
|
|
|
+import com.kxs.product.biz.service.KxsShopGoodsSkuService;
|
|
|
import com.kxs.product.biz.service.KxsShopOrderService;
|
|
import com.kxs.product.biz.service.KxsShopOrderService;
|
|
|
import com.kxs.user.api.feign.RemoteKxsUserService;
|
|
import com.kxs.user.api.feign.RemoteKxsUserService;
|
|
|
import com.lly835.bestpay.enums.OrderStatusEnum;
|
|
import com.lly835.bestpay.enums.OrderStatusEnum;
|
|
@@ -64,7 +67,7 @@ public class KxsShopOrderServiceImpl extends ServiceImpl<KxsShopOrderMapper, Kxs
|
|
|
private final RemoteKxsUserService remoteKxsUserService;
|
|
private final RemoteKxsUserService remoteKxsUserService;
|
|
|
|
|
|
|
|
private final PaymentFactory paymentFactory;
|
|
private final PaymentFactory paymentFactory;
|
|
|
-
|
|
|
|
|
|
|
+ private final KxsShopGoodsSkuMapper kxsShopGoodsSkuMapper;
|
|
|
@Override
|
|
@Override
|
|
|
@Transactional(rollbackFor = Exception.class)
|
|
@Transactional(rollbackFor = Exception.class)
|
|
|
public R submitOrder(GoodsSubmitDTO param) {
|
|
public R submitOrder(GoodsSubmitDTO param) {
|
|
@@ -86,6 +89,32 @@ public class KxsShopOrderServiceImpl extends ServiceImpl<KxsShopOrderMapper, Kxs
|
|
|
//查询商品
|
|
//查询商品
|
|
|
KxsShopGoods goods = goodsMapper.selectById(param.getGoodsId());
|
|
KxsShopGoods goods = goodsMapper.selectById(param.getGoodsId());
|
|
|
Optional.ofNullable(goods).orElseThrow(() -> new GlobalCustomerException("商品不存在"));
|
|
Optional.ofNullable(goods).orElseThrow(() -> new GlobalCustomerException("商品不存在"));
|
|
|
|
|
+ //查询商品sku
|
|
|
|
|
+ KxsShopGoodsSku kxsShopGoodsSku = kxsShopGoodsSkuMapper.selectOne(Wrappers.<KxsShopGoodsSku>query().lambda().eq(KxsShopGoodsSku::getGoodId, goods.getId()));
|
|
|
|
|
+ if (kxsShopGoodsSku != null){
|
|
|
|
|
+ //当sku库存不为null时需做存量校验
|
|
|
|
|
+ if (kxsShopGoodsSku.getStockNum() != null && kxsShopGoodsSku.getStockNum() != -1){
|
|
|
|
|
+ int i = kxsShopGoodsSku.getStockNum() - param.getNumber();
|
|
|
|
|
+ if(i < 0){
|
|
|
|
|
+ return R.failed("当前库存不足");
|
|
|
|
|
+ }
|
|
|
|
|
+ kxsShopGoodsSku.setStockNum(i);
|
|
|
|
|
+ //修改库存
|
|
|
|
|
+ kxsShopGoodsSkuMapper.updateById(kxsShopGoodsSku);
|
|
|
|
|
+ }
|
|
|
|
|
+ //校验是否存在起购以及限购数量校验
|
|
|
|
|
+ if (kxsShopGoodsSku.getStartByCount() != null && kxsShopGoodsSku.getStartByCount() != 0){
|
|
|
|
|
+ boolean b = kxsShopGoodsSku.getStartByCount() > param.getNumber();
|
|
|
|
|
+ if (b){
|
|
|
|
|
+ return R.failed("该商品最低" + kxsShopGoodsSku.getStartByCount() + "件起购");
|
|
|
|
|
+ }
|
|
|
|
|
+ }else if (kxsShopGoodsSku.getLimitCount() != null && kxsShopGoodsSku.getLimitCount() != 0){
|
|
|
|
|
+ boolean b = kxsShopGoodsSku.getLimitCount() < param.getNumber();
|
|
|
|
|
+ if (b){
|
|
|
|
|
+ return R.failed("该商品每人最多购买" + kxsShopGoodsSku.getLimitCount() + "件");
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
//订单详情
|
|
//订单详情
|
|
|
KxsShopOrderInfo orderInfo = new KxsShopOrderInfo();
|
|
KxsShopOrderInfo orderInfo = new KxsShopOrderInfo();
|
|
|
orderInfo.setNumber(param.getNumber());
|
|
orderInfo.setNumber(param.getNumber());
|
|
@@ -185,6 +214,8 @@ public class KxsShopOrderServiceImpl extends ServiceImpl<KxsShopOrderMapper, Kxs
|
|
|
//修改订单信息
|
|
//修改订单信息
|
|
|
this.update(lambdaUpdateWrapper);
|
|
this.update(lambdaUpdateWrapper);
|
|
|
//TODO 余额走支付接下来的逻辑
|
|
//TODO 余额走支付接下来的逻辑
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
|