Files
huangguo_server/web/service/aiplazaser/aiplaza.go
T
rootandClaude Opus 5 8679200f41 Initial commit
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-15 13:57:10 +08:00

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
}