Date: 2026-09-11 | Spec: spec.md | Research: research.md
所有 DDL 追加到
updatesql/sql.md(标注日期与用途),由开发者手动执行,不在代码/迁移脚本中自动执行。
payment_method_config(平台支付方式开关)| 列 | 类型 | 说明 |
|---|---|---|
| id | BIGINT AUTO_INCREMENT PK | |
| method_code | VARCHAR(32) NOT NULL | 支付方式代码:COD / CARD_OMG / LINE_PAY / OFFLINE_TRANSFER(组代码,非 payType 数值) |
| scope | VARCHAR(32) NOT NULL | 维度:MERCHANT(商家餐饮单)/ RIDER_FLASH(骑手闪送) |
| enabled | TINYINT NOT NULL DEFAULT 1 | 1=开 0=关 |
| remark | VARCHAR(500) NULL | 2026-10-09:仅 MERCHANT 使用的商家只读说明,支持换行,不参与费率/结算;NULL/空=不显示 |
| sort | INT NOT NULL DEFAULT 0 | 平台设置页展示排序 |
| update_by | BIGINT | 最后操作管理员 |
| update_time / create_time | DATETIME |
uk(method_code, scope)CARD_OMG 组 = payType 2+5,开关联动;COD = payType 1;LINE_PAY = 3;OFFLINE_TRANSFER = 6。现金(4) 不建行不纳入。info_user 加两列(收款方选择)| 列 | 类型 | 说明 |
|---|---|---|
| pay_methods | VARCHAR(128) NULL | 商家接受的支付方式组代码 CSV(如 COD,CARD_OMG);NULL/空 = 全部启用(存量零变化) |
| flash_pay_methods | VARCHAR(128) NULL | 骑手接受的闪送收款方式 CSV;NULL/空 = 平台开放的全部 |
info_user 主账号行;查询时连锁门店经 pos_store.user_id 定位主账号(与 027 bankInfo 同路径)。info_bank_card(收款银行卡)| 列 | 类型 | 说明 |
|---|---|---|
| id | BIGINT AUTO_INCREMENT PK | |
| user_id | BIGINT NOT NULL | 归属(商家主账号 / 骑手),索引 |
| bank_name | VARCHAR(64) NOT NULL | 银行名称(字典 taiwan_bank_list 中文名) |
| account_no | VARCHAR(64) NOT NULL | 银行账号 |
| account_name | VARCHAR(64) NOT NULL | 户名 |
| is_active | TINYINT NOT NULL DEFAULT 0 | 1=启用;同一 user 同时最多一张启用(服务层事务保证:启用新卡同事务停旧卡) |
| create_time / update_time | DATETIME |
flash_delivery_order 加一列(收款状态)| 列 | 类型 | 说明 |
|---|---|---|
| payment_status | TINYINT NOT NULL DEFAULT 0 | 0=未收款 1=骑手已确认收款 |
pay_type 列(值域扩展为平台闪送维度开放集合,当前已存 4/6),不新增支付方式列。flash_delivery_order_log(operator_type=RIDER),不改订单状态,不阻塞送达/完成。-- 031 027银行三字段迁移为启用卡
INSERT INTO info_bank_card (user_id, bank_name, account_no, account_name, is_active, create_time)
SELECT user_id, bank_name, bank_account_no, bank_account_name, 1, NOW()
FROM info_user
WHERE user_id IS NOT NULL AND bank_name IS NOT NULL AND bank_name <> ''
AND bank_account_no IS NOT NULL AND bank_account_no <> ''
AND bank_account_name IS NOT NULL AND bank_account_name <> '';
bankInfo 改读 info_bank_card is_active=1,info_user 旧三字段保留不删(App 端商家审核资料等仍引用)。OFFLINE_TRANSFER 就绪 = 存在启用卡。| 方式 | 就绪条件(门店/收款方) |
|---|---|
| CARD_OMG | 门店 pos_store_omg 存在启用凭证 |
| LINE_PAY | 门店 pos_store_line_pay 存在启用凭证 |
| OFFLINE_TRANSFER | 收款方 info_bank_card 存在 is_active=1 的卡 |
| COD | 无就绪度要求(恒满足) |
按全栈字段清单:ruoyi-system domain(新实体 PaymentMethodConfig / InfoBankCard + InfoUser / FlashDeliveryOrder 加字段)→ mapper(MyBatis-Plus BaseMapper + 必要自定义 SQL)→ ruoyi-admin service/controller → 前端。resultMap 如涉及 XML 同步(本表预期纯 MyBatis-Plus,无 XML)。
无表结构变更。 现金可用性不落新表/新字段:
info_user.pay_methods(MERCHANT 维度 CSV),值域新增组代码 CASH;NULL/空=全部接受(含现金),存量商家行为零变化。payment_method_config 行:现金无平台开关(allGroups() 不含 CASH,平台矩阵页不渲染)。pos_order.pay_type=4 与 type∈{1,2} 组合即现金自取/堂食单,pay_status=1(同到付线下收款语义),无新字段。| 表/列 | 类型 | 规则 |
|---|---|---|
pos_store.pay_methods |
VARCHAR(128) NULL | 仅 is_stall=1 使用,NULL/空=全部;普通商家仍读 info_user.pay_methods |
info_bank_card.store_id |
BIGINT NULL,索引 | 摊位卡填写此列,user_id 必须为空 |
info_bank_card.user_id |
BIGINT NULL | 普通商家和骑手卡保留此列,store_id 必须为空 |
摊位主 info_user.store_id 是授权关联,不是银行卡归属。夜市主 pos_store.user_id 只表示创建/所有权,不参与摊位支付选择和收款卡判定。存量夜市主卡不自动复制到摊位。SQL 见 updatesql/sql.md 的 US8 节,需在代码部署前手工执行。通用门店编辑接口禁止绑定 pay_methods,仅专用支付设置接口写入该列。
同一摊位可能有多个有效摊位主:新增首张卡和切换启用卡前,在同一事务内对对应 pos_store 行执行 SELECT ... FOR UPDATE,再检查/修改银行卡,保证并发请求按摊位串行处理。普通商家和骑手保持原卡管理事务逻辑。