418 lines
11 KiB
JavaScript
418 lines
11 KiB
JavaScript
|
|
/**
|
|||
|
|
* 贷款解押路由
|
|||
|
|
* @file loanRelease.js
|
|||
|
|
* @description 银行系统贷款解押相关路由
|
|||
|
|
*/
|
|||
|
|
const express = require('express');
|
|||
|
|
const router = express.Router();
|
|||
|
|
const { authMiddleware } = require('../middleware/auth');
|
|||
|
|
const {
|
|||
|
|
getReleases,
|
|||
|
|
getReleaseDetail,
|
|||
|
|
createRelease,
|
|||
|
|
updateRelease,
|
|||
|
|
processRelease,
|
|||
|
|
completeRelease,
|
|||
|
|
deleteRelease,
|
|||
|
|
getReleaseStats
|
|||
|
|
} = require('../controllers/loanReleaseController');
|
|||
|
|
|
|||
|
|
// 所有路由都需要认证
|
|||
|
|
router.use(authMiddleware);
|
|||
|
|
|
|||
|
|
/**
|
|||
|
|
* @swagger
|
|||
|
|
* /api/loan-releases:
|
|||
|
|
* get:
|
|||
|
|
* summary: 获取解押申请列表
|
|||
|
|
* tags: [Loan Release]
|
|||
|
|
* security:
|
|||
|
|
* - bearerAuth: []
|
|||
|
|
* parameters:
|
|||
|
|
* - in: query
|
|||
|
|
* name: page
|
|||
|
|
* schema:
|
|||
|
|
* type: integer
|
|||
|
|
* default: 1
|
|||
|
|
* description: 页码
|
|||
|
|
* - in: query
|
|||
|
|
* name: pageSize
|
|||
|
|
* schema:
|
|||
|
|
* type: integer
|
|||
|
|
* default: 10
|
|||
|
|
* description: 每页数量
|
|||
|
|
* - in: query
|
|||
|
|
* name: searchField
|
|||
|
|
* schema:
|
|||
|
|
* type: string
|
|||
|
|
* enum: [application_number, customer_name, product_name]
|
|||
|
|
* default: application_number
|
|||
|
|
* description: 搜索字段
|
|||
|
|
* - in: query
|
|||
|
|
* name: searchValue
|
|||
|
|
* schema:
|
|||
|
|
* type: string
|
|||
|
|
* description: 搜索值
|
|||
|
|
* - in: query
|
|||
|
|
* name: status
|
|||
|
|
* schema:
|
|||
|
|
* type: string
|
|||
|
|
* enum: [pending, processing, approved, rejected, completed, released]
|
|||
|
|
* description: 解押状态筛选
|
|||
|
|
* - in: query
|
|||
|
|
* name: sortField
|
|||
|
|
* schema:
|
|||
|
|
* type: string
|
|||
|
|
* default: created_at
|
|||
|
|
* description: 排序字段
|
|||
|
|
* - in: query
|
|||
|
|
* name: sortOrder
|
|||
|
|
* schema:
|
|||
|
|
* type: string
|
|||
|
|
* enum: [asc, desc]
|
|||
|
|
* default: desc
|
|||
|
|
* description: 排序方向
|
|||
|
|
* responses:
|
|||
|
|
* 200:
|
|||
|
|
* description: 获取成功
|
|||
|
|
* content:
|
|||
|
|
* application/json:
|
|||
|
|
* schema:
|
|||
|
|
* type: object
|
|||
|
|
* properties:
|
|||
|
|
* success:
|
|||
|
|
* type: boolean
|
|||
|
|
* data:
|
|||
|
|
* type: object
|
|||
|
|
* properties:
|
|||
|
|
* releases:
|
|||
|
|
* type: array
|
|||
|
|
* items:
|
|||
|
|
* $ref: '#/components/schemas/LoanRelease'
|
|||
|
|
* pagination:
|
|||
|
|
* $ref: '#/components/schemas/Pagination'
|
|||
|
|
* 401:
|
|||
|
|
* $ref: '#/components/responses/UnauthorizedError'
|
|||
|
|
* 500:
|
|||
|
|
* $ref: '#/components/responses/InternalServerError'
|
|||
|
|
*/
|
|||
|
|
router.get('/', getReleases);
|
|||
|
|
|
|||
|
|
/**
|
|||
|
|
* @swagger
|
|||
|
|
* /api/loan-releases/stats:
|
|||
|
|
* get:
|
|||
|
|
* summary: 获取解押统计信息
|
|||
|
|
* tags: [Loan Release]
|
|||
|
|
* security:
|
|||
|
|
* - bearerAuth: []
|
|||
|
|
* responses:
|
|||
|
|
* 200:
|
|||
|
|
* description: 获取成功
|
|||
|
|
* content:
|
|||
|
|
* application/json:
|
|||
|
|
* schema:
|
|||
|
|
* type: object
|
|||
|
|
* properties:
|
|||
|
|
* success:
|
|||
|
|
* type: boolean
|
|||
|
|
* data:
|
|||
|
|
* type: object
|
|||
|
|
* properties:
|
|||
|
|
* total:
|
|||
|
|
* type: integer
|
|||
|
|
* example: 6
|
|||
|
|
* pending:
|
|||
|
|
* type: integer
|
|||
|
|
* example: 0
|
|||
|
|
* processing:
|
|||
|
|
* type: integer
|
|||
|
|
* example: 0
|
|||
|
|
* approved:
|
|||
|
|
* type: integer
|
|||
|
|
* example: 0
|
|||
|
|
* rejected:
|
|||
|
|
* type: integer
|
|||
|
|
* example: 0
|
|||
|
|
* completed:
|
|||
|
|
* type: integer
|
|||
|
|
* example: 0
|
|||
|
|
* released:
|
|||
|
|
* type: integer
|
|||
|
|
* example: 6
|
|||
|
|
* 401:
|
|||
|
|
* $ref: '#/components/responses/UnauthorizedError'
|
|||
|
|
* 500:
|
|||
|
|
* $ref: '#/components/responses/InternalServerError'
|
|||
|
|
*/
|
|||
|
|
router.get('/stats', getReleaseStats);
|
|||
|
|
|
|||
|
|
/**
|
|||
|
|
* @swagger
|
|||
|
|
* /api/loan-releases/{id}:
|
|||
|
|
* get:
|
|||
|
|
* summary: 获取解押申请详情
|
|||
|
|
* tags: [Loan Release]
|
|||
|
|
* security:
|
|||
|
|
* - bearerAuth: []
|
|||
|
|
* parameters:
|
|||
|
|
* - in: path
|
|||
|
|
* name: id
|
|||
|
|
* required: true
|
|||
|
|
* schema:
|
|||
|
|
* type: integer
|
|||
|
|
* description: 解押申请ID
|
|||
|
|
* responses:
|
|||
|
|
* 200:
|
|||
|
|
* description: 获取成功
|
|||
|
|
* content:
|
|||
|
|
* application/json:
|
|||
|
|
* schema:
|
|||
|
|
* type: object
|
|||
|
|
* properties:
|
|||
|
|
* success:
|
|||
|
|
* type: boolean
|
|||
|
|
* data:
|
|||
|
|
* allOf:
|
|||
|
|
* - $ref: '#/components/schemas/LoanRelease'
|
|||
|
|
* - type: object
|
|||
|
|
* properties:
|
|||
|
|
* history:
|
|||
|
|
* type: array
|
|||
|
|
* items:
|
|||
|
|
* $ref: '#/components/schemas/LoanReleaseHistory'
|
|||
|
|
* 401:
|
|||
|
|
* $ref: '#/components/responses/UnauthorizedError'
|
|||
|
|
* 404:
|
|||
|
|
* $ref: '#/components/responses/NotFoundError'
|
|||
|
|
* 500:
|
|||
|
|
* $ref: '#/components/responses/InternalServerError'
|
|||
|
|
*/
|
|||
|
|
router.get('/:id', getReleaseDetail);
|
|||
|
|
|
|||
|
|
/**
|
|||
|
|
* @swagger
|
|||
|
|
* /api/loan-releases:
|
|||
|
|
* post:
|
|||
|
|
* summary: 创建解押申请
|
|||
|
|
* tags: [Loan Release]
|
|||
|
|
* security:
|
|||
|
|
* - bearerAuth: []
|
|||
|
|
* requestBody:
|
|||
|
|
* required: true
|
|||
|
|
* content:
|
|||
|
|
* application/json:
|
|||
|
|
* schema:
|
|||
|
|
* $ref: '#/components/schemas/LoanReleaseCreateRequest'
|
|||
|
|
* responses:
|
|||
|
|
* 201:
|
|||
|
|
* description: 创建成功
|
|||
|
|
* content:
|
|||
|
|
* application/json:
|
|||
|
|
* schema:
|
|||
|
|
* type: object
|
|||
|
|
* properties:
|
|||
|
|
* success:
|
|||
|
|
* type: boolean
|
|||
|
|
* message:
|
|||
|
|
* type: string
|
|||
|
|
* data:
|
|||
|
|
* type: object
|
|||
|
|
* properties:
|
|||
|
|
* id:
|
|||
|
|
* type: integer
|
|||
|
|
* applicationNumber:
|
|||
|
|
* type: string
|
|||
|
|
* 400:
|
|||
|
|
* $ref: '#/components/responses/ValidationError'
|
|||
|
|
* 401:
|
|||
|
|
* $ref: '#/components/responses/UnauthorizedError'
|
|||
|
|
* 500:
|
|||
|
|
* $ref: '#/components/responses/InternalServerError'
|
|||
|
|
*/
|
|||
|
|
router.post('/', createRelease);
|
|||
|
|
|
|||
|
|
/**
|
|||
|
|
* @swagger
|
|||
|
|
* /api/loan-releases/{id}:
|
|||
|
|
* put:
|
|||
|
|
* summary: 更新解押申请
|
|||
|
|
* tags: [Loan Release]
|
|||
|
|
* security:
|
|||
|
|
* - bearerAuth: []
|
|||
|
|
* parameters:
|
|||
|
|
* - in: path
|
|||
|
|
* name: id
|
|||
|
|
* required: true
|
|||
|
|
* schema:
|
|||
|
|
* type: integer
|
|||
|
|
* description: 解押申请ID
|
|||
|
|
* requestBody:
|
|||
|
|
* required: true
|
|||
|
|
* content:
|
|||
|
|
* application/json:
|
|||
|
|
* schema:
|
|||
|
|
* $ref: '#/components/schemas/LoanReleaseCreateRequest'
|
|||
|
|
* responses:
|
|||
|
|
* 200:
|
|||
|
|
* description: 更新成功
|
|||
|
|
* content:
|
|||
|
|
* application/json:
|
|||
|
|
* schema:
|
|||
|
|
* $ref: '#/components/schemas/Success'
|
|||
|
|
* 400:
|
|||
|
|
* $ref: '#/components/responses/ValidationError'
|
|||
|
|
* 401:
|
|||
|
|
* $ref: '#/components/responses/UnauthorizedError'
|
|||
|
|
* 404:
|
|||
|
|
* $ref: '#/components/responses/NotFoundError'
|
|||
|
|
* 500:
|
|||
|
|
* $ref: '#/components/responses/InternalServerError'
|
|||
|
|
*/
|
|||
|
|
router.put('/:id', updateRelease);
|
|||
|
|
|
|||
|
|
/**
|
|||
|
|
* @swagger
|
|||
|
|
* /api/loan-releases/{id}/process:
|
|||
|
|
* post:
|
|||
|
|
* summary: 处理解押申请(通过/拒绝)
|
|||
|
|
* tags: [Loan Release]
|
|||
|
|
* security:
|
|||
|
|
* - bearerAuth: []
|
|||
|
|
* parameters:
|
|||
|
|
* - in: path
|
|||
|
|
* name: id
|
|||
|
|
* required: true
|
|||
|
|
* schema:
|
|||
|
|
* type: integer
|
|||
|
|
* description: 解押申请ID
|
|||
|
|
* requestBody:
|
|||
|
|
* required: true
|
|||
|
|
* content:
|
|||
|
|
* application/json:
|
|||
|
|
* schema:
|
|||
|
|
* $ref: '#/components/schemas/LoanReleaseProcessRequest'
|
|||
|
|
* responses:
|
|||
|
|
* 200:
|
|||
|
|
* description: 处理成功
|
|||
|
|
* content:
|
|||
|
|
* application/json:
|
|||
|
|
* schema:
|
|||
|
|
* type: object
|
|||
|
|
* properties:
|
|||
|
|
* success:
|
|||
|
|
* type: boolean
|
|||
|
|
* message:
|
|||
|
|
* type: string
|
|||
|
|
* data:
|
|||
|
|
* type: object
|
|||
|
|
* properties:
|
|||
|
|
* id:
|
|||
|
|
* type: integer
|
|||
|
|
* status:
|
|||
|
|
* type: string
|
|||
|
|
* action:
|
|||
|
|
* type: string
|
|||
|
|
* comment:
|
|||
|
|
* type: string
|
|||
|
|
* 400:
|
|||
|
|
* $ref: '#/components/responses/ValidationError'
|
|||
|
|
* 401:
|
|||
|
|
* $ref: '#/components/responses/UnauthorizedError'
|
|||
|
|
* 404:
|
|||
|
|
* $ref: '#/components/responses/NotFoundError'
|
|||
|
|
* 500:
|
|||
|
|
* $ref: '#/components/responses/InternalServerError'
|
|||
|
|
*/
|
|||
|
|
router.post('/:id/process', processRelease);
|
|||
|
|
|
|||
|
|
/**
|
|||
|
|
* @swagger
|
|||
|
|
* /api/loan-releases/{id}/complete:
|
|||
|
|
* post:
|
|||
|
|
* summary: 完成解押
|
|||
|
|
* tags: [Loan Release]
|
|||
|
|
* security:
|
|||
|
|
* - bearerAuth: []
|
|||
|
|
* parameters:
|
|||
|
|
* - in: path
|
|||
|
|
* name: id
|
|||
|
|
* required: true
|
|||
|
|
* schema:
|
|||
|
|
* type: integer
|
|||
|
|
* description: 解押申请ID
|
|||
|
|
* requestBody:
|
|||
|
|
* required: true
|
|||
|
|
* content:
|
|||
|
|
* application/json:
|
|||
|
|
* schema:
|
|||
|
|
* type: object
|
|||
|
|
* required:
|
|||
|
|
* - comment
|
|||
|
|
* properties:
|
|||
|
|
* comment:
|
|||
|
|
* type: string
|
|||
|
|
* example: 解押手续办理完成
|
|||
|
|
* responses:
|
|||
|
|
* 200:
|
|||
|
|
* description: 完成成功
|
|||
|
|
* content:
|
|||
|
|
* application/json:
|
|||
|
|
* schema:
|
|||
|
|
* type: object
|
|||
|
|
* properties:
|
|||
|
|
* success:
|
|||
|
|
* type: boolean
|
|||
|
|
* message:
|
|||
|
|
* type: string
|
|||
|
|
* data:
|
|||
|
|
* type: object
|
|||
|
|
* properties:
|
|||
|
|
* id:
|
|||
|
|
* type: integer
|
|||
|
|
* status:
|
|||
|
|
* type: string
|
|||
|
|
* 400:
|
|||
|
|
* $ref: '#/components/responses/ValidationError'
|
|||
|
|
* 401:
|
|||
|
|
* $ref: '#/components/responses/UnauthorizedError'
|
|||
|
|
* 404:
|
|||
|
|
* $ref: '#/components/responses/NotFoundError'
|
|||
|
|
* 500:
|
|||
|
|
* $ref: '#/components/responses/InternalServerError'
|
|||
|
|
*/
|
|||
|
|
router.post('/:id/complete', completeRelease);
|
|||
|
|
|
|||
|
|
/**
|
|||
|
|
* @swagger
|
|||
|
|
* /api/loan-releases/{id}:
|
|||
|
|
* delete:
|
|||
|
|
* summary: 删除解押申请
|
|||
|
|
* tags: [Loan Release]
|
|||
|
|
* security:
|
|||
|
|
* - bearerAuth: []
|
|||
|
|
* parameters:
|
|||
|
|
* - in: path
|
|||
|
|
* name: id
|
|||
|
|
* required: true
|
|||
|
|
* schema:
|
|||
|
|
* type: integer
|
|||
|
|
* description: 解押申请ID
|
|||
|
|
* responses:
|
|||
|
|
* 200:
|
|||
|
|
* description: 删除成功
|
|||
|
|
* content:
|
|||
|
|
* application/json:
|
|||
|
|
* schema:
|
|||
|
|
* $ref: '#/components/schemas/Success'
|
|||
|
|
* 401:
|
|||
|
|
* $ref: '#/components/responses/UnauthorizedError'
|
|||
|
|
* 404:
|
|||
|
|
* $ref: '#/components/responses/NotFoundError'
|
|||
|
|
* 500:
|
|||
|
|
* $ref: '#/components/responses/InternalServerError'
|
|||
|
|
*/
|
|||
|
|
router.delete('/:id', deleteRelease);
|
|||
|
|
|
|||
|
|
module.exports = router;
|