修改了convertedwindspeed为float
This commit is contained in:
42
src/main.rs
42
src/main.rs
@@ -144,46 +144,30 @@ async fn login(
|
||||
}
|
||||
};
|
||||
|
||||
// 检查用户是否已存在,不存在则创建
|
||||
let query = r#"
|
||||
// 【核心修改】使用标准的 UPSERT 语法,原子性地创建或获取用户
|
||||
let upsert_query = r#"
|
||||
INSERT INTO users (openid, name, type)
|
||||
VALUES ($1, left($1, 8), 2)
|
||||
ON CONFLICT (openid) DO NOTHING
|
||||
ON CONFLICT (openid) DO UPDATE SET
|
||||
-- 这里可以更新一些需要变更的字段,例如最后登录时间
|
||||
-- 如果没有需要更新的,可以使用一个技巧来确保 RETURNING 总是有效
|
||||
id = users.id
|
||||
RETURNING id
|
||||
"#;
|
||||
"#;
|
||||
|
||||
let user_id = match sqlx::query_as::<_, (i32,)>(query)
|
||||
// 使用 fetch_one,因为我们确定这个查询总能返回一个 id
|
||||
let user_id = match sqlx::query_as::<_, (i32,)>(upsert_query)
|
||||
.bind(&openid)
|
||||
.fetch_optional(pool.get_ref())
|
||||
.await
|
||||
{
|
||||
Ok(Some((id,))) => {
|
||||
info!("用户已存在,用户ID: {}", id);
|
||||
id
|
||||
}
|
||||
Ok(None) => {
|
||||
// 新用户创建成功,查询ID
|
||||
match sqlx::query_as::<_, (i32,)>("SELECT id FROM users WHERE openid = $1")
|
||||
.bind(&openid)
|
||||
.fetch_one(pool.get_ref())
|
||||
.fetch_one(pool.get_ref()) // <--- 注意这里是 fetch_one
|
||||
.await
|
||||
{
|
||||
Ok((id,)) => {
|
||||
info!("新用户创建成功,用户ID: {}", id);
|
||||
// 无论是新用户还是老用户,都成功获取了 ID
|
||||
info!("用户登录/注册成功,用户ID: {}", id);
|
||||
id
|
||||
}
|
||||
Err(e) => {
|
||||
error!("新用户创建后查询ID失败: {}", e);
|
||||
return HttpResponse::InternalServerError().json(ErrorResponse {
|
||||
error: "创建用户后查询ID失败".to_string(),
|
||||
errcode: Some(500),
|
||||
errmsg: Some(e.to_string()),
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
Err(e) => {
|
||||
error!("用户查询/创建失败: {}", e);
|
||||
error!("用户信息处理失败: {}", e);
|
||||
return HttpResponse::InternalServerError().json(ErrorResponse {
|
||||
error: "用户信息处理失败".to_string(),
|
||||
errcode: Some(500),
|
||||
|
||||
@@ -169,10 +169,9 @@ pub struct WeatherData {
|
||||
|
||||
// --- 以下是修改的重点 ---
|
||||
// 这些字段在前端是条件性发送的,因此在 Rust 中也必须是可选的
|
||||
|
||||
#[serde(rename = "convertedWindSpeed")]
|
||||
#[sqlx(rename = "convertedwindspeed")]
|
||||
pub converted_wind_speed: Option<i32>, // <-- 修改: i32 -> Option<i32>
|
||||
pub converted_wind_speed: Option<f64>,
|
||||
|
||||
pub date: NaiveDate,
|
||||
|
||||
|
||||
@@ -53,11 +53,11 @@
|
||||
<div class="formula">
|
||||
<h3 onclick="toggleFormula(this)">太阳倾角计算公式:▶</h3>
|
||||
<div class="content" style="display: none;">
|
||||
<p>$\sigma=\begin{bmatrix} 0.006\ 918 & -0.399\ 12 \cos\theta+0.070\ 257& \sin\theta_0 \\ 0.006\ 758 & \cos2\theta_0+0.000\ 907 & \sin2\theta_0 \\ 0.002\ 679 & \cos3\theta_0+0.001\ 480 & \sin3\theta_0 \end{bmatrix} \ 180/\pi$</p>
|
||||
<p>$\sigma=\begin{bmatrix} 0.006\ 918 & -0.399\ 912 \cos\theta+0.070\ 257& \sin\theta_0 \\ 0.006\ 758 & \cos2\theta_0+0.000\ 907 & \sin2\theta_0 \\ 0.002\ 679 & \cos3\theta_0+0.001\ 480 & \sin3\theta_0 \end{bmatrix} \ 180/\pi$</p>
|
||||
|
||||
<p>参数说明:</p>
|
||||
<ul>
|
||||
<li class="parameter"><strong>$\theta_0$</strong>:$360d_n / 365$,单位为度(°)</li>
|
||||
<li class="parameter"><strong>$\theta_0$</strong>:$2\pi(n-1)/365$,单位为弧度</li>
|
||||
<li class="parameter"><strong>$d_n$</strong>:一年中的日期序数,0, 1, 2, ..., 364</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
Reference in New Issue
Block a user