✨ 后端支持统计返回任务ID + 列表按ID筛选

1. TaskStatisticsV2Item 新增 successTaskIds/failTaskIds/pendingTaskIds 字段
2. GetTaskStatisticsV2 返回每日对应的任务ID列表
3. CpTaskListReq 新增 ids 参数,List 方法支持按ID列表筛选
This commit is contained in:
sugarBecomer
2026-04-24 12:32:54 +08:00
parent 19a13a0ad2
commit 261153067c
3 changed files with 32 additions and 10 deletions
+7 -4
View File
@@ -9,10 +9,13 @@ type TaskStatisticsItem struct {
// TaskStatisticsV2Item 每日任务统计项(新版:从日志表按任务id去重)
type TaskStatisticsV2Item struct {
Date string `json:"date"` // 日期 格式:2006-01-02
SuccessTask int `json:"successTask"` // 成功任务数(任务id去重)
FailTask int `json:"failTask"` // 失败任务数(任务id去重)
PendingTask int `json:"pendingTask"` // 待执行任务数(仅当天)
Date string `json:"date"` // 日期 格式:2006-01-02
SuccessTask int `json:"successTask"` // 成功任务数(任务id去重)
FailTask int `json:"failTask"` // 失败任务数(任务id去重)
PendingTask int `json:"pendingTask"` // 待执行任务数(仅当天)
SuccessTaskIds []int64 `json:"successTaskIds,omitempty"` // 成功任务ID列表
FailTaskIds []int64 `json:"failTaskIds,omitempty"` // 失败任务ID列表
PendingTaskIds []int64 `json:"pendingTaskIds,omitempty"` // 待执行任务ID列表(仅当天)
}
// DashboardSummary 首页概览数据(新版)
+1
View File
@@ -24,6 +24,7 @@ type CpTaskListReq struct {
TaskType cptask.TaskType `json:"type"`
Username string `json:"username"`
TaskStatus cptask.TaskStatus `json:"task_status"`
Ids string `json:"ids"`
Page int `json:"page" d:"1"`
Size int `json:"size" d:"10"`
}
+24 -6
View File
@@ -22,6 +22,8 @@ import (
"likedream-goframe/internal/framework/schedule"
"likedream-goframe/internal/service/balance"
"likedream-goframe/internal/utils"
"strconv"
"strings"
"time"
"entgo.io/ent/dialect/sql"
@@ -88,6 +90,18 @@ func (v CpTaskServiceV1) List(ctx context.Context, req *v1.CpTaskListReq) *utils
if req.TaskStatus != "" {
query.Where(cptask.TaskStatusEQ(req.TaskStatus))
}
if req.Ids != "" {
var ids []int64
for _, s := range strings.Split(req.Ids, ",") {
s = strings.TrimSpace(s)
if id, err := strconv.ParseInt(s, 10, 64); err == nil {
ids = append(ids, id)
}
}
if len(ids) > 0 {
query.Where(cptask.IDIn(ids...))
}
}
total := query.CountX(ctx)
var data []*ent.CpTask
if total > 0 {
@@ -409,14 +423,16 @@ func (v CpTaskServiceV1) GetTaskStatisticsV2(ctx context.Context, _ *v1.GetTaskS
ScanX(ctx, &failIds)
item := &v1.TaskStatisticsV2Item{
Date: dateStr,
SuccessTask: len(successIds),
FailTask: len(failIds),
Date: dateStr,
SuccessTask: len(successIds),
FailTask: len(failIds),
SuccessTaskIds: successIds,
FailTaskIds: failIds,
}
// 仅当天查待执行任务数
// 仅当天查待执行任务数及ID列表
if startOfDay.Equal(today) {
item.PendingTask = db2.Global.CpTask.Query().
pendingIds := db2.Global.CpTask.Query().
Where(
cptask.HasSysUserWith(sysuser.ID(user.ID)),
cptask.TaskStatusNEQ(cptask.TaskStatusPause),
@@ -425,7 +441,9 @@ func (v CpTaskServiceV1) GetTaskStatisticsV2(ctx context.Context, _ *v1.GetTaskS
Where(func(s *sql.Selector) {
s.Where(sql.ExprP("frequency > success_count"))
}).
CountX(ctx)
IDsX(ctx)
item.PendingTask = len(pendingIds)
item.PendingTaskIds = pendingIds
}
statistics[6-i] = item