spark-server/deploy/popadmin/price-package-patch/apply_package_price.sh
DESKTOP-L8OUL9F\gfl0034 5d05eb0804 chore(deploy): geo snippet、popadmin 补丁与订阅包名脚本
补充 world geo nginx snippet、OpenAPI/geo 热更新脚本,以及 popadmin package_name 定价补丁,便于运维对齐。

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-30 09:17:18 +08:00

71 lines
2.9 KiB
Bash

#!/bin/bash
# Hot-patch wyrs-admin jar: MembershipPrice.packageName + package filter.
# Does NOT touch JWT secrets / env files.
set -euo pipefail
ROOT=/tmp/price-patch
JAR=/opt/wyrs-admin/remote-control-1.0.0.jar
STAMP=$(date +%Y%m%d%H%M%S)
BACKUP="${JAR}.bak.pricepkg.${STAMP}"
WORK="$ROOT/work"
OUT="$ROOT/classes-out"
SRC="$ROOT/compile-src"
rm -rf "$WORK" "$OUT" "$SRC"
mkdir -p "$WORK" "$OUT" "$SRC/com/wyrs/admin/entity" \
"$SRC/com/wyrs/admin/service/config" \
"$SRC/com/wyrs/admin/util" \
"$SRC/com/wyrs/admin/web"
cp "$ROOT/upload/MembershipPrice.java" "$SRC/com/wyrs/admin/entity/"
cp "$ROOT/upload/PricesConfigService.java" "$SRC/com/wyrs/admin/service/config/"
cp "$ROOT/upload/PackageNameContext.java" "$SRC/com/wyrs/admin/util/"
cp "$ROOT/upload/PackageNameRequestFilter.java" "$SRC/com/wyrs/admin/web/"
cd "$WORK"
jar xf "$JAR"
# classpath
CP="BOOT-INF/classes"
while IFS= read -r j; do CP="$CP:$j"; done < <(find BOOT-INF/lib -name '*.jar' | sort)
echo "Compiling..."
javac --release 17 -encoding UTF-8 -cp "$CP" -d "$OUT" \
"$SRC/com/wyrs/admin/entity/MembershipPrice.java" \
"$SRC/com/wyrs/admin/util/PackageNameContext.java" \
"$SRC/com/wyrs/admin/web/PackageNameRequestFilter.java" \
"$SRC/com/wyrs/admin/service/config/PricesConfigService.java"
echo "Injecting classes into jar..."
cp -a "$JAR" "$BACKUP"
# remove old builder nested class if present; our builder is inner static
rm -f BOOT-INF/classes/com/wyrs/admin/entity/MembershipPrice\$MembershipPriceBuilder.class
mkdir -p BOOT-INF/classes/com/wyrs/admin/entity \
BOOT-INF/classes/com/wyrs/admin/service/config \
BOOT-INF/classes/com/wyrs/admin/util \
BOOT-INF/classes/com/wyrs/admin/web
cp -a "$OUT/com/wyrs/admin/entity/"*.class BOOT-INF/classes/com/wyrs/admin/entity/
cp -a "$OUT/com/wyrs/admin/service/config/"*.class BOOT-INF/classes/com/wyrs/admin/service/config/
cp -a "$OUT/com/wyrs/admin/util/"*.class BOOT-INF/classes/com/wyrs/admin/util/
cp -a "$OUT/com/wyrs/admin/web/"*.class BOOT-INF/classes/com/wyrs/admin/web/
jar uf "$JAR" \
BOOT-INF/classes/com/wyrs/admin/entity/MembershipPrice.class \
BOOT-INF/classes/com/wyrs/admin/entity/MembershipPrice\$MembershipPriceBuilder.class \
BOOT-INF/classes/com/wyrs/admin/service/config/PricesConfigService.class \
BOOT-INF/classes/com/wyrs/admin/service/config/PricesConfigService\$1.class \
BOOT-INF/classes/com/wyrs/admin/util/PackageNameContext.class \
BOOT-INF/classes/com/wyrs/admin/web/PackageNameRequestFilter.class
# PricesConfigService may produce $1 for TypeReference anon
if [ -f BOOT-INF/classes/com/wyrs/admin/service/config/PricesConfigService\$1.class ]; then
jar uf "$JAR" BOOT-INF/classes/com/wyrs/admin/service/config/PricesConfigService\$1.class
fi
echo "Restarting wyrs-admin (JWT env untouched)..."
systemctl restart wyrs-admin
sleep 8
systemctl is-active wyrs-admin
journalctl -u wyrs-admin -n 40 --no-pager | tail -40
echo "BACKUP=$BACKUP"
echo "DONE"