fix: docs docker depoly desc

This commit is contained in:
Your Name
2026-01-07 15:34:19 +08:00
parent 7da321e8e6
commit 8c7390e5f8
3 changed files with 101 additions and 32 deletions
+6
View File
@@ -53,6 +53,10 @@ docker-compose up -d
### 使用 MySQL
::: warning 重要
使用 MySQL 时必须指定 `DB_TYPE=mysql` 环境变量,否则会默认使用 SQLite。
:::
创建 `docker-compose.yml`
```yaml
@@ -68,6 +72,7 @@ services:
ports:
- "8000:8000"
environment:
- DB_TYPE=mysql
- MYSQL_HOST=192.168.64.133
- MYSQL_PORT=3308
- MYSQL_USER=root
@@ -134,6 +139,7 @@ services:
ports:
- "8000:8000"
environment:
- DB_TYPE=mysql
- MYSQL_HOST=mysql
- MYSQL_PORT=3306
- MYSQL_USER=root
+6
View File
@@ -114,10 +114,15 @@ docker run -d \
### 使用 MySQL
::: warning 重要
使用 MySQL 时必须指定 `DB_TYPE=mysql` 环境变量,否则会默认使用 SQLite。
:::
```bash
# 正式运行(GHCR 镜像,推荐)
docker run -d \
-p 8000:8000 \
-e DB_TYPE=mysql \
-e MYSQL_HOST=192.168.64.133 \
-e MYSQL_PORT=3308 \
-e MYSQL_USER=root \
@@ -130,6 +135,7 @@ docker run -d \
# 或使用 Docker Hub 镜像
docker run -d \
-p 8000:8000 \
-e DB_TYPE=mysql \
-e MYSQL_HOST=192.168.64.133 \
-e MYSQL_PORT=3308 \
-e MYSQL_USER=root \
+76 -19
View File
@@ -354,56 +354,108 @@ func GetChannelStatisticData() (ChannelStatisticData, error) {
insTable := GetSchema(SendTasksIns{})
waysTable := GetSchema(SendWays{})
// 第一步:从 send_stats 表统计每个任务的执行次数
// 第一步:从 send_stats 表统计每个任务的执行次数(按任务类型分组)
var taskStats []struct {
TaskID string
TaskType string
Num int64
}
db.
err := db.
Table(statsTable).
Select("task_id, SUM(num) AS num").
Where("task_id != ''"). // 排除全局统计
Group("task_id").
Scan(&taskStats)
Select("task_id, task_type, SUM(num) AS num").
Where("task_id != '' AND task_id IS NOT NULL"). // 排除全局统计和空值
Group("task_id, task_type").
Scan(&taskStats).Error
if err != nil {
fmt.Printf("[DEBUG] 查询 send_stats 表失败: %v\n", err)
return statistic, err
}
fmt.Printf("[DEBUG] send_stats 查询结果: %+v\n", taskStats)
// 如果没有任务统计数据,返回空数组而不是 nil
if len(taskStats) == 0 {
statistic.WayCateData = wayCateData
fmt.Println("[DEBUG] send_stats 表中没有任务统计数据")
statistic.WayCateData = []WayCateData{}
return statistic, nil
}
// 第二步:收集所有任务ID
taskIDs := make([]string, 0, len(taskStats))
taskNumMap := make(map[string]int64)
// 第二步:分别收集任务ID和模板ID
taskIDs := make([]string, 0)
templateIDs := make([]string, 0)
taskNumMap := make(map[string]int64) // key: task_id 或 template_id
for _, stat := range taskStats {
if stat.TaskType == "template" {
templateIDs = append(templateIDs, stat.TaskID)
} else {
taskIDs = append(taskIDs, stat.TaskID)
}
taskNumMap[stat.TaskID] = stat.Num
}
// 第三步:查询这些任务关联的渠道信息
fmt.Printf("[DEBUG] 任务IDs: %+v, 模板IDs: %+v\n", taskIDs, templateIDs)
// 第三步:查询渠道信息(分别查询任务和模板)
wayCountMap := make(map[string]int64)
// 查询任务关联的渠道
if len(taskIDs) > 0 {
var taskWays []struct {
TaskID string
WayID string
WayName string
}
db.
err = db.
Table(insTable).
Select(fmt.Sprintf("%s.task_id, %s.way_id, %s.name as way_name", insTable, insTable, waysTable)).
Select(fmt.Sprintf("%s.task_id, %s.name as way_name", insTable, waysTable)).
Joins(fmt.Sprintf("JOIN %s ON %s.way_id = %s.id", waysTable, insTable, waysTable)).
Where(fmt.Sprintf("%s.task_id IN ?", insTable), taskIDs).
Group(fmt.Sprintf("%s.task_id, %s.way_id, %s.name", insTable, insTable, waysTable)).
Scan(&taskWays)
Scan(&taskWays).Error
// 第四步:按渠道聚合统计
wayCountMap := make(map[string]int64)
if err != nil {
fmt.Printf("[DEBUG] 查询任务渠道关联失败: %v\n", err)
} else {
fmt.Printf("[DEBUG] 任务渠道关联查询结果: %+v\n", taskWays)
for _, tw := range taskWays {
if num, exists := taskNumMap[tw.TaskID]; exists {
wayCountMap[tw.WayName] += num
}
}
}
}
// 第五步:转换为返回格式
// 查询模板关联的渠道
if len(templateIDs) > 0 {
var templateWays []struct {
TemplateID string
WayName string
}
err = db.
Table(insTable).
Select(fmt.Sprintf("%s.template_id, %s.name as way_name", insTable, waysTable)).
Joins(fmt.Sprintf("JOIN %s ON %s.way_id = %s.id", waysTable, insTable, waysTable)).
Where(fmt.Sprintf("%s.template_id IN ?", insTable), templateIDs).
Scan(&templateWays).Error
if err != nil {
fmt.Printf("[DEBUG] 查询模板渠道关联失败: %v\n", err)
} else {
fmt.Printf("[DEBUG] 模板渠道关联查询结果: %+v\n", templateWays)
for _, tw := range templateWays {
if num, exists := taskNumMap[tw.TemplateID]; exists {
wayCountMap[tw.WayName] += num
}
}
}
}
fmt.Printf("[DEBUG] 渠道统计结果: %+v\n", wayCountMap)
// 第四步:转换为返回格式
for wayName, count := range wayCountMap {
wayCateData = append(wayCateData, WayCateData{
WayName: wayName,
@@ -411,6 +463,11 @@ func GetChannelStatisticData() (ChannelStatisticData, error) {
})
}
// 确保返回空数组而不是 nil
if len(wayCateData) == 0 {
wayCateData = []WayCateData{}
}
statistic.WayCateData = wayCateData
return statistic, nil
}