Executable
+325
@@ -0,0 +1,325 @@
|
||||
package aiplazaser
|
||||
|
||||
import (
|
||||
"91porn-server/common/log"
|
||||
"91porn-server/common/stderr"
|
||||
"91porn-server/models/cache/aiplazadata"
|
||||
"91porn-server/models/commod"
|
||||
"91porn-server/models/v/aiUnDressmod"
|
||||
"91porn-server/models/v/aichangefaceimgmod"
|
||||
"91porn-server/models/v/aichangefacemod"
|
||||
"91porn-server/models/v/aiimagetovideomod"
|
||||
"91porn-server/models/v/aiplazamod"
|
||||
"91porn-server/models/v/aitexttoimagemod"
|
||||
"fmt"
|
||||
"go.mongodb.org/mongo-driver/bson/primitive"
|
||||
|
||||
"go.mongodb.org/mongo-driver/bson"
|
||||
)
|
||||
|
||||
type AppQueryListReq struct {
|
||||
Type *int `json:"type" form:"type"` // 1-ai图片换脸 2-ai视频换脸 3-ai脱衣 4-ai图生视频 5-ai绘画 不传则查看全部
|
||||
SortType int `json:"sortType" form:"sortType"` // 1-推荐 2-最新上架 3-最多观看 4-最多收藏
|
||||
commod.Page
|
||||
}
|
||||
|
||||
type AppListRes struct {
|
||||
Total int64 `json:"total"`
|
||||
HasNext bool `json:"hasNext"`
|
||||
List []*aiplazamod.AiPlazaInfo `json:"list"`
|
||||
}
|
||||
|
||||
// GetList 获取列表
|
||||
func (p *AppQueryListReq) GetList() AppListRes {
|
||||
var res AppListRes
|
||||
var err error
|
||||
filter := bson.M{
|
||||
"status": 1,
|
||||
}
|
||||
if p.Type != nil {
|
||||
filter["type"] = p.Type
|
||||
}
|
||||
sort := bson.D{{"reviewAt", -1}}
|
||||
switch p.SortType {
|
||||
case 2:
|
||||
// 最新上架
|
||||
sort = bson.D{{"reviewAt", -1}}
|
||||
case 3:
|
||||
// 最多观看
|
||||
sort = bson.D{{"viewCount", -1}, {"reviewAt", -1}}
|
||||
case 4:
|
||||
// 最多收藏
|
||||
sort = bson.D{{"collectCount", -1}, {"reviewAt", -1}}
|
||||
default: // 1
|
||||
// 推荐
|
||||
//filter["reviewAt"] = bson.M{"$gt": carbon.NewCarbon().StartOfDay().SubDays(30).StdTime()}
|
||||
sort = bson.D{{"sortCode", -1}, {"reviewAt", -1}}
|
||||
}
|
||||
|
||||
// 获取列表
|
||||
var data []aiplazamod.AiPlaza
|
||||
data, res.Total, res.HasNext, err = aiplazadata.GetListFromCache(filter, int64(p.Skip()), int64(p.Limit()), sort)
|
||||
if err != nil {
|
||||
log.Error("获取ai广场帖子列表数据错误", log.Any("Params", *p), log.E(err))
|
||||
return res
|
||||
}
|
||||
res.List = aiplazadata.FormatAppDataList(data)
|
||||
|
||||
return res
|
||||
}
|
||||
|
||||
type AppQueryInfoReq struct {
|
||||
ID string `json:"id" form:"id"` // id
|
||||
}
|
||||
|
||||
type AppQueryInfoResp struct {
|
||||
Detail *aiplazamod.AiPlazaInfo
|
||||
}
|
||||
|
||||
// GetInfo 获取详情
|
||||
func (p *AppQueryInfoReq) GetInfo(uid uint64) (res AppQueryInfoResp, err error) {
|
||||
oid, err := primitive.ObjectIDFromHex(p.ID)
|
||||
if err != nil {
|
||||
return res, err
|
||||
}
|
||||
|
||||
var item aiplazamod.AiPlaza
|
||||
item, err = aiplazadata.GetInfoFromCache(oid)
|
||||
if err != nil {
|
||||
log.Error("获取ai广场帖子详情数据错误", log.Any("ID", p.ID), log.E(err))
|
||||
return
|
||||
}
|
||||
res.Detail = aiplazadata.FormatAppData(uid, item)
|
||||
return
|
||||
}
|
||||
|
||||
type ShareReq struct {
|
||||
Type int `json:"type" form:"type" binding:"required"` // 1-ai图片换脸 2-ai视频换脸 3-ai脱衣 4-ai图生视频 5-ai绘画
|
||||
OrderId primitive.ObjectID `json:"orderId" form:"orderId" binding:"required"`
|
||||
Title string `json:"title" form:"title"`
|
||||
}
|
||||
|
||||
// Create 发布数据
|
||||
func (p *ShareReq) Create(uid uint64) error {
|
||||
// 根据类型获取订单
|
||||
switch p.Type {
|
||||
case 1:
|
||||
// ai图片换脸
|
||||
return p.shareAiImageChangeFace(uid)
|
||||
case 2:
|
||||
// ai视频换脸
|
||||
return p.shareAiVideoChangeFace(uid)
|
||||
case 3:
|
||||
// ai脱衣
|
||||
return p.shareAiUndress(uid)
|
||||
case 4:
|
||||
// ai图生视频
|
||||
return p.shareAiImageToVideo(uid)
|
||||
case 5:
|
||||
// ai绘画
|
||||
return p.shareAiTextToImage(uid)
|
||||
default:
|
||||
// 其他类型的不处理
|
||||
return nil
|
||||
}
|
||||
}
|
||||
|
||||
func (p *ShareReq) shareAiImageChangeFace(uid uint64) (err error) {
|
||||
// ai图片换脸
|
||||
aichangeFaceInfo, err := aichangefaceimgmod.FindByID(nil, p.OrderId)
|
||||
if aichangeFaceInfo == nil && err != nil {
|
||||
return stderr.ErrDbQueryError
|
||||
}
|
||||
if aichangeFaceInfo.UID != uid || aichangeFaceInfo.Status != aichangefaceimgmod.SUCCESS {
|
||||
return stderr.ErrDbQueryError
|
||||
}
|
||||
// 修改状态
|
||||
if err = aichangefaceimgmod.Update(nil, p.OrderId, bson.M{
|
||||
"shareStatus": 1,
|
||||
"shareTitle": p.Title,
|
||||
}); err != nil {
|
||||
return stderr.ErrDbUpdateError
|
||||
}
|
||||
|
||||
// 新增一个分享
|
||||
alPlaza := aiplazamod.AiPlaza{
|
||||
Type: 1,
|
||||
OrderId: aichangeFaceInfo.ID,
|
||||
Template: aichangeFaceInfo.MId,
|
||||
Uid: aichangeFaceInfo.UID,
|
||||
Title: p.Title,
|
||||
OriginalImage: aichangeFaceInfo.ModPic,
|
||||
OriginalVideo: "",
|
||||
OriginContent: "",
|
||||
GenerateVideo: "",
|
||||
Status: aiplazamod.DefaultStatus,
|
||||
}
|
||||
if len(aichangeFaceInfo.NewPic) > 0 {
|
||||
alPlaza.GenerateImage = aichangeFaceInfo.NewPic[0]
|
||||
}
|
||||
_, err = aiplazamod.Insert(nil, alPlaza)
|
||||
if err != nil {
|
||||
log.Error("新增ai广场帖子失败", log.Any("alPlaza", alPlaza), log.E(err))
|
||||
return
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
func (p *ShareReq) shareAiVideoChangeFace(uid uint64) (err error) {
|
||||
//查询该笔订单是否存在
|
||||
aichangeFaceInfo, err := aichangefacemod.FindByID(nil, p.OrderId)
|
||||
if aichangeFaceInfo == nil && err != nil {
|
||||
return stderr.ErrDbQueryError
|
||||
}
|
||||
if aichangeFaceInfo.Uid != uid || aichangeFaceInfo.Status != aichangefacemod.StatusComplete {
|
||||
return stderr.ErrDbQueryError
|
||||
}
|
||||
if err = aichangefacemod.Update(nil, p.OrderId, bson.M{"$set": bson.M{
|
||||
"shareStatus": 1,
|
||||
"shareTitle": p.Title,
|
||||
}}); err != nil {
|
||||
return stderr.ErrDbUpdateError
|
||||
}
|
||||
// 新增一个分享
|
||||
alPlaza := aiplazamod.AiPlaza{
|
||||
Type: 2,
|
||||
OrderId: aichangeFaceInfo.ID,
|
||||
Template: aichangeFaceInfo.VidID.Hex(),
|
||||
Uid: aichangeFaceInfo.Uid,
|
||||
Title: p.Title,
|
||||
OriginalImage: "",
|
||||
OriginalVideo: aichangeFaceInfo.ModVideo,
|
||||
OriginalVideoCover: aichangeFaceInfo.ModCover,
|
||||
OriginContent: "",
|
||||
GenerateVideo: aichangeFaceInfo.Url,
|
||||
Status: aiplazamod.DefaultStatus,
|
||||
}
|
||||
if len(aichangeFaceInfo.Pic) > 0 {
|
||||
alPlaza.GenerateVideoCover = aichangeFaceInfo.Pic[0]
|
||||
}
|
||||
_, err = aiplazamod.Insert(nil, alPlaza)
|
||||
if err != nil {
|
||||
log.Error("新增ai广场帖子失败", log.Any("alPlaza", alPlaza), log.E(err))
|
||||
return
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
func (p *ShareReq) shareAiUndress(uid uint64) (err error) {
|
||||
data, err := aiUnDressmod.FindDataByID(p.OrderId.Hex())
|
||||
if err != nil {
|
||||
return stderr.ErrDbQueryError
|
||||
}
|
||||
if data.UID != uid || data.Status != aiUnDressmod.SUCCESS {
|
||||
return stderr.ErrDbQueryError
|
||||
}
|
||||
// 修改订单状态
|
||||
if err = aiUnDressmod.Edit(nil, bson.M{"_id": p.OrderId}, bson.M{"$set": bson.M{
|
||||
"shareStatus": 1,
|
||||
"shareTitle": p.Title,
|
||||
}}); err != nil {
|
||||
log.Error(fmt.Sprintf("Handle AiUnDress CallBackOrder aiUnDressmod.Edit error:%+v:", err), log.Any("uid", uid))
|
||||
return stderr.ErrDbUpdateError
|
||||
}
|
||||
|
||||
// 新增一个分享
|
||||
alPlaza := aiplazamod.AiPlaza{
|
||||
Type: 3,
|
||||
OrderId: data.ID,
|
||||
Template: "",
|
||||
Uid: data.UID,
|
||||
Title: p.Title,
|
||||
OriginalImage: data.OriginPic,
|
||||
OriginalVideo: "",
|
||||
OriginContent: "",
|
||||
//GenerateImage: data.NewPic[0],
|
||||
GenerateVideo: "",
|
||||
Status: aiplazamod.DefaultStatus,
|
||||
}
|
||||
if len(data.NewPic) > 0 {
|
||||
alPlaza.GenerateImage = data.NewPic[0]
|
||||
}
|
||||
_, err = aiplazamod.Insert(nil, alPlaza)
|
||||
if err != nil {
|
||||
log.Error("新增ai广场帖子失败", log.Any("alPlaza", alPlaza), log.E(err))
|
||||
return
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
func (p *ShareReq) shareAiImageToVideo(uid uint64) (err error) {
|
||||
// 查询该笔订单是否存在
|
||||
data, err := aiimagetovideomod.GetInfo(p.OrderId)
|
||||
if err != nil {
|
||||
return stderr.ErrDbQueryError
|
||||
}
|
||||
if data.UID != uid || data.Status != int(aiimagetovideomod.StatusGenerationSuccess) {
|
||||
return stderr.ErrDbQueryError
|
||||
}
|
||||
// 修改订单状态
|
||||
if _, err = aiimagetovideomod.UpdateByID(nil, p.OrderId, bson.M{
|
||||
"shareStatus": 1,
|
||||
"shareTitle": p.Title,
|
||||
}); err != nil {
|
||||
return stderr.ErrDbUpdateError
|
||||
}
|
||||
|
||||
// 新增一个分享
|
||||
alPlaza := aiplazamod.AiPlaza{
|
||||
Type: 4,
|
||||
OrderId: data.ID,
|
||||
Template: "",
|
||||
Uid: data.UID,
|
||||
Title: p.Title,
|
||||
OriginalImage: data.ImgUrl,
|
||||
OriginalVideo: "",
|
||||
OriginContent: "",
|
||||
GenerateImage: data.NewImgUrl,
|
||||
GenerateVideo: "",
|
||||
Status: aiplazamod.DefaultStatus,
|
||||
}
|
||||
_, err = aiplazamod.Insert(nil, alPlaza)
|
||||
if err != nil {
|
||||
log.Error("新增ai广场帖子失败", log.Any("alPlaza", alPlaza), log.E(err))
|
||||
return
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
func (p *ShareReq) shareAiTextToImage(uid uint64) (err error) {
|
||||
// 查询该笔订单是否存在
|
||||
data, err := aitexttoimagemod.GetInfo(p.OrderId)
|
||||
if err != nil {
|
||||
return stderr.ErrDbQueryError
|
||||
}
|
||||
if data.UID != uid || data.Status != int(aitexttoimagemod.StatusGenerationSuccess) {
|
||||
return stderr.ErrDbQueryError
|
||||
}
|
||||
// 修改订单状态
|
||||
if _, err = aitexttoimagemod.UpdateByID(nil, p.OrderId, bson.M{
|
||||
"shareStatus": 1,
|
||||
"shareTitle": p.Title,
|
||||
}); err != nil {
|
||||
return stderr.ErrDbUpdateError
|
||||
}
|
||||
// 新增一个分享
|
||||
alPlaza := aiplazamod.AiPlaza{
|
||||
Type: 5,
|
||||
OrderId: data.ID,
|
||||
Template: "",
|
||||
Uid: data.UID,
|
||||
Title: p.Title,
|
||||
OriginalImage: "",
|
||||
OriginalVideo: "",
|
||||
OriginContent: data.Text,
|
||||
GenerateImage: data.NewImgUrl,
|
||||
GenerateVideo: "",
|
||||
Status: aiplazamod.DefaultStatus,
|
||||
}
|
||||
_, err = aiplazamod.Insert(nil, alPlaza)
|
||||
if err != nil {
|
||||
log.Error("新增ai广场帖子失败", log.Any("alPlaza", alPlaza), log.E(err))
|
||||
return
|
||||
}
|
||||
return
|
||||
}
|
||||
Reference in New Issue
Block a user