支持多商户·多门店·实物卡·储值消费·积分体系·余额重算 · MySQL 8.0+

📅 版本:v3.0 (多商户版)📁 数据库:MySQL 8.0🧩 字符集:utf8mb4📐 金额精度:分 (BIGINT)📋 表数量:10 张🏢 支持:多商户 + 多门店

📖 概述

本数据库设计面向 多商户多门店会员卡管理系统,支持 实物卡(芯片ID) 与 无卡消费(手机号) 两种场景。 核心能力包括:储值充值、折扣消费、积分累积与兑换、余额变动全链路日志、余额重算 机制,以及 多商户/门店数据隔离。 设计时已预留 计次卡 扩展能力。

🏢 多商户多门店支持: 所有会员表已增加 fk_company_id 和 fk_store_id 字段,实现数据隔离。 每个商户/门店可独立配置积分规则、折扣比例、充值策略等。

🔗 实体关系图 (ER)

╔═══════════════════════════════════════════════════════════════════════════════════════════════════════╗ ║ 📦 多商户会员系统 ER 图 ║ ╠═══════════════════════════════════════════════════════════════════════════════════════════════════════╣ ║ ║ ║ ┌─────────────────────────────┐ ┌─────────────────────────────────┐ ║ ║ │ sauna_merchant │ │ sauna_merchant_store │ ║ ║ │ (商户公司表-已有) │ │ (门店表-已有) │ ║ ║ │─────────────────────────────│ │─────────────────────────────────│ ║ ║ │ key_id (PK) │◄─────────│ fk_company_id (FK) │ ║ ║ │ company_fullname │ 1 n │ key_id (PK) │ ║ ║ │ company_shortname │ │ name │ ║ ║ └─────────────────────────────┘ └─────────────────────────────────┘ ║ ║ │ │ ║ ║ │ 1 │ 1 ║ ║ ├───────────────────────┬──────────────────┘ ║ ║ │ │ ║ ║ ▼ ▼ ║ ║ ┌──────────────────────────────────────────────────────────────────────────────┐ ║ ║ │ member_card (会员卡主表) │ ║ ║ │──────────────────────────────────────────────────────────────────────────────│ ║ ║ │ key_id (PK) │ card_no (UK) │ chip_id (UK) │ phone (idx) │ ║ ║ │ fk_company_id (FK) │ fk_store_id (FK) │ status │ card_type │ ║ ║ │ current_principal │ current_gift │ current_points │ discount_rate │ ║ ║ └──────────────────────────────────────────────────────────────────────────────┘ ║ ║ │ ║ ║ │ 1 ║ ║ ├─────────────────────────────────────────────────────────────────┐ ║ ║ │ │ ║ ║ ▼ ▼ ║ ║ ┌─────────────────────────┐ ┌─────────────────────────────────────┐ ║ ║ │ member_recharge │ │ member_consume │ ║ ║ │ (充值记录表) │ │ (消费明细表) │ ║ ║ │─────────────────────────│ │─────────────────────────────────────│ ║ ║ │ key_id (PK) │ │ key_id (PK) │ ║ ║ │ card_key_id (FK) │ │ card_key_id (FK) │ ║ ║ │ recharge_no (UK) │ │ consume_no (UK) │ ║ ║ │ amount, gift_amount │ │ principal_amount, gift_amount │ ║ ║ └─────────────────────────┘ └─────────────────────────────────────┘ ║ ║ │ │ ║ ║ └───────────────────┬───────────────────┘ ║ ║ │ ║ ║ ▼ ║ ║ ┌─────────────────────────────────────────────────────────────────────────────┐ ║ ║ │ member_balance_log (余额变动日志-核心) │ ║ ║ │─────────────────────────────────────────────────────────────────────────────│ ║ ║ │ key_id (PK) │ card_key_id (FK) │ log_no (UK) │ change_type │ ║ ║ │ before_principal │ after_principal │ before_gift │ after_gift │ ║ ║ │ is_recalculated │ source_type │ source_id │ ║ ║ └─────────────────────────────────────────────────────────────────────────────┘ ║ ║ ║ ║ ┌─────────────────────────┐ ┌─────────────────────────────────────┐ ║ ║ │ member_points_exchange │ │ member_balance_recalc │ ║ ║ │ (积分兑换记录表) │ │ (余额重算记录表) │ ║ ║ │─────────────────────────│ │─────────────────────────────────────│ ║ ║ │ key_id (PK) │ │ key_id (PK) │ ║ ║ │ card_key_id (FK) │ │ card_key_id (FK) │ ║ ║ │ points_used │ │ old_principal, new_principal │ ║ ║ │ exchange_type │ │ diff_principal, diff_gift │ ║ ║ └─────────────────────────┘ └─────────────────────────────────────┘ ║ ║ ║ ║ ┌─────────────────────────────┐ ┌─────────────────────────────────┐ ║ ║ │ member_merchant_config │ │ member_operation_log │ ║ ║ │ (商户配置-新增) │ │ (操作审计日志-新增) │ ║ ║ │─────────────────────────────│ │─────────────────────────────────│ ║ ║ │ key_id (PK) │ │ key_id (PK) │ ║ ║ │ fk_company_id (FK) │ │ card_key_id (FK) │ ║ ║ │ fk_store_id (FK) │ │ operation_type │ ║ ║ │ gift_consume_ratio │ │ before_data, after_data │ ║ ║ │ points_rate │ │ ip_address, user_agent │ ║ ║ └─────────────────────────────┘ └─────────────────────────────────┘ ║ ║ ║ ║ ┌─────────────────────────────────────────────────────────────────────────────┐ ║ ║ │ system_consume_config (系统配置) │ ║ ║ │ config_key (UK) │ config_value │ description │ ║ ║ └─────────────────────────────────────────────────────────────────────────────┘ ║ ║ ║ ╚═══════════════════════════════════════════════════════════════════════════════════════════════════════╝

