30 KiB
partsinquiry 数据库文档
更新日期:2025-09-16(已插入演示数据)
说明:本文件根据远程库 mysql.tonaspace.com 中 partsinquiry 的实际结构生成,字段/索引/外键信息以线上为准。
shops
| Column Name | Data Type | Nullable | Default | Comment |
|---|---|---|---|---|
| id | BIGINT UNSIGNED | NOT NULL | AUTO_INCREMENT | 店铺/租户ID |
| name | VARCHAR(100) | NOT NULL | 店铺名称 | |
| status | TINYINT UNSIGNED | NOT NULL | 1 | 状态:1启用 0停用 |
| created_at | TIMESTAMP | NOT NULL | CURRENT_TIMESTAMP | |
| updated_at | TIMESTAMP | NOT NULL | CURRENT_TIMESTAMP | |
| deleted_at | DATETIME | YES |
字段说明:
- id: 主键,自增
- name: 店铺名称
- status: 店铺状态(1启用/0停用)
- created_at/updated_at: 创建/更新时间
- deleted_at: 逻辑删除时间
users
| Column Name | Data Type | Nullable | Default | Comment |
|---|---|---|---|---|
| id | BIGINT UNSIGNED | NOT NULL | AUTO_INCREMENT | 用户ID |
| shop_id | BIGINT UNSIGNED | NOT NULL | 所属店铺 | |
| phone | VARCHAR(32) | YES | 手机号 | |
| name | VARCHAR(64) | NOT NULL | 姓名 | |
| role | VARCHAR(32) | NOT NULL | staff | 角色:owner/staff/finance/... |
| password_hash | VARCHAR(255) | YES | 密码哈希(若采用短信登录可为空) | |
| status | TINYINT UNSIGNED | NOT NULL | 1 | 状态:1启用 0停用 |
| is_owner | TINYINT(1) | NOT NULL | 0 | 是否店主 |
| created_at | TIMESTAMP | NOT NULL | CURRENT_TIMESTAMP | |
| updated_at | TIMESTAMP | NOT NULL | CURRENT_TIMESTAMP | |
| deleted_at | DATETIME | YES |
字段说明:
- shop_id: 归属店铺
- role: 角色标识字符串
- is_owner: 是否店主标记
- 其余同名含义
user_identities
| Column Name | Data Type | Nullable | Default | Comment |
|---|---|---|---|---|
| id | BIGINT UNSIGNED | NOT NULL | AUTO_INCREMENT | |
| shop_id | BIGINT UNSIGNED | NOT NULL | ||
| user_id | BIGINT UNSIGNED | NOT NULL | ||
| provider | ENUM('wechat_mp','wechat_app') | NOT NULL | 身份提供方:小程序/APP | |
| openid | VARCHAR(64) | NOT NULL | ||
| unionid | VARCHAR(64) | YES | ||
| nickname | VARCHAR(64) | YES | ||
| avatar_url | VARCHAR(512) | YES | ||
| last_login_at | DATETIME | YES | ||
| created_at | TIMESTAMP | NOT NULL | CURRENT_TIMESTAMP | |
| updated_at | TIMESTAMP | NOT NULL | CURRENT_TIMESTAMP |
字段说明:
- provider: wechat_mp(小程序)、wechat_app(APP)
- openid/unionid: 微信身份标识
wechat_sessions
| Column Name | Data Type | Nullable | Default | Comment |
|---|---|---|---|---|
| id | BIGINT UNSIGNED | NOT NULL | AUTO_INCREMENT | |
| provider | ENUM('wechat_mp','wechat_app') | NOT NULL | ||
| openid | VARCHAR(64) | NOT NULL | ||
| session_key | VARCHAR(128) | NOT NULL | ||
| expires_at | DATETIME | NOT NULL | ||
| created_at | TIMESTAMP | NOT NULL | CURRENT_TIMESTAMP |
字段说明:
- session_key/expires_at: 会话密钥与过期时间
system_parameters
| Column Name | Data Type | Nullable | Default | Comment |
|---|---|---|---|---|
| id | BIGINT UNSIGNED | NOT NULL | AUTO_INCREMENT | |
| shop_id | BIGINT UNSIGNED | NOT NULL | ||
| user_id | BIGINT UNSIGNED | NOT NULL | 创建/最后修改人 | |
| key | VARCHAR(64) | NOT NULL | 参数键 | |
| value | JSON | NOT NULL | 参数值(JSON) | |
| created_at | TIMESTAMP | NOT NULL | CURRENT_TIMESTAMP | |
| updated_at | TIMESTAMP | NOT NULL | CURRENT_TIMESTAMP |
字段说明:
- key/value: 键/值(JSON)
product_units
| Column Name | Data Type | Nullable | Default | Comment |
|---|---|---|---|---|
| id | BIGINT UNSIGNED | NOT NULL | AUTO_INCREMENT | |
| shop_id | BIGINT UNSIGNED | NOT NULL | ||
| user_id | BIGINT UNSIGNED | NOT NULL | ||
| name | VARCHAR(16) | NOT NULL | ||
| created_at | TIMESTAMP | NOT NULL | CURRENT_TIMESTAMP | |
| updated_at | TIMESTAMP | NOT NULL | CURRENT_TIMESTAMP | |
| deleted_at | DATETIME | YES |
字段说明(product_units):
- name: 单位名称,如 件/个/箱
Indexes: - PRIMARY KEY: id - KEY: idx_units_shop (shop_id) - UNIQUE: ux_units_shop_name (shop_id,name)
Foreign Keys: - fk_units_shop: shop_id → shops(id) ON UPDATE NO ACTION ON DELETE NO ACTION - fk_units_user: user_id → users(id) ON UPDATE NO ACTION ON DELETE NO ACTION
global_skus
| Column Name | Data Type | Nullable | Default | Comment |
|---|---|---|---|---|
| id | BIGINT UNSIGNED | NOT NULL | AUTO_INCREMENT | |
| name | VARCHAR(120) | NOT NULL | SKU名称 | |
| brand | VARCHAR(64) | YES | ||
| model | VARCHAR(64) | YES | ||
| spec | VARCHAR(128) | YES | ||
| barcode | VARCHAR(32) | YES | ||
| unit_id | BIGINT UNSIGNED | YES | ||
| tags | JSON | YES | ||
| status | ENUM('published','offline') | NOT NULL | published | |
| created_at | TIMESTAMP | NOT NULL | CURRENT_TIMESTAMP | |
| updated_at | TIMESTAMP | NOT NULL | CURRENT_TIMESTAMP | |
| deleted_at | DATETIME | YES |
字段说明(global_skus):
- name/brand/model/spec/barcode: SKU 基本属性
- unit_id: 对应的计量单位
- tags: 结构化标签 JSON
- status: 上架状态(published/offline)
Indexes: - PRIMARY KEY: id - KEY: idx_global_skus_brand_model (brand,model) - UNIQUE: ux_global_skus_barcode (barcode)
Foreign Keys: - fk_globalsku_unit: unit_id → product_units(id) ON UPDATE NO ACTION ON DELETE NO ACTION
product_categories
| Column Name | Data Type | Nullable | Default | Comment |
|---|---|---|---|---|
| id | BIGINT UNSIGNED | NOT NULL | AUTO_INCREMENT | |
| shop_id | BIGINT UNSIGNED | NOT NULL | ||
| user_id | BIGINT UNSIGNED | NOT NULL | ||
| name | VARCHAR(64) | NOT NULL | ||
| parent_id | BIGINT UNSIGNED | YES | ||
| sort_order | INT | NOT NULL | 0 | |
| created_at | TIMESTAMP | NOT NULL | CURRENT_TIMESTAMP | |
| updated_at | TIMESTAMP | NOT NULL | CURRENT_TIMESTAMP | |
| deleted_at | DATETIME | YES |
字段说明(product_categories):
- parent_id: 父分类,可为空
- sort_order: 排序
Indexes: - PRIMARY KEY: id - KEY: idx_categories_shop (shop_id) - KEY: idx_categories_parent (parent_id) - UNIQUE: ux_categories_shop_name (shop_id,name)
Foreign Keys: - fk_categories_shop: shop_id → shops(id) ON UPDATE NO ACTION ON DELETE NO ACTION - fk_categories_user: user_id → users(id) ON UPDATE NO ACTION ON DELETE NO ACTION - fk_categories_parent: parent_id → product_categories(id) ON UPDATE NO ACTION ON DELETE NO ACTION
products
| Column Name | Data Type | Nullable | Default | Comment |
|---|---|---|---|---|
| id | BIGINT UNSIGNED | NOT NULL | AUTO_INCREMENT | |
| shop_id | BIGINT UNSIGNED | NOT NULL | ||
| user_id | BIGINT UNSIGNED | NOT NULL | ||
| name | VARCHAR(120) | NOT NULL | 供全文检索 | |
| category_id | BIGINT UNSIGNED | YES | ||
| unit_id | BIGINT UNSIGNED | NOT NULL | ||
| brand | VARCHAR(64) | YES | ||
| model | VARCHAR(64) | YES | ||
| spec | VARCHAR(128) | YES | ||
| origin | VARCHAR(64) | YES | ||
| barcode | VARCHAR(32) | YES | ||
| alias | VARCHAR(120) | YES | ||
| description | TEXT | YES | ||
| global_sku_id | BIGINT UNSIGNED | YES | ||
| safe_min | DECIMAL(18,3) | YES | ||
| safe_max | DECIMAL(18,3) | YES | ||
| search_text | TEXT | YES | 供全文检索的聚合字段(名称/品牌/型号/规格/别名) | |
| created_at | TIMESTAMP | NOT NULL | CURRENT_TIMESTAMP | |
| updated_at | TIMESTAMP | NOT NULL | CURRENT_TIMESTAMP | |
| deleted_at | DATETIME | YES |
字段说明(products):
- category_id/unit_id/global_sku_id: 归属分类/单位/全局SKU
- safe_min/safe_max: 安全库存上下限
- search_text: 聚合检索字段(触发器维护)
Indexes: - PRIMARY KEY: id - KEY: idx_products_shop (shop_id) - KEY: idx_products_category (category_id) - KEY: idx_products_unit (unit_id) - FULLTEXT: ft_products_search (name,brand,model,spec,search_text) - UNIQUE: ux_products_shop_barcode (shop_id,barcode)
Foreign Keys: - fk_products_shop: shop_id → shops(id) - fk_products_user: user_id → users(id) - fk_products_category: category_id → product_categories(id) - fk_products_unit: unit_id → product_units(id) - fk_products_globalsku: global_sku_id → global_skus(id)
product_aliases
| Column Name | Data Type | Nullable | Default | Comment |
|---|---|---|---|---|
| id | BIGINT UNSIGNED | NOT NULL | AUTO_INCREMENT | |
| shop_id | BIGINT UNSIGNED | NOT NULL | ||
| user_id | BIGINT UNSIGNED | NOT NULL | ||
| product_id | BIGINT UNSIGNED | NOT NULL | ||
| alias | VARCHAR(120) | NOT NULL | ||
| created_at | TIMESTAMP | NOT NULL | CURRENT_TIMESTAMP | |
| updated_at | TIMESTAMP | NOT NULL | CURRENT_TIMESTAMP | |
| deleted_at | DATETIME | YES |
字段说明(product_aliases):
- alias: 商品别名(同义词)
Indexes: - PRIMARY KEY: id - KEY: idx_product_alias_product (product_id) - UNIQUE: ux_product_alias (product_id,alias)
Foreign Keys: - fk_alias_shop: shop_id → shops(id) - fk_alias_user: user_id → users(id) - fk_alias_product: product_id → products(id)
product_images
| Column Name | Data Type | Nullable | Default | Comment |
|---|---|---|---|---|
| id | BIGINT UNSIGNED | NOT NULL | AUTO_INCREMENT | |
| shop_id | BIGINT UNSIGNED | NOT NULL | ||
| user_id | BIGINT UNSIGNED | NOT NULL | ||
| product_id | BIGINT UNSIGNED | NOT NULL | ||
| url | VARCHAR(512) | NOT NULL | ||
| hash | VARCHAR(64) | YES | 内容哈希(去重) | |
| sort_order | INT | NOT NULL | 0 | |
| created_at | TIMESTAMP | NOT NULL | CURRENT_TIMESTAMP |
字段说明(product_images):
- url/hash: 图片地址/内容哈希
- sort_order: 展示顺序
Indexes: - PRIMARY KEY: id - KEY: idx_product_images_product (product_id) - UNIQUE: ux_product_image_hash (product_id,hash)
Foreign Keys: - fk_pimg_shop: shop_id → shops(id) - fk_pimg_user: user_id → users(id) - fk_pimg_product: product_id → products(id) ON DELETE CASCADE
product_prices
| Column Name | Data Type | Nullable | Default | Comment |
|---|---|---|---|---|
| product_id | BIGINT UNSIGNED | NOT NULL | ||
| shop_id | BIGINT UNSIGNED | NOT NULL | ||
| user_id | BIGINT UNSIGNED | NOT NULL | ||
| purchase_price | DECIMAL(18,2) | NOT NULL | 0.00 | |
| retail_price | DECIMAL(18,2) | NOT NULL | 0.00 | |
| wholesale_price | DECIMAL(18,2) | NOT NULL | 0.00 | |
| big_client_price | DECIMAL(18,2) | NOT NULL | 0.00 | |
| updated_at | TIMESTAMP | NOT NULL | CURRENT_TIMESTAMP |
字段说明(product_prices):
- purchase_price: 当前进价(用于近似毛利)
- retail/wholesale/big_client_price: 售价列
Indexes: - PRIMARY KEY: product_id - KEY: idx_prices_shop (shop_id)
Foreign Keys: - fk_prices_product: product_id → products(id) ON DELETE CASCADE - fk_prices_shop: shop_id → shops(id) - fk_prices_user: user_id → users(id)
inventories
| Column Name | Data Type | Nullable | Default | Comment |
|---|---|---|---|---|
| product_id | BIGINT UNSIGNED | NOT NULL | ||
| shop_id | BIGINT UNSIGNED | NOT NULL | ||
| user_id | BIGINT UNSIGNED | NOT NULL | ||
| quantity | DECIMAL(18,3) | NOT NULL | 0.000 | |
| updated_at | TIMESTAMP | NOT NULL | CURRENT_TIMESTAMP |
字段说明(inventories):
- quantity: 当前库存数量(按商品一行聚合)
Indexes: - PRIMARY KEY: product_id - KEY: idx_inventories_shop (shop_id)
Foreign Keys: - fk_inv_product: product_id → products(id) ON DELETE CASCADE - fk_inv_shop: shop_id → shops(id) - fk_inv_user: user_id → users(id)
customers
| Column Name | Data Type | Nullable | Default | Comment |
|---|---|---|---|---|
| id | BIGINT UNSIGNED | NOT NULL | AUTO_INCREMENT | |
| shop_id | BIGINT UNSIGNED | NOT NULL | ||
| user_id | BIGINT UNSIGNED | NOT NULL | ||
| name | VARCHAR(120) | NOT NULL | ||
| phone | VARCHAR(32) | YES | 座机 | |
| address | VARCHAR(255) | YES | 送货地址 | |
| mobile | VARCHAR(32) | YES | 手机 | |
| level | VARCHAR(32) | YES | 客户等级标签 | |
| contact_name | VARCHAR(64) | YES | 联系人 | |
| price_level | ENUM('零售价','批发价','大单报价') | NOT NULL | 零售价 | 默认售价列(中文存储) |
| status | TINYINT UNSIGNED | NOT NULL | 1 | |
| ar_opening | DECIMAL(18,2) | NOT NULL | 0.00 | 期初应收 |
| remark | VARCHAR(255) | YES | ||
| created_at | TIMESTAMP | NOT NULL | CURRENT_TIMESTAMP | |
| updated_at | TIMESTAMP | NOT NULL | CURRENT_TIMESTAMP | |
| deleted_at | DATETIME | YES |
字段说明(customers):
- level: 等级标签
- price_level: 默认售价列(中文存储:零售价/批发价/大单报价)
- ar_opening: 期初应收
Indexes: - PRIMARY KEY: id - KEY: idx_customers_shop (shop_id) - KEY: idx_customers_phone (phone) - KEY: idx_customers_mobile (mobile)
Foreign Keys: - fk_customers_shop: shop_id → shops(id) - fk_customers_user: user_id → users(id)
suppliers
| Column Name | Data Type | Nullable | Default | Comment |
|---|---|---|---|---|
| id | BIGINT UNSIGNED | NOT NULL | AUTO_INCREMENT | |
| shop_id | BIGINT UNSIGNED | NOT NULL | ||
| user_id | BIGINT UNSIGNED | NOT NULL | ||
| name | VARCHAR(120) | NOT NULL | ||
| contact_name | VARCHAR(64) | YES | 联系人 | |
| mobile | VARCHAR(32) | YES | 手机 | |
| phone | VARCHAR(32) | YES | 电话 | |
| address | VARCHAR(255) | YES | 经营地址 | |
| status | TINYINT UNSIGNED | NOT NULL | 1 | |
| ap_opening | DECIMAL(18,2) | NOT NULL | 0.00 | 期初应付 |
| ap_payable | DECIMAL(18,2) | NOT NULL | 0.00 | 当前应付(实时维护) |
| remark | VARCHAR(255) | YES | ||
| created_at | TIMESTAMP | NOT NULL | CURRENT_TIMESTAMP | |
| updated_at | TIMESTAMP | NOT NULL | CURRENT_TIMESTAMP | |
| deleted_at | DATETIME | YES |
字段说明(suppliers):
- ap_opening/ap_payable: 期初应付/当前应付
Indexes: - PRIMARY KEY: id - KEY: idx_suppliers_shop (shop_id) - KEY: idx_suppliers_phone (phone) - KEY: idx_suppliers_mobile (mobile)
Foreign Keys: - fk_suppliers_shop: shop_id → shops(id) - fk_suppliers_user: user_id → users(id)
accounts
| Column Name | Data Type | Nullable | Default | Comment |
|---|---|---|---|---|
| id | BIGINT UNSIGNED | NOT NULL | AUTO_INCREMENT | |
| shop_id | BIGINT UNSIGNED | NOT NULL | ||
| user_id | BIGINT UNSIGNED | NOT NULL | ||
| name | VARCHAR(64) | NOT NULL | ||
| type | ENUM('cash','bank','alipay','wechat','other') | NOT NULL | cash | |
| bank_name | VARCHAR(64) | YES | 银行名称(type=bank 可用) | |
| bank_account | VARCHAR(64) | YES | 银行账号(type=bank 可用) | |
| balance | DECIMAL(18,2) | NOT NULL | 0.00 | |
| status | TINYINT UNSIGNED | NOT NULL | 1 | |
| created_at | TIMESTAMP | NOT NULL | CURRENT_TIMESTAMP | |
| updated_at | TIMESTAMP | NOT NULL | CURRENT_TIMESTAMP | |
| deleted_at | DATETIME | YES |
字段说明(accounts):
- type: 账户类型(cash/bank/alipay/wechat/other)
- bank_name/bank_account: 银行账户信息(type=bank 时使用)
Indexes: - PRIMARY KEY: id - KEY: idx_accounts_shop (shop_id) - UNIQUE: ux_accounts_shop_name (shop_id,name)
Foreign Keys: - fk_accounts_shop: shop_id → shops(id) - fk_accounts_user: user_id → users(id)
sales_orders
| Column Name | Data Type | Nullable | Default | Comment |
|---|---|---|---|---|
| id | BIGINT UNSIGNED | NOT NULL | AUTO_INCREMENT | |
| shop_id | BIGINT UNSIGNED | NOT NULL | ||
| user_id | BIGINT UNSIGNED | NOT NULL | 创建人 | |
| customer_id | BIGINT UNSIGNED | YES | ||
| order_no | VARCHAR(32) | NOT NULL | ||
| order_time | DATETIME | NOT NULL | ||
| status | ENUM('draft','approved','returned','void') | NOT NULL | draft | |
| amount | DECIMAL(18,2) | NOT NULL | 0.00 | 应收合计 |
| paid_amount | DECIMAL(18,2) | NOT NULL | 0.00 | 已收合计 |
| remark | VARCHAR(255) | YES | ||
| created_at | TIMESTAMP | NOT NULL | CURRENT_TIMESTAMP | |
| updated_at | TIMESTAMP | NOT NULL | CURRENT_TIMESTAMP | |
| deleted_at | DATETIME | YES |
字段说明(sales_orders):
- status: 单据状态(draft/approved/returned/void)
- amount/paid_amount: 应收/已收合计
Indexes: - PRIMARY KEY: id - KEY: idx_sales_shop_time (shop_id,order_time) - KEY: idx_sales_customer (customer_id) - UNIQUE: ux_sales_order_no (shop_id,order_no)
Foreign Keys: - fk_sales_shop: shop_id → shops(id) - fk_sales_user: user_id → users(id) - fk_sales_customer: customer_id → customers(id)
sales_order_items
| Column Name | Data Type | Nullable | Default | Comment |
|---|---|---|---|---|
| id | BIGINT UNSIGNED | NOT NULL | AUTO_INCREMENT | |
| order_id | BIGINT UNSIGNED | NOT NULL | ||
| product_id | BIGINT UNSIGNED | NOT NULL | ||
| quantity | DECIMAL(18,3) | NOT NULL | ||
| unit_price | DECIMAL(18,2) | NOT NULL | ||
| discount_rate | DECIMAL(5,2) | NOT NULL | 0.00 | 折扣百分比0-100 |
| amount | DECIMAL(18,2) | NOT NULL |
字段说明(sales_order_items):
- quantity/unit_price/discount_rate/amount: 数量/单价/折扣%/行金额
Indexes: - PRIMARY KEY: id - KEY: idx_soi_order (order_id) - KEY: idx_soi_product (product_id)
Foreign Keys: - fk_soi_order: order_id → sales_orders(id) ON DELETE CASCADE - fk_soi_product: product_id → products(id)
purchase_orders
| Column Name | Data Type | Nullable | Default | Comment |
|---|---|---|---|---|
| id | BIGINT UNSIGNED | NOT NULL | AUTO_INCREMENT | |
| shop_id | BIGINT UNSIGNED | NOT NULL | ||
| user_id | BIGINT UNSIGNED | NOT NULL | ||
| supplier_id | BIGINT UNSIGNED | YES | ||
| order_no | VARCHAR(32) | NOT NULL | ||
| order_time | DATETIME | NOT NULL | ||
| status | ENUM('draft','approved','void','returned') | NOT NULL | draft | |
| amount | DECIMAL(18,2) | NOT NULL | 0.00 | 应付合计 |
| paid_amount | DECIMAL(18,2) | NOT NULL | 0.00 | 已付合计 |
| remark | VARCHAR(255) | YES | ||
| created_at | TIMESTAMP | NOT NULL | CURRENT_TIMESTAMP | |
| updated_at | TIMESTAMP | NOT NULL | CURRENT_TIMESTAMP | |
| deleted_at | DATETIME | YES |
字段说明(purchase_orders/purchase_order_items):
- 与销售单结构类似,含应付与明细
Indexes: - PRIMARY KEY: id - KEY: idx_purchase_shop_time (shop_id,order_time) - KEY: idx_purchase_supplier (supplier_id) - UNIQUE: ux_purchase_order_no (shop_id,order_no)
Foreign Keys: - fk_purchase_shop: shop_id → shops(id) - fk_purchase_user: user_id → users(id) - fk_purchase_supplier: supplier_id → suppliers(id)
purchase_order_items
| Column Name | Data Type | Nullable | Default | Comment |
|---|---|---|---|---|
| id | BIGINT UNSIGNED | NOT NULL | AUTO_INCREMENT | |
| order_id | BIGINT UNSIGNED | NOT NULL | ||
| product_id | BIGINT UNSIGNED | NOT NULL | ||
| quantity | DECIMAL(18,3) | NOT NULL | ||
| unit_price | DECIMAL(18,2) | NOT NULL | ||
| amount | DECIMAL(18,2) | NOT NULL |
Indexes: - PRIMARY KEY: id - KEY: idx_poi_order (order_id) - KEY: idx_poi_product (product_id)
Foreign Keys: - fk_poi_order: order_id → purchase_orders(id) ON DELETE CASCADE - fk_poi_product: product_id → products(id)
payments
| Column Name | Data Type | Nullable | Default | Comment |
|---|---|---|---|---|
| id | BIGINT UNSIGNED | NOT NULL | AUTO_INCREMENT | |
| shop_id | BIGINT UNSIGNED | NOT NULL | ||
| user_id | BIGINT UNSIGNED | NOT NULL | ||
| biz_type | ENUM('sale','purchase','other') | NOT NULL | ||
| biz_id | BIGINT UNSIGNED | YES | 业务表ID:sales_orders/purchase_orders/other_transactions | |
| account_id | BIGINT UNSIGNED | NOT NULL | ||
| direction | ENUM('in','out') | NOT NULL | 收款/付款 | |
| amount | DECIMAL(18,2) | NOT NULL | ||
| pay_time | DATETIME | NOT NULL | ||
| remark | VARCHAR(255) | YES | ||
| created_at | TIMESTAMP | NOT NULL | CURRENT_TIMESTAMP |
字段说明(payments):
- biz_type/biz_id: 业务来源及关联主键
- direction: in 收款 / out 付款
- account_id: 使用的结算账户
Indexes: - PRIMARY KEY: id - KEY: idx_payments_shop_time (shop_id,pay_time) - KEY: idx_payments_biz (biz_type,biz_id)
Foreign Keys: - fk_payments_shop: shop_id → shops(id) - fk_payments_user: user_id → users(id) - fk_payments_account: account_id → accounts(id)
other_transactions
| Column Name | Data Type | Nullable | Default | Comment |
|---|---|---|---|---|
| id | BIGINT UNSIGNED | NOT NULL | AUTO_INCREMENT | |
| shop_id | BIGINT UNSIGNED | NOT NULL | ||
| user_id | BIGINT UNSIGNED | NOT NULL | ||
| type | ENUM('income','expense') | NOT NULL | ||
| category | VARCHAR(64) | NOT NULL | ||
| counterparty_type | VARCHAR(32) | YES | customer/supplier/other | |
| counterparty_id | BIGINT UNSIGNED | YES | ||
| account_id | BIGINT UNSIGNED | NOT NULL | ||
| amount | DECIMAL(18,2) | NOT NULL | ||
| tx_time | DATETIME | NOT NULL | ||
| remark | VARCHAR(255) | YES | ||
| created_at | TIMESTAMP | NOT NULL | CURRENT_TIMESTAMP | |
| updated_at | TIMESTAMP | NOT NULL | CURRENT_TIMESTAMP | |
| deleted_at | DATETIME | YES |
字段说明(other_transactions):
- type/category: 收入/支出与分类
- counterparty_type/id: 往来单位(可空)
Indexes: - PRIMARY KEY: id - KEY: idx_ot_shop_time (shop_id,tx_time) - KEY: idx_ot_account (account_id)
Foreign Keys: - fk_ot_shop: shop_id → shops(id) - fk_ot_user: user_id → users(id) - fk_ot_account: account_id → accounts(id)
finance_categories
| Column Name | Data Type | Nullable | Default | Comment |
|---|---|---|---|---|
| id | BIGINT UNSIGNED | NOT NULL | AUTO_INCREMENT | |
| shop_id | BIGINT UNSIGNED | NOT NULL | ||
| type | ENUM('income','expense') | NOT NULL | 分类类型 | |
| key | VARCHAR(64) | NOT NULL | 分类键(稳定标识) | |
| label | VARCHAR(64) | NOT NULL | 分类名称(支持中文) | |
| sort_order | INT | NOT NULL | 0 | 排序 |
| status | TINYINT UNSIGNED | NOT NULL | 1 | 1启用 0停用 |
| created_at | TIMESTAMP | NOT NULL | CURRENT_TIMESTAMP | |
| updated_at | TIMESTAMP | NOT NULL | CURRENT_TIMESTAMP |
字段说明(finance_categories):
- key: 稳定标识(代码不随展示文案改变)
- label: 展示名称
Indexes: - PRIMARY KEY: id - UNIQUE: ux_finance_cat (shop_id,type,key) - KEY: idx_finance_cat_shop_type (shop_id,type)
Foreign Keys: - fk_finance_cat_shop: shop_id → shops(id)
触发器
trg_products_bi: BEFORE INSERT ONproducts→ 设置products.search_texttrg_products_au: BEFORE UPDATE ONproducts→ 维护products.search_texttrg_palias_ai: AFTER INSERT ONproduct_aliases→ 重建products.search_texttrg_palias_au: AFTER UPDATE ONproduct_aliases→ 重建products.search_texttrg_palias_ad: AFTER DELETE ONproduct_aliases→ 重建products.search_text
notices
| Column Name | Data Type | Nullable | Default | Comment |
|---|---|---|---|---|
| id | BIGINT UNSIGNED | NOT NULL | AUTO_INCREMENT | |
| title | VARCHAR(120) | NOT NULL | ||
| content | VARCHAR(500) | NOT NULL | ||
| tag | VARCHAR(32) | YES | ||
| is_pinned | TINYINT(1) | NOT NULL | 0 | |
| starts_at | DATETIME | YES | ||
| ends_at | DATETIME | YES | ||
| status | ENUM('draft','published','offline') | NOT NULL | published | |
| created_at | TIMESTAMP | NOT NULL | CURRENT_TIMESTAMP | |
| updated_at | TIMESTAMP | NOT NULL | CURRENT_TIMESTAMP | |
| deleted_at | DATETIME | YES |
字段说明(notices):
- is_pinned: 是否置顶
- starts_at/ends_at: 生效时间窗
- status: 草稿/发布/下线
Indexes: - PRIMARY KEY: id - KEY: idx_notices_time (starts_at,ends_at)
Foreign Keys: - 无
inventory_movements
| Column Name | Data Type | Nullable | Default | Comment |
|---|---|---|---|---|
| id | BIGINT UNSIGNED | NOT NULL | AUTO_INCREMENT | |
| shop_id | BIGINT UNSIGNED | NOT NULL | ||
| user_id | BIGINT UNSIGNED | NOT NULL | ||
| product_id | BIGINT UNSIGNED | NOT NULL | ||
| source_type | VARCHAR(32) | NOT NULL | sale/purchase/sale_return/purchase_return/adjust | |
| source_id | BIGINT UNSIGNED | YES | 关联单据ID | |
| qty_delta | DECIMAL(18,3) | NOT NULL | 数量增减(正加负减) | |
| amount_delta | DECIMAL(18,2) | YES | 金额变动(可空) | |
| reason | VARCHAR(64) | YES | ||
| tx_time | DATETIME | NOT NULL | ||
| remark | VARCHAR(255) | YES | ||
| created_at | TIMESTAMP | NOT NULL | CURRENT_TIMESTAMP |
字段说明(inventory_movements):
- qty_delta: 数量变动(入库为正、出库为负)
- amount_delta: 金额变动(可选)
- source_type/source_id: 变动来源追溯
Indexes: - PRIMARY KEY: id - KEY: idx_im_shop_time (shop_id,tx_time) - KEY: idx_im_product (product_id)
Foreign Keys: - fk_im_shop: shop_id → shops(id) - fk_im_user: user_id → users(id) - fk_im_product: product_id → products(id)
附:演示种子数据(非完整,仅用于联调验证)
- 演示店铺:演示店A(用户 3,全部店长 owner)
- 商品域:基础单位3条、类别2条、全局SKU2条、商品2条(含别名/价格/库存/图片)
- 往来与账户:客户2、供应商2、账户3
- 单据:销售单1(含明细2)与进货单1(含明细2)、收付款各1、其他收支2
- 审核与公告:part_submissions 1、attachments 1、notices 2、新增 wechat 身份与会话各1
sales_return_orders
| Column Name | Data Type | Nullable | Default | Comment |
|---|---|---|---|---|
| id | BIGINT UNSIGNED | NOT NULL | AUTO_INCREMENT | |
| shop_id | BIGINT UNSIGNED | NOT NULL | ||
| user_id | BIGINT UNSIGNED | NOT NULL | ||
| customer_id | BIGINT UNSIGNED | YES | ||
| order_no | VARCHAR(32) | NOT NULL | ||
| order_time | DATETIME | NOT NULL | ||
| status | ENUM('approved','void') | NOT NULL | approved | |
| amount | DECIMAL(18,2) | NOT NULL | 0.00 | |
| paid_amount | DECIMAL(18,2) | NOT NULL | 0.00 | |
| remark | VARCHAR(255) | YES | ||
| created_at | TIMESTAMP | NOT NULL | CURRENT_TIMESTAMP | |
| updated_at | TIMESTAMP | NOT NULL | CURRENT_TIMESTAMP | |
| deleted_at | DATETIME | YES |
字段说明(sales_return_orders):
- 与销售单结构一致,用于退货业务;状态为 approved/void
Indexes: - PRIMARY KEY: id - UNIQUE: ux_sr_order_no (shop_id,order_no) - KEY: idx_sr_shop_time (shop_id,order_time)
Foreign Keys: - fk_sr_shop: shop_id → shops(id) - fk_sr_user: user_id → users(id) - fk_sr_customer: customer_id → customers(id)
sales_return_order_items
| Column Name | Data Type | Nullable | Default | Comment |
|---|---|---|---|---|
| id | BIGINT UNSIGNED | NOT NULL | AUTO_INCREMENT | |
| order_id | BIGINT UNSIGNED | NOT NULL | ||
| product_id | BIGINT UNSIGNED | NOT NULL | ||
| quantity | DECIMAL(18,3) | NOT NULL | ||
| unit_price | DECIMAL(18,2) | NOT NULL | ||
| discount_rate | DECIMAL(5,2) | NOT NULL | 0.00 | |
| amount | DECIMAL(18,2) | NOT NULL |
Indexes: - PRIMARY KEY: id - KEY: idx_sroi_order (order_id) - KEY: idx_sroi_product (product_id)
Foreign Keys: - fk_sroi_order: order_id → sales_return_orders(id) ON DELETE CASCADE - fk_sroi_product: product_id → products(id)
purchase_return_orders
| Column Name | Data Type | Nullable | Default | Comment |
|---|---|---|---|---|
| id | BIGINT UNSIGNED | NOT NULL | AUTO_INCREMENT | |
| shop_id | BIGINT UNSIGNED | NOT NULL | ||
| user_id | BIGINT UNSIGNED | NOT NULL | ||
| supplier_id | BIGINT UNSIGNED | YES | ||
| order_no | VARCHAR(32) | NOT NULL | ||
| order_time | DATETIME | NOT NULL | ||
| status | ENUM('approved','void') | NOT NULL | approved | |
| amount | DECIMAL(18,2) | NOT NULL | 0.00 | |
| paid_amount | DECIMAL(18,2) | NOT NULL | 0.00 | |
| remark | VARCHAR(255) | YES | ||
| created_at | TIMESTAMP | NOT NULL | CURRENT_TIMESTAMP | |
| updated_at | TIMESTAMP | NOT NULL | CURRENT_TIMESTAMP | |
| deleted_at | DATETIME | YES |
字段说明(purchase_return_orders):
- 与销售单结构一致,用于退货业务;状态为 approved/void
Indexes: - PRIMARY KEY: id - UNIQUE: ux_pr_order_no (shop_id,order_no) - KEY: idx_pr_shop_time (shop_id,order_time)
Foreign Keys: - fk_pr_shop: shop_id → shops(id) - fk_pr_user: user_id → users(id) - fk_pr_supplier: supplier_id → suppliers(id)
purchase_return_order_items
| Column Name | Data Type | Nullable | Default | Comment |
|---|---|---|---|---|
| id | BIGINT UNSIGNED | NOT NULL | AUTO_INCREMENT | |
| order_id | BIGINT UNSIGNED | NOT NULL | ||
| product_id | BIGINT UNSIGNED | NOT NULL | ||
| quantity | DECIMAL(18,3) | NOT NULL | ||
| unit_price | DECIMAL(18,2) | NOT NULL | ||
| amount | DECIMAL(18,2) | NOT NULL |
Indexes: - PRIMARY KEY: id - KEY: idx_proi_order (order_id) - KEY: idx_proi_product (product_id)
Foreign Keys: - fk_proi_order: order_id → purchase_return_orders(id) ON DELETE CASCADE - fk_proi_product: product_id → products(id)