Kaynağa Gözat

FIX: 退款

xdd 2 hafta önce
ebeveyn
işleme
3591f21124

+ 1 - 0
fs-service-system/src/main/java/com/fs/erp/service/IErpOrderService.java

@@ -15,6 +15,7 @@ public interface IErpOrderService
     ErpOrderQueryResponse getOrder(ErpOrderQueryRequert param);
     ErpOrderQueryResponse getOrderLive(ErpOrderQueryRequert param);
     BaseResponse refundUpdate(ErpRefundUpdateRequest param);
+    BaseResponse refundUpdateLive(ErpRefundUpdateRequest param);
 
     ErpOrderResponse addLiveOrder(ErpOrder erpOrder);
 }

+ 15 - 0
fs-service-system/src/main/java/com/fs/erp/service/impl/ErpOrderServiceImpl.java

@@ -139,6 +139,21 @@ public class ErpOrderServiceImpl implements IErpOrderService
         return response;
     }
 
+    @Override
+    public BaseResponse refundUpdateLive(ErpRefundUpdateRequest request) {
+        JSONObject param = JSONUtil.createObj();
+        param.set("appkey", sysConfig.getErpAppKey());
+        param.set("sessionkey", sysConfig.getErpSessionKey());
+        param.set("method", "gy.erp.trade.refund.update");
+        param.set("tid", request.getTid());
+        param.set("oid", request.getOid());
+        param.set("refund_state", request.getRefund_state());
+        param.set("sign",CommonUtils.sign(param.toString(),sysConfig.getErpSecret()));
+        String result = HttpUtil.post(sysConfig.getErpUrl(), param.toString());
+        ErpOrderResponse response=JSONUtil.toBean(result, ErpOrderResponse.class);
+        return response;
+    }
+
     @Override
     public ErpOrderResponse addLiveOrder(ErpOrder order) {
         JSONObject param = JSONUtil.createObj();

+ 5 - 0
fs-service-system/src/main/java/com/fs/erp/service/impl/ErpOrderServiceProxy.java

@@ -119,6 +119,11 @@ public class ErpOrderServiceProxy implements IErpOrderService {
         return getCurrentErpService().refundUpdate(param);
     }
 
+    @Override
+    public BaseResponse refundUpdateLive(ErpRefundUpdateRequest param) {
+        return getCurrentErpService().refundUpdateLive(param);
+    }
+
     @Override
     public ErpOrderResponse addLiveOrder(ErpOrder erpOrder) {
         return getCurrentErpService().addLiveOrder(erpOrder);

+ 27 - 0
fs-service-system/src/main/java/com/fs/erp/service/impl/JSTErpOrderServiceImpl.java

@@ -455,6 +455,33 @@ public class JSTErpOrderServiceImpl implements IErpOrderService {
         return baseResponse;
     }
 
+    @Override
+    public BaseResponse refundUpdateLive(ErpRefundUpdateRequest param) {
+        LiveOrder fsStoreOrder = liveorderMapper.selectLiveOrderByOrderCode(param.getTid());
+
+        FsStoreDelivers byOrderCode = fsStoreDeliversMapper.findByOrderCode(fsStoreOrder.getOrderCode());
+
+        // 发货后退款
+        if(ObjectUtil.isNotNull(byOrderCode)){
+
+        } else {
+            // 如果是发货前退款,直接走取消订单流程
+            // 如果是发货后退款,走售后流程
+            OrderCancelRequestDTO requestDTO = new OrderCancelRequestDTO();
+            requestDTO.setOIds(Collections.singletonList(Integer.valueOf(fsStoreOrder.getExtendOrderId())));
+            requestDTO.setCancelType("用户退款");
+            requestDTO.setRemark("用户退款");
+
+            jstErpHttpService.cancel(requestDTO);
+        }
+
+
+        BaseResponse baseResponse = new BaseResponse();
+        baseResponse.setSuccess(true);
+
+        return baseResponse;
+    }
+
     @Override
     public ErpOrderResponse addLiveOrder(ErpOrder order) {
         LiveOrder fsStoreOrder = liveorderMapper.selectFsUserVipOrderByOrderCode(order.getPlatform_code());

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

@@ -6,6 +6,7 @@ import java.util.*;
 
 import cn.hutool.core.bean.BeanUtil;
 import cn.hutool.core.date.DateTime;
+import cn.hutool.core.util.ObjectUtil;
 import cn.hutool.json.JSONUtil;
 import com.fs.common.core.domain.R;
 import com.fs.common.exception.CustomException;
@@ -49,6 +50,7 @@ import com.fs.store.service.IFsStoreAfterSalesService;
 import com.fs.store.service.IFsUserService;
 import com.fs.system.config.SnowflakeUtils;
 import com.fs.system.service.ISysConfigService;
+import org.apache.http.util.Asserts;
 import org.springframework.aop.framework.AopContext;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Qualifier;
@@ -239,10 +241,15 @@ public class LiveAfterSalesServiceImpl implements ILiveAfterSalesService {
         return R.ok("操作成功");
     }
 
+    @Autowired
+    private ILiveAfterSalesService liveAfterSalesService;
     @Override
     public R refundMoney(LiveAfterSalesRefundParam param) {
-        ILiveOrderService liveOrderService1 = (ILiveOrderService) AopContext.currentProxy();
-        return liveOrderService1.refundOrderMoney(param.getOrderId());
+        LiveAfterSales liveAfterSales = liveAfterSalesService.selectLiveAfterSalesById(param.getSalesId());
+        if(ObjectUtil.isNull(liveAfterSales)) {
+            throw new IllegalArgumentException("售后单不存在!");
+        }
+        return liveOrderService.refundOrderMoney(liveAfterSales.getOrderId());
     }
 
     /**

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

@@ -823,6 +823,7 @@ public class LiveOrderServiceImpl implements ILiveOrderService {
     }
 
     @Override
+    @Transactional(rollbackFor = Exception.class,propagation = Propagation.REQUIRED)
     public R refundOrderMoney(Long orderId) {
         LiveOrder order = baseMapper.selectLiveOrderByOrderId(String.valueOf(orderId));
         if(order.getStatus()==-2){
@@ -842,7 +843,7 @@ public class LiveOrderServiceImpl implements ILiveOrderService {
                 String erp = fsWarehousesMapper.selectErpByCode(order.getStoreHouseCode());
                 ErpContextHolder.setErpType(erp);
             }
-            BaseResponse response=erpOrderService.refundUpdate(request);
+            BaseResponse response=erpOrderService.refundUpdateLive(request);
             if(ObjectUtil.isNull(response) || !response.getSuccess()){
                 log.error("调用erp退款接口失败! {}",JSON.toJSONString(response));
                 throw new CustomException("调用erp退款接口失败:"+response.getErrorDesc());

+ 1 - 0
fs-service-system/src/main/java/com/fs/store/param/LiveAfterSalesRefundParam.java

@@ -12,5 +12,6 @@ public class LiveAfterSalesRefundParam implements Serializable
     private Long orderId;
     private BigDecimal refundAmount;
 
+    private Long salesId;
 
 }