🆕 本次新增/变更:

  • 新增 fk_company_id、fk_store_id 字段到所有会员表
  • 新增 member_merchant_config 表 - 商户/门店级别配置
  • 新增 member_operation_log 表 - 操作审计日志
  • 统一 所有表增加公用字段:key_id、sort_index、create_by、create_time、update_by、update_time
  • 新增 v_member_card_full 视图 - 关联商户门店信息

📋 表结构详细设计

1. member_card会员卡主表

字段类型空键说明
idBIGINT UNSIGNEDNOPK自增主键
key_idVARCHAR(50)NOUK业务主键ID
fk_company_idVARCHAR(50)NOFK🏢 所属公司ID
fk_store_idVARCHAR(50)NOFK🏪 所属门店ID
card_noVARCHAR(20)NOUK会员卡编号(自编号)
chip_idVARCHAR(32)NOUK芯片ID唯一码(实物卡)
phoneVARCHAR(11)NOINDEX绑定手机号(无卡消费)
card_typeTINYINTNO-1-储值卡,2-计次卡(预留)
statusTINYINTNOINDEX0-冻结,1-正常,2-挂失,3-注销
total_rechargeBIGINTNO-累计充值金额(不含赠送,分)
total_giftBIGINTNO-累计赠送金额(分)
total_consumeBIGINTNO-累计消费本金(分)
total_gift_consumeBIGINTNO-累计赠送消费(分)
current_balanceBIGINTNO-当前可用总余额(本金+赠送)
current_principalBIGINTNO-当前本金余额
current_giftBIGINTNO-当前赠送余额
total_pointsINTNO-累计获得积分
used_pointsINTNO-已使用积分
current_pointsINTNO-当前可用积分
discount_rateDECIMAL(5,2)NO-折扣比例(100=不打折,90=9折)
open_dateDATETIMENO-开卡日期
expire_dateDATETIMEYES-有效期(计次卡使用)
last_consume_timeDATETIMEYES-最后消费时间
sort_indexINTYES-排序码
create_byVARCHAR(50)YES-创建人
create_timeDATETIMENOINDEX创建时间
update_byVARCHAR(50)YES-修改人
update_timeDATETIMENO-修改时间

🏢 多商户关键字段: fk_company_id 和 fk_store_id 实现数据隔离, 查询时务必带上这两个条件,确保不同商户/门店数据互不干扰。

2. member_recharge开卡/充值记录表

