This commit is contained in:
2026-08-10 15:36:47 +08:00
parent 013de5e921
commit c9f1fe0093
20 changed files with 1480 additions and 135 deletions
@@ -0,0 +1,174 @@
openapi: 3.0.3
info:
title: 柏悦费用项目 API
version: 1.0.0
description: 平台费用项目主数据;业务结果统一通过响应体 code 返回。
security:
- bearerAuth: []
paths:
/api/platform/v1/fee-items:
get:
summary: 查询费用项目
description: 需要 firstleg:fee-item:view 权限;费用项目属于平台公共主数据。
parameters:
- {name: category, in: query, schema: {type: string, maxLength: 64}}
- {name: tradeScope, in: query, schema: {type: string, enum: [DOMESTIC, INTERNATIONAL]}}
- {name: keyword, in: query, schema: {type: string, maxLength: 128}}
- {name: status, in: query, schema: {type: string, enum: [ACTIVE, DISABLED]}}
- {name: page, in: query, schema: {type: integer, minimum: 1, default: 1}}
- {name: size, in: query, schema: {type: integer, minimum: 1, maximum: 200, default: 20}}
responses:
'200':
description: 成功或业务失败
content:
application/json:
schema: {$ref: '#/components/schemas/FeeItemPageApiResponse'}
'403': {description: 无权限}
post:
summary: 新增费用项目
description: 需要 firstleg:fee-item:create 权限;feeCode 可省略,服务端生成唯一人工编码;传入时统一转为大写并在平台公共范围内保持唯一。
requestBody:
required: true
content:
application/json:
schema: {$ref: '#/components/schemas/FeeItemSaveRequest'}
responses:
'200':
description: 成功或业务失败
content:
application/json:
schema: {$ref: '#/components/schemas/FeeItemApiResponse'}
'403': {description: 无权限}
/api/platform/v1/fee-items/{id}:
get:
summary: 查询费用项目详情
description: 需要 firstleg:fee-item:view 权限。
parameters: [{$ref: '#/components/parameters/Id'}]
responses:
'200':
description: 成功或业务失败
content:
application/json:
schema: {$ref: '#/components/schemas/FeeItemApiResponse'}
'403': {description: 无权限}
put:
summary: 编辑费用项目
description: 需要 firstleg:fee-item:edit 权限;省略 feeCode 时保留原编码,传入时统一转为大写并校验平台公共范围内唯一性。
parameters: [{$ref: '#/components/parameters/Id'}]
requestBody: {required: true, content: {application/json: {schema: {$ref: '#/components/schemas/FeeItemSaveRequest'}}}}
responses:
'200':
description: 成功或业务失败
content:
application/json:
schema: {$ref: '#/components/schemas/FeeItemApiResponse'}
'403': {description: 无权限}
delete:
summary: 删除费用项目
description: 需要 firstleg:fee-item:delete 权限;已被费用明细引用的项目只能停用。
parameters: [{$ref: '#/components/parameters/Id'}]
responses:
'200':
description: 成功或业务失败
content:
application/json:
schema: {$ref: '#/components/schemas/VoidApiResponse'}
'403': {description: 无权限}
/api/platform/v1/fee-items/{id}/status:
patch:
summary: 启用或停用费用项目
description: 需要 firstleg:fee-item:edit 权限。
parameters: [{$ref: '#/components/parameters/Id'}]
requestBody: {required: true, content: {application/json: {schema: {type: object, required: [status], properties: {status: {type: string, enum: [ACTIVE, DISABLED]}}}}}}
responses:
'200':
description: 成功或业务失败
content:
application/json:
schema: {$ref: '#/components/schemas/VoidApiResponse'}
'403': {description: 无权限}
components:
securitySchemes:
bearerAuth: {type: http, scheme: bearer}
parameters:
Id: {name: id, in: path, required: true, schema: {type: integer, format: int64, minimum: 1}}
schemas:
FeeItemSaveRequest:
type: object
required: [category, tradeScope, feeTypeName, pickupPayable, pickupReceivable, warehousePayable, warehouseReceivable, allocationFee]
properties:
category: {type: string, maxLength: 64}
tradeScope: {type: string, enum: [DOMESTIC, INTERNATIONAL]}
feeCode: {type: string, maxLength: 50, pattern: '^[A-Za-z0-9_-]+$'}
feeTypeName: {type: string, maxLength: 128}
pickupPayable: {type: boolean}
pickupReceivable: {type: boolean}
warehousePayable: {type: boolean}
warehouseReceivable: {type: boolean}
allocationFee: {type: boolean}
description: {type: string, maxLength: 500}
FeeItemResource:
type: object
required: [id, category, tradeScope, feeCode, feeTypeName, pickupPayable, pickupReceivable, warehousePayable, warehouseReceivable, allocationFee, status]
properties:
id: {type: integer, format: int64}
category: {type: string}
tradeScope: {type: string, enum: [DOMESTIC, INTERNATIONAL]}
feeCode: {type: string}
feeTypeName: {type: string}
pickupPayable: {type: boolean}
pickupReceivable: {type: boolean}
warehousePayable: {type: boolean}
warehouseReceivable: {type: boolean}
allocationFee: {type: boolean}
description: {type: string, nullable: true}
status: {type: string, enum: [ACTIVE, DISABLED]}
createdBy: {type: integer, format: int64, nullable: true}
createdByName: {type: string, nullable: true}
updatedBy: {type: integer, format: int64, nullable: true}
updatedByName: {type: string, nullable: true}
createdAt: {type: string, format: date-time}
updatedAt: {type: string, format: date-time}
deleted: {type: boolean, nullable: true}
version: {type: integer, nullable: true}
FeeItemPage:
type: object
required: [records, page, size, total, pages]
properties:
records:
type: array
items: {$ref: '#/components/schemas/FeeItemResource'}
page: {type: integer, format: int64}
size: {type: integer, format: int64}
total: {type: integer, format: int64}
pages: {type: integer, format: int64}
FeeItemApiResponse:
type: object
required: [code, message, timestamp]
properties:
code: {type: string}
message: {type: string}
data: {$ref: '#/components/schemas/FeeItemResource'}
requestId: {type: string, nullable: true}
traceId: {type: string, nullable: true}
timestamp: {type: string, format: date-time}
FeeItemPageApiResponse:
type: object
required: [code, message, timestamp]
properties:
code: {type: string}
message: {type: string}
data: {$ref: '#/components/schemas/FeeItemPage'}
requestId: {type: string, nullable: true}
traceId: {type: string, nullable: true}
timestamp: {type: string, format: date-time}
VoidApiResponse:
type: object
required: [code, message, timestamp]
properties:
code: {type: string}
message: {type: string}
data: {nullable: true}
requestId: {type: string, nullable: true}
traceId: {type: string, nullable: true}
timestamp: {type: string, format: date-time}