订单客户状态查询接口

This commit is contained in:
caojia
2026-09-22 10:29:13 +08:00
parent 436af80054
commit cf01ad0299
10 changed files with 317 additions and 1 deletions
@@ -0,0 +1,59 @@
package com.ruoyi.web.controller.api;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestHeader;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import com.ruoyi.common.annotation.Anonymous;
import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.exception.ServiceException;
import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.framework.config.properties.TmsApiProperties;
import com.ruoyi.price.domain.vo.TmsOrderBillStatusResult;
import com.ruoyi.price.service.IPrcOrderBillService;
/**
* TMS 订单客户状态查询接口。
*
* <p>该接口不要求登录 Token,但必须携带 X-Api-Code。
* identifier 会按订单号、运单号、转单号进行精确匹配。</p>
*/
@Anonymous
@RestController
@RequestMapping("/api/tms/order-bill")
public class TmsOrderBillStatusController extends BaseController {
private static final String HEADER_API_CODE = "X-Api-Code";
@Autowired
private IPrcOrderBillService prcOrderBillService;
@Autowired
private TmsApiProperties tmsApiProperties;
/**
* 查询订单对应客户是否正常、额度是否欠费。
*
* <p>接口只返回查询事实和状态字段,不判断上游是否继续处理。</p>
*/
@GetMapping("/status")
public AjaxResult status(
@RequestHeader(value = HEADER_API_CODE, required = false) String headerApiCode,
@RequestParam(value = "identifier", required = false) String identifier) {
assertApiCode(headerApiCode);
TmsOrderBillStatusResult result = prcOrderBillService.queryTmsOrderBillStatus(identifier);
return success(result);
}
private void assertApiCode(String headerApiCode) {
String expected = tmsApiProperties.getApiCode();
if (StringUtils.isEmpty(expected)) {
throw new ServiceException("API_CODE_NOT_CONFIGURED: bms.tms.api-code is empty");
}
if (StringUtils.isEmpty(headerApiCode) || !expected.equals(headerApiCode.trim())) {
throw new ServiceException("API_CODE_INVALID: missing or invalid X-Api-Code");
}
}
}