字段类型空键说明
idBIGINT UNSIGNEDNOPK自增主键
key_idVARCHAR(50)NOUK业务主键ID
card_idBIGINT UNSIGNEDNOFK会员卡自增ID
card_key_idVARCHAR(50)NOFK会员卡业务ID
recharge_noVARCHAR(32)NOUK充值流水号
recharge_typeTINYINTNO-1-开卡,2-充值,3-赠送活动,4-手动调账
amountBIGINTNO-充值金额(本金,分)
gift_amountBIGINTNO-赠送金额(分)
pay_methodTINYINTYES-1-现金,2-微信,3-支付宝,4-银行卡
operator_idVARCHAR(50)YES-操作人员ID
remarkVARCHAR(255)YES-备注
recharge_timeDATETIMENOINDEX充值时间
sort_indexINTYES-排序码
create_byVARCHAR(50)YES-创建人
create_timeDATETIMENOINDEX创建时间
update_byVARCHAR(50)YES-修改人
update_timeDATETIMENO-修改时间

3. member_consume消费明细表

字段类型空键说明
idBIGINT UNSIGNEDNOPK自增主键
key_idVARCHAR(50)NOUK业务主键ID
card_idBIGINT UNSIGNEDNOFK会员卡自增ID
card_key_idVARCHAR(50)NOFK会员卡业务ID
consume_noVARCHAR(32)NOUK消费流水号
order_idVARCHAR(32)YESINDEX关联订单号
total_amountBIGINTNO-消费总金额(原始金额,分)
actual_amountBIGINTNO-实际扣款金额(折扣后)
principal_amountBIGINTNO-扣本金金额
gift_amountBIGINTNO-扣赠送金额
discount_amountBIGINTNO-优惠金额
earned_pointsINTNO-获得积分
consume_timeDATETIMENOINDEX消费时间
operator_idVARCHAR(50)YES-操作人员ID
remarkVARCHAR(255)YES-备注
sort_indexINTYES-排序码
create_byVARCHAR(50)YES-创建人
create_timeDATETIMENOINDEX创建时间
update_byVARCHAR(50)YES-修改人
update_timeDATETIMENO-修改时间

4. member_balance_log⭐ 余额变动日志表(核心)

字段类型空键说明
idBIGINT UNSIGNEDNOPK自增主键
key_idVARCHAR(50)NOUK业务主键ID
card_idBIGINT UNSIGNEDNOFK会员卡自增ID
card_key_idVARCHAR(50)NOFK会员卡业务ID
log_noVARCHAR(32)NOUK日志流水号
change_typeTINYINTNO-1-开卡,2-充值,3-消费,4-退款,5-手动调整,6-积分兑换,7-余额重算修正
change_amountBIGINTNO-变动金额(正数增加,负数减少,分)
before_principalBIGINTNO-变动前本金余额
after_principalBIGINTNO-变动后本金余额
before_giftBIGINTNO-变动前赠送余额
after_giftBIGINTNO-变动后赠送余额
before_totalBIGINTNO-变动前总余额
after_totalBIGINTNO-变动后总余额
source_typeVARCHAR(30)YESINDEX来源类型:recharge/consume/refund/adjust
source_idVARCHAR(50)YESINDEX来源表KeyId
operator_idVARCHAR(50)YES-操作人ID
remarkVARCHAR(255)YES-备注
is_recalculatedTINYINTNO-是否被重算修正:0-否,1-是
sort_indexINTYES-排序码
create_byVARCHAR(50)YES-创建人
create_timeDATETIMENOINDEX创建时间
update_byVARCHAR(50)YES-修改人
update_timeDATETIMENO-修改时间

5. member_points_exchange积分兑换记录表

字段类型空键说明
idBIGINT UNSIGNEDNOPK自增主键
key_idVARCHAR(50)NOUK业务主键ID
card_idBIGINT UNSIGNEDNOFK会员卡自增ID
card_key_idVARCHAR(50)NOFK会员卡业务ID
exchange_noVARCHAR(32)NOUK兑换流水号
points_usedINTNO-使用的积分
exchange_typeTINYINTNO-1-抵现,2-兑换礼品,3-兑换优惠券
exchange_valueBIGINTNO-兑换价值(抵现金额或礼品价值,分)
consume_idBIGINT UNSIGNEDYES-关联消费自增ID
consume_key_idVARCHAR(50)YES-关联消费业务ID
statusTINYINTNO-1-成功,2-取消,3-失效
exchange_timeDATETIMENOINDEX兑换时间
operator_idVARCHAR(50)YES-操作人ID
remarkVARCHAR(255)YES-备注
sort_indexINTYES-排序码
create_byVARCHAR(50)YES-创建人
create_timeDATETIMENOINDEX创建时间
update_byVARCHAR(50)YES-修改人
update_timeDATETIMENO-修改时间

