✨ 后端支持统计返回任务ID + 列表按ID筛选
1. TaskStatisticsV2Item 新增 successTaskIds/failTaskIds/pendingTaskIds 字段 2. GetTaskStatisticsV2 返回每日对应的任务ID列表 3. CpTaskListReq 新增 ids 参数,List 方法支持按ID列表筛选
This commit is contained in:
@@ -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 首页概览数据(新版)
|
||||
|
||||
@@ -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"`
|
||||
}
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user