| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207 |
- package model
- type Midjourney struct {
- Id int `json:"id"`
- Code int `json:"code"`
- UserId int `json:"user_id" gorm:"index"`
- Action string `json:"action" gorm:"type:varchar(40);index"`
- 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" gorm:"index"`
- StartTime int64 `json:"start_time" gorm:"index"`
- FinishTime int64 `json:"finish_time" gorm:"index"`
- ImageUrl string `json:"image_url"`
- VideoUrl string `json:"video_url"`
- VideoUrls string `json:"video_urls"`
- Status string `json:"status" gorm:"type:varchar(20);index"`
- Progress string `json:"progress" gorm:"type:varchar(30);index"`
- FailReason string `json:"fail_reason"`
- ChannelId int `json:"channel_id"`
- Quota int `json:"quota"`
- Buttons string `json:"buttons"`
- Properties string `json:"properties"`
- }
- // 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 GetByOnlyMJId(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 GetByMJId(userId int, mjId string) *Midjourney {
- var mj *Midjourney
- var err error
- err = DB.Where("user_id = ? and mj_id = ?", userId, mjId).First(&mj).Error
- if err != nil {
- return nil
- }
- return mj
- }
- func GetByMJIds(userId int, mjIds []string) []*Midjourney {
- var mj []*Midjourney
- var err error
- err = DB.Where("user_id = ? and mj_id in (?)", userId, mjIds).Find(&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
- }
- func MjBulkUpdate(mjIds []string, params map[string]any) error {
- return DB.Model(&Midjourney{}).
- Where("mj_id in (?)", mjIds).
- Updates(params).Error
- }
- func MjBulkUpdateByTaskIds(taskIDs []int, params map[string]any) error {
- return DB.Model(&Midjourney{}).
- Where("id in (?)", taskIDs).
- Updates(params).Error
- }
- // CountAllTasks returns total midjourney tasks for admin query
- func CountAllTasks(queryParams TaskQueryParams) int64 {
- var total int64
- query := DB.Model(&Midjourney{})
- 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)
- }
- _ = query.Count(&total).Error
- return total
- }
- // CountAllUserTask returns total midjourney tasks for user
- func CountAllUserTask(userId int, queryParams TaskQueryParams) int64 {
- var total int64
- query := DB.Model(&Midjourney{}).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)
- }
- _ = query.Count(&total).Error
- return total
- }
|