首页 > 学习中心 > 产品动态 > 公司发布

文档大纲

    来团科技服务抢单派单系统 - 数据库表结构设计

    近期正好在帮一朋友设计开发抢单派单平台,顺便将设计的数据库数据表结构的初稿分享出来,供大家开发借鉴:

    一、设计原则

    1. 符合第三范式 ,减少数据冗余;
    2. 适配 “自营 + 多商家联营” 双模式,字段预留扩展空间;
    3. 优化索引设计,适配小程序高频查询场景(如附近服务者、抢单列表);
    4. 记录关键操作日志,支持财务对账和问题追溯。

    二、核心数据表结构

    1. 基础用户表(user)

    存储微信小程序用户(C 端)的核心信息

    字段名数据类型主键 / 外键非空注释
    idbigint unsigned主键用户唯一 ID
    wx_openidvarchar(128)唯一索引微信小程序 openid(用户唯一标识)
    wx_unionidvarchar(128)索引微信 unionid(多小程序 / 公众号互通)
    nicknamevarchar(64)
    用户昵称(脱敏存储)
    avatarvarchar(255)
    用户头像 URL
    phonevarchar(20)索引手机号(脱敏,如 138****1234)
    real_phonevarchar(20)
    真实手机号(加密存储,仅后台可解密)
    gendertinyint
    性别:0 - 未知 1 - 男 2 - 女
    create_timedatetime索引创建时间(注册时间)
    update_timedatetime
    更新时间
    last_login_timedatetime
    最后登录时间
    statustinyint
    状态:0 - 正常 1 - 禁用 2 - 注销

    2. 服务者表(service_provider)

    存储上门服务人员信息(自营 / 商家所属)

    字段名数据类型主键 / 外键非空注释
    idbigint unsigned主键服务者唯一 ID
    merchant_idbigint unsigned外键所属商家 ID(0 = 平台自营)
    wx_openidvarchar(128)唯一索引服务者小程序 openid
    real_namevarchar(32)
    真实姓名
    id_cardvarchar(32)唯一索引身份证号(加密存储)
    phonevarchar(20)索引手机号(明文,用于派单联系)
    avatarvarchar(255)
    服务者头像
    service_typesvarchar(255)
    擅长服务类型(JSON 数组,如 ["保洁","维修"])
    scoredecimal(2,1)
    服务评分(0-5 分)
    statustinyint索引状态:0 - 待审核 1 - 正常 2 - 暂停 3 - 禁用
    deposit_amountdecimal(10,2)
    保证金金额(0 = 无需缴纳)
    current_lngdecimal(10,6)索引当前经度(实时更新)
    current_latdecimal(10,6)索引当前纬度(实时更新)
    receive_order_modetinyint
    接单模式:0 - 仅派单 1 - 仅抢单 2 - 派单 + 抢单
    create_timedatetime
    创建时间
    update_timedatetime
    更新时间

    3. 商家表(merchant)

    存储联营商家信息

    字段名数据类型主键 / 外键非空注释
    idbigint unsigned主键商家唯一 ID
    merchant_namevarchar(64)索引商家名称
    merchant_logovarchar(255)
    商家 logo
    merchant_addressvarchar(255)
    商家地址
    lngdecimal(10,6)索引商家经度
    latdecimal(10,6)索引商家纬度
    contact_namevarchar(32)
    联系人姓名
    contact_phonevarchar(20)索引联系人手机号
    business_licensevarchar(255)
    营业执照图片 URL
    service_scopevarchar(255)
    服务范围(JSON 数组)
    commission_ratedecimal(5,2)
    平台抽佣比例(如 5.00=5%)
    statustinyint索引状态:0 - 待审核 1 - 正常 2 - 暂停 3 - 禁用
    create_timedatetime
    创建时间
    update_timedatetime
    更新时间

    4. 服务项目表(service_item)

    存储平台 / 商家的服务项目(如日常保洁、家电维修)

    字段名数据类型主键 / 外键非空注释
    idbigint unsigned主键服务项目 ID
    merchant_idbigint unsigned外键所属商家 ID(0 = 平台自营)
    item_namevarchar(64)索引服务项目名称(如 “日常保洁 3 小时”)
    item_categoryvarchar(32)索引服务分类(如 “保洁”“维修”)
    pricedecimal(10,2)
    基础价格
    original_pricedecimal(10,2)
    原价(用于展示优惠)
    service_typetinyint索引服务模式:0 - 上门 1 - 到店 2 - 上门 + 到店
    service_desctext
    服务描述
    cover_imagevarchar(255)
    封面图 URL
    statustinyint索引状态:0 - 下架 1 - 上架
    create_timedatetime
    创建时间
    update_timedatetime
    更新时间

    5. 订单主表(order_main)

    存储订单核心信息(全流程状态流转)

    字段名数据类型主键 / 外键非空注释
    idbigint unsigned主键订单 ID(雪花算法生成,便于排序)
    order_snvarchar(32)唯一索引订单编号(如 JD202601180001)
    user_idbigint unsigned外键下单用户 ID
    merchant_idbigint unsigned外键所属商家 ID(0 = 平台自营)
    service_provider_idbigint unsigned外键服务者 ID(抢单 / 派单后填充)
    service_item_idbigint unsigned外键服务项目 ID
    service_typetinyint
    服务模式:0 - 上门 1 - 到店
    order_amountdecimal(10,2)
    订单金额
    pay_amountdecimal(10,2)
    实际支付金额(含优惠)
    discount_amountdecimal(10,2)
    优惠金额
    service_addressvarchar(255)
    服务地址(上门必填)
    service_lngdecimal(10,6)
    服务地址经度
    service_latdecimal(10,6)
    服务地址纬度
    service_timedatetime索引预约服务时间
    order_modetinyint
    订单模式:0 - 派单 1 - 抢单 2 - 用户选服务者
    order_statustinyint索引订单状态:0 - 待支付 1 - 待接单 2 - 待服务 3 - 服务中 4 - 待确认 5 - 已完成 6 - 已取消 7 - 售后中
    pay_statustinyint
    支付状态:0 - 未支付 1 - 已支付 2 - 已退款
    pay_timedatetime
    支付时间
    create_timedatetime索引创建时间
    update_timedatetime
    更新时间

    6. 订单抢单记录表(order_grab_log)

    记录抢单 / 派单操作日志,用于追溯

    字段名数据类型主键 / 外键非空注释
    idbigint unsigned主键日志 ID
    order_idbigint unsigned外键关联订单 ID
    operator_typetinyint
    操作人类型:0 - 服务者 1 - 商家 2 - 平台管理员
    operator_idbigint unsigned
    操作人 ID(服务者 / 商家 / 管理员 ID)
    grab_typetinyint
    操作类型:0 - 抢单 1 - 派单 2 - 拒绝接单
    grab_statustinyint
    操作结果:0 - 成功 1 - 失败
    fail_reasonvarchar(255)
    失败原因(如 “订单已被抢”)
    create_timedatetime
    操作时间

    7. 财务流水表(finance_flow)

    存储所有资金流转记录,支持对账

    字段名数据类型主键 / 外键非空注释
    idbigint unsigned主键流水 ID
    related_idbigint unsigned索引关联 ID(订单 ID / 提现 ID)
    related_typetinyint
    关联类型:0 - 订单 1 - 提现 2 - 充值 3 - 退款 4 - 平台抽佣
    target_typetinyint
    资金归属:0 - 用户 1 - 服务者 2 - 商家 3 - 平台
    target_idbigint unsigned
    归属 ID(用户 / 服务者 / 商家 ID)
    amountdecimal(10,2)
    金额(正数 = 收入,负数 = 支出)
    balancedecimal(10,2)
    操作后余额
    flow_snvarchar(32)唯一索引流水编号
    wx_pay_snvarchar(64)索引微信支付单号(支付 / 退款)
    statustinyint索引状态:0 - 待处理 1 - 已完成 2 - 失败
    create_timedatetime索引创建时间

    8. 提现申请表(withdraw_apply)

    存储服务者 / 商家的提现申请

    字段名数据类型主键 / 外键非空注释
    idbigint unsigned主键提现 ID
    apply_typetinyint
    提现类型:0 - 服务者 1 - 商家
    apply_idbigint unsigned
    提现人 ID(服务者 / 商家 ID)
    withdraw_amountdecimal(10,2)
    提现金额
    service_feedecimal(10,2)
    提现手续费
    actual_amountdecimal(10,2)
    实际到账金额
    wx_accountvarchar(64)
    微信收款账号(openid / 商户号)
    apply_statustinyint索引状态:0 - 待审核 1 - 审核通过 2 - 打款中 3 - 已到账 4 - 审核拒绝 5 - 打款失败
    audit_timedatetime
    审核时间
    audit_user_idbigint unsigned
    审核人 ID(平台管理员)
    pay_timedatetime
    打款时间
    fail_reasonvarchar(255)
    失败原因
    create_timedatetime索引申请时间
    update_timedatetime
    更新时间

    9. 系统配置表(system_config)

    存储平台全局配置

    字段名数据类型主键 / 外键非空注释
    idbigint unsigned主键配置 ID
    config_keyvarchar(64)唯一索引配置键(如 “platform_commission_rate”)
    config_valuetext
    配置值(JSON / 字符串)
    config_descvarchar(255)
    配置描述
    create_timedatetime
    创建时间
    update_timedatetime
    更新时间

    三、其他优化

    1. 索引优化

    • 高频查询字段(如order_statusservice_timecurrent_lng/lat)必须加索引;
    • 联合索引:order_main 表建议创建(merchant_id, order_status, create_time) 联合索引,适配商家端订单列表查询。

    2.  事务控制

    • 订单创建、支付、抢单、结算等核心操作必须包裹事务,避免数据不一致;
    • 示例:
    // 抢单事务示例
      $pdo->beginTransaction();
    try {
    // 1. 锁定订单行,防止并发抢单
    $stmt = $pdo->prepare("SELECT * FROM order_main WHERE id = ? FOR UPDATE");
    $stmt->execute([$order_id]);
    $order = $stmt->fetch(PDO::FETCH_ASSOC);
      
      // 2. 检查订单状态(仅待接单可抢)
      if ($order['order_status'] != 1) {
      throw new Exception("订单已被抢");
      }
      
      // 3. 更新订单服务者ID和状态
      $stmt = $pdo->prepare("UPDATE order_main SET service_provider_id = ?, order_status = 2, update_time = NOW() WHERE id = ?");
      $stmt->execute([$provider_id, $order_id]);
      
      // 4. 记录抢单日志
      $stmt = $pdo->prepare("INSERT INTO order_grab_log (order_id, operator_type, operator_id, grab_type, grab_status) VALUES (?, 0, ?, 0, 0)");
      $stmt->execute([$order_id, $provider_id]);
      
      $pdo->commit();
    } catch (Exception $e) {
      $pdo->rollBack();
    // 记录失败日志
    $stmt = $pdo->prepare("INSERT INTO order_grab_log (order_id, operator_type, operator_id, grab_type, grab_status, fail_reason) VALUES (?, 0, ?, 0, 1, ?)");
    $stmt->execute([$order_id, $provider_id, $e->getMessage()]);
      }

    3.  数据加密

    • 手机号、身份证号等敏感信息需加密存储(推荐 AES-256),仅后台解密展示;
    • 微信 openid/unionid 建议做哈希存储(如 md5),避免明文泄露。

    4.  分表策略

    • 订单表(order_main)按月份分表(如order_main_202601),避免单表数据量过大;
    • 财务流水表(finance_flow)同理,按季度分表。

    推荐商品

    更多
    来团GEO-AI搜索优化系统 用AI打造企业品牌

    来团GEO-AI搜索优化系统 用AI打造企业品牌

    来团科技GEO优化&AI搜索优化系统,是通过大模型内容投喂+训练,将企业品牌及产品信息在多平台AI生成的答案中获取优先展现,更精准触达潜在目标客户,让企业品牌出现在AI搜索里。让客户一搜就看到你,实现一问就有你,一查就信你,一看就找你的营销效果。

    来团智慧商业小程序零代码开发平台 多行业适用

    来团智慧商业小程序零代码开发平台 多行业适用

    来团智慧商业小程序零代码开发平台,多行业适配。无需代码,拖拽式设计,轻松打造订货商城、会员制商城、分销商城及小程序官网。不仅能满足通用需求,还支持定制化,从页面布局到功能模块,随心定制,助您快速搭建专属商业小程序,抢占市场先机。

    微名通名片 VIP年卡会员 | SVIP永久会员

    微名通名片 VIP年卡会员 | SVIP永久会员

    来团科技微名通不止是电子名片,更是你的商业连接器。比起传统名片,它更像你的 “迷你商业工具”:信息多、好携带、能互动,还不浪费纸张。不管是跑业务、拓人脉,还是展示企业,一张「微名通」电子名片,就能帮你把商机揣在手机里。

    来团LTCRM客户管理系统 可独立部署

    来团LTCRM客户管理系统 可独立部署

    来团科技CRM客户管理系统,帮你把 “线索→成交→回款” 全流程管明白。这就是一套 “让销售省心、老板放心” 的客户管理工具,从获客到回款,帮你把生意攥在手里。

    大纲

    文档目录

      联系我们
      联系方式
      • 官方服务热线:17721141027
      • 邮箱:kf@ilaituan.com
      • QQ:20262336
      扫码添加客服
      微信