openapi: 3.1.0 info: title: BAI PocketBase WeChat API version: 1.0.0-wx description: | 面向微信端的小程序接口文档。 本文档只包含微信登录、微信资料完善,以及微信端会共用的系统接口。 license: name: Proprietary identifier: LicenseRef-Proprietary servers: - url: https://bai-api.blv-oa.com description: 生产环境 - url: http://localhost:8090 description: PocketBase 本地环境 tags: - name: 系统 description: 微信端共用系统接口 - name: 微信认证 description: 微信登录、资料完善与 token 刷新接口 - name: 企业信息 description: 通过 PocketBase 原生 records API 访问 `tbl_company` - name: 附件信息 description: 通过 PocketBase 原生 records API 访问 `tbl_attachments` - name: 文档信息 description: 通过 PocketBase 原生 records API 访问 `tbl_document` paths: /pb/api/system/users-count: post: operationId: postSystemUsersCount security: [] tags: - 系统 summary: 查询用户总数 description: 统计 `tbl_auth_users` 集合中的记录总数。 responses: '200': description: 查询成功 content: application/json: schema: $ref: '#/components/schemas/UsersCountResponse' '400': description: 请求参数错误 content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '500': description: 服务端错误 content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' /pb/api/system/refresh-token: post: operationId: postSystemRefreshToken security: - bearerAuth: [] - {} tags: - 系统 summary: 刷新认证 token description: | 当当前 `Authorization` 仍有效时,直接基于当前 auth 用户续签。 当 token 失效时,可传入 `users_wx_code` 走微信 code 重新签发。 requestBody: required: false content: application/json: schema: $ref: '#/components/schemas/SystemRefreshTokenRequest' responses: '200': description: 刷新成功 content: application/json: schema: $ref: '#/components/schemas/RefreshTokenResponse' '400': description: 参数错误或微信 code 换取失败 content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '401': description: token 无效,且未提供有效的 `users_wx_code` content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '404': description: 当前用户不存在 content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '415': description: 请求体不是 JSON content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '429': description: 请求过于频繁 content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '500': description: 服务端错误 content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' /pb/api/wechat/login: post: operationId: postWechatLogin security: [] tags: - 微信认证 summary: 微信登录或首次注册 description: | 使用微信 `users_wx_code` 换取微信 openid。 若 `tbl_auth_users` 中不存在对应用户,则自动创建新 auth 用户并返回 token。 requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/WechatLoginRequest' responses: '200': description: 登录或注册成功 content: application/json: schema: $ref: '#/components/schemas/AuthSuccessResponse' '400': description: 参数错误或保存用户失败 content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '401': description: 认证失败 content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '415': description: 请求体不是 JSON content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '429': description: 请求过于频繁 content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '500': description: 服务端错误 content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' /pb/api/wechat/profile: post: operationId: postWechatProfile security: - bearerAuth: [] tags: - 微信认证 summary: 更新微信用户资料 description: | 基于当前 `Authorization` 对应的 auth 用户按“非空字段增量更新”资料。 更新规则: - 所有字段都不是必填 - 如果传了 `users_phone_code`,服务端优先调用微信接口换取真实手机号并写入 `users_phone` - 如果没传 `users_phone_code`,但传了 `users_phone`,则直接将该手机号写入数据库 - 如果某个字段未传或传空,则不会清空数据库中的已有值 - 只有请求体里非空的字段才会更新到数据库 requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/WechatProfileRequest' responses: '200': description: 更新成功 content: application/json: schema: $ref: '#/components/schemas/WechatProfileResponse' '400': description: 参数错误、手机号已被占用、微信手机号换取失败或资料更新失败 content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '401': description: token 无效或缺少 openid content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '415': description: 请求体不是 JSON content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '429': description: 请求过于频繁 content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '500': description: 服务端错误 content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' /pb/api/collections/tbl_company/records: post: operationId: postPocketBaseCompanyRecord security: [] tags: - 企业信息 summary: 创建公司 description: | 使用 PocketBase 原生 records create 接口向 `tbl_company` 新增一行记录。 当前线上权限规则: - `createRule = ""`,因此任何客户端都可直接创建 - 其他原生操作中,`update/delete/view` 仅管理员或管理后台用户允许 注意: - 这是 PocketBase 原生返回结构,不是 hooks 统一 `{ code, msg, data }` 包装 - `company_id` 由数据库自动生成,客户端创建时不需要传 - `company_id` 仍带唯一索引,可用于后续按业务 id 查询 requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/PocketBaseCompanyCreateRequest' examples: default: value: company_name: 微信侧测试企业 company_type: 渠道商 company_entity: 张三 company_usci: '91310000123456789A' company_nationality: 中国 company_nationality_code: CN company_province: 上海 company_province_code: '310000' company_city: 上海 company_city_code: '310100' company_district: 浦东新区 company_district_code: '310115' company_postalcode: '200000' company_add: 上海市浦东新区XX路1号 company_status: 有效 company_level: A company_owner_openid: wx-openid-owner-001 company_remark: 小程序公开创建示例 responses: '200': description: 创建成功 content: application/json: schema: $ref: '#/components/schemas/PocketBaseCompanyRecord' '400': description: 参数错误或违反当前集合约束 content: application/json: schema: $ref: '#/components/schemas/PocketBaseNativeError' '403': description: 集合规则被锁定或服务端权限设置异常 content: application/json: schema: $ref: '#/components/schemas/PocketBaseNativeError' '500': description: 服务端错误 content: application/json: schema: $ref: '#/components/schemas/PocketBaseNativeError' get: operationId: getPocketBaseCompanyRecords security: [] tags: - 企业信息 summary: 查询整个 tbl_company 列表 / 根据 company_id 查询对应公司信息 description: | 使用 PocketBase 原生 records list 接口查询 `tbl_company`。 当前线上权限规则: - `listRule = ""`,因此当前整个列表查询与条件查询都公开可读 - `createRule = ""`,因此创建也公开可调用 - `view/update/delete` 仅管理员或管理后台用户允许 标准调用方式有两种: 1. 根据 `company_id` 查询对应公司信息: - `filter=company_id="WX-COMPANY-10001"` - `perPage=1` - `page=1` 2. 查询整个 `tbl_company` 列表: - 不传 `filter` - 按需传 `page`、`perPage` 注意: - 这是 PocketBase 原生返回结构,不是 hooks 统一 `{ code, msg, data }` 包装 - PocketBase 原生标准接口里,“按 `company_id` 查询单条”和“查询整个列表”共用同一个 `GET /records` 路径,因此文档以同一个 GET operation 展示两种调用模式 parameters: - name: filter in: query required: false description: | PocketBase 标准过滤表达式。 - 根据 `company_id` 查询单条时:`company_id="WX-COMPANY-10001"` - 查询整个列表时:不传该参数 schema: type: string example: company_id="WX-COMPANY-10001" - name: page in: query required: false description: 页码 schema: type: integer minimum: 1 default: 1 - name: perPage in: query required: false description: 每页条数;按 `company_id` 单查时建议固定为 `1` schema: type: integer minimum: 1 default: 20 responses: '200': description: 查询成功 content: application/json: schema: $ref: '#/components/schemas/PocketBaseCompanyListResponse' examples: byCompanyId: value: page: 页码 | integer perPage: 每页条数 | integer totalItems: 总记录数 | integer totalPages: 总页数 | integer items: - id: PocketBase记录主键 | string collectionId: 集合ID | string collectionName: 集合名称 | string created: 记录创建时间 | string updated: 记录更新时间 | string company_id: 公司业务id,由数据库自动生成 | string company_name: 公司名称 | string company_type: 公司类型 | string company_entity: 公司法人 | string company_usci: 统一社会信用代码 | string company_nationality: 国家名称 | string company_nationality_code: 国家编码 | string company_province: 省份名称 | string company_province_code: 省份编码 | string company_city: 城市名称 | string company_city_code: 城市编码 | string company_district: 区县名称 | string company_district_code: 区县编码 | string company_postalcode: 邮政编码 | string company_add: 公司地址 | string company_status: 公司状态 | string company_level: 公司等级 | string company_owner_openid: 公司所有者openid | string company_remark: 备注 | string listAll: value: page: 页码 | integer perPage: 每页条数 | integer totalItems: 总记录数 | integer totalPages: 总页数 | integer items: - id: PocketBase记录主键 | string collectionId: 集合ID | string collectionName: 集合名称 | string created: 记录创建时间 | string updated: 记录更新时间 | string company_id: 公司业务id,由数据库自动生成 | string company_name: 公司名称 | string company_type: 公司类型 | string company_entity: 公司法人 | string company_usci: 统一社会信用代码 | string company_nationality: 国家名称 | string company_nationality_code: 国家编码 | string company_province: 省份名称 | string company_province_code: 省份编码 | string company_city: 城市名称 | string company_city_code: 城市编码 | string company_district: 区县名称 | string company_district_code: 区县编码 | string company_postalcode: 邮政编码 | string company_add: 公司地址 | string company_status: 公司状态 | string company_level: 公司等级 | string company_owner_openid: 公司所有者openid | string company_remark: 备注 | string notFoundByCompanyId: value: page: 页码 | integer perPage: 每页条数 | integer totalItems: 总记录数 | integer totalPages: 总页数 | integer items: [] '400': description: 查询参数错误 content: application/json: schema: $ref: '#/components/schemas/PocketBaseNativeError' '403': description: 集合规则被锁定或服务端权限设置异常 content: application/json: schema: $ref: '#/components/schemas/PocketBaseNativeError' '500': description: 服务端错误 content: application/json: schema: $ref: '#/components/schemas/PocketBaseNativeError' /pb/api/collections/tbl_company/records/{recordId}: patch: operationId: patchPocketBaseCompanyRecordByRecordId security: - bearerAuth: [] tags: - 企业信息 summary: 通过 company_id 定位后修改公司信息 description: | 这是 PocketBase 原生标准更新接口,实际写入路径参数仍然必须使用记录主键 `recordId`。 如果前端手里只有 `company_id`,标准调用流程是: 1. 先调用 `GET /pb/api/collections/tbl_company/records?filter=company_id="..."&perPage=1&page=1` 2. 从返回结果 `items[0].id` 中取出 PocketBase 原生记录主键 3. 再调用当前 `PATCH /pb/api/collections/tbl_company/records/{recordId}` 完成更新 当前线上权限规则: - `updateRule` 仅管理员或管理后台用户允许 - 普通公开调用不能直接更新 parameters: - name: recordId in: path required: true description: 通过 `company_id` 查询结果拿到的 PocketBase 记录主键 `id` schema: type: string example: l2r3nq7rqhuob0h requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/PocketBaseCompanyUpdateRequest' examples: default: value: company_name: 微信侧测试企业(更新) company_status: 有效 company_level: S company_owner_openid: wx-openid-owner-001 company_district: 徐汇区 company_district_code: '310104' company_remark: 通过 company_id 先定位再修改 responses: '200': description: 更新成功 content: application/json: schema: $ref: '#/components/schemas/PocketBaseCompanyRecord' '400': description: 参数错误或违反集合约束 content: application/json: schema: $ref: '#/components/schemas/PocketBaseNativeError' '403': description: 当前调用方没有 update 权限 content: application/json: schema: $ref: '#/components/schemas/PocketBaseNativeError' '404': description: 记录不存在 content: application/json: schema: $ref: '#/components/schemas/PocketBaseNativeError' '500': description: 服务端错误 content: application/json: schema: $ref: '#/components/schemas/PocketBaseNativeError' /pb/api/collections/tbl_attachments/records: get: operationId: getPocketBaseAttachmentRecords security: [] tags: - 附件信息 summary: 根据 attachments_id 查询附件信息 description: | 使用 PocketBase 原生 records list 接口查询 `tbl_attachments`。 当前线上权限规则: - `listRule = ""`,因此任何客户端都可直接读取 - 原生 `create/update/delete` 仍仅管理员或管理后台用户允许 标准调用方式: - `filter=attachments_id="ATT-1774599142438-8n1UcU"` - `perPage=1` - `page=1` 注意: - 这是 PocketBase 原生返回结构,不是 hooks 统一 `{ code, msg, data }` 包装 - `attachments_link` 返回的是 PocketBase 文件字段值,不是完整下载地址 - 若需文件流地址,可按 PocketBase 标准文件路径自行拼接:`/pb/api/files/{collectionId}/{recordId}/{attachments_link}` parameters: - name: filter in: query required: true description: | PocketBase 标准过滤表达式。 按 `attachments_id` 精确查询时固定写法为: - `attachments_id="ATT-1774599142438-8n1UcU"` schema: type: string example: attachments_id="ATT-1774599142438-8n1UcU" - name: page in: query required: false description: 页码 schema: type: integer minimum: 1 default: 1 - name: perPage in: query required: false description: 每页条数;按 `attachments_id` 单查时建议固定为 `1` schema: type: integer minimum: 1 default: 1 responses: '200': description: 查询成功 content: application/json: schema: $ref: '#/components/schemas/PocketBaseAttachmentListResponse' examples: byAttachmentsId: value: page: 页码 | integer perPage: 每页条数 | integer totalItems: 总记录数 | integer totalPages: 总页数 | integer items: - id: PocketBase记录主键 | string collectionId: 集合ID | string collectionName: 集合名称 | string attachments_id: 附件业务ID | string attachments_link: PocketBase文件字段值,可拼接文件流地址 | string attachments_filename: 原始文件名 | string attachments_filetype: 文件类型或MIME | string attachments_size: 文件大小 | number attachments_owner: 上传者业务标识 | string attachments_md5: 文件MD5 | string attachments_ocr: OCR识别结果 | string attachments_status: 附件状态 | string attachments_remark: 备注 | string '400': description: 查询参数错误 content: application/json: schema: $ref: '#/components/schemas/PocketBaseNativeError' '403': description: 集合规则被锁定或服务端权限设置异常 content: application/json: schema: $ref: '#/components/schemas/PocketBaseNativeError' '500': description: 服务端错误 content: application/json: schema: $ref: '#/components/schemas/PocketBaseNativeError' /pb/api/collections/tbl_document/records: get: operationId: getPocketBaseDocumentRecords security: [] tags: - 文档信息 summary: 分页查询文档列表 / 按 system_dict_id 与 enum 双条件分页筛选文档 description: | 使用 PocketBase 原生 records list 接口查询 `tbl_document`。 当前线上权限规则: - `listRule = ""`,因此任何客户端都可直接分页查询 - `viewRule = ""`,因此单条详情也可公开读取 - `create/update/delete` 仍仅管理员或管理后台用户允许 `document_type` 的存储格式为: - `system_dict_id@dict_word_enum|system_dict_id@dict_word_enum` 业务上这里是两个独立条件,并且查询时两个条件都要满足: - 条件 1:包含某个 `system_dict_id` - 条件 2:包含某个 `enum` PocketBase 原生标准接口实际只有一个 `filter` 参数,因此应在同一个 `filter` 中写成两个 `contains` 条件,例如: - `system_dict_id = DICT-1774599144591-hAEFQj` - `enum = UT1` - 最终:`document_type ~ "DICT-1774599144591-hAEFQj" && document_type ~ "@UT1"` 这条写法已经按线上真实数据验证通过。 排序说明: - 当前线上统一按 `document_create` 排序 - 若要“最新上传的排在最前面”,请传 `sort=-document_create` 标准调用方式有两种: 1. 查询整个文档列表: - 不传 `filter` - 按需传 `page`、`perPage` - 若要按最新上传倒序,传 `sort=-document_create` 2. 根据 `system_dict_id` 和 `enum` 两个业务条件分页筛选: - 直接传 `filter=document_type ~ "" && document_type ~ "@"` - 传 `page`、`perPage` - 若要按最新上传倒序,传 `sort=-document_create` 注意: - 这是 PocketBase 原生返回结构,不是 hooks 统一 `{ code, msg, data }` 包装 - 如果需要更复杂的条件组合,可继续使用 PocketBase 原生 `filter` 语法自行扩展 parameters: - name: filter in: query required: false description: | PocketBase 标准过滤表达式。 - 查全部列表时:不传 - 按业务条件筛选时,同时写两个 `contains` 条件 - 第二个条件建议带上 `@` 前缀,避免误命中 - 例如:`document_type ~ "DICT-1774599144591-hAEFQj" && document_type ~ "@UT1"` schema: type: string example: document_type ~ "DICT-1774599144591-hAEFQj" && document_type ~ "@UT1" - name: page in: query required: false description: 页码 schema: type: integer minimum: 1 default: 1 - name: perPage in: query required: false description: 每页条数 schema: type: integer minimum: 1 default: 20 - name: sort in: query required: false description: | PocketBase 原生排序表达式。 当前线上建议使用: - `-document_create`:按最新上传倒序返回 schema: type: string example: -document_create responses: '200': description: 查询成功 content: application/json: schema: $ref: '#/components/schemas/PocketBaseDocumentListResponse' examples: listAll: value: page: 页码 | integer perPage: 每页条数 | integer totalItems: 总记录数 | integer totalPages: 总页数 | integer items: - id: PocketBase记录主键 | string collectionId: 集合ID | string collectionName: 集合名称 | string created: 记录创建时间 | string updated: 记录更新时间 | string document_id: 文档业务ID | string document_create: 文档创建时间,由数据库自动生成 | string document_title: 文档标题 | string document_type: 文档类型,按system_dict_id@dict_word_enum保存 | string document_status: 文档状态 | string document_owner: 上传者openid | string filterByTypeToken: value: page: 页码 | integer perPage: 每页条数 | integer totalItems: 总记录数 | integer totalPages: 总页数 | integer items: - id: PocketBase记录主键 | string collectionId: 集合ID | string collectionName: 集合名称 | string created: 记录创建时间 | string updated: 记录更新时间 | string document_id: 文档业务ID | string document_create: 文档创建时间,由数据库自动生成 | string document_title: 文档标题 | string document_type: 文档类型,按system_dict_id@dict_word_enum保存 | string document_status: 文档状态 | string document_owner: 上传者openid | string - id: ofy47wp9mmm0aub collectionId: pbc_3636602973 collectionName: tbl_document created: '2026-03-28 07:20:00.000Z' updated: '2026-03-28 07:20:00.000Z' document_id: DOC-1774680568340-TeUSQn document_create: '2026-03-28 08:22:48.000Z' document_title: 易从碳达人节能系统,为酒店每天每间房省二元,以智能推动酒店ESG双碳落地!上海酒店用品展我们在E7A01等您!! document_type: DICT-1774599144591-hAEFQj@UT1 document_status: 有效 document_owner: su13106859882 '400': description: 查询参数错误 content: application/json: schema: $ref: '#/components/schemas/PocketBaseNativeError' '403': description: 集合规则被锁定或服务端权限设置异常 content: application/json: schema: $ref: '#/components/schemas/PocketBaseNativeError' '500': description: 服务端错误 content: application/json: schema: $ref: '#/components/schemas/PocketBaseNativeError' components: securitySchemes: bearerAuth: type: http scheme: bearer bearerFormat: JWT schemas: ApiResponseBase: type: object required: - code - msg - data properties: code: type: - integer - string description: "业务状态码" example: 业务状态码 | integer msg: type: string description: "业务提示信息" example: 业务提示信息 | string data: description: "业务响应数据" type: object additionalProperties: true example: code: 业务状态码 | integer msg: 业务提示信息 | string data: 任意业务字段: 业务响应数据 | object ErrorResponse: type: object required: - code - msg - data properties: code: type: - integer - string description: "业务状态码" example: 业务状态码 | integer msg: type: string description: "业务提示信息" example: 失败原因提示 | string data: description: "业务响应数据" type: object additionalProperties: true example: code: 业务状态码 | integer msg: 失败原因提示 | string data: 任意错误字段: 错误附加信息 | object CompanyInfo: anyOf: - type: object description: 用户所属公司信息;当用户尚未绑定公司时返回 `null` properties: pb_id: type: string description: PocketBase 记录主键 id example: PocketBase记录主键id | string company_id: type: string description: 公司业务 id,由数据库自动生成 example: 公司业务id,由数据库自动生成 | string company_name: type: string description: 公司名称 example: 公司名称 | string company_type: type: string description: 公司类型 example: 公司类型 | string company_entity: type: string description: 公司法人 example: 公司法人 | string company_usci: type: string description: 统一社会信用代码 example: 统一社会信用代码 | string company_nationality: type: string description: 国家名称 example: 国家名称 | string company_nationality_code: type: string description: 国家编码 example: 国家编码 | string company_province: type: string description: 省份名称 example: 省份名称 | string company_province_code: type: string description: 省份编码 example: 省份编码 | string company_city: type: string description: 城市名称 example: 城市名称 | string company_city_code: type: string description: 城市编码 example: 城市编码 | string company_district: type: string description: 区/县名称 example: 区县名称 | string company_district_code: type: string description: 区/县编码 example: 区县编码 | string company_postalcode: type: string description: 邮政编码 example: 邮政编码 | string company_add: type: string description: 公司地址 example: 公司地址 | string company_status: type: string description: 公司状态 example: 公司状态 | string company_level: type: string description: 公司等级 example: 公司等级 | string company_owner_openid: type: string description: 公司所有者 openid example: 公司所有者openid | string company_remark: type: string description: 备注 example: 备注 | string created: type: string description: 记录创建时间 example: 记录创建时间 | string updated: type: string description: 记录更新时间 example: 记录更新时间 | string example: pb_id: PocketBase记录主键id | string company_id: 公司业务id,由数据库自动生成 | string company_name: 公司名称 | string company_type: 公司类型 | string company_entity: 公司法人 | string company_usci: 统一社会信用代码 | string company_nationality: 国家名称 | string company_nationality_code: 国家编码 | string company_province: 省份名称 | string company_province_code: 省份编码 | string company_city: 城市名称 | string company_city_code: 城市编码 | string company_district: 区县名称 | string company_district_code: 区县编码 | string company_postalcode: 邮政编码 | string company_add: 公司地址 | string company_status: 公司状态 | string company_level: 公司等级 | string company_owner_openid: 公司所有者openid | string company_remark: 备注 | string created: 记录创建时间 | string updated: 记录更新时间 | string - type: 'null' PocketBaseRecordBase: type: object required: - id - collectionId - collectionName - created - updated properties: id: type: string description: "PocketBase 记录主键" example: PocketBase记录主键 | string collectionId: type: string example: 集合ID | string collectionName: type: string example: 集合名称 | string created: type: string description: "记录创建时间" example: 记录创建时间 | string updated: type: string description: "记录更新时间" example: 记录更新时间 | string example: id: PocketBase记录主键 | string collectionId: 集合ID | string collectionName: 集合名称 | string created: 记录创建时间 | string updated: 记录更新时间 | string PocketBaseCompanyFields: type: object properties: company_id: type: string description: 公司业务 id,由数据库自动生成 example: 公司业务id,由数据库自动生成 | string company_name: type: string description: 公司名称 example: 公司名称 | string company_type: type: string description: 公司类型 example: 公司类型 | string company_entity: type: string description: 公司法人 example: 公司法人 | string company_usci: type: string description: 统一社会信用代码 example: 统一社会信用代码 | string company_nationality: type: string description: 国家名称 example: 国家名称 | string company_nationality_code: type: string description: 国家编码 example: 国家编码 | string company_province: type: string description: 省份名称 example: 省份名称 | string company_province_code: type: string description: 省份编码 example: 省份编码 | string company_city: type: string description: 城市名称 example: 城市名称 | string company_city_code: type: string description: 城市编码 example: 城市编码 | string company_district: type: string description: 区/县名称 example: 区县名称 | string company_district_code: type: string description: 区/县编码 example: 区县编码 | string company_postalcode: type: string description: 邮政编码 example: 邮政编码 | string company_add: type: string description: 公司地址 example: 公司地址 | string company_status: type: string description: 公司状态 example: 公司状态 | string company_level: type: string description: 公司等级 example: 公司等级 | string company_owner_openid: type: string description: 公司所有者 openid example: 公司所有者openid | string company_remark: type: string description: 备注 example: 备注 | string PocketBaseCompanyRecord: allOf: - $ref: '#/components/schemas/PocketBaseRecordBase' - $ref: '#/components/schemas/PocketBaseCompanyFields' example: id: PocketBase记录主键 | string collectionId: 集合ID | string collectionName: 集合名称 | string created: 记录创建时间 | string updated: 记录更新时间 | string company_id: 公司业务id,由数据库自动生成 | string company_name: 公司名称 | string company_type: 公司类型 | string company_entity: 公司法人 | string company_usci: 统一社会信用代码 | string company_nationality: 国家名称 | string company_nationality_code: 国家编码 | string company_province: 省份名称 | string company_province_code: 省份编码 | string company_city: 城市名称 | string company_city_code: 城市编码 | string company_district: 区县名称 | string company_district_code: 区县编码 | string company_postalcode: 邮政编码 | string company_add: 公司地址 | string company_status: 公司状态 | string company_level: 公司等级 | string company_owner_openid: 公司所有者openid | string company_remark: 备注 | string PocketBaseCompanyCreateRequest: type: object properties: company_name: description: "公司名称" type: string company_type: description: "公司类型" type: string company_entity: description: "公司法人" type: string company_usci: description: "统一社会信用代码" type: string company_nationality: description: "国家名称" type: string company_nationality_code: description: "国家编码" type: string company_province: description: "省份名称" type: string company_province_code: description: "省份编码" type: string company_city: description: "城市名称" type: string company_city_code: description: "城市编码" type: string company_district: description: "区 / 县名称" type: string company_district_code: description: "区 / 县编码" type: string company_postalcode: description: "邮编" type: string company_add: description: "地址" type: string company_status: description: "公司状态" type: string company_level: description: "公司等级" type: string company_owner_openid: description: "公司所有者 openid" type: string company_remark: description: "备注" type: string additionalProperties: false PocketBaseCompanyUpdateRequest: type: object properties: company_id: description: "所属公司业务 ID" type: string company_name: description: "公司名称" type: string company_type: description: "公司类型" type: string company_entity: description: "公司法人" type: string company_usci: description: "统一社会信用代码" type: string company_nationality: description: "国家名称" type: string company_nationality_code: description: "国家编码" type: string company_province: description: "省份名称" type: string company_province_code: description: "省份编码" type: string company_city: description: "城市名称" type: string company_city_code: description: "城市编码" type: string company_district: description: "区 / 县名称" type: string company_district_code: description: "区 / 县编码" type: string company_postalcode: description: "邮编" type: string company_add: description: "地址" type: string company_status: description: "公司状态" type: string company_level: description: "公司等级" type: string company_owner_openid: description: "公司所有者 openid" type: string company_remark: description: "备注" type: string additionalProperties: false PocketBaseCompanyListResponse: type: object required: - page - perPage - totalItems - totalPages - items properties: page: type: - integer - string example: 页码 | integer perPage: type: - integer - string example: 每页条数 | integer totalItems: type: - integer - string example: 总记录数 | integer totalPages: type: - integer - string example: 总页数 | integer items: type: array items: $ref: '#/components/schemas/PocketBaseCompanyRecord' example: page: 页码 | integer perPage: 每页条数 | integer totalItems: 总记录数 | integer totalPages: 总页数 | integer items: - id: PocketBase记录主键 | string collectionId: 集合ID | string collectionName: 集合名称 | string created: 记录创建时间 | string updated: 记录更新时间 | string company_id: 公司业务id,由数据库自动生成 | string company_name: 公司名称 | string company_type: 公司类型 | string company_entity: 公司法人 | string company_usci: 统一社会信用代码 | string company_nationality: 国家名称 | string company_nationality_code: 国家编码 | string company_province: 省份名称 | string company_province_code: 省份编码 | string company_city: 城市名称 | string company_city_code: 城市编码 | string company_district: 区县名称 | string company_district_code: 区县编码 | string company_postalcode: 邮政编码 | string company_add: 公司地址 | string company_status: 公司状态 | string company_level: 公司等级 | string company_owner_openid: 公司所有者openid | string company_remark: 备注 | string PocketBaseAttachmentRecord: type: object properties: id: type: string description: PocketBase 记录主键 example: PocketBase记录主键 | string collectionId: type: string description: 集合ID example: 集合ID | string collectionName: type: string description: 集合名称 example: 集合名称 | string attachments_id: type: string description: 附件业务 ID example: 附件业务ID | string attachments_link: type: string description: PocketBase 文件字段值,可按标准文件路径拼接文件流地址 example: PocketBase文件字段值,可拼接文件流地址 | string attachments_filename: type: string description: 原始文件名 example: 原始文件名 | string attachments_filetype: type: string description: 文件类型 / MIME example: 文件类型或MIME | string attachments_size: type: - number - integer - string description: 文件大小 example: 文件大小 | number attachments_owner: type: string description: 上传者业务标识 example: 上传者业务标识 | string attachments_md5: type: string description: 文件 MD5 example: 文件MD5 | string attachments_ocr: type: string description: OCR 识别结果 example: OCR识别结果 | string attachments_status: type: string description: 附件状态 example: 附件状态 | string attachments_remark: type: string description: 备注 example: 备注 | string example: id: PocketBase记录主键 | string collectionId: 集合ID | string collectionName: 集合名称 | string attachments_id: 附件业务ID | string attachments_link: PocketBase文件字段值,可拼接文件流地址 | string attachments_filename: 原始文件名 | string attachments_filetype: 文件类型或MIME | string attachments_size: 文件大小 | number attachments_owner: 上传者业务标识 | string attachments_md5: 文件MD5 | string attachments_ocr: OCR识别结果 | string attachments_status: 附件状态 | string attachments_remark: 备注 | string PocketBaseAttachmentListResponse: type: object required: - page - perPage - totalItems - totalPages - items properties: page: type: - integer - string example: 页码 | integer perPage: type: - integer - string example: 每页条数 | integer totalItems: type: - integer - string example: 总记录数 | integer totalPages: type: - integer - string example: 总页数 | integer items: type: array items: $ref: '#/components/schemas/PocketBaseAttachmentRecord' example: page: 页码 | integer perPage: 每页条数 | integer totalItems: 总记录数 | integer totalPages: 总页数 | integer items: - id: PocketBase记录主键 | string collectionId: 集合ID | string collectionName: 集合名称 | string attachments_id: 附件业务ID | string attachments_link: PocketBase文件字段值,可拼接文件流地址 | string attachments_filename: 原始文件名 | string attachments_filetype: 文件类型或MIME | string attachments_size: 文件大小 | number attachments_owner: 上传者业务标识 | string attachments_md5: 文件MD5 | string attachments_ocr: OCR识别结果 | string attachments_status: 附件状态 | string attachments_remark: 备注 | string PocketBaseDocumentFields: type: object properties: document_id: type: string description: "文档业务 ID" example: 文档业务ID | string document_create: type: string description: "文档创建时间,由数据库自动生成" example: 文档创建时间,由数据库自动生成 | string document_title: type: string description: "文档标题" example: 文档标题 | string document_type: type: string example: 文档类型,按system_dict_id@dict_word_enum保存 | string document_status: type: string description: "文档状态,仅 `有效` / `过期`" example: 文档状态 | string document_owner: type: string description: "上传者 openid" example: 上传者openid | string PocketBaseDocumentRecord: allOf: - $ref: '#/components/schemas/PocketBaseRecordBase' - $ref: '#/components/schemas/PocketBaseDocumentFields' example: id: PocketBase记录主键 | string collectionId: 集合ID | string collectionName: 集合名称 | string created: 记录创建时间 | string updated: 记录更新时间 | string document_id: 文档业务ID | string document_create: 文档创建时间,由数据库自动生成 | string document_title: 文档标题 | string document_type: 文档类型,按system_dict_id@dict_word_enum保存 | string document_status: 文档状态 | string document_owner: 上传者openid | string PocketBaseDocumentListResponse: type: object required: - page - perPage - totalItems - totalPages - items properties: page: type: - integer - string example: 页码 | integer perPage: type: - integer - string example: 每页条数 | integer totalItems: type: - integer - string example: 总记录数 | integer totalPages: type: - integer - string example: 总页数 | integer items: type: array items: $ref: '#/components/schemas/PocketBaseDocumentRecord' example: page: 页码 | integer perPage: 每页条数 | integer totalItems: 总记录数 | integer totalPages: 总页数 | integer items: - id: PocketBase记录主键 | string collectionId: 集合ID | string collectionName: 集合名称 | string created: 记录创建时间 | string updated: 记录更新时间 | string document_id: 文档业务ID | string document_create: 文档创建时间,由数据库自动生成 | string document_title: 文档标题 | string document_type: 文档类型,按system_dict_id@dict_word_enum保存 | string document_status: 文档状态 | string document_owner: 上传者openid | string PocketBaseNativeError: type: object properties: code: type: - integer - string description: "业务状态码" example: 错误状态码 | integer message: type: string example: PocketBase原生错误信息 | string data: description: "业务响应数据" type: object additionalProperties: true example: code: 错误状态码 | integer message: PocketBase原生错误信息 | string data: 任意错误字段: 原生错误附加信息 | object UserInfo: type: object properties: pb_id: description: "PocketBase 记录主键 id" type: string users_convers_id: description: "会话侧用户 ID" type: string users_id: description: "用户业务 ID" type: string users_idtype: description: "身份来源类型或证件类型" anyOf: - type: string enum: - WeChat - ManagePlatform - type: string users_id_number: description: "证件号" type: string users_type: description: "用户类型" anyOf: - type: string enum: - 游客 - 注册用户 - type: string users_name: description: "用户姓名 / 昵称" type: string users_status: description: "用户状态" type: - string - number users_rank_level: description: "用户星级数值" type: - number - integer - string users_auth_type: description: "账户类型" type: - number - integer - string users_phone: description: "手机号" type: string users_phone_masked: type: string users_level: type: string description: 用户等级 users_tag: type: string description: 用户标签 users_picture: type: string description: 用户头像附件的 `attachments_id` users_picture_url: type: string description: 根据 `users_picture -> tbl_attachments` 自动解析出的头像文件流链接 users_id_pic_a: type: string description: 证件正面附件的 `attachments_id` users_id_pic_a_url: type: string description: 根据 `users_id_pic_a -> tbl_attachments` 自动解析出的文件流链接 users_id_pic_b: type: string description: 证件反面附件的 `attachments_id` users_id_pic_b_url: type: string description: 根据 `users_id_pic_b -> tbl_attachments` 自动解析出的文件流链接 users_title_picture: type: string description: 资质附件的 `attachments_id` users_title_picture_url: type: string description: 根据 `users_title_picture -> tbl_attachments` 自动解析出的文件流链接 openid: type: string description: 全平台统一身份标识 company_id: type: string description: 公司业务 id,存储 `tbl_company.company_id` users_parent_id: type: string description: 上级用户业务 id users_promo_code: type: string description: 推广码 usergroups_id: type: string description: 用户组业务 id company: $ref: '#/components/schemas/CompanyInfo' created: type: string description: 用户创建时间 updated: type: string description: 用户更新时间 example: pb_id: PocketBase记录主键id | string users_convers_id: 会话侧用户ID | string users_id: 用户业务ID | string users_idtype: 用户身份来源类型 | string users_id_number: 证件号 | string users_type: 用户类型 | string users_name: 用户姓名或昵称 | string users_status: 用户状态 | string users_rank_level: 用户星级数值 | number users_auth_type: 账户类型 | number users_phone: 手机号 | string users_phone_masked: 手机号脱敏值 | string users_level: 用户等级 | string users_tag: 用户标签 | string users_picture: 用户头像附件ID | string users_picture_url: 用户头像文件流链接 | string users_id_pic_a: 证件正面附件ID | string users_id_pic_a_url: 证件正面文件流链接 | string users_id_pic_b: 证件反面附件ID | string users_id_pic_b_url: 证件反面文件流链接 | string users_title_picture: 资质附件ID | string users_title_picture_url: 资质附件文件流链接 | string openid: 全平台统一身份标识 | string company_id: 公司业务id | string users_parent_id: 上级用户业务id | string users_promo_code: 推广码 | string usergroups_id: 用户组业务id | string company: pb_id: PocketBase记录主键id | string company_id: 公司业务id,由数据库自动生成 | string company_name: 公司名称 | string company_type: 公司类型 | string company_entity: 公司法人 | string company_usci: 统一社会信用代码 | string company_nationality: 国家名称 | string company_nationality_code: 国家编码 | string company_province: 省份名称 | string company_province_code: 省份编码 | string company_city: 城市名称 | string company_city_code: 城市编码 | string company_district: 区县名称 | string company_district_code: 区县编码 | string company_postalcode: 邮政编码 | string company_add: 公司地址 | string company_status: 公司状态 | string company_level: 公司等级 | string company_owner_openid: 公司所有者openid | string company_remark: 备注 | string created: 记录创建时间 | string updated: 记录更新时间 | string created: 用户创建时间 | string updated: 用户更新时间 | string WechatLoginRequest: type: object required: - users_wx_code properties: users_wx_code: type: string description: 微信小程序登录临时凭证 code example: 0a1b2c3d4e5f6g WechatProfileRequest: type: object properties: users_name: type: string description: "用户姓名 / 昵称" example: 张三 users_phone_code: type: string description: 可选。若传入,服务端优先通过微信接口换取真实手机号并写入数据库 example: 2b7d9f2e3c4a5b6d7e8f users_phone: type: string description: 可选。未传 `users_phone_code` 时,可直接写入手机号 example: '13800138000' users_tag: type: string description: 可选。用户标签;非空时才更新 example: 核心客户 users_picture: type: string description: 可选。用户头像附件的 `attachments_id` example: ATT-1743123456789-abc123 users_id_pic_a: type: string description: 可选。证件正面附件的 `attachments_id` users_id_pic_b: type: string description: 可选。证件反面附件的 `attachments_id` users_title_picture: type: string description: 可选。资质附件的 `attachments_id` SystemRefreshTokenRequest: type: object properties: users_wx_code: type: - string - 'null' description: | 可选。 当前 token 失效时,可通过该 code 重新签发 token。 example: 0a1b2c3d4e5f6g AuthSuccessData: type: object properties: status: anyOf: - type: string enum: - register_success - login_success - type: string is_info_complete: type: - boolean - string user: $ref: '#/components/schemas/UserInfo' AuthSuccessResponse: allOf: - $ref: '#/components/schemas/ApiResponseBase' - type: object required: - token properties: data: description: "业务响应数据" $ref: '#/components/schemas/AuthSuccessData' token: type: string description: PocketBase 原生 auth token example: code: 业务状态码 | integer msg: 业务提示信息 | string data: status: 登录或注册状态 | string is_info_complete: 资料是否完整 | boolean user: pb_id: PocketBase记录主键id | string users_convers_id: 会话侧用户ID | string users_id: 用户业务ID | string users_idtype: 用户身份来源类型 | string users_id_number: 证件号 | string users_type: 用户类型 | string users_name: 用户姓名或昵称 | string users_status: 用户状态 | string users_rank_level: 用户星级数值 | number users_auth_type: 账户类型 | number users_phone: 手机号 | string users_phone_masked: 手机号脱敏值 | string users_level: 用户等级 | string users_tag: 用户标签 | string users_picture: 用户头像附件ID | string users_picture_url: 用户头像文件流链接 | string users_id_pic_a: 证件正面附件ID | string users_id_pic_a_url: 证件正面文件流链接 | string users_id_pic_b: 证件反面附件ID | string users_id_pic_b_url: 证件反面文件流链接 | string users_title_picture: 资质附件ID | string users_title_picture_url: 资质附件文件流链接 | string openid: 全平台统一身份标识 | string company_id: 公司业务id | string users_parent_id: 上级用户业务id | string users_promo_code: 推广码 | string usergroups_id: 用户组业务id | string company: pb_id: PocketBase记录主键id | string company_id: 公司业务id,由数据库自动生成 | string company_name: 公司名称 | string company_type: 公司类型 | string company_entity: 公司法人 | string company_usci: 统一社会信用代码 | string company_nationality: 国家名称 | string company_nationality_code: 国家编码 | string company_province: 省份名称 | string company_province_code: 省份编码 | string company_city: 城市名称 | string company_city_code: 城市编码 | string company_district: 区县名称 | string company_district_code: 区县编码 | string company_postalcode: 邮政编码 | string company_add: 公司地址 | string company_status: 公司状态 | string company_level: 公司等级 | string company_owner_openid: 公司所有者openid | string company_remark: 备注 | string created: 记录创建时间 | string updated: 记录更新时间 | string created: 用户创建时间 | string updated: 用户更新时间 | string token: PocketBase原生认证token | string WechatProfileResponseData: type: object properties: status: anyOf: - type: string enum: - update_success - type: string user: $ref: '#/components/schemas/UserInfo' WechatProfileResponse: allOf: - $ref: '#/components/schemas/ApiResponseBase' - type: object properties: data: description: "业务响应数据" $ref: '#/components/schemas/WechatProfileResponseData' example: code: 业务状态码 | integer msg: 业务提示信息 | string data: status: 资料更新状态 | string user: pb_id: PocketBase记录主键id | string users_convers_id: 会话侧用户ID | string users_id: 用户业务ID | string users_idtype: 用户身份来源类型 | string users_id_number: 证件号 | string users_type: 用户类型 | string users_name: 用户姓名或昵称 | string users_status: 用户状态 | string users_rank_level: 用户星级数值 | number users_auth_type: 账户类型 | number users_phone: 手机号 | string users_phone_masked: 手机号脱敏值 | string users_level: 用户等级 | string users_tag: 用户标签 | string users_picture: 用户头像附件ID | string users_picture_url: 用户头像文件流链接 | string users_id_pic_a: 证件正面附件ID | string users_id_pic_a_url: 证件正面文件流链接 | string users_id_pic_b: 证件反面附件ID | string users_id_pic_b_url: 证件反面文件流链接 | string users_title_picture: 资质附件ID | string users_title_picture_url: 资质附件文件流链接 | string openid: 全平台统一身份标识 | string company_id: 公司业务id | string users_parent_id: 上级用户业务id | string users_promo_code: 推广码 | string usergroups_id: 用户组业务id | string company: pb_id: PocketBase记录主键id | string company_id: 公司业务id,由数据库自动生成 | string company_name: 公司名称 | string company_type: 公司类型 | string company_entity: 公司法人 | string company_usci: 统一社会信用代码 | string company_nationality: 国家名称 | string company_nationality_code: 国家编码 | string company_province: 省份名称 | string company_province_code: 省份编码 | string company_city: 城市名称 | string company_city_code: 城市编码 | string company_district: 区县名称 | string company_district_code: 区县编码 | string company_postalcode: 邮政编码 | string company_add: 公司地址 | string company_status: 公司状态 | string company_level: 公司等级 | string company_owner_openid: 公司所有者openid | string company_remark: 备注 | string created: 记录创建时间 | string updated: 记录更新时间 | string created: 用户创建时间 | string updated: 用户更新时间 | string RefreshTokenResponse: allOf: - $ref: '#/components/schemas/ApiResponseBase' - type: object required: - token properties: data: type: object additionalProperties: true description: "业务响应数据" example: {} token: type: string description: 新签发的 PocketBase 原生 auth token example: code: 业务状态码 | integer msg: 刷新成功 | string data: {} token: 新签发的PocketBase原生auth token | string UsersCountData: type: object properties: total_users: type: - integer - string example: 用户总数 | integer UsersCountResponse: allOf: - $ref: '#/components/schemas/ApiResponseBase' - type: object properties: data: description: "业务响应数据" $ref: '#/components/schemas/UsersCountData' example: code: 业务状态码 | integer msg: 业务提示信息 | string data: total_users: 用户总数 | integer