dujiao-next
|
67f6c540ea
|
refactor: settings 内部布尔解析复用 settingsvalue.ParseBool
|
2026-10-11 12:50:19 +08:00 |
|
dujiao-next
|
807bda7602
|
refactor: 删除 identity 用户存储中与 memberlevel 重复的会员等级写入方法
|
2026-10-11 12:49:26 +08:00 |
|
dujiao-next
|
812a0581ba
|
refactor: 删除迁移守卫中已被上级目录覆盖的冗余路径
|
2026-10-11 12:48:08 +08:00 |
|
dujiao-next
|
f19b8a7d80
|
refactor: 各模块复制的分页与方言查询辅助函数统一改用 gormutil
|
2026-10-11 12:47:38 +08:00 |
|
dujiao-next
|
568e83d4dc
|
refactor: 删除无人调用的死代码
|
2026-10-11 12:45:55 +08:00 |
|
dujiao-next
|
6ba6e1907c
|
fix: 同一对接站点批量导入加互斥锁,超时重试不再并发导入重复商品
|
2026-10-11 12:44:17 +08:00 |
|
dujiao-next
|
cc12551c04
|
fix: 支付后佣金创建失败时投递可重试任务,避免推广佣金永久丢失
|
2026-10-11 12:42:58 +08:00 |
|
dujiao-next
|
70168cbe8d
|
fix: 通用设置接口拒绝有专用接口的配置键,避免跳过校验与运行时生效
|
2026-10-11 12:40:41 +08:00 |
|
dujiao-next
|
ff9d9a1f61
|
fix: 禁止后台单独取消子订单,避免父订单支付后子订单被复活或余额未退
|
2026-10-11 12:39:20 +08:00 |
|
dujiao-next
|
495a0ce0f0
|
fix: 采购单列表并发查询上游退款并设整页超时,上游变慢时列表页不再超时
|
2026-10-11 12:38:43 +08:00 |
|
dujiao-next
|
ada4155bed
|
fix: 分销站公共配置不再下发主站自定义脚本
|
2026-10-11 12:37:20 +08:00 |
|
dujiao-next
|
8acae264c2
|
fix: 启用 2FA 与命令行重置管理员密码/2FA 后清理鉴权缓存,旧令牌立即失效
|
2026-10-11 12:36:40 +08:00 |
|
dujiao-next
|
94aa8b477c
|
fix: 上游图片仅下载同主机地址并限制大小与扩展名,防止 SSRF 与写满磁盘
|
2026-10-11 12:35:33 +08:00 |
|
dujiao-next
|
09fb643fce
|
fix: 巡检补投停滞的待提交采购单,子订单采购失败不再阻断其余子订单
|
2026-10-11 12:34:21 +08:00 |
|
dujiao-next
|
53631cf4f4
|
fix: 超时取消订单任务读库失败时交给队列重试,避免预占库存永久不释放
|
2026-10-11 12:33:12 +08:00 |
|
dujiao-next
|
fbfdc008d1
|
fix: 上游商品增量列表纳入 SKU 库存与卡密变化,下游增量同步能及时感知库存
|
2026-10-11 12:32:47 +08:00 |
|
dujiao-next
|
0c045b201a
|
fix: 用户登录凭证绑定签发站点,分销站凭证不能在主站或其他分销站使用
|
2026-10-11 12:31:34 +08:00 |
|
dujiao-next
|
b942773f21
|
fix: 子订单退款计入并受限于父订单可退金额,防止父子订单重复退款
|
2026-10-11 12:27:09 +08:00 |
|
dujiao-next
|
14a403e2b1
|
fix: 采购单巡检加周期锁防多 worker 重复执行,分页覆盖全部已接单并按单限频告警
|
2026-10-11 12:25:29 +08:00 |
|
dujiao-next
|
06ff48dc18
|
fix: 采购单状态改为比较后再写,防止回调与提交/轮询并发导致状态回退和重复交付通知
|
2026-10-11 12:23:32 +08:00 |
|
dujiao-next
|
57af7c6714
|
fix: 编辑商品未改库存时保留实时库存,避免覆盖下单预占导致超卖
|
2026-10-11 12:21:36 +08:00 |
|
dujiao-next
|
8f2b7039e4
|
fix: 采购单按配置间隔延迟重试,上游明确拒单按错误码判断是否重试
|
2026-10-11 12:18:22 +08:00 |
|
dujiao-next
|
2ae92e8ba4
|
fix: 余额全额支付时同步入账分销利润
|
2026-10-11 12:17:16 +08:00 |
|
dujiao-next
|
2f437a39c0
|
fix: 验证码原子占用尝试次数并先落库后发信,注册/忘记密码/发送验证码接入限流
|
2026-10-11 12:16:08 +08:00 |
|
dujiao-next
|
3ae53014f2
|
fix: 上传目录所有文件禁止执行脚本,防止同源存储型 XSS
|
2026-10-11 12:13:57 +08:00 |
|
dujiao-next
|
bc076c984a
|
fix: 上游同一下游单号的旧单已取消时允许重新下单,修复余额不足后重试永远失败
|
2026-10-11 12:13:33 +08:00 |
|
dujiao-next
|
ea785ed773
|
fix: 采购单已被上游接单时,上游取消失败不再本地标记取消
|
2026-10-11 12:12:39 +08:00 |
|
dujiao-next
|
71ea31ddc5
|
fix: 禁止后台取消已支付订单,避免退回钱包与释放已消耗库存
|
2026-10-11 12:11:18 +08:00 |
|
dujiao-next
|
f627efce94
|
feat: 后台商品支持批量设置前台库存展示模式
|
2026-10-11 12:09:13 +08:00 |
|
dujiao-next
|
5bd0ce93d6
|
feat: 导入上游商品时优先沿用上游 slug
|
2026-10-11 12:09:13 +08:00 |
|
dujiao-next
|
291a2ae2b6
|
fix: 商品 slug 查重计入已删除商品,避免撞唯一索引报笼统错误
|
2026-10-11 12:09:13 +08:00 |
|
dujiao-next
|
f4a06ff366
|
fix: 限制用户昵称长度并禁止 HTML 敏感字符
|
2026-10-11 11:25:18 +08:00 |
|
dujiao-next
|
7d2eb8db86
|
fix: 统一主站与分销站 Telegram/WhatsApp 联系方式校验规则
|
2026-10-08 10:27:35 +08:00 |
|
dujiao-next
|
f61740195c
|
fix: 分销站展示 Email 与客服链接并不再回退主站联系方式
|
2026-10-08 10:22:32 +08:00 |
|
dujiao-next
|
a461338815
|
fix: 修复上游映射商品交付表单被清空、隐藏或丢弃导致付款后采购失败
|
2026-10-08 10:08:03 +08:00 |
|
dujiao-next
|
b20da89eef
|
fix: 上游分类数量统计不再阻塞列表并为全量翻页增加页数上限
|
2026-10-06 18:42:09 +08:00 |
|
dujiao-next
|
98ab4db98f
|
docs: 新增 AI 编码助手通用规范 AGENTS.md
|
2026-10-06 18:42:09 +08:00 |
|
dujiao-next
|
c328771700
|
fix: 批发价清理按 SKU ID 保留并改为 store 层禁止级联保存关联
|
2026-10-06 18:18:09 +08:00 |
|
Assimon
|
db4b52a108
|
Merge pull request #348 from SzeMeng76/fix/sku-single-mode
fix: 修复商品无法关闭 SKU 规格配置
|
2026-10-06 18:14:24 +08:00 |
|
Assimon
|
dbc4d01fa7
|
Merge pull request #341 from SzeMeng76/fix/upstream-category-sync-pagination
fix: 商品对接分类列表按真实数量展示
|
2026-10-06 18:05:43 +08:00 |
|
Assimon
|
2cfffde120
|
Merge pull request #337 from SzeMeng76/fix/dashboard-inventory-alerts-pagination
fix: 为 Dashboard 库存告警列表添加加载更多功能
|
2026-10-06 18:05:13 +08:00 |
|
dujiao-next
|
9253bbbe73
|
fix: validate numeric id in store GetByID
|
2026-10-05 23:29:37 +08:00 |
|
SzeMeng76
|
fd42459056
|
fix: 修复商品无法关闭 SKU 规格配置
后台删光全部规格并保存后,规格会"复活",表现为关不掉 SKU 规格配置。
根因是两条叠加:
- Update 里调用 syncSingleProductSKU 时传 createWhenMissing=true,
收到空规格不会真正删除,而是挑一行复活并删除其余行;
- 更底层的是 productRepo.Update 走 db.Save,会把读取时预加载的那份
过期 SKU 快照级联 upsert 回库,用原 ID 把刚删掉的规格行重新插入。
改动:
- syncSingleProductSKU 收敛为「恰好一行 DEFAULT」,优先复用已存在的
DEFAULT 行(不论是否启用),无 DEFAULT 时才挑一行改名并清理同编码的
软删除残留,避免撞唯一索引;
- 该路径接上卡密库存守卫,待删规格只要还有可用或未核销卡密库存就整体
拒绝,且在写库前完成全部校验,不留半删状态;
- Update 保存商品前清空 SKUs,规格改由 SKU 路径独占管理,不再级联写回;
- 未显式传批发价时清理指向已删规格的悬空阶梯,否则后续批发价编辑会因
「引用了不存在的 SKU」一直失败;
- 后台单规格商品不再把 DEFAULT 渲染成一条规格行,仅在「有且仅有一行且
编码为 DEFAULT」时隐藏,多规格中真叫 DEFAULT 的自定义编码照常显示。
|
2026-10-03 15:12:31 +08:00 |
|
SzeMeng76
|
fee6dfa039
|
fix: 商品对接分类列表按真实数量展示,避免商品量大时分类缺失
管理端对接弹窗原先按已加载到前端的商品分页统计每个分类的商品数,
商品数量超过单页大小时,未加载分页里的分类会被误判为空而从列表消失,
表现为“商品少时分类全,商品多时只能对接个别分类”。
新增 /admin/upstream-category-counts 接口,后端遍历全部上游分页统计
真实分类商品数,前端改用该数据渲染分类列表和判断对接按钮可用性。
|
2026-09-21 19:12:08 +08:00 |
|
SzeMeng76
|
e132c6376d
|
feat: 为 Dashboard 库存告警列表添加"加载更多"功能
- 初始显示10条库存告警,避免列表过长影响页面滚动
- 添加"加载更多"按钮,每次点击加载10条
- 按钮显示剩余未加载数量
- 全部加载完成后按钮自动隐藏
- 添加中文、繁体、英文翻译
解决当上游出问题导致大量库存告警时,Dashboard 页面无法滚动到底部的问题。
|
2026-09-18 17:24:36 +08:00 |
|
Assimon
|
d2e44618de
|
Merge pull request #309 from SzeMeng76/fix/skip-upstream-inventory-alerts
fix(dashboard): 库存告警支持对接商品上游库存
|
2026-09-16 15:16:23 +08:00 |
|
SzeMeng76
|
5d27b8491f
|
refactor: 使用 domain 模型替代 Table() 查询映射表
- 将 r.db.Table("product_mappings") 改为 r.db.Model(&mappingdomain.Mapping{})
- 将 r.db.Table("sku_mappings") 改为 r.db.Model(&mappingdomain.SKUMapping{})
- 测试代码使用 domain 模型而非重复定义结构体
- 移除测试文件中未使用的 time 导入
|
2026-09-15 23:37:54 +08:00 |
|
dujiao-next
|
47eda40374
|
Merge remote-tracking branch 'github/main'
|
2026-09-15 22:19:04 +08:00 |
|
dujiao-next
|
19654a3849
|
feat(router): 支付回调、上游回调、渠道 API、礼品卡兑换增加限流
|
2026-09-15 22:17:40 +08:00 |
|
dujiao-next
|
8d73eb723b
|
fix(downstream): 回调客户端只连接公网地址且不跟随重定向
|
2026-09-15 22:17:40 +08:00 |
|