feat: 新增标签体系、微信账单导入与收支记录体验优化

- 标签:新增 t_tag / t_transaction_tag 表与标签 CRUD,支持交易打标签、按标签筛选、批量添加/移除标签、导入账单默认标签,新增标签管理页
- 账单导入:新增微信支付 xlsx 解析器(WechatBillParser),支持支付宝 / 微信按类型导入;解析行保存原始完整数据(raw_data)并可在列表查看
- 收支记录:排序移至顶部并改为服务端排序(交易时间 / 金额,记忆偏好);筛选条件收纳为「更多筛选」弹层;分类筛选显示图标;一键设置支持「计入统计」;导入预览支持关键字 / 类型 / 状态 / 金额筛选
- 数据库:init.sql 新增 raw_data 字段与标签表,新增 init_tags.sql 默认标签种子
- 其他:更新 README 测试账号
This commit is contained in:
2026-09-17 16:47:26 +08:00
parent 1df6e23510
commit 65c0d8c550
33 changed files with 1854 additions and 100 deletions
@@ -4,6 +4,7 @@ import com.alibaba.excel.EasyExcel;
import com.example.finance.common.PageResult;
import com.example.finance.common.Result;
import com.example.finance.dto.BatchCategoryRequest;
import com.example.finance.dto.BatchTagRequest;
import com.example.finance.dto.TransactionQuery;
import com.example.finance.dto.TransactionRequest;
import com.example.finance.service.TransactionService;
@@ -165,6 +166,21 @@ public class TransactionController {
return Result.success(transactionService.batchUpdateCategory(userId, body));
}
/**
* 批量给交易记录添加/移除标签
*
* @param request HTTP请求,从中获取用户ID
* @param body 批量标签请求参数
* @return 涉及的记录数
*/
@PutMapping("/batch-tags")
@Operation(summary = "批量设置标签", description = "为选中的交易记录添加或移除标签")
public Result<Integer> batchTags(HttpServletRequest request,
@RequestBody @Valid BatchTagRequest body) {
Long userId = (Long) request.getAttribute("userId");
return Result.success(transactionService.batchTags(userId, body));
}
/**
* 导出交易记录为 Excel 文件
*