|
|
abc9864d46
|
fix: 单订阅模式下避免重复创建订阅
Build docker and publish / build (20.15.1) (push) Successful in 7m31s
1. FindSingleModeAnchorSubscribe 补充 status=4(流量耗完)到查询范围,
避免流量耗尽的订阅被忽略导致续费时新建订阅
2. activateOrderLogic NewPurchase 路径去掉套餐ID匹配检查,
单订阅模式下无论购买何种套餐都更新现有订阅而非新建
3. singleModeHelper fallback 查询同步补充 status=4
Co-Authored-By: claude-flow <ruv@ruv.net>
|
2026-03-31 05:13:00 -07:00 |
|
|
|
fd48afd0ab
|
x
Build docker and publish / build (20.15.1) (push) Successful in 7m10s
|
2026-03-31 03:44:41 -07:00 |
|
|
|
e3cd0643e1
|
fix: IAP续费双重叠加订阅天数
Build docker and publish / build (20.15.1) (push) Successful in 7m43s
早返回路径(existTx!=nil)中的 existSub/orderLinkedSub/singleModeAnchorSub
分支同时调用 extendSubscribeForIAP 更新 expire_time,又通过
syncOrderStatusAndEnqueue(iapExpireAt=0) 入队,导致激活队列再次叠加天数。
修复:移除早返回路径中的 extendSubscribeForIAP 直接写入,改为传入
exp.Unix() 给 syncOrderStatusAndEnqueue,由激活队列的
updateSubscriptionWithIAPExpire 统一处理,前端返回 calcIAPRenewalExpire
估算值,与事务路径行为一致。
Co-Authored-By: claude-flow <ruv@ruv.net>
|
2026-03-31 02:54:52 -07:00 |
|
|
|
6724e341b8
|
Merge branch 'internal'
Build docker and publish / build (20.15.1) (push) Successful in 7m24s
# Conflicts:
# internal/logic/public/order/getDiscount.go
# queue/logic/order/activateOrderLogic.go
|
2026-03-31 00:48:05 -07:00 |
|
|
|
202c1c18d7
|
fix: 修复同 quantity 存在新用户和普通折扣档时老用户无法下单的问题
Build docker and publish / build (20.15.1) (push) Successful in 7m34s
isNewUserOnlyForQuantity 原逻辑取第一条匹配记录即返回,
当同一 quantity 同时配置了 new_user_only=true 和 false 两档时,
结果依赖数组顺序,导致老用户/超24h用户触发 SubscribeNewUserOnly 错误。
修复:扫描所有同 quantity 档位,仅当存在 true 且无 false 兜底时才返回 true;
有 false 兜底则返回 false,老用户可正常购买并命中普通折扣档。
Co-Authored-By: claude-flow <ruv@ruv.net>
|
2026-03-30 22:30:12 -07:00 |
|
|
|
e0b2be2058
|
x
Build docker and publish / build (20.15.1) (push) Successful in 7m36s
|
2026-03-30 21:05:21 -07:00 |
|
|
|
d351d9e436
|
x
Build docker and publish / build (20.15.1) (push) Successful in 7m23s
|
2026-03-30 07:41:21 -07:00 |
|
|
|
d072217e85
|
x
|
2026-03-30 07:40:42 -07:00 |
|
|
|
2a9c01ff8b
|
x
Build docker and publish / build (20.15.1) (push) Successful in 7m28s
|
2026-03-30 04:49:55 -07:00 |
|
|
|
df7303738a
|
bug: 无订阅情况 出现下多笔订单 支付状态乱
Build docker and publish / build (20.15.1) (push) Successful in 7m18s
|
2026-03-30 00:32:41 -07:00 |
|
|
|
a9205cc3fc
|
feat: 用户订阅显示节点分组名及限速起止时间
Build docker and publish / build (20.15.1) (push) Successful in 7m28s
- UserSubscribe/UserSubscribeDetail 新增 node_group_id/node_group_name 字段
- 管理员查询用户订阅列表批量填充分组名
- 管理员查询单个订阅详情填充分组名
- ThrottleResult/UserSubscribeDetail 新增 throttle_start/throttle_end 字段
- 限速时返回限速窗口起止时间(秒级 Unix 时间戳)
Co-Authored-By: claude-flow <ruv@ruv.net>
|
2026-03-29 10:07:17 -07:00 |
|
|
|
1dbc3a81e9
|
fix: 老版本客户端去掉每个套餐 discount 最后一个,而非整个套餐
|
2026-03-29 03:19:15 -07:00 |
|
|
|
3b4e882965
|
feat: 根据 X-App-Id 判断是否裁剪套餐列表,老版客户端去掉最后一个
Build docker and publish / build (20.15.1) (push) Successful in 7m37s
|
2026-03-28 23:21:00 -07:00 |
|
|
|
26c9ff2f0f
|
x
Build docker and publish / build (20.15.1) (push) Successful in 8m31s
|
2026-03-28 22:57:19 -07:00 |
|
|
|
aaacb47dad
|
x
Build docker and publish / build (20.15.1) (push) Failing after 7m51s
|
2026-03-28 22:44:22 -07:00 |
|
|
|
eb414749c3
|
fix: apiversion.UseLatest 阈值判断改为 >= 避免误判新版本为老版本
Build docker and publish / build (20.15.1) (push) Successful in 8m26s
原 compare > 0 要求严格大于阈值,导致 header=1.0.0 被判为老版本,
去掉最后一个套餐后列表为空。改为 >= 0,有 header 且版本 >= 阈值均视为新版本。
Co-Authored-By: claude-flow <ruv@ruv.net>
|
2026-03-28 20:42:57 -07:00 |
|
|
|
1a08949c80
|
fix: 流量触发限速后主动清除节点用户缓存
节点用户列表缓存(server:user:{id})永不过期,用户流量超限触发按量限速后
缓存中仍是旧的速度值,节点不会感知限速状态。
修复:每次写入 traffic_log 后,检查该订阅是否触发按量限速规则,
若 IsThrottled=true 则立即删除对应节点的用户列表缓存,
节点下次拉取时重新计算并应用降速后的 speed_limit。
Co-Authored-By: claude-flow <ruv@ruv.net>
|
2026-03-28 18:36:13 -07:00 |
|
|
|
0f28f4995f
|
fix: 修复在线设备列表无数据问题
user_device 表的 subscribe_id 字段从未在插入时写入(始终为 NULL),
导致 QueryDevicePageList 的 WHERE 条件 `subscribe_id = ?` 永远匹配不到记录。
移除 subscribe_id 过滤,改为只按 user_id 查询。
Co-Authored-By: claude-flow <ruv@ruv.net>
|
2026-03-28 18:23:18 -07:00 |
|
|
|
8398865bd3
|
fix: SingleModel 下首购 isNew 判断错误导致佣金不发
SingleModel 模式下,用户首次购买会被路由成 orderType=2(续费),
导致 isNew 判断逻辑跳过,始终为 false,激活时 shouldProcessCommission
误判为非首购,佣金不发给邀请人。
修复:去除 isNew 查询对 orderType==1 的依赖,始终通过
IsUserEligibleForNewOrder 判断用户是否有历史完成订单。
Co-Authored-By: claude-flow <ruv@ruv.net>
|
2026-03-28 11:28:02 -07:00 |
|
|
|
6f6943f295
|
api-header
Build docker and publish / build (20.15.1) (push) Successful in 8m23s
|
2026-03-28 10:05:32 -07:00 |
|
|
|
507ee16a30
|
x
Build docker and publish / build (20.15.1) (push) Successful in 8m20s
|
2026-03-28 09:06:24 -07:00 |
|
|
|
2db2bc0860
|
feat: 限速状态可视化 - 后台订阅详情展示实际限速与降速状态
Build docker and publish / build (20.15.1) (push) Successful in 8m7s
- 新增 pkg/speedlimit/calculator.go 公共限速计算函数
- UserSubscribeDetail 响应新增 effective_speed/is_throttled/throttle_rule 字段
- GetUserSubscribeById 接口查询时实时计算并返回限速状态
- 重构 getServerUserListLogic 的 calculateEffectiveSpeedLimit,改用共享函数
Co-Authored-By: claude-flow <ruv@ruv.net>
|
2026-03-28 08:14:07 -07:00 |
|
|
|
2bdda7558c
|
fix: JSON_CONTAINS node_group_ids 参数需用引号包裹
Build docker and publish / build (20.15.1) (push) Successful in 8m25s
JSON_CONTAINS 第二参数必须是 JSON 字符串,裸数字会报 Error 3146。
修复:%d → '%d'
Co-Authored-By: claude-flow <ruv@ruv.net>
|
2026-03-27 07:22:39 -07:00 |
|
|
|
89e0c03fec
|
fix: 统一限速单位为 Mbps,与 ppanel-node 节点端对齐
Build docker and publish / build (20.15.1) (push) Successful in 8m1s
ppanel-node limiter.go 将 speed_limit 视为 Mbps(× 1000000 / 8 → Bytes/s),
但后端之前存储的是 Bytes(前端 mbToBits 转换),导致节点收到天文数字等于不限速。
- 回滚 traffic_limit KB→Bytes 转换,统一用 Mbps 直接比较
- 部署后需执行数据迁移:UPDATE subscribe SET speed_limit = speed_limit / 1048576 WHERE speed_limit > 0
Co-Authored-By: claude-flow <ruv@ruv.net>
|
2026-03-27 02:46:25 -07:00 |
|
|
|
315c59e5b7
|
fix: traffic_limit 限速值 KB→Bytes 转换,修复与基础限速单位不一致
Build docker and publish / build (20.15.1) (push) Successful in 7m56s
traffic_limit 的 speed_limit 前端输入单位是 KB,
订阅基础 speed_limit 存储单位是 Bytes,
比较和返回前需要 ×1024 转换为 Bytes,否则限速值异常偏低。
Co-Authored-By: claude-flow <ruv@ruv.net>
|
2026-03-27 02:30:06 -07:00 |
|
|
|
cee97ae630
|
fix: /v1/common/log/report 跳过签名验证
Build docker and publish / build (20.15.1) (push) Successful in 8m7s
Co-Authored-By: claude-flow <ruv@ruv.net>
|
2026-03-27 00:05:43 -07:00 |
|
|
|
e5c8e965af
|
fix: 设备组详情补充 auth_type/device_type 字段,统一用户名显示
Build docker and publish / build (20.15.1) (push) Successful in 8m15s
- FamilyMemberItem 新增 auth_type、device_type 字段
- FamilySummary 新增 owner_auth_type 字段
- findUserIdentifiers 返回 identifierInfo(含 auth_type)
- 新增 parseDeviceType() 从 UserAgent 解析设备类型
Co-Authored-By: claude-flow <ruv@ruv.net>
|
2026-03-26 21:30:51 -07:00 |
|
|
|
c431393266
|
fix: 折扣匹配改为精确匹配 quantity,不再取全局最小值
Build docker and publish / build (20.15.1) (push) Successful in 7m44s
将 getDiscount 和 isNewUserOnlyForQuantity 的匹配逻辑从
inputMonths >= discount.Quantity 改为 inputMonths == discount.Quantity,
买多少天就用多少天对应的折扣,避免错误配置导致折扣泄漏。
同时增加 discount 值合法性校验(>0 且 <100)。
Co-Authored-By: claude-flow <ruv@ruv.net>
|
2026-03-26 04:18:45 -07:00 |
|
|
|
4a2501a3d1
|
fix: 折扣匹配改为精确匹配 quantity,不再取全局最小值
Build docker and publish / build (20.15.1) (push) Successful in 7m55s
将 getDiscount 和 isNewUserOnlyForQuantity 的匹配逻辑从
inputMonths >= discount.Quantity 改为 inputMonths == discount.Quantity,
买多少天就用多少天对应的折扣,避免错误配置导致折扣泄漏。
同时增加 discount 值合法性校验(>0 且 <100)。
Co-Authored-By: claude-flow <ruv@ruv.net>
|
2026-03-26 01:28:50 -07:00 |
|
|
|
774fce6147
|
fix: 预览节点只显示用户实际所在分组的节点,不再包含公共节点
Build docker and publish / build (20.15.1) (push) Successful in 7m48s
|
2026-03-25 23:15:48 -07:00 |
|
|
|
d63b943964
|
fix: 修复订阅更新 group_locked 不能为 null 问题 + Kutt 短链3次重试
Build docker and publish / build (20.15.1) (push) Successful in 7m46s
- updateUserSubscribeLogic: 更新订阅时补充 GroupLocked 字段,避免写入 NULL 触发数据库约束错误
- inviteLinkResolver: generateShortLinkWithTimeout 增加最多3次重试,防止网络波动导致短链生成失败
Co-Authored-By: claude-flow <ruv@ruv.net>
|
2026-03-25 22:36:34 -07:00 |
|
|
|
b43dcd8dab
|
merge: 同步 origin/master 新功能到定制版本
Build docker and publish / build (20.15.1) (push) Successful in 8m8s
|
2026-03-24 01:03:56 -07:00 |
|
|
|
95830eae8a
|
fix: 流量分组查询条件改为仅判断 max_traffic_gb > 0
|
2026-03-24 01:03:29 -07:00 |
|
|
|
62b8c67261
|
Merge fix/api-sync-handlers into internal
Build docker and publish / build (20.15.1) (push) Successful in 8m46s
- JSON_CONTAINS 参数类型修复(node_group_ids IS NOT NULL 兼容)
- API sync 改动
|
2026-03-23 06:58:36 -07:00 |
|
|
|
f111b36389
|
fix: JSON_CONTAINS 参数类型修复 + API sync
- 修复 JSON_CONTAINS(node_group_ids, int64) 类型错误,改为传 JSON 字符串
- 添加 node_group_ids IS NOT NULL 兼容判断,防止 NULL 列报错
- 同步 apis/ 及 routes.go、compat_types.go 改动
Co-Authored-By: claude-flow <ruv@ruv.net>
|
2026-03-23 06:58:28 -07:00 |
|
EUForest
|
7fe7243c24
|
feat: Add slider verification code
|
2026-03-23 02:42:12 +08:00 |
|
|
|
f703b5089a
|
分组概念
Build docker and publish / build (20.15.1) (push) Successful in 7m58s
|
2026-03-19 03:21:47 -07:00 |
|
|
|
e5e9f93f68
|
Merge remote-tracking branch 'origin/master' into internal
|
2026-03-19 01:55:01 -07:00 |
|
|
|
5898b74647
|
internal
Build docker and publish / build (20.15.1) (push) Has been cancelled
|
2026-03-19 01:51:18 -07:00 |
|
|
|
de6fbcb518
|
device_no
Build docker and publish / build (20.15.1) (push) Successful in 7m22s
|
2026-03-18 10:28:55 -07:00 |
|
|
|
1e12c58986
|
tg
Build docker and publish / build (20.15.1) (push) Successful in 7m22s
|
2026-03-18 03:52:26 -07:00 |
|
|
|
fdfadca57f
|
赠送逻辑
Build docker and publish / build (20.15.1) (push) Successful in 6m57s
|
2026-03-18 02:04:34 -07:00 |
|
|
|
50f6995d60
|
redis
Build docker and publish / build (20.15.1) (push) Successful in 7m33s
|
2026-03-18 00:53:35 -07:00 |
|
EUForest
|
bc721b0ba6
|
update: Adding interference to CAPTCHA
|
2026-03-18 12:45:09 +08:00 |
|
|
|
282e1e4087
|
deviceno
Build docker and publish / build (20.15.1) (push) Successful in 7m26s
|
2026-03-17 09:12:56 -07:00 |
|
|
|
4b528184ea
|
devicd_no
Build docker and publish / build (20.15.1) (push) Successful in 7m58s
|
2026-03-17 08:37:36 -07:00 |
|
|
|
dcdbabdb13
|
注销
Build docker and publish / build (20.15.1) (push) Successful in 7m34s
|
2026-03-17 07:12:42 -07:00 |
|
|
|
3cd22d8538
|
x
Build docker and publish / build (20.15.1) (push) Successful in 8m3s
|
2026-03-16 00:59:49 -07:00 |
|
|
|
1d2f2a594a
|
feat: 增强用户搜索功能,支持通过设备ID哈希进行查找。
Build docker and publish / build (20.15.1) (push) Successful in 8m42s
|
2026-03-15 22:02:23 -07:00 |
|
|
|
79a1eeca1f
|
feat: 自动生成并更新用户缺失的推荐码
Build docker and publish / build (20.15.1) (push) Successful in 7m33s
|
2026-03-15 19:43:53 -07:00 |
|