feat: 添加 GET /api/payment/orders 接口,返回用户订单记录
This commit is contained in:
20
src/db.rs
20
src/db.rs
@@ -317,6 +317,26 @@ pub async fn update_user_profile(
|
|||||||
// ===== 支付系统 DB 函数 =====
|
// ===== 支付系统 DB 函数 =====
|
||||||
|
|
||||||
/// 创建待支付订单
|
/// 创建待支付订单
|
||||||
|
pub async fn get_user_orders(
|
||||||
|
pool: &PgPool,
|
||||||
|
user_id: i32,
|
||||||
|
) -> Result<Vec<crate::models::PaymentOrder>, AppError> {
|
||||||
|
let rows = sqlx::query_as::<_, crate::models::PaymentOrder>(
|
||||||
|
r#"
|
||||||
|
SELECT id, user_id, order_no, package_type, amount, status, paid_at, expires_at, created_at
|
||||||
|
FROM payment_orders
|
||||||
|
WHERE user_id = $1
|
||||||
|
ORDER BY created_at DESC
|
||||||
|
"#,
|
||||||
|
)
|
||||||
|
.bind(user_id)
|
||||||
|
.fetch_all(pool)
|
||||||
|
.await
|
||||||
|
.map_err(|e| AppError::Database(format!("查询订单失败: {}", e)))?;
|
||||||
|
|
||||||
|
Ok(rows)
|
||||||
|
}
|
||||||
|
|
||||||
pub async fn create_payment_order(
|
pub async fn create_payment_order(
|
||||||
pool: &PgPool,
|
pool: &PgPool,
|
||||||
user_id: i32,
|
user_id: i32,
|
||||||
|
|||||||
@@ -42,6 +42,7 @@ pub use payment::generate_code;
|
|||||||
pub use payment::get_user_quota;
|
pub use payment::get_user_quota;
|
||||||
pub use payment::mock_confirm;
|
pub use payment::mock_confirm;
|
||||||
pub use payment::sync_order;
|
pub use payment::sync_order;
|
||||||
|
pub use payment::get_user_orders;
|
||||||
pub use payment::payment_index;
|
pub use payment::payment_index;
|
||||||
pub use payment::payment_login_status;
|
pub use payment::payment_login_status;
|
||||||
pub use payment::payment_page;
|
pub use payment::payment_page;
|
||||||
|
|||||||
@@ -973,6 +973,28 @@ pub async fn sync_order(
|
|||||||
})))
|
})))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// GET /api/payment/orders — 获取当前用户的订单记录
|
||||||
|
#[get("/api/payment/orders")]
|
||||||
|
pub async fn get_user_orders(
|
||||||
|
pool: web::Data<PgPool>,
|
||||||
|
claims: web::ReqData<Claims>,
|
||||||
|
) -> Result<HttpResponse, AppError> {
|
||||||
|
let orders = db::get_user_orders(pool.get_ref(), claims.user_id).await?;
|
||||||
|
|
||||||
|
Ok(HttpResponse::Ok().json(serde_json::json!({
|
||||||
|
"success": true,
|
||||||
|
"data": orders.iter().map(|o| serde_json::json!({
|
||||||
|
"order_no": o.order_no,
|
||||||
|
"package_type": o.package_type,
|
||||||
|
"amount": o.amount,
|
||||||
|
"status": o.status,
|
||||||
|
"paid_at": o.paid_at,
|
||||||
|
"expires_at": o.expires_at,
|
||||||
|
"created_at": o.created_at,
|
||||||
|
})).collect::<Vec<_>>()
|
||||||
|
})))
|
||||||
|
}
|
||||||
|
|
||||||
/// GET /api/user/quota
|
/// GET /api/user/quota
|
||||||
#[get("/api/user/quota")]
|
#[get("/api/user/quota")]
|
||||||
pub async fn get_user_quota(
|
pub async fn get_user_quota(
|
||||||
|
|||||||
@@ -21,7 +21,7 @@ use handlers::{
|
|||||||
admin_get_user, admin_update_user_payment, add_favorite, alipay_notify, alipay_pay_page,
|
admin_get_user, admin_update_user_payment, add_favorite, alipay_notify, alipay_pay_page,
|
||||||
create_order, delete_weather, generate_code, generate_temp_token_handler, get_current_user_profile,
|
create_order, delete_weather, generate_code, generate_temp_token_handler, get_current_user_profile,
|
||||||
get_favorites, get_user_quota, get_weather_brief, get_weather_details,
|
get_favorites, get_user_quota, get_weather_brief, get_weather_details,
|
||||||
health_check, login, mock_login, mock_confirm, sync_order, payment_index, payment_login_status, payment_page, payment_success,
|
get_user_orders, health_check, login, mock_login, mock_confirm, sync_order, payment_index, payment_login_status, payment_page, payment_success,
|
||||||
post_weather_data,
|
post_weather_data,
|
||||||
refresh_token, remove_favorite, root, save_user_profile, serve_static_files,
|
refresh_token, remove_favorite, root, save_user_profile, serve_static_files,
|
||||||
web_generate_login_code, web_login_confirm, web_login_auto_confirm,
|
web_generate_login_code, web_login_confirm, web_login_auto_confirm,
|
||||||
@@ -97,6 +97,7 @@ fn create_server_config(
|
|||||||
.service(create_order)
|
.service(create_order)
|
||||||
.service(mock_confirm)
|
.service(mock_confirm)
|
||||||
.service(sync_order)
|
.service(sync_order)
|
||||||
|
.service(get_user_orders)
|
||||||
.service(get_user_quota)
|
.service(get_user_quota)
|
||||||
.service(get_favorites)
|
.service(get_favorites)
|
||||||
.service(add_favorite)
|
.service(add_favorite)
|
||||||
|
|||||||
Reference in New Issue
Block a user