zhouyonggao
|
686df08da8
|
feat(权限管理): 增加超级管理员权限支持
在认证中间件中增加对超级管理员权限的支持,并修改经销商列表接口以跳过管理员的条件过滤
当用户是超级管理员时,可以查看所有经销商数据
|
2025-12-26 16:57:57 +08:00 |
zhouyonggao
|
55a171fff3
|
refactor(router): 重构exports路由处理逻辑以提高可读性
将直接调用的ServeHTTP改为先创建handler变量再调用,使代码结构更清晰
|
2025-12-26 16:29:26 +08:00 |
zhouyonggao
|
20deec5879
|
feat(router): 为exports路由添加免认证下载接口
添加exportsDownloadHandler处理函数用于免认证下载文件,并修改路由配置使/download路径跳过认证中间件。当文件URI获取失败时,自动尝试从本地storage目录查找匹配文件。
|
2025-12-26 15:29:34 +08:00 |
zhouyonggao
|
d0f65da375
|
fix(api): 修复认证错误响应格式,使用动态数据替换硬编码
修改认证错误响应,从固定字符串改为动态生成JSON,包含错误码、消息和数据
|
2025-12-26 15:24:01 +08:00 |
zhouyonggao
|
e2be6e67dd
|
fix(认证中间件): 统一认证失败的错误提示为"请先登录"
简化认证失败时的错误提示,不再使用原始业务错误信息,统一返回401状态码和"请先登录"提示,提升用户体验
|
2025-12-26 11:30:56 +08:00 |
zhouyonggao
|
2f1f166fb8
|
fix(auth): 统一未登录错误提示并优化前端错误处理
修改后端中间件返回的未登录错误提示信息为统一格式
前端API请求添加对401错误的特殊处理,显示服务端返回的具体错误信息
|
2025-12-26 11:22:11 +08:00 |
zhouyonggao
|
c82e3d7d7c
|
fix(api): 改进认证错误返回及添加分销商查询过滤
- 优化认证中间件,支持根据HTTP状态码和业务code判断认证状态
- 返回更详细的业务错误码和消息,默认消息为“认证失败”
- 添加响应头Content-Type为application/json,确保响应格式正确
- 在分销商列表查询中新增creator参数支持
- 支持从请求上下文获取创建者ID列表,结合参数动态构建SQL过滤条件
- 使用OR连接creator参数和上下文创建者ID的过滤条件
- 增加搜索功能,对分销商ID和名称支持模糊查询
- 查询结果默认排序并限制最大返回数量
|
2025-12-23 16:21:24 +08:00 |
zhouyonggao
|
ade149c67c
|
feat(api): 引入营销系统鉴权中间件,增强接口安全控制
- 新增配置项 MarketingAPIDomain,用于设置营销系统API域名
- 服务器启动时打印营销API域名警告或信息
- api/router.go中添加认证中间件,所有API路由均需认证访问
- api/middleware.go新增withAuth认证中间件,实现Token验证和数据权限接口调用
- 认证中间件通过HTTP请求调用营销系统鉴权接口获取创建者ID列表
- 请求头Access-Control-Allow-Headers新增token,支持跨域传递认证token
- 提供从请求上下文获取创建者ID列表的辅助函数CreatorIDsFrom
- 适配NewRouter函数,新增marketingAPIDomain参数用于中间件配置
|
2025-12-23 15:38:48 +08:00 |
zhouyonggao
|
fe45f8fa6f
|
fix(api): 优化导出接口错误提示信息
- 将 plan_id_eq 为空时的错误信息修改为“请选择计划”
- 导出错误时优先显示后端返回的 msg 字段,增强错误提示的准确性
- 使用模态框弹出更友好的错误提示,提升用户体验
|
2025-12-22 17:19:26 +08:00 |
zhouyonggao
|
55058abf0d
|
fix(api): 强制要求计划ID过滤并调整分销商查询逻辑
- 在导出接口增加 plan_id_eq 作为必填过滤字段验证
- 修改分销商列表接口,取消按 creator 过滤,返回所有分销商
- 优化分销商查询语句,支持关键字搜索 ID 和名称
- 在前端状态管理中,为计划选择字段添加必填校验规则
|
2025-12-22 17:12:03 +08:00 |
zhouyonggao
|
993d91849c
|
fix(api): 优化时间跨度限制提示信息
- 简化后端时间跨度超限错误信息为“时间跨度不能超过1年”
- 前端时间范围超限提示信息同步修改为“时间跨度不能超过1年,请重新选择”
- 保持前端时间范围清空逻辑不变
- 代码注释微调字符,保持一致性
|
2025-12-22 16:40:56 +08:00 |
zhouyonggao
|
07eafb5684
|
feat(export): 优化时间范围选择逻辑,限制跨度不超过1年
- 修改后端时间跨度验证逻辑,定义1年为从开始日期往后推1年
- 前端日期选择组件新增选择过程监听,记录首选日期以限制第二个日期范围
- 实现禁用时间函数,禁止选择超过1年跨度的时间范围
- 添加时间跨度变化检测,超出1年时清空选择并弹窗提示
- 前端导入中文语言包,支持ElementPlus中文本地化
- API模块统一业务错误码处理,非0码抛出带错误信息异常
|
2025-12-22 16:38:56 +08:00 |
zhouyonggao
|
c56c738992
|
fix(api): 验证时间范围不超过1年以防止查询跨度过大
- 添加 validateTimeRange 函数,实现时间范围格式校验和跨度限制
- 支持字符串和浮点数类型的时间输入转换
- 校验时间格式是否为 YYYY-MM-DD HH:mm:ss,确保格式正确
- 确保结束时间晚于开始时间,避免逻辑错误
- 限制时间跨度最大不能超过365天,防止过大数据范围查询
- 在 create 方法中调用验证逻辑,处理相应的错误返回并终止请求处理
|
2025-12-22 11:09:37 +08:00 |
zhouyonggao
|
743e2bc4d2
|
fix(api): 修改 YMTUsersAPI 列表方法以忽略搜索关键词
- 在 list 方法中,始终返回所有用户数据,忽略查询参数 q。
- 将 keyword 变量设置为空字符串,以确保不进行过滤。
|
2025-12-20 15:54:21 +08:00 |
zhouyonggao
|
1cfe52d565
|
fix(grpc): 更新 gRPC 用户客户端路径引用为 GitHub 形式
- 修改 user_client.go 中的 gRPC 用户客户端路径引用,使用 GitHub 路径以避免对 grpc 目录的修改。
- 更新 go.mod 文件中的 gRPC 用户客户端依赖,简化依赖管理。
|
2025-12-20 14:26:16 +08:00 |
zhouyonggao
|
ef9f366a29
|
fix(grpc): 更新 gRPC 用户客户端路径引用
- 修改 user_client.go 中的 gRPC 用户客户端路径引用,使用相对路径以避免对 grpc 目录的修改。
- 移除 go.mod 中关于 grpc/user/userv1 的本地模块使用说明,简化依赖管理。
|
2025-12-20 14:21:14 +08:00 |
zhouyonggao
|
bf5d927587
|
fix(api): 更新 YMT 用户列表处理逻辑以使用 gRPC 生成的代码
- 修改 YMTUsersAPI 的 list 方法,使用 resp.GetList() 替代 resp.List() 以获取用户列表
- 更新用户显示名称的获取方式,使用 user.GetRealname() 和 user.GetUsername() 方法
- 引入 userId 通过 user.GetId() 获取用户 ID,确保显示名称格式正确
- 更新 gRPC 用户客户端实现,替换临时结构体为生成的 proto 代码
- 移除不再需要的临时结构体定义,简化代码结构
|
2025-12-20 14:18:48 +08:00 |
zhouyonggao
|
53a9038c4f
|
refactor(grpc): 临时替换 gRPC 用户客户端实现
- 添加临时结构体 AdminSimpleInfo 和 SimpleListAllUserResp,以便在 proto 生成前使用
- 修改 UserClient 结构体中的 client 字段为 interface{},以适应未来的 proto 代码
- 更新 SimpleListAllUser 方法,提供错误提示,提醒用户生成 proto 代码
- 日志信息更新,指明当前连接的 gRPC 客户端尚未生成 proto 代码
|
2025-12-20 14:12:42 +08:00 |
zhouyonggao
|
fde87fde96
|
feat(api): 支持 gRPC 用户服务集成
- 更新路由以支持 gRPC 服务器地址配置
- 修改 YMTUsersHandler 以使用 gRPC 客户端进行用户数据查询
- 添加 gRPC 连接失败的降级处理逻辑
- 引入 gRPC 生成的代码以支持用户服务调用
|
2025-12-20 14:11:28 +08:00 |
zhouyonggao
|
c02f051cb8
|
feat(config): 添加 gRPC 服务器配置支持
- 在配置结构中新增 GRPCServer 类型,包含 Host 和 Port 字段
- 更新 Load 函数以支持从环境变量读取 gRPC 服务器的配置
- 引入 gRPC 和 protobuf 依赖以支持 gRPC 功能
|
2025-12-20 14:08:30 +08:00 |
zhouyonggao
|
e8c264a384
|
refactor(exports): 使用并行导出替代串行分块导出
- 移除旧的串行分块导出代码,改为基于分片的并行导出机制
- 引入并行导出配置,支持设置分片数量、最大并发数和每文件最大行数
- 预估总行数作为并行导出总行数,用于更合理的任务拆分
- 新增并行导出过程中的进度更新和文件创建回调处理
- 并行导出失败时记录错误日志并标记导出任务失败
- 保留原有Transform行数据转换功能,保证数据一致性
- 优化日志输出,详细记录并行导出过程中的错误信息
|
2025-12-19 18:43:43 +08:00 |
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
|
db8abb437b
|
fix(export): 优化导出完成时的缓存清理逻辑
- 导出完成时将缓存进度更新为实际完成行数,避免超过100%
- 延迟清理缓存,确保完成行数保持到任务完成
- 修改清理缓存时机,提升内存释放的准确性
|
2025-12-19 18:07:35 +08:00 |
zhouyonggao
|
328a8ced3a
|
feat(export): 实现导出进度缓存及zip压缩优化
- 新增导出任务实时进度缓存模块,提供设置、获取和清除进度缓存接口
- 导出进度更新时只更新缓存,不再频繁写入数据库,减轻数据库压力
- 导出完成时清除进度缓存,释放内存资源
- API返回的导出进度字段改为实时缓存数据,提升前端实时性
- 导出列表也使用实时缓存的进度数据替换原数据库字段
- 优化ZipFiles函数,使用DEFLATE算法压缩分片文件,提高压缩效率
- 维护代码注释,明确缓存和压缩实现逻辑
|
2025-12-19 18:04:13 +08:00 |
zhouyonggao
|
6cec327340
|
feat(export): 优化导出数据处理能力
- 将单个文件最大行数从30万提升至50万
- 新增海量数据集批次大小(500万+行)支持
- 将超大数据集批次大小由10万调整至20万
- 根据估算行数新增海量数据集批次选择逻辑
- 增加进度同步间隔至每10万行,减少同步频率
- 保持同步最长时间限制不变,优化性能表现
|
2025-12-19 17:55:55 +08:00 |
zhouyonggao
|
d96271edf9
|
refactor(export): 优化导出任务进度更新,减少数据库写入
- 引入内存进度跟踪器ProgressTracker管理进度状态
- 将多处调用rrepo.UpdateProgress替换为ProgressTracker.Update
- 增加周期性和时间间隔同步限制,降低数据库写入频率
- 实现导出完成时的最终同步以保证进度准确更新
- 统一管理各类型导出任务的进度更新逻辑
- 保持导出流程原有功能不变,提高性能和稳定性
|
2025-12-19 17:49:41 +08:00 |
zhouyonggao
|
48979b41d1
|
feat(exports): 支持服务启动时恢复未完成的导出任务
- 在服务启动时自动查询并恢复所有运行状态的导出任务
- 为导出任务增加重启次数计数及进度重置功能,确保任务重试正确性
- 将原有导出任务执行流程抽象出根据任务ID恢复任务的方法
- 修复导出任务相关数据库访问,统一使用结构体内db连接字段
- 优化导出任务文件处理与状态更新流程,提升任务恢复的稳定性
- 新增导出任务运行状态查询接口以支持任务恢复功能
- 改进错误日志记录,便于排查任务恢复中的异常情况
|
2025-12-19 17:44:29 +08:00 |
zhouyonggao
|
c5f6f6c6e9
|
fix(api): 增强创建者选择逻辑以支持手机号自动匹配
- 更新创建者查询逻辑,新增手机号字段以便于选择
- 修改前端逻辑,支持通过 URL 中的手机号自动选中创建者
- 优化创建者选择组件,确保在禁用状态下仍能正确显示选项
- 增强日志记录,提供手机号匹配的调试信息,提升用户体验
|
2025-12-19 17:09:39 +08:00 |
zhouyonggao
|
61a3b17c09
|
fix(exports): 优化导出逻辑以支持动态时间范围分片
- 在 CountRowsFastChunked 函数中添加时间跨度计算,支持根据时间跨度选择按天或按周分片
- 新增 SplitByWeeks 函数以实现按周分割时间范围
- 增强日志记录,提供分片信息以便于后续分析和调试
|
2025-12-19 02:33:59 +08:00 |
zhouyonggao
|
ccb12da7f3
|
fix(exports): 更新导出逻辑以移除自动用户ID转换
- 删除从 URL 参数 userId 和 current_user_id 自动转换为 creator_in 的逻辑
- 更新相关注释,明确 current_user_id 仅用于记录导出任务的 owner,不用于数据过滤
- 强调用户需手动选择 creator 进行过滤,提升数据过滤的安全性和灵活性
|
2025-12-19 02:24:54 +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
|
57a32855fc
|
fix(api): 删除未使用的变量以清理代码
- 移除了多余的变量used,减少不必要的内存占用
- 优化了list函数中的代码结构
- 提高了代码的可读性和维护性
|
2025-12-19 01:04:43 +08:00 |
zhouyonggao
|
43d67073c9
|
fix(api): 修正用户列表查询逻辑以避免重复
- 将查询语句从 activity 表改为 user 表,优化数据来源
- 修改排序字段由 user_id 改为 id,保持一致性
- 移除代码中对用户 ID 的去重逻辑,简化处理流程
- 保持空用户名用用户 ID 字符串替代的逻辑不变
|
2025-12-19 01:00:51 +08:00 |
zhouyonggao
|
4b573d3981
|
fix(exports): 修正 creator_in 过滤条件逻辑
- 调整在 marketing 数据集的 order 或 order_info 主要表时,
当存在 plan_id_eq 或 reseller_id_eq 过滤参数,不设置 creator_in
- 在 mergePermissionIntoFilters 函数中,传递了 plan_id_eq 或 reseller_id_eq 时,
删除已有的 creator_in 和 creator_ids 过滤,避免重复过滤
- 优化过滤逻辑,确保在特定条件下 creator_in 不会被错误附加
- 保留当 creator_in 已经存在且非空时的过滤行为不变
|
2025-12-18 23:39:39 +08:00 |
zhouyonggao
|
13b4ff56df
|
fix(api): 优化权限过滤器中 plan_id_eq 与 reseller_id_eq 的设置逻辑
- 将 plan_id_eq 和 reseller_id_eq 的赋值提至过滤 creator 判断之前
- 避免重复映射相同的权限边界字段
- 保持营销数据集订单相关过滤条件的正确性
- 简化 skipCreator 标签区域中重复的代码逻辑
|
2025-12-18 23:34:19 +08:00 |
zhouyonggao
|
dd559f2f78
|
fix(api): 调整权限合并逻辑以支持plan_id_eq和reseller_id_eq过滤
- 在marketing数据源且主资源为order或order_info时
- 若filters包含非空的plan_id_eq或reseller_id_eq,则跳过creator过滤
- 优化了对权限中多个可能user id字段的检测逻辑
- 统一将识别到的用户ID写入filters的creator_in字段
- 保留了对reseller_id和merchant_id的兼容处理逻辑
|
2025-12-18 23:26:09 +08:00 |
zhouyonggao
|
5608897284
|
fix(api): 修复用户列表接口查询和去重逻辑
- 移除无效的查询参数处理,简化SQL查询语句
- 修复对用户ID的重复数据去重逻辑,确保结果唯一
- 统一代码格式和缩进,提高代码可读性
- 保留按user_id升序排序及查询限制功能
- 保证接口在无匹配路由时返回404状态码
|
2025-12-18 23:06:32 +08:00 |
zhouyonggao
|
9c34250d3e
|
fix(schema): 修改订单外部交易号标签名称
- 将订单字段 "order.out_trade_no" 的标签由“支付流水号”改为“外部交易号”
|
2025-12-18 22:51:32 +08:00 |
zhouyonggao
|
02af4a91f4
|
fix(metadata): 修正发券方式字段隐藏状态
- 将 voucher.receive_mode 字段的 Hidden 属性从 false 改为 true
- 确保发券方式字段在界面中默认隐藏
- 保持其他字段的隐藏状态不变
|
2025-12-18 22:39:07 +08:00 |
zhouyonggao
|
8868051767
|
fix(api): 修正userId字段JSON键名
- 修改JSON_CONTAINS中字段键名由'user_id'为'userId'
- 保证用户ID匹配逻辑正确执行
- 防止因键名错误导致的查询失败
|
2025-12-18 22:04:33 +08:00 |
zhouyonggao
|
962d1c0ae3
|
fix(api): 修复商户列表查询逻辑并增强用户过滤条件
- 修改查询条件,将 `delete_time` 为空作为有效数据筛选
- 优化用户过滤,支持 `user_id` 字段匹配及 JSON 字段中包含该用户
- 修正代码格式和缩进以提升可读性
- 增加对请求参数 `limit` 的范围校验
- 优化错误处理逻辑,确保查询异常时返回正确状态码
|
2025-12-18 22:02:04 +08:00 |
zhouyonggao
|
c45cabbfdc
|
fix(api): 修复分销商查询时销售员ID筛选条件错误
- 修改SQL查询,添加 salesmen_id 作为筛选条件
- 传递salesman_id对应的参数,确保查询参数正确
- 保持原有creator参数传递逻辑不变
- 解决遗漏salesman_id参数引起的查询异常问题
|
2025-12-18 21:56:42 +08:00 |
zhouyonggao
|
a8b7c77e03
|
feat(api): 支持按creator参数过滤经销商列表
- 新增creator参数解析,支持按多个creator过滤
- 根据传入creator构建SQL查询条件及参数绑定
- 当creator参数为空时,返回空列表避免无效查询
- 保持原有按q参数模糊搜索功能不变
- 限制默认返回记录数为2000,增强接口性能
|
2025-12-18 21:38:28 +08:00 |
zhouyonggao
|
11a93996e5
|
feat(api): 支持营销代理数据库并优化代理列表查询
- 新增配置项支持营销代理数据库连接
- 主服务启动时根据配置连接营销代理MySQL,若无配置则使用营销库回退
- ResellersAPI 使用独立的营销代理数据库替代原营销数据库查询
- 优化代理列表接口,改为从reseller表查询代理Id及名称
- 修改路由注册,使用营销代理数据库处理代理相关路由请求
- 调整相关代码实现,提升代理数据查询灵活性和健壮性
|
2025-12-18 21:37:13 +08:00 |
zhouyonggao
|
6dbc3eb1a1
|
fix(constants): 修正红包领取状态映射的键值
- 将红包领取状态映射的键从1开始调整为0开始
- 重新排列状态值对应,保持顺序一致
- 修正代码逻辑中状态码对应的实际含义
|
2025-12-18 21:29:54 +08:00 |
zhouyonggao
|
ae04be7ea0
|
fix(constants): 修改营销系统立减金状态描述
- 将状态码2的描述由“已实扣”更改为“已核销”
|
2025-12-18 21:25:52 +08:00 |
zhouyonggao
|
4b313adebb
|
fix(exports): 修复导出接口用户ID参数传递问题
- 取消从查询参数中获取 current_user_id 和 userId 的逻辑
- 调用 CountJobs 和 ListJobs 时传入空字符串替代用户ID
- 避免因传递错误用户ID导致的数据过滤错误
|
2025-12-18 21:11:18 +08:00 |
zhouyonggao
|
b09865fcbd
|
fix(api): 修正导出接口中用户ID参数获取逻辑
- 优先从请求参数中获取 current_user_id
- 若 current_user_id 为空则退回获取 userId
- 保证查询用户导出任务时使用正确的用户ID参数
- 提升接口的兼容性和灵活性
|
2025-12-18 21:09:12 +08:00 |