文件
yjyf/db/seed_phase1.sql
linda 376ce7b5c9 feat(api): 全链路后端 + 数据库设计 + E2E 测试(65 项断言全通过)
数据库:
- db/schema_phase1.sql  16 张业务表(类目/服务/地址/师傅/订单/流水/取证/报价/评价/券/钱包/提现/结算/消息)
- db/seed_phase1.sql    15 类目 + 32 服务项目 + 新人券(幂等)

后端 API (application/api/controller):
- Base/Auth/Home/Address/Order/Master/Review
- app/common/library/OrderStatus  11 状态机 + 流转矩阵
- application/api/common.php  PHP 8.5 兼容垫片(E_DEPRECATED 不再升级为异常)

测试:
- tests/e2e_flow.js  用户下单→支付→师傅抢单→履约→验收→结算→评价 全链路 65 项断言
- 含异常用例:越权/重复操作/非法状态流转/2h 未联系自动回流
2026-10-28 15:45:51 +08:00

65 行
6.8 KiB
SQL

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

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

-- ============================================================================
-- 优匠优服 · Phase 1 初始化数据(可重复执行,幂等)
-- ============================================================================
SET NAMES utf8mb4;
-- 15 个服务类目(与首页宫格一一对应,icon 为前端 CSS 图元键)
INSERT INTO `fa_service_cat` (`id`,`pid`,`name`,`icon`,`weigh`,`status`,`createtime`,`updatetime`) VALUES
( 1,0,'家具','sofa', 140,'normal',UNIX_TIMESTAMP(),UNIX_TIMESTAMP()),
( 2,0,'卫浴','bath', 130,'normal',UNIX_TIMESTAMP(),UNIX_TIMESTAMP()),
( 3,0,'灯具','lamp', 120,'normal',UNIX_TIMESTAMP(),UNIX_TIMESTAMP()),
( 4,0,'锁具','lock', 110,'normal',UNIX_TIMESTAMP(),UNIX_TIMESTAMP()),
( 5,0,'窗帘','curtain', 100,'normal',UNIX_TIMESTAMP(),UNIX_TIMESTAMP()),
( 6,0,'墙纸/壁画','frame', 90,'normal',UNIX_TIMESTAMP(),UNIX_TIMESTAMP()),
( 7,0,'净水器','water', 80,'normal',UNIX_TIMESTAMP(),UNIX_TIMESTAMP()),
( 8,0,'晾衣架','rack', 70,'normal',UNIX_TIMESTAMP(),UNIX_TIMESTAMP()),
( 9,0,'门窗','door', 60,'normal',UNIX_TIMESTAMP(),UNIX_TIMESTAMP()),
(10,0,'家电','appliance', 50,'normal',UNIX_TIMESTAMP(),UNIX_TIMESTAMP()),
(11,0,'电视/投影','tv', 40,'normal',UNIX_TIMESTAMP(),UNIX_TIMESTAMP()),
(12,0,'淋浴房','shower', 30,'normal',UNIX_TIMESTAMP(),UNIX_TIMESTAMP()),
(13,0,'商用厨电','kitchen',20,'normal',UNIX_TIMESTAMP(),UNIX_TIMESTAMP()),
(14,0,'健身器材','fitness',10,'normal',UNIX_TIMESTAMP(),UNIX_TIMESTAMP()),
(15,0,'更多','more', 0,'normal',UNIX_TIMESTAMP(),UNIX_TIMESTAMP())
ON DUPLICATE KEY UPDATE `name`=VALUES(`name`),`icon`=VALUES(`icon`),`weigh`=VALUES(`weigh`);
-- 服务项目(fixed=一口价 / quote=报价竞价 / range=区间计价)
INSERT INTO `fa_service` (`id`,`cat_id`,`name`,`price_type`,`base_price`,`max_price`,`unit`,`floor_fee`,`free_floor`,`need_model`,`description`,`sales`,`status`,`createtime`,`updatetime`) VALUES
( 1, 1,'沙发安装','fixed', 80.00, 0.00,'次',5.00,1,1,'含组装、摆放到位', 320,'normal',UNIX_TIMESTAMP(),UNIX_TIMESTAMP()),
( 2, 1,'衣柜安装','fixed', 120.00, 0.00,'次',5.00,1,1,'含组装、调平', 210,'normal',UNIX_TIMESTAMP(),UNIX_TIMESTAMP()),
( 3, 1,'家具拆装搬移','quote',150.00, 0.00,'次',5.00,1,0,'按现场情况报价', 96,'normal',UNIX_TIMESTAMP(),UNIX_TIMESTAMP()),
( 4, 2,'马桶安装','fixed', 120.00, 0.00,'个',5.00,1,1,'含拆除旧件、密封', 480,'normal',UNIX_TIMESTAMP(),UNIX_TIMESTAMP()),
( 5, 2,'花洒安装','fixed', 60.00, 0.00,'套',5.00,1,0,'含打孔、试水', 360,'normal',UNIX_TIMESTAMP(),UNIX_TIMESTAMP()),
( 6, 2,'浴室柜安装','fixed',150.00, 0.00,'套',5.00,1,1,'含台盆下水和镜柜', 150,'normal',UNIX_TIMESTAMP(),UNIX_TIMESTAMP()),
( 7, 3,'吸顶灯安装','fixed', 60.00, 0.00,'盏',5.00,1,0,'含开孔、接线', 520,'normal',UNIX_TIMESTAMP(),UNIX_TIMESTAMP()),
( 8, 3,'吊灯安装','fixed', 120.00, 0.00,'盏',5.00,1,1,'含吊装调平', 180,'normal',UNIX_TIMESTAMP(),UNIX_TIMESTAMP()),
( 9, 4,'指纹锁安装','fixed',180.00, 0.00,'套',5.00,1,1,'含开孔、调试', 140,'normal',UNIX_TIMESTAMP(),UNIX_TIMESTAMP()),
(10, 4,'门锁更换','fixed', 100.00, 0.00,'套',5.00,1,1,'含旧锁拆除', 200,'normal',UNIX_TIMESTAMP(),UNIX_TIMESTAMP()),
(11, 5,'窗帘安装','fixed', 50.00, 0.00,'套',5.00,1,0,'含轨道打孔', 300,'normal',UNIX_TIMESTAMP(),UNIX_TIMESTAMP()),
(12, 5,'电动窗帘安装','fixed',200.00,0.00,'套',5.00,1,0,'含电机布线调试', 60,'normal',UNIX_TIMESTAMP(),UNIX_TIMESTAMP()),
(13, 6,'墙纸铺贴','range', 25.00, 45.00,'㎡',5.00,1,0,'按实测面积结算', 88,'normal',UNIX_TIMESTAMP(),UNIX_TIMESTAMP()),
(14, 6,'装饰画安装','fixed', 40.00, 0.00,'幅',5.00,1,0,'含找平、固定', 120,'normal',UNIX_TIMESTAMP(),UNIX_TIMESTAMP()),
(15, 7,'净水器安装','fixed',120.00, 0.00,'台',5.00,1,1,'含接水调试', 260,'normal',UNIX_TIMESTAMP(),UNIX_TIMESTAMP()),
(16, 7,'滤芯更换','fixed', 80.00, 0.00,'次',5.00,1,1,'含旧芯回收', 75,'normal',UNIX_TIMESTAMP(),UNIX_TIMESTAMP()),
(17, 8,'手摇晾衣架安装','fixed',100.00,0.00,'套',5.00,1,1,'含钢丝调试', 130,'normal',UNIX_TIMESTAMP(),UNIX_TIMESTAMP()),
(18, 8,'电动晾衣架安装','fixed',200.00,0.00,'套',5.00,1,1,'含电源接驳', 90,'normal',UNIX_TIMESTAMP(),UNIX_TIMESTAMP()),
(19, 9,'门安装','fixed', 200.00, 0.00,'樘',5.00,1,1,'含门套安装调校', 70,'normal',UNIX_TIMESTAMP(),UNIX_TIMESTAMP()),
(20, 9,'窗户维修','quote', 150.00, 0.00,'次',5.00,1,0,'按损坏情况报价', 45,'normal',UNIX_TIMESTAMP(),UNIX_TIMESTAMP()),
(21,10,'洗衣机安装','fixed',80.00, 0.00,'台',5.00,1,1,'含进出水接驳', 380,'normal',UNIX_TIMESTAMP(),UNIX_TIMESTAMP()),
(22,10,'空调安装','fixed',200.00, 0.00,'台',5.00,1,1,'含支架、抽真空', 450,'normal',UNIX_TIMESTAMP(),UNIX_TIMESTAMP()),
(23,10,'冰箱维修','quote', 150.00, 0.00,'次',5.00,1,1,'按故障报价', 60,'normal',UNIX_TIMESTAMP(),UNIX_TIMESTAMP()),
(24,11,'电视挂装','fixed', 100.00, 0.00,'台',5.00,1,1,'含支架、走线', 340,'normal',UNIX_TIMESTAMP(),UNIX_TIMESTAMP()),
(25,11,'投影仪安装','fixed',150.00, 0.00,'台',5.00,1,1,'含吊架、对焦', 55,'normal',UNIX_TIMESTAMP(),UNIX_TIMESTAMP()),
(26,12,'淋浴房安装','fixed',300.00, 0.00,'套',5.00,1,1,'含玻璃安装、打胶', 95,'normal',UNIX_TIMESTAMP(),UNIX_TIMESTAMP()),
(27,12,'玻璃门维修','quote',200.00, 0.00,'次',5.00,1,0,'按损坏报价', 28,'normal',UNIX_TIMESTAMP(),UNIX_TIMESTAMP()),
(28,13,'商用灶具安装','quote',400.00,0.00,'台',5.00,1,1,'含燃气接驳', 22,'normal',UNIX_TIMESTAMP(),UNIX_TIMESTAMP()),
(29,13,'排烟罩清洗','fixed',300.00, 0.00,'次',5.00,1,0,'含油污清理', 18,'normal',UNIX_TIMESTAMP(),UNIX_TIMESTAMP()),
(30,14,'跑步机安装','fixed',200.00, 0.00,'台',5.00,1,1,'含调试', 26,'normal',UNIX_TIMESTAMP(),UNIX_TIMESTAMP()),
(31,14,'健身器材维修','quote',150.00,0.00,'次',5.00,1,1,'按故障报价', 14,'normal',UNIX_TIMESTAMP(),UNIX_TIMESTAMP()),
(32,15,'其他服务','quote',100.00, 0.00,'次',5.00,1,0,'由师傅上门报价', 50,'normal',UNIX_TIMESTAMP(),UNIX_TIMESTAMP())
ON DUPLICATE KEY UPDATE `name`=VALUES(`name`),`price_type`=VALUES(`price_type`),`base_price`=VALUES(`base_price`);
-- 新客券
INSERT INTO `fa_coupon` (`id`,`name`,`type`,`amount`,`discount`,`min_amount`,`total`,`received`,`start_time`,`end_time`,`status`,`createtime`) VALUES
(1,'新人立减 20 元','cash',20.00,1.00,100.00,0,0,UNIX_TIMESTAMP(),UNIX_TIMESTAMP()+31536000,'normal',UNIX_TIMESTAMP())
ON DUPLICATE KEY UPDATE `name`=VALUES(`name`),`amount`=VALUES(`amount`),`min_amount`=VALUES(`min_amount`);