feat(quality-owner): 增加优质号主、极品专区与无忧租号保险

- 支持保证金余额支付、在线支付开通及后台手动设置审计
- 新增极品专区发布权限、赔付方案与保险结算费率快照
- 优化首页、商品卡和个人中心的优质号主身份展示
This commit is contained in:
yml2213
2026-11-04 15:04:35 +08:00
parent 812e95e7d1
commit 98174c0e33
90 changed files with 3478 additions and 64 deletions
@@ -0,0 +1,73 @@
-- +goose Up
-- 优质号主与无忧租号保险:
-- users 保存优质号主资格及保证金快照;
-- rental_listings 标记极品专区商品,并保存发布时赔付方案/费率快照;
-- rental_orders / order_checkouts 保存下单时费率快照和实际保险服务费。
ALTER TABLE users
ADD COLUMN quality_owner_status VARCHAR(16) NOT NULL DEFAULT 'none' COMMENT '优质号主状态: none普通/active优质' AFTER status,
ADD COLUMN quality_owner_deposit_cent BIGINT NOT NULL DEFAULT 0 COMMENT '优质号主保证金(分)' AFTER quality_owner_status,
ADD COLUMN quality_owner_deposit_source VARCHAR(16) NOT NULL DEFAULT '' COMMENT '保证金来源: paid用户缴纳/manual后台设置' AFTER quality_owner_deposit_cent,
ADD COLUMN quality_owner_activated_at DATETIME NULL COMMENT '优质号主开通时间' AFTER quality_owner_deposit_source,
ADD KEY idx_users_quality_owner_status (quality_owner_status);
ALTER TABLE rental_listings
ADD COLUMN is_premium TINYINT(1) NOT NULL DEFAULT 0 COMMENT '是否极品专区' AFTER distribution_site_id,
ADD COLUMN compensation_plan VARCHAR(16) NOT NULL DEFAULT 'normal' COMMENT '赔付方案: normal普通赔付/insurance无忧租号保险' AFTER is_premium,
ADD COLUMN insurance_fee_bps INT NOT NULL DEFAULT 0 COMMENT '保险服务费率快照(万分比)' AFTER compensation_plan,
ADD KEY idx_rental_listings_premium_status (is_premium, status, review_status);
ALTER TABLE rental_orders
ADD COLUMN is_premium TINYINT(1) NOT NULL DEFAULT 0 COMMENT '下单时是否极品专区' AFTER distribution_rule_version_id,
ADD COLUMN compensation_plan VARCHAR(16) NOT NULL DEFAULT 'normal' COMMENT '下单时赔付方案快照' AFTER is_premium,
ADD COLUMN insurance_fee_bps INT NOT NULL DEFAULT 0 COMMENT '下单时保险服务费率快照(万分比)' AFTER compensation_plan,
ADD COLUMN insurance_fee_cent BIGINT NOT NULL DEFAULT 0 COMMENT '实际保险服务费(分)' AFTER insurance_fee_bps;
ALTER TABLE order_checkouts
ADD COLUMN insurance_fee_bps INT NOT NULL DEFAULT 0 COMMENT '保险服务费率快照(万分比)' AFTER platform_fee_cent,
ADD COLUMN insurance_fee_cent BIGINT NOT NULL DEFAULT 0 COMMENT '保险服务费(分)' AFTER insurance_fee_bps;
INSERT INTO permissions (code, name, resource, action) VALUES
('user:quality_owner', '设置优质号主', 'user', 'quality_owner')
ON DUPLICATE KEY UPDATE
name = VALUES(name),
resource = VALUES(resource),
action = VALUES(action);
INSERT IGNORE INTO role_permissions (role_id, permission_id)
SELECT r.id, p.id
FROM roles r
JOIN permissions p ON p.code = 'user:quality_owner'
WHERE r.code IN ('ops', 'super_admin');
-- +goose Down
DELETE rp
FROM role_permissions rp
JOIN permissions p ON p.id = rp.permission_id
WHERE p.code = 'user:quality_owner';
DELETE FROM permissions WHERE code = 'user:quality_owner';
ALTER TABLE order_checkouts
DROP COLUMN insurance_fee_cent,
DROP COLUMN insurance_fee_bps;
ALTER TABLE rental_orders
DROP COLUMN insurance_fee_cent,
DROP COLUMN insurance_fee_bps,
DROP COLUMN compensation_plan,
DROP COLUMN is_premium;
ALTER TABLE rental_listings
DROP KEY idx_rental_listings_premium_status,
DROP COLUMN insurance_fee_bps,
DROP COLUMN compensation_plan,
DROP COLUMN is_premium;
ALTER TABLE users
DROP KEY idx_users_quality_owner_status,
DROP COLUMN quality_owner_activated_at,
DROP COLUMN quality_owner_deposit_source,
DROP COLUMN quality_owner_deposit_cent,
DROP COLUMN quality_owner_status;
@@ -0,0 +1,13 @@
-- +goose Up
-- 通用业务支付单:订单支付继续使用 order_id;优质号主保证金等非订单业务使用 biz_id,
-- 避免把用户 ID 写入订单外键语义。
ALTER TABLE payment_orders
ADD COLUMN biz_id BIGINT UNSIGNED NOT NULL DEFAULT 0 COMMENT '业务对象ID(非订单业务使用)' AFTER order_no,
ADD KEY idx_payment_orders_user_biz (user_id, biz_type, biz_id, status);
-- +goose Down
ALTER TABLE payment_orders
DROP KEY idx_payment_orders_user_biz,
DROP COLUMN biz_id;