feat(huya): 客服开放精英宝典工作台与外部 CK 导入
This commit is contained in:
@@ -66,6 +66,7 @@ PERMISSIONS = {
|
||||
"huya:cookie:view": "查看虎牙 Cookie",
|
||||
"huya:cookie:export": "导出/清除虎牙 Cookie",
|
||||
"huya:task": "虎牙任务管理",
|
||||
"huya:elite:import_ck": "精英宝典工作台导入外部 CK",
|
||||
"huya:bind": "虎牙绑定操作",
|
||||
"huya:recharge": "虎牙充值操作",
|
||||
"huya:config": "虎牙配置管理",
|
||||
@@ -176,6 +177,7 @@ ROLE_PERMISSIONS = {
|
||||
"huya:view_assigned",
|
||||
"huya:tag",
|
||||
"huya:task",
|
||||
"huya:elite:import_ck",
|
||||
# 客服能看能改(共享表,靠审计留痕),但删除只给运营。
|
||||
"huya:collab:view",
|
||||
"huya:collab:edit",
|
||||
|
||||
@@ -132,6 +132,15 @@ def _require_huya_perm(user: User, permission: str) -> None:
|
||||
raise HTTPException(status_code=403, detail="权限不足")
|
||||
|
||||
|
||||
def _require_huya_workbench_import_ck(user: User) -> None:
|
||||
"""工作台导入外部 CK 的专用权限;运营仍走历史 huya:import。"""
|
||||
if not (
|
||||
_has_huya_perm(user, "huya:import")
|
||||
or _has_huya_perm(user, "huya:elite:import_ck")
|
||||
):
|
||||
raise HTTPException(status_code=403, detail="权限不足")
|
||||
|
||||
|
||||
def _require_huya_tag_permission(user: User) -> None:
|
||||
"""标签权限兼容历史上使用导入权限的运营人员。"""
|
||||
if not (_has_huya_perm(user, "huya:tag") or _has_huya_perm(user, "huya:import")):
|
||||
|
||||
@@ -414,7 +414,7 @@ def import_workbench_cookies(
|
||||
导入后的账号会出现在工作台账号列表里,可照常执行「生成开通支付码 / 绑定二维码 /
|
||||
查询角色 / 刷新积分」等操作。没有归属的新账号自动归属到导入者,否则客服看不到。
|
||||
"""
|
||||
_require_huya_perm(current, "huya:import")
|
||||
_require_huya_workbench_import_ck(current)
|
||||
accounts, skipped = import_huya_cookies_detailed(
|
||||
db, req.text, req.tag, assign_to=current.id
|
||||
)
|
||||
|
||||
@@ -91,9 +91,10 @@ export default function MainLayout({ onLogout }: { onLogout?: () => void }) {
|
||||
douyuItems.push({ key: '/douyu/collab', label: '外部单协作', icon: <FileExcelOutlined /> });
|
||||
}
|
||||
|
||||
// 虎牙:客服只保留浏览器兑换;管理员/运营显示完整入口
|
||||
// 虎牙:客服用浏览器兑换和精英宝典;管理员/运营显示完整入口
|
||||
if (can('huya:task')) {
|
||||
if (user?.role === 'support') {
|
||||
huyaItems.push({ key: '/huya/elite', label: '精英宝典', icon: <BookOutlined /> });
|
||||
huyaItems.push({ key: '/huya/browser-exchange', label: '浏览器兑换', icon: <GlobalOutlined /> });
|
||||
} else {
|
||||
if (canAny(['huya:account', 'huya:view_all', 'huya:view_assigned'])) {
|
||||
|
||||
@@ -164,7 +164,7 @@ function taskQrUrl(task: HuyaTaskItem | undefined): string {
|
||||
export default function HuyaElitePage() {
|
||||
const { can } = usePermissions();
|
||||
const canConfig = can('huya:config');
|
||||
const canImport = can('huya:import');
|
||||
const canImport = can('huya:import') || can('huya:elite:import_ck');
|
||||
const [pool, setPool] = useState<HuyaAccountItem[]>([]);
|
||||
const [accounts, setAccounts] = useState<HuyaAccountItem[]>([]);
|
||||
const [selectedIds, setSelectedIds] = useState<number[]>([]);
|
||||
|
||||
Reference in New Issue
Block a user