feat: 新增电工APP订单相关功能及数据库扩展
为四类订单表(报修/安装/维保/勘察)新增人工费、材料费、距离、预计时长字段,新增订单池、我的订单、订单详情、接单、完成订单、收益汇总接口,新增数据库迁移脚本和演示数据,支撑电工APP订单管理闭环
This commit is contained in:
1 parent
7b6fe46d10
commit
91aa3c06f0
8 files changed
+764
-3
No files matched your search
@@ -0,0 +1,69 @@
|
||||
-- 电工 APP(VoltLink)订单池 / 订单 / 收益功能扩展
|
||||
-- 背景:电工 APP 需要统一的「订单池 - 我的订单 - 收益」闭环。四类派单表
|
||||
-- (repair_request / install_order / maintenance_order / survey_order)此前缺少
|
||||
-- 报价(人工费/材料费)、距离、预计时长等展示字段,前端无法计算预估收益与列表展示。
|
||||
-- 本期为四张表补齐这些展示/计价字段(勘察复用已有 estimated_fee / actual_fee,不新增费用列),
|
||||
-- 并补充「按电工 + 状态」的联合查询索引,支撑订单池与收益统计。
|
||||
-- 幂等:新增列一律带 DEFAULT + IF NOT EXISTS;索引用 IF NOT EXISTS;重复执行安全。
|
||||
-- 注意:repair_request / install_order / maintenance_order 无 updated_at 列,收益时间以 created_at 兜底,
|
||||
-- 无需为此新增 updated_at(避免改动既有审计语义)。
|
||||
BEGIN;
|
||||
|
||||
-- ------------------------------------------------------------
|
||||
-- 1) repair_request 表扩展:报价与展示字段
|
||||
-- ------------------------------------------------------------
|
||||
ALTER TABLE repair_request ADD COLUMN IF NOT EXISTS labor_fee NUMERIC(10,2) NOT NULL DEFAULT 0; -- 人工费(预估价,电工收益 = 人工费 + 材料费)
|
||||
ALTER TABLE repair_request ADD COLUMN IF NOT EXISTS material_fee NUMERIC(10,2) NOT NULL DEFAULT 0; -- 材料费(预估价)
|
||||
ALTER TABLE repair_request ADD COLUMN IF NOT EXISTS distance NUMERIC(6,2) NOT NULL DEFAULT 0; -- 距电工距离(km)
|
||||
ALTER TABLE repair_request ADD COLUMN IF NOT EXISTS estimated_duration VARCHAR(64); -- 预计时长文本,如 "1.5 - 2 小时"
|
||||
|
||||
COMMENT ON COLUMN repair_request.labor_fee IS '人工费(预估价,电工收益 = 人工费 + 材料费)';
|
||||
COMMENT ON COLUMN repair_request.material_fee IS '材料费(预估价)';
|
||||
COMMENT ON COLUMN repair_request.distance IS '距电工距离(km)';
|
||||
COMMENT ON COLUMN repair_request.estimated_duration IS '预计时长文本,如 "1.5 - 2 小时"';
|
||||
|
||||
-- ------------------------------------------------------------
|
||||
-- 2) install_order 表扩展:报价与展示字段
|
||||
-- ------------------------------------------------------------
|
||||
ALTER TABLE install_order ADD COLUMN IF NOT EXISTS labor_fee NUMERIC(10,2) NOT NULL DEFAULT 0; -- 人工费(预估价)
|
||||
ALTER TABLE install_order ADD COLUMN IF NOT EXISTS material_fee NUMERIC(10,2) NOT NULL DEFAULT 0; -- 材料费(预估价)
|
||||
ALTER TABLE install_order ADD COLUMN IF NOT EXISTS distance NUMERIC(6,2) NOT NULL DEFAULT 0; -- 距电工距离(km)
|
||||
ALTER TABLE install_order ADD COLUMN IF NOT EXISTS estimated_duration VARCHAR(64); -- 预计时长文本
|
||||
|
||||
COMMENT ON COLUMN install_order.labor_fee IS '人工费(预估价,电工收益 = 人工费 + 材料费)';
|
||||
COMMENT ON COLUMN install_order.material_fee IS '材料费(预估价)';
|
||||
COMMENT ON COLUMN install_order.distance IS '距电工距离(km)';
|
||||
COMMENT ON COLUMN install_order.estimated_duration IS '预计时长文本,如 "1.5 - 2 小时"';
|
||||
|
||||
-- ------------------------------------------------------------
|
||||
-- 3) maintenance_order 表扩展:报价与展示字段
|
||||
-- ------------------------------------------------------------
|
||||
ALTER TABLE maintenance_order ADD COLUMN IF NOT EXISTS labor_fee NUMERIC(10,2) NOT NULL DEFAULT 0; -- 人工费(预估价)
|
||||
ALTER TABLE maintenance_order ADD COLUMN IF NOT EXISTS material_fee NUMERIC(10,2) NOT NULL DEFAULT 0; -- 材料费(预估价)
|
||||
ALTER TABLE maintenance_order ADD COLUMN IF NOT EXISTS distance NUMERIC(6,2) NOT NULL DEFAULT 0; -- 距电工距离(km)
|
||||
ALTER TABLE maintenance_order ADD COLUMN IF NOT EXISTS estimated_duration VARCHAR(64); -- 预计时长文本
|
||||
|
||||
COMMENT ON COLUMN maintenance_order.labor_fee IS '人工费(预估价,电工收益 = 人工费 + 材料费)';
|
||||
COMMENT ON COLUMN maintenance_order.material_fee IS '材料费(预估价)';
|
||||
COMMENT ON COLUMN maintenance_order.distance IS '距电工距离(km)';
|
||||
COMMENT ON COLUMN maintenance_order.estimated_duration IS '预计时长文本,如 "1.5 - 2 小时"';
|
||||
|
||||
-- ------------------------------------------------------------
|
||||
-- 4) survey_order 表扩展:距离与预计时长(金额复用 estimated_fee / actual_fee)
|
||||
-- ------------------------------------------------------------
|
||||
ALTER TABLE survey_order ADD COLUMN IF NOT EXISTS distance NUMERIC(6,2) NOT NULL DEFAULT 0; -- 距电工距离(km)
|
||||
ALTER TABLE survey_order ADD COLUMN IF NOT EXISTS estimated_duration VARCHAR(64); -- 预计时长文本
|
||||
|
||||
COMMENT ON COLUMN survey_order.distance IS '距电工距离(km)';
|
||||
COMMENT ON COLUMN survey_order.estimated_duration IS '预计时长文本,如 "1.5 - 2 小时"';
|
||||
|
||||
-- ------------------------------------------------------------
|
||||
-- 5) 查询索引:订单池按「未接单 + 状态」过滤,我的订单/收益按「电工 + 状态」过滤
|
||||
-- 既有单列索引(worker_id / status)在多条件查询下选择性不足,补充联合索引。
|
||||
-- ------------------------------------------------------------
|
||||
CREATE INDEX IF NOT EXISTS idx_repair_disp_worker_status ON repair_dispatch (worker_id, status);
|
||||
CREATE INDEX IF NOT EXISTS idx_install_worker_status ON install_order (worker_id, status);
|
||||
CREATE INDEX IF NOT EXISTS idx_maint_worker_status ON maintenance_order (worker_id, status);
|
||||
CREATE INDEX IF NOT EXISTS idx_survey_worker_status ON survey_order (worker_id, status);
|
||||
|
||||
COMMIT;
|
||||
Reference in new issue
Block a user