Files
alert/mock/user.ts
2026-04-24 20:30:52 +08:00

333 lines
12 KiB
TypeScript
Raw Permalink Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
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',
});
},
};