| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394 |
- 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
- }
|