package mediacontentctrl import ( "91porn-server/common/log" "91porn-server/models/v/mediamod" "91porn-server/web/service/mediaser" "encoding/json" "fmt" "91porn-server/common" "91porn-server/common/stderr" "91porn-server/models/l/operatorlgmod" "91porn-server/web/service/mediacontentser" "github.com/gin-gonic/gin" ) // List doc // @Summary 获取动漫内容列表列表 // @Description 获取动漫内容列表列表 // @Tags 后台-动漫内容列表 // @Accept mpfd,json // @Produce json // @Param q query mediacontentser.WebListReq false "请求参数" // @Success 200 object mediacontentser.WebListRes "成功" // @Failure 400 {string} json "{"msg": "操作失败"}" // @Router /api/web/admin/media_content/list [get] func List(ctx *gin.Context) { var req = &mediacontentser.WebListReq{} if err := ctx.ShouldBind(&req); err != nil { common.ServeJSON(ctx, stderr.ErrParamError, err.Error()) return } res, err := req.GetList() if err != nil { common.ServeJSON(ctx, stderr.ErrDbQueryError, "") return } common.ServeJSON(ctx, stderr.Success, res) } // Create doc // @Summary 新增动漫内容列表 // @Description 新增动漫内容列表 // @Tags 后台-动漫内容列表 // @Accept mpfd,json // @Produce json // @Param q query mediacontentser.WebCreateReq false "请求参数" // @Success 200 {string} json "{"msg": "操作成功"}" // @Failure 400 {string} json "{"msg": "操作失败"}" // @Router /api/web/admin/media_content/create [post] func Create(ctx *gin.Context) { manager, err := common.GetAdminAct(ctx) if err != nil { common.ServeJSON(ctx, stderr.AdminIDErr, err.Error()) return } p := &mediacontentser.WebCreateReq{} err = ctx.ShouldBindJSON(&p) if err != nil { log.Error(fmt.Sprintf("Create media content param err:%v\n", err)) common.ServeJSON(ctx, stderr.ErrParamError, err.Error()) return } if p.EpisodeNumber == 0 { log.Error("Create media content EpisodeNumber == 0") common.ServeJSON(ctx, stderr.ErrParamError, "剧集编号必须大于0") return } if p.MediaType == mediamod.MediaTypeDrama { code := mediaser.SendBaseInfo2AWs(mediamod.SendBaseInfo2AWsReq{ SourceID: p.SourceID, Md5: p.Md5, Title: p.Name, Filename: p.Filename, }) if code != stderr.Success { common.ServeJSON(ctx, code, "视频资源登记失败") return } } // 创建 err, vid := p.Create(manager) if err != nil { log.Error(fmt.Sprintf("Create media content err:%v\n", err)) common.ServeJSON(ctx, stderr.Failure, err.Error()) return } if p.MediaType == mediamod.MediaTypeVideo { code := mediaser.SendBaseInfo2AWs(mediamod.SendBaseInfo2AWsReq{ SourceID: p.SourceID, Md5: p.Md5, Title: p.Name, Filename: p.Filename, }) if code != stderr.Success { _, _ = mediaser.DeleteManyByTTL(vid) } } log, _ := json.Marshal(p) _ = operatorlgmod.RecordOperation(manager, "动漫内容列表管理", "创建", string(log), ctx.Request.URL.RequestURI()) common.ServeJSON(ctx, stderr.Success, gin.H{"contentId": vid}) } // Update doc // @Summary 更新动漫内容列表 // @Description 更新动漫内容列表 // @Tags 后台-动漫内容列表 // @Accept mpfd,json // @Produce json // @Param q query mediacontentser.WebUpdateReq false "请求参数" // @Success 200 {string} json "{"msg": "操作成功"}" // @Failure 400 {string} json "{"msg": "操作失败"}" // @Router /api/web/admin/media_content/update [post] func Update(ctx *gin.Context) { manager, err := common.GetAdminAct(ctx) if err != nil { common.ServeJSON(ctx, stderr.AdminIDErr, err.Error()) return } p := &mediacontentser.WebUpdateReq{} err = ctx.ShouldBindJSON(&p) if err != nil { common.ServeJSON(ctx, stderr.ErrParamError, err.Error()) return } // 更新 err = p.Update(manager) if err != nil { common.ServeJSON(ctx, stderr.Failure, err.Error()) return } log, _ := json.Marshal(p) _ = operatorlgmod.RecordOperation(manager, "动漫内容列表管理", "更新", string(log), ctx.Request.URL.RequestURI()) common.ServeJSON(ctx, stderr.Success, "") } // BatchUpdate doc // @Summary 批量更新动漫内容 // @Description 批量更新动漫内容 // @Tags 后台-动漫内容列表 // @Accept mpfd,json // @Produce json // @Param q query mediacontentser.WebBatchUpdateReq false "请求参数" // @Success 200 {string} json "{"msg": "操作成功"}" // @Failure 400 {string} json "{"msg": "操作失败"}" // @Router /api/web/admin/media_content/batch/update [post] func BatchUpdate(ctx *gin.Context) { manager, err := common.GetAdminAct(ctx) if err != nil { common.ServeJSON(ctx, stderr.AdminIDErr, err.Error()) return } p := &mediacontentser.WebBatchUpdateReq{} err = ctx.ShouldBindJSON(&p) if err != nil { common.ServeJSON(ctx, stderr.ErrParamError, err.Error()) return } if _, err = p.ValidatedIDs(); err != nil { common.ServeJSON(ctx, stderr.ErrParamError, err.Error()) return } // 更新 err = p.Update(manager) if err != nil { common.ServeJSON(ctx, stderr.Failure, err.Error()) return } log, _ := json.Marshal(p) _ = operatorlgmod.RecordOperation(manager, "动漫内容列表管理", "更新", string(log), ctx.Request.URL.RequestURI()) common.ServeJSON(ctx, stderr.Success, "") } // Delete doc // @Summary 删除动漫内容列表 // @Description 删除动漫内容列表 // @Tags 后台-动漫内容列表 // @Accept mpfd,json // @Produce json // @Param q query mediacontentser.WebDeleteReq false "请求参数" // @Success 200 {string} json "{"msg": "操作成功"}" // @Failure 400 {string} json "{"msg": "操作失败"}" // @Router /api/web/admin/media_content/delete [post] func Delete(ctx *gin.Context) { manager, err := common.GetAdminAct(ctx) if err != nil { common.ServeJSON(ctx, stderr.AdminIDErr, err.Error()) return } p := &mediacontentser.WebDeleteReq{} err = ctx.ShouldBindJSON(&p) if err != nil { common.ServeJSON(ctx, stderr.ErrParamError, err.Error()) return } // 删除 err = p.Delete() if err != nil { common.ServeJSON(ctx, stderr.Failure, err.Error()) return } log, _ := json.Marshal(p) _ = operatorlgmod.RecordOperation(manager, "动漫内容列表管理", "删除", string(log), ctx.Request.URL.RequestURI()) common.ServeJSON(ctx, stderr.Success, "") } // ViewMedia doc // @Summary 查看媒体状态 // @Description 查看媒体状态 // @Tags 后台-动漫内容列表 // @Accept mpfd,json // @Produce json,html // @Param id formData string true "查看媒体id" // @Success 200 {string} json "{"msg": "操作成功"}" // @Failure 400 {string} json "{"msg": "操作失败"}" // @Router /api/web/media/view/:id [get] func ViewMedia(ctx *gin.Context) { id := ctx.Param("id") if id == "" { common.ServeJSON(ctx, stderr.ErrParamError, nil) return } code, data := mediacontentser.ViewMediaFromFs(id) common.ServeJSON(ctx, code, data) }