-- ========================================
-- 会员权益 — 商城侧表结构变更
-- 执行范围：各节点业务库（如 cn01_db / us01_db）
-- 说明：升降级规则表在 oemsaasapp 应用库，不在本脚本
-- ========================================

-- 1. 会员折扣：级别 × 商品（product_id=0 表示全场）
CREATE TABLE IF NOT EXISTS `o_customer_level_product_discount` (
  `id`                   int(11) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键',
  `store_id`             int(11) unsigned NOT NULL DEFAULT '0' COMMENT '店铺ID',
  `level_id`             int(11) unsigned NOT NULL DEFAULT '0' COMMENT '顾客级别ID，o_customer_level.id',
  `product_id`           int(11) unsigned NOT NULL DEFAULT '0' COMMENT '商品ID；0=全场折扣',
  `discount`             decimal(5,2)     NOT NULL DEFAULT '100.00' COMMENT '平常日支付比例%，100=原价，80=8折',
  `member_day_discount`  decimal(5,2)     NOT NULL DEFAULT '100.00' COMMENT '会员日支付比例%',
  `created_at`           int(11) unsigned NOT NULL DEFAULT '0' COMMENT '创建时间',
  `updated_at`           int(11) unsigned NOT NULL DEFAULT '0' COMMENT '更新时间',
  PRIMARY KEY (`id`),
  UNIQUE KEY `uk_store_level_product` (`store_id`, `level_id`, `product_id`),
  KEY `idx_store_level` (`store_id`, `level_id`),
  KEY `idx_store_product` (`store_id`, `product_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='会员级别商品折扣';


-- 2. 积分规则：会员积分加权 JSON
ALTER TABLE `o_point_rule`
  ADD COLUMN `member_points_weight` varchar(4096) NOT NULL DEFAULT '' COMMENT '会员积分加权JSON，按level_id配置平常日/会员日比例' AFTER `reward_param`;


-- 3. 运费折扣：是否仅会员日有效
ALTER TABLE `o_shipping_discount`
  ADD COLUMN `member_day_only` tinyint(1) unsigned NOT NULL DEFAULT '0' COMMENT '0=活动时段内始终有效；1=仅会员日当天有效' AFTER `activity_type`;


-- 4. 运费适用对象：扩展 customer_level（会员级别）
ALTER TABLE `o_shipping_discount_customer`
  MODIFY COLUMN `obj_type` enum('all','tag','customer','visitor','customer_level') NOT NULL COMMENT '适用对象类型；customer_level=会员级别';


-- 5. 会员日配置：通过 o_store_config 写入，无需 DDL
-- key   = membership_member_day
-- value = JSON，结构见 docs/membership/design.md §3.3
--
-- 示例（勿直接执行，由应用/API 写入）：
-- INSERT INTO o_store_config (store_id, `key`, value, created_at, updated_at) VALUES
-- (123, 'membership_member_day', '{"weekday_rules":[{"frequency":"weekly","weekdays":[6,7]}],"month_dates":[1,15]}', UNIX_TIMESTAMP(), UNIX_TIMESTAMP());


-- 6. Webhook 延迟（应用安装时配置，非 DDL）
-- 事件 orders/paid，o_webhook.delay_time = 300（5 分钟），避免 ES/从库延迟
