2
0
Files
fe.wfc/src/typings/api.d.ts
2025-02-24 19:45:38 +08:00

974 lines
21 KiB
TypeScript

/**
* Namespace Api
*
* All backend api type
*/
declare namespace Api {
namespace Common {
/** common params of paginating */
interface PaginatingCommonParams {
/** total count */
total: number;
}
/** common params of paginating query list data */
interface PaginatingQueryRecord<T = any> extends PaginatingCommonParams {
rows: T[];
}
/**
* enable status
*
* - "0": enabled
* - "1": disabled
*/
type EnableStatus = '1' | '0';
/** common record */
type CommonRecord<T = any> = {
/** record creator */
createBy: string;
/** record create time */
createTime: string;
/** record updater */
updateBy: string;
/** record update time */
updateTime: string;
/** record status */
status: EnableStatus;
} & T;
type CommonTree = {
id: number;
label: string;
children?: CommonTree[];
}[];
}
namespace Department {
interface Dept {
createBy: any;
createTime: any;
updateBy: any;
updateTime: any;
remark: any;
deptId: number;
parentId: number;
ancestors: string;
deptName: string;
orderNum: number;
leader: string;
phone: any;
email: any;
status: string;
delFlag: any;
parentName: any;
children: any[];
}
}
/**
* Namespace Auth
*
* Backend api module: "auth"
*/
namespace Auth {
interface LoginToken {
access_token: string;
refreshToken: string;
}
/** User info */
interface UserInfo {
user: User | null;
roles: string[];
/** permissions */
permissions: string[];
}
interface User {
createBy: string;
createTime: string;
updateBy: any;
updateTime: any;
remark: string;
userId: number;
deptId: number;
userName: string;
nickName: string;
email: string;
phonenumber: string;
sex: string;
avatar: string;
password: string;
status: '0' | '1';
delFlag: string;
loginIp: string;
loginDate: string;
dept: Department.Dept;
roles: Role[];
roleId: string;
postIds: number[];
roleIds: number[];
admin: boolean;
}
interface Role {
remark: any;
roleId: number;
roleName: string;
roleKey: string;
roleSort: number;
dataScope: string;
menuCheckStrictly: boolean;
deptCheckStrictly: boolean;
status: string;
delFlag: '0' | '1';
flag: boolean;
menuIds: number[] | null;
deptIds: number[] | null;
permissions: any;
admin: boolean;
}
interface LoginBody {
username: string;
password: string;
code: string;
uuid: string;
authType: string;
}
interface RegisterBody{
username: string;
password: string;
authType:string;
email: string;
fullName: string;
age: number;
address: string;
sex: string;
phonenumber: string;
}
interface EmailCaptcha{
email:string;
}
interface CheckBody{
username?: string;
email?: string;
phonenumber?:string;
authType: string;
}
interface RateLimit {
id: number;
rateLimitName: string;
upLimit: number;
downLimit: number;
upLimitEnable: boolean;
downLimitEnable: boolean;
createBy: number;
createTime: string;
updateBy: number;
updateTime: string;
delFlag: boolean;
}
interface RateLimitAdd {
rateLimitName: string;
upLimitEnable: boolean;
downLimitEnable: boolean;
upLimit: number;
downLimit: number;
}
interface Package {
id: string;
packageName: string;
periodNum: number;
periodType: number;
price: string;
trafficEnable: boolean;
traffic: number;
rateLimitEnable: boolean;
rateLimitId?: number;
durationEnable: boolean;
duration: number;
clientNumEnable: boolean;
clientNum: number;
packageEnable: boolean;
createBy: number;
createTime: string;
updateBy: number;
updateTime: string;
delFlag: boolean;
}
interface PackageAdd {
packageName: string;
periodNum: number;
periodType: number;
price: string;
trafficEnable: boolean;
traffic: number;
rateLimitEnable: boolean;
rateLimitId?: number;
durationEnable: boolean;
duration: number;
clientNumEnable: boolean;
clientNum: number;
packageEnable: boolean;
}
// CDR 话单查询参数
interface CdrHistoryParams {
pageNum: number;
pageSize: number;
userName?: string;
clientName?: string;
clientMac?: string;
startTime?: string;
endTime?: string;
}
// CDR 话单信息
interface CdrHistory {
id: string;
userId: number;
userName: string;
clientName: string;
clientMac: string;
trafficUp: number;
trafficDown: number;
startTime: string;
endTime: string;
duration: number;
}
// CDR 话单响应
interface CdrHistoryResponse {
rows: CdrHistory[];
total: number;
}
// 账单查询参数
interface BillParams {
pageNum: number;
pageSize: number;
userName?: string;
type?: number;
status?: number;
}
// 账单信息
interface BillInfo {
id: string;
userId: number;
userName: string;
type: number;
packageName: string;
orderAmount: number;
status: number;
createTime: string;
updateTime: string;
}
// 账单响应
interface BillResponse {
rows: BillInfo[];
total: number;
}
}
/**
* Namespace Route
*
* Backend api module: "route"
*/
namespace Route {
type ElegantConstRoute = import('@elegant-router/types').ElegantConstRoute;
interface MenuRoute extends ElegantConstRoute {
id: string;
}
interface UserRoute {
routes: MenuRoute[];
home: import('@elegant-router/types').LastLevelRouteKey;
}
}
/**
* namespace SystemManage
*
* backend api module: "systemManage"
*/
namespace SystemManage {
type CommonSearchParams = {
/** page number */
pageNum: number;
/** page size */
pageSize: number;
};
/** role */
type Role = Common.CommonRecord<{
remark: string;
roleId: number;
roleName: string;
roleKey: string;
roleSort: number;
dataScope: string;
menuCheckStrictly: boolean;
deptCheckStrictly: boolean;
status: string;
delFlag: '0' | '1';
flag: boolean;
menuIds: number[] | null;
deptIds: number[] | null;
permissions: string;
admin: boolean;
}>;
/** role search params */
type RoleSearchParams = Partial<
Pick<Api.SystemManage.Role, 'roleName' | 'roleKey' | 'status'> & CommonSearchParams
>;
/** role list */
type RoleList = Common.PaginatingQueryRecord<Role>;
/** all role */
type AllRole = Pick<Role, 'roleId' | 'roleName' | 'remark' | 'roleKey'>;
/**
* user gender
*
* - "1": "male"
* - "2": "female"
*/
type UserGender = '1' | '2';
/** user */
type UserInfo = Common.CommonRecord<{
/** user name */
username: string;
/** user gender */
userGender: UserGender | null;
/** user nick name */
nickName: string;
/** user phone */
userPhone: string;
/** user email */
userEmail: string;
/** user role code collection */
userRoles: string[];
}>;
/** user search params */
type UserSearchParams = Partial<
Pick<Auth.User, 'userName' | 'nickName' | 'phonenumber' | 'status' | 'sex' | 'email' | 'deptId'> &
CommonSearchParams
>;
/** user list */
type UserList = Common.PaginatingQueryRecord<Auth.User>;
type UserPostsAndRoles = {
posts: Post[];
roles: Role[];
postIds: number[];
roleIds: number[];
};
/**
* menu type
*
* - "1": directory
* - "2": menu
*/
type MenuType = 'M' | 'C' | 'F';
type MenuButton = {
/**
* button code
*
* it can be used to control the button permission
*/
code: string;
/** button description */
desc: string;
};
/**
* icon type
*
* - "1": iconify icon
* - "2": local icon
*/
type IconType = '1' | '2';
type Menu = Common.CommonRecord<{
/** parent menu id */
parentId: number;
/** menu type */
menuType: MenuType;
/** menu name */
menuName: string;
/** route name */
routeName: string;
/** route path */
routePath: string;
/** component */
component?: string;
menuId: number;
path: string;
/**
* i18n key
*
* it is for internationalization
*/
i18nKey?: App.I18n.I18nKey;
/** iconify icon name or local icon name */
icon: string;
/** icon type */
iconType: IconType;
/** menu order */
orderNum: number;
/** whether to cache the route */
keepAlive?: '0' | '1';
/** outer link */
href?: string;
/** whether to retain the route */
status: '0' | '1';
/** whether to hide the route in the menu */
hideInMenu?: '0' | '1';
/**
* The menu key will be activated when entering the route
*
* The route is not in the menu
*
* @example
* the route is "user_detail", if it is set to "user_list", the menu "user_list" will be activated
*/
activeMenu?: import('@elegant-router/types').LastLevelRouteKey;
/** By default, the same route path will use one tab, if set to true, it will use multiple tabs */
multiTab?: boolean;
/** If set, the route will be fixed in tabs, and the value is the order of fixed tabs */
fixedIndexInTab?: number;
/** menu buttons */
buttons?: MenuButton[];
/** children menu */
children?: Menu[];
/** is external link */
isFrame: '0' | '1';
/** perms to request api */
perms: string;
/** menu name(path combine) */
name: string;
isCache: '0' | '1';
visible: '0' | '1';
}>;
/** menu list */
type MenuList = Common.PaginatingQueryRecord<Menu>;
type MenuTree = {
id: number;
label: string;
pId: number;
children?: MenuTree[];
};
// dept api
/** dept */
type Dept = {
createBy: string;
createTime: string;
updateBy: string;
updateTime: string;
remark: string;
deptId: number;
parentId: number;
ancestors: string;
deptName: string;
orderNum: number;
leader: string;
phone: string;
email: string;
status: '0' | '1';
delFlag: string;
parentName: string;
children: Dept[];
};
type DeptList = Common.PaginatingQueryRecord<Dept>;
/** dept search params */
type DeptSearchParams = Partial<Pick<Dept, 'deptName' | 'status'> & CommonSearchParams>;
// post api
type Post = {
createBy: string;
createTime: string;
updateBy: any;
updateTime: any;
remark: string;
postId: number;
postCode: string;
postName: string;
postSort: number;
status: '0' | '1';
flag: boolean;
};
type PostSearchParams = Partial<Pick<Post, 'postName' | 'status' | 'postCode'> & CommonSearchParams>;
type PostList = Common.PaginatingQueryRecord<Post>;
// dict api
type Dict = {
createBy: string;
createTime: string;
updateBy: string;
updateTime: string;
remark: string;
dictId: number;
dictName: string;
dictType: string;
status: '0' | '1';
delFlag: string;
};
type DictSearchParams = Partial<Pick<Dict, 'dictName' | 'dictType' | 'status'> & CommonSearchParams>;
type DictList = Common.PaginatingQueryRecord<Dict>;
}
namespace Device {
interface ApDevice {
mac: string;
name: string;
type: string;
subtype: string | null;
deviceSeriesType: number;
model: string;
ip: string;
ipv6: string | null;
uptime: string;
status: number;
lastSeen: number;
cpuUtil: number;
memUtil: number;
sn: string;
licenseStatus: number;
tagName: string | null;
uplinkDeviceMac: string | null;
uplinkDeviceName: string | null;
uplinkDevicePort: string | null;
linkSpeed: string | null;
duplex: string | null;
switchConsistent: boolean;
publicIp: string;
firmwareVersion: string;
}
interface ApDeviceListData {
total: number;
rows: ApDevice[];
}
interface ApDeviceResponse {
code: number;
msg: string;
data: ApDeviceListData;
}
interface ApDeviceParams {
pageNum: number;
pageSize: number;
name?: string;
mac?: string;
}
interface TerminalDevice {
id: number;
name: string;
ip: string;
authStatus: number;
ssid: string;
apName: string;
activity: number;
trafficDown: number;
trafficUp: number;
uptime: number;
mac:string;
createBy: string | null;
createTime: string;
updateBy: string | null;
updateTime: string | null;
}
type TerminalDeviceResponse = App.Service.Response<TerminalDevice[]>;
interface TerminalDeviceParams {
pageNum: number;
pageSize: number;
clientName?: string;
clientDeviceType?: string;
clientMac?: string;
}
/** AP设备添加参数 */
interface AddApDeviceItem {
sn?: string;
name?: string;
username?: string;
password?: string;
}
interface AddApDeviceParams {
devices: AddApDeviceItem[];
}
interface ApDeviceLocation {
longitude: number;
latitude: number;
address: string;
}
interface ApDeviceConfigData {
name: string;
ledSetting: number;
tagIds: string[];
location: ApDeviceLocation;
}
interface ApDeviceConfigResponse {
code: number;
msg: string;
data: {
name: string;
ledSetting: number;
tagIds: string[];
location: {
longitude: number;
latitude: number;
address: string;
}
}|null;
}
interface ApDeviceConfigUpdate {
name?: string;
ledSetting?: number;
tagIds?: string[];
location?: {
longitude?: number;
latitude?: number;
address?: string;
}
}
interface ApDeviceConfigForm {
name: string;
ledSetting: number;
tagIds?: string[];
longitude?: number;
latitude?: number;
address?: string;
}
}
namespace Billing {
interface BillRule {
id: number;
traffic: number;
price: number;
unit: number;
enable: boolean;
createBy: string | null;
createTime: string;
updateBy: string | null;
updateTime: string | null;
}
type BillRuleResponse = App.Service.Response<BillRule[]>;
interface BillRuleUpdate {
traffic: number;
price: number;
unit: number;
enable: boolean;
}
}
interface DashboardOverview {
cloud: {
connected: boolean;
};
siteNum: number;
totalGatewayNum: number;
connectedGatewayNum: number;
disconnectedGatewayNum: number;
totalSwitchNum: number;
connectedSwitchNum: number;
disconnectedSwitchNum: number;
totalApNum: number;
connectedApNum: number;
disconnectedApNum: number;
isolatedApNum: number;
totalClientNum: number;
wiredClientNum: number;
wirelessClientNum: number;
guestNum: number;
registerUserNum: number;
onlineUserNum: number;
}
interface DashboardSite {
siteId: string;
name: string;
region: string;
tagIds: string[];
timeZone: string;
scenario: string;
totalGatewayNum: number;
connectedGatewayNum: number;
disconnectedGatewayNum: number;
totalSwitchNum: number;
connectedSwitchNum: number;
disconnectedSwitchNum: number;
totalApNum: number;
connectedApNum: number;
disconnectedApNum: number;
isolatedApNum: number;
totalClientNum: number;
wiredClientNum: number;
wirelessClientNum: number;
guestNum: number;
}
interface DashboardSiteResponse {
rows: DashboardSite[];
total: number;
}
namespace Kyc {
interface KycInfo {
id: string;
userId: number;
userName: string;
realName: string;
idType: string;
idFile: string;
identifyPicture: string;
status: string;
reason?: string;
createTime: string;
updateTime: string;
}
interface KycParams {
pageNum: number;
pageSize: number;
userName?: string;
status?: string;
createTimeStart?: string;
createTimeEnd?: string;
}
interface KycResponse {
rows: KycInfo[];
total: number;
}
}
namespace Site {
interface SiteInfo {
siteId: string;
name: string;
tagIds: string[];
region: string;
timeZone: string;
scenario: string;
longitude: number | null;
latitude: number | null;
address: string | null;
type: number;
supportES: boolean;
supportL2: boolean;
}
interface SiteParams {
pageNum: number;
pageSize: number;
}
interface SiteListData {
total: number;
rows: SiteInfo[];
}
type SiteResponse = App.Service.ApiResponse<{
rows: SiteInfo[];
total: number;
}>;
}
namespace Wlan {
interface WlanGroup {
wlanId: string;
wlanName: string;
ssidList: SsidInfo[];
}
type WlanGroupResponse = App.Service.ApiResponse<WlanGroup[]>;
interface WlanSsid {
ssidId: string;
name: string;
deviceType: number;
band: number;
guestNetEnable: boolean;
security: number;
broadcast: boolean;
vlanEnable: boolean;
vlanId: number | null;
mloEnable?: boolean;
pmfMode?: number;
enable11r?: boolean;
hidePwd?: boolean;
}
interface WlanSsidConfigResponse extends App.Service.ApiResponse<WlanSsid> {}
interface WlanSsidResponse extends App.Service.ApiResponse<{
rows: WlanSsid[];
total: number;
}>{}
interface WlanSsidParams {
pageNum: number;
pageSize: number;
}
interface AddWlanSsidParams {
name: string;
deviceType: number;
band: number;
guestNetEnable: boolean;
security: number;
broadcast: boolean;
vlanEnable: boolean;
vlanId?: number;
// 固定值字段
mloEnable: false;
pmfMode: 1;
enable11r: false;
hidePwd: false;
greEnable: false;
}
// 表单数据类型
interface WlanSsidForm {
name: string;
deviceType: {
eap: boolean;
gateway: boolean;
};
band: {
band24G: boolean;
band5G: boolean;
band6G: boolean;
};
guestNetEnable: boolean;
security: number;
broadcast: boolean;
vlanEnable: boolean;
vlanId?: number;
}
}
namespace Portal {
interface Portal {
id: string;
name: string;
enable: boolean;
ssidNames: string[];
ssidList: string[];
networkList: string[];
authType: number;
hotspotTypes: any;
}
interface PortalResponse extends App.Service.ApiResponse<{
rows: Portal[];
total: number;
}> {}
}
namespace Portal {
// 先定义基础类型
interface SsidInfo {
ssidId: string;
ssidName: string;
}
interface WlanGroup {
wlanId: string;
wlanName: string;
ssidList: SsidInfo[];
}
interface Portal {
id: string;
name: string;
enable: boolean;
ssidNames: string[];
ssidList: string[];
networkList: string[];
authType: number;
hotspotTypes: any;
}
interface PortalResponse extends App.Service.ApiResponse<{
rows: Portal[];
total: number;
}> {}
interface SsidListResponse extends App.Service.ApiResponse<WlanGroup[]> {}
interface AuthTimeout {
customTimeout: number;
customTimeoutUnit: 1 | 2 | 3; // 1:分钟 2:小时 3:天
}
interface NoAuth {
dailyLimitEnable: boolean;
}
interface ExternalPortal {
hostType: 1 | 2; // 1: IP地址 2: URL
serverUrl: string; // IP地址或URL值
serverUrlScheme?: string; // URL时的协议类型
}
interface ImportedPortalPage {
id: string;
}
interface AddPortalParams {
name: string;
enable: boolean;
ssidList: string[];
authType: number;
authTimeout: AuthTimeout;
noAuth: NoAuth;
httpsRedirectEnable: boolean;
landingPage: 1 | 2 | 3;
landingUrlScheme?: string;
landingUrl?: string;
externalPortal?: ExternalPortal; // 添加外部Portal配置
pageType: number;
importedPortalPage: ImportedPortalPage;
}
}
}
declare namespace App {
namespace Service {
interface ApiResponse<T = any> {
data: T;
error: any;
}
}
}