Files
nxxmdata/bank-backend/routes/dashboard.js

178 lines
5.2 KiB
JavaScript
Raw Normal View History

/**
* 仪表盘路由
* @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;