midjourney.go 4.1 KB

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