midjourney.go 4.1 KB

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