package web import ( "net/http" "videoweb/app/service/playletser" "videoweb/pub/common/log" "videoweb/pub/common/useragent" "github.com/gin-gonic/gin" ) type chapterLikeBody struct { ChapterID int64 `json:"chapterId"` IsLike *bool `json:"isLike"` } // ChapterLikeSet 代理上游 POST /api/app/playlet/chapter/like/set。 func ChapterLikeSet(c *gin.Context) { if useragent.TokenFromRequest(c.Request) == "" { c.JSON(http.StatusOK, gin.H{ "code": 401, "msg": "unauthorized", "tip": "请先登录后再点赞", "data": nil, }) return } var body chapterLikeBody if err := c.ShouldBindJSON(&body); err != nil { c.JSON(http.StatusBadRequest, gin.H{ "code": 1001, "msg": "参数错误", "tip": "参数错误", "data": nil, }) return } if body.ChapterID <= 0 || body.IsLike == nil { c.JSON(http.StatusOK, gin.H{ "code": 1001, "msg": "参数错误", "tip": "缺少 chapterId 或 isLike", "data": nil, }) return } env, err := playletser.ChapterLikeSet(c, playletser.PlayletChapterLikeSetReq{ ChapterID: body.ChapterID, IsLike: *body.IsLike, }) if err != nil { log.Error("chapter like set upstream failed", log.E(err)) c.JSON(http.StatusOK, gin.H{ "code": 500, "msg": "chapter like failed", "tip": "操作失败,请稍后重试", "data": nil, }) return } if env != nil && TryJSONSessionRecover(c, env.Code) { env, err = playletser.ChapterLikeSet(c, playletser.PlayletChapterLikeSetReq{ ChapterID: body.ChapterID, IsLike: *body.IsLike, }) if err != nil { log.Error("chapter like set retry failed", log.E(err)) c.JSON(http.StatusOK, gin.H{ "code": 500, "msg": "chapter like failed", "tip": "操作失败,请稍后重试", "data": nil, }) return } } if env == nil || env.Code != 200 { tip := "操作失败" msg := "" code := 500 if env != nil { code = env.Code msg = env.Msg tip = firstNonEmpty(env.Tip, env.Msg, tip) } c.JSON(http.StatusOK, gin.H{ "code": code, "msg": msg, "tip": tip, "data": nil, }) return } c.JSON(http.StatusOK, gin.H{ "code": 200, "msg": firstNonEmpty(env.Msg, "success"), "tip": firstNonEmpty(env.Tip, "成功"), "data": env.Data, }) } type chapterCollectBody struct { ChapterID int64 `json:"chapterId"` IsCollect *bool `json:"isCollect"` } // ChapterCollectSet 代理上游 POST /api/app/playlet/chapter/collect/set。 func ChapterCollectSet(c *gin.Context) { if useragent.TokenFromRequest(c.Request) == "" { c.JSON(http.StatusOK, gin.H{ "code": 401, "msg": "unauthorized", "tip": "请先登录后再收藏", "data": nil, }) return } var body chapterCollectBody if err := c.ShouldBindJSON(&body); err != nil { c.JSON(http.StatusBadRequest, gin.H{ "code": 1001, "msg": "参数错误", "tip": "参数错误", "data": nil, }) return } if body.ChapterID <= 0 || body.IsCollect == nil { c.JSON(http.StatusOK, gin.H{ "code": 1001, "msg": "参数错误", "tip": "缺少 chapterId 或 isCollect", "data": nil, }) return } env, err := playletser.ChapterCollectSet(c, playletser.PlayletChapterCollectSetReq{ ChapterID: body.ChapterID, IsCollect: *body.IsCollect, }) if err != nil { log.Error("chapter collect set upstream failed", log.E(err)) c.JSON(http.StatusOK, gin.H{ "code": 500, "msg": "chapter collect failed", "tip": "操作失败,请稍后重试", "data": nil, }) return } if env != nil && TryJSONSessionRecover(c, env.Code) { env, err = playletser.ChapterCollectSet(c, playletser.PlayletChapterCollectSetReq{ ChapterID: body.ChapterID, IsCollect: *body.IsCollect, }) if err != nil { log.Error("chapter collect set retry failed", log.E(err)) c.JSON(http.StatusOK, gin.H{ "code": 500, "msg": "chapter collect failed", "tip": "操作失败,请稍后重试", "data": nil, }) return } } if env == nil || env.Code != 200 { tip := "操作失败" msg := "" code := 500 if env != nil { code = env.Code msg = env.Msg tip = firstNonEmpty(env.Tip, env.Msg, tip) } c.JSON(http.StatusOK, gin.H{ "code": code, "msg": msg, "tip": tip, "data": nil, }) return } c.JSON(http.StatusOK, gin.H{ "code": 200, "msg": firstNonEmpty(env.Msg, "success"), "tip": firstNonEmpty(env.Tip, "成功"), "data": env.Data, }) }