Files
asd-backend/src/models.rs

187 lines
5.1 KiB
Rust
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
use chrono::NaiveDate;
use serde::{Deserialize, Serialize};
use sqlx::FromRow;
// 定义JWT载荷结构体
#[derive(Debug, Serialize, Deserialize, Clone)]
pub struct Claims {
// 标准字段:过期时间(必须)
pub exp: i64, // 时间戳(秒)
// 标准字段:签发时间
pub iat: i64,
// 自定义字段用户ID根据业务需求添加
pub user_id: i32,
// 自定义字段openid可选
pub openid: String,
// 自定义字段user_ytpe
pub user_type: i32,
}
#[derive(Debug, Deserialize)]
pub struct WeChatLoginRequest {
pub code: String,
}
#[derive(Debug, Deserialize)]
pub struct WeChatApiResponse {
pub openid: Option<String>,
pub errcode: Option<i32>,
pub errmsg: Option<String>,
}
#[derive(Debug, Serialize)]
pub struct ErrorResponse {
pub error: String,
pub errcode: Option<i32>,
pub errmsg: Option<String>,
}
// 天气数据结构体(修改后)
#[derive(Debug, Deserialize, Serialize, FromRow)] // 添加 FromRow 派生
pub struct WeatherData {
// 添加 id 字段(数据库中应该有这个主键)
#[serde(skip_deserializing)] // 1. 反序列化时忽略该字段;
#[sqlx(rename = "id")] // 数据库表的 id 列(自增主键),查询映射时使用
pub id: i32,
#[serde(rename = "areaType")]
#[sqlx(rename = "areatype")] // 数据库列名是小写下划线式
pub area_type: String,
#[serde(rename = "assignmentnumber")]
#[sqlx(rename = "assignmentnumber")]
pub assignment_number: String,
#[serde(rename = "atmosphericStability")]
#[sqlx(rename = "atmosphericstability")]
pub atmospheric_stability: String,
#[serde(rename = "averageWindDirection")]
#[sqlx(rename = "averagewinddirection")]
pub average_wind_direction: f64,
#[serde(rename = "averageWindSpeed")]
#[sqlx(rename = "averagewindspeed")]
pub average_wind_speed: f64,
#[serde(rename = "calculatedwindspeed")]
#[sqlx(rename = "calculatedwindspeed")]
pub calculated_wind_speed: f64,
#[serde(rename = "cloudIndex")]
#[sqlx(rename = "cloudindex")]
pub cloud_index: String,
#[serde(rename = "convertedWindSpeed")]
#[sqlx(rename = "convertedwindspeed")]
pub converted_wind_speed: f64,
pub date: NaiveDate,
#[serde(rename = "daySinceJanFirst")]
#[sqlx(rename = "daysincejanfirst")]
pub day_since_jan_first: i32,
#[serde(rename = "hasMeasuredWindSpeed")]
#[sqlx(rename = "hasmeasuredwindspeed")]
pub has_measured_wind_speed: bool,
#[serde(rename = "hours")]
#[sqlx(rename = "hour")] // 数据库中是 hour 字段
pub hours: i32,
#[serde(rename = "inspectiontype")]
#[sqlx(rename = "inspectiontype")]
pub inspection_type: String,
pub latitude: f64,
pub longitude: f64,
#[serde(rename = "lowCloudiness")]
#[sqlx(rename = "lowcloudiness")]
pub low_cloudiness: String,
#[serde(rename = "measuredWindSpeed")]
#[sqlx(rename = "measuredwindspeed")]
pub measured_wind_speed: f64,
#[serde(rename = "measurementHeight")]
#[sqlx(rename = "measurementheight")]
pub measurement_height: f64,
#[serde(rename = "min")]
#[sqlx(rename = "min")]
pub min: i32,
pub openid: String,
#[serde(rename = "overallCloudiness")]
#[sqlx(rename = "overallcloudiness")]
pub overall_cloudiness: String,
#[serde(rename = "overallSuitability")]
#[sqlx(rename = "overallsuitability")]
pub overall_suitability: String,
#[serde(rename = "pointWindSpeed")]
#[sqlx(rename = "pointwindspeed")]
pub point_wind_speed: f64,
#[serde(rename = "solarDeclination")]
#[sqlx(rename = "solardeclination")]
pub solar_declination: f64,
#[serde(rename = "solarRadiationLevel")]
#[sqlx(rename = "solarradiationlevel")]
pub solar_radiation_level: f64,
#[serde(rename = "suitabilityDegree")]
#[sqlx(rename = "suitabilitydegree")]
pub suitability_degree: String,
#[serde(rename = "sunAltitude")]
#[sqlx(rename = "sunaltitude")]
pub sun_altitude: f64,
pub theta: f64,
pub title: String,
#[serde(rename = "windDirection")]
#[sqlx(rename = "winddirection")]
pub wind_direction: Vec<f64>,
#[serde(rename = "windDirectionStandardDeviation")]
#[sqlx(rename = "winddirectionstandarddeviation")]
pub wind_direction_standard_deviation: f64,
#[serde(rename = "windDirectionSuitability")]
#[sqlx(rename = "winddirectionsuitability")]
pub wind_direction_suitability: String,
#[serde(rename = "windSpeed")]
#[sqlx(rename = "windspeed")]
pub wind_speed: Vec<f64>,
#[serde(rename = "windSpeedSuitability")]
#[sqlx(rename = "windspeedsuitability")]
pub wind_speed_suitability: String,
}
#[derive(Debug, Serialize, FromRow)]
pub struct User {
pub id: i32,
#[serde(rename = "name")]
#[sqlx(rename = "name")]
pub name: String,
#[sqlx(rename = "openid")]
pub openid: Option<String>,
#[sqlx(rename = "phone")]
pub phone: Option<String>,
#[serde(rename = "type")]
#[sqlx(rename = "type")]
pub user_type: i32,
#[serde(rename = "desc")]
#[sqlx(rename = "desc")]
pub description: Option<String>,
}