2.7 KiB
2.7 KiB
数据库模型(Yoone Subscriptions)
本插件新增一个独立的数据库模型目录 includes/models/,用于管理用户订阅实例的持久化数据。当前实现增加了基础表结构与 CRUD 接口,方便未来接入续订、暂停、取消等业务。
表结构
表名:{wp_prefix}yoone_subscriptions
字段:
idbigint(20) unsigned 主键,自增user_idbigint(20) unsigned 用户ID(WP用户)product_idbigint(20) unsigned 产品ID(WooCommerce 产品)periodvarchar(10) 订阅周期:month或yearqtyint(11) unsigned 订阅数量(每周期数量)price_per_cycledecimal(18,8) 每周期价格(不含周期系数;年周期计算会乘以 12)statusvarchar(20) 订阅状态(如active、paused、canceled,当前未做枚举限制)start_datedatetime 订阅开始时间next_renewal_datedatetime 下次续订时间(可空)created_atdatetime 创建时间updated_atdatetime 更新时间
索引:
user_idproduct_idstatus
安装:在插件激活时调用安装逻辑创建/升级表结构(使用 dbDelta)。
目录与类
- 目录:
wp-content/plugins/yoone-subscriptions/includes/models/ - 类:
Yoone_Subscriptions_DB(文件:class-yoone-subscriptions-db.php)
主要方法:
Yoone_Subscriptions_DB::install()创建/升级表结构Yoone_Subscriptions_DB::create(array $data)插入订阅实例,返回插入IDYoone_Subscriptions_DB::update(int $id, array $data)更新订阅实例Yoone_Subscriptions_DB::get(int $id)获取单条订阅实例Yoone_Subscriptions_DB::get_by_user(int $user_id, array $args = [])获取某用户的订阅实例列表
与现有逻辑的关系
目前产品的订阅计划配置(是否启用、周期、默认数量、每周期价格、是否允许一次性购买)仍存储在产品 postmeta 中,见 Yoone_Subscriptions::get_config()。
新增数据库模型仅作为“用户订阅实例”的数据持久层,暂未在前端流程中自动写入。待未来接入续订与周期性扣费时,可在下单或激活订阅时创建实例,并结合定时任务(wp_cron)或队列进行续订处理。
下一步建议
- 在结账成功(
woocommerce_checkout_order_processed或woocommerce_order_status_changed)时,根据订单行项目写入订阅实例。 - 增加状态枚举与状态迁移方法(active→paused→canceled),以及日志记录。
- 增加管理后台页面展示用户订阅列表(可筛选用户、产品、状态),支持手动操作。
- 结合支付网关对接续订扣费逻辑,写入
next_renewal_date并在到期前触发续订流程。