Преглед на файлове

快递100回调推送失败问题处理

yzc преди 1 година
родител
ревизия
3d120b8f4e

+ 11 - 5
hx-kd100/src/main/java/com/fjhx/kd100/controller/callback/CallbackConfig.java

@@ -12,11 +12,14 @@ import com.ruoyi.common.constant.BaseSourceConstant;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.context.ApplicationEventPublisher;
 import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
 import org.springframework.web.bind.annotation.RestController;
 
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
 import java.util.List;
+import java.util.Map;
 
 @DS(BaseSourceConstant.KD100)
 @TenantIgnore
@@ -35,9 +38,9 @@ public class CallbackConfig {
      */
     @PostMapping("/callback")
     @DSTransactional
-    public synchronized JSONObject callback(@RequestBody String data) {
+    public synchronized void callback(@RequestParam Map<String, String> inputValue, HttpServletResponse response) throws IOException {
         // 解析回调参数
-        JSONObject result = KD100Util.parseCallbackData(data);
+        JSONObject result = KD100Util.parseCallbackData(inputValue.get("param"));
 
         handleCallback(result);
 
@@ -45,7 +48,10 @@ public class CallbackConfig {
         returnResult.put("result", true);
         returnResult.put("returnCode", 200);
         returnResult.put("message", "成功");
-        return returnResult;
+
+        //直接返回结果
+        response.setContentType("application/json; charset=utf-8");
+        response.getWriter().print(returnResult.toJSONString());
     }
 
     private void handleCallback(JSONObject result) {
@@ -63,7 +69,7 @@ public class CallbackConfig {
         if (logisticsInfoList.size() == 0) {
             return;
         }
-        
+
         for (LogisticsInfo logisticsInfo : logisticsInfoList) {
             logisticsInfo.setState(state);
             applicationEventPublisher.publishEvent(new Kd100CallbackEvent(this, logisticsInfo));

+ 1 - 3
hx-kd100/src/main/java/com/fjhx/kd100/util/KD100Util.java

@@ -24,7 +24,6 @@ import com.ruoyi.common.config.HxConfig;
 import com.ruoyi.common.exception.ServiceException;
 import com.ruoyi.common.utils.SecurityUtils;
 import lombok.extern.log4j.Log4j2;
-import org.apache.commons.lang3.StringUtils;
 
 import java.lang.annotation.Annotation;
 import java.net.URLDecoder;
@@ -161,8 +160,7 @@ public class KD100Util {
     public static JSONObject parseCallbackData(String data) {
         log.info("快递100接口回调数据:{}", data);
 
-        if (StrUtil.isNotBlank(data) && StringUtils.indexOf(data, "param=") != -1) {
-            data = StringUtils.substringAfter(data, "param=");
+        if (StrUtil.isNotBlank(data)) {
             try {
                 data = URLDecoder.decode(data, "UTF-8");
             } catch (Exception e) {