5.2 KiB
5.2 KiB
todos:
- id: "arch" content: "修订第 4.2/8/8.1-8.4/21/22/26/27 章:app/tenant 改为 webman 多应用 + 继承 TenantController + 注解挂中间件 + 前端 App-Id 说明" status: pending
- id: "datascope" content: "修订第 9.1-9.3 章:删除 TenantDataScopeService,改复用 TenantController 的 organization/channels/restrictRequestSourceByChannels,新增 channels==['all'] 防御" status: pending
- id: "orders" content: "修订第 3/4.3/6/13.1/14.1/14.7/22.4/22.5/26/27 章:订单改直连 s_pay + Logic 层 org+source 过滤与字段白名单,补单表无归档限制" status: pending
- id: "firstpay" content: "修订第 10.2 章并波及 10.6/11.3/11.4:去掉今日首充金额,处理 frist_pay_cash_amount 引用" status: pending
- id: "enum" content: "修订第 14.4 审核状态补 0/1/2/3;新增 slot_all.user 与 gm_stat_summary 字段核对说明" status: pending
- id: "crossrepo" content: "修订第 12.10/15/16 章:DDL/索引/PHPDoc 标注为跨团队协调项,不在 saas6.x 执行" status: pending isProject: false
商户后台文档修订计划
仅修订 saas6.x/docs/商户后台.md,不改任何代码。依据已确认的 5 项决策对齐现网实现。
已确认决策(贯穿全文)
- 鉴权与数据权限:复用 Saimulti tenant 体系,控制器继承
plugin\saimulti\basic\TenantController,plugin/saimulti一行不改。 - 应用形态:真正的 webman 多应用目录
server/app/tenant/(命名空间app\tenant\),默认路由/tenant/*。 - 订单数据:复用现网直连
s_pay的app\model\RechargeOrderModel/WithdrawalOrderModel,在app/tenantLogic 层强制organization + source过滤并裁敏感字段;不走 slot-sdk、不改 slot-pay。 - 渠道隔离:数据治理 + 代码防御双管(商户配真实渠道、禁
['all'];商户后台遇channels==['all']拒绝/返回空)。 - 首页去掉"今日首充金额",保留首充人数。
具体章节改动
1. 架构归属(第 4.2、8、8.1-8.4、21、22、26、27 章)
- 把
server/app/tenant明确为 webman 多应用(app\tenant\命名空间,自动路由/tenant/...),并说明依据:框架App::guessControllerAction()支持app\<app>\controller\...。 - 新增"基类约定":
app\tenant\controller\MerchantBaseController extends plugin\saimulti\basic\TenantController,基类用#[Middleware(CheckTenantLogin::class, CheckTenantAuth::class, TenantLog::class)]挂鉴权(与现网 FundController 同构)。 - 说明前端
tenant-vue调/tenant/*需带Authorization+App-Id(TenantController::checkSite()校验)。 - 权限用方法注解
#[Permission('名称','slug')],由CheckTenantAuth校验。
2. 数据权限:删除 TenantDataScopeService(第 9.1-9.3 章)
- 删除自建
TenantDataScopeService,改为复用 TenantController 已有的$this->organization、$this->channels、restrictRequestSourceByChannels(),渠道展开复用SystemOrganizationLogic::resolveEffectiveChannelCodes()。 - 新增
channels==['all']防御要求(商户后台拒绝/返回空)。
3. 订单改直连 s_pay(第 3、4.3、6、13.1、14.1、14.7、22.4、22.5、26、27 章)
- 把"slot-sdk → slot-pay / 禁直连 s_pay"改为"复用现网
s_pay直连模型,Logic 层强制organization+source+ 字段白名单"。 - 14.7 敏感字段:由"在 slot-pay 端剔除"改为"在
app/tenantLogic 层field()白名单只选可展示字段"。 - 补充限制说明:现网
RechargeOrderModel/WithdrawalOrderModel为s_pay单表、不含按月归档表,跨月历史订单查询范围受限。
4. 首页首充金额(第 10.2 章,并波及 10.6 / 11.3 / 11.4)
- 删除 10.2 "今日首充金额 SUM(frist_pay_cash_amount)"行,保留首充人数
first_recharge_num。 - 同步标注:凡引用
frist_pay_cash_amount(市场明细 11.3、汇总 11.4 的"首充金额")首期一并去除或标注脏值风险,保留首充人数与首充转化率。
5. 枚举与口径修正
- 14.4 审核状态补齐为实表 4 值:0 未审核 / 1 通过 / 2 拒绝退钱 / 3 拒绝扣钱(对齐 WithdrawalOrderModel)。
- 新增"字段核对"说明:
slot_all.user确含organization/currency/first_pay_date(建表与 alter 已证实);gm_stat_summary确含refund_amount/recharge_channel_fee/withdrawal_channel_fee(Summary 脚本写入)。
6. 跨仓库事项标注(第 12.10、15、16 章)
- 把
gm_stat_summary加uk_source_date、改create_time/加update_time、slot_all.user与recharge_order/withdrawal_order加索引、以及相关 Model PHPDoc 补全,统一标注为 跨团队协调项(库属s_statistics/slot_all/s_pay,由 slot-console/slot-user/slot-pay 执行),按工作区规则不在 saas6.x 仓库改。
不做
- 不写任何 PHP/前端代码。
- 不改
plugin/saimulti/**及 slot-* 仓库。 - 不执行任何 DDL。