Database Schema — 私域商城

数据表前缀:shop_ | 共 19 张业务表

ER 关系图

erDiagram
    shop_user ||--o{ shop_points_log : "has"
    shop_user ||--|| shop_user_level : "belongs_to"
    shop_user ||--o{ shop_order : "places"
    shop_user ||--o{ shop_address : "has"
    shop_user ||--|| shop_distributor : "can_be"
    shop_user ||--o{ shop_sign_in : "has"
    shop_user ||--o{ shop_user_coupon : "has"

    shop_merchant ||--o{ shop_goods : "sells"
    shop_merchant ||--o{ shop_category : "has"
    shop_merchant ||--o{ shop_order : "receives"
    shop_merchant ||--o{ shop_order_review : "gets"

    shop_category ||--o{ shop_goods : "contains"

    shop_order ||--o{ shop_order_item : "contains"
    shop_order ||--o| shop_payment_log : "paid_by"
    shop_order ||--o{ shop_order_review : "reviewed_in"

    shop_distributor ||--o{ shop_commission_log : "earns"
    shop_distributor }o--|| shop_order : "promotes"

    shop_coupon ||--o{ shop_user_coupon : "issued_to"
    shop_user_coupon }o--|| shop_order : "used_in"

    shop_user {
        bigint id PK
        varchar openid
        varchar nickname
        varchar phone
        int points
        int level_id
        int is_distributor
        bigint parent_id
    }

    shop_merchant {
        int id PK
        varchar name
        varchar logo
        decimal commission_rate
        tinyint status
    }

    shop_goods {
        int id PK
        int merchant_id FK
        int category_id FK
        varchar name
        decimal price
        int stock
        tinyint status
    }

    shop_order {
        bigint id PK
        varchar order_no
        bigint user_id FK
        int merchant_id FK
        decimal pay_amount
        tinyint status
    }

    shop_distributor {
        int id PK
        bigint user_id FK
        decimal available_commission
        decimal frozen_commission
        tinyint status
    }
        

表结构详情

shop_user(用户表)

字段类型说明
idbigint PK主键
openidvarchar(64)微信 openid
unionidvarchar(64)微信 unionid
nicknamevarchar(50)昵称
avatarvarchar(255)头像 URL
phonevarchar(20)手机号
pointsint DEFAULT 0当前积分
level_idint会员等级 ID
is_distributortinyint DEFAULT 0是否为分销员
parent_idbigint推荐人 ID
grand_parent_idbigint上上级推荐人 ID
statustinyint DEFAULT 11正常 0禁用

shop_user_level(会员等级表)

字段类型说明
idint PK主键
namevarchar(20)等级名称
min_pointsint最低累计积分
discount_ratedecimal(3,2)折扣率
points_ratedecimal(3,2)积分倍率
iconvarchar(255)等级图标

shop_points_log(积分流水表)

字段类型说明
idbigint PK主键
user_idbigint用户 ID
typevarchar(20)earn/consume
amountint积分数量
balanceint变动后余额
sourcevarchar(50)来源
source_idvarchar(50)关联业务 ID

shop_merchant(商户表)

字段类型说明
idint PK主键
namevarchar(100)商户名称
logovarchar(255)商户 logo
contact_namevarchar(50)联系人
contact_phonevarchar(20)联系电话
license_urlvarchar(255)营业执照
delivery_typevarchar(50)配送方式
commission_ratedecimal(3,2)平台抽成比例
statustinyint0待审 1正常 2拒绝 3冻结
ratingdecimal(2,1)商户评分

shop_goods(商品表)

字段类型说明
idint PK主键
merchant_idint商户 ID
category_idint分类 ID
namevarchar(200)商品名称
pricedecimal(10,2)价格
original_pricedecimal(10,2)原价
stockint库存
specstext规格列表(JSON)
statustinyint0下架 1上架 2审核中

shop_order(订单主表)

字段类型说明
idbigint PK主键
order_novarchar(32)订单号(唯一)
user_idbigint用户 ID
merchant_idint商户 ID
statustinyint0待付 1已付 2备餐 3配送 4完成 5取消 6退款
total_amountdecimal(10,2)商品总额
delivery_feedecimal(10,2)配送费
discount_amountdecimal(10,2)优惠金额
points_amountdecimal(10,2)积分抵扣金额
pay_amountdecimal(10,2)实付金额
delivery_typevarchar(20)配送方式

shop_distributor(分销员表)

字段类型说明
idint PK主键
user_idbigint UNIQUE用户 ID
total_commissiondecimal(10,2)累计佣金
available_commissiondecimal(10,2)可提现佣金
frozen_commissiondecimal(10,2)冻结佣金
total_ordersint推广订单数
total_teamint团队总人数
statustinyint0待审 1正常 2冻结

shop_commission_log(佣金流水表)

字段类型说明
idbigint PK主键
distributor_idint分销员 ID
order_idbigint关联订单 ID
typevarchar(20)direct/indirect
amountdecimal(10,2)佣金金额
statustinyint0冻结 1可提现 2已提现 3已失效

shop_coupon(优惠券模板表)

字段类型说明
idint PK主键
namevarchar(100)名称
typevarchar(20)full_reduce/fixed/discount
valuedecimal(10,2)面值/折扣
min_amountdecimal(10,2)最低使用金额
total_countint发放总量
start_timedatetime生效时间
end_timedatetime过期时间

shop_points_rule(积分规则表)

字段类型说明
idint PK主键
scenevarchar(50)场景:order/sign/share/activity
namevarchar(50)规则名称
pointsint积分数量
ratedecimal(10,2)比率
statustinyint1启用 0禁用

shop_distribution_rule(分销规则表)

字段类型说明
idint PK主键
leveltinyint1=一级 2=二级
commission_ratedecimal(3,2)佣金比例
freeze_daysint冻结天数
min_withdrawdecimal(10,2)最低提现金额