|
|
@@ -188,82 +188,84 @@ public class HBOrderService implements IHBOrderService {
|
|
|
orderMapper.updateById(order);
|
|
|
|
|
|
//取消订单
|
|
|
- if (operatorType == 60 && !order.getOrderType().equals(4)) {
|
|
|
+ if (operatorType == 60) {
|
|
|
log.info("取消订单{}", channelOrderId);
|
|
|
changeOrderStatus(channelOrderId, 60);
|
|
|
- //创建退款单
|
|
|
- OrderRefundParam orderRefundParam = new OrderRefundParam();
|
|
|
- orderRefundParam.setOrderNumber(order.getOrderNumber());
|
|
|
- orderRefundParam.setApplyType(1);
|
|
|
- orderRefundParam.setRefundType(1);
|
|
|
- orderRefundParam.setIsReceiver(false);
|
|
|
- orderRefundParam.setBuyerReason("17");
|
|
|
- orderRefundParam.setBuyerDesc(bodyJson.getString("reason"));
|
|
|
- orderRefundParam.setBuyerMobile(order.getUserMobile());
|
|
|
- orderRefundParam.setGoodsNum(order.getProductNums());
|
|
|
- orderRefundParam.setRefundAmount(order.getActualTotal());
|
|
|
- orderRefundParam.setPhotoFiles("");
|
|
|
-
|
|
|
- List<OrderItem> listByOrderNumber = orderItemMapper.getListByOrderNumber(order.getOrderNumber());
|
|
|
- List<OrderRefundSku> orderRefundSkuList = new ArrayList<>();
|
|
|
- for (OrderItem orderItem : listByOrderNumber) {
|
|
|
-
|
|
|
- // 查询该订单项的所有退款记录
|
|
|
- List<OrderRefund> orderRefundList = orderRefundService.list(new LambdaQueryWrapper<OrderRefund>()
|
|
|
- .eq(OrderRefund::getOrderNumber, orderRefundParam.getOrderNumber())
|
|
|
- .eq(OrderRefund::getReturnMoneySts, 70)
|
|
|
- .eq(OrderRefund::getOrderItemId, orderItem.getOrderItemId()));
|
|
|
-
|
|
|
- if (ObjectUtil.isNotEmpty(orderRefundList)) {
|
|
|
- // 计算该订单项已退款的总数量(通过退款单查询退款商品)
|
|
|
- List<OrderRefundSkuVo> orderRefundSkuVos = orderRefundSkuMapper.selectByRefundId(orderItem.getOrderItemId());
|
|
|
- Integer totalRefundedCount = orderRefundSkuVos.stream()
|
|
|
- .mapToInt(OrderRefundSkuVo::getProductCount)
|
|
|
- .sum();
|
|
|
-
|
|
|
- // 计算剩余可退款数量
|
|
|
- Integer remainingCount = orderItem.getProdCount() - totalRefundedCount;
|
|
|
-
|
|
|
- if (remainingCount > 0) {
|
|
|
- // 数量不同,添加剩余数量
|
|
|
+ if (!order.getOrderType().equals(4)) {
|
|
|
+ //创建退款单
|
|
|
+ OrderRefundParam orderRefundParam = new OrderRefundParam();
|
|
|
+ orderRefundParam.setOrderNumber(order.getOrderNumber());
|
|
|
+ orderRefundParam.setApplyType(1);
|
|
|
+ orderRefundParam.setRefundType(1);
|
|
|
+ orderRefundParam.setIsReceiver(false);
|
|
|
+ orderRefundParam.setBuyerReason("17");
|
|
|
+ orderRefundParam.setBuyerDesc(bodyJson.getString("reason"));
|
|
|
+ orderRefundParam.setBuyerMobile(order.getUserMobile());
|
|
|
+ orderRefundParam.setGoodsNum(order.getProductNums());
|
|
|
+ orderRefundParam.setRefundAmount(order.getActualTotal());
|
|
|
+ orderRefundParam.setPhotoFiles("");
|
|
|
+
|
|
|
+ List<OrderItem> listByOrderNumber = orderItemMapper.getListByOrderNumber(order.getOrderNumber());
|
|
|
+ List<OrderRefundSku> orderRefundSkuList = new ArrayList<>();
|
|
|
+ for (OrderItem orderItem : listByOrderNumber) {
|
|
|
+
|
|
|
+ // 查询该订单项的所有退款记录
|
|
|
+ List<OrderRefund> orderRefundList = orderRefundService.list(new LambdaQueryWrapper<OrderRefund>()
|
|
|
+ .eq(OrderRefund::getOrderNumber, orderRefundParam.getOrderNumber())
|
|
|
+ .eq(OrderRefund::getReturnMoneySts, 70)
|
|
|
+ .eq(OrderRefund::getOrderItemId, orderItem.getOrderItemId()));
|
|
|
+
|
|
|
+ if (ObjectUtil.isNotEmpty(orderRefundList)) {
|
|
|
+ // 计算该订单项已退款的总数量(通过退款单查询退款商品)
|
|
|
+ List<OrderRefundSkuVo> orderRefundSkuVos = orderRefundSkuMapper.selectByRefundId(orderItem.getOrderItemId());
|
|
|
+ Integer totalRefundedCount = orderRefundSkuVos.stream()
|
|
|
+ .mapToInt(OrderRefundSkuVo::getProductCount)
|
|
|
+ .sum();
|
|
|
+
|
|
|
+ // 计算剩余可退款数量
|
|
|
+ Integer remainingCount = orderItem.getProdCount() - totalRefundedCount;
|
|
|
+
|
|
|
+ if (remainingCount > 0) {
|
|
|
+ // 数量不同,添加剩余数量
|
|
|
+ OrderRefundSku orderRefundSku = new OrderRefundSku();
|
|
|
+ orderRefundSku.setOrderItemId(orderItem.getOrderItemId());
|
|
|
+ orderRefundSku.setSkuId(orderItem.getSkuId());
|
|
|
+ orderRefundSku.setProductCount(remainingCount); // 设置剩余数量
|
|
|
+ orderRefundSku.setSkuPrice(orderItem.getPrice());
|
|
|
+ orderRefundSkuList.add(orderRefundSku);
|
|
|
+ }
|
|
|
+ // 如果remainingCount <= 0,说明已全部退款,不添加到列表
|
|
|
+ } else {
|
|
|
+ // 没有退款记录,正常添加全部数量
|
|
|
OrderRefundSku orderRefundSku = new OrderRefundSku();
|
|
|
orderRefundSku.setOrderItemId(orderItem.getOrderItemId());
|
|
|
orderRefundSku.setSkuId(orderItem.getSkuId());
|
|
|
- orderRefundSku.setProductCount(remainingCount); // 设置剩余数量
|
|
|
+ orderRefundSku.setProductCount(orderItem.getProdCount());
|
|
|
orderRefundSku.setSkuPrice(orderItem.getPrice());
|
|
|
orderRefundSkuList.add(orderRefundSku);
|
|
|
}
|
|
|
- // 如果remainingCount <= 0,说明已全部退款,不添加到列表
|
|
|
- } else {
|
|
|
- // 没有退款记录,正常添加全部数量
|
|
|
- OrderRefundSku orderRefundSku = new OrderRefundSku();
|
|
|
- orderRefundSku.setOrderItemId(orderItem.getOrderItemId());
|
|
|
- orderRefundSku.setSkuId(orderItem.getSkuId());
|
|
|
- orderRefundSku.setProductCount(orderItem.getProdCount());
|
|
|
- orderRefundSku.setSkuPrice(orderItem.getPrice());
|
|
|
- orderRefundSkuList.add(orderRefundSku);
|
|
|
}
|
|
|
+ if (ObjectUtil.isEmpty(orderRefundSkuList)) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ orderRefundParam.setOrderRefundSkuList(orderRefundSkuList);
|
|
|
+
|
|
|
+ OrderRefund orderRefund1 = orderRefundService.getOne(new LambdaQueryWrapper<OrderRefund>()
|
|
|
+ .eq(OrderRefund::getOrderNumber, orderRefundParam.getOrderNumber())
|
|
|
+ .notIn(OrderRefund::getReturnMoneySts, Arrays.asList(30, 40, 70)));
|
|
|
+ log.info(" 申请系统退款未处理数据参数:{}", JSONObject.toJSONString(orderRefund1));
|
|
|
+ if (ObjectUtil.isNotEmpty(orderRefund1)) {
|
|
|
+ orderRefund1.setReturnMoneySts(ReturnMoneyStsType.REJECT.value());
|
|
|
+ orderRefundService.updateById(orderRefund1);
|
|
|
+ //退款单状态同步驳回
|
|
|
+ orderRefundService.changeStatus(orderRefund1.getRefundSn(), ReturnMoneyStsType.REJECT.value());
|
|
|
+
|
|
|
+ //生成流程记录
|
|
|
+ orderRefundService.addOrderRefundRecord(orderRefund1.getRefundId(), 20, 10, "驳回单个商家整单处理");
|
|
|
+ }
|
|
|
+ OrderRefund orderRefund = orderService.applyAgain(orderRefundParam, ReturnMoneyStsType.SUCCESS.value());
|
|
|
+ orderRefundService.createRefundOrder(order.getOrderNumber(), orderRefund.getRefundSn());
|
|
|
}
|
|
|
- if (ObjectUtil.isEmpty(orderRefundSkuList)) {
|
|
|
- return;
|
|
|
- }
|
|
|
- orderRefundParam.setOrderRefundSkuList(orderRefundSkuList);
|
|
|
-
|
|
|
- OrderRefund orderRefund1 = orderRefundService.getOne(new LambdaQueryWrapper<OrderRefund>()
|
|
|
- .eq(OrderRefund::getOrderNumber, orderRefundParam.getOrderNumber())
|
|
|
- .notIn(OrderRefund::getReturnMoneySts, Arrays.asList(30, 40, 70)));
|
|
|
- log.info(" 申请系统退款未处理数据参数:{}", JSONObject.toJSONString(orderRefund1));
|
|
|
- if (ObjectUtil.isNotEmpty(orderRefund1)) {
|
|
|
- orderRefund1.setReturnMoneySts(ReturnMoneyStsType.REJECT.value());
|
|
|
- orderRefundService.updateById(orderRefund1);
|
|
|
- //退款单状态同步驳回
|
|
|
- orderRefundService.changeStatus(orderRefund1.getRefundSn(), ReturnMoneyStsType.REJECT.value());
|
|
|
-
|
|
|
- //生成流程记录
|
|
|
- orderRefundService.addOrderRefundRecord(orderRefund1.getRefundId(), 20, 10, "驳回单个商家整单处理");
|
|
|
- }
|
|
|
- OrderRefund orderRefund = orderService.applyAgain(orderRefundParam, ReturnMoneyStsType.SUCCESS.value());
|
|
|
- orderRefundService.createRefundOrder(order.getOrderNumber(), orderRefund.getRefundSn());
|
|
|
}
|
|
|
//成功直接通知海博
|
|
|
if (order.getHbOrderStatus() == 80) {
|