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

3.9 KiB
Raw Blame History

REV004 预存调整 prestorage-submit 开发环境调用记录2026-04-23

  • 验证日期2026-04-23
  • 后端仓基线:21714d64822268d8dcb7cd1296656b4c19ff95fa
  • 前端仓基线:d2698e1f5d107422f64928086d89d4b803cd12ae
  • 目标环境:root@192.168.10.130
  • 服务端口:sw-gateway -> 127.0.0.1:48080sw-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

{
  "applicant": "李四",
  "applyReason": "充值错误",
  "attachmentRefs": [],
  "contactMobile": "19928382738",
  "custCode": "26041011111",
  "refundAmount": 2,
  "remark": "ssa"
}

2. 实际调用命令

2.1 直连 business

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

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 返回一致:

{"code":500,"data":null,"msg":"系统异常"}

4. 后端日志根因

sw-business-server 日志显示真实异常为:

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)中当前客户与账户数据:

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;

结果:

biz_cust:
67 | 26041011111 | liao | 3 | 11 | 0 | 1

biz_account:
65 | 67 | null | null | 0.0000 | 0 | 0 | 1

结论:当前测试客户 26041011111biz_account.deposit 为空,业务侧按 0 处理,因此退款金额 2 会命中“账户预存余额不足”。

6. 结论

本次 prestorage-submit 调用链路本身可达,鉴权可用,接口也已命中后端业务逻辑。 失败原因不是网关/路由/权限,而是当前测试数据不满足退款校验条件:

  • 客户存在
  • 账户存在
  • 账户预存余额为空(按 0 处理)
  • refundAmount = 2,因此提交失败

7. 后续建议

二选一:

  1. 修正该测试客户的 biz_account.deposit,使其大于等于 2
  2. 改用当前开发库中预存余额充足的客户进行 prestorage-submit 联调

附带观察:当前前端收到的是泛化后的 系统异常,而非后端真实业务提示 账户预存余额不足。如果需要提升联调效率,可后续评估是否将该类参数/业务校验异常以明确业务消息返回前端。