版本: V1.0 | 日期: 2026-07-30 | 基于文档: 01~06 系统文档 + Java代码库全量扫描
数据隔离层:系统已实现完整的租户多店铺数据模型:
| 层级 | 隔离方式 | 实现状态 |
|---|---|---|
| 租户级隔离 | X-Tenant-Code → 独立数据库,每租户一库 |
已完成 |
| 门店级隔离 | 业务表中 store_id 字段 + SQL查询过滤 |
已完成 |
| 商品-门店关联 | fs_store_product 通过 store_id 归属门店 |
已完成 |
| 订单-门店关联 | fs_store_order 通过 store_id 归属门店 |
已完成 |
| 库存-门店关联 | fs_inventory_transfer 中 from_store_id/to_store_id |
已完成 |
| 店员-门店绑定 | fs_store_shop_staff_scrm 表 |
已完成 |
现状缺陷:
FsUser)没有 store_id 字段,没有 customer_store_binding 绑定表AuthorizationInterceptor 仅解析 userId,没有解析当前 storeIdStoreScrmController 中 recommendList 标注"多店铺推荐",但实现仅简单聚合影响范围:
| 优先级 | 功能 | 方案 |
|---|---|---|
| P0 | 用户-门店绑定 | 新建 fs_customer_store_binding 表,存储用户默认门店、历史门店 |
| P0 | X-Store-Id 请求头 |
在 AuthorizationInterceptor 中解析 X-Store-Id,写入 StoreContextHolder |
| P0 | 门店列表/切换API | 新增 GET /app/store/list (附近门店)、POST /app/store/switch |
| P1 | LBS定位匹配 | 基于用户经纬度计算最近门店,自动推荐 |
| P1 | 门店商品库存查询 | 根据当前 storeId 过滤商品库存和价格 |
| P2 | 门店级会员权益 | 会员等级/积分支持门店维度配置 |
| # | 功能模块 | 缺失内容 | 对应文档 | 影响范围 |
|---|---|---|---|---|
| 1 | C端多门店切换 | 用户门店绑定、门店选择器、门店上下文传递 | 03§五/八、02§3.4 | fs-user-app全体Controller |
| 2 | 总后台-供应商管理 | 供应商入驻审核、信息管理、状态管控的Controller | 03§二(资源库管理) | fs-admin/saas-admin |
| 3 | 总后台-一键代发管理 | 代发订单管理、物流追踪Controller | 03§二(资源库管理) | fs-admin |
| 4 | 总后台-资源授权管理 | 课程/直播/商品资源授权给租户的Controller | 03§二(资源库管理) | fs-admin |
| 5 | 门店端-设备管理 | 设备日常开关机、检测数据查看、故障上报Controller | 03§五 | fs-store |
| 6 | 总后台-数据大屏 | 平台级核心指标实时看板API | 03§二(数据大屏) | fs-admin |
| 7 | 代理端-数据统计完善 | 下属租户分布、业绩排行、活跃统计的完整API | 03§三 | fs-agent |
| # | 功能模块 | 缺失内容 | 对应文档 | 影响范围 |
|---|---|---|---|---|
| 8 | 多语言支持 | 英文资源包、语言切换API、前端语言选择器 | 03§一(多语言) | 全模块 |
| 9 | 财务报表/对账 | 对账报表Controller、财务总账Controller | 03§四(财务对账)、04§九 | fs-admin/saas-admin |
| 10 | 发票管理Controller | 发票开具、查询、红冲的面向租户/用户API | 03§四(财务对账) | fs-saas-company |
| 11 | 租户端-提现管理 | 租户提现申请、记录查看Controller | 03§四(分销模式) | fs-company-app |
| 12 | 营销自动化-触发器 | 触发条件配置Controller (生日/复购周期/流失预警) | 03§四(营销自动化) | fs-saas-company |
| 13 | 营销自动化-流程编排 | 自动化流程可视化编排的后端存储和API | 03§四(营销自动化) | fs-saas-company |
| 14 | 门店端-考勤打卡 | 考勤打卡记录、统计Controller | 03§五 | fs-store |
| 15 | 门店端-耗材管理 | 耗材入库、领用、统计Controller | 03§五 | fs-store |
| 16 | 门店端-交接班记录 | 交接班创建、物品交接、班次统计Controller | 03§五 | fs-store |
| 17 | 门店端-会员卡办理 | 到店办理会员卡、绑定微信Controller | 03§五 | fs-store |
| # | 功能模块 | 缺失内容 | 对应文档 | 影响范围 |
|---|---|---|---|---|
| 18 | 总后台-设备厂商管理 | 设备厂商信息维护Controller | 03§二(设备管理) | fs-admin |
| 19 | 总后台-设备授权 | 设备接入平台授权Controller | 03§二(设备管理) | fs-admin |
| 20 | 代理端-消息通知 | 系统公告、租户注册通知、续费提醒 | 03§三 | fs-agent |
| 21 | 租户端-业绩管理 | 门店/员工/医生/药师业绩统计Controller | 03§四(业绩管理) | fs-saas-company |
| 22 | 租户端-小程序支付配置 | 微信/支付宝支付参数配置Controller | 03§四(小程序管理) | fs-company-app |
| 23 | 门店端-活动推广 | 活动推广、客户邀约、签到核销Controller | 03§五 | fs-store |
| 24 | 电子处方流转 | 处方外流到第三方药店的接口 | 03§一(电子处方) | fs-doctor-app |
| 25 | 总后台-套餐分配 | 为租户分配套餐、续费管理的Controller | 03§二(租户套餐) | fs-admin |
以下功能经代码扫描确认已实现,无需重复开发:
| 模块 | 已实现功能 | 代码位置 |
|---|---|---|
| 系统管理 | 用户/角色/菜单/部门/字典/配置/公告/岗位 全套CRUD | fs-admin + fs-agent + fs-saas-admin |
| 代理管理 | 代理CRUD、配额、余额、服务价格、模块用量、承租关系 | fs-admin + fs-agent |
| 租户管理 | 租户CRUD、升级、数据源配置、套餐绑定 | fs-admin/admin/tenant/ |
| SCRM | 客户档案、标签、画像、分层、生命周期、转移/继承 | fs-saas-company/crm/ (22个Controller) |
| 企微集成 | 服务商模式、客户关联、离职继承、群管理、SOP(60+ Controller) | fs-saas-company/qw/ |
| AI知识库 | 条目CRUD、分类、提示词、敏感词、对话日志、自动标签 | fs-saas-company/knowledge/ + workflow/ |
| 活动管理 | 直播(31 Controller)、课程(40+)、促销、优惠券 | fs-saas-company/live/ + course/ |
| 商城系统 | 商品管理(50+ Controller)、订单、购物车、售后、支付 | fs-saas-company/hisStore/ |
| 在线问诊 | IM咨询、问诊订单、处方开具/审核/调剂(完整生命周期) | fs-doctor-app + fs-pharmacist-app + fs-store |
| 会员积分 | 积分商品CRUD、积分订单 | fs-saas-company/hisStore/FsIntegralGoods等 |
| 预存款 | 充值、余额查询、消费记录 | fs-store/StorePreDepositController |
| 库存调拨 | 调拨单、调拨明细、状态机 | fs-service/IFsInventoryTransferService |
| 供应链(OMS) | 供应商、采购单、仓库、订单 | fs-service/oms/ |
| 供应链(新版) | 采购订单、库存管理、库存盘点、库存调拨 | fs-service/supplychain/ + fs-saas-admin/web/supplychain/ |
| SaaS计费 | 计费方案、收费项、用量上报、账单生成、钱包、分账比例 | fs-saas-admin/billing/ (7 Controller) |
| 数据大屏 | 实时数据采集、WebSocket推送 | fs-service/dashboard/ |
| AI工作流 | Lobster引擎(42 Controller)、AB测试、优化、自动标签 | fs-saas-company/workflow/ |
| 医生端 | 问诊仪表盘、患者管理、处方、排班(16 Controller) | fs-doctor-app |
| 药师端 | 用药咨询、处方审核、排班(16 Controller) | fs-pharmacist-app |
| 门店端 | 客户接待、收银、预存款、业绩、交接班(44 Controller) | fs-store |
| 营销自动化 | AutomationFlow引擎、Lobster AB测试 | fs-service/marketing/ + fs-saas-company/workflow/ |
| 发票管理 | 诺诺SDK(开具/查询/红冲) | fs-service/nuonuo/ |
| 广告投放 | 多渠道广告管理(13 Controller) | fs-saas-company/newAdv/ + fs-admin/ad/ |
| 微信SOP | 微信个人号SOP、用户管理 | fs-saas-company/wx/ |
| 设备/穿戴 | 手表设备语言设置、设备设置 | fs-service/watch/ + fs-watch |
| 外部外呼 | AI外呼任务、通话记录、TTS配置 | fs-saas-company/aiSipCall/ |
| 任务 | 模块 | 说明 |
|---|---|---|
创建 fs_customer_store_binding 表 |
sql | 字段: id, user_id, store_id, is_default, bind_time, create_time |
创建实体类 FsCustomerStoreBinding |
fs-service | 继承 BaseEntity |
| 创建 Mapper + XML | fs-service | MyBatis-Plus + XML |
新增 StoreContextHolder |
fs-framework | ThreadLocal存储当前storeId |
修改 AuthorizationInterceptor |
fs-user-app | 解析 X-Store-Id 请求头写入StoreContextHolder |
新增 GET /app/store/nearby |
fs-user-app | 根据经纬度查询附近门店 |
新增 GET /app/store/list |
fs-user-app | 租户下所有门店列表 |
新增 POST /app/store/switch |
fs-user-app | 切换当前门店,写入绑定表 |
新增 GET /app/store/current |
fs-user-app | 获取当前门店信息 |
| 修改商品/订单查询 | fs-user-app | 根据当前storeId过滤数据 |
| 任务 | 模块 | 说明 |
|---|---|---|
新增 SupplierController |
fs-admin | 供应商入驻审核、CRUD、状态管理 |
新增 SupplierAuditController |
fs-admin | 资质审核流程 |
| 前端页面 | adminUI | 供应商列表、详情、审核 |
| 任务 | 模块 | 说明 |
|---|---|---|
新增 DropShippingController |
fs-admin | 代发订单列表、状态跟踪、物流查询 |
| 新增物流追踪接口 | fs-admin | 对接物流API(快递鸟/菜鸟等) |
| 前端页面 | adminUI | 代发订单管理、物流追踪 |
| 任务 | 模块 | 说明 |
|---|---|---|
新增 ResourceAuthController |
fs-admin | 课程/直播/商品资源授权给租户 |
| 实现授权期限管理 | fs-admin | 到期自动回收 |
| 前端页面 | adminUI | 资源授权弹窗/页面 |
| 任务 | 模块 | 说明 |
|---|---|---|
新增 StoreDeviceController |
fs-store | 设备开关机日志、检测数据查看、故障上报 |
| 新增设备日志实体 | fs-service | store_device_log 表 |
| 前端页面 | storeUI | 设备管理页面 |
| 任务 | 模块 | 说明 |
|---|---|---|
新增 DashboardController |
fs-admin | 平台级实时数据API |
完善 DashboardServiceImpl |
fs-service | 补充缺失指标统计 |
| 前端页面 | adminUI | 大屏可视化页面 |
| 任务 | 模块 | 说明 |
|---|---|---|
完善 ProxyController |
fs-agent | 补充租户分布图、业绩排行、活跃度统计 |
新增 ProxyStatisticsService |
fs-service | 代理维度数据聚合 |
| 前端页面 | agentUI | 数据统计Dashboard |
| 任务 | 模块 | 说明 |
|---|---|---|
创建 messages_en_US.properties |
全模块 | 英文翻译资源文件 |
创建 messages_zh_CN.properties |
全模块 | 中文资源文件(从原messages拆分) |
新增 LocaleChangeInterceptor |
fs-framework | URL参数 ?lang=en 切换语言 |
新增 CookieLocaleResolver |
fs-framework | Cookie持久化语言选择 |
新增 GET /app/common/languages |
fs-user-app | 获取可用语言列表 |
新增 POST /app/common/language |
fs-user-app | 切换语言 |
| 任务 | 模块 | 说明 |
|---|---|---|
新增 ReconciliationController |
fs-admin | 对账报表查询(日/周/月) |
新增 FinancialLedgerController |
fs-admin | 财务总账查询 |
新增 FeeStatementController |
fs-admin | 平台收入/支出报表 |
| 新增对账差异处理 | fs-service | 订单金额与支付金额核验 |
| 前端页面 | adminUI | 财务报表、对账管理 |
| 任务 | 模块 | 说明 |
|---|---|---|
新增 InvoiceController |
fs-saas-company | 发票开具申请、查询、红冲 |
新增 InvoiceController |
fs-user-app | C端用户开票申请 |
| 新增发票申请实体 | fs-service | invoice_apply 表 |
| 前端页面 | companyUI + 小程序 | 发票管理 |
| 任务 | 模块 | 说明 |
|---|---|---|
新增 WithdrawController |
fs-company-app | 租户提交提现申请 |
新增 WithdrawController |
fs-saas-company | 租户PC端提现管理 |
| 新增提现记录实体 | fs-service | 复用或扩展现有表 |
| 前端页面 | companyUI | 提现管理页面 |
| 任务 | 模块 | 说明 |
|---|---|---|
新增 AutomationTriggerController |
fs-saas-company | 触发器条件配置CRUD |
新增 AutomationFlowController |
fs-saas-company | 自动化流程编排CRUD |
新增 AutomationLogController |
fs-saas-company | 流程执行日志查询 |
| 完善触发条件枚举 | fs-service | 生日/复购周期/流失预警 |
| 前端页面 | companyUI | MA流程编排 |
| 任务 | 模块 | 说明 |
|---|---|---|
完善 StoreAttendanceController |
fs-store | 考勤打卡、统计 |
新增 StoreConsumableController |
fs-store | 耗材入库/领用 |
完善 StoreShiftController |
fs-store | 交接班物品清单、班次统计 |
新增 StoreMembershipController |
fs-store | 到店办理会员卡 |
| 前端页面 | storeUI | 运营管理页面群 |
| 任务 | 模块 | 说明 |
|---|---|---|
新增 DeviceVendorController |
fs-admin | 设备厂商信息维护 |
新增 DeviceAuthController |
fs-admin | 设备接入平台授权 |
完善 TenantPackageController |
fs-admin | 套餐分配、续费管理 |
| 前端页面 | adminUI | 设备厂商、套餐管理 |
| 任务 | 模块 | 说明 |
|---|---|---|
新增 ProxyNotificationController |
fs-agent | 消息通知设置 |
| 新增系统公告推送 | fs-agent | 平台公告推送到代理 |
| 前端页面 | agentUI | 消息中心 |
| 任务 | 模块 | 说明 |
|---|---|---|
新增 PerformanceController |
fs-saas-company | 门店/员工/医生/药师 业绩统计 |
新增 MiniProgramConfigController |
fs-company-app | 小程序支付配置 |
| 前端页面 | companyUI | 业绩Dashboard、支付配置 |
| 任务 | 模块 | 说明 |
|---|---|---|
新增 StorePromotionController |
fs-store | 活动推广、客户邀约、签到核销 |
| 前端页面 | storeUI | 活动管理页面 |
| 任务 | 模块 | 说明 |
|---|---|---|
新增 PrescriptionTransferController |
fs-doctor-app | 处方外流到第三方药店 |
| 新增处方流转记录 | fs-service | prescription_transfer 表 |
fs-framework/
+-- context/
| +-- StoreContextHolder.java # ThreadLocal存储当前storeId
+-- interceptor/
+-- StoreSwitchInterceptor.java # 解析X-Store-Id,写入StoreContextHolder
fs-service/
+-- com.fs.hisStore/
+-- domain/
| +-- FsCustomerStoreBinding.java # 用户-门店绑定实体
+-- mapper/
| +-- FsCustomerStoreBindingMapper.java
+-- service/
+-- IFsCustomerStoreBindingService.java
fs-user-app/
+-- controller/store/
+-- StoreSwitchController.java # 门店选择/切换/当前门店API
-- 用户门店绑定表
CREATE TABLE `fs_customer_store_binding` (
`id` BIGINT NOT NULL AUTO_INCREMENT,
`user_id` BIGINT NOT NULL COMMENT 'C端用户ID',
`store_id` BIGINT NOT NULL COMMENT '门店ID',
`is_default` TINYINT DEFAULT 0 COMMENT '是否默认门店',
`bind_time` DATETIME COMMENT '绑定时间',
`create_time` DATETIME DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`id`),
UNIQUE KEY `uk_user_store` (`user_id`, `store_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
原链路:
APPToken → AuthorizationInterceptor → userId
X-Tenant-Code → AppTenantSwitchFilter → tenant DB
改造后:
APPToken → AuthorizationInterceptor → userId
X-Store-Id → StoreSwitchInterceptor → storeId (StoreContextHolder)
X-Tenant-Code → AppTenantSwitchFilter → tenant DB
fs-framework/
+-- config/
| +-- I18nConfig.java # LocaleResolver + LocaleChangeInterceptor Bean
+-- interceptor/
+-- LocaleChangeInterceptor.java # 拦截 ?lang= 参数
fs-user-app/
+-- controller/
+-- LanguageController.java # 语言列表、切换API
| 风险 | 影响 | 缓解措施 |
|---|---|---|
| 多门店切换涉及大量Controller改造 | 影响范围广、回归测试工作量大 | 分模块逐步改造,先核心商品/订单模块 |
| 多语言翻译工作量巨大 | 需要专业翻译资源 | 先实现框架,翻译分批提交 |
| 物流追踪依赖第三方API | 物流接口不稳定 | 增加物流查询缓存和降级 |
| 私有依赖(jar包)可能缺少新功能支持 | 编译/运行问题 | 提前验证依赖版本兼容性 |
| 门店端前端页面缺失 | 前后端需要协同开发 | 与前端团队对齐排期 |
| 文档中的模块名(ylrz-*) | 代码中的模块名(fs-*) | 说明 |
|---|---|---|
| ylrz-common | fs-common | 通用工具类 |
| ylrz-framework | fs-framework | 框架核心 |
| ylrz-service | fs-service | 业务服务层 |
| ylrz-admin | fs-admin + fs-saas-admin | 总后台(两个模块,fs-saas-admin功能更全) |
| ylrz-company | (无独立) | 租户PC端功能在fs-saas-company |
| ylrz-company-app | fs-company-app | 租户移动端 |
| ylrz-user-app | fs-user-app | C端用户 |
| ylrz-doctor-app | fs-doctor-app | 医生端 |
| ylrz-pharmacist-app | fs-pharmacist-app | 药师端 |
| ylrz-store-app | fs-store | 门店端 |
| ylrz-agent | fs-agent | 代理端 |
| ylrz-redis | fs-redis | Redis模块 |
| ylrz-quartz | fs-task | 定时任务 |
| ylrz-generator | fs-generator | 代码生成器 |