hyapp-server/server/admin/migrations/088_fami_guild_revenue_policy.sql

87 lines
3.7 KiB
SQL
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

SET NAMES utf8mb4 COLLATE utf8mb4_unicode_ci;
SET @now_ms = CAST(UNIX_TIMESTAMP(UTC_TIMESTAMP(3)) * 1000 AS UNSIGNED);
-- 收益策略模板是 Lalu/Huwaa/Fami 共用的产品配置入口。默认文档放在 merge 左侧,既能创建 agency 对象,
-- 又不会覆盖已存在的配置;旧实例重发仍保持 0 分成和 charge_amount 守恒口径。
UPDATE admin_policy_templates
SET rule_json = JSON_MERGE_PATCH(
CAST('{"agency":{"point_ratio_percent":0,"share_base":"charge_amount"}}' AS JSON),
rule_json
),
updated_at_ms = @now_ms
WHERE template_code = 'first_google70000_coin_seller_92000_100000_v1'
AND template_version = 'v1'
AND (JSON_EXTRACT(rule_json, '$.agency.point_ratio_percent') IS NULL
OR JSON_EXTRACT(rule_json, '$.agency.share_base') IS NULL);
UPDATE admin_policy_template_versions
SET rule_json = JSON_MERGE_PATCH(
CAST('{"agency":{"point_ratio_percent":0,"share_base":"charge_amount"}}' AS JSON),
rule_json
),
updated_at_ms = @now_ms
WHERE template_code = 'first_google70000_coin_seller_92000_100000_v1'
AND template_version = 'v1'
AND (JSON_EXTRACT(rule_json, '$.agency.point_ratio_percent') IS NULL
OR JSON_EXTRACT(rule_json, '$.agency.share_base') IS NULL);
-- Fami 的礼物类型先决定主播实际 POINT 收益,再由平台按该收益额外给 Agency owner 20%。内层 JSON_SET
-- 先确保 host/agency 父对象存在,外层再写嵌套字段,避免 MySQL 对不存在父路径静默忽略,同时保留其他规则。
INSERT INTO admin_policy_templates (
template_code, template_version, name, status, rule_json, description,
created_by_admin_id, updated_by_admin_id, created_at_ms, updated_at_ms
)
SELECT
'fami_guild_revenue_policy', 'v1', 'Fami 公会收益政策', 'active',
JSON_SET(
JSON_SET(
rule_json,
'$.host', COALESCE(JSON_EXTRACT(rule_json, '$.host'), JSON_OBJECT()),
'$.agency', COALESCE(JSON_EXTRACT(rule_json, '$.agency'), JSON_OBJECT())
),
'$.host.point_ratio_percent', 100,
'$.host.use_gift_type_ratio', JSON_EXTRACT('true', '$'),
'$.agency.point_ratio_percent', 20,
'$.agency.share_base', 'host_income'
),
'Fami 主播 POINT 收益政策Agency 按主播实际 POINT 收益由平台额外发放 20%,以发布后的运行快照为准。',
0, 0, @now_ms, @now_ms
FROM admin_policy_templates
WHERE template_code = 'first_google70000_coin_seller_92000_100000_v1' AND template_version = 'v1'
ON DUPLICATE KEY UPDATE
name = VALUES(name),
status = VALUES(status),
description = VALUES(description),
updated_at_ms = @now_ms;
INSERT INTO admin_policy_template_versions (
template_code, template_version, status, rule_json,
created_by_admin_id, updated_by_admin_id, created_at_ms, updated_at_ms
)
SELECT
template_code, template_version, status, rule_json,
created_by_admin_id, updated_by_admin_id, created_at_ms, updated_at_ms
FROM admin_policy_templates
WHERE template_code = 'fami_guild_revenue_policy' AND template_version = 'v1'
ON DUPLICATE KEY UPDATE
status = VALUES(status),
rule_json = VALUES(rule_json),
updated_at_ms = @now_ms;
INSERT INTO admin_policy_instances (
app_code, instance_code, template_code, template_version, region_scope, status,
effective_from_ms, effective_to_ms, publish_status, created_by_admin_id, updated_by_admin_id,
created_at_ms, updated_at_ms
) VALUES (
'fami', 'fami_guild_revenue_policy', 'fami_guild_revenue_policy', 'v1',
'all_active_regions', 'active', @now_ms, 0, 'draft', 0, 0, @now_ms, @now_ms
)
ON DUPLICATE KEY UPDATE
template_code = VALUES(template_code),
template_version = VALUES(template_version),
region_scope = VALUES(region_scope),
status = VALUES(status),
effective_to_ms = VALUES(effective_to_ms),
updated_at_ms = @now_ms;