|
@@ -183,23 +183,9 @@ public class OrderGoodsServiceImpl extends ServiceImpl<OrderGoodsMapper, OrderGo
|
|
|
return baseMapper.selectOrderGoodsList(goodsOrderQueryDTO);
|
|
|
}
|
|
|
|
|
|
- /**
|
|
|
- * 新增零售商品订单
|
|
|
- *
|
|
|
- * @param orderGoodsDTO 零售商品订单
|
|
|
- * @return 结果
|
|
|
- */
|
|
|
- @Override
|
|
|
- @Transactional(rollbackFor = RuntimeException.class)
|
|
|
- public OrderPayResultVO insertRetailOrderGoods(OrderGoodsDTO orderGoodsDTO, List<OrderGoodsSkuInfoVO> orderGoodsSkuInfoVOS) {
|
|
|
- // 保存零售商品订单
|
|
|
- OrderGoods orderGoods = this.buildRetailOrderGoodsInfo(orderGoodsDTO, orderGoodsSkuInfoVOS);
|
|
|
- // 处理支付流程
|
|
|
- OrderPayResultVO orderPayResultVO = this.handlePay(orderGoods, orderGoodsDTO);
|
|
|
- return orderPayResultVO;
|
|
|
- }
|
|
|
|
|
|
@Override
|
|
|
+ @Transactional(rollbackFor = RuntimeException.class)
|
|
|
public OrderGoods cereateRetailOrderGoods(OrderGoodsDTO orderGoodsDTO, List<OrderGoodsSkuInfoVO> orderGoodsSkuInfoVOS) {
|
|
|
// 保存零售商品订单
|
|
|
OrderGoods orderGoods = this.buildRetailOrderGoodsInfo(orderGoodsDTO, orderGoodsSkuInfoVOS);
|
|
@@ -217,13 +203,11 @@ public class OrderGoodsServiceImpl extends ServiceImpl<OrderGoodsMapper, OrderGo
|
|
|
OrderGoods orderGoods = new OrderGoods();
|
|
|
BeanUtils.copyProperties(orderGoodsDTO, orderGoods);
|
|
|
orderGoods.buildCreateData();
|
|
|
- orderGoods.setGoodsOrderType(GoodsOrderType.retail.getCode());
|
|
|
orderGoods.setPayType(orderGoodsDTO.getPayType());
|
|
|
orderGoods.setGoodsType(orderGoodsDTO.getGoodsType());
|
|
|
- orderGoods.setDeductAmount(orderGoodsDTO.getDeductAmount() == null ? BigDecimal.ZERO : orderGoodsDTO.getDeductAmount());
|
|
|
orderGoods.setCouponDeductAmount(orderGoodsDTO.getCouponDeductAmount() == null ? BigDecimal.ZERO : orderGoodsDTO.getCouponDeductAmount());
|
|
|
orderGoods.setCashDeductAmount(orderGoodsDTO.getDeductAmount());
|
|
|
- orderGoods.setPayAmount(orderGoodsDTO.getTotalPrice().subtract(orderGoods.getDeductAmount()));
|
|
|
+ orderGoods.setPayAmount(orderGoodsDTO.getTotalPrice().subtract(orderGoods.getCashDeductAmount()).subtract(orderGoods.getCouponDeductAmount()));
|
|
|
orderGoods.setOrderStatus(OrderGoodsStatusType.NO_PAY.getCode());
|
|
|
orderGoods.setRefundAmount(BigDecimal.ZERO);
|
|
|
orderGoods.setDeliveryWay(this.getDeliveryWayByOrderSource(orderGoodsDTO.getOrderSource()));
|
|
@@ -242,8 +226,16 @@ public class OrderGoodsServiceImpl extends ServiceImpl<OrderGoodsMapper, OrderGo
|
|
|
}
|
|
|
this.save(orderGoods);
|
|
|
|
|
|
+ // 计算商品原价总额
|
|
|
+ BigDecimal totalOriginalAmount = BigDecimal.ZERO;
|
|
|
+ for (OrderGoodsSkuInfoVO skuInfo : orderGoodsSkuInfoVOS) {
|
|
|
+ totalOriginalAmount = totalOriginalAmount.add(skuInfo.getSalePrice().multiply(new BigDecimal(skuInfo.getBuyNum())));
|
|
|
+ }
|
|
|
+
|
|
|
// 无法批量插入
|
|
|
- for (OrderGoodsSkuInfoVO retailGoodsDTO : orderGoodsSkuInfoVOS) {
|
|
|
+ BigDecimal allocatedAmount = BigDecimal.ZERO;
|
|
|
+ for (int i = 0; i < orderGoodsSkuInfoVOS.size(); i++) {
|
|
|
+ OrderGoodsSkuInfoVO retailGoodsDTO = orderGoodsSkuInfoVOS.get(i);
|
|
|
OrderGoodsSku orderGoodsSku = new OrderGoodsSku();
|
|
|
orderGoodsSku.setOrderId(orderGoods.getId());
|
|
|
orderGoodsSku.setOrderNo(orderGoods.getOrderNo());
|
|
@@ -251,12 +243,30 @@ public class OrderGoodsServiceImpl extends ServiceImpl<OrderGoodsMapper, OrderGo
|
|
|
orderGoodsSku.setGoodsImg(retailGoodsDTO.getGoodsImg());
|
|
|
orderGoodsSku.setBuyNum(retailGoodsDTO.getBuyNum());
|
|
|
orderGoodsSku.setSalePrice(retailGoodsDTO.getSalePrice());
|
|
|
+ orderGoodsSku.setRefundAmount(BigDecimal.ZERO);
|
|
|
orderGoodsSku.setSkuName(retailGoodsDTO.getSkuName());
|
|
|
orderGoodsSku.setSkuId(retailGoodsDTO.getSkuId());
|
|
|
orderGoodsSku.setGoodsId(retailGoodsDTO.getGoodsId());
|
|
|
orderGoodsSku.setCreateBy(orderGoods.getCreateBy());
|
|
|
orderGoodsSku.setCreateTime(DateUtils.getNowDate());
|
|
|
orderGoodsSku.setCreateById(orderGoods.getCreateById());
|
|
|
+
|
|
|
+ // 计算该商品应分摊的支付金额
|
|
|
+ BigDecimal goodsOriginalAmount = retailGoodsDTO.getSalePrice().multiply(new BigDecimal(retailGoodsDTO.getBuyNum()));
|
|
|
+ BigDecimal goodsPayAmount;
|
|
|
+
|
|
|
+ // 最后一个商品,使用剩余金额
|
|
|
+ if (i == orderGoodsSkuInfoVOS.size() - 1) {
|
|
|
+ goodsPayAmount = orderGoods.getPayAmount().subtract(allocatedAmount);
|
|
|
+ } else {
|
|
|
+ // 按照原价比例分配
|
|
|
+ goodsPayAmount = orderGoods.getPayAmount()
|
|
|
+ .multiply(goodsOriginalAmount)
|
|
|
+ .divide(totalOriginalAmount, 2, BigDecimal.ROUND_DOWN);
|
|
|
+ allocatedAmount = allocatedAmount.add(goodsPayAmount);
|
|
|
+ }
|
|
|
+
|
|
|
+ orderGoodsSku.setTotalAmount(goodsPayAmount);
|
|
|
orderGoodsSkuService.save(orderGoodsSku);
|
|
|
}
|
|
|
return orderGoods;
|
|
@@ -884,6 +894,12 @@ public class OrderGoodsServiceImpl extends ServiceImpl<OrderGoodsMapper, OrderGo
|
|
|
// 处理销量 - 扣商品销量
|
|
|
List<OrderGoodsSku> list = orderGoodsSkuService.list(new QueryWrapper<OrderGoodsSku>().lambda().eq(OrderGoodsSku::getOrderId, orderGoods.getId()));
|
|
|
if (CollUtil.isNotEmpty(list)) {
|
|
|
+ //更新商品退款金额
|
|
|
+ for (OrderGoodsSku orderGoodsSku : list) {
|
|
|
+ orderGoodsSku.setRefundAmount(orderGoodsSku.getTotalAmount());
|
|
|
+ orderGoodsSku.setRefundId(orderGoodsRefund.getId());
|
|
|
+ orderGoodsSkuService.updateById(orderGoodsSku);
|
|
|
+ }
|
|
|
this.buildUpdateGoodsSales(list, Boolean.FALSE);
|
|
|
}
|
|
|
return null;
|
|
@@ -1262,4 +1278,9 @@ public class OrderGoodsServiceImpl extends ServiceImpl<OrderGoodsMapper, OrderGo
|
|
|
return thirdDeliveryService.getDeliveryPath(OrderThirdDeliveryPathDTO.buildDeliveryPathByGoodsOrder(orderGoods, appUserInfo.getWxOpenId()));
|
|
|
}
|
|
|
|
|
|
+ @Override
|
|
|
+ public List<GoodsStatisticsVO> getGoodsStatisticsList(GoodsStatisticsQueryDTO queryDTO) {
|
|
|
+ return baseMapper.getGoodsStatisticsList(queryDTO);
|
|
|
+ }
|
|
|
+
|
|
|
}
|