文件
yjyf/db/schema_phase3.sql
linda 4e73c8164a fix(wxlogin): 修复微信登录 40029 + 新增商家(企业账号)全流程
微信登录修复:
- 根因:manifest.json 的 mp-weixin.appid 为空 → 开发者工具用测试号,code 与服务端 appid 不匹配
- 修复:填入 wx40ca4b02d4d1cb58
- WxLogin 增加错误码语义映射(40029 appid 不一致 / 40125 secret 错 / 45011 频繁 / 40226 风控)
- 登录页新增手机号登录兜底通道(微信不可用时业务不被卡住)

商家(企业账号):
- 新表 fa_merchant / fa_merchant_order / fa_invoice(纯新增,DB 40→45 表)
- Merchant 控制器:apply/info/update/bills/invoices/invoice/bindBatch
  入驻含企业信息+营业执照+开票信息+结算方式(预付/月结)
  账单按月汇总、开票额度按已付-已开票校验、批量下单按批次归属
- Auth::switchRole 支持 merchant(2001/2002/2003 语义码 + redirect)
- Auth::profile 增加 is_merchant / merchant

前端:
- 登录页角色扩为 业主/师傅/商家 三类
- pages/merchant/apply 企业入驻;workbench 商家工作台(经营数据+按月账单+近期订单+六宫格)
- pages/merchant/batch 批量下单(多地址×多数量)→ 逐单建单支付 → 绑定批次
- pages/merchant/invoice 开票申请与记录
- pages/mine 增加商家入驻/切换商家端入口;角色徽章三态

验证:163 项断言全通过(page_flow 47 + e2e 65 + phase2 27 + phase3 24)
2026-10-28 16:22:20 +08:00

71 行
3.7 KiB
SQL

此文件含有模棱两可的 Unicode 字符

此文件含有可能会与其他字符混淆的 Unicode 字符。 如果您是想特意这样的,可以安全地忽略该警告。 使用 Escape 按钮显示他们。

-- ============================================================================
-- 优匠优服 · Phase 3 商家(企业账号)
-- 纯新增表,不改动既有表结构与数据
-- ============================================================================
SET NAMES utf8mb4;
-- 商家入驻档案
CREATE TABLE IF NOT EXISTS `fa_merchant` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`user_id` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '关联 fa_user.id',
`name` varchar(100) NOT NULL DEFAULT '' COMMENT '企业/商户名称',
`license_no` varchar(50) NOT NULL DEFAULT '' COMMENT '统一社会信用代码',
`license_image` varchar(255) NOT NULL DEFAULT '' COMMENT '营业执照图',
`legal_person` varchar(50) NOT NULL DEFAULT '' COMMENT '法人代表',
`contact` varchar(50) NOT NULL DEFAULT '' COMMENT '联系人',
`mobile` varchar(20) NOT NULL DEFAULT '' COMMENT '联系电话',
`province` varchar(50) NOT NULL DEFAULT '',
`city` varchar(50) NOT NULL DEFAULT '',
`district` varchar(50) NOT NULL DEFAULT '',
`address` varchar(255) NOT NULL DEFAULT '' COMMENT '经营地址',
`invoice_title` varchar(100) NOT NULL DEFAULT '' COMMENT '发票抬头',
`invoice_tax_no` varchar(50) NOT NULL DEFAULT '' COMMENT '纳税人识别号',
`invoice_bank` varchar(100) NOT NULL DEFAULT '' COMMENT '开户行',
`invoice_account` varchar(50) NOT NULL DEFAULT '' COMMENT '银行账号',
`settle_type` enum('prepay','monthly') NOT NULL DEFAULT 'prepay' COMMENT '预付/月结',
`verify_status` enum('pending','pass','reject') NOT NULL DEFAULT 'pending',
`audit_msg` varchar(255) NOT NULL DEFAULT '',
`order_count` int(11) NOT NULL DEFAULT '0',
`total_amount` decimal(12,2) NOT NULL DEFAULT '0.00',
`createtime` bigint(16) DEFAULT NULL,
`updatetime` bigint(16) DEFAULT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `user_id` (`user_id`),
KEY `verify_status` (`verify_status`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='商家档案';
-- 商家订单归属(批次对账用,不侵入 fa_order)
CREATE TABLE IF NOT EXISTS `fa_merchant_order` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`merchant_id` int(10) unsigned NOT NULL DEFAULT '0',
`order_id` int(10) unsigned NOT NULL DEFAULT '0',
`batch_no` varchar(32) NOT NULL DEFAULT '' COMMENT '批次号(批量下单)',
`createtime` bigint(16) DEFAULT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `order_id` (`order_id`),
KEY `merchant_id` (`merchant_id`),
KEY `batch_no` (`batch_no`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='商家订单归属';
-- 开票申请
CREATE TABLE IF NOT EXISTS `fa_invoice` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`merchant_id` int(10) unsigned NOT NULL DEFAULT '0',
`user_id` int(10) unsigned NOT NULL DEFAULT '0',
`amount` decimal(10,2) NOT NULL DEFAULT '0.00',
`type` enum('normal','special') NOT NULL DEFAULT 'normal' COMMENT '普票/专票',
`title` varchar(100) NOT NULL DEFAULT '',
`tax_no` varchar(50) NOT NULL DEFAULT '',
`email` varchar(100) NOT NULL DEFAULT '',
`remark` varchar(255) NOT NULL DEFAULT '',
`status` enum('wait','issued','reject') NOT NULL DEFAULT 'wait',
`invoice_no` varchar(50) NOT NULL DEFAULT '',
`createtime` bigint(16) DEFAULT NULL,
`updatetime` bigint(16) DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `merchant_id` (`merchant_id`),
KEY `status` (`status`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='开票申请';
-- 回滚:DROP TABLE IF EXISTS `fa_invoice`,`fa_merchant_order`,`fa_merchant`;