feat(subscribe): add traffic limit rules and user traffic stats
- Add subscribe traffic_limit schema and migration\n- Support traffic_limit in admin create/update and list/details\n- Apply traffic_limit when building server user list speed limits\n- Add public user traffic stats API
This commit is contained in:
@@ -0,0 +1,12 @@
|
||||
-- 回滚 user_subscribe 表的过期流量字段
|
||||
ALTER TABLE `user_subscribe`
|
||||
DROP COLUMN `expired_upload`,
|
||||
DROP COLUMN `expired_download`;
|
||||
|
||||
-- 回滚 node_group 表的过期节点组字段
|
||||
ALTER TABLE `node_group`
|
||||
DROP INDEX `idx_is_expired_group`,
|
||||
DROP COLUMN `speed_limit`,
|
||||
DROP COLUMN `max_traffic_gb_expired`,
|
||||
DROP COLUMN `expired_days_limit`,
|
||||
DROP COLUMN `is_expired_group`;
|
||||
@@ -0,0 +1,14 @@
|
||||
-- 为 node_group 表添加过期节点组相关字段
|
||||
ALTER TABLE `node_group`
|
||||
ADD COLUMN `is_expired_group` tinyint(1) NOT NULL DEFAULT 0 COMMENT 'Is Expired Group: 0=normal, 1=expired group' AFTER `for_calculation`,
|
||||
ADD COLUMN `expired_days_limit` int NOT NULL DEFAULT 7 COMMENT 'Expired days limit (days)' AFTER `is_expired_group`,
|
||||
ADD COLUMN `max_traffic_gb_expired` bigint DEFAULT 0 COMMENT 'Max traffic for expired users (GB)' AFTER `expired_days_limit`,
|
||||
ADD COLUMN `speed_limit` int NOT NULL DEFAULT 0 COMMENT 'Speed limit (KB/s)' AFTER `max_traffic_gb_expired`;
|
||||
|
||||
-- 添加索引
|
||||
ALTER TABLE `node_group` ADD INDEX `idx_is_expired_group` (`is_expired_group`);
|
||||
|
||||
-- 为 user_subscribe 表添加过期流量统计字段
|
||||
ALTER TABLE `user_subscribe`
|
||||
ADD COLUMN `expired_download` bigint NOT NULL DEFAULT 0 COMMENT 'Expired period download traffic (bytes)' AFTER `upload`,
|
||||
ADD COLUMN `expired_upload` bigint NOT NULL DEFAULT 0 COMMENT 'Expired period upload traffic (bytes)' AFTER `expired_download`;
|
||||
@@ -0,0 +1,6 @@
|
||||
-- Purpose: Rollback traffic_limit rules from subscribe
|
||||
-- Author: Claude Code
|
||||
-- Date: 2026-03-12
|
||||
|
||||
-- ===== Remove traffic_limit column from subscribe table =====
|
||||
ALTER TABLE `subscribe` DROP COLUMN IF EXISTS `traffic_limit`;
|
||||
@@ -0,0 +1,22 @@
|
||||
-- Purpose: Add traffic_limit rules to subscribe
|
||||
-- Author: Claude Code
|
||||
-- Date: 2026-03-12
|
||||
|
||||
-- ===== Add traffic_limit column to subscribe table =====
|
||||
SET @column_exists = (
|
||||
SELECT COUNT(*)
|
||||
FROM INFORMATION_SCHEMA.COLUMNS
|
||||
WHERE TABLE_SCHEMA = DATABASE()
|
||||
AND TABLE_NAME = 'subscribe'
|
||||
AND COLUMN_NAME = 'traffic_limit'
|
||||
);
|
||||
|
||||
SET @sql = IF(
|
||||
@column_exists = 0,
|
||||
'ALTER TABLE `subscribe` ADD COLUMN `traffic_limit` TEXT NULL COMMENT ''Traffic Limit Rules (JSON)'' AFTER `node_group_id`',
|
||||
'SELECT ''Column traffic_limit already exists in subscribe table'''
|
||||
);
|
||||
|
||||
PREPARE stmt FROM @sql;
|
||||
EXECUTE stmt;
|
||||
DEALLOCATE PREPARE stmt;
|
||||
Reference in New Issue
Block a user