Appearance
账单字段说明
本章说明支付宝「交易记录明细查询」导出的 CSV 在导入本系统时,各字段的读取与丢弃情况,可作为开发新解析器或调整字段映射的参考。
样例与实现位置
- 编码:GBK(解析器兼容 UTF-8 / UTF-8 BOM)
- 解析器:
src/main/java/cn/rosercode/finance/importer/AlipayBillParser.java - 落库服务:
src/main/java/cn/rosercode/finance/service/impl/BillImportServiceImpl.java
文件结构
| 位置 | 内容 | 是否处理 |
|---|---|---|
| 第 1 行 | 支付宝交易记录明细查询 | 忽略 |
| 第 2 行 | 账号:[...] | 忽略 |
| 第 3 行 | 起始日期:[...] 终止日期:[...] | 忽略 |
| 第 4 行 | ---交易记录明细列表--- | 忽略 |
| 第 5 行 | 表头(以「交易号」开头) | 作为列定位依据 |
| 数据行 | 每行一笔交易 | 逐行解析 |
| 结尾统计 | 待收入/已支出/待支出、导出时间、用户 | 忽略 |
解析器通过「以 交易号 开头」定位表头行;遇到空行、--- 分隔线或 共 开头的统计行即结束。
CSV 完整表头(16 列)
| 序号 | 列名 | 序号 | 列名 |
|---|---|---|---|
| 1 | 交易号 | 9 | 商品名称 |
| 2 | 商家订单号 | 10 | 金额(元) |
| 3 | 交易创建时间 | 11 | 收/支 |
| 4 | 付款时间 | 12 | 交易状态 |
| 5 | 最近修改时间 | 13 | 服务费(元) |
| 6 | 交易来源地 | 14 | 成功退款(元) |
| 7 | 类型 | 15 | 备注 |
| 8 | 交易对方 | 16 | 资金状态 |
完全丢弃的字段(7 个)
| 列名 | 说明 |
|---|---|
| 商家订单号 | 未使用 |
| 最近修改时间 | 未使用 |
| 交易来源地 | 未使用 |
| 类型 | 未使用,改用「收/支」推断类型 |
| 服务费(元) | 未使用 |
| 成功退款(元) | 未使用 |
| 备注 | 支付宝自带备注被丢弃;系统备注由「交易对方 · 商品名称」拼接生成 |
读取但未落库的字段(3 个)
| 列名 | 用途 |
|---|---|
| 交易状态 | 仅用于类型推断与预览展示 |
| 资金状态 | 仅用于「不计收支」行的类型推断 |
| 交易创建时间 | 仅当「付款时间」为空时作为交易时间兜底 |
落库映射(写入 t_transaction)
| CSV 列 | 数据库字段 | 说明 |
|---|---|---|
| 交易号 | external_no | 导入去重键 |
| 付款时间(缺失时用交易创建时间) | transaction_time | 交易发生时间 |
| 金额(元) | amount | 去除千分位逗号后解析 |
| 收/支 | type + include_in_stats | 「不计收支」默认 include_in_stats = 0 |
| 交易对方 + 商品名称 | remark | 拼接为「交易对方 · 商品名称」,截断至 255 字符 |
| — | payment_method | 固定为 ALIPAY |
| — | category_id | 取用户选择的默认分类;未选择则为 NULL |
类型推断规则
| 收/支 | 交易状态 / 资金状态 | 推断类型 |
|---|---|---|
| 支出 | — | EXPENSE |
| 收入 | — | INCOME |
| 不计收支 | 交易状态含「退款」 | INCOME |
| 不计收支 | 资金状态为「已收入」 | INCOME |
| 不计收支 | 其他(如「交易关闭」) | EXPENSE |
可能的后续增强
- 将支付宝「备注」并入系统
remark(当前完全丢失)。 - 新增字段记录「服务费」/「成功退款」。
- 保留「商家订单号」作为辅助去重或展示。