Commit Graph

31 Commits

Author SHA1 Message Date
zhouyonggao b2901a9113 perf(exporter): 优化分片数据统计实现并发查询
- 引入sync包实现并发控制
- 使用信号量限制最大并发数为10
- 针对每个时间范围启动goroutine并行执行查询
- 利用互斥锁保护total计数的安全更新
- 等待所有并发查询完成后返回总计数结果
2025-12-19 18:21:28 +08:00
zhouyonggao bd38bdc374 refactor(exporter): 优化按时间跨度的分块计数策略
- 根据时间跨度自适应选择分块方式,提升查询效率
- ≤15天直接查询,避免无谓分片
- 15-30天按天分片(步长15天)
- 30-90天按周分片(7天)
- >90天新增按月分片(30天)策略
- 新增 SplitByMonths 函数实现月度分片逻辑
- 日志事件更新为按分片策略动态记录
2025-12-19 18:15:09 +08:00
zhouyonggao 328a8ced3a feat(export): 实现导出进度缓存及zip压缩优化
- 新增导出任务实时进度缓存模块,提供设置、获取和清除进度缓存接口
- 导出进度更新时只更新缓存,不再频繁写入数据库,减轻数据库压力
- 导出完成时清除进度缓存,释放内存资源
- API返回的导出进度字段改为实时缓存数据,提升前端实时性
- 导出列表也使用实时缓存的进度数据替换原数据库字段
- 优化ZipFiles函数,使用DEFLATE算法压缩分片文件,提高压缩效率
- 维护代码注释,明确缓存和压缩实现逻辑
2025-12-19 18:04:13 +08:00
zhouyonggao 61a3b17c09 fix(exports): 优化导出逻辑以支持动态时间范围分片
- 在 CountRowsFastChunked 函数中添加时间跨度计算,支持根据时间跨度选择按天或按周分片
- 新增 SplitByWeeks 函数以实现按周分割时间范围
- 增强日志记录,提供分片信息以便于后续分析和调试
2025-12-19 02:33:59 +08:00
zhouyonggao fca0e70115 fix(exports): 优化导出逻辑以支持多数据源和参数类型记录
- 修改 runJob 函数,重命名参数 fmt 为 fileFormat,提升可读性
- 在 runJob 中添加对查询参数类型的记录,便于调试和排查问题
- 更新 create 函数中的过滤条件逻辑,确保适用于所有数据源
- 引入 toIntID 函数,安全地将多种类型转换为 int64,优化 SQL 构建过程中的参数处理
- 记录导出查询的首行数据和零行结果,增强日志信息以便于后续分析
2025-12-19 02:12:44 +08:00
zhouyonggao bca7892799 fix(sqlbuilder): 处理 reseller_id_eq 和 plan_id_eq 过滤条件逻辑
- 添加逻辑判断当存在 plan_id_eq 过滤条件时
- 删除与 creator 相关的过滤条件 creator_in 和 creator_ids
- 优化过滤条件组合,避免冲突和冗余
- 保持现有 merchant_id_in 条件处理逻辑不变
2025-12-19 01:14:59 +08:00
zhouyonggao 57ecdbe692 fix(exporter): 修复ymt数据源下reseller_id_eq过滤器处理
- 不再将reseller_id_eq转换为merchant_id_in过滤条件
- 保留reseller_id_eq作为独立的WHERE子句进行过滤
- 删除零值的reseller_id_eq以避免无效查询条件
- 优化了过滤器的逻辑,避免删改遗漏问题
2025-12-18 17:57:07 +08:00
zhouyonggao bc6bc3945e fix(exporter): 修正易码通订单 reseller_id_eq 过滤器逻辑
- 易码通订单中 reseller_id_eq 不再转为 merchant_id_in 与 creator_in 做 OR 逻辑
- 保留 reseller_id_eq 作为单独的 WHERE 条件,不做合并删除
- 移除无效的过滤器跳过逻辑,优化过滤器处理流程
- 修改立减金相关标签名称,"未核销过期时间"改为"立减金过期时间"
2025-12-18 17:46:46 +08:00
zhouyonggao c64fa29617 fix(exporter): 移除 order_voucher.out_biz_no 字段相关代码
- 从 sqlbuilder 中移除对 order_voucher.out_biz_no 字段的空字符串占位处理
- 从字段白名单中删除 order_voucher.out_biz_no
- 从字段标签映射中移除 order_voucher.out_biz_no 的描述信息
2025-12-18 16:01:53 +08:00
zhouyonggao fd11907f26 refactor(schema): 优化MySQL 8窗口函数去重查询
- 修改多表连接语句,使用窗口函数ROW_NUMBER()实现去重
- 对order_cash/order_voucher/order_digit表添加窗口函数子查询,取首条记录
- 对goods_voucher_batch表添加窗口函数去重,实现精确匹配关联
- 保持原有逻辑基础上提升查询性能和准确性
2025-12-18 12:55:02 +08:00
zhouyonggao f6911a0cc6 refactor(export): 移除导出SQL中的枚举转换并增强错误标记详细信息
- 导出接口取消白名单过滤,字段导出与前端选择保持一致
- 构建SQL时移除所有CASE WHEN枚举字段转换,改由业务层处理
- 增加实际使用字段列表返回,解决字段列数不匹配问题
- ExportRepo.MarkFailed 增加失败原因和上下文参数,丰富失败日志
- 导出任务多个失败分支均调用MarkFailed并传递详细错误上下文
- 日志中增加导出失败详细信息,包含错误、数据源、字段、SQL及参数
- 删除无用的枚举映射代码,简化SQL构建逻辑
- 保障创建时间区间过滤的格式和参数合法性检查
- 增加导出SQL构建时被白名单过滤字段的日志输出,方便调试
2025-12-18 12:35:46 +08:00
zhouyonggao 646c9e8bc4 feat(exporter): 增强行数统计功能以支持SQL日志记录
- 在CountRowsFast函数中添加行数统计SQL的日志记录,方便排查估算问题
- 更新前端行数显示逻辑,优化评估状态的处理,确保用户界面友好性
- 提升代码可读性,确保日志记录和行数显示逻辑清晰明了
2025-12-17 19:27:29 +08:00
zhouyonggao 5bb83e1875 refactor(exporter, schema): 优化SQL构建逻辑以支持最新数据行的关联
- 更新BuildSQL和BuildJoins函数,移除ROW_NUMBER()函数,改为使用子查询确保每个订单只保留最新记录,避免1:N重复
- 增强JOIN逻辑,确保在YMT和其他数据源中正确关联最新的订单现金、代金券和批次信息
- 提升代码可读性,确保SQL构建逻辑清晰明了
2025-12-17 19:14:52 +08:00
zhouyonggao 1ee2b4bd79 refactor(exporter, schema): 优化SQL构建逻辑以避免重复数据
- 移除BuildSQL函数中的冗余去重逻辑,简化SQL构建过程
- 更新多个表的JOIN逻辑,使用ROW_NUMBER()函数确保每个订单只保留最新记录,避免1:N重复
- 提升代码可读性,确保SQL构建逻辑清晰明了
2025-12-17 18:21:30 +08:00
zhouyonggao ce547a50da refactor(constants, exporter): 更新红包领取状态映射以支持YMT数据源
- 修改OrderCashReceiveStatus映射,调整状态值以符合YMT数据源的要求
- 在BuildSQL函数中添加条件逻辑,根据数据源动态映射红包领取状态,确保SQL构建的准确性
- 提升代码可读性,确保状态映射逻辑清晰明了
2025-12-17 18:08:50 +08:00
zhouyonggao d1b30deb4a feat(export): 增强SQL构建逻辑以支持YMT数据源的ID过滤
- 在BuildSQL函数中添加对reseller_id_eq和merchant_id_eq的处理逻辑,确保在YMT数据源下有效过滤无效ID
- 更新去重逻辑以支持YMT数据源的特定需求,提升SQL构建的灵活性
- 优化聚合查询时的字段别名处理,确保主表字段正确引用
- 增强代码可读性,确保逻辑清晰明了
2025-12-17 17:39:35 +08:00
zhouyonggao ec5322f602 feat(export): 增强SQL构建逻辑以支持ID过滤和时间快捷选项
- 添加isZeroID函数以处理ID过滤,确保在构建SQL时跳过无效ID
- 更新BuildSQL函数,优化merchant_id_eq和creator_in的处理逻辑
- 在前端引入时间快捷选项,提升用户体验,简化时间范围选择
- 更新日期选择器以支持快捷选项,增强导出功能的灵活性
2025-12-17 17:14:55 +08:00
zhouyonggao 187e8e37a2 refactor(export): 统一导出模块中状态和字符串转换的工具使用
- 移除内部重复的 toString 函数,替换为统一的 utils.ToString
- 导出作业状态字符串统一使用 constants 包中的状态常量
- 优化导出 SQL 构建中的 CASE WHEN 语句为常量函数调用
- 删除已废弃的代码块和冗余日志打印
- 更新 database 操作中导出作业状态更新逻辑
- 提升代码可维护性与一致性
2025-12-17 10:34:45 +08:00
zhouyonggao e99dc91ee1 refactor(api): 优化模板API处理器结构与逻辑
- 重构TemplatesAPI结构体字段命名,区分元数据库和营销数据库
- 统一并优化HTTP路由处理代码,添加详尽注释说明各接口用途
- 增强createTemplate方法,完善请求体解析与错误处理
- 优化listTemplates,实现字段去重计数逻辑,支持用户过滤
- 详细拆解getTemplate,patchTemplate,deleteTemplate和validateTemplate逻辑
- patchTemplate支持多字段动态更新,添加详细日志追踪
- deleteTemplate新增软删除支持,保护关联数据安全
- validateTemplate增强错误分类和索引建议汇总能力
- 新增辅助函数toJSON/fromJSON及countValidFields,提高代码复用性
- 通过selectDataDB区分源数据库连接,提高数据来源正确性

