会员权益 — 应用库设计(oemsaasapp)

:oemsaasapp 独立 MySQL(非商城 cn01_db)。
商城侧表:见 design.mdmembership_tables.sql
DDLmembership_app_tables.sql

1. 存储分工总览

配置 / 数据存储位置应用职责
自动升级(开关 + 条件 + 级别门槛)应用库 o_membership_upgrade_ruleUI 读写
升级流水应用库 o_membership_upgrade_logWebhook 处理后写入
应用安装 / Webhook商城 o_my_appo_webhook安装时注册,应用库不建表
会员折扣商城 o_level_product_discountUI → 调商城 API 写
积分加权商城 o_point_rule.member_points_weightUI → 调商城 API 写
会员日商城 o_store_configUI → 调商城 API 写
运费扩展商城 o_shipping_discountUI → 调商城 API 写
顾客级别定义商城 o_customer_level只读引用 level_id
顾客当前级别商城 customer.level_idWebhook 升级后 回写

应用库仅 2 张表;折扣/积分/会员日/运费不在应用库存储。


2. 表结构

2.1 o_membership_upgrade_rule — 店铺设置 + 级别门槛(单表)

level_id 区分行类型

level_id含义使用字段
0店铺级设置(每店固定 1 行)auto_upgrade_enabledupgrade_condition_type
>0各级别门槛amount_thresholdorder_count_threshold
字段说明
store_id商城店铺 ID
level_id0=店铺设置;>0=o_customer_level.id
auto_upgrade_enabledlevel_id=0;默认 1
upgrade_condition_typelevel_id=0amount / order_count 二选一
amount_thresholdlevel_id>0 且条件=金额
order_count_thresholdlevel_id>0 且条件=笔数

约束:UNIQUE(store_id, level_id)

业务约定:

  • 不做自动降级
  • 切换 upgrade_condition_type 时,清空所有 level_id>0 行中未使用维度的字段
  • 判升级时:先读 level_id=0 行,再读 level_id>0 行 + 商城 o_customer_level.weight 排序

级别联动

商城事件应用侧处理
新增顾客级别INSERT 一行 level_id=新 id(门槛默认 NULL/0)
删除顾客级别DELETE level_id=该 id 的行
首次安装INSERT level_id=0 默认行 + 各级别门槛行

示例

store_idlevel_idauto_upgradecondition_typeamount_thresholdorder_count_threshold
10001amountNULLNULL
10010.00NULL
10021000.00NULL
10035000.00NULL

2.2 o_membership_upgrade_log — 升级流水

Webhook 成功升级后 INSERT;未升级不写。

字段说明
from_level_id / to_level_id仅升级时 to 权重更高
metric_value判定时 total_spentorders_count
order_id / order_number触发订单
webhook_trace_id排障

3. 安装与 Webhook(商城侧,无应用表)

存储
是否已安装商城 o_my_app
Webhook 订阅商城 o_webhookorders/paiddelay_time=300

安装流程概要:

  1. 商城应用中心安装 → 应用识别 store_id
  2. 应用库 INSERT o_membership_upgrade_rulelevel_id=0 + 各级别行
  3. 调商城 API 注册 Webhook;不在应用库记录 webhook_id

4. 升级算法(应用实现参考)

输入:store_id, customer_id, order(Webhook body)
1. 读 level_id=0 行 → auto_upgrade_enabled=0 则结束
2. 读 upgrade_condition_type
3. 读顾客 level_id, total_spent, orders_count
4. 读 level_id>0 规则 + 商城 level weight
5. 按 weight 升序找最高可达级别 target
6. target.weight <= current.weight → 结束
7. 调商城 API 更新 customer.level_id
8. INSERT o_membership_upgrade_log

5. 配置页与表对应

原型页面应用库商城库
应用会员配置 / 升级规则o_membership_upgrade_rule
会员指定折扣方案o_level_product_discount
积分配置o_point_rule.member_points_weight
会员日o_store_config
运费折扣o_shipping_discount

6. 部署

mysql -h ... -u ... membership_app_db < docs/sql/membership_app_tables.sql

7. 变更记录

日期说明
2026-06-08初版:4 张应用表
2026-06-08合并 upgrade_setting + upgrade_rule;删除 o_membership_store