224 lines
7.8 KiB
Go
Executable File
224 lines
7.8 KiB
Go
Executable File
package aiplazaser
|
|
|
|
import (
|
|
"strings"
|
|
"time"
|
|
|
|
"91porn-server/models/cache/aiplazadata"
|
|
"91porn-server/models/commod"
|
|
"91porn-server/models/v/aiplazamod"
|
|
|
|
"go.mongodb.org/mongo-driver/bson"
|
|
"go.mongodb.org/mongo-driver/bson/primitive"
|
|
)
|
|
|
|
type WebListReq struct {
|
|
OrderId *string `form:"orderId"` // 关联AI订单id
|
|
Type *int `form:"type"` // 1-ai图片换脸 2-ai视频换脸 3-ai脱衣 4-ai图生视频 5-ai绘画 6-ai小说
|
|
Status *int `form:"status"` // 0-待审核 1-审核通过 2-拒绝 3-下架
|
|
Uid *int64 `form:"uid"` // uid
|
|
Title *string `form:"title"` // 标题
|
|
commod.Page
|
|
}
|
|
type WebListRes struct {
|
|
Total int64 `json:"total"`
|
|
HasNext bool `json:"hasNext"`
|
|
List []aiplazamod.AiPlaza `json:"list"`
|
|
}
|
|
|
|
// GetList 获取列表
|
|
func (q *WebListReq) GetList() (res WebListRes, err error) {
|
|
filter := bson.M{}
|
|
if q.OrderId != nil {
|
|
oid, _ := primitive.ObjectIDFromHex(strings.TrimSpace(*q.OrderId))
|
|
filter["orderId"] = oid
|
|
}
|
|
if q.Status != nil {
|
|
//0-待审核 1-审核通过 2-拒绝 3-下架
|
|
filter["status"] = *q.Status
|
|
}
|
|
if q.Title != nil && len(*q.Title) > 0 {
|
|
filter["title"] = bson.M{"$regex": *q.Title, "$options": "i"}
|
|
}
|
|
if q.Type != nil {
|
|
// 1-ai图片换脸 2-ai视频换脸 3-ai脱衣 4-ai图生视频 5-ai绘画
|
|
filter["type"] = *q.Type
|
|
}
|
|
if q.Uid != nil {
|
|
filter["uid"] = *q.Uid
|
|
}
|
|
sort := bson.D{{"reviewAt", -1}}
|
|
res.List, res.Total, res.HasNext, err = aiplazamod.GetList(filter, int64(q.Skip()), int64(q.Limit()), sort)
|
|
|
|
return
|
|
}
|
|
|
|
type WebCreateReq struct {
|
|
Type int `json:"type" form:"type" binding:"required"` // 1-ai图片换脸 2-ai视频换脸 3-ai脱衣 4-ai图生视频 5-ai绘画
|
|
Template string `json:"template" form:"template"` // 关联模版id
|
|
Uid uint64 `json:"uid" form:"uid" binding:"required"` //
|
|
Title string `json:"title" form:"title"` // 标题
|
|
OriginalImage string `json:"originalImage" form:"originalImage"` // 原图
|
|
OriginalVideo string `json:"originalVideo" form:"originalVideo"` // 原视频
|
|
OriginalVideoCover string `json:"originalVideoCover" form:"originalVideoCover"` // 原视频封面
|
|
OriginContent string `json:"originContent" form:"originContent"` // 输入的原文
|
|
GenerateImage string `json:"generateImage" form:"generateImage"` // 生成的图
|
|
GenerateVideo string `json:"generateVideo" form:"generateVideo"` // 生成的视频
|
|
GenerateVideoCover string `json:"generateVideoCover" form:"generateVideoCover"` // 生成的视频封面
|
|
Status int `json:"status" form:"status"` // 0-待审核 1-审核通过 2-拒绝 3-下架
|
|
Reason string `json:"reason" form:"reason"` // 原因
|
|
SortCode int `json:"sortCode" form:"sortCode"` // 置顶排序号,大于0就是置顶
|
|
ReviewAt time.Time `json:"reviewAt" form:"reviewAt"` // 审核时间
|
|
}
|
|
|
|
// Create 发布数据
|
|
func (p *WebCreateReq) Create() error {
|
|
data := aiplazamod.AiPlaza{
|
|
Type: p.Type,
|
|
Template: p.Template,
|
|
Uid: p.Uid,
|
|
Title: p.Title,
|
|
OriginalImage: p.OriginalImage,
|
|
OriginalVideo: p.OriginalVideo,
|
|
OriginContent: p.OriginContent,
|
|
GenerateImage: p.GenerateImage,
|
|
GenerateVideo: p.GenerateVideo,
|
|
GenerateVideoCover: p.GenerateVideoCover,
|
|
Status: p.Status,
|
|
Reason: p.Reason,
|
|
SortCode: p.SortCode,
|
|
ReviewAt: p.ReviewAt,
|
|
CreatedAt: time.Now(),
|
|
UpdatedAt: time.Now(),
|
|
}
|
|
|
|
// 创建数据
|
|
if _, err := aiplazadata.InsertData(nil, data); err != nil {
|
|
return err
|
|
}
|
|
|
|
return nil
|
|
}
|
|
|
|
type WebUpdateReq struct {
|
|
ID primitive.ObjectID `json:"id" binding:"required"`
|
|
Type *int `json:"type"` //
|
|
Template *string `json:"template" form:"template"` // 关联模版id
|
|
Uid *uint64 `json:"uid"` //
|
|
Title *string `json:"title"` // 标题
|
|
OriginalImage *string `json:"originalImage"` // 原图
|
|
OriginalVideo *string `json:"originalVideo"` // 原视频
|
|
OriginalVideoCover *string `json:"originalVideoCover" form:"originalVideoCover"` // 原视频封面
|
|
OriginContent *string `json:"originContent"` // 输入的原文
|
|
GenerateImage *string `json:"generateImage"` // 生成的图
|
|
GenerateVideo *string `json:"generateVideo"` // 生成的视频
|
|
GenerateVideoCover *string `json:"generateVideoCover" form:"generateVideoCover"` // 生成的视频封面
|
|
Status *int `json:"status"` // 0-待审核 1-审核通过 2-拒绝 3-下架
|
|
Reason *string `json:"reason"` // 原因
|
|
SortCode *int `json:"sortCode"` // 置顶排序号,大于0就是置顶
|
|
ReviewAt *time.Time `json:"reviewAt"` // 审核时间
|
|
}
|
|
|
|
// Update 更新数据
|
|
func (p *WebUpdateReq) Update() error {
|
|
post, err := aiplazamod.GetInfo(p.ID)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
data := make(map[string]interface{})
|
|
if p.Type != nil {
|
|
data["type"] = *p.Type
|
|
}
|
|
if p.Template != nil {
|
|
data["template"] = *p.Template
|
|
}
|
|
if p.Uid != nil {
|
|
data["uid"] = *p.Uid
|
|
}
|
|
if p.Title != nil {
|
|
data["title"] = *p.Title
|
|
}
|
|
if p.OriginalImage != nil {
|
|
data["originalImage"] = *p.OriginalImage
|
|
}
|
|
if p.OriginalVideo != nil {
|
|
data["originalVideo"] = *p.OriginalVideo
|
|
}
|
|
if p.OriginalVideoCover != nil {
|
|
data["originalVideoCover"] = *p.OriginalVideoCover
|
|
}
|
|
if p.OriginContent != nil {
|
|
data["originContent"] = *p.OriginContent
|
|
}
|
|
if p.GenerateImage != nil {
|
|
data["generateImage"] = *p.GenerateImage
|
|
}
|
|
if p.GenerateVideo != nil {
|
|
data["generateVideo"] = *p.GenerateVideo
|
|
}
|
|
if p.GenerateVideoCover != nil {
|
|
data["generateVideoCover"] = *p.GenerateVideoCover
|
|
}
|
|
if p.Status != nil {
|
|
data["status"] = *p.Status
|
|
// 审核后上线时间为当前时间
|
|
if post.Status != *p.Status && *p.Status == 1 {
|
|
data["reviewAt"] = time.Now()
|
|
}
|
|
}
|
|
if p.Reason != nil {
|
|
data["reason"] = *p.Reason
|
|
}
|
|
if p.SortCode != nil {
|
|
data["sortCode"] = *p.SortCode
|
|
}
|
|
data["updatedAt"] = time.Now()
|
|
|
|
if _, err = aiplazadata.UpdateData(nil, p.ID.Hex(), data); err != nil {
|
|
return err
|
|
}
|
|
|
|
return nil
|
|
}
|
|
|
|
type WebDeleteReq struct {
|
|
ID []primitive.ObjectID `json:"ids" binding:"required"`
|
|
}
|
|
|
|
// Delete 删除数据
|
|
func (p *WebDeleteReq) Delete() error {
|
|
if err := aiplazadata.DeleteData(nil, p.ID...); err != nil {
|
|
return err
|
|
}
|
|
return nil
|
|
}
|
|
|
|
type WebBatchUpdateReq struct {
|
|
Ids []primitive.ObjectID `json:"ids" binding:"required"`
|
|
Status *int `json:"status"` // 0-待审核 1-审核通过 2-拒绝 3-下架
|
|
Reason *string `json:"reason"` // 原因
|
|
}
|
|
|
|
// Update 更新数据
|
|
func (p *WebBatchUpdateReq) Update() error {
|
|
data := make(map[string]interface{})
|
|
|
|
if p.Status != nil {
|
|
data["status"] = *p.Status
|
|
if *p.Status == 1 {
|
|
data["reviewAt"] = time.Now()
|
|
}
|
|
}
|
|
if p.Reason != nil {
|
|
data["reason"] = *p.Reason
|
|
}
|
|
data["updatedAt"] = time.Now()
|
|
|
|
if _, err := aiplazamod.UpdateByIds(nil, p.Ids, data); err != nil {
|
|
return err
|
|
}
|
|
|
|
return nil
|
|
}
|