6. member_balance_recalc余额重算记录表(审计)

字段类型空键说明
idBIGINT UNSIGNEDNOPK自增主键
key_idVARCHAR(50)NOUK业务主键ID
card_idBIGINT UNSIGNEDNOFK会员卡自增ID
card_key_idVARCHAR(50)NOFK会员卡业务ID
recalc_noVARCHAR(32)NOUK重算流水号
old_principalBIGINTNO-重算前本金余额
new_principalBIGINTNO-重算后本金余额
old_giftBIGINTNO-重算前赠送余额
new_giftBIGINTNO-重算后赠送余额
old_totalBIGINTNO-重算前总余额
new_totalBIGINTNO-重算后总余额
diff_principalBIGINTNO-本金差异
diff_giftBIGINTNO-赠送差异
recalc_reasonVARCHAR(255)NO-重算原因
operator_idVARCHAR(50)NO-操作人ID
recalc_timeDATETIMENOINDEX重算时间
sort_indexINTYES-排序码
create_byVARCHAR(50)YES-创建人
create_timeDATETIMENOINDEX创建时间
update_byVARCHAR(50)YES-修改人
update_timeDATETIMENO-修改时间

7. member_merchant_config🆕 商户会员卡配置表

字段类型空键说明
idBIGINT UNSIGNEDNOPK自增主键
key_idVARCHAR(50)NOUK业务主键ID
fk_company_idVARCHAR(50)NOFK🏢 所属公司ID
fk_store_idVARCHAR(50)YESFK🏪 所属门店ID(NULL表示公司级配置)
config_typeTINYINTNO-配置类型:1-公司级,2-门店级
gift_consume_ratioINTNO-赠送金额消费比例(百分比)
points_rateINTNO-积分获得比例(每消费1元得N积分)
points_exchange_rateINTNO-积分兑换比例(N积分=1元)
min_recharge_amountBIGINTYES-最低充值金额(分)
max_gift_amountBIGINTYES-单次最大赠送金额(分)
is_enabledTINYINTNO-是否启用:0-禁用,1-启用
sort_indexINTYES-排序码
create_byVARCHAR(50)YES-创建人
create_timeDATETIMENOINDEX创建时间
update_byVARCHAR(50)YES-修改人
update_timeDATETIMENO-修改时间

⚙️ 配置优先级: 门店配置(fk_store_id 有值)> 公司配置(fk_store_id 为 NULL)> 系统默认配置

8. member_operation_log🆕 会员卡操作日志表(审计)

字段类型空键说明
idBIGINT UNSIGNEDNOPK自增主键
key_idVARCHAR(50)NOUK业务主键ID
card_idBIGINT UNSIGNEDNOFK会员卡自增ID
card_key_idVARCHAR(50)NOFK会员卡业务ID
operation_typeTINYINTNOINDEX操作类型:1-开卡,2-充值,3-消费,4-冻结,5-解冻,6-挂失,7-解挂,8-注销,9-余额调整,10-积分调整
operation_contentTEXTYES-操作内容(JSON)
before_dataTEXTYES-操作前数据(JSON)
after_dataTEXTYES-操作后数据(JSON)
ip_addressVARCHAR(50)YES-操作IP
user_agentVARCHAR(255)YES-用户代理
operator_idVARCHAR(50)YES-操作人ID
operator_nameVARCHAR(100)YES-操作人姓名
remarkVARCHAR(255)YES-备注
operation_timeDATETIMENOINDEX操作时间
sort_indexINTYES-排序码
create_byVARCHAR(50)YES-创建人
create_timeDATETIMENOINDEX创建时间
update_byVARCHAR(50)YES-修改人
update_timeDATETIMENO-修改时间

