Browse Source

关闭售后

zhangwl 5 days ago
parent
commit
d6b0405224

+ 22 - 1
src/main/java/zs/payment/controller/YxSupplyChannelManualController.java

@@ -1,6 +1,7 @@
 package zs.payment.controller;
 package zs.payment.controller;
 
 
 import lombok.extern.slf4j.Slf4j;
 import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Autowired;
 
 
 
 
@@ -12,6 +13,7 @@ import zs.payment.enums.CallbackMessageType;
 import zs.payment.messages.KafkaProducer;
 import zs.payment.messages.KafkaProducer;
 import zs.payment.req.*;
 import zs.payment.req.*;
 
 
+import zs.payment.req.aftersales.AfterSalesCloseReq;
 import zs.payment.req.aftersales.AfterSalesOrderReq;
 import zs.payment.req.aftersales.AfterSalesOrderReq;
 import zs.payment.req.aftersales.AfterSalesOrderTypeReq;
 import zs.payment.req.aftersales.AfterSalesOrderTypeReq;
 import zs.payment.req.storage.StoragePageReq;
 import zs.payment.req.storage.StoragePageReq;
@@ -97,6 +99,8 @@ public class YxSupplyChannelManualController {
         return paySupplyService.appCloseOrder(req);
         return paySupplyService.appCloseOrder(req);
     }
     }
 
 
+
+
     // =======================售后==========================================
     // =======================售后==========================================
 
 
     /**
     /**
@@ -118,6 +122,15 @@ public class YxSupplyChannelManualController {
     }
     }
 
 
 
 
+    //关闭售后
+    @PostMapping("/afterSalesClose")
+    public Result afterSalesClose(@Valid @RequestBody AfterSalesCloseReq req){
+
+
+        return paySupplyService.afterSalesClose(req.getId());
+    }
+
+
     //回调接口,拿到回调数据后,再对数据做处理
     //回调接口,拿到回调数据后,再对数据做处理
     @PostMapping("/callback")
     @PostMapping("/callback")
     public Map<String, Object> callback(@Valid @RequestBody Object req) {
     public Map<String, Object> callback(@Valid @RequestBody Object req) {
@@ -159,6 +172,14 @@ public class YxSupplyChannelManualController {
 
 
         }
         }
 
 
+        if (CallbackMessageType.ORDER_DELIVERY.equalsIgnoreCase(messageType)) {
+            //订单发货,会传一个第三方订单编号,通过这个第三方订单编号获取物流信息
+            String orderSn = reqJson.getString("order_sn");
+            if (StringUtils.isNotBlank(orderSn)){
+                kafkaProducer.sendMessage(CallbackMessageType.ORDER_DELIVERY, orderSn);
+            }
+        }
+
         //售后通过
         //售后通过
         if (CallbackMessageType.AFTER_SALES_PASS.equalsIgnoreCase(messageType)) {
         if (CallbackMessageType.AFTER_SALES_PASS.equalsIgnoreCase(messageType)) {
 
 
@@ -170,7 +191,7 @@ public class YxSupplyChannelManualController {
     }
     }
 
 
 
 
-    //================选品===========================
+    //================选品, 衔接同步到企云商城===========================
     //我的选品库
     //我的选品库
     @PostMapping("/getMyStorageIdsList")
     @PostMapping("/getMyStorageIdsList")
     public Result getMyStorageIdsList(@Valid @RequestBody StoragePageReq req){
     public Result getMyStorageIdsList(@Valid @RequestBody StoragePageReq req){

+ 20 - 1
src/main/java/zs/payment/messages/KafkaConsumer.java

@@ -3,7 +3,7 @@ package zs.payment.messages;
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
 import com.alibaba.fastjson.JSONObject;
 
 
-import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
+
 
 
 import lombok.extern.slf4j.Slf4j;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -24,6 +24,7 @@ import zs.payment.service.imseweishopgoodsoption.ImsEweiShopGoodsOptionService;
 import zs.payment.service.imseweishopgoodsspec.ImsEweiShopGoodsSpecService;
 import zs.payment.service.imseweishopgoodsspec.ImsEweiShopGoodsSpecService;
 import zs.payment.service.imseweishopgoodsspecitem.ImsEweiShopGoodsSpecItemService;
 import zs.payment.service.imseweishopgoodsspecitem.ImsEweiShopGoodsSpecItemService;
 import zs.payment.service.paysupply.PaySupplyService;
 import zs.payment.service.paysupply.PaySupplyService;
+import zs.payment.utils.HttpUtil;
 import zs.payment.utils.RedisUtils;
 import zs.payment.utils.RedisUtils;
 import zs.payment.utils.TimeUtils;
 import zs.payment.utils.TimeUtils;
 
 
@@ -344,4 +345,22 @@ public class KafkaConsumer {
     }
     }
 
 
 
 
+    //------------订单----------------
+
+    /**
+     * 订单发货
+     *
+     * @param messsage
+     */
+    @KafkaListener(
+        topics = "goods.delivery",
+        groupId = "pay2-group"
+    )
+    public void goodsDelivery(String orderSn) {
+        //通过这个第三方订单编号获取物流信息
+        paySupplyService.updateOrderLogistic(orderSn);
+        log.info("=======订单发货-第三方订单编号:{} =======", orderSn);
+    }
+
+
 }
 }

