同城家政O2O系统开发:上门报价、工单管理、资金结算方案解析
同城家政O2O和标准化电商订单有明显区别,很多服务无法在下单时锁定最终价格,上门后产生的增项、材料费用会让价格发生变动。同时工单需要跟踪师傅履约全节点,资金结算还要兼顾多方分润、账期冻结、合规分账,这三块是系统开发里最容易踩坑的模块。本文基于SpringBoot技术栈,围绕上门报价模型、工单状态机管控、资金分账结算三个核心模块做技术拆解,适合后端开发者做同城家政平台落地参考。
上门报价模块设计
上门报价分为预报价和现场调价两个阶段。用户提交需求时,系统根据服务类型、面积、地址生成预报价,作为预约参考;师傅上门勘查之后,根据实际工作量、耗材、额外工时提交正式报价,用户确认后价格生效,支持增加增项明细。
核心数据模型需要区分基础费用、附加工时费、耗材费、加急费,每一项都留痕保存。报价记录和工单绑定,报价变更时生成版本快照,防止后续产生价格纠纷。报价驳回之后,师傅可以重新提交报价,历史版本保留备查。
@Data
public class ServiceQuoteDTO {
private Long workOrderId;
// 基础服务费
private BigDecimal baseAmount;
// 耗材费用
private BigDecimal materialAmount;
// 额外工时费
private BigDecimal extraHourAmount;
// 报价状态
private Integer quoteStatus;
// 报价明细JSON
private String detailJson;
}
设计上要控制权限:只有已审核通过的师傅可以发起现场报价;报价未被用户确认前,不能进入支付环节;报价变更事件推送消息通知用户,避免信息不对称。
工单管理模块设计
工单是履约主线,不建议直接复用订单表,单独拆开工单表,承载派单、上门签到、拍照留证、验收、售后等履约动作。工单使用状态机控制流转,限制非法状态跳转,避免代码中大量if判断造成逻辑混乱。
工单状态定义:WAIT_QUOTE(待报价)、WAIT_USER_CONFIRM(待用户确认报价)、WAIT_ACCEPT(待师傅接单)、ON_WAY(师傅出发)、SERVICING(服务中)、WAIT_CHECK(待用户验收)、FINISHED(已完工)、CANCELLED(工单取消)。每次状态变更写入工单流水日志,记录操作人、变更前后状态、操作时间。
public enum WorkOrderStatusEnum {
WAIT_QUOTE("待报价", 0),
WAIT_USER_CONFIRM("待确认报价", 1),
WAIT_ACCEPT("待接单", 2),
ON_WAY("师傅出发", 3),
SERVICING("服务中", 4),
WAIT_CHECK("待验收", 5),
FINISHED("已完工", 6),
CANCELLED("工单取消", 7);
private String desc;
private Integer code;
WorkOrderStatusEnum(String desc, Integer code) {
this.desc = desc;
this.code = code;
}
}
工单支持抢单和指派两种模式,支持设置服务时间窗、超时预警;验收环节支持上传完工照片、视频凭证,售后工单可以关联原始工单,形成闭环追溯。
资金结算方案设计
家政O2O结算的重点是资金合规与多方分润,需要规避二清风险。推荐采用资金托管模式:用户支付资金进入持牌机构监管专户,平台不沉淀交易资金,仅下发分账指令。
结算触发节点设置在用户验收完成、售后申诉窗口期结束之后,设置结算冻结账期。一笔工单资金可以拆分为平台佣金、师傅服务费、服务商分成,支持按服务类目、师傅等级配置差异化分账比例。同时单独建立结算明细表、结算流水表,每一笔分账都有唯一流水号,方便财务对账。
@Data
public class SettlementRecord {
private Long workOrderId;
// 订单总金额
private BigDecimal totalAmount;
// 平台佣金
private BigDecimal platformCommission;
// 师傅实收金额
private BigDecimal workerAmount;
// 服务商分成
private BigDecimal merchantAmount;
// 结算状态
private Integer settleStatus;
// 分账流水号
private String settleNo;
}
结算模块需要支持批量出账、对账文件导出、退款逆向分账逻辑;发生退款时,按原有分账链路反向回退资金,同步更新结算记录。
总结
上门报价、工单管理、资金结算共同构成同城家政O2O系统履约与财务核心链路。上门报价模块通过版本快照、分项计价,解决家政服务价格不确定、现场增项频繁的痛点;工单模块依靠状态机约束流转,把预约、报价、上门、验收、售后全履约节点统一管理,保障流程可追溯;资金结算模块优先采用托管分账方案,把信息流和资金流分离,兼顾多方分润灵活配置与资金合规要求。开发时建议将报价服务、工单履约服务、结算服务做服务拆分,降低耦合。测试阶段重点覆盖报价反复修改、中途取消工单、售后退款逆向结算等异常场景。这套方案可以支撑中小型同城家政平台业务,后续可以继续叠加师傅绩效统计、财务对账报表、售后仲裁等扩展功能。
