178 lines
5.2 KiB
JavaScript
178 lines
5.2 KiB
JavaScript
|
|
/**
|
||
|
|
* 仪表盘路由
|
||
|
|
* @file dashboard.js
|
||
|
|
* @description 仪表盘相关的路由定义
|
||
|
|
*/
|
||
|
|
const express = require('express');
|
||
|
|
const dashboardController = require('../controllers/dashboardController');
|
||
|
|
const { authMiddleware, tellerMiddleware } = require('../middleware/auth');
|
||
|
|
|
||
|
|
const router = express.Router();
|
||
|
|
|
||
|
|
// 所有路由都需要认证
|
||
|
|
router.use(authMiddleware);
|
||
|
|
|
||
|
|
/**
|
||
|
|
* @swagger
|
||
|
|
* /api/dashboard:
|
||
|
|
* get:
|
||
|
|
* summary: 获取仪表盘统计数据
|
||
|
|
* tags: [仪表盘]
|
||
|
|
* security:
|
||
|
|
* - bearerAuth: []
|
||
|
|
* responses:
|
||
|
|
* 200:
|
||
|
|
* description: 获取成功
|
||
|
|
* content:
|
||
|
|
* application/json:
|
||
|
|
* schema:
|
||
|
|
* type: object
|
||
|
|
* properties:
|
||
|
|
* success:
|
||
|
|
* type: boolean
|
||
|
|
* message:
|
||
|
|
* type: string
|
||
|
|
* data:
|
||
|
|
* type: object
|
||
|
|
* properties:
|
||
|
|
* overview:
|
||
|
|
* type: object
|
||
|
|
* properties:
|
||
|
|
* totalUsers:
|
||
|
|
* type: integer
|
||
|
|
* totalAccounts:
|
||
|
|
* type: integer
|
||
|
|
* totalTransactions:
|
||
|
|
* type: integer
|
||
|
|
* totalBalance:
|
||
|
|
* type: integer
|
||
|
|
* activeUsers:
|
||
|
|
* type: integer
|
||
|
|
* activeAccounts:
|
||
|
|
* type: integer
|
||
|
|
* today:
|
||
|
|
* type: object
|
||
|
|
* properties:
|
||
|
|
* transactionCount:
|
||
|
|
* type: integer
|
||
|
|
* transactionAmount:
|
||
|
|
* type: integer
|
||
|
|
* accountTypes:
|
||
|
|
* type: array
|
||
|
|
* items:
|
||
|
|
* type: object
|
||
|
|
* properties:
|
||
|
|
* type:
|
||
|
|
* type: string
|
||
|
|
* count:
|
||
|
|
* type: integer
|
||
|
|
* totalBalance:
|
||
|
|
* type: integer
|
||
|
|
* trends:
|
||
|
|
* type: array
|
||
|
|
* items:
|
||
|
|
* type: object
|
||
|
|
* properties:
|
||
|
|
* date:
|
||
|
|
* type: string
|
||
|
|
* count:
|
||
|
|
* type: integer
|
||
|
|
* totalAmount:
|
||
|
|
* type: integer
|
||
|
|
* 401:
|
||
|
|
* description: 未授权
|
||
|
|
* 500:
|
||
|
|
* description: 服务器内部错误
|
||
|
|
*/
|
||
|
|
router.get('/', tellerMiddleware, dashboardController.getDashboardStats);
|
||
|
|
|
||
|
|
/**
|
||
|
|
* @swagger
|
||
|
|
* /api/dashboard/charts:
|
||
|
|
* get:
|
||
|
|
* summary: 获取图表数据
|
||
|
|
* tags: [仪表盘]
|
||
|
|
* security:
|
||
|
|
* - bearerAuth: []
|
||
|
|
* parameters:
|
||
|
|
* - in: query
|
||
|
|
* name: type
|
||
|
|
* schema:
|
||
|
|
* type: string
|
||
|
|
* enum: [transaction_trend, account_distribution, user_growth, balance_trend]
|
||
|
|
* description: 图表类型
|
||
|
|
* - in: query
|
||
|
|
* name: period
|
||
|
|
* schema:
|
||
|
|
* type: string
|
||
|
|
* enum: [1d, 7d, 30d, 90d]
|
||
|
|
* default: 7d
|
||
|
|
* description: 时间周期
|
||
|
|
* responses:
|
||
|
|
* 200:
|
||
|
|
* description: 获取成功
|
||
|
|
* content:
|
||
|
|
* application/json:
|
||
|
|
* schema:
|
||
|
|
* type: object
|
||
|
|
* properties:
|
||
|
|
* success:
|
||
|
|
* type: boolean
|
||
|
|
* message:
|
||
|
|
* type: string
|
||
|
|
* data:
|
||
|
|
* type: object
|
||
|
|
* properties:
|
||
|
|
* type:
|
||
|
|
* type: string
|
||
|
|
* data:
|
||
|
|
* type: array
|
||
|
|
* 400:
|
||
|
|
* description: 请求参数错误
|
||
|
|
* 401:
|
||
|
|
* description: 未授权
|
||
|
|
* 500:
|
||
|
|
* description: 服务器内部错误
|
||
|
|
*/
|
||
|
|
router.get('/charts', tellerMiddleware, dashboardController.getChartData);
|
||
|
|
|
||
|
|
/**
|
||
|
|
* @swagger
|
||
|
|
* /api/dashboard/recent-transactions:
|
||
|
|
* get:
|
||
|
|
* summary: 获取最近交易记录
|
||
|
|
* tags: [仪表盘]
|
||
|
|
* security:
|
||
|
|
* - bearerAuth: []
|
||
|
|
* parameters:
|
||
|
|
* - in: query
|
||
|
|
* name: limit
|
||
|
|
* schema:
|
||
|
|
* type: integer
|
||
|
|
* default: 10
|
||
|
|
* description: 返回记录数量
|
||
|
|
* responses:
|
||
|
|
* 200:
|
||
|
|
* description: 获取成功
|
||
|
|
* content:
|
||
|
|
* application/json:
|
||
|
|
* schema:
|
||
|
|
* type: object
|
||
|
|
* properties:
|
||
|
|
* success:
|
||
|
|
* type: boolean
|
||
|
|
* message:
|
||
|
|
* type: string
|
||
|
|
* data:
|
||
|
|
* type: array
|
||
|
|
* items:
|
||
|
|
* type: object
|
||
|
|
* 401:
|
||
|
|
* description: 未授权
|
||
|
|
* 500:
|
||
|
|
* description: 服务器内部错误
|
||
|
|
*/
|
||
|
|
router.get('/recent-transactions', tellerMiddleware, dashboardController.getRecentTransactions);
|
||
|
|
|
||
|
|
module.exports = router;
|