|
@@ -137,7 +137,7 @@ public class OrderConcreteBuilder extends OrderBuilder {
|
|
*/
|
|
*/
|
|
@Override
|
|
@Override
|
|
public void buildOrderCheckHandlePart(OrderRequestBo orderRequest, Long userId) throws ServiceException {
|
|
public void buildOrderCheckHandlePart(OrderRequestBo orderRequest, Long userId) throws ServiceException {
|
|
- //参数强校验 START
|
|
|
|
|
|
+ // 参数强校验 START
|
|
List<OrderRequestProductBo> skuList = orderRequest.getProductList();
|
|
List<OrderRequestProductBo> skuList = orderRequest.getProductList();
|
|
if (CollectionUtils.isEmpty(skuList) || orderRequest.getTotalPrice() == null) {
|
|
if (CollectionUtils.isEmpty(skuList) || orderRequest.getTotalPrice() == null) {
|
|
throw new ServiceException("参数校验失败");
|
|
throw new ServiceException("参数校验失败");
|
|
@@ -160,7 +160,7 @@ public class OrderConcreteBuilder extends OrderBuilder {
|
|
Long groupShopId = orderRequest.getGroupShopId();
|
|
Long groupShopId = orderRequest.getGroupShopId();
|
|
BigDecimal groupShopPrice = null;
|
|
BigDecimal groupShopPrice = null;
|
|
if (groupShopId != null) {
|
|
if (groupShopId != null) {
|
|
- //校验团购参数
|
|
|
|
|
|
+ // 校验团购参数
|
|
if (skuList.size() > 1) {
|
|
if (skuList.size() > 1) {
|
|
throw new ServiceException("团购订单只允许单品结算");
|
|
throw new ServiceException("团购订单只允许单品结算");
|
|
}
|
|
}
|
|
@@ -171,7 +171,7 @@ public class OrderConcreteBuilder extends OrderBuilder {
|
|
List<KxGroupShopProduct> groupShopSkuList = groupShopDTO.getGroupShopSkuList();
|
|
List<KxGroupShopProduct> groupShopSkuList = groupShopDTO.getGroupShopSkuList();
|
|
for (KxGroupShopProduct groupShopSkuDO : groupShopSkuList) {
|
|
for (KxGroupShopProduct groupShopSkuDO : groupShopSkuList) {
|
|
if (groupShopSkuDO.getProductAttrId().equals(groupShopSkuList.get(0).getProductAttrId())) {
|
|
if (groupShopSkuDO.getProductAttrId().equals(groupShopSkuList.get(0).getProductAttrId())) {
|
|
- //若找到交集
|
|
|
|
|
|
+ // 若找到交集
|
|
groupShopPrice = groupShopSkuDO.getProductGroupShopPrice();
|
|
groupShopPrice = groupShopSkuDO.getProductGroupShopPrice();
|
|
}
|
|
}
|
|
}
|
|
}
|
|
@@ -179,7 +179,7 @@ public class OrderConcreteBuilder extends OrderBuilder {
|
|
Long seckillId = orderRequest.getSeckillId();
|
|
Long seckillId = orderRequest.getSeckillId();
|
|
BigDecimal seckillIdPrice = null;
|
|
BigDecimal seckillIdPrice = null;
|
|
if (seckillId != null) {
|
|
if (seckillId != null) {
|
|
- //校验团购参数
|
|
|
|
|
|
+ // 校验团购参数
|
|
if (skuList.size() > 1) {
|
|
if (skuList.size() > 1) {
|
|
throw new ServiceException("秒杀订单只允许单品结算");
|
|
throw new ServiceException("秒杀订单只允许单品结算");
|
|
}
|
|
}
|
|
@@ -189,16 +189,17 @@ public class OrderConcreteBuilder extends OrderBuilder {
|
|
}
|
|
}
|
|
seckillIdPrice = storeSeckillVo.getPrice();
|
|
seckillIdPrice = storeSeckillVo.getPrice();
|
|
}
|
|
}
|
|
- //商品价格
|
|
|
|
|
|
+
|
|
|
|
+ // 商品价格
|
|
BigDecimal productPrice = BigDecimal.ZERO;
|
|
BigDecimal productPrice = BigDecimal.ZERO;
|
|
BigDecimal productOriginalPrice = BigDecimal.ZERO;
|
|
BigDecimal productOriginalPrice = BigDecimal.ZERO;
|
|
- //稍后用于优惠券作用范围校验
|
|
|
|
|
|
+ // 稍后用于优惠券作用范围校验
|
|
Map<Long, BigDecimal> categoryPriceMap = new HashMap<>();
|
|
Map<Long, BigDecimal> categoryPriceMap = new HashMap<>();
|
|
- //稍后用于插入KxStoreProductVo
|
|
|
|
|
|
+ // 稍后用于插入KxStoreProductVo
|
|
KxStoreProductVo product;
|
|
KxStoreProductVo product;
|
|
Map<Long, KxStoreProductVo> productIdDTOMap = new HashMap<>();
|
|
Map<Long, KxStoreProductVo> productIdDTOMap = new HashMap<>();
|
|
for (OrderRequestProductBo orderRequestKxStoreProduct : skuList) {
|
|
for (OrderRequestProductBo orderRequestKxStoreProduct : skuList) {
|
|
- //每个地方仓库的价格不一样,所以需要查询各自商户设置的价格
|
|
|
|
|
|
+ // 每个地方仓库的价格不一样,所以需要查询各自商户设置的价格
|
|
product = productMapper.getProductByIdAndStorageId(orderRequestKxStoreProduct.getProductId(), orderRequest.getStorageId());
|
|
product = productMapper.getProductByIdAndStorageId(orderRequestKxStoreProduct.getProductId(), orderRequest.getStorageId());
|
|
if (product == null) {
|
|
if (product == null) {
|
|
throw new ServiceException("商品并不存在");
|
|
throw new ServiceException("商品并不存在");
|
|
@@ -230,9 +231,9 @@ public class OrderConcreteBuilder extends OrderBuilder {
|
|
categoryPriceMap.put(cid, price);
|
|
categoryPriceMap.put(cid, price);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
- //优惠券折扣价格
|
|
|
|
|
|
+ // 优惠券折扣价格
|
|
BigDecimal couponPrice = BigDecimal.ZERO;
|
|
BigDecimal couponPrice = BigDecimal.ZERO;
|
|
- //优惠券校验
|
|
|
|
|
|
+ // 优惠券校验
|
|
KxStoreCouponUser userCouponFromFront = orderRequest.getCoupon();
|
|
KxStoreCouponUser userCouponFromFront = orderRequest.getCoupon();
|
|
if (userCouponFromFront != null) {
|
|
if (userCouponFromFront != null) {
|
|
if (userCouponFromFront.getId() == null || userCouponFromFront.getCouponPrice() == null) {
|
|
if (userCouponFromFront.getId() == null || userCouponFromFront.getCouponPrice() == null) {
|
|
@@ -248,7 +249,7 @@ public class OrderConcreteBuilder extends OrderBuilder {
|
|
if (!userCouponFromDB.getCouponPrice().equals(userCouponFromFront.getCouponPrice())) {
|
|
if (!userCouponFromDB.getCouponPrice().equals(userCouponFromFront.getCouponPrice())) {
|
|
throw new ServiceException("订单优惠券金额校验失败");
|
|
throw new ServiceException("订单优惠券金额校验失败");
|
|
}
|
|
}
|
|
- //校验优惠券策略是否满足
|
|
|
|
|
|
+ // 校验优惠券策略是否满足
|
|
Long categoryId = userCouponFromDB.getCategoryId();
|
|
Long categoryId = userCouponFromDB.getCategoryId();
|
|
if (categoryId != null && categoryId != 0L) {
|
|
if (categoryId != null && categoryId != 0L) {
|
|
BigDecimal p = categoryPriceMap.get(categoryId);
|
|
BigDecimal p = categoryPriceMap.get(categoryId);
|
|
@@ -262,18 +263,21 @@ public class OrderConcreteBuilder extends OrderBuilder {
|
|
}
|
|
}
|
|
couponPrice = userCouponFromDB.getCouponPrice();
|
|
couponPrice = userCouponFromDB.getCouponPrice();
|
|
}
|
|
}
|
|
|
|
+
|
|
BigDecimal freightPrice = BigDecimal.ZERO;
|
|
BigDecimal freightPrice = BigDecimal.ZERO;
|
|
- //骑手配置
|
|
|
|
- if (orderRequest.getShippingType() == 1) {
|
|
|
|
- freightPrice = appOrderService.getFreightMoney(orderRequest).getTotalPrice();
|
|
|
|
- }
|
|
|
|
- //参数强校验 END
|
|
|
|
- //???是否校验actualPrice??强迫校验?
|
|
|
|
- BigDecimal actualPrice = productPrice.subtract(couponPrice).add(freightPrice);
|
|
|
|
|
|
+ // 骑手配置
|
|
|
|
+ // if (orderRequest.getShippingType() == 1) {
|
|
|
|
+ // freightPrice = appOrderService.getFreightMoney(orderRequest).getTotalPrice();
|
|
|
|
+ // }
|
|
|
|
+
|
|
|
|
+ // 参数强校验 END
|
|
|
|
+ BigDecimal actualPrice = productPrice.subtract(couponPrice).add(freightPrice).add(orderRequest.getUrgentFee());
|
|
|
|
+
|
|
OrderPriceBo orderPriceBo = new OrderPriceBo();
|
|
OrderPriceBo orderPriceBo = new OrderPriceBo();
|
|
orderPriceBo.setGroupShopId(groupShopId);
|
|
orderPriceBo.setGroupShopId(groupShopId);
|
|
orderPriceBo.setActualPrice(actualPrice);
|
|
orderPriceBo.setActualPrice(actualPrice);
|
|
- //秒杀
|
|
|
|
|
|
+ orderPriceBo.setUrgentFee(orderRequest.getUrgentFee());
|
|
|
|
+ // 秒杀
|
|
orderPriceBo.setSeckillId(seckillId);
|
|
orderPriceBo.setSeckillId(seckillId);
|
|
orderPriceBo.setFreightPrice(freightPrice);
|
|
orderPriceBo.setFreightPrice(freightPrice);
|
|
orderPriceBo.setProductTotalPrice(productPrice);
|
|
orderPriceBo.setProductTotalPrice(productPrice);
|
|
@@ -298,11 +302,14 @@ public class OrderConcreteBuilder extends OrderBuilder {
|
|
orderDO.setPayPrice(orderPriceDTO.getActualPrice());
|
|
orderDO.setPayPrice(orderPriceDTO.getActualPrice());
|
|
orderDO.setCombinationId(orderPriceDTO.getGroupShopId());
|
|
orderDO.setCombinationId(orderPriceDTO.getGroupShopId());
|
|
orderDO.setSeckillId(orderPriceDTO.getSeckillId());
|
|
orderDO.setSeckillId(orderPriceDTO.getSeckillId());
|
|
|
|
+ orderDO.setUrgentFee(orderPriceDTO.getUrgentFee());
|
|
|
|
+
|
|
KxStoreCouponUser coupon = orderRequest.getCoupon();
|
|
KxStoreCouponUser coupon = orderRequest.getCoupon();
|
|
if (coupon != null && coupon.getCouponPrice().compareTo(BigDecimal.ZERO) != 0) {
|
|
if (coupon != null && coupon.getCouponPrice().compareTo(BigDecimal.ZERO) != 0) {
|
|
orderDO.setCouponId(coupon.getId());
|
|
orderDO.setCouponId(coupon.getId());
|
|
orderDO.setCouponPrice(coupon.getCouponPrice());
|
|
orderDO.setCouponPrice(coupon.getCouponPrice());
|
|
}
|
|
}
|
|
|
|
+
|
|
Date now = new Date();
|
|
Date now = new Date();
|
|
orderDO.setRemark(orderRequest.getMono());
|
|
orderDO.setRemark(orderRequest.getMono());
|
|
orderDO.setFreightPrice(orderPriceDTO.getFreightPrice());
|
|
orderDO.setFreightPrice(orderPriceDTO.getFreightPrice());
|
|
@@ -316,17 +323,17 @@ public class OrderConcreteBuilder extends OrderBuilder {
|
|
orderDO.setShippingType(orderRequest.getShippingType());
|
|
orderDO.setShippingType(orderRequest.getShippingType());
|
|
|
|
|
|
Boolean isIntegral = false;
|
|
Boolean isIntegral = false;
|
|
- //计算奖励积分
|
|
|
|
- BigDecimal gainIntegral = this.calculateBonusPoints(orderPriceDTO,orderRequest.getProductList());
|
|
|
|
|
|
+ // 计算奖励积分
|
|
|
|
+ BigDecimal gainIntegral = this.calculateBonusPoints(orderPriceDTO, orderRequest.getProductList());
|
|
if (PayChannelType.INTEGRAL.getCode().equals(orderRequest.getPayType())) {
|
|
if (PayChannelType.INTEGRAL.getCode().equals(orderRequest.getPayType())) {
|
|
gainIntegral = BigDecimal.ZERO;
|
|
gainIntegral = BigDecimal.ZERO;
|
|
isIntegral = true;
|
|
isIntegral = true;
|
|
}
|
|
}
|
|
orderDO.setGainIntegral(gainIntegral);
|
|
orderDO.setGainIntegral(gainIntegral);
|
|
|
|
|
|
- //自提
|
|
|
|
|
|
+ // 自提
|
|
if (orderRequest.getStorageId() != null && orderRequest.getShippingType() == 2) {
|
|
if (orderRequest.getStorageId() != null && orderRequest.getShippingType() == 2) {
|
|
- //生成核销码
|
|
|
|
|
|
+ // 生成核销码
|
|
// 2. 生成6位英文数字组合的核销码
|
|
// 2. 生成6位英文数字组合的核销码
|
|
String verificationCode = generateVerificationCode(userId);
|
|
String verificationCode = generateVerificationCode(userId);
|
|
orderDO.setVerifyCode(verificationCode);
|
|
orderDO.setVerifyCode(verificationCode);
|
|
@@ -339,7 +346,7 @@ public class OrderConcreteBuilder extends OrderBuilder {
|
|
orderDO.setCity(storage.getCity() + "");
|
|
orderDO.setCity(storage.getCity() + "");
|
|
orderDO.setCounty(storage.getCounty() + "");
|
|
orderDO.setCounty(storage.getCounty() + "");
|
|
orderDO.setUserAddress(storage.getAddress());
|
|
orderDO.setUserAddress(storage.getAddress());
|
|
- //添加预计送达时间
|
|
|
|
|
|
+ // 添加预计送达时间
|
|
orderDO.setPredictTime(orderRequest.getPredictTime());
|
|
orderDO.setPredictTime(orderRequest.getPredictTime());
|
|
orderDO.setStoreId(orderRequest.getStorageId());
|
|
orderDO.setStoreId(orderRequest.getStorageId());
|
|
}
|
|
}
|
|
@@ -355,14 +362,14 @@ public class OrderConcreteBuilder extends OrderBuilder {
|
|
orderDO.setCity(address.getCity());
|
|
orderDO.setCity(address.getCity());
|
|
orderDO.setCounty(address.getCounty());
|
|
orderDO.setCounty(address.getCounty());
|
|
orderDO.setUserAddress(address.getAddress());
|
|
orderDO.setUserAddress(address.getAddress());
|
|
- //添加预计送达时间
|
|
|
|
|
|
+ // 添加预计送达时间
|
|
orderDO.setPredictTime(orderRequest.getPredictTime());
|
|
orderDO.setPredictTime(orderRequest.getPredictTime());
|
|
orderDO.setStoreId(orderRequest.getStorageId());
|
|
orderDO.setStoreId(orderRequest.getStorageId());
|
|
orderDO.setLatitude(address.getLatitude());
|
|
orderDO.setLatitude(address.getLatitude());
|
|
orderDO.setLongitude(address.getLongitude());
|
|
orderDO.setLongitude(address.getLongitude());
|
|
}
|
|
}
|
|
|
|
|
|
- //余额结算额外逻辑
|
|
|
|
|
|
+ // 余额结算额外逻辑
|
|
if (PayChannelType.BALANCE.getCode().equals(orderRequest.getPayType())) {
|
|
if (PayChannelType.BALANCE.getCode().equals(orderRequest.getPayType())) {
|
|
KxUser kxUser = userMapper.selectById(userId);
|
|
KxUser kxUser = userMapper.selectById(userId);
|
|
if (orderPriceDTO.getActualPrice().compareTo(kxUser.getNowMoney()) > 0) {
|
|
if (orderPriceDTO.getActualPrice().compareTo(kxUser.getNowMoney()) > 0) {
|
|
@@ -376,15 +383,15 @@ public class OrderConcreteBuilder extends OrderBuilder {
|
|
} else {
|
|
} else {
|
|
orderDO.setStatus(OrderStatusType.WAIT_PREPARE_GOODS.getCode());
|
|
orderDO.setStatus(OrderStatusType.WAIT_PREPARE_GOODS.getCode());
|
|
}
|
|
}
|
|
- }else if(PayChannelType.INTEGRAL.getCode().equals(orderRequest.getPayType())){
|
|
|
|
|
|
+ } else if (PayChannelType.INTEGRAL.getCode().equals(orderRequest.getPayType())) {
|
|
orderDO.setUseIntegral(BigDecimal.valueOf(orderRequest.getIntegral()));
|
|
orderDO.setUseIntegral(BigDecimal.valueOf(orderRequest.getIntegral()));
|
|
orderDO.setPayIntegral(BigDecimal.valueOf(orderRequest.getIntegral()));
|
|
orderDO.setPayIntegral(BigDecimal.valueOf(orderRequest.getIntegral()));
|
|
- //配送费默认0payPrice
|
|
|
|
|
|
+ // 配送费默认0payPrice
|
|
orderDO.setFreightPrice(BigDecimal.ZERO);
|
|
orderDO.setFreightPrice(BigDecimal.ZERO);
|
|
- //实付金额为0
|
|
|
|
|
|
+ // 实付金额为0
|
|
orderDO.setPayPrice(BigDecimal.ZERO);
|
|
orderDO.setPayPrice(BigDecimal.ZERO);
|
|
KxUser kxUser = userMapper.selectById(userId);
|
|
KxUser kxUser = userMapper.selectById(userId);
|
|
- if (orderRequest.getIntegral()>kxUser.getIntegral().longValue()) {
|
|
|
|
|
|
+ if (orderRequest.getIntegral() > kxUser.getIntegral().longValue()) {
|
|
throw new ServiceException("积分不足!");
|
|
throw new ServiceException("积分不足!");
|
|
}
|
|
}
|
|
orderDO.setPayId("0");
|
|
orderDO.setPayId("0");
|
|
@@ -397,8 +404,9 @@ public class OrderConcreteBuilder extends OrderBuilder {
|
|
|
|
|
|
/**
|
|
/**
|
|
* 生成6位英文数字组合的核销码
|
|
* 生成6位英文数字组合的核销码
|
|
|
|
+ *
|
|
* @param orderId 订单ID
|
|
* @param orderId 订单ID
|
|
- * @param userId 用户ID
|
|
|
|
|
|
+ * @param userId 用户ID
|
|
* @return 6位核销码
|
|
* @return 6位核销码
|
|
*/
|
|
*/
|
|
private String generateVerificationCode(Long userId) {
|
|
private String generateVerificationCode(Long userId) {
|
|
@@ -428,7 +436,7 @@ public class OrderConcreteBuilder extends OrderBuilder {
|
|
return code.toString();
|
|
return code.toString();
|
|
}
|
|
}
|
|
|
|
|
|
- private BigDecimal calculateBonusPoints(OrderPriceBo orderPriceBo,List<OrderRequestProductBo> productList) {
|
|
|
|
|
|
+ private BigDecimal calculateBonusPoints(OrderPriceBo orderPriceBo, List<OrderRequestProductBo> productList) {
|
|
BigDecimal gainIntegral = BigDecimal.ZERO;
|
|
BigDecimal gainIntegral = BigDecimal.ZERO;
|
|
for (OrderRequestProductBo requestProductBo : productList) {
|
|
for (OrderRequestProductBo requestProductBo : productList) {
|
|
if (ObjectUtils.isEmpty(orderPriceBo.getGroupShopId())) {
|
|
if (ObjectUtils.isEmpty(orderPriceBo.getGroupShopId())) {
|
|
@@ -460,7 +468,7 @@ public class OrderConcreteBuilder extends OrderBuilder {
|
|
*/
|
|
*/
|
|
@Override
|
|
@Override
|
|
public void buildCoupontHandlePart(KxStoreOrder orderDO) throws ServiceException {
|
|
public void buildCoupontHandlePart(KxStoreOrder orderDO) throws ServiceException {
|
|
- //扣除用户优惠券
|
|
|
|
|
|
+ // 扣除用户优惠券
|
|
if (orderDO.getCouponId() != null) {
|
|
if (orderDO.getCouponId() != null) {
|
|
KxStoreCouponUser updateUserCouponDO = new KxStoreCouponUser();
|
|
KxStoreCouponUser updateUserCouponDO = new KxStoreCouponUser();
|
|
updateUserCouponDO.setId(orderDO.getCouponId());
|
|
updateUserCouponDO.setId(orderDO.getCouponId());
|
|
@@ -491,7 +499,7 @@ public class OrderConcreteBuilder extends OrderBuilder {
|
|
storeOrderProduct.setImg(productVo.getImage() == null ? productVo.getSliderImage() : productVo.getImage());
|
|
storeOrderProduct.setImg(productVo.getImage() == null ? productVo.getSliderImage() : productVo.getImage());
|
|
storeOrderProduct.setNum(orderRequestKxStoreProduct.getCartNum());
|
|
storeOrderProduct.setNum(orderRequestKxStoreProduct.getCartNum());
|
|
storeOrderProduct.setOtPrice(productVo.getOtPrice());
|
|
storeOrderProduct.setOtPrice(productVo.getOtPrice());
|
|
- storeOrderProduct.setPrice(ObjectUtils.isEmpty(orderRequestKxStoreProduct.getVipPrice())?orderRequestKxStoreProduct.getPrice():orderRequestKxStoreProduct.getVipPrice());
|
|
|
|
|
|
+ storeOrderProduct.setPrice(ObjectUtils.isEmpty(orderRequestKxStoreProduct.getVipPrice()) ? orderRequestKxStoreProduct.getPrice() : orderRequestKxStoreProduct.getVipPrice());
|
|
storeOrderProduct.setProductAttrId(productVo.getId());
|
|
storeOrderProduct.setProductAttrId(productVo.getId());
|
|
storeOrderProduct.setProductId(productVo.getId());
|
|
storeOrderProduct.setProductId(productVo.getId());
|
|
storeOrderProduct.setOrderNo(orderDO.getOrderId());
|
|
storeOrderProduct.setOrderNo(orderDO.getOrderId());
|
|
@@ -499,22 +507,22 @@ public class OrderConcreteBuilder extends OrderBuilder {
|
|
storeOrderProduct.setCreateTime(now);
|
|
storeOrderProduct.setCreateTime(now);
|
|
storeOrderProduct.setUpdateTime(now);
|
|
storeOrderProduct.setUpdateTime(now);
|
|
orderSkuDOList.add(storeOrderProduct);
|
|
orderSkuDOList.add(storeOrderProduct);
|
|
- //团购
|
|
|
|
|
|
+ // 团购
|
|
Long combinationId = orderDO.getCombinationId();
|
|
Long combinationId = orderDO.getCombinationId();
|
|
if (combinationId != null && combinationId > 0) {
|
|
if (combinationId != null && combinationId > 0) {
|
|
storeOrderProduct.setPrice(orderRequestKxStoreProduct.getPrice());
|
|
storeOrderProduct.setPrice(orderRequestKxStoreProduct.getPrice());
|
|
}
|
|
}
|
|
- //扣除库存
|
|
|
|
|
|
+ // 扣除库存
|
|
Long seckillId = orderDO.getSeckillId();
|
|
Long seckillId = orderDO.getSeckillId();
|
|
if (seckillId != null && seckillId > 0) {
|
|
if (seckillId != null && seckillId > 0) {
|
|
storeOrderProduct.setPrice(orderRequestKxStoreProduct.getPrice());
|
|
storeOrderProduct.setPrice(orderRequestKxStoreProduct.getPrice());
|
|
- //秒杀库存扣减
|
|
|
|
|
|
+ // 秒杀库存扣减
|
|
Integer integer = productMapper.decSeckillStock(orderRequestKxStoreProduct.getProductId(), seckillId, orderRequestKxStoreProduct.getCartNum(), orderDO.getStoreId());
|
|
Integer integer = productMapper.decSeckillStock(orderRequestKxStoreProduct.getProductId(), seckillId, orderRequestKxStoreProduct.getCartNum(), orderDO.getStoreId());
|
|
if (integer == 0) {
|
|
if (integer == 0) {
|
|
throw new ServiceException("秒杀商品库存不足");
|
|
throw new ServiceException("秒杀商品库存不足");
|
|
}
|
|
}
|
|
}
|
|
}
|
|
- //秒杀的都出后,仍需扣除仓库的库存
|
|
|
|
|
|
+ // 秒杀的都出后,仍需扣除仓库的库存
|
|
productMapper.decSkuStock(orderRequestKxStoreProduct.getProductId(), orderRequestKxStoreProduct.getCartNum(), orderDO.getStoreId());
|
|
productMapper.decSkuStock(orderRequestKxStoreProduct.getProductId(), orderRequestKxStoreProduct.getCartNum(), orderDO.getStoreId());
|
|
}
|
|
}
|
|
orderProductMapper.insertBatch(orderSkuDOList);
|
|
orderProductMapper.insertBatch(orderSkuDOList);
|
|
@@ -532,11 +540,11 @@ public class OrderConcreteBuilder extends OrderBuilder {
|
|
if (!StringUtils.isEmpty(orderRequest.getTakeWay())) {
|
|
if (!StringUtils.isEmpty(orderRequest.getTakeWay())) {
|
|
String takeWay = orderRequest.getTakeWay();
|
|
String takeWay = orderRequest.getTakeWay();
|
|
if ("cart".equals(takeWay)) {
|
|
if ("cart".equals(takeWay)) {
|
|
- //扣除购物车
|
|
|
|
|
|
+ // 扣除购物车
|
|
List<Long> productIds = skuList.stream().map(item -> item.getProductId()).collect(Collectors.toList());
|
|
List<Long> productIds = skuList.stream().map(item -> item.getProductId()).collect(Collectors.toList());
|
|
cartMapper.delete(new QueryWrapper<KxStoreCart>().in("product_id", productIds).eq("uid", userId));
|
|
cartMapper.delete(new QueryWrapper<KxStoreCart>().in("product_id", productIds).eq("uid", userId));
|
|
}
|
|
}
|
|
- //直接购买传值为 "buy"
|
|
|
|
|
|
+ // 直接购买传值为 "buy"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
@@ -564,13 +572,13 @@ public class OrderConcreteBuilder extends OrderBuilder {
|
|
KxStoreOrderVo order = KxStoreOrderList.get(0);
|
|
KxStoreOrderVo order = KxStoreOrderList.get(0);
|
|
|
|
|
|
KxUser kxUser = userMapper.selectById(orderDO.getUid());
|
|
KxUser kxUser = userMapper.selectById(orderDO.getUid());
|
|
- //扣款
|
|
|
|
|
|
+ // 扣款
|
|
KxUser userUpdate = new KxUser();
|
|
KxUser userUpdate = new KxUser();
|
|
userUpdate.setNowMoney(kxUser.getNowMoney().subtract(orderDO.getPayPrice()));
|
|
userUpdate.setNowMoney(kxUser.getNowMoney().subtract(orderDO.getPayPrice()));
|
|
userMapper.update(userUpdate, new LambdaQueryWrapper<KxUser>().eq(KxUser::getNowMoney, kxUser.getNowMoney())
|
|
userMapper.update(userUpdate, new LambdaQueryWrapper<KxUser>().eq(KxUser::getNowMoney, kxUser.getNowMoney())
|
|
.eq(KxUser::getUid, kxUser.getUid()));
|
|
.eq(KxUser::getUid, kxUser.getUid()));
|
|
|
|
|
|
- //扣款记录
|
|
|
|
|
|
+ // 扣款记录
|
|
String mark = "系统扣除了" + order.getPayPrice().toString() + "余额";
|
|
String mark = "系统扣除了" + order.getPayPrice().toString() + "余额";
|
|
Double newMoney = NumberUtil.sub(kxUser.getNowMoney(), order.getPayPrice()).doubleValue();
|
|
Double newMoney = NumberUtil.sub(kxUser.getNowMoney(), order.getPayPrice()).doubleValue();
|
|
if (newMoney < 0) {
|
|
if (newMoney < 0) {
|
|
@@ -594,15 +602,15 @@ public class OrderConcreteBuilder extends OrderBuilder {
|
|
List<KxStoreOrderProductVo> orderProducts = orderProductMapper.selectVoList(new QueryWrapper<KxStoreOrderProduct>().eq("order_id", order.getId()));
|
|
List<KxStoreOrderProductVo> orderProducts = orderProductMapper.selectVoList(new QueryWrapper<KxStoreOrderProduct>().eq("order_id", order.getId()));
|
|
order.setProductList(orderProducts);
|
|
order.setProductList(orderProducts);
|
|
orderProducts.forEach(item -> {
|
|
orderProducts.forEach(item -> {
|
|
- //增加销量
|
|
|
|
|
|
+ // 增加销量
|
|
storeProductMapper.incSales(item.getProductId(), item.getNum());
|
|
storeProductMapper.incSales(item.getProductId(), item.getNum());
|
|
if (order.getCombinationId() != null) {
|
|
if (order.getCombinationId() != null) {
|
|
- //增加团购人数, 若想算商品数这里就获取orderSku的数量,若想算人数,这里就写1
|
|
|
|
|
|
+ // 增加团购人数, 若想算商品数这里就获取orderSku的数量,若想算人数,这里就写1
|
|
groupShopMapper.incCurrentNum(order.getCombinationId(), item.getNum());
|
|
groupShopMapper.incCurrentNum(order.getCombinationId(), item.getNum());
|
|
}
|
|
}
|
|
});
|
|
});
|
|
|
|
|
|
- //通知管理员发货
|
|
|
|
|
|
+ // 通知管理员发货
|
|
GlobalExecutor.execute(() -> {
|
|
GlobalExecutor.execute(() -> {
|
|
adminNotifyBizService.newOrder(order);
|
|
adminNotifyBizService.newOrder(order);
|
|
adminNotifyBizService.newOrder(order);
|
|
adminNotifyBizService.newOrder(order);
|
|
@@ -623,13 +631,13 @@ public class OrderConcreteBuilder extends OrderBuilder {
|
|
KxStoreOrderVo order = KxStoreOrderList.get(0);
|
|
KxStoreOrderVo order = KxStoreOrderList.get(0);
|
|
|
|
|
|
KxUser kxUser = userMapper.selectById(orderDO.getUid());
|
|
KxUser kxUser = userMapper.selectById(orderDO.getUid());
|
|
- //扣款
|
|
|
|
|
|
+ // 扣款
|
|
KxUser userUpdate = new KxUser();
|
|
KxUser userUpdate = new KxUser();
|
|
userUpdate.setIntegral(kxUser.getIntegral().subtract(orderDO.getUseIntegral()));
|
|
userUpdate.setIntegral(kxUser.getIntegral().subtract(orderDO.getUseIntegral()));
|
|
userMapper.update(userUpdate, new LambdaQueryWrapper<KxUser>().eq(KxUser::getIntegral, kxUser.getIntegral())
|
|
userMapper.update(userUpdate, new LambdaQueryWrapper<KxUser>().eq(KxUser::getIntegral, kxUser.getIntegral())
|
|
.eq(KxUser::getUid, kxUser.getUid()));
|
|
.eq(KxUser::getUid, kxUser.getUid()));
|
|
|
|
|
|
- //扣款记录
|
|
|
|
|
|
+ // 扣款记录
|
|
String mark = "系统扣除了" + order.getUseIntegral().toString() + "积分";
|
|
String mark = "系统扣除了" + order.getUseIntegral().toString() + "积分";
|
|
Double newIntegral = NumberUtil.sub(kxUser.getIntegral(), order.getUseIntegral()).doubleValue();
|
|
Double newIntegral = NumberUtil.sub(kxUser.getIntegral(), order.getUseIntegral()).doubleValue();
|
|
if (newIntegral < 0) {
|
|
if (newIntegral < 0) {
|
|
@@ -653,11 +661,11 @@ public class OrderConcreteBuilder extends OrderBuilder {
|
|
List<KxStoreOrderProductVo> orderProducts = orderProductMapper.selectVoList(new QueryWrapper<KxStoreOrderProduct>().eq("order_id", order.getId()));
|
|
List<KxStoreOrderProductVo> orderProducts = orderProductMapper.selectVoList(new QueryWrapper<KxStoreOrderProduct>().eq("order_id", order.getId()));
|
|
order.setProductList(orderProducts);
|
|
order.setProductList(orderProducts);
|
|
orderProducts.forEach(item -> {
|
|
orderProducts.forEach(item -> {
|
|
- //增加销量
|
|
|
|
|
|
+ // 增加销量
|
|
storeProductMapper.incSales(item.getProductId(), item.getNum());
|
|
storeProductMapper.incSales(item.getProductId(), item.getNum());
|
|
});
|
|
});
|
|
|
|
|
|
- //通知管理员发货
|
|
|
|
|
|
+ // 通知管理员发货
|
|
GlobalExecutor.execute(() -> {
|
|
GlobalExecutor.execute(() -> {
|
|
adminNotifyBizService.newOrder(order);
|
|
adminNotifyBizService.newOrder(order);
|
|
adminPrintBizService.newOrderPrint(order);
|
|
adminPrintBizService.newOrderPrint(order);
|
|
@@ -671,12 +679,10 @@ public class OrderConcreteBuilder extends OrderBuilder {
|
|
public void buildOrderPhotosHandlePart(KxStoreOrder orderDO, OrderRequestBo orderRequest, Long userId) {
|
|
public void buildOrderPhotosHandlePart(KxStoreOrder orderDO, OrderRequestBo orderRequest, Long userId) {
|
|
try {
|
|
try {
|
|
if (orderRequest.getPhotos() != null && !orderRequest.getPhotos().isEmpty()) {
|
|
if (orderRequest.getPhotos() != null && !orderRequest.getPhotos().isEmpty()) {
|
|
- orderScreenshotService.saveOrderCreatePhotos(orderDO.getOrderId(), orderRequest.getPhotos(), userId);
|
|
|
|
- logger.info("订单 {} 保存 {} 张照片成功", orderDO.getOrderId(), orderRequest.getPhotos().size());
|
|
|
|
|
|
+ orderScreenshotService.saveOrderCreatePhotos(orderDO.getId().toString(), orderRequest.getPhotos(), userId);
|
|
}
|
|
}
|
|
} catch (Exception e) {
|
|
} catch (Exception e) {
|
|
logger.error("保存订单照片失败, orderId: {}, error: {}", orderDO.getOrderId(), e.getMessage(), e);
|
|
logger.error("保存订单照片失败, orderId: {}, error: {}", orderDO.getOrderId(), e.getMessage(), e);
|
|
- // 照片保存失败不影响订单创建,只记录日志
|
|
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|