yumi-java/sql/20260506_likei_google_product_config.sql
2026-05-06 15:06:50 +08:00

169 lines
4.7 KiB
SQL

-- LIKEI Google Play in-app product configs.
-- This script is idempotent for the two product_package values below:
-- it keeps one row per sys_origin + platform + product_package, updates it,
-- removes duplicate rows for those packages, and inserts missing rows.
--
-- Production LIKEI regions verified from mongo-1 Mongo sys_region_config:
-- 7455586935705044691 Pakistan - 03
-- 2047598855125528577 Pakistan - rolex
-- 2046578237923979266 Europe Region
-- 2046488527570530306 Africa Region
-- 2046067717605224449 Southeast Asia Region
-- 2046067036517363714 Middle East Region
-- 2046066409959649281 Turkey Region
-- 2045389832842178561 South Asia
-- 69d88849bdbcc07ebc3f118c Default
--
-- For production, confirm the LIKEI region ids in Mongo first:
-- db.sys_region_config.find(
-- {sysOrigin: "LIKEI", del: false},
-- {_id: 1, regionName: 1, regionCode: 1}
-- )
-- If production has different region ids, replace @target_regions before running.
START TRANSACTION;
SET @sys_origin := CONVERT('LIKEI' USING utf8mb4) COLLATE utf8mb4_0900_ai_ci;
SET @platform := CONVERT('GOOGLE' USING utf8mb4) COLLATE utf8mb4_0900_ai_ci;
SET @obsolete_product_package := CONVERT('coins.800000' USING utf8mb4) COLLATE utf8mb4_0900_ai_ci;
SET @target_regions := CONVERT('7455586935705044691,2047598855125528577,2046578237923979266,2046488527570530306,2046067717605224449,2046067036517363714,2046066409959649281,2045389832842178561,69d88849bdbcc07ebc3f118c' USING utf8mb4) COLLATE utf8mb4_0900_ai_ci;
SET @country_codes := NULL;
SET @operator_id := 0;
CREATE TEMPORARY TABLE tmp_likei_google_product_config (
row_no INT NOT NULL PRIMARY KEY,
product_package VARCHAR(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL,
unit_price DECIMAL(10, 2) NOT NULL,
obtain_candy DECIMAL(10, 2) NOT NULL,
reward_candy DECIMAL(10, 2) NOT NULL DEFAULT 0,
sort_no INT NOT NULL,
description VARCHAR(150) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL
);
INSERT INTO tmp_likei_google_product_config (
row_no,
product_package,
unit_price,
obtain_candy,
reward_candy,
sort_no,
description
) VALUES
(1, 'coins.80000', 1.00, 80000.00, 0.00, 1, '80000 coins'),
(2, 'coins.240000', 3.00, 240000.00, 0.00, 2, '240000 coins');
DELETE FROM sys_product_config_v2
WHERE sys_origin = @sys_origin
AND platform = @platform
AND product_package = @obsolete_product_package;
DELETE FROM sys_product_config_package
WHERE product_package = @obsolete_product_package;
CREATE TEMPORARY TABLE tmp_likei_google_product_keep AS
SELECT
t.product_package,
MIN(t.id) AS keep_id
FROM sys_product_config_v2 t
JOIN tmp_likei_google_product_config s
ON s.product_package = t.product_package
WHERE t.sys_origin = @sys_origin
AND t.platform = @platform
GROUP BY t.product_package;
DELETE t
FROM sys_product_config_v2 t
JOIN tmp_likei_google_product_keep k
ON k.product_package = t.product_package
WHERE t.sys_origin = @sys_origin
AND t.platform = @platform
AND t.id <> k.keep_id;
UPDATE sys_product_config_v2 t
JOIN tmp_likei_google_product_keep k
ON k.keep_id = t.id
JOIN tmp_likei_google_product_config s
ON s.product_package = k.product_package
SET
t.description = s.description,
t.unit_price = s.unit_price,
t.obtain_candy = s.obtain_candy,
t.reward_candy = s.reward_candy,
t.regions = @target_regions,
t.country_codes = @country_codes,
t.sort = s.sort_no,
t.is_showcase = 1,
t.update_time = CURRENT_TIMESTAMP,
t.update_user = @operator_id;
SET @next_product_config_id := (
SELECT COALESCE(MAX(id), 0)
FROM sys_product_config_v2
);
INSERT INTO sys_product_config_v2 (
id,
sys_origin,
description,
product_package,
unit_price,
obtain_candy,
reward_candy,
platform,
regions,
country_codes,
sort,
is_showcase,
create_time,
update_time,
create_user,
update_user
)
SELECT
(@next_product_config_id := @next_product_config_id + 1) AS id,
@sys_origin,
s.description,
s.product_package,
s.unit_price,
s.obtain_candy,
s.reward_candy,
@platform,
@target_regions,
@country_codes,
s.sort_no,
1,
CURRENT_TIMESTAMP,
CURRENT_TIMESTAMP,
@operator_id,
@operator_id
FROM tmp_likei_google_product_config s
LEFT JOIN tmp_likei_google_product_keep k
ON k.product_package = s.product_package
WHERE k.keep_id IS NULL;
SELECT
id,
sys_origin,
product_package,
unit_price,
obtain_candy,
reward_candy,
platform,
regions,
country_codes,
sort,
is_showcase
FROM sys_product_config_v2
WHERE sys_origin = @sys_origin
AND platform = @platform
AND product_package IN (
SELECT product_package
FROM tmp_likei_google_product_config
)
ORDER BY sort, unit_price;
DROP TEMPORARY TABLE IF EXISTS tmp_likei_google_product_keep;
DROP TEMPORARY TABLE IF EXISTS tmp_likei_google_product_config;
COMMIT;