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) }