87 lines
3.7 KiB
SQL
87 lines
3.7 KiB
SQL
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;
|