use actix_web::{web, App, HttpResponse, HttpServer, Responder};
use dotenv::dotenv;
use log::info;
use rust_wheel::common::util::net::auth_middleware::AuthMiddleware;
use rust_wheel::common::util::net::context_util::ContextUtil;
use rust_wheel::model::user::login_user_info::LoginUserInfo;
async fn get_user_profile(user: LoginUserInfo) -> impl Responder {
info!("获取用户资料: {:?}", user);
HttpResponse::Ok().json(serde_json::json!({
"status": "success",
"data": {
"appId": user.appId,
"userId": user.userId,
"account": user.account,
}
}))
}
async fn get_current_user_info() -> impl Responder {
match ContextUtil::current_user() {
Ok(user) => {
info!("获取当前用户: {:?}", user);
HttpResponse::Ok().json(serde_json::json!({
"status": "success",
"userId": user.userId,
"account": user.account,
}))
}
Err(e) => {
info!("获取用户信息失败: {}", e);
HttpResponse::Unauthorized().json(serde_json::json!({
"status": "error",
"message": "未授权或用户信息未在上下文中"
}))
}
}
}
async fn get_user_account(user: LoginUserInfo) -> impl Responder {
HttpResponse::Ok().json(serde_json::json!({
"userId": user.userId,
"account": user.account,
}))
}
async fn health_check() -> impl Responder {
HttpResponse::Ok().json(serde_json::json!({
"status": "healthy"
}))
}
#[actix_web::main]
async fn main() -> std::io::Result<()> {
dotenv().ok();
env_logger::init_from_env(env_logger::Env::new().default_filter_or("info"));
let server_address = "127.0.0.1";
let server_port = 8080;
info!("启动服务器: {}:{}", server_address, server_port);
HttpServer::new(|| {
App::new()
.wrap(AuthMiddleware)
.route("/health", web::get().to(health_check))
.route("/user/profile", web::get().to(get_user_profile))
.route(
"/user/current-info",
web::get().to(get_current_user_info),
)
.route("/user/account", web::get().to(get_user_account))
})
.bind(format!("{}:{}", server_address, server_port))?
.run()
.await
}