package com.example.finance.service; import com.example.finance.dto.BillImportRequest; import com.example.finance.enums.BillType; import com.example.finance.vo.BillImportResultVO; import com.example.finance.vo.BillParseResultVO; import java.io.IOException; /** * 账单导入服务,负责「先解析、后导入」两阶段的业务逻辑。 * * @date 2026-09-17 09:50:10 */ public interface BillImportService { /** * 解析账单文件,返回预览数据(不落库),并标记与系统已有记录重复的行。 * * @param userId 当前用户ID * @param billType 账单类型 * @param content 账单文件字节内容 * @return 解析结果 * @throws IOException 文件解析失败 */ BillParseResultVO parse(Long userId, BillType billType, byte[] content) throws IOException; /** * 导入用户勾选的账单行,按外部交易号去重并写入交易记录。 * * @param userId 当前用户ID * @param request 导入请求 * @return 导入结果统计 */ BillImportResultVO confirm(Long userId, BillImportRequest request); }