Skip to content

概述

资金供应商(资方)是供应商的一种类别:eb_system_supplier.supply_type 标记 1=货物供应商(默认)2=资金供应商。资方通过线下方式打款给平台,平台在总后台把租赁订单手动分配给资方,资方登录供应商后台查看自己名下的订单、租赁统计与财务流水,但被禁止发货、退款、提现等一切写操作。

核心语义:一单只绑一家供应商eb_store_order.supplier_id 单字段,货物/资金互斥)。下单时商品属货物供应商则自动写入;后台改派给资方后,原货物供应商将看不到该订单。

数据模型

sql
ALTER TABLE `eb_system_supplier`
  ADD COLUMN `supply_type` tinyint(1) NOT NULL DEFAULT 1 COMMENT '类别(1:货物,2:资金供应商)' AFTER `phone`;
  • 增量 SQL 见 db_sql/zyl.sql(全量 SQL ebaozu_v3/ebaozu_v4.sql 已含该列)。
  • 订单侧无结构变更,沿用 eb_store_order.supplier_id

总后台(admin)

供应商 CRUD

  • app/controller/admin/v1/supplier/SystemSupplier.phpsave()/update() 接收 supply_type(默认 1),read()/选择器接口 search() 返回 supply_type
  • app/services/supplier/SystemSupplierServices.php::getSupplierList() 返回 supply_type_name(货物方/资金方)。
  • 前端表单有"供应商类别"单选,列表有"供应商类型"列。

订单分配、改派与取消

入口:route/admin.phpapp/common/controller/Order.php::assignSupplierOrder()app/services/order/StoreOrderServices.php::assignSupplierOrder($oid, $supplier_id, $operator)

操作入参行为
分配supplier_id > 0校验供应商存在;已支付订单按 eb_capital_flow 支付/退款流水(trading_type in (1,2))重建 eb_supplier_flowing_water
改派supplier_id事务内:删除旧供应商该订单派生流水(link_id 前缀匹配订单号 + type in (1,2))→ 更新 → 按新供应商重建
取消supplier_id = 0更新为 0,清除派生流水
幂等与现值相同直接返回成功
  • 流水字段语义:number 取源流水金额绝对值、trade_time 取源流水自身时间。
  • 分配之后的增量流水由既有 SupplierFinanceJob 链路按订单当前 supplier_id 生成,改派后自然归属新供应商。
  • 操作记录订单日志(eb_store_order_statuschange_type='assign_supplier_order':"分配到供应商: xxx" / "取消供应商分配")。
  • 租赁订单列表分配列为单列「供应商」:选项按类别标注"xxx(资金方)",支持改选与清除(清除传 supplier_id=0)。下拉使用独立样式类 supplier-select 正常回显当前供应商名称(勿复用门店分配的 store-select,其为 30px 图标式且隐藏选中值);清除分配有 $Modal.confirm 二次确认changeSupplierdoChangeSupplier,取消确认则刷新列表还原下拉值)。门店端(storeapi)无分配入口。

供应商端(supplierapi)访问控制

白名单中间件

app/http/middleware/supplier/FundSupplierMiddleware.php,注册在 route/supplier.php 全部鉴权分组内、必须位于 AuthTokenMiddleware 之后(依赖 $request->supplierInfo)。

  • supply_type != 2:直接放行,货物供应商行为与改造前完全一致。
  • supply_type == 2:按路由规则 + 请求方式做白名单匹配,不在名单内统一返回 资金供应商无此权限!

放行清单(均为只读):

类别路由
基础logoconfigjnoticecitymenusListlogoutupdatePwdsupplier(GET)
首页报表home/headerhome/orderhome/order_channelhome/order_type
订单order/listorder/info/:idorder/lease_statisticsorder/statusorder/expressorder/print 等只读项
售后refund/listrefund/detailrefund/reasonrefund/express
财务finance/info(GET)、`finance/supplier_flowing_water/list
导出export/storeOrderexport/financeRecordexport/flowWater

新增供应商端路由时,如需对资方开放,须同步维护该中间件的 WHITE_LIST

登录与菜单

app/services/supplier/LoginServices.php::login()

  • user_info 携带 supply_type(由 SystemAdmin::supplier() 关联绑定透传)。
  • supply_type == 2 时按菜单 ID 剔除「商品」(1526)、「设置」(1445) 及财务下「转账申请」(1534),保留流水/账单查看。

订单与统计口径

  • app/controller/supplier/Order.php::lst() 硬编码 is_lease=1 + supplier_id=当前供应商,附 order_leaseorder_installmentlease_user 关联(lease_user 必须加载handleLeaseOrderStatus 依据 lease_user.real_name 判定"待绑定"状态,缺失会把待发货订单误判为 _status=98 待绑定)。
  • order/lease_statistics 路由接入 getLeaseStatistics(),强制 supplier_id=当前供应商;逾期总额经 getOrderByFlag() 透传 supplier_id(该参数为新增可选条件,不影响 admin/门店既有调用)。

供应商前端(view/supplier)

  • 登录成功将 supply_type 写入 cookie(与 token 同过期时间),各页面 util.cookies.get("supply_type") 读取,缺失时按 1 兜底。
  • 订单列表:supply_type == 2 时顶部显示统计卡片 orderData.vue(调 /order/lease_statistics)与「租赁信息」列;批量操作栏、复选框列、发货等写操作按钮仅 supply_type == 1 显示。列宽按 supply_type 分别取值(w-10p/w-20p/w-25p 等),保证 supply_type == 2 的 8 列合计 100%,避免「操作」列被挤出可视区;操作列无任何可用操作时显示 - 占位;订单号行按 is_lease 显示「租赁」标识 Tag。
  • 售后列表:写操作按钮仅 supply_type == 1 显示。

注意事项

  • 改派流水删除口径:仅删"本订单号前缀 + 旧供应商 + type 1/2"的派生流水,押金等其他类型流水不受影响、不重建。
  • 商城订单不对任何供应商开放查看,供应商端订单列表恒为租赁订单。
  • 资方无提现/转账能力,财务仅流水账单只读。
  • 菜单剔除按菜单 ID(非中文标题),菜单数据变更时需同步检查 LoginServices 中的 ID 清单。

承信租多门店租赁商城系统官方文档