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 }