package dramatopicctrl import ( "encoding/json" "errors" "time" "91porn-server/common" "91porn-server/common/stderr" "91porn-server/models/l/operatorlgmod" "91porn-server/web/service/dramatopicser" "github.com/gin-gonic/gin" ) func List(ctx *gin.Context) { var req dramatopicser.ListRequest if err := ctx.ShouldBindQuery(&req); err != nil { common.ServeJSON(ctx, stderr.ErrParamError, err) return } response, err := req.List(time.Now()) if err != nil { common.ServeJSON(ctx, stderr.ErrDbQueryError, err) return } common.ServeJSON(ctx, stderr.Success, response) } func Create(ctx *gin.Context) { manager, ok := admin(ctx) if !ok { return } var req dramatopicser.CreateRequest if err := ctx.ShouldBindJSON(&req); err != nil { common.ServeJSON(ctx, stderr.ErrParamError, err) return } id, err := req.Create(time.Now()) if err != nil { common.ServeJSON(ctx, stderr.ErrParamError, err) return } record(ctx, manager, "创建", req) common.ServeJSON(ctx, stderr.Success, gin.H{"topicId": id.Hex()}) } func Update(ctx *gin.Context) { manager, ok := admin(ctx) if !ok { return } var req dramatopicser.UpdateRequest if err := ctx.ShouldBindJSON(&req); err != nil { common.ServeJSON(ctx, stderr.ErrParamError, err) return } if err := req.Update(time.Now()); err != nil { common.ServeJSON(ctx, stderr.ErrParamError, err) return } record(ctx, manager, "修改", req) common.ServeJSON(ctx, stderr.Success, "") } func Delete(ctx *gin.Context) { manager, ok := admin(ctx) if !ok { return } var req dramatopicser.DeleteRequest if err := ctx.ShouldBindJSON(&req); err != nil { common.ServeJSON(ctx, stderr.ErrParamError, err) return } if err := req.Delete(time.Now()); err != nil { common.ServeJSON(ctx, stderr.ErrParamError, err) return } record(ctx, manager, "删除", req) common.ServeJSON(ctx, stderr.Success, "") } func Sort(ctx *gin.Context) { manager, ok := admin(ctx) if !ok { return } var req dramatopicser.SortRequest if err := ctx.ShouldBindJSON(&req); err != nil { common.ServeJSON(ctx, stderr.ErrParamError, err) return } if err := req.Update(time.Now()); err != nil { common.ServeJSON(ctx, stderr.ErrParamError, err) return } record(ctx, manager, "排序", req) common.ServeJSON(ctx, stderr.Success, "") } func UpdateWorks(ctx *gin.Context) { manager, ok := admin(ctx) if !ok { return } var req dramatopicser.UpdateWorksRequest if err := ctx.ShouldBindJSON(&req); err != nil { common.ServeJSON(ctx, stderr.ErrParamError, err) return } response, err := req.Update(time.Now()) if err != nil { var conflict *dramatopicser.WorksConflictError if errors.As(err, &conflict) { common.ServeJSON(ctx, stderr.ErrParamError, conflict) return } common.ServeJSON(ctx, stderr.ErrParamError, err) return } record(ctx, manager, "配置作品", req) common.ServeJSON(ctx, stderr.Success, response) } func admin(ctx *gin.Context) (string, bool) { manager, err := common.GetAdminAct(ctx) if err != nil { common.ServeJSON(ctx, stderr.AdminIDErr, err) return "", false } return manager, true } func record(ctx *gin.Context, manager, action string, request interface{}) { data, _ := json.Marshal(request) _ = operatorlgmod.RecordOperation(manager, "短剧专题管理", action, string(data), ctx.Request.URL.RequestURI()) }