feat: 07 创作者中心批 3(分片上传挂载 + 分集收费与试看)
为什么:创作者传完片子得把产物挂到分集上才能播,而这条链路之前有两个洞:
uploadId 是"凭证",谁拿到都能往别人的会话里塞分片 / 合并;产物挂载也没有归属校验,
拿到别人的 assetId 就能把自己的剧指向别人的素材。定价这边则缺创作者入口与试看秒数配置。
- 上传复用现有 /admin/media/upload/{init,chunk,complete},不重写;新增 GET /admin/media/upload/{uploadId}
做断点续传回显(receivedChunks/totalChunks/percent/status,完成后带 url)
- 上传会话归属校验:chunk / complete / 进度查询都要求会话发起人,别人拿到 uploadId 也操作不了(403)
- 新增 attach 接口:产物必须① 是本次登录的人上传的(media_asset.create_by)② bizType=EPISODE 且状态 ready/uploaded
③ 分集属于自己这部剧且作品可编辑;挂载时把产物时长补到分集上
- 收费配置复用 PriceService:新增创作者侧 GET/PUT /admin/creator-center/dramas/{id}/prices;
PriceSaveReqVO/PriceRespVO 补 previewSeconds(落在已有的 drama_episode.preview_seconds,不新造一套)
- 定价沿用"可编辑状态"口径:draft/offline 可改,已上线要先申请下线;dramaId 以路径为准,别人的 episodeId 被忽略
- 权限点 creator-center:upload / creator-center:price:update;创作者角色同时获得 cover:upload / episode:upload(复用上传接口)
实测:未登录请求付费集返回 {"accessType":"COIN_REQUIRED","unlockCoin":50,"previewSeconds":15},
免费集直接拿到签名播放地址 —— 创作者改的价格确实走到了 C 端付费判定。
This commit is contained in:
1 parent
255bcbf02b
commit
8b8ebf944f
12 files changed
+269
-10
No files matched your search
+17
-3
@@ -179,7 +179,9 @@ ON CONFLICT (id) DO UPDATE SET name = EXCLUDED.name, code = EXCLUDED.code,
|
||||
-- 权限点按批补:批 1 只有「进创作者中心」这一个,后面各批用到什么再幂等追加
|
||||
INSERT INTO sys_permission (code, name, group_name, type, sort) VALUES
|
||||
('creator-center:view', '访问创作者中心', '创作者中心', 'BUTTON', 150),
|
||||
('creator-center:drama:edit', '创作者中心-编辑作品', '创作者中心', 'BUTTON', 151)
|
||||
('creator-center:drama:edit', '创作者中心-编辑作品', '创作者中心', 'BUTTON', 151),
|
||||
('creator-center:upload', '创作者中心-上传与挂载', '创作者中心', 'BUTTON', 152),
|
||||
('creator-center:price:update', '创作者中心-配置分集价格', '创作者中心', 'BUTTON', 153)
|
||||
ON CONFLICT (code) DO NOTHING;
|
||||
|
||||
-- 创作者角色只拿创作者中心这几个点,不给任何后台运营权限
|
||||
@@ -188,7 +190,8 @@ SELECT r.id, p.id
|
||||
FROM sys_role r
|
||||
CROSS JOIN sys_permission p
|
||||
WHERE r.code = 'creator'
|
||||
AND p.code IN ('creator-center:view', 'creator-center:drama:edit')
|
||||
AND p.code IN ('creator-center:view', 'creator-center:drama:edit',
|
||||
'creator-center:upload', 'creator-center:price:update')
|
||||
ON CONFLICT DO NOTHING;
|
||||
|
||||
-- 超管也留一份,方便排查创作者视角的问题(超管没有绑定创作者主体,进 creator-center 仍会被挡)
|
||||
@@ -197,5 +200,16 @@ SELECT r.id, p.id
|
||||
FROM sys_role r
|
||||
CROSS JOIN sys_permission p
|
||||
WHERE r.code = 'super_admin'
|
||||
AND p.code IN ('creator-center:view', 'creator-center:drama:edit')
|
||||
AND p.code IN ('creator-center:view', 'creator-center:drama:edit',
|
||||
'creator-center:upload', 'creator-center:price:update')
|
||||
ON CONFLICT DO NOTHING;
|
||||
|
||||
-- 媒资分片上传是复用后台已有的 /admin/media/upload/*,所以创作者角色要用现成的上传权限点,
|
||||
-- 不再造一套 creator-center 的上传接口(上传会话归属与产物归属另在服务层校验)。
|
||||
INSERT INTO sys_role_permission (role_id, permission_id)
|
||||
SELECT r.id, p.id
|
||||
FROM sys_role r
|
||||
CROSS JOIN sys_permission p
|
||||
WHERE r.code = 'creator'
|
||||
AND p.code IN ('cover:upload', 'episode:upload')
|
||||
ON CONFLICT DO NOTHING;
|
||||
Reference in new issue
Block a user