From 04253b91205203a68034ea72900941a6021348b6 Mon Sep 17 00:00:00 2001 From: jacy <18049821889@163.com> Date: Fri, 17 Jul 2026 10:02:42 +0800 Subject: [PATCH] feat(partner): let sub-accounts view team leaderboard Expose same-primary ranking on home/me for all staff including warehouse roles, and open the leaderboard API without business permission gates. Co-authored-by: Cursor --- apps/h5-partner/src/PartnerAppRoutes.tsx | 2 +- apps/h5-partner/src/lib/partnerAccess.ts | 4 ++-- apps/h5-partner/src/pages/CenterPage.tsx | 9 ++++++++ apps/h5-partner/src/pages/HomePage.tsx | 21 ++++++++++--------- apps/h5-partner/src/pages/LeaderboardPage.tsx | 2 +- .../src/modules/store/store.controller.ts | 2 ++ 6 files changed, 26 insertions(+), 14 deletions(-) diff --git a/apps/h5-partner/src/PartnerAppRoutes.tsx b/apps/h5-partner/src/PartnerAppRoutes.tsx index f7edfc6..1a89802 100644 --- a/apps/h5-partner/src/PartnerAppRoutes.tsx +++ b/apps/h5-partner/src/PartnerAppRoutes.tsx @@ -63,9 +63,9 @@ function SubAccountRoutes() { <> } /> } /> - } /> )} + } /> {isWarehouse && } />} } /> diff --git a/apps/h5-partner/src/lib/partnerAccess.ts b/apps/h5-partner/src/lib/partnerAccess.ts index a8b32ca..e5de491 100644 --- a/apps/h5-partner/src/lib/partnerAccess.ts +++ b/apps/h5-partner/src/lib/partnerAccess.ts @@ -48,8 +48,8 @@ export function partnerHomePath(account: PartnerMe | null | undefined): string { return '/'; } -const STORE_STAFF_PREFIXES = ['/', '/stores', '/me', '/login']; -const WAREHOUSE_STAFF_PREFIXES = ['/', '/orders', '/me', '/login']; +const STORE_STAFF_PREFIXES = ['/', '/stores', '/me', '/leaderboard', '/login']; +const WAREHOUSE_STAFF_PREFIXES = ['/', '/orders', '/me', '/leaderboard', '/login']; export function isSubAccountPath(pathname: string, navKind: PartnerNavKind = 'store_staff'): boolean { if (pathname === '/login') return true; diff --git a/apps/h5-partner/src/pages/CenterPage.tsx b/apps/h5-partner/src/pages/CenterPage.tsx index ca63791..ba2db17 100644 --- a/apps/h5-partner/src/pages/CenterPage.tsx +++ b/apps/h5-partner/src/pages/CenterPage.tsx @@ -251,6 +251,15 @@ export default function CenterPage({ variant = 'primary', roleLabel }: CenterPag {!isPrimary && (
+ +
+
+ emoji_events +
+ 团队贡献榜 +
+ chevron_right +
- - )} + + ); diff --git a/apps/h5-partner/src/pages/LeaderboardPage.tsx b/apps/h5-partner/src/pages/LeaderboardPage.tsx index bcc3985..9d649d2 100644 --- a/apps/h5-partner/src/pages/LeaderboardPage.tsx +++ b/apps/h5-partner/src/pages/LeaderboardPage.tsx @@ -47,7 +47,7 @@ export default function LeaderboardPage() { return (
- navigate('/')} /> + navigate('/')} />
{PERIOD_TABS.map((tab) => ( diff --git a/server/dukang-api/src/modules/store/store.controller.ts b/server/dukang-api/src/modules/store/store.controller.ts index d9d44db..30a19e8 100644 --- a/server/dukang-api/src/modules/store/store.controller.ts +++ b/server/dukang-api/src/modules/store/store.controller.ts @@ -89,6 +89,8 @@ export class PartnerDashboardController { } @Get('leaderboard') + /** 任意合伙人子账号可看同主账号排行(激励),不校验业务权限点 */ + @RequirePartnerPermissions() leaderboard( @CurrentUser() user: AuthUser, @Query('period') period?: string,