ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

电竞大神接单平台多门店系统方案

电竞大神接单平台多门店系统方案

电竞大神接单平台多门店系统方案

连锁电竞工作室拓展多家线下门店之后,普遍面临门店资源混在一起的问题。打手归属、订单流向、定价规则、佣金分账、经营报表如果不做门店隔离,很容易出现跨门店派单串单、财务对账分不清每家门店营收、分店管理员越权查看其他门店数据等问题。本文围绕门店维度的数据隔离、权限体系、派单分账、运营管控,分享一套适配电竞大神接单业务的多门店落地方案。

后端采用SpringBoot + MyBatis-Plus开发,使用MyBatis-Plus租户插件实现门店ID自动拦截SQL,Redis缓存门店打手池、门店配置,MQ异步处理跨门店通知、结算任务,MySQL存储门店、打手、订单、结算流水。前端包含用户小程序、大神端、门店后台、总部总后台,基于UniApp和Vue开发。

整体采用共享库、逻辑隔离方案,所有业务主表增加store_id门店字段作为隔离主键。总部账号可以查看全部门店数据;门店管理员只能操作本店的打手、订单、售后、排班;打手归属绑定门店,默认只能承接本店订单,后台支持配置是否开启跨门店接单。

系统核心模块包含门店档案管理、门店权限体系、门店服务定价、门店派单策略、门店分账结算、门店经营看板。每个门店支持独立配置:可承接游戏品类、服务价格、平台抽佣比例、接单开关、售后规则,不同门店可以有差异化运营策略。

下面是门店实体、门店接单模式枚举的Java代码示例:

@Data@TableName("t_store_info")publicclassStoreInfo{privateLongid;privateStringstoreName;privateStringstoreAddress;privateStringcontactPhone;// 0关闭 1启用privateIntegerstoreStatus;// 接单模式:0仅本店接单 1支持跨门店派单privateIntegerreceiveMode;// 门店独立抽佣比例privateBigDecimalstoreRate;privateLocalDateTimecreateTime;}publicenumStoreReceiveModeEnum{ONLY_SELF(0,"仅本店打手接单"),CROSS_STORE(1,"允许跨门店派单");privateIntegercode;privateStringdesc;StoreReceiveModeEnum(Integercode,Stringdesc){this.code=code;this.desc=code;}// getter省略}

打手档案绑定门店ID,打手入驻时选择归属门店。在MyBatis-Plus插件中配置store_id自动填充,增删改查SQL自动追加门店条件,避免开发人员遗漏条件造成数据越权。如果业务需要开启跨门店支援接单,在派单服务层单独做白名单判断,绕过基础拦截器,由业务代码控制跨店权限。

派单逻辑增加门店维度过滤。用户下单时可以自主选择门店,也可以由系统根据LBS位置就近推荐门店。订单生成时打上store_id标记:

  1. 门店模式为仅本店接单:候选打手列表只筛选归属本店、在岗、资质正常的大神;
  2. 门店开启跨门店:本店打手优先,本店人手不足时,才把订单扩散到其他门店打手池。

派单打分算法在原有等级、标签匹配分基础上,增加门店就近权重分,优先保障本店订单优先分配给本店打手,保护门店收益。

门店分账是这套方案财务层面的重点。一笔订单资金拆分为三层:平台抽成、门店分成、打手佣金。每一家门店配置独立分成比例,结算单记录订单归属门店,自动统计门店营收。结算流水按门店维度汇总,总部可以导出全部门店财务报表,门店财务账号只能查看本店流水。售后退款、佣金冲正同样会同步扣减对应门店的营收数据,保证每家门店账目独立可追溯。

权限采用RBAC+门店ID双重控制。总部角色:超级管理员、平台财务;门店角色:门店店长、门店审核员、门店财务。接口拦截器从token中解析当前账号绑定的门店ID,非总部账号查询数据时强制绑定门店条件,防止跨门店数据泄露。

下面是简化的门店数据拦截配置代码:

@ConfigurationpublicclassMyBatisPlusConfig{@BeanpublicMybatisPlusInterceptormybatisPlusInterceptor(){MybatisPlusInterceptorinterceptor=newMybatisPlusInterceptor();TenantLineInnerInterceptortenantInterceptor=newTenantLineInnerInterceptor(newTenantLineHandler(){@OverridepublicExpressiongetTenantId(){LongstoreId=StoreContextHolder.getStoreId();returnstoreId==null?null:newLongValue(storeId);}@OverridepublicStringgetTenantIdColumn(){return"store_id";}@OverridepublicbooleanignoreTable(StringtableName){// 门店主表、全局字典表不做拦截return"t_store_info".equals(tableName)||"sys_dict".equals(tableName);}});interceptor.addInnerInterceptor(tenantInterceptor);returninterceptor;}}

门店运营看板支持按门店统计订单量、成交金额、打手数量、售后率、差评率。总部可以横向对比各门店经营数据,快速定位经营较差的门店;门店端只展示本店的统计指标,店长用来调整排班、定价、人力配置。

落地过程有几个常见坑点需要规避:跨门店订单结算分账规则容易混淆,需要单独标记跨店订单;门店关停时,需要把门店中未完结订单、申诉单做迁移处理;缓存按照门店ID做key隔离,避免A门店的打手数据被B门店读取。

同时增加降级开关,如果不需要多门店能力,可以全局关闭门店隔离,退化成单门店标准版系统,降低业务改造成本。

这套多门店方案核心思路是store_id逻辑隔离、总部总控、门店自主运营、分账独立核算。不需要采用成本高昂的分库隔离方案,依靠租户插件+业务层控制就能满足连锁电竞工作室多门店扩张需求。后续可以继续扩展门店招商加盟、门店押金管理、门店营销活动等功能。

RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进