+ 16 - 0
src/main/java/zs/payment/req/aftersales/AfterSalesCloseReq.java

@@ -0,0 +1,16 @@
+package zs.payment.req.aftersales;
+
+import lombok.Getter;
+import lombok.NoArgsConstructor;
+import lombok.Setter;
+
+import javax.validation.constraints.NotNull;
+
+@Setter
+@Getter
+@NoArgsConstructor
+public class AfterSalesCloseReq {
+    //售后的id
+    @NotNull(message = "售后的id不能为空")
+    private Integer id;
+}

+ 66 - 0
src/main/java/zs/payment/service/paysupply/PaySupplyService.java

@@ -2,6 +2,7 @@ package zs.payment.service.paysupply;
 
 
 import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestBody;
 import zs.payment.req.*;
 import zs.payment.req.*;
+import zs.payment.req.aftersales.AfterSalesCloseReq;
 import zs.payment.req.aftersales.AfterSalesOrderReq;
 import zs.payment.req.aftersales.AfterSalesOrderReq;
 import zs.payment.req.aftersales.AfterSalesOrderTypeReq;
 import zs.payment.req.aftersales.AfterSalesOrderTypeReq;
 import zs.payment.req.storage.StoragePageReq;
 import zs.payment.req.storage.StoragePageReq;
@@ -11,24 +12,81 @@ import javax.validation.Valid;
 
 
 public interface PaySupplyService {
 public interface PaySupplyService {
 
 
+    /**
+     * 查询商品详情
+     * @param req
+     * @return
+     */
     Result detailList(ProductDetailReq req);
     Result detailList(ProductDetailReq req);
     Result fetchAndCacheToken();
     Result fetchAndCacheToken();
 
 
+    /**
+     * 查看选品列表
+     * @param req
+     * @return
+     */
     Result cursorList(ProductPageReq req);
     Result cursorList(ProductPageReq req);
 
 
+    /**
+     * 订单验证
+     * @param req
+     * @return
+     */
     Result beforeCheck(OrderCheckReq req);
     Result beforeCheck(OrderCheckReq req);
 
 
+    /**
+     * 仅下单
+     * @param req
+     * @return
+     */
     Result orderConfirmOnly(OrderReq req);
     Result orderConfirmOnly(OrderReq req);
+
+    /**
+     * 仅支付
+     * @param req
+     * @return
+     */
     Result orderPayOnly(OrderPayReq req);
     Result orderPayOnly(OrderPayReq req);
 
 
+    /**
+     * 生成订单同时支付,如果已生成订单则是直接支付
+     * @param req
+     * @return
+     */
     Result order(OrderReq req);
     Result order(OrderReq req);
 
 
+    /**
+     * 取消订单
+     * @param req
+     * @return
+     */
     Result appCloseOrder(CloseOrderReq req);
     Result appCloseOrder(CloseOrderReq req);
 
 
+    /**
+     * 获取订单支持的售后方式: 一般为退款、 退货退款
+     * @param req
+     * @return
+     */
     Result getAfterSalesTypeNameMap(AfterSalesOrderTypeReq req);
     Result getAfterSalesTypeNameMap(AfterSalesOrderTypeReq req);
 
 
+    /**
+     * 申请售后
+     * @param req
+     * @return
+     */
     Result afterSalesCreate(AfterSalesOrderReq req);
     Result afterSalesCreate(AfterSalesOrderReq req);
 
 
+    /**
+     * 取消售后
+     * @param id
+     * @return
+     */
+    Result afterSalesClose(Integer id);
+    /**
+     * 我的选品库
+     * @param req
+     * @return
+     */
     Result getMyStorageIdsList(StoragePageReq req);
     Result getMyStorageIdsList(StoragePageReq req);
 
 
     /**
     /**
@@ -36,4 +94,12 @@ public interface PaySupplyService {
      * @return
      * @return
      */
      */
     Result syncToQiyun();
     Result syncToQiyun();
+
+
+    /**
+     * 根据第三方订单编号,更新自研平台的物流信息
+     * @param orderSn
+     * @return
+     */
+    Result updateOrderLogistic(String orderSn);
 }
 }

