feat(credit): 添加用户数据范围控制功能

- 在所有信用模块的搜索参数接口中添加 userId 字段
- 集成 withCreditUserScope 数据范围工具函数到各个 API 请求
- 实现对行政许可、破产重整、分支机构、失信被执行人等所有信用数据的用户范围过滤
- 统一处理分页和列表查询的数据范围限制
- 确保所有信用相关 API 都支持基于用户的权限控制
This commit is contained in:
2026-01-21 13:15:48 +08:00
parent fa188f482b
commit 6b21547b09
57 changed files with 216 additions and 167 deletions

View File

@@ -0,0 +1,49 @@
import { hasRole } from '@/utils/permission';
import { useUserStore } from '@/store/modules/user';
function isSuperAdmin(): boolean {
try {
return hasRole('superAdmin');
} catch {
return false;
}
}
function getCurrentUserId(): number | undefined {
try {
const store = useUserStore();
const id = store?.info?.userId;
if (typeof id === 'number' && Number.isFinite(id) && id > 0) {
return id;
}
} catch {
// Pinia may not be active in some early-init code paths.
}
const raw = localStorage.getItem('UserId');
if (!raw) {
return undefined;
}
const n = Number(raw);
return Number.isFinite(n) && n > 0 ? n : undefined;
}
/**
* Credit module data scope:
* - superAdmin: see all data
* - others: only see data published by themselves (userId)
*/
export function withCreditUserScope<T extends Record<string, any> | undefined>(
params: T
): T {
if (isSuperAdmin()) {
return params;
}
const userId = getCurrentUserId();
if (!userId) {
return params;
}
if (!params) {
return { userId } as T;
}
return { ...(params as any), userId } as T;
}