midjourney.go 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168
  1. package model
  2. type Midjourney struct {
  3. Id int `json:"id"`
  4. Code int `json:"code"`
  5. UserId int `json:"user_id" gorm:"index"`
  6. Action string `json:"action" gorm:"type:varchar(40);index"`
  7. MjId string `json:"mj_id" gorm:"index"`
  8. Prompt string `json:"prompt"`
  9. PromptEn string `json:"prompt_en"`
  10. Description string `json:"description"`
  11. State string `json:"state"`
  12. SubmitTime int64 `json:"submit_time" gorm:"index"`
  13. StartTime int64 `json:"start_time" gorm:"index"`
  14. FinishTime int64 `json:"finish_time" gorm:"index"`
  15. ImageUrl string `json:"image_url"`
  16. Status string `json:"status" gorm:"type:varchar(20);index"`
  17. Progress string `json:"progress" gorm:"type:varchar(30);index"`
  18. FailReason string `json:"fail_reason"`
  19. ChannelId int `json:"channel_id"`
  20. Quota int `json:"quota"`
  21. Buttons string `json:"buttons"`
  22. Properties string `json:"properties"`
  23. }
  24. // TaskQueryParams 用于包含所有搜索条件的结构体,可以根据需求添加更多字段
  25. type TaskQueryParams struct {
  26. ChannelID string
  27. MjID string
  28. StartTimestamp string
  29. EndTimestamp string
  30. }
  31. func GetAllUserTask(userId int, startIdx int, num int, queryParams TaskQueryParams) []*Midjourney {
  32. var tasks []*Midjourney
  33. var err error
  34. // 初始化查询构建器
  35. query := DB.Where("user_id = ?", userId)
  36. if queryParams.MjID != "" {
  37. query = query.Where("mj_id = ?", queryParams.MjID)
  38. }
  39. if queryParams.StartTimestamp != "" {
  40. // 假设您已将前端传来的时间戳转换为数据库所需的时间格式,并处理了时间戳的验证和解析
  41. query = query.Where("submit_time >= ?", queryParams.StartTimestamp)
  42. }
  43. if queryParams.EndTimestamp != "" {
  44. query = query.Where("submit_time <= ?", queryParams.EndTimestamp)
  45. }
  46. // 获取数据
  47. err = query.Order("id desc").Limit(num).Offset(startIdx).Find(&tasks).Error
  48. if err != nil {
  49. return nil
  50. }
  51. return tasks
  52. }
  53. func GetAllTasks(startIdx int, num int, queryParams TaskQueryParams) []*Midjourney {
  54. var tasks []*Midjourney
  55. var err error
  56. // 初始化查询构建器
  57. query := DB
  58. // 添加过滤条件
  59. if queryParams.ChannelID != "" {
  60. query = query.Where("channel_id = ?", queryParams.ChannelID)
  61. }
  62. if queryParams.MjID != "" {
  63. query = query.Where("mj_id = ?", queryParams.MjID)
  64. }
  65. if queryParams.StartTimestamp != "" {
  66. query = query.Where("submit_time >= ?", queryParams.StartTimestamp)
  67. }
  68. if queryParams.EndTimestamp != "" {
  69. query = query.Where("submit_time <= ?", queryParams.EndTimestamp)
  70. }
  71. // 获取数据
  72. err = query.Order("id desc").Limit(num).Offset(startIdx).Find(&tasks).Error
  73. if err != nil {
  74. return nil
  75. }
  76. return tasks
  77. }
  78. func GetAllUnFinishTasks() []*Midjourney {
  79. var tasks []*Midjourney
  80. var err error
  81. // get all tasks progress is not 100%
  82. err = DB.Where("progress != ?", "100%").Find(&tasks).Error
  83. if err != nil {
  84. return nil
  85. }
  86. return tasks
  87. }
  88. func GetByOnlyMJId(mjId string) *Midjourney {
  89. var mj *Midjourney
  90. var err error
  91. err = DB.Where("mj_id = ?", mjId).First(&mj).Error
  92. if err != nil {
  93. return nil
  94. }
  95. return mj
  96. }
  97. func GetByMJId(userId int, mjId string) *Midjourney {
  98. var mj *Midjourney
  99. var err error
  100. err = DB.Where("user_id = ? and mj_id = ?", userId, mjId).First(&mj).Error
  101. if err != nil {
  102. return nil
  103. }
  104. return mj
  105. }
  106. func GetByMJIds(userId int, mjIds []string) []*Midjourney {
  107. var mj []*Midjourney
  108. var err error
  109. err = DB.Where("user_id = ? and mj_id in (?)", userId, mjIds).Find(&mj).Error
  110. if err != nil {
  111. return nil
  112. }
  113. return mj
  114. }
  115. func GetMjByuId(id int) *Midjourney {
  116. var mj *Midjourney
  117. var err error
  118. err = DB.Where("id = ?", id).First(&mj).Error
  119. if err != nil {
  120. return nil
  121. }
  122. return mj
  123. }
  124. func UpdateProgress(id int, progress string) error {
  125. return DB.Model(&Midjourney{}).Where("id = ?", id).Update("progress", progress).Error
  126. }
  127. func (midjourney *Midjourney) Insert() error {
  128. var err error
  129. err = DB.Create(midjourney).Error
  130. return err
  131. }
  132. func (midjourney *Midjourney) Update() error {
  133. var err error
  134. err = DB.Save(midjourney).Error
  135. return err
  136. }
  137. func MjBulkUpdate(mjIds []string, params map[string]any) error {
  138. return DB.Model(&Midjourney{}).
  139. Where("mj_id in (?)", mjIds).
  140. Updates(params).Error
  141. }
  142. func MjBulkUpdateByTaskIds(taskIDs []int, params map[string]any) error {
  143. return DB.Model(&Midjourney{}).
  144. Where("id in (?)", taskIDs).
  145. Updates(params).Error
  146. }