Files
rootandClaude Opus 5 8679200f41 Initial commit
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-15 13:57:10 +08:00

418 lines
14 KiB
Go

package ai_changeface_ctrl
import (
"91porn-server/common"
"91porn-server/common/constant"
"91porn-server/common/log"
"91porn-server/common/stderr"
"91porn-server/models/l/operatorlgmod"
"91porn-server/models/v/aichangefaceimgmod"
"91porn-server/models/v/aichangefacemod"
"91porn-server/models/v/aichangefacevidmod"
"91porn-server/web/service/ai_changeface_img_ser"
"91porn-server/web/service/ai_changeface_ser"
"encoding/json"
"fmt"
"github.com/gin-gonic/gin"
"go.mongodb.org/mongo-driver/bson/primitive"
)
// List doc
// @Summary AI换脸订单列表
// @Description AI换脸订单列表
// @Tags AI视频换脸-WEB
// @Accept json
// @Produce json
// @Param status query int false "记录状态"
// @Param pageNumber query int true "第几页"
// @Param pageSize query int true "每页数量"
// @Success 200 object interface{} "成功后返回"
// @Failure 400 {string} json "{"msg": "操作失败"}"
// @Router /ai/changeface/list [get]
func List(ctx *gin.Context) {
manager, err := common.GetAdminAct(ctx)
if err != nil {
common.ServeJSON(ctx, stderr.AdminIDErr, err.Error())
return
}
var req aichangefacemod.ListRequest
if err := ctx.ShouldBind(&req); err != nil {
common.ServeJSON(ctx, stderr.ErrParamError, err)
return
}
var id *primitive.ObjectID
if req.ID != nil {
tmpId, err := primitive.ObjectIDFromHex(*req.ID)
if err != nil {
common.ServeJSON(ctx, stderr.ErrParamError, err)
return
}
if tmpId.IsZero() {
common.ServeJSON(ctx, stderr.ErrParamError, "zero id")
return
}
id = &tmpId
}
if req.Uid != nil && *req.Uid == 0 {
common.ServeJSON(ctx, stderr.ErrParamError, "zero uid")
return
}
list, count, hasNext, err := ai_changeface_ser.List(id, &req)
if err != nil {
log.Error(fmt.Sprintf("ai_changeface_ser web List error%v, manager%v", err.Error(), manager))
common.ServeJSON(ctx, stderr.ErrDbQueryError, nil)
return
}
common.ServeJSON(ctx, stderr.Success, gin.H{
"list": list,
"total": count,
"hasNext": hasNext,
})
}
// Update doc
// @Summary 更新AI换脸记录
// @Description 更新AI换脸记录
// @Tags AI视频换脸-WEB
// @Accept json
// @Produce json
// @Param id formData string true "AI换脸订单ID"
// @Param status formData int false "状态 0 未完成; 1 已完成; -1 已退款"
// @Param cover formData string false "换脸后封面大图"
// @Param url formData string false "换脸后视频地址"
// @Param remark formData string false "拒绝理由"
// @Success 200 {string} json "{"msg": "操作成功"}"
// @Failure 400 {string} json "{"msg": "操作失败"}"
// @Router /ai/changeface/update [post]
func Update(ctx *gin.Context) {
manager, err := common.GetAdminAct(ctx)
if err != nil {
common.ServeJSON(ctx, stderr.AdminIDErr, err.Error())
return
}
var req aichangefacemod.EditAiChangeFace
if err = ctx.ShouldBind(&req); err != nil {
log.Error(fmt.Sprintf("ai changeface Update param err%v\n", err))
common.ServeJSON(ctx, stderr.ErrParamError, err)
return
}
if req.ID.IsZero() {
common.ServeJSON(ctx, stderr.ErrParamError, err)
return
}
//if code := ai_changeface_ser.Update(manager, &req); code != stderr.Success {
if code := ai_changeface_ser.UpdateNew(manager, &req); code != stderr.Success {
log.Error(fmt.Sprintf("ai changeface Update err%v", code))
common.ServeJSON(ctx, code, code.Error())
return
}
updateLog, _ := json.Marshal(req)
_ = operatorlgmod.RecordOperation(manager, constant.AiChangeface, constant.Modify, string(updateLog), ctx.Request.URL.RequestURI())
common.ServeJSON(ctx, stderr.Success, stderr.Success.Msg())
}
// ModList doc
// @Summary AI换脸视频模版列表
// @Description AI换脸视频模版列表
// @Tags AI模版模块-WEB
// @Accept json
// @Produce json
// @Param status query int false "记录状态"
// @Param pageNumber query int true "第几页"
// @Param pageSize query int true "每页数量"
// @Success 200 object interface{} "成功后返回"
// @Failure 400 {string} json "{"msg": "操作失败"}"
// @Router /ai/changeface/mod/list [get]
func ModList(ctx *gin.Context) {
manager, err := common.GetAdminAct(ctx)
if err != nil {
common.ServeJSON(ctx, stderr.AdminIDErr, err.Error())
return
}
var req aichangefacevidmod.WebListRequest
if err = ctx.ShouldBind(&req); err != nil {
common.ServeJSON(ctx, stderr.ErrParamError, err)
return
}
data, code := ai_changeface_ser.ModList(&req)
if code != stderr.Success {
log.Error(fmt.Sprintf("ai_changeface_ser web List error%v,manager%v", code.Error(), manager))
common.ServeJSON(ctx, code, code.Error())
return
}
if err != nil {
log.Error(fmt.Sprintf("ai_changeface_ser web List error%v,manager%v", err.Error(), manager))
common.ServeJSON(ctx, stderr.ErrDbQueryError, nil)
return
}
common.ServeJSON(ctx, stderr.Success, data)
}
// ModUpdate doc
// @Summary AI换脸视频模版编辑
// @Description AI换脸视频模版编辑
// @Tags AI模版模块-WEB
// @Accept json
// @Produce json
// @Param status query int false "记录状态"
// @Param pageNumber query int true "第几页"
// @Param pageSize query int true "每页数量"
// @Success 200 object interface{} "成功后返回"
// @Failure 400 {string} json "{"msg": "操作失败"}"
// @Router /ai/changeface/mod/update [post]
func ModUpdate(ctx *gin.Context) {
manager, err := common.GetAdminAct(ctx)
if err != nil {
common.ServeJSON(ctx, stderr.AdminIDErr, err.Error())
return
}
var req aichangefacevidmod.EditAiChangeFaceVid
if err = ctx.ShouldBind(&req); err != nil {
common.ServeJSON(ctx, stderr.ErrParamError, err)
return
}
if req.ID.IsZero() {
common.ServeJSON(ctx, stderr.ErrParamError, err)
return
}
if err = ai_changeface_ser.UpdateMod(req); err != nil {
common.ServeJSON(ctx, stderr.ErrDbQueryError, nil)
return
}
updateLog, _ := json.Marshal(req)
_ = operatorlgmod.RecordOperation(manager, constant.AiChangefaceVidMod, constant.Modify, string(updateLog), ctx.Request.URL.RequestURI())
common.ServeJSON(ctx, stderr.Success, nil)
}
// ModAdd doc
// @Summary 添加AI换脸视频模版
// @Description 添加AI换脸视频模版
// @Tags AI模版模块-WEB
// @Accept json
// @Produce json
// @Param status query int false "记录状态"
// @Param pageNumber query int true "第几页"
// @Param pageSize query int true "每页数量"
// @Success 200 object interface{} "成功后返回"
// @Failure 400 {string} json "{"msg": "操作失败"}"
// @Router /ai/changeface/mod/add [post]
func ModAdd(ctx *gin.Context) {
manager, err := common.GetAdminAct(ctx)
if err != nil {
common.ServeJSON(ctx, stderr.AdminIDErr, err.Error())
return
}
var req aichangefacevidmod.AddAiChangeFaceVidReq
if err = ctx.ShouldBind(&req); err != nil {
common.ServeJSON(ctx, stderr.ErrParamError, err)
return
}
if err = ai_changeface_ser.AddMod(req); err != nil {
common.ServeJSON(ctx, stderr.ErrDbQueryError, nil)
return
}
addLog, _ := json.Marshal(req)
_ = operatorlgmod.RecordOperation(manager, constant.AiChangefaceVidMod, constant.Add, string(addLog), ctx.Request.URL.RequestURI())
common.ServeJSON(ctx, stderr.Success, nil)
}
// GetById doc
// @Summary 根据ID获取AI模版
// @Description 根据ID获取AI模版
// @Tags AI模版模块-WEB
// @Accept json
// @Produce json
// @Param id query string false "模版ID"
// @Success 200 object interface{} "成功后返回"
// @Failure 400 {string} json "{"msg": "操作失败"}"
// @Router /ai/changeface/mod/getById [get]
func GetById(ctx *gin.Context) {
_, err := common.GetAdminAct(ctx)
if err != nil {
common.ServeJSON(ctx, stderr.AdminIDErr, err.Error())
return
}
var req struct {
ID string `form:"id" json:"id" binding:"required"`
}
if err = ctx.ShouldBind(&req); err != nil {
common.ServeJSON(ctx, stderr.ErrParamError, err)
return
}
modId, err := primitive.ObjectIDFromHex(req.ID)
if err != nil || modId.IsZero() {
common.ServeJSON(ctx, stderr.ErrParamError, err)
return
}
mod, err := aichangefacevidmod.GetModById(modId)
if err != nil {
common.ServeJSON(ctx, stderr.ErrDbQueryError, err)
return
}
common.ServeJSON(ctx, stderr.Success, gin.H{
"data": mod,
})
}
// AIChangeFaceImgList doc
// @Summary AI图片换脸列表
// @Description AI图片换脸列表
// @Tags AI图片换脸-WEB
// @Accept json
// @Produce json
// @Param status query int false "记录状态"
// @Param uid query int false "用户id"
// @Param id query int false "流水id"
// @Param mId query string false "AI模版id"
// @Param pageNumber query int true "第几页"
// @Param pageSize query int true "每页数量"
// @Success 200 object interface{} "成功后返回"
// @Failure 400 {string} json "{"msg": "操作失败"}"
// @Router /api/web/admin/ai/change_face_img/list [get]
func AIChangeFaceImgList(ctx *gin.Context) {
manager, err := common.GetAdminAct(ctx)
if err != nil {
common.ServeJSON(ctx, stderr.AdminIDErr, err.Error())
return
}
var req aichangefaceimgmod.WebListRequest
if err := ctx.ShouldBindQuery(&req); err != nil {
common.ServeJSON(ctx, stderr.ErrNoToken, err)
return
}
data, code := ai_changeface_img_ser.List(&req)
if code != stderr.Success {
log.Error(fmt.Sprintf("AIChangeFaceImg web List error%v,manager%v", code.Error(), manager))
common.ServeJSON(ctx, code, nil)
return
}
common.ServeJSON(ctx, code, data)
}
// AIChangeFaceImgUpdate doc
// @Summary 审核AI图片换脸记录
// @Description 审核AI图片换脸记录
// @Tags AI图片换脸-WEB
// @Accept json
// @Produce json
// @Param id formData string true "订单ID"
// @Param newPic formData []string false "AI图片换脸后新图"
// @Param status formData string true "状态 1、进行中 2、生成成功 3、生成失败"
// @Param remark formData string false "拒绝理由"
// @Success 200 {string} json "{"msg": "操作成功"}"
// @Failure 400 {string} json "{"msg": "操作失败"}"
// @Router /api/web/admin/ai/change_face_img/update [post]
func AIChangeFaceImgUpdate(ctx *gin.Context) {
manager, err := common.GetAdminAct(ctx)
if err != nil {
common.ServeJSON(ctx, stderr.AdminIDErr, err.Error())
return
}
var req aichangefaceimgmod.EditCond
if err = ctx.ShouldBind(&req); err != nil {
log.Error(fmt.Sprintf("AIChangeFaceImg Update param err%v\n", err))
common.ServeJSON(ctx, stderr.ErrNoToken, err)
return
}
//code := ai_changeface_img_ser.Update(manager, &req)
code := ai_changeface_img_ser.UpdateNew(manager, &req)
if code != stderr.Success {
log.Error(fmt.Sprintf("AIChangeFaceImg Update err%v", code))
common.ServeJSON(ctx, code, code.Error())
return
}
updateLog, _ := json.Marshal(req)
_ = operatorlgmod.RecordOperation(manager, constant.AiChangeFaceImgList, constant.Modify, string(updateLog), ctx.Request.URL.RequestURI())
common.ServeJSON(ctx, stderr.Success, stderr.Success.Msg())
}
// 回调
func Callback(ctx *gin.Context) {
var req aichangefacevidmod.CallbackReq
if err := ctx.ShouldBind(&req); err != nil {
log.Error(fmt.Sprintf("ai undress update param err%v\n", err))
common.ServeJSON(ctx, stderr.ErrParamError, err)
return
}
code := ai_changeface_ser.CallBackOrder(&req)
if code != stderr.Success {
log.Error(fmt.Sprintf("ai undress Update err%v", code))
common.ServeJSON(ctx, code, code.Error())
return
}
ctx.String(200, "success", "success")
}
func CallbackByImg(ctx *gin.Context) {
var req aichangefacevidmod.CallbackReq
if err := ctx.ShouldBind(&req); err != nil {
log.Error(fmt.Sprintf("ai undress update param err%v\n", err))
common.ServeJSON(ctx, stderr.ErrParamError, err)
return
}
code := ai_changeface_img_ser.CallBackOrder(&req)
if code != stderr.Success {
log.Error(fmt.Sprintf("CallbackByImg Update err%v", code))
common.ServeJSON(ctx, code, code.Error())
return
}
ctx.String(200, "success", "success")
}
// BatchModUpdate doc
// @Summary AI换脸视频模版批量修改
// @Description AI换脸视频模版批量修改
// @Tags AI模版模块-WEB
// @Accept json
// @Produce json
// @Param q body ai_changeface_ser.BatchUpdateReq false "请求参数"
// @Success 200 {string} json "{"msg": "操作成功"}"
// @Failure 400 {string} json "{"msg": "操作失败"}"
// @Router /api/web/admin/ai/changeface/mod/batch/update [post]
func BatchModUpdate(ctx *gin.Context) {
manager, err := common.GetAdminAct(ctx)
if err != nil {
common.ServeJSON(ctx, stderr.AdminIDErr, err.Error())
return
}
var req ai_changeface_ser.BatchUpdateReq
if err = ctx.ShouldBind(&req); err != nil {
common.ServeJSON(ctx, stderr.ErrParamError, err)
return
}
if err = req.BatchUpdateMod(); err != nil {
common.ServeJSON(ctx, stderr.ErrDbQueryError, nil)
return
}
updateLog, _ := json.Marshal(req)
_ = operatorlgmod.RecordOperation(manager, constant.AiChangefaceVidMod, constant.Modify, string(updateLog), ctx.Request.URL.RequestURI())
common.ServeJSON(ctx, stderr.Success, nil)
}
// AllSceneList doc
// @Summary AI换脸视频模版列表
// @Description AI换脸视频模版列表
// @Tags AI模版模块-WEB
// @Accept json
// @Produce json
// @Success 200 object interface{} "成功后返回"
// @Failure 400 {string} json "{"msg": "操作失败"}"
// @Security BasicAuth
// @Router /api/web/admin/ai/change_face/mod/all/scene [get]
func AllSceneList(ctx *gin.Context) {
var in ai_changeface_ser.AllSceneListReq
if err := ctx.ShouldBind(&in); err != nil {
common.ServeJSON(ctx, stderr.ErrParamError, err)
return
}
data, err := in.All()
if err != nil {
common.ServeJSON(ctx, stderr.Failure, nil)
return
}
common.ServeJSON(ctx, stderr.Success, data)
}