Files
Web_BAI_Manage_ApiServer/pocket-base/spec/openapi-manage/cart.yaml
XuJiacheng ec6b59b4fa feat: 添加购物车相关迁移和索引功能
- 在 package.json 中添加迁移脚本 `migrate:cart-active-unique-index`。
- 修改 `pocketbase.cart-order.js` 文件,更新 `cart_id` 和 `cart_product_id` 字段的必填属性,并添加唯一索引 `idx_tbl_cart_owner_product_active_unique`。
- 在 `pocketbase.ensure-cart-order-autogen-id.js` 中,调整 `cart_id` 字段的必填属性为可选,并确保 `order_id` 字段为必填。
- 在 `pocketbase.product-list.js` 中,新增 `prod_list_barcode` 字段。
- 新增 `make-openapi-standalone.cjs` 脚本,用于处理 OpenAPI 文档。
- 新增 `pocketbase.cart-active-unique-index.js` 脚本,处理购物车的唯一索引和去重逻辑。
2026-04-09 14:49:12 +08:00

393 lines
13 KiB
YAML
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.
openapi: 3.1.0
info:
title: BAI PocketBase Manage Hooks API - Cart
version: 1.0.0
description: |
hooks 购物车接口文档。
本文件可单独导入使用,不依赖其他 YAML。
servers:
- url: https://bai-api.blv-oa.com
description: 生产环境
- url: http://localhost:8090
description: PocketBase 本地环境
paths:
/pb/api/cart/list:
post:
tags: [购物车]
summary: 查询购物车列表
description: |
调用自定义 hooks API 查询当前登录用户的购物车列表。
请求头请自行携带 `Authorization: Bearer <token>`。
requestBody:
required: false
content:
application/json:
schema:
$ref: '#/components/schemas/CartListRequest'
example:
keyword: 模糊搜索关键字|string
cart_status: 购物车状态|string
cart_number: 购物车名称或分组号|string
responses:
'200':
description: 查询成功
content:
application/json:
schema:
$ref: '#/components/schemas/CartListResponse'
'400':
description: 参数错误
'401':
description: token 无效或已过期
'415':
description: 请求体必须为 application/json
'500':
description: 服务端错误
/pb/api/cart/detail:
post:
tags: [购物车]
summary: 查询购物车详情
description: |
调用自定义 hooks API 按 `cart_id` 查询单条购物车记录。
请求头请自行携带 `Authorization: Bearer <token>`。
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/CartDetailRequest'
example:
cart_id: 购物车业务ID|string
responses:
'200':
description: 查询成功
content:
application/json:
schema:
$ref: '#/components/schemas/CartRecord'
'400':
description: 参数错误
'401':
description: token 无效或已过期
'403':
description: 无权访问该购物车记录
'404':
description: 未找到对应购物车记录
'415':
description: 请求体必须为 application/json
'500':
description: 服务端错误
/pb/api/cart/create:
post:
tags: [购物车]
summary: 新增购物车记录
description: |
调用自定义 hooks API 新增购物车记录。
服务端会基于当前 token 自动写入 `cart_owner` 并生成 `cart_id`。
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/CartCreateRequest'
example:
cart_number: 可选;未传时服务端自动生成|string
cart_product_id: tbl_product_list 的 PocketBase recordId|string
cart_product_quantity: 产品数量|integer
cart_status: 购物车状态|string
cart_at_price: 加入购物车时价格|integer
cart_remark: 备注|string
responses:
'200':
description: 创建成功
content:
application/json:
schema:
$ref: '#/components/schemas/CartRecord'
'400':
description: 参数错误或创建失败
'401':
description: token 无效或已过期
'415':
description: 请求体必须为 application/json
'429':
description: 重复请求过于频繁
'500':
description: 服务端错误
/pb/api/cart/update:
post:
tags: [购物车]
summary: 修改购物车记录
description: |
调用自定义 hooks API 按 `cart_id` 更新购物车记录。
请求头请自行携带 `Authorization: Bearer <token>`。
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/CartUpdateRequest'
example:
cart_id: 购物车业务ID|string
cart_number: 购物车名称或分组号|string
cart_product_id: tbl_product_list 的 PocketBase recordId|string
cart_product_quantity: 产品数量|integer
cart_status: 购物车状态|string
cart_at_price: 加入购物车时价格|integer
cart_remark: 备注|string
responses:
'200':
description: 更新成功
content:
application/json:
schema:
$ref: '#/components/schemas/CartRecord'
'400':
description: 参数错误或更新失败
'401':
description: token 无效或已过期
'403':
description: 无权访问该购物车记录
'404':
description: 未找到待修改记录
'415':
description: 请求体必须为 application/json
'429':
description: 重复请求过于频繁
'500':
description: 服务端错误
/pb/api/cart/delete:
post:
tags: [购物车]
summary: 删除购物车记录
description: |
调用自定义 hooks API 按 `cart_id` 删除购物车记录。
当前后端实现以实际 hooks 逻辑为准。
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/CartDeleteRequest'
example:
cart_id: 购物车业务ID|string
responses:
'200':
description: 删除成功
content:
application/json:
schema:
$ref: '#/components/schemas/CartDeleteResponse'
'400':
description: 参数错误或删除失败
'401':
description: token 无效或已过期
'403':
description: 无权访问该购物车记录
'404':
description: 未找到待删除记录
'415':
description: 请求体必须为 application/json
'429':
description: 重复请求过于频繁
'500':
description: 服务端错误
components:
schemas:
CartRecord:
type: object
properties:
pb_id:
type: string
description: PocketBase记录主键id
created:
type: string
description: PocketBase系统创建时间
updated:
type: string
description: PocketBase系统更新时间
cart_id:
type: string
description: 购物车业务ID
cart_number:
type: string
description: 购物车名称或分组号
cart_create:
type: string
description: 购物车项创建时间
cart_owner:
type: string
description: 购物车所有者openid
cart_product_id:
type: string
description: 关联产品的 PocketBase recordId
cart_product_business_id:
type: string
description: 关联产品的业务 ID即 prod_list_id用于展示
cart_product_quantity:
type: [integer, number]
description: 产品数量
cart_status:
type: string
description: 购物车状态
cart_at_price:
type: [integer, number]
description: 加入购物车时价格
cart_remark:
type: string
description: 备注
is_delete:
type: [integer, number]
description: 删除标记
product_name:
type: string
description: 产品名称
product_modelnumber:
type: string
description: 产品型号
product_barcode:
type: string
description: 产品料号
product_basic_price:
type: [integer, number, 'null']
description: 产品基础价格
example:
pb_id: PocketBase记录主键id|string
created: PocketBase系统创建时间|string
updated: PocketBase系统更新时间|string
cart_id: 购物车业务ID|string
cart_number: 购物车名称或分组号|string
cart_create: 购物车项创建时间|string
cart_owner: 购物车所有者openid|string
cart_product_id: tbl_product_list 的 PocketBase recordId|string
cart_product_business_id: 产品业务ID|string
cart_product_quantity: 产品数量|integer
cart_status: 购物车状态|string
cart_at_price: 加入购物车时价格|integer
cart_remark: 备注|string
is_delete: 删除标记|integer
product_name: 产品名称|string
product_modelnumber: 产品型号|string
product_barcode: 产品料号|string
product_basic_price: 产品基础价格|integer
CartListRequest:
type: object
properties:
keyword:
type: string
description: 模糊搜索关键字
cart_status:
type: string
description: 购物车状态
cart_number:
type: string
description: 购物车名称或分组号
example:
keyword: 模糊搜索关键字|string
cart_status: 购物车状态|string
cart_number: 购物车名称或分组号|string
CartDetailRequest:
type: object
required: [cart_id]
properties:
cart_id:
type: string
description: 购物车业务ID
example:
cart_id: 购物车业务ID|string
CartCreateRequest:
type: object
required: [cart_product_id, cart_product_quantity, cart_at_price]
properties:
cart_number:
type: string
cart_product_id:
type: string
description: tbl_product_list 的 PocketBase recordId
cart_product_quantity:
type: [integer, number]
cart_status:
type: string
cart_at_price:
type: [integer, number]
cart_remark:
type: string
example:
cart_number: 可选;未传时服务端自动生成|string
cart_product_id: tbl_product_list 的 PocketBase recordId|string
cart_product_quantity: 产品数量|integer
cart_status: 购物车状态|string
cart_at_price: 加入购物车时价格|integer
cart_remark: 备注|string
CartUpdateRequest:
type: object
required: [cart_id]
properties:
cart_id:
type: string
cart_number:
type: string
cart_product_id:
type: string
description: tbl_product_list 的 PocketBase recordId
cart_product_quantity:
type: [integer, number]
cart_status:
type: string
cart_at_price:
type: [integer, number]
cart_remark:
type: string
example:
cart_id: 购物车业务ID|string
cart_number: 购物车名称或分组号|string
cart_product_id: tbl_product_list 的 PocketBase recordId|string
cart_product_quantity: 产品数量|integer
cart_status: 购物车状态|string
cart_at_price: 加入购物车时价格|integer
cart_remark: 备注|string
CartDeleteRequest:
type: object
required: [cart_id]
properties:
cart_id:
type: string
example:
cart_id: 购物车业务ID|string
CartListResponse:
type: object
properties:
items:
type: array
items:
$ref: '#/components/schemas/CartRecord'
example:
items:
- pb_id: PocketBase记录主键id|string
created: PocketBase系统创建时间|string
updated: PocketBase系统更新时间|string
cart_id: 购物车业务ID|string
cart_number: 购物车名称或分组号|string
cart_create: 购物车项创建时间|string
cart_owner: 购物车所有者openid|string
cart_product_id: tbl_product_list 的 PocketBase recordId|string
cart_product_business_id: 产品业务ID|string
cart_product_quantity: 产品数量|integer
cart_status: 购物车状态|string
cart_at_price: 加入购物车时价格|integer
cart_remark: 备注|string
product_name: 产品名称|string
product_modelnumber: 产品型号|string
product_barcode: 产品料号|string
product_basic_price: 产品基础价格|integer
CartDeleteResponse:
type: object
properties:
cart_id:
type: string
is_delete:
type: [integer, number]
example:
cart_id: 购物车业务ID|string
is_delete: 删除标记|integer