Spaces:
Runtime error
Runtime error
| package controller | |
| import ( | |
| "strconv" | |
| "github.com/QuantumNous/new-api/common" | |
| "github.com/QuantumNous/new-api/constant" | |
| "github.com/QuantumNous/new-api/dto" | |
| "github.com/QuantumNous/new-api/model" | |
| "github.com/QuantumNous/new-api/relay" | |
| "github.com/QuantumNous/new-api/service" | |
| "github.com/QuantumNous/new-api/types" | |
| "github.com/gin-gonic/gin" | |
| ) | |
| // UpdateTaskBulk 薄入口,实际轮询逻辑在 service 层 | |
| func UpdateTaskBulk() { | |
| service.TaskPollingLoop() | |
| } | |
| func GetAllTask(c *gin.Context) { | |
| pageInfo := common.GetPageQuery(c) | |
| startTimestamp, _ := strconv.ParseInt(c.Query("start_timestamp"), 10, 64) | |
| endTimestamp, _ := strconv.ParseInt(c.Query("end_timestamp"), 10, 64) | |
| // 解析其他查询参数 | |
| queryParams := model.SyncTaskQueryParams{ | |
| Platform: constant.TaskPlatform(c.Query("platform")), | |
| TaskID: c.Query("task_id"), | |
| Status: c.Query("status"), | |
| Action: c.Query("action"), | |
| StartTimestamp: startTimestamp, | |
| EndTimestamp: endTimestamp, | |
| ChannelID: c.Query("channel_id"), | |
| } | |
| items := model.TaskGetAllTasks(pageInfo.GetStartIdx(), pageInfo.GetPageSize(), queryParams) | |
| total := model.TaskCountAllTasks(queryParams) | |
| pageInfo.SetTotal(int(total)) | |
| pageInfo.SetItems(tasksToDto(items, true)) | |
| common.ApiSuccess(c, pageInfo) | |
| } | |
| func GetUserTask(c *gin.Context) { | |
| pageInfo := common.GetPageQuery(c) | |
| userId := c.GetInt("id") | |
| startTimestamp, _ := strconv.ParseInt(c.Query("start_timestamp"), 10, 64) | |
| endTimestamp, _ := strconv.ParseInt(c.Query("end_timestamp"), 10, 64) | |
| queryParams := model.SyncTaskQueryParams{ | |
| Platform: constant.TaskPlatform(c.Query("platform")), | |
| TaskID: c.Query("task_id"), | |
| Status: c.Query("status"), | |
| Action: c.Query("action"), | |
| StartTimestamp: startTimestamp, | |
| EndTimestamp: endTimestamp, | |
| } | |
| items := model.TaskGetAllUserTask(userId, pageInfo.GetStartIdx(), pageInfo.GetPageSize(), queryParams) | |
| total := model.TaskCountAllUserTask(userId, queryParams) | |
| pageInfo.SetTotal(int(total)) | |
| pageInfo.SetItems(tasksToDto(items, false)) | |
| common.ApiSuccess(c, pageInfo) | |
| } | |
| func tasksToDto(tasks []*model.Task, fillUser bool) []*dto.TaskDto { | |
| var userIdMap map[int]*model.UserBase | |
| if fillUser { | |
| userIdMap = make(map[int]*model.UserBase) | |
| userIds := types.NewSet[int]() | |
| for _, task := range tasks { | |
| userIds.Add(task.UserId) | |
| } | |
| for _, userId := range userIds.Items() { | |
| cacheUser, err := model.GetUserCache(userId) | |
| if err == nil { | |
| userIdMap[userId] = cacheUser | |
| } | |
| } | |
| } | |
| result := make([]*dto.TaskDto, len(tasks)) | |
| for i, task := range tasks { | |
| if fillUser { | |
| if user, ok := userIdMap[task.UserId]; ok { | |
| task.Username = user.Username | |
| } | |
| } | |
| result[i] = relay.TaskModel2Dto(task) | |
| } | |
| return result | |
| } | |