midjourney.go 3.5 KB

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