diff --git a/internal/api/v1/cp_task_res.go b/internal/api/v1/cp_task_res.go index 997ed2e..77ee5e5 100644 --- a/internal/api/v1/cp_task_res.go +++ b/internal/api/v1/cp_task_res.go @@ -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 首页概览数据(新版) diff --git a/internal/api/v1/cptask_req.go b/internal/api/v1/cptask_req.go index 84d4fc7..11d752d 100644 --- a/internal/api/v1/cptask_req.go +++ b/internal/api/v1/cptask_req.go @@ -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"` } diff --git a/internal/service/cpdaily/cptask.go b/internal/service/cpdaily/cptask.go index 7c752c3..19d93cb 100644 --- a/internal/service/cpdaily/cptask.go +++ b/internal/service/cpdaily/cptask.go @@ -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