package model type Midjourney struct { Id int `json:"id"` Code int `json:"code"` UserId int `json:"user_id" gorm:"index"` Action string `json:"action"` MjId string `json:"mj_id" gorm:"index"` Prompt string `json:"prompt"` PromptEn string `json:"prompt_en"` Description string `json:"description"` State string `json:"state"` SubmitTime int64 `json:"submit_time"` StartTime int64 `json:"start_time"` FinishTime int64 `json:"finish_time"` ImageUrl string `json:"image_url"` Status string `json:"status"` Progress string `json:"progress"` FailReason string `json:"fail_reason"` ChannelId int `json:"channel_id"` } // TaskQueryParams 用于包含所有搜索条件的结构体,可以根据需求添加更多字段 type TaskQueryParams struct { ChannelID string MjID string StartTimestamp string EndTimestamp string } func GetAllUserTask(userId int, startIdx int, num int, queryParams TaskQueryParams) []*Midjourney { var tasks []*Midjourney var err error // 初始化查询构建器 query := DB.Where("user_id = ?", userId) if queryParams.MjID != "" { query = query.Where("mj_id = ?", queryParams.MjID) } if queryParams.StartTimestamp != "" { // 假设您已将前端传来的时间戳转换为数据库所需的时间格式,并处理了时间戳的验证和解析 query = query.Where("submit_time >= ?", queryParams.StartTimestamp) } if queryParams.EndTimestamp != "" { query = query.Where("submit_time <= ?", queryParams.EndTimestamp) } // 获取数据 err = query.Order("id desc").Limit(num).Offset(startIdx).Find(&tasks).Error if err != nil { return nil } return tasks } func GetAllTasks(startIdx int, num int, queryParams TaskQueryParams) []*Midjourney { var tasks []*Midjourney var err error // 初始化查询构建器 query := DB // 添加过滤条件 if queryParams.ChannelID != "" { query = query.Where("channel_id = ?", queryParams.ChannelID) } if queryParams.MjID != "" { query = query.Where("mj_id = ?", queryParams.MjID) } if queryParams.StartTimestamp != "" { query = query.Where("submit_time >= ?", queryParams.StartTimestamp) } if queryParams.EndTimestamp != "" { query = query.Where("submit_time <= ?", queryParams.EndTimestamp) } // 获取数据 err = query.Order("id desc").Limit(num).Offset(startIdx).Find(&tasks).Error if err != nil { return nil } return tasks } func GetAllUnFinishTasks() []*Midjourney { var tasks []*Midjourney var err error // get all tasks progress is not 100% err = DB.Where("progress != ?", "100%").Find(&tasks).Error if err != nil { return nil } return tasks } func GetByMJId(mjId string) *Midjourney { var mj *Midjourney var err error err = DB.Where("mj_id = ?", mjId).First(&mj).Error if err != nil { return nil } return mj } func GetMjByuId(id int) *Midjourney { var mj *Midjourney var err error err = DB.Where("id = ?", id).First(&mj).Error if err != nil { return nil } return mj } func UpdateProgress(id int, progress string) error { return DB.Model(&Midjourney{}).Where("id = ?", id).Update("progress", progress).Error } func (midjourney *Midjourney) Insert() error { var err error err = DB.Create(midjourney).Error return err } func (midjourney *Midjourney) Update() error { var err error err = DB.Save(midjourney).Error return err }