This commit is contained in:
2026-04-24 20:30:52 +08:00
commit 704bc34625
152 changed files with 45612 additions and 0 deletions

332
mock/user.ts Normal file
View File

@@ -0,0 +1,332 @@
import type { Request, Response } from 'express';
// import userInfo from './userInfo.json';
const waitTime = (time: number = 100) => {
return new Promise((resolve) => {
setTimeout(() => {
resolve(true);
}, time);
});
};
const userInfo = {}
const { ANT_DESIGN_PRO_ONLY_DO_NOT_USE_IN_YOUR_PRODUCTION } = process.env;
/**
* Permissions of the current user. If empty, it means not logged in.
* current user access, if is '', user need login
* If it is a pro preview, it has permission by default.
*/
let access =
ANT_DESIGN_PRO_ONLY_DO_NOT_USE_IN_YOUR_PRODUCTION === 'site' ? 'admin' : '';
const getAccess = () => {
return access;
};
const successResponse = (data: any = null) => {
return {
code: 200,
message: 'ok',
success: true,
data,
};
}
// The code will be compatible with local service mocks and static data of the deployment site
export default {
// Supported values are Object and Array
'GET /api/auth/info': (_req: Request, res: Response) => {
const token = _req.headers.authorization?.split(' ')[1];
// res.status(401).send({
// data: {
// isLogin: false,
// },
// code: 401,
// message: 'Please log in first!',
// success: false,
// });
// return
if (!token) {
res.send({
data: {
isLogin: false,
},
code: 401,
message: 'Please log in first!',
success: false,
});
return;
}
res.send(successResponse(userInfo));
},
'POST /api/auth/login': async (req: Request, res: Response) => {
const { password, username, type } = req.body;
await waitTime(2000);
if (password === '123456' && username === 'superadmin') {
res.send(successResponse(userInfo));
access = 'admin';
return;
}
if (password === '123456' && username === 'user') {
res.send({
"token-prefix": "Bearer",
"token": "user111111"
});
access = 'user';
return;
}
res.send({
data: {
status: 'error',
type,
currentAuthority: 'guest',
},
code: 400,
message: 'Incorrect username or password!',
success: true,
});
access = 'guest';
},
'POST /api/login/outLogin': (_req: Request, res: Response) => {
access = '';
res.send(successResponse());
},
'GET /api/company/list': (_req: Request, res: Response) => {
res.send(
successResponse([
{
id: "C001",
name: 'Alpha Broker',
email: 'admin@alpha.com',
sourceNum: 5,
userNum: 10,
status: 1,
createTime: '2023-01-01 00:00:00',
},
{
id: "C002",
name: 'Beta Trading',
email: 'admin@beta.com',
sourceNum: 3,
userNum: 5,
status: 1,
createTime: '2023-01-01 00:00:00',
},
{
id: "C003",
name: 'Gamma FXr',
email: 'admin@gamma.com',
sourceNum: 1,
userNum: 5,
status: 0,
createTime: '2023-01-01 00:00:00',
},
])
);
},
'GET /api/user/list': (_req: Request, res: Response) => {
res.send(
successResponse([
{
id: "U001",
username: 'superadmin',
nameStr: 'Super Administrator',
email: 'sa@system.com',
role: 'Super Administrator',
companyName: 'Global',
dataSource: '-',
status: 1,
createTime: '2023-01-01 00:00:00',
},
{
id: "U002",
username: 'alpha_admin',
nameStr: 'Alpha Broker Administrator',
email: 'admin@alpha.com',
role: 'Company Administrator',
companyName: 'Alpha Broker',
dataSource: 'Alpha MT4, Alpha MT5',
status: 1,
createTime: '2023-01-01 00:00:00',
},
{
id: "U003",
username: 'alpha_user',
nameStr: 'Alpha Broker User',
email: 'user@alpha.com',
role: 'Company User',
companyName: 'Alpha Broker',
dataSource: 'Alpha MT4',
status: 0,
createTime: '2023-01-01 00:00:00',
},
{
id: "U004",
username: 'alpha_viewer',
nameStr: 'Alpha Broker Viewer',
email: 'viewer@alpha.com',
role: 'Company Viewer',
companyName: 'Alpha Broker',
dataSource: 'Alpha MT4, Alpha MT5',
status: 1,
createTime: '2023-01-01 00:00:00',
},
{
id: "U005",
username: 'beta_admin',
nameStr: 'Beta Trading Administrator',
email: 'admin@beta.com',
role: 'Company Administrator',
companyName: 'Beta Trading',
dataSource: 'Beta MT5',
status: 1,
createTime: '2023-01-01 00:00:00',
},
{
id: "U006",
username: 'beta_viewer',
nameStr: 'Beta Trading Viewer',
email: 'viewer@beta.com',
role: 'Company Viewer',
companyName: 'Beta Trading',
dataSource: 'Beta MT5',
status: 1,
createTime: '2023-01-01 00:00:00',
},
])
);
},
'GET /api/data-source/list': (_req: Request, res: Response) => {
res.send(
successResponse([
{
id: "DS001",
name: 'Alpha MT4',
ip: '192.168.1.100',
platformType: '4',
companyName: 'Alpha Broker',
ruleNum: 11,
alertNum: 2,
status: 1,
createTime: '2023-01-01 00:00:00',
},
{
id: "DS002",
name: 'Alpha MT5',
ip: '192.168.1.101',
platformType: '5',
companyName: 'Alpha Broker',
ruleNum: 1,
alertNum: 1,
status: 1,
createTime: '2023-01-01 00:00:00',
},
{
id: "DS003",
name: 'Beta MT5',
ip: '192.168.1.102',
platformType: '5',
companyName: 'Beta Trading',
ruleNum: 8,
alertNum: 5,
status: 1,
createTime: '2023-01-01 00:00:00',
},
{
id: "DS004",
name: 'Gamma MT4',
ip: '192.168.1.103',
platformType: '4',
companyName: 'Gamma FX',
ruleNum: 1,
alertNum: 0,
status: 0,
createTime: '2023-01-01 00:00:00',
},
])
);
},
'GET /api/roles/list': (_req: Request, res: Response) => {
res.send(
successResponse([
{ role_id: 'R001', role_key: 'super_admin', role_name: 'Super Administrator', color: 'danger', level: 100, is_system: true, permissions: ['view_dashboard', 'manage_rules', 'manage_products', 'view_alerts', 'manage_accounts', 'manage_companies', 'manage_datasources', 'manage_users', 'manage_roles', 'manage_settings'], created_at: '2023-01-01' },
{ role_id: 'R002', role_key: 'company_admin', role_name: 'Company Administrator', color: 'warning', level: 80, is_system: true, permissions: ['view_dashboard', 'manage_rules', 'manage_products', 'view_alerts', 'manage_accounts', 'manage_datasources', 'manage_users', 'manage_roles'], created_at: '2023-01-01' },
{ role_id: 'R003', role_key: 'company_user', role_name: 'Company User', color: 'info', level: 60, is_system: true, permissions: ['view_dashboard', 'manage_rules', 'manage_products', 'view_alerts'], created_at: '2023-01-01' },
{ role_id: 'R004', role_key: 'viewer', role_name: 'Company Viewer', color: 'secondary', level: 20, is_system: true, permissions: ['view_dashboard', 'view_alerts'], created_at: '2023-01-01' }
])
);
},
'GET /api/account/list': (_req: Request, res: Response) => {
res.send(
successResponse([
{ account_id: 'ACC001', source_id: 'DS001', platform: 'MT4', account_currency: 'USD', balance: 125000, equity: 128500, margin_level: 450, status: 'active', risk_level: 'high', created_at: '2023-06-15', alert_count: 2 },
{ account_id: 'ACC002', source_id: 'DS002', platform: 'MT5', account_currency: 'EUR', balance: 85000, equity: 82300, margin_level: 320, status: 'active', risk_level: 'medium', created_at: '2023-08-20', alert_count: 0 },
{ account_id: 'ACC003', source_id: 'DS001', platform: 'MT4', account_currency: 'JPY', balance: 15000000, equity: 15250000, margin_level: 580, status: 'active', risk_level: 'high', created_at: '2023-04-10', alert_count: 1 },
{ account_id: 'ACC004', source_id: 'DS003', platform: 'MT5', account_currency: 'GBP', balance: 45000, equity: 44200, margin_level: 280, status: 'active', risk_level: 'low', created_at: '2023-11-05', alert_count: 1 },
{ account_id: 'ACC005', source_id: 'DS003', platform: 'MT5', account_currency: 'USD', balance: 520000, equity: 535000, margin_level: 620, status: 'active', risk_level: 'high', created_at: '2023-02-28', alert_count: 1 }
])
);
},
'GET /api/alert/list': (_req: Request, res: Response) => {
res.send(
successResponse([
{ alert_id: 'A001', source_id: 'DS001', rule_type: 'large_trade', account_id: 'ACC001', product: 'EURUSD', trigger_time: '2024-01-15 10:35:00', trigger_value: 150000, status: 'new', platform: 'MT4' },
{ alert_id: 'A002', source_id: 'DS001', rule_type: 'scalping', account_id: 'ACC003', product: 'USDJPY', trigger_time: '2024-01-15 12:00:45', trigger_value: 45, status: 'new', platform: 'MT4' },
{ alert_id: 'A003', source_id: 'DS002', rule_type: 'large_trade', account_id: 'ACC001', product: 'XAUUSD', trigger_time: '2024-01-15 14:15:00', trigger_value: 180000, status: 'reviewed', platform: 'MT5' },
{ alert_id: 'A004', source_id: 'DS003', rule_type: 'large_trade', account_id: 'ACC005', product: 'BTCUSD', trigger_time: '2024-01-15 15:30:00', trigger_value: 320000, status: 'new', platform: 'MT5' },
{ alert_id: 'A005', source_id: 'DS003', rule_type: 'scalping', account_id: 'ACC004', product: 'EURUSD', trigger_time: '2024-01-15 14:00:25', trigger_value: 25, status: 'new', platform: 'MT5' }
])
);
},
'GET /api/product/list': (_req: Request, res: Response) => {
res.send(
successResponse([
{ id: 1, source_id: 'DS001', platform: 'MT4', raw_product_name: 'EURUSD', unified_product_code: 'EURUSD', product_category: 'Forex Major', enabled: true },
{ id: 2, source_id: 'DS002', platform: 'MT5', raw_product_name: 'EURUSD.', unified_product_code: 'EURUSD', product_category: 'Forex Major', enabled: true },
{ id: 3, source_id: 'DS001', platform: 'MT4', raw_product_name: 'XAUUSD', unified_product_code: 'XAUUSD', product_category: 'Commodities', enabled: true },
{ id: 4, source_id: 'DS002', platform: 'MT5', raw_product_name: 'GOLD', unified_product_code: 'XAUUSD', product_category: 'Commodities', enabled: true },
{ id: 5, source_id: 'DS003', platform: 'MT5', raw_product_name: 'EURUSD.', unified_product_code: 'EURUSD', product_category: 'Forex Major', enabled: true },
{ id: 6, source_id: 'DS003', platform: 'MT5', raw_product_name: 'BTCUSD', unified_product_code: 'BTCUSD', product_category: 'Crypto', enabled: true }
])
);
},
'GET /api/500': (_req: Request, res: Response) => {
res.status(500).send({
timestamp: 1513932555104,
status: 500,
error: 'error',
message: 'error',
path: '/base/category/list',
});
},
'GET /api/404': (_req: Request, res: Response) => {
res.status(404).send({
timestamp: 1513932643431,
status: 404,
error: 'Not Found',
message: 'No message available',
path: '/base/category/list/2121212',
});
},
'GET /api/403': (_req: Request, res: Response) => {
res.status(403).send({
timestamp: 1513932555104,
status: 403,
error: 'Forbidden',
message: 'Forbidden',
path: '/base/category/list',
});
},
'GET /api/401': (_req: Request, res: Response) => {
res.status(401).send({
timestamp: 1513932555104,
status: 401,
error: 'Unauthorized',
message: 'Unauthorized',
path: '/base/category/list',
});
},
};