总分店、总部账号与经营报表

本文整理总分店账号、总部视角报表、分店切换和数据权限。总店账号能跨多个服务站看采购、销售、财务数据,排查时重点确认当前账号、当前分店、菜单权限和报表口径。

业务目标

  • 总部账号可以管理多个分店/服务站。
  • 支持创建子账号、保存权限、启停账号。
  • 支持切换分店进入对应服务站上下文。
  • 总部视角可查询采购、销售、财务经营明细。

入口文件

  • 总部账号:application/controllers/headOffice/Account.php
  • 总部报表:application/controllers/headOffice/Reports.php
  • 账号服务:application/Services/HeadOffice/AccountService.php
  • 报表服务:application/Services/HeadOffice/ReportService.php

核心表

| 表 | 用途 | | --- | --- | | t_sys_head_office_account | 总部账号 | | t_sys_admin | 用户账号 | | t_bs_store | 门店 | | t_sys_menu / t_sys_menu_data | 菜单和数据权限 | | 采购/销售/财务表 | 总部报表聚合来源 |

核心方法

账号:

  • AccountService::accounts:账号列表。
  • toggleStatus:启停账号。
  • saveRights:保存权限。
  • createSubAccount:创建子账号。
  • getUsername:生成或查询用户名。
  • switchBranch:切换分店。
  • getStores / getAvailableStores:门店列表。
  • updatePwd:修改密码。
  • updateSession:切换后刷新 session。

报表:

  • ReportService::getPurchaseDetail:采购明细。
  • ReportService::getSaleDetail:销售明细。
  • ReportService::getFinanceDetail:财务明细。
  • ReportService::setBranch:设置当前分店。

主流程

flowchart TD
  A["总部账号登录"] --> B["加载可访问分店"]
  B --> C["选择或切换分店"]
  C --> D["刷新 session 和权限"]
  D --> E["查询采购/销售/财务报表"]
  E --> F["报表中心或业务库返回数据"]

报表口径

  • 总部报表接口里存在 CENTER_API . '/devcenter/report/hologres/query' 口径,可能走数据中心/Hologres。
  • TYPE_CORE_BIZ 表示核心经营数据。
  • 分店切换后要确认 sid、菜单 id、当前 session 是否更新。
  • 总部汇总数据和单站实时数据可能因为同步延迟存在差异。

异常流程

  • 看不到分店:查总部账号与门店关系、账号状态。
  • 切换失败:查 switchBranch、session 更新、门店状态。
  • 报表为空:查分店、菜单权限、Hologres 查询参数和时间范围。
  • 子账号权限异常:查 saveRights 保存的数据和菜单/数据权限。

常用 rg 命令

rg -n "class Account|switchBranch|saveRights|createSubAccount" application/controllers/headOffice application/Services/HeadOffice
rg -n "getPurchaseDetail|getSaleDetail|getFinanceDetail|Hologres|CENTER_API" application/Services/HeadOffice application/controllers/headOffice
rg -n "SYS_HEAD_OFFICE_ACCOUNT|t_sys_head_office_account" application/config/tables.php application

改动风险和回归清单

  • 总部账号:创建、启停、改密、子账号。
  • 权限:菜单、数据范围、子账号权限。
  • 切换:分店列表、切换后 session、回到总部。
  • 报表:采购、销售、财务,时间范围和分店筛选。