9. system_consume_config系统配置表

字段类型空键说明
idINT UNSIGNEDNOPK自增主键
key_idVARCHAR(50)NOUK业务主键ID
config_keyVARCHAR(50)NOUK配置键
config_valueVARCHAR(100)NO-配置值
descriptionVARCHAR(255)YES-描述
sort_indexINTYES-排序码
create_byVARCHAR(50)YES-创建人
create_timeDATETIMENO-创建时间
update_byVARCHAR(50)YES-修改人
update_timeDATETIMENO-修改时间

10. v_member_card_full📊 会员卡完整信息视图

-- 关联商户和门店信息的完整视图 CREATE OR REPLACE VIEW v_member_card_full AS SELECT mc.key_id, mc.card_no, mc.chip_id, mc.phone, mc.card_type, mc.status, mc.current_balance, mc.current_principal, mc.current_gift, mc.current_points, mc.discount_rate, mc.open_date, mc.expire_date, mc.last_consume_time, -- 商户信息 sm.company_fullname AS company_name, sm.company_shortname AS company_shortname, sm.contact_info AS company_contact, sm.contact_phone AS company_phone, -- 门店信息 sms.name AS store_name, sms.store_no, sms.phone AS store_phone, sms.address AS store_address, sms.contact AS store_contact, -- 配置信息 COALESCE(mmc_store.gift_consume_ratio, mmc_company.gift_consume_ratio, sys1.config_value) AS gift_consume_ratio, COALESCE(mmc_store.points_rate, mmc_company.points_rate, sys2.config_value) AS points_rate, COALESCE(mmc_store.points_exchange_rate, mmc_company.points_exchange_rate, sys3.config_value) AS points_exchange_rate FROM member_card mc LEFT JOIN sauna_merchant sm ON mc.fk_company_id = sm.key_id LEFT JOIN sauna_merchant_store sms ON mc.fk_store_id = sms.key_id LEFT JOIN member_merchant_config mmc_store ON mc.fk_store_id = mmc_store.fk_store_id AND mmc_store.is_enabled = 1 LEFT JOIN member_merchant_config mmc_company ON mc.fk_company_id = mmc_company.fk_company_id AND mmc_company.fk_store_id IS NULL AND mmc_company.is_enabled = 1 LEFT JOIN system_consume_config sys1 ON sys1.config_key = 'gift_consume_ratio' LEFT JOIN system_consume_config sys2 ON sys2.config_key = 'points_rate' LEFT JOIN system_consume_config sys3 ON sys3.config_key = 'points_exchange_rate';

⚙️ 核心建表SQL(完整)

