You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

87 lines
2.8 KiB

4 weeks ago
package com.project.receive.controller;
4 weeks ago
import com.project.receive.domain.dto.SfRoutePushRequest;
import com.project.receive.domain.service.ReceiveService;
4 weeks ago
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
4 weeks ago
import java.util.HashMap;
import java.util.Map;
4 weeks ago
@Slf4j
4 weeks ago
@RestController
@RequestMapping("/api/sf/callback")
4 weeks ago
public class ReceiveController {
4 weeks ago
@Autowired
private ReceiveService receiveService;
4 weeks ago
/**
4 weeks ago
* 1. 路由状态回调 (揽收/签收)
* 对应接口: PushOrderState
4 weeks ago
*/
4 weeks ago
@PostMapping("/route")
public Map<String, Object> handleRoutePush(@RequestBody SfRoutePushRequest request) {
log.info(">>> 收到顺丰路由推送,包含节点数: {}",
(request.getBody() != null && request.getBody().getWaybillRoute() != null) ?
request.getBody().getWaybillRoute().size() : 0);
4 weeks ago
4 weeks ago
try {
// 业务处理逻辑
receiveService.processRoutePush(request);
4 weeks ago
4 weeks ago
// 返回顺丰要求的成功格式
return successResponse();
} catch (Exception e) {
log.error(">>> 路由解析处理失败", e);
return failResponse(e.getMessage());
}
4 weeks ago
}
/**
4 weeks ago
* 2. 费用与重量回调
* 对应接口: EXP_RECE_WAYBILLS_FEE_PUSH
4 weeks ago
*/
4 weeks ago
@PostMapping("/fee")
public Map<String, Object> handleFeePush(@RequestParam("content") String content) {
log.info(">>> 收到顺丰【运费重量】推送: {}", content);
try {
receiveService.saveFeeLog(content);
return successResponse();
} catch (Exception e) {
log.error("运费处理异常", e);
return failResponse(e.getMessage());
4 weeks ago
}
}
/**
4 weeks ago
* 3. 电子回单图片回调
* 对应接口: 图片注册及推送接口
4 weeks ago
*/
4 weeks ago
@PostMapping("/pod-picture")
public Map<String, Object> handlePodPicturePush(@RequestParam("content") String content) {
log.info(">>> 收到顺丰【电子回单图片】推送 (内容较长,不完整打印)");
4 weeks ago
try {
4 weeks ago
receiveService.savePodPictureLog(content);
return successResponse();
4 weeks ago
} catch (Exception e) {
4 weeks ago
log.error("回单图片处理异常", e);
return failResponse(e.getMessage());
4 weeks ago
}
}
4 weeks ago
private Map<String, Object> successResponse() {
Map<String, Object> res = new HashMap<>();
res.put("success", true);
res.put("errorCode", "S0000");
return res;
}
4 weeks ago
4 weeks ago
private Map<String, Object> failResponse(String msg) {
Map<String, Object> res = new HashMap<>();
res.put("success", false);
res.put("errorMsg", msg);
return res;
4 weeks ago
}
4 weeks ago
}