fix: insert_weather_data 配额查询使用已重命名的 membership_expires_at 列

This commit is contained in:
2026-07-19 09:52:35 +08:00
parent 51752f2d4d
commit 941a8e5350

View File

@@ -13,7 +13,8 @@ pub async fn insert_weather_data(pool: &PgPool, weather_data: &WeatherData, user
#[derive(FromRow)] #[derive(FromRow)]
struct UserQuota { struct UserQuota {
is_member: bool, is_member: bool,
paid_expires_at: Option<chrono::DateTime<Utc>>, #[sqlx(rename = "membership_expires_at")]
membership_expires_at: Option<chrono::DateTime<Utc>>,
data_count: i64, data_count: i64,
} }
@@ -21,7 +22,7 @@ pub async fn insert_weather_data(pool: &PgPool, weather_data: &WeatherData, user
r#" r#"
SELECT SELECT
u.is_member, u.is_member,
u.paid_expires_at, u.membership_expires_at,
(SELECT COUNT(*) FROM weather_data w WHERE w.user_id = $1)::BIGINT AS data_count (SELECT COUNT(*) FROM weather_data w WHERE w.user_id = $1)::BIGINT AS data_count
FROM users u FROM users u
WHERE u.id = $1 WHERE u.id = $1
@@ -33,7 +34,7 @@ pub async fn insert_weather_data(pool: &PgPool, weather_data: &WeatherData, user
.map_err(|e| AppError::Database(format!("查询用户配额失败: {}", e)))? .map_err(|e| AppError::Database(format!("查询用户配额失败: {}", e)))?
.ok_or_else(|| AppError::NotFound("用户不存在".to_string()))?; .ok_or_else(|| AppError::NotFound("用户不存在".to_string()))?;
let is_active_member = quota.is_member && quota.paid_expires_at.is_none_or(|expires| expires > Utc::now()); let is_active_member = quota.is_member && quota.membership_expires_at.is_none_or(|expires| expires > Utc::now());
// 维护模式:非会员使用更高的临时限额,防止资源滥用 // 维护模式:非会员使用更高的临时限额,防止资源滥用
let is_maintenance = std::env::var("PAYMENT_MAINTENANCE_MODE").ok() == Some("true".to_string()); let is_maintenance = std::env::var("PAYMENT_MAINTENANCE_MODE").ok() == Some("true".to_string());