#!/usr/bin/env bash set -euo pipefail # 清理本地 Docker MySQL 的幸运礼物运行态数据,不删除后台发布的 lucky_gift_rule_versions / stage_tiers。 # 常用: # APP_CODE=lalu ./tools/reset-lucky-gift-local-data.sh # APP_CODE=lalu USER_ID=123456 POOL_ID=lucky_100 ./tools/reset-lucky-gift-local-data.sh APP_CODE="${APP_CODE:-lalu}" USER_ID="${USER_ID:-}" POOL_ID="${POOL_ID:-}" RESET_SHARED="${RESET_SHARED:-1}" MYSQL_CONTAINER="${MYSQL_CONTAINER:-hyapp-mysql}" if [[ -n "$USER_ID" && ! "$USER_ID" =~ ^[0-9]+$ ]]; then echo "USER_ID must be numeric: $USER_ID" >&2 exit 2 fi sql_string() { local value="${1//\\/\\\\}" value="${value//\'/\'\'}" printf "'%s'" "$value" } APP_SQL="$(sql_string "$APP_CODE")" USER_SQL="$(sql_string "$USER_ID")" POOL_SQL="$(sql_string "$POOL_ID")" RESET_SHARED_SQL="$(sql_string "$RESET_SHARED")" docker exec -i "$MYSQL_CONTAINER" mysql -uroot -proot < '' UNION SELECT 'room', CONCAT(pool_id, ':', room_id) FROM local_lucky_reset_draws WHERE run_id = @run_id AND room_id <> '' UNION SELECT 'anchor', CONCAT(pool_id, ':', anchor_id) FROM local_lucky_reset_draws WHERE run_id = @run_id AND anchor_id <> '' ) s ON s.scope_type = rc.scope_type AND s.scope_id = rc.scope_id WHERE rc.app_code = @app_code AND (@user_id = '' OR s.scope_id IS NOT NULL) AND (@pool_id = '' OR rc.scope_id = @pool_id OR rc.scope_id LIKE CONCAT(@pool_id, ':%')); DELETE FROM hyapp_activity.lucky_rtp_windows WHERE @reset_shared = '1' AND app_code = @app_code AND (@pool_id = '' OR scope_id = @pool_id OR scope_id LIKE CONCAT(@pool_id, ':%')); DELETE FROM hyapp_activity.lucky_pools WHERE @reset_shared = '1' AND app_code = @app_code AND (@pool_id = '' OR scope_id = @pool_id OR scope_id LIKE CONCAT(@pool_id, ':%')); DELETE FROM hyapp_activity.lucky_room_atmosphere_pools WHERE @reset_shared = '1' AND app_code = @app_code AND (@pool_id = '' OR room_id IN (SELECT room_id FROM local_lucky_reset_draws WHERE run_id = @run_id)); DELETE FROM hyapp_activity.lucky_activity_budgets WHERE @reset_shared = '1' AND app_code = @app_code AND (@pool_id = '' OR gift_id = @pool_id); COMMIT; SELECT JSON_OBJECT( 'app_code', @app_code, 'user_id', @user_id, 'pool_id', @pool_id, 'reset_shared', @reset_shared, 'remaining_draw_records', (SELECT COUNT(*) FROM hyapp_activity.lucky_draw_records WHERE app_code = @app_code AND (@user_id = '' OR user_id = CAST(NULLIF(@user_id, '') AS UNSIGNED)) AND (@pool_id = '' OR pool_id = @pool_id)), 'remaining_user_states', (SELECT COUNT(*) FROM hyapp_activity.lucky_user_states WHERE app_code = @app_code AND (@user_id = '' OR user_id = CAST(NULLIF(@user_id, '') AS UNSIGNED)) AND (@pool_id = '' OR gift_id = @pool_id)) ) AS result; DELETE FROM local_lucky_reset_wallet_txs WHERE run_id = @run_id; DELETE FROM local_lucky_reset_draws WHERE run_id = @run_id; SQL