Browse Source

完善申请售后接口

zhangwl 3 weeks ago
parent
commit
58768abfa1

+ 35 - 6
src/main/java/zs/payment/controller/YxSupplyChannelManualController.java

@@ -3,6 +3,7 @@ package zs.payment.controller;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
+import org.springframework.util.ObjectUtils;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
@@ -10,9 +11,11 @@ import org.springframework.web.bind.annotation.RestController;
 import com.alibaba.fastjson.JSONObject;
 import zs.payment.dao.OrderCallbackDao;
 import zs.payment.entity.OrderCallback;
+import zs.payment.enums.CallbackMessageType;
 import zs.payment.req.*;
 import zs.payment.entity.Orders;
 import zs.payment.req.aftersales.AfterSalesOrderReq;
+import zs.payment.req.aftersales.AfterSalesOrderTypeReq;
 import zs.payment.resp.Result;
 import zs.payment.service.OrdersService;
 import zs.payment.utils.HttpUtil;
@@ -345,7 +348,7 @@ public class YxSupplyChannelManualController {
      * @return
      */
     @PostMapping("/getAfterSalesTypeNameMap")
-    public Result getAfterSalesTypeNameMap(@Valid @RequestBody AfterSalesOrderReq req){
+    public Result getAfterSalesTypeNameMap(@Valid @RequestBody AfterSalesOrderTypeReq req){
 
         String token = redisUtils.get(SUPPLY_TOKEN);
         if (token == null || token.isEmpty()) {
@@ -358,6 +361,7 @@ public class YxSupplyChannelManualController {
 
         Map<String, Object> params = new HashMap<>();
         params.put("order_id", req.getOrderId());
+        params.put("order_item_id",req.getOrderItemId());
 
         Map<String, String> headers = new HashMap<>();
         headers.put("x-token", token);
@@ -388,6 +392,23 @@ public class YxSupplyChannelManualController {
         params.put("order_id", req.getOrderId());
         params.put("is_received",req.getIsReceived());
         params.put("order_item_id",req.getOrderItemId());
+        if (!ObjectUtils.isEmpty(req.getAmount())){
+            //退款总额不为空
+            params.put("amount",req.getAmount());
+        }
+        if (!ObjectUtils.isEmpty(req.getRefundType())){
+            // 退款方式: "0": "退款",  "1": "退货退款"
+            params.put("refund_type",req.getRefundType());
+        }
+        if (!ObjectUtils.isEmpty(req.getTechnicalServicesFee())){
+            //技术服务费
+            params.put("technical_services_fee",req.getTechnicalServicesFee());
+        }
+
+        if (!ObjectUtils.isEmpty(req.getFreight())){
+            //运费
+            params.put("freight",req.getFreight());
+        }
 
         Map<String, String> headers = new HashMap<>();
         headers.put("x-token", token);
@@ -410,12 +431,20 @@ public class YxSupplyChannelManualController {
 
         JSONObject reqJson = JSONObject.parseObject(JSONObject.toJSONString(req));
         String messageType = reqJson.getString("message_type");
-        //当 message_type == "goods.alter" 时跳过保存,其他类型才入库
-        if (!"goods.alter".equals(messageType)) {
-            OrderCallback callback = new OrderCallback();
-            callback.setMessage(req);
-            callbackDao.save(callback);
+        //当 message_type == 商品类的事件 时跳过保存,其他类型才入库
+        if (CallbackMessageType.GOODS_ALTER.equalsIgnoreCase(messageType) || CallbackMessageType.GOODS_UNDERCARRIAGE.equalsIgnoreCase(messageType)
+        || CallbackMessageType.GOODS_ON_SALE.equalsIgnoreCase(messageType) ||  CallbackMessageType.GOODS_DELETE.equalsIgnoreCase(messageType)) {
+            return result;
         }
+
+        //售后通过
+        if (CallbackMessageType.AFTER_SALES_PASS.equalsIgnoreCase(messageType)) {
+
+        }
+        OrderCallback callback = new OrderCallback();
+        callback.setMessage(req);
+        callbackDao.save(callback);
+
         return result;
     }
 

+ 38 - 0
src/main/java/zs/payment/enums/CallbackMessageType.java

@@ -0,0 +1,38 @@
+package zs.payment.enums;
+
+public interface CallbackMessageType {
+
+    //=============商品========================
+    //商品下架
+    String GOODS_UNDERCARRIAGE="goods.undercarriage";
+    //商品修改
+    String GOODS_ALTER="goods.alter";
+    //商品上架
+    String GOODS_ON_SALE="goods.on.sale";
+    //商品删除
+    String GOODS_DELETE="goods.delete";
+
+    //=============订单======================
+    //订单取消
+    String ORDER_CANCEL="order.cancel";
+    //订单发货
+    String ORDER_DELIVERY="order.delivery";
+    //order.sending:订单部分发货消息
+    String ORDER_SENDING="order.sending";
+    //order.update_send:订单修改物流
+    String ORDER_UPDATE_SEND="order.update_send";
+    //order.refunded 订单退款(代表订单退款了,正常无需对接直接对接售后消息即可,注意这个退款不一定是退多少退的当前订单哪个商品)
+    String ORDER_REFUNDED="order.refunded";
+
+
+    //=============售后=======================
+    //售后审核成功
+    String AFTER_SALES_PASS="after_sales.pass";
+    //售后确认收货 (如果是换货,这时候也代表发货了)
+    String AFTER_SALES_RECEIVING="after_sales.receiving";
+    //售后确认退款/完成
+    String AFTER_SALES_COMPLETE = "after_sales.complete";
+    //after_sales.close 售后关闭
+    String AFTER_SALES_CLOSE="after_sales.close";
+
+}

+ 11 - 0
src/main/java/zs/payment/req/aftersales/AfterSalesOrderReq.java

@@ -19,4 +19,15 @@ public class AfterSalesOrderReq {
     //订单详情的order_items中的id
     @NotNull(message = "子订单id不能为空")
     private Integer orderItemId;
+    //退款金额(单位分)
+    private Integer amount;
+
+    // 退款方式: "0": "退款",  "1": "退货退款"
+    private Integer refundType;
+
+    //技术服务费(单位分)
+    private Integer technicalServicesFee;
+
+    //运费(单位分)
+    private Integer freight;
 }

+ 20 - 0
src/main/java/zs/payment/req/aftersales/AfterSalesOrderTypeReq.java

@@ -0,0 +1,20 @@
+package zs.payment.req.aftersales;
+
+import lombok.Getter;
+import lombok.NoArgsConstructor;
+import lombok.Setter;
+
+import javax.validation.constraints.NotNull;
+
+@Setter
+@Getter
+@NoArgsConstructor
+public class AfterSalesOrderTypeReq {
+
+    //中台订单id(建议使用这个)
+    @NotNull(message = "中台订单id不能为空")
+    private Integer orderId;
+    //子订单
+    @NotNull(message = "中台子订单id不能为空")
+    private Integer orderItemId;
+}