-- ====================================================== -- 1. 会员卡主表(支持多商户多门店) -- ====================================================== CREATE TABLE member_card ( id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '主键ID', key_id VARCHAR(50) NOT NULL COMMENT '业务主键ID', card_no VARCHAR(20) NOT NULL COMMENT '会员卡编号', chip_id VARCHAR(32) NOT NULL COMMENT '芯片ID唯一码', phone VARCHAR(11) NOT NULL COMMENT '绑定手机号', fk_company_id VARCHAR(50) NOT NULL COMMENT '所属公司ID', fk_store_id VARCHAR(50) NOT NULL COMMENT '所属门店ID', card_type TINYINT NOT NULL DEFAULT 1 COMMENT '卡类型:1-储值卡,2-计次卡', status TINYINT NOT NULL DEFAULT 1 COMMENT '状态:0-冻结,1-正常,2-挂失,3-注销', total_recharge BIGINT NOT NULL DEFAULT 0 COMMENT '累计充值金额', total_gift BIGINT NOT NULL DEFAULT 0 COMMENT '累计赠送金额', total_consume BIGINT NOT NULL DEFAULT 0 COMMENT '累计消费本金', total_gift_consume BIGINT NOT NULL DEFAULT 0 COMMENT '累计赠送消费', current_balance BIGINT NOT NULL DEFAULT 0 COMMENT '当前可用总余额', current_principal BIGINT NOT NULL DEFAULT 0 COMMENT '当前本金余额', current_gift BIGINT NOT NULL DEFAULT 0 COMMENT '当前赠送余额', total_points INT NOT NULL DEFAULT 0 COMMENT '累计获得积分', used_points INT NOT NULL DEFAULT 0 COMMENT '已使用积分', current_points INT NOT NULL DEFAULT 0 COMMENT '当前可用积分', discount_rate DECIMAL(5,2) NOT NULL DEFAULT 100.00 COMMENT '折扣比例', open_date DATETIME NOT NULL COMMENT '开卡日期', expire_date DATETIME DEFAULT NULL COMMENT '有效期', last_consume_time DATETIME DEFAULT NULL COMMENT '最后消费时间', sort_index INT DEFAULT 0 COMMENT '排序码', create_by VARCHAR(50) DEFAULT NULL COMMENT '创建人', create_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', update_by VARCHAR(50) DEFAULT NULL COMMENT '修改人', update_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '修改时间', PRIMARY KEY (id), UNIQUE KEY uk_key_id (key_id), UNIQUE KEY uk_card_no (card_no), UNIQUE KEY uk_chip_id (chip_id), KEY idx_phone (phone), KEY idx_company_store (fk_company_id, fk_store_id), KEY idx_status (status), KEY idx_create_time (create_time) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='会员卡主表'; -- ====================================================== -- 2. 会员开卡/充值记录表 -- ====================================================== CREATE TABLE member_recharge ( id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT, key_id VARCHAR(50) NOT NULL COMMENT '业务主键ID', card_id BIGINT UNSIGNED NOT NULL COMMENT '会员卡自增ID', card_key_id VARCHAR(50) NOT NULL COMMENT '会员卡业务ID', recharge_no VARCHAR(32) NOT NULL COMMENT '充值流水号', recharge_type TINYINT NOT NULL COMMENT '类型:1-开卡,2-充值,3-赠送活动,4-手动调账', amount BIGINT NOT NULL DEFAULT 0 COMMENT '充值金额(本金)', gift_amount BIGINT NOT NULL DEFAULT 0 COMMENT '赠送金额', pay_method TINYINT DEFAULT NULL COMMENT '支付方式', operator_id VARCHAR(50) DEFAULT NULL COMMENT '操作人员ID', remark VARCHAR(255) DEFAULT NULL COMMENT '备注', recharge_time DATETIME NOT NULL COMMENT '充值时间', sort_index INT DEFAULT 0 COMMENT '排序码', create_by VARCHAR(50) DEFAULT NULL COMMENT '创建人', create_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', update_by VARCHAR(50) DEFAULT NULL COMMENT '修改人', update_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '修改时间', PRIMARY KEY (id), UNIQUE KEY uk_key_id (key_id), UNIQUE KEY uk_recharge_no (recharge_no), KEY idx_card_id (card_id), KEY idx_card_key_id (card_key_id), KEY idx_recharge_time (recharge_time), KEY idx_create_time (create_time) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='充值/开卡记录表'; -- ... 其余表结构请参见文档上方详细字段说明 ...

🧠 核心业务逻辑

💰 消费扣款流程
  • 1 获取商户/门店配置的 gift_consume_ratio
  • 2 根据比例计算赠送扣款金额
  • 3 优先扣除赠送金额,不足时从本金补扣
  • 4 按实际扣款金额计算积分
  • 5 记录 member_consume 明细
  • 6 同步更新 member_card 余额
  • 7 写入 member_balance_log 变动日志
🔄 余额重算流程
  • 1 根据 recharge + consume 重新计算
  • 2 对比当前余额,计算差异
  • 3 更新 member_card 为正确余额
  • 4 记录 member_balance_recalc 重算审计
  • 5 在 member_balance_log 中插入修正记录
  • 6 标记相关日志 is_recalculated = 1
🏢 多商户数据隔离
  • • 所有查询必须带 fk_company_id
  • • 门店级查询额外带 fk_store_id
  • • 配置优先级:门店 > 公司 > 系统
  • • 支持跨门店会员(公司级统一管理)
  • • 每个商户独立积分/折扣规则
📱 无卡消费 + 审计
  • • 通过 phone 字段查询会员
  • • 支持手机号+验证码身份验证
  • • 所有操作记录 member_operation_log
  • • 记录操作前后数据快照(JSON)
  • • 支持操作追溯和问题排查

🚀 扩展性设计

Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