Files
nxxmdata/bank-backend/config/swagger.js

454 lines
11 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/**
* Swagger API文档配置
* @file swagger.js
* @description API文档配置和定义
*/
const swaggerJSDoc = require('swagger-jsdoc');
const options = {
definition: {
openapi: '3.0.0',
info: {
title: '银行管理后台API',
version: '1.1.0',
description: '银行管理后台系统API文档包含贷款解押模块',
contact: {
name: '银行开发团队',
email: 'dev@bank.com'
},
license: {
name: 'MIT',
url: 'https://opensource.org/licenses/MIT'
}
},
servers: [
{
url: `http://localhost:${process.env.PORT || 5351}`,
description: '开发服务器'
},
{
url: 'https://api.bank.com',
description: '生产服务器'
}
],
components: {
securitySchemes: {
bearerAuth: {
type: 'http',
scheme: 'bearer',
bearerFormat: 'JWT',
description: 'JWT访问令牌'
}
},
schemas: {
Error: {
type: 'object',
properties: {
success: {
type: 'boolean',
example: false
},
message: {
type: 'string',
example: '错误信息'
},
errors: {
type: 'array',
items: {
type: 'object',
properties: {
field: {
type: 'string'
},
message: {
type: 'string'
}
}
}
}
}
},
Success: {
type: 'object',
properties: {
success: {
type: 'boolean',
example: true
},
message: {
type: 'string',
example: '操作成功'
},
data: {
type: 'object'
}
}
},
Pagination: {
type: 'object',
properties: {
page: {
type: 'integer',
example: 1
},
limit: {
type: 'integer',
example: 10
},
total: {
type: 'integer',
example: 100
},
pages: {
type: 'integer',
example: 10
}
}
},
LoanRelease: {
type: 'object',
properties: {
id: {
type: 'integer',
example: 1
},
applicationNumber: {
type: 'string',
example: '20240227145555918'
},
productName: {
type: 'string',
example: '中国工商银行扎旗支行"畜禽活体抵押"'
},
farmerName: {
type: 'string',
example: '刘超'
},
applicantName: {
type: 'string',
example: '刘超'
},
applicantIdNumber: {
type: 'string',
example: '511123199001013017'
},
applicantPhone: {
type: 'string',
example: '13800138000'
},
assetType: {
type: 'string',
example: '牛'
},
releaseQuantity: {
type: 'string',
example: '10头'
},
releaseAmount: {
type: 'number',
example: 10000
},
status: {
type: 'string',
enum: ['pending', 'processing', 'approved', 'rejected', 'completed', 'released'],
example: 'released'
},
applicationTime: {
type: 'string',
format: 'date-time',
example: '2024-02-27T06:55:55.000Z'
},
processTime: {
type: 'string',
format: 'date-time',
example: '2024-02-27T07:30:00.000Z'
},
completeTime: {
type: 'string',
format: 'date-time',
example: '2024-02-27T08:00:00.000Z'
},
processorName: {
type: 'string',
example: '系统管理员'
},
processComment: {
type: 'string',
example: '审核通过,同意解押'
},
rejectionReason: {
type: 'string',
example: null
},
remark: {
type: 'string',
example: '客户信用良好'
}
}
},
LoanReleaseHistory: {
type: 'object',
properties: {
id: {
type: 'integer',
example: 1
},
action: {
type: 'string',
enum: ['apply', 'process', 'approve', 'reject', 'complete', 'release'],
example: 'apply'
},
operator: {
type: 'string',
example: '刘超'
},
time: {
type: 'string',
format: 'date-time',
example: '2025-09-26T03:38:51.000Z'
},
comment: {
type: 'string',
example: '提交解押申请'
}
}
},
LoanReleaseCreateRequest: {
type: 'object',
required: ['customer_name', 'customer_phone', 'customer_id_card', 'collateral_type', 'release_amount'],
properties: {
contract_id: {
type: 'integer',
example: 1
},
customer_name: {
type: 'string',
example: '测试用户'
},
customer_phone: {
type: 'string',
example: '13800138000'
},
customer_id_card: {
type: 'string',
example: '511123199001010001'
},
farmer_name: {
type: 'string',
example: '测试用户'
},
product_name: {
type: 'string',
example: '测试产品'
},
collateral_type: {
type: 'string',
enum: ['house', 'car', 'land', 'equipment', 'livestock'],
example: 'livestock'
},
collateral_description: {
type: 'string',
example: '测试抵押物'
},
collateral_value: {
type: 'number',
example: 100000
},
loan_amount: {
type: 'number',
example: 80000
},
release_amount: {
type: 'number',
example: 50000
},
release_quantity: {
type: 'string',
example: '5头'
},
application_reason: {
type: 'string',
example: '测试解押申请'
},
remark: {
type: 'string',
example: '测试备注'
}
}
},
LoanReleaseProcessRequest: {
type: 'object',
required: ['action', 'comment'],
properties: {
action: {
type: 'string',
enum: ['approve', 'reject'],
example: 'approve'
},
comment: {
type: 'string',
example: '审核通过'
},
remark: {
type: 'string',
example: '测试处理'
}
}
}
},
responses: {
UnauthorizedError: {
description: '未授权访问',
content: {
'application/json': {
schema: {
$ref: '#/components/schemas/Error'
},
example: {
success: false,
message: '访问被拒绝,未提供令牌'
}
}
}
},
ForbiddenError: {
description: '权限不足',
content: {
'application/json': {
schema: {
$ref: '#/components/schemas/Error'
},
example: {
success: false,
message: '权限不足'
}
}
}
},
NotFoundError: {
description: '资源不存在',
content: {
'application/json': {
schema: {
$ref: '#/components/schemas/Error'
},
example: {
success: false,
message: '请求的资源不存在'
}
}
}
},
ValidationError: {
description: '输入数据验证失败',
content: {
'application/json': {
schema: {
$ref: '#/components/schemas/Error'
},
example: {
success: false,
message: '输入数据验证失败',
errors: [
{
field: 'email',
message: '邮箱格式不正确'
}
]
}
}
}
},
InternalServerError: {
description: '服务器内部错误',
content: {
'application/json': {
schema: {
$ref: '#/components/schemas/Error'
},
example: {
success: false,
message: '服务器内部错误'
}
}
}
}
}
},
security: [
{
bearerAuth: []
}
],
tags: [
{
name: 'Authentication',
description: '认证相关接口'
},
{
name: 'Dashboard',
description: '仪表盘相关接口'
},
{
name: 'Users',
description: '用户管理相关接口'
},
{
name: 'Accounts',
description: '账户管理相关接口'
},
{
name: 'Transactions',
description: '交易管理相关接口'
},
{
name: 'Loan Products',
description: '贷款产品管理相关接口'
},
{
name: 'Loan Applications',
description: '贷款申请管理相关接口'
},
{
name: 'Loan Contracts',
description: '贷款合同管理相关接口'
},
{
name: 'Loan Release',
description: '贷款解押管理相关接口'
},
{
name: 'Employees',
description: '员工管理相关接口'
},
{
name: 'Projects',
description: '项目管理相关接口'
},
{
name: 'Supervision Tasks',
description: '监管任务管理相关接口'
},
{
name: 'Installation Tasks',
description: '安装任务管理相关接口'
},
{
name: 'Completed Supervisions',
description: '完成监管管理相关接口'
},
{
name: 'Reports',
description: '报表管理相关接口'
}
]
},
apis: [
'./routes/*.js',
'./controllers/*.js'
]
};
const specs = swaggerJSDoc(options);
module.exports = specs;