basePath: /api definitions: models.BaseResponse: properties: message: type: string type: object models.ChangePasswordDTO: properties: currentPassword: type: string newPassword: minLength: 6 type: string required: - currentPassword - newPassword type: object models.Company: properties: companyName: type: string createdAt: type: string id: type: integer isActive: type: boolean updatedAt: type: string type: object models.CompanyDataRequest: properties: companyName: type: string required: - companyName type: object models.CompanyResponse: properties: company: $ref: '#/definitions/models.Company' message: type: string type: object models.CompanyUpdateRequest: properties: companyName: type: string isActive: type: boolean type: object models.DataResponse: properties: data: {} message: type: string type: object models.ErrorResponse: properties: error: type: string message: type: string type: object models.GenerateSerialDTO: properties: companyName: type: string quantity: maximum: 1000 minimum: 1 type: integer validDays: maximum: 3650 minimum: 1 type: integer required: - companyName type: object models.GenerateWithPrefixDTO: properties: companyName: type: string quantity: maximum: 1000 minimum: 1 type: integer serialPrefix: type: string validDays: maximum: 3650 minimum: 1 type: integer required: - companyName type: object models.LoginDTO: properties: password: minLength: 6 type: string username: type: string required: - password - username type: object models.LoginResponse: properties: accessToken: type: string message: type: string user: $ref: '#/definitions/models.UserDTO' type: object models.Pagination: properties: limit: type: integer page: type: integer total: type: integer totalPages: type: integer type: object models.PaginationResponse: properties: data: {} message: type: string pagination: $ref: '#/definitions/models.Pagination' type: object models.QRCodeDTO: properties: baseUrl: type: string type: object models.QRCodeResponse: properties: message: type: string qrCodeData: type: string queryUrl: type: string type: object models.UpdateProfileDTO: properties: email: type: string name: type: string required: - email - name type: object models.UpdateSerialDTO: properties: companyName: type: string isActive: type: boolean validUntil: type: string type: object models.UserDTO: properties: createdAt: type: string email: type: string id: type: integer name: type: string role: type: string username: type: string type: object host: localhost:8080 info: contact: email: support@swagger.io name: API Support url: http://www.swagger.io/support description: 防伪溯源系统 API 文档 license: name: Apache 2.0 url: http://www.apache.org/licenses/LICENSE-2.0.html termsOfService: http://swagger.io/terms/ title: Trace System API version: "1.0" paths: /auth/change-password: post: consumes: - application/json description: 修改当前登录用户的密码 parameters: - description: 密码修改数据 in: body name: passwordData required: true schema: $ref: '#/definitions/models.ChangePasswordDTO' produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/models.BaseResponse' "400": description: Bad Request schema: $ref: '#/definitions/models.ErrorResponse' "401": description: Unauthorized schema: $ref: '#/definitions/models.ErrorResponse' security: - BearerAuth: [] summary: 修改密码 tags: - 认证 /auth/login: post: consumes: - application/json description: 验证用户身份并返回 JWT 令牌 parameters: - description: 登录数据 in: body name: loginData required: true schema: $ref: '#/definitions/models.LoginDTO' produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/models.LoginResponse' "400": description: Bad Request schema: $ref: '#/definitions/models.ErrorResponse' "401": description: Unauthorized schema: $ref: '#/definitions/models.ErrorResponse' summary: 用户登录 tags: - 认证 /auth/profile: get: description: 获取当前登录用户的个人信息 produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/models.DataResponse' "401": description: Unauthorized schema: $ref: '#/definitions/models.ErrorResponse' security: - BearerAuth: [] summary: 获取用户信息 tags: - 认证 put: consumes: - application/json description: 更新当前登录用户的个人信息 parameters: - description: 用户信息更新数据 in: body name: profileData required: true schema: $ref: '#/definitions/models.UpdateProfileDTO' produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/models.DataResponse' "400": description: Bad Request schema: $ref: '#/definitions/models.ErrorResponse' "401": description: Unauthorized schema: $ref: '#/definitions/models.ErrorResponse' security: - BearerAuth: [] summary: 更新用户信息 tags: - 认证 /companies: get: description: 获取企业列表,支持分页和搜索 parameters: - description: 页码 in: query name: page type: integer - description: 每页数量 in: query name: limit type: integer - description: 搜索关键词 in: query name: search type: string produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/models.PaginationResponse' "401": description: Unauthorized schema: $ref: '#/definitions/models.ErrorResponse' "500": description: Internal Server Error schema: $ref: '#/definitions/models.ErrorResponse' security: - BearerAuth: [] summary: 获取企业列表 tags: - 企业管理 post: consumes: - application/json description: 创建新的企业 parameters: - description: 企业数据 in: body name: companyData required: true schema: $ref: '#/definitions/models.CompanyDataRequest' produces: - application/json responses: "201": description: Created schema: $ref: '#/definitions/models.CompanyResponse' "400": description: Bad Request schema: $ref: '#/definitions/models.ErrorResponse' "401": description: Unauthorized schema: $ref: '#/definitions/models.ErrorResponse' "409": description: Conflict schema: $ref: '#/definitions/models.ErrorResponse' "500": description: Internal Server Error schema: $ref: '#/definitions/models.ErrorResponse' security: - BearerAuth: [] summary: 创建企业 tags: - 企业管理 /companies/{companyName}: delete: description: 删除企业 parameters: - description: 企业名称 in: path name: companyName required: true type: string produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/models.BaseResponse' "400": description: Bad Request schema: $ref: '#/definitions/models.ErrorResponse' "401": description: Unauthorized schema: $ref: '#/definitions/models.ErrorResponse' "404": description: Not Found schema: $ref: '#/definitions/models.ErrorResponse' "500": description: Internal Server Error schema: $ref: '#/definitions/models.ErrorResponse' security: - BearerAuth: [] summary: 删除企业 tags: - 企业管理 put: consumes: - application/json description: 更新企业信息 parameters: - description: 企业名称 in: path name: companyName required: true type: string - description: 企业数据 in: body name: companyData required: true schema: $ref: '#/definitions/models.CompanyUpdateRequest' produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/models.CompanyResponse' "400": description: Bad Request schema: $ref: '#/definitions/models.ErrorResponse' "401": description: Unauthorized schema: $ref: '#/definitions/models.ErrorResponse' "404": description: Not Found schema: $ref: '#/definitions/models.ErrorResponse' "409": description: Conflict schema: $ref: '#/definitions/models.ErrorResponse' "500": description: Internal Server Error schema: $ref: '#/definitions/models.ErrorResponse' security: - BearerAuth: [] summary: 更新企业信息 tags: - 企业管理 /serials: get: description: 获取序列号列表,支持分页和搜索 parameters: - description: 页码 in: query name: page type: integer - description: ' ' in: query name: limit type: integer - description: 搜索关键词 in: query name: search type: string produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/models.PaginationResponse' "401": description: Unauthorized schema: $ref: '#/definitions/models.ErrorResponse' "500": description: Internal Server Error schema: $ref: '#/definitions/models.ErrorResponse' security: - BearerAuth: [] summary: 获取序列号列表 tags: - 序列号管理 /serials/{serialNumber}: put: consumes: - application/json description: 更新指定序列号的信息 parameters: - description: 序列号 in: path name: serialNumber required: true type: string - description: 更新数据 in: body name: updateData required: true schema: $ref: '#/definitions/models.UpdateSerialDTO' produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/models.DataResponse' "400": description: Bad Request schema: $ref: '#/definitions/models.ErrorResponse' "401": description: Unauthorized schema: $ref: '#/definitions/models.ErrorResponse' "404": description: Not Found schema: $ref: '#/definitions/models.ErrorResponse' "500": description: Internal Server Error schema: $ref: '#/definitions/models.ErrorResponse' security: - BearerAuth: [] summary: 更新序列号信息 tags: - 序列号管理 /serials/{serialNumber}/qrcode: post: consumes: - application/json description: 为指定序列号生成查询二维码 parameters: - description: 序列号 in: path name: serialNumber required: true type: string - description: 二维码数据 in: body name: qrCodeData schema: $ref: '#/definitions/models.QRCodeDTO' produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/models.QRCodeResponse' "400": description: Bad Request schema: $ref: '#/definitions/models.ErrorResponse' "401": description: Unauthorized schema: $ref: '#/definitions/models.ErrorResponse' "404": description: Not Found schema: $ref: '#/definitions/models.ErrorResponse' "500": description: Internal Server Error schema: $ref: '#/definitions/models.ErrorResponse' security: - BearerAuth: [] summary: 生成二维码 tags: - 序列号管理 /serials/{serialNumber}/query: get: description: 查询指定序列号的详细信息 parameters: - description: 序列号 in: path name: serialNumber required: true type: string produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/models.DataResponse' "400": description: Bad Request schema: $ref: '#/definitions/models.ErrorResponse' "404": description: Not Found schema: $ref: '#/definitions/models.ErrorResponse' "500": description: Internal Server Error schema: $ref: '#/definitions/models.ErrorResponse' summary: 查询序列号信息 tags: - 序列号查询 /serials/{serialNumber}/revoke: post: description: 吊销指定序列号 parameters: - description: 序列号 in: path name: serialNumber required: true type: string produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/models.BaseResponse' "400": description: Bad Request schema: $ref: '#/definitions/models.ErrorResponse' "401": description: Unauthorized schema: $ref: '#/definitions/models.ErrorResponse' "404": description: Not Found schema: $ref: '#/definitions/models.ErrorResponse' "500": description: Internal Server Error schema: $ref: '#/definitions/models.ErrorResponse' security: - BearerAuth: [] summary: 吊销序列号 tags: - 序列号管理 /serials/generate: post: consumes: - application/json description: 生成指定数量的序列号 parameters: - description: 生成数据 in: body name: generateData required: true schema: $ref: '#/definitions/models.GenerateSerialDTO' produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/models.DataResponse' "400": description: Bad Request schema: $ref: '#/definitions/models.ErrorResponse' "401": description: Unauthorized schema: $ref: '#/definitions/models.ErrorResponse' "500": description: Internal Server Error schema: $ref: '#/definitions/models.ErrorResponse' security: - BearerAuth: [] summary: 生成序列号 tags: - 序列号管理 /serials/generate-with-prefix: post: consumes: - application/json description: 生成带有指定前缀的序列号 parameters: - description: 生成数据 in: body name: generateData required: true schema: $ref: '#/definitions/models.GenerateWithPrefixDTO' produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/models.DataResponse' "400": description: Bad Request schema: $ref: '#/definitions/models.ErrorResponse' "401": description: Unauthorized schema: $ref: '#/definitions/models.ErrorResponse' "500": description: Internal Server Error schema: $ref: '#/definitions/models.ErrorResponse' security: - BearerAuth: [] summary: 带前缀生成序列号 tags: - 序列号管理 securityDefinitions: BearerAuth: description: Bearer token 认证 in: header name: Authorization type: apiKey swagger: "2.0"