+ 67 - 0
src/main/java/zs/payment/service/paysupply/impl/PaySupplyServiceImpl.java

@@ -355,6 +355,32 @@ public class PaySupplyServiceImpl implements PaySupplyService {
             return Result.fail(respJson.getString("msg"));
             return Result.fail(respJson.getString("msg"));
         }
         }
 
 
+        //todo 需要把data进行存储,方便之后的取消售后操作
+
+
+        return Result.success(respJson.getJSONObject("data"));
+    }
+
+    @Override
+    public Result afterSalesClose(Integer id) {
+        Result tokenResult = fetchAndCacheToken();
+        if (!tokenResult.isSuccess()) {
+            return tokenResult;
+        }
+        String  token = (String) tokenResult.getBody().get("token");
+
+        Map<String, Object> params = new HashMap<>();
+        params.put("id", id);
+        Map<String, String> headers = new HashMap<>();
+        headers.put("x-token", token);
+
+        String resp = HttpUtil.restTemplatePost(prefixUrl + "/supplyapi/app/afterSales/close", params, headers);
+        JSONObject respJson = JSONObject.parseObject(resp);
+        if (respJson.getIntValue("code") != 0) {
+            return Result.fail(respJson.getString("msg"));
+        }
+
+
         return Result.success(respJson.getJSONObject("data"));
         return Result.success(respJson.getJSONObject("data"));
     }
     }
 
 
@@ -476,4 +502,45 @@ public class PaySupplyServiceImpl implements PaySupplyService {
         }
         }
         return false;
         return false;
     }
     }
+
+    @Override
+    public Result updateOrderLogistic(String orderSn) {
+
+        Result tokenResult = fetchAndCacheToken();
+        if (!tokenResult.isSuccess()) {
+            return tokenResult;
+        }
+        String  token = (String) tokenResult.getBody().get("token");
+
+        Map<String, Object> params = new HashMap<>();
+        params.put("order_sn", orderSn);
+
+
+        Map<String, String> headers = new HashMap<>();
+        headers.put("x-token", token);
+        String resp = HttpUtil.restTemplatePost(prefixUrl + "/supplyapi/app/order/Logistic", params, headers);
+
+
+        JSONObject respJson = JSONObject.parseObject(resp);
+        if (respJson.getIntValue("code") != 0) {
+            return Result.fail(respJson.getString("msg"));
+        }
+        //获取物流信息
+        JSONArray array = respJson.getJSONArray("data");
+        //获取物流中的物流编号+物流编码
+
+        for (int i = 0; i < array.size(); i++) {
+            //物流编号
+            String expressNo = array.getJSONObject(i).getString("express_no");
+            //物流编码
+            String companyCode = array.getJSONObject(i).getString("company_code");
+            //todo 更新自研系统的物流
+        }
+
+
+
+
+
+        return Result.success(respJson.getJSONArray("data"));
+    }
 }
 }