Browse Source

FIX: 售后修复

xdd 2 weeks ago
parent
commit
273c29090e

+ 2 - 0
fs-service-system/src/main/java/com/fs/live/service/ILiveOrderService.java

@@ -1,6 +1,7 @@
 package com.fs.live.service;
 
 import com.fs.common.core.domain.R;
+import com.fs.live.domain.LiveAfterSales;
 import com.fs.live.domain.LiveOrder;
 import com.fs.live.param.FsUserLiveOrderPayUParam;
 import com.fs.live.param.LiveOrderConfirmParam;
@@ -162,6 +163,7 @@ public interface ILiveOrderService {
     LiveOrder getById(String orderId);
 
     R refundOrderMoney(Long orderId);
+    R refundOrderMoney(Long orderId, LiveAfterSales liveAfterSales);
 
     List<LiveOrder> selectUpdateExpress();
 

+ 1 - 1
fs-service-system/src/main/java/com/fs/live/service/impl/LiveAfterSalesServiceImpl.java

@@ -253,7 +253,7 @@ public class LiveAfterSalesServiceImpl implements ILiveAfterSalesService {
         if(ObjectUtil.isNull(liveAfterSales)) {
             throw new IllegalArgumentException("售后单不存在!");
         }
-        return liveOrderService.refundOrderMoney(liveAfterSales.getOrderId());
+        return liveOrderService.refundOrderMoney(liveAfterSales.getOrderId(),liveAfterSales);
     }
 
     /**

+ 75 - 0
fs-service-system/src/main/java/com/fs/live/service/impl/LiveOrderServiceImpl.java

@@ -922,6 +922,81 @@ public class LiveOrderServiceImpl implements ILiveOrderService {
         return R.ok();
     }
 
+    @Override
+    public R refundOrderMoney(Long orderId, LiveAfterSales liveAfterSales) {
+        LiveOrder order = baseMapper.selectLiveOrderByOrderId(String.valueOf(orderId));
+        if(order.getStatus()==-2){
+            return R.error("已退款");
+        }
+        if(StringUtils.isNotEmpty(order.getExtendOrderId())){
+            ErpRefundUpdateRequest request=new ErpRefundUpdateRequest();
+            request.setTid(order.getOrderCode());
+            request.setOid(order.getOrderCode());
+            request.setRefund_state(1);
+            request.setOrderStatus(order.getStatus());
+
+            // 根据仓库code找erp
+            if(StringUtils.isNotBlank(order.getStoreHouseCode())){
+                String erp = fsWarehousesMapper.selectErpByCode(order.getStoreHouseCode());
+                ErpContextHolder.setErpType(erp);
+            }
+            BaseResponse response=erpOrderService.refundUpdateLive(request);
+            if(ObjectUtil.isNull(response) || !response.getSuccess()){
+                log.error("调用erp退款接口失败! {}",JSON.toJSONString(response));
+                throw new CustomException("调用erp退款接口失败:"+response.getErrorDesc());
+            }
+        }
+        order.setStatus(-2);
+        order.setRefundMoney(order.getPayMoney());
+        order.setRefundStatus(String.valueOf(OrderInfoEnum.REFUND_STATUS_2.getValue()));
+        baseMapper.updateLiveOrder(order);
+
+        //退库存
+        //获取订单下的商品
+        List<LiveOrderItem> orderItemVOS=liveOrderItemMapper.selectLiveOrderItemByOrderId(order.getOrderId());
+        for(LiveOrderItem vo:orderItemVOS){
+            if(vo.getIsAfterSales()==1){
+                fsStoreProductService.incProductStock(vo.getNum(), vo.getProductId(), vo.getProductAttrValueId());
+            }
+
+        }
+        if(order.getPayType().equals(3)){
+            //货到付款
+        }
+        else{
+            //将钱退还给用户
+            List<LiveOrderPayment> payments=liveOrderPaymentMapper.selectLiveOrderPaymentByPay(5,order.getOrderId());
+            if(payments!=null){
+                for(LiveOrderPayment payment:payments){
+                    PaymentHandler best = PaymentHandlerHolder.findBest(payment.getPayMode());
+                    if(ObjectUtil.isNull(best)){
+                        throw new CustomException("支付类型异常!");
+                    }
+                    PayProcessContext payProcessContext = new PayProcessContext();
+                    payProcessContext.setOrderId(orderId);
+                    payProcessContext.setPaymentId(payment.getPaymentId());
+                    payProcessContext.setPayCode(payment.getPayCode());
+                    payProcessContext.setUserId(Long.valueOf(order.getUserId()));
+                    payProcessContext.setOrderPrefix("refundLive-");
+                    best.refundLiveOrder(payProcessContext);
+                }
+            }
+        }
+        liveOrderLogsService.create(order.getOrderId(), OrderLogEnum.REFUND_ORDER_SUCCESS.getValue(),
+                OrderLogEnum.REFUND_ORDER_SUCCESS.getDesc());
+        //减去公司收入
+        if(order.getCompanyId()!=null&&order.getCompanyId()>0&&order.getTuiMoneyStatus()!=null&&order.getTuiMoneyStatus()==1){
+            companyService.subLiveCompanyMoney(order);
+        }
+        if(order.getTuiUserId()!=null&&order.getTuiUserId()>0){
+            userService.subLiveTuiMoney(order);
+        }
+
+        liveAfterSales.setStatus(4);
+        liveAfterSales.setSalesStatus(3);
+        return R.ok();
+    }
+
     @Override
     public List<LiveOrder> selectUpdateExpress() {
         return baseMapper.selectUpdateExpress();