feat(exporter): 增加导出写入器接口与工厂方法

- 定义RowWriter接口,规范所有导出格式写入器实现
- 实现NewWriter工厂函数,根据文件格式动态创建写入器实例
- 统一导出写入器构建流程,便于后续扩展其他格式写入器

feat(logging): 完善统一结构化日志模块

- 新增日志级别常量,支持Debug/Info/Warn/Error多等级
- 提供Init方法初始化日志文件和控制台输出
- 实现JSON格式日志输出,统一日志字段结构
- 提供多种等级便捷方法,简化日志打印调用
- 增强Error日志,附加调用文件和行号定位
- 封装专用日志方法,支持数据库错误、导出进度与SQL日志等

refactor(repo): 重构导出数据访问层,增强功能清晰度

- 优化ExportQueryRepo结构和构造方法
- 规范Build、Explain、Count等核心方法命名与参数
- 增加分块快速估算行数方法
- 完善游标创建及流式数据导出方法签名与流程
- 封装写入器和回调函数类型,增强模块解耦和扩展性
- 统一日志调用,规范错误处理和日志记录格式
2025-12-17 10:23:43 +08:00
zhouyonggao 1e1fcf9748 refactor(api): 优化模板API处理器结构与逻辑
- 重构TemplatesAPI结构体字段命名,区分元数据库和营销数据库
- 统一并优化HTTP路由处理代码,添加详尽注释说明各接口用途
- 增强createTemplate方法,完善请求体解析与错误处理
- 优化listTemplates,实现字段去重计数逻辑,支持用户过滤
- 详细拆解getTemplate,patchTemplate,deleteTemplate和validateTemplate逻辑
- patchTemplate支持多字段动态更新,添加详细日志追踪
- deleteTemplate新增软删除支持,保护关联数据安全
- validateTemplate增强错误分类和索引建议汇总能力
- 新增辅助函数toJSON/fromJSON及countValidFields,提高
2025-12-17 10:16:56 +08:00
zhouyonggao 3a354a3d93 feat(exporter): 增强SQL构建逻辑以支持供应商信息
在sqlbuilder.go中更新SQL构建逻辑,确保在导出数据时正确关联供应商名称。同时,在fields.go中更新字段标签以反映供应商名称的变化,提升导出数据的准确性和可读性。
2025-12-15 15:57:21 +08:00
zhouyonggao 3046274e24 feat(exporter): 添加短信渠道字段的SQL构建逻辑
在sqlbuilder.go中新增短信渠道字段的SQL构建逻辑,支持将短信渠道值映射为对应的中文描述,提升导出数据的可读性和准确性。
2025-12-15 15:00:53 +08:00
zhouyonggao 79cc64e5aa feat(exporter): 添加充值成功时间字段的SQL构建逻辑
在sqlbuilder.go中新增逻辑,仅在订单状态为充值成功时展示充值成功时间,提升导出数据的准确性和可读性。
2025-12-15 14:44:43 +08:00
zhouyonggao a84e8a5a66 feat(export): 添加字段去重逻辑以优化导出功能
在exports.go中实现字段去重,移除完全重复的字段,并确保主表字段优先于副表字段。更新toString函数以支持更多数据类型的格式化,确保导出数据的准确性和一致性。
2025-12-15 12:03:59 +08:00
zhouyonggao 582a5daeea feat(exporter): 添加订单重试状态的SQL构建逻辑 2025-12-12 18:32:03 +08:00
zhouyonggao 8e6b55f003 fix: 统一供应商类型字段标签和SQL映射逻辑
修改order.is_inner和merchant.third_party字段的标签为"供应商类型"
添加SQL构建逻辑将is_inner和third_party字段值映射为"内部供应商"或"外部供应商"
2025-12-12 18:28:00 +08:00
zhouyonggao 50ba8f7780 feat(导出): 实现字段映射规则并优化白名单校验
refactor(api): 重构字段处理逻辑,保留原始顺序并简化校验流程
docs: 添加字段映射规则文档
test: 添加SQL构建字段顺序与数量测试
2025-12-12 18:07:19 +08:00
zhouyonggao ddec621951 fix(exporter): 修复易码通直充卡密订单导出客户名称重复问题
移除订单中的merchant_name字段以避免与merchant.name重复
更新直充卡密模板示例使用merchant.name
优化SQL构建逻辑跳过立减金批次号过滤
2025-12-12 15:30:38 +08:00
zhouyonggao e45db7fcb1 fix(导出): 修复立减金批次号在不同数据源和订单类型下的显示与过滤逻辑
调整前端条件渲染和后端过滤逻辑,确保立减金批次号字段仅在营销数据源类型2或易码通数据源类型3时显示和生效
修复易码通直充卡密订单不应包含立减金相关字段的问题
2025-12-12 15:24:57 +08:00
zhouyonggao 9b77801b04 feat(导出): 支持商户ID筛选并优化用户ID筛选逻辑
- 在URL参数中添加merchantId支持,并处理多个商户ID的情况
- 在SQL构建器中实现creator_in和merchant_id_in的OR逻辑组合查询
- 优化reseller_id_eq和plan_id_eq的过滤条件处理
- 前端添加merchantId参数拼接功能
- 移除docker部署脚本中的固定镜像ID逻辑
2025-12-09 18:29:14 +08:00
zhouyonggao 113a8ffa0a feat: 初始化营销系统数据工具项目
- 添加基础项目结构,包括后端Go代码和前端静态文件
- 实现核心功能模块:数据导出、模板管理、元数据查询
- 添加多数据源支持(营销系统、易码通、元数据库)
- 实现CSV和Excel导出功能
- 添加配置管理系统,支持YAML和环境变量
- 实现日志记录和请求追踪
- 添加Docker部署支持
- 编写README文档说明项目结构和启动方式
2025-12-02 15:48:17 +08:00