41 lines
1.2 KiB
Go
41 lines
1.2 KiB
Go
package playletser
|
|
|
|
import (
|
|
"fmt"
|
|
"videoweb/app/service/upstream"
|
|
|
|
"github.com/gin-gonic/gin"
|
|
)
|
|
|
|
const chapterUnlockPath = "/api/app/playlet/chapter/unlock"
|
|
|
|
// PlayletChapterUnlockReq 对应 swagger proto.PlayletChapterUnlockReq
|
|
// POST /api/app/playlet/chapter/unlock
|
|
type PlayletChapterUnlockReq struct {
|
|
ChapterID int64 `json:"chapterId"`
|
|
PlayletID int64 `json:"playletId"`
|
|
}
|
|
|
|
// PlayletChapterUnlockResp 对应 swagger proto.PlayletChapterUnlockResp
|
|
type PlayletChapterUnlockResp struct {
|
|
Balance int64 `json:"balance"`
|
|
CanWatch bool `json:"canWatch"`
|
|
ChangeCoin int64 `json:"changeCoin"`
|
|
ChapterID int64 `json:"chapterId"`
|
|
CostCoins int64 `json:"costCoins"`
|
|
PlayletID int64 `json:"playletId"`
|
|
Unlocked bool `json:"unlocked"`
|
|
}
|
|
|
|
// ChapterUnlock 使用金币解锁剧集(幂等)。
|
|
func ChapterUnlock(c *gin.Context, req PlayletChapterUnlockReq) (*APIEnvelope[PlayletChapterUnlockResp], error) {
|
|
if req.ChapterID <= 0 || req.PlayletID <= 0 {
|
|
return nil, fmt.Errorf("chapter unlock invalid chapterId/playletId")
|
|
}
|
|
var env APIEnvelope[PlayletChapterUnlockResp]
|
|
if _, err := upstream.PostJSON(c, chapterUnlockPath, req, &env); err != nil {
|
|
return nil, err
|
|
}
|
|
return &env, nil
|
|
}
|