feat: 新增退单操作接口及相关逻辑

主要修改:
1. 在LinkController中新增退单操作接口,支持用户对指定链接进行退单。
2. 在LinkStatusService中实现退单逻辑,确保用户只能退单自己的链接,并更新链接状态。
3. 在ScriptClient中新增调用退单接口的方法,处理与外部系统的交互。

技术细节:
- 通过新增的退单功能,提升了用户对链接的管理能力,确保操作的安全性和有效性。
This commit is contained in:
zyh
2025-08-27 19:07:37 +08:00
parent 1377c25847
commit 02c64b3a38
6 changed files with 543 additions and 1 deletions

96
test_refund_order.http Normal file
View File

@@ -0,0 +1,96 @@
### 退单接口测试
# 变量定义
@baseUrl = http://localhost:8080
@jwt_token = YOUR_JWT_TOKEN_HERE
@test_code_no = YOUR_TEST_CODE_NO_HERE
### 1. 登录获取JWT令牌 (先执行这个获取token)
POST {{baseUrl}}/api/auth/login
Content-Type: application/json
{
"username": "your_username",
"password": "your_password"
}
###
### 2. 生成测试链接 (获取一个codeNo用于测试)
POST {{baseUrl}}/api/link/generate
Authorization: Bearer {{jwt_token}}
Content-Type: application/json
{
"times": 1,
"linkCount": 1
}
###
### 3. 查看链接当前状态 (退单前)
GET {{baseUrl}}/api/link/{{test_code_no}}/status
Accept: application/json
###
### 4. 执行退单操作 - 正常情况
POST {{baseUrl}}/api/link/{{test_code_no}}/refund
Authorization: Bearer {{jwt_token}}
Content-Type: application/json
###
### 5. 查看链接退单后状态 (应该是REFUNDED状态)
GET {{baseUrl}}/api/link/{{test_code_no}}/status
Accept: application/json
###
### 6. 重复退单测试 (应该返回错误: 链接已经退过单)
POST {{baseUrl}}/api/link/{{test_code_no}}/refund
Authorization: Bearer {{jwt_token}}
Content-Type: application/json
###
### 7. 测试不存在的链接退单 (应该返回错误: 链接不存在)
POST {{baseUrl}}/api/link/NOTEXIST123/refund
Authorization: Bearer {{jwt_token}}
Content-Type: application/json
###
### 8. 测试无认证退单 (应该返回401)
POST {{baseUrl}}/api/link/{{test_code_no}}/refund
Content-Type: application/json
###
### 9. 测试错误的JWT令牌 (应该返回401)
POST {{baseUrl}}/api/link/{{test_code_no}}/refund
Authorization: Bearer invalid_jwt_token
Content-Type: application/json
###
### 10. 查看链接列表 (验证退单状态)
GET {{baseUrl}}/api/link/list?page=1&pageSize=10&status=REFUNDED
Authorization: Bearer {{jwt_token}}
Accept: application/json
###
### 测试步骤说明:
# 1. 先执行登录接口获取JWT令牌
# 2. 将获取到的JWT令牌复制到上面的 @jwt_token 变量中
# 3. 生成一个测试链接,获取 codeNo
# 4. 将获取到的 codeNo 复制到上面的 @test_code_no 变量中
# 5. 依次执行后续的测试接口
#
# 预期结果:
# - 正常退单:返回 true
# - 重复退单:返回错误信息 "链接已经退过单"
# - 不存在链接:返回错误信息 "链接不存在"
# - 无认证访问:返回 401 状态码
# - 退单后链接状态变为 REFUNDED