mirror of
https://github.com/yangjian102621/geekai.git
synced 2025-09-17 16:56:38 +08:00
175 lines
4.8 KiB
Go
175 lines
4.8 KiB
Go
package admin
|
|
|
|
// * +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
|
// * Copyright 2023 The Geek-AI Authors. All rights reserved.
|
|
// * Use of this source code is governed by a Apache-2.0 license
|
|
// * that can be found in the LICENSE file.
|
|
// * @Author yangjian102621@163.com
|
|
// * +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
|
|
|
import (
|
|
"geekai/core"
|
|
"geekai/core/types"
|
|
"geekai/handler"
|
|
"geekai/store/model"
|
|
"geekai/store/vo"
|
|
"geekai/utils"
|
|
"geekai/utils/resp"
|
|
"github.com/gin-gonic/gin"
|
|
"gorm.io/gorm"
|
|
)
|
|
|
|
type ImageHandler struct {
|
|
handler.BaseHandler
|
|
}
|
|
|
|
func NewImageHandler(app *core.AppServer, db *gorm.DB) *ImageHandler {
|
|
return &ImageHandler{BaseHandler: handler.BaseHandler{App: app, DB: db}}
|
|
}
|
|
|
|
type query struct {
|
|
Prompt string `json:"prompt"`
|
|
Username string `json:"username"`
|
|
CreatedAt []string `json:"created_time"`
|
|
Page int `json:"page"`
|
|
PageSize int `json:"page_size"`
|
|
}
|
|
|
|
// MjList Midjourney 任务列表
|
|
func (h *ImageHandler) MjList(c *gin.Context) {
|
|
var data query
|
|
if err := c.ShouldBindJSON(&data); err != nil {
|
|
resp.ERROR(c, types.InvalidArgs)
|
|
return
|
|
}
|
|
|
|
session := h.DB.Session(&gorm.Session{})
|
|
if data.Username != "" {
|
|
var user model.User
|
|
err := h.DB.Where("username", data.Username).First(&user).Error
|
|
if err == nil {
|
|
session = session.Where("user_id", user.Id)
|
|
}
|
|
}
|
|
if data.Prompt != "" {
|
|
session = session.Where("prompt LIKE ?", "%"+data.Prompt+"%")
|
|
}
|
|
if len(data.CreatedAt) == 2 {
|
|
start := utils.Str2stamp(data.CreatedAt[0] + " 00:00:00")
|
|
end := utils.Str2stamp(data.CreatedAt[1] + " 00:00:00")
|
|
session = session.Where("created_at >= ? AND created_at <= ?", start, end)
|
|
}
|
|
var total int64
|
|
session.Model(&model.MidJourneyJob{}).Count(&total)
|
|
var list []model.MidJourneyJob
|
|
var items = make([]vo.MidJourneyJob, 0)
|
|
offset := (data.Page - 1) * data.PageSize
|
|
err := session.Order("id DESC").Offset(offset).Limit(data.PageSize).Find(&list).Error
|
|
if err == nil {
|
|
// 填充数据
|
|
for _, item := range list {
|
|
var job vo.MidJourneyJob
|
|
err = utils.CopyObject(item, &job)
|
|
if err != nil {
|
|
continue
|
|
}
|
|
job.CreatedAt = item.CreatedAt.Unix()
|
|
items = append(items, job)
|
|
}
|
|
}
|
|
|
|
resp.SUCCESS(c, vo.NewPage(total, data.Page, data.PageSize, items))
|
|
}
|
|
|
|
// SdList Stable Diffusion 任务列表
|
|
func (h *ImageHandler) SdList(c *gin.Context) {
|
|
var data query
|
|
if err := c.ShouldBindJSON(&data); err != nil {
|
|
resp.ERROR(c, types.InvalidArgs)
|
|
return
|
|
}
|
|
|
|
session := h.DB.Session(&gorm.Session{})
|
|
if data.Username != "" {
|
|
var user model.User
|
|
err := h.DB.Where("username", data.Username).First(&user).Error
|
|
if err == nil {
|
|
session = session.Where("user_id", user.Id)
|
|
}
|
|
}
|
|
if data.Prompt != "" {
|
|
session = session.Where("prompt LIKE ?", "%"+data.Prompt+"%")
|
|
}
|
|
if len(data.CreatedAt) == 2 {
|
|
start := utils.Str2stamp(data.CreatedAt[0] + " 00:00:00")
|
|
end := utils.Str2stamp(data.CreatedAt[1] + " 00:00:00")
|
|
session = session.Where("created_at >= ? AND created_at <= ?", start, end)
|
|
}
|
|
var total int64
|
|
session.Model(&model.SdJob{}).Count(&total)
|
|
var list []model.SdJob
|
|
var items = make([]vo.SdJob, 0)
|
|
offset := (data.Page - 1) * data.PageSize
|
|
err := session.Order("id DESC").Offset(offset).Limit(data.PageSize).Find(&list).Error
|
|
if err == nil {
|
|
// 填充数据
|
|
for _, item := range list {
|
|
var job vo.SdJob
|
|
err = utils.CopyObject(item, &job)
|
|
if err != nil {
|
|
continue
|
|
}
|
|
job.CreatedAt = item.CreatedAt.Unix()
|
|
items = append(items, job)
|
|
}
|
|
}
|
|
|
|
resp.SUCCESS(c, vo.NewPage(total, data.Page, data.PageSize, items))
|
|
}
|
|
|
|
// DallList DALL-E 任务列表
|
|
func (h *ImageHandler) DallList(c *gin.Context) {
|
|
var data query
|
|
if err := c.ShouldBindJSON(&data); err != nil {
|
|
resp.ERROR(c, types.InvalidArgs)
|
|
return
|
|
}
|
|
|
|
session := h.DB.Session(&gorm.Session{})
|
|
if data.Username != "" {
|
|
var user model.User
|
|
err := h.DB.Where("username", data.Username).First(&user).Error
|
|
if err == nil {
|
|
session = session.Where("user_id", user.Id)
|
|
}
|
|
}
|
|
if data.Prompt != "" {
|
|
session = session.Where("prompt LIKE ?", "%"+data.Prompt+"%")
|
|
}
|
|
if len(data.CreatedAt) == 2 {
|
|
start := utils.Str2stamp(data.CreatedAt[0] + " 00:00:00")
|
|
end := utils.Str2stamp(data.CreatedAt[1] + " 00:00:00")
|
|
session = session.Where("created_at >= ? AND created_at <= ?", start, end)
|
|
}
|
|
var total int64
|
|
session.Model(&model.DallJob{}).Count(&total)
|
|
var list []model.DallJob
|
|
var items = make([]vo.DallJob, 0)
|
|
offset := (data.Page - 1) * data.PageSize
|
|
err := session.Order("id DESC").Offset(offset).Limit(data.PageSize).Find(&list).Error
|
|
if err == nil {
|
|
// 填充数据
|
|
for _, item := range list {
|
|
var job vo.DallJob
|
|
err = utils.CopyObject(item, &job)
|
|
if err != nil {
|
|
continue
|
|
}
|
|
job.CreatedAt = item.CreatedAt.Unix()
|
|
items = append(items, job)
|
|
}
|
|
}
|
|
|
|
resp.SUCCESS(c, vo.NewPage(total, data.Page, data.PageSize, items))
|
|
}
|