fix: check-members.sh兼容生产库旧字段名(is_paid/paid_expires_at)
This commit is contained in:
@@ -105,6 +105,33 @@ OVERVIEW=$(psql_exec "$SQL_OVERVIEW") || {
|
|||||||
|
|
||||||
IFS='|' read -r total_users total_members active_members expired_members permanent_members expiring_7d expiring_30d <<< "$OVERVIEW"
|
IFS='|' read -r total_users total_members active_members expired_members permanent_members expiring_7d expiring_30d <<< "$OVERVIEW"
|
||||||
|
|
||||||
|
# 如果新字段名(is_member)查不到,用旧字段名(is_paid)重查
|
||||||
|
if [ -z "$total_members" ] || [ "$total_members" = "0" ] && [ "$total_users" != "0" ]; then
|
||||||
|
SQL_OVERVIEW_OLD=$(cat <<'SQL'
|
||||||
|
SELECT
|
||||||
|
COUNT(*) AS total_users,
|
||||||
|
COUNT(*) FILTER (WHERE is_paid = true) AS total_members,
|
||||||
|
COUNT(*) FILTER (WHERE is_paid = true AND paid_expires_at > NOW()) AS active_members,
|
||||||
|
COUNT(*) FILTER (WHERE is_paid = true AND paid_expires_at <= NOW()) AS expired_members,
|
||||||
|
COUNT(*) FILTER (WHERE is_paid = true AND paid_expires_at IS NULL) AS permanent_members,
|
||||||
|
COUNT(*) FILTER (WHERE is_paid = true
|
||||||
|
AND paid_expires_at IS NOT NULL
|
||||||
|
AND paid_expires_at > NOW()
|
||||||
|
AND paid_expires_at <= NOW() + INTERVAL '7 days') AS expiring_7d,
|
||||||
|
COUNT(*) FILTER (WHERE is_paid = true
|
||||||
|
AND paid_expires_at IS NOT NULL
|
||||||
|
AND paid_expires_at > NOW()
|
||||||
|
AND paid_expires_at <= NOW() + INTERVAL '30 days') AS expiring_30d
|
||||||
|
FROM users;
|
||||||
|
SQL
|
||||||
|
)
|
||||||
|
OVERVIEW=$(psql_exec "$SQL_OVERVIEW_OLD")
|
||||||
|
IFS='|' read -r total_users total_members active_members expired_members permanent_members expiring_7d expiring_30d <<< "$OVERVIEW"
|
||||||
|
USE_OLD_COLS=true
|
||||||
|
else
|
||||||
|
USE_OLD_COLS=false
|
||||||
|
fi
|
||||||
|
|
||||||
# ---- 活跃会员列表 ----
|
# ---- 活跃会员列表 ----
|
||||||
SQL_LIST=$(cat <<'SQL'
|
SQL_LIST=$(cat <<'SQL'
|
||||||
SELECT
|
SELECT
|
||||||
@@ -130,7 +157,34 @@ ORDER BY
|
|||||||
SQL
|
SQL
|
||||||
)
|
)
|
||||||
|
|
||||||
|
if [ "$USE_OLD_COLS" = true ]; then
|
||||||
|
SQL_LIST_OLD=$(cat <<'SQL'
|
||||||
|
SELECT
|
||||||
|
id,
|
||||||
|
COALESCE(openid, 'N/A') AS openid,
|
||||||
|
COALESCE(nickname, CONCAT('用户 #', id)) AS display_name,
|
||||||
|
paid_expires_at::date AS expires_on,
|
||||||
|
CASE
|
||||||
|
WHEN paid_expires_at IS NULL THEN '永久'
|
||||||
|
WHEN paid_expires_at <= NOW() THEN '已过期'
|
||||||
|
ELSE CONCAT('剩 ', EXTRACT(DAY FROM paid_expires_at - NOW()), ' 天')
|
||||||
|
END AS status,
|
||||||
|
CASE
|
||||||
|
WHEN paid_expires_at IS NULL THEN 99999
|
||||||
|
WHEN paid_expires_at <= NOW() THEN -1
|
||||||
|
ELSE EXTRACT(DAY FROM paid_expires_at - NOW())::int
|
||||||
|
END AS days_left
|
||||||
|
FROM users
|
||||||
|
WHERE is_paid = true
|
||||||
|
ORDER BY
|
||||||
|
CASE WHEN paid_expires_at IS NULL THEN 0 ELSE 1 END,
|
||||||
|
paid_expires_at DESC;
|
||||||
|
SQL
|
||||||
|
)
|
||||||
|
MEMBER_LIST=$(psql_exec "$SQL_LIST_OLD")
|
||||||
|
else
|
||||||
MEMBER_LIST=$(psql_exec "$SQL_LIST")
|
MEMBER_LIST=$(psql_exec "$SQL_LIST")
|
||||||
|
fi
|
||||||
|
|
||||||
# ---- 近期到期的活跃会员 ----
|
# ---- 近期到期的活跃会员 ----
|
||||||
SQL_EXPIRING=$(cat <<'SQL'
|
SQL_EXPIRING=$(cat <<'SQL'
|
||||||
|
|||||||
Reference in New Issue
Block a user