fujian_water_biz_doc/docs/evidence/rev004-prestorage-submit-dev-call-2026-04-23.md

120 lines
3.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# REV004 预存调整 prestorage-submit 开发环境调用记录2026-04-23
- 验证日期2026-04-23
- 后端仓基线:`21714d64822268d8dcb7cd1296656b4c19ff95fa`
- 前端仓基线:`d2698e1f5d107422f64928086d89d4b803cd12ae`
- 目标环境:`root@192.168.10.130`
- 服务端口:`sw-gateway -> 127.0.0.1:48080``sw-business-server -> 127.0.0.1:48090`
- 配置依据:
- `water-backend/sw-gateway/src/main/resources/application-dev.yaml`
- `water-backend/sw-business/sw-business-server/src/main/resources/application-dev.yaml`
- 鉴权方式:开发环境 `sw.security.mock-enable=true`,使用 `Authorization: Bearer emsoft1` + `tenant-id: 1`
## 1. 实际调用 payload
```json
{
"applicant": "李四",
"applyReason": "充值错误",
"attachmentRefs": [],
"contactMobile": "19928382738",
"custCode": "26041011111",
"refundAmount": 2,
"remark": "ssa"
}
```
## 2. 实际调用命令
### 2.1 直连 business
```bash
curl -X POST 'http://127.0.0.1:48090/admin-api/business/accounting-adjust/prestorage-submit' \
-H 'Authorization: Bearer emsoft1' \
-H 'tenant-id: 1' \
-H 'Content-Type: application/json' \
--data '{"applicant":"李四","applyReason":"充值错误","attachmentRefs":[],"contactMobile":"19928382738","custCode":"26041011111","refundAmount":2,"remark":"ssa"}'
```
### 2.2 走 gateway
```bash
curl -X POST 'http://127.0.0.1:48080/admin-api/business/accounting-adjust/prestorage-submit' \
-H 'Authorization: Bearer emsoft1' \
-H 'tenant-id: 1' \
-H 'Content-Type: application/json' \
--data '{"applicant":"李四","applyReason":"充值错误","attachmentRefs":[],"contactMobile":"19928382738","custCode":"26041011111","refundAmount":2,"remark":"ssa"}'
```
## 3. 调用结果
直连 business 与走 gateway 返回一致:
```json
{"code":500,"data":null,"msg":"系统异常"}
```
## 4. 后端日志根因
`sw-business-server` 日志显示真实异常为:
```text
java.lang.IllegalArgumentException: 账户预存余额不足
at cn.com.emsoft.sw.business.service.accountingadjust.accountProcess.AccountingAdjustProcessServiceImpl.createPrestorageAction(AccountingAdjustProcessServiceImpl.java:213)
```
对应代码位置:
- `water-backend/sw-business/sw-business-server/src/main/java/cn/com/emsoft/sw/business/service/accountingadjust/accountProcess/AccountingAdjustProcessServiceImpl.java`
关键逻辑:
- 读取客户与账户
-`deposit == null` 视为 `0`
- 校验 `deposit < refundAmount` 时抛出 `IllegalArgumentException("账户预存余额不足")`
## 5. 数据库核验
开发库(`sw_system`)中当前客户与账户数据:
```sql
select id, code, name, population, address, status, tenant_id
from biz_cust
where deleted = 0 and code = '26041011111';
select id, cust_id, deposit, uncheck_money, overdraft, status, deleted, tenant_id
from biz_account
where cust_id = 67 and deleted = 0;
```
结果:
```text
biz_cust:
67 | 26041011111 | liao | 3 | 11 | 0 | 1
biz_account:
65 | 67 | null | null | 0.0000 | 0 | 0 | 1
```
结论:当前测试客户 `26041011111``biz_account.deposit` 为空,业务侧按 `0` 处理,因此退款金额 `2` 会命中“账户预存余额不足”。
## 6. 结论
本次 `prestorage-submit` 调用链路本身可达,鉴权可用,接口也已命中后端业务逻辑。
失败原因不是网关/路由/权限,而是当前测试数据不满足退款校验条件:
- 客户存在
- 账户存在
- 账户预存余额为空(按 0 处理)
- `refundAmount = 2`,因此提交失败
## 7. 后续建议
二选一:
1. 修正该测试客户的 `biz_account.deposit`,使其大于等于 `2`
2. 改用当前开发库中预存余额充足的客户进行 `prestorage-submit` 联调
附带观察:当前前端收到的是泛化后的 `系统异常`,而非后端真实业务提示 `账户预存余额不足`。如果需要提升联调效率,可后续评估是否将该类参数/业务校验异常以明确业务消息返回前端。