139 lines
3.3 KiB
Rust
139 lines
3.3 KiB
Rust
use axum::{
|
|
routing::{get, post},
|
|
Router,
|
|
Json,
|
|
extract::Path,
|
|
};
|
|
use serde::{Deserialize, Serialize};
|
|
|
|
pub fn routes() -> Router {
|
|
Router::new()
|
|
.route("/assets", get(get_assets))
|
|
.route("/orderbook/:asset", get(get_orderbook))
|
|
.route("/orders", post(create_order))
|
|
.route("/trades", get(get_trades))
|
|
}
|
|
|
|
#[derive(Serialize)]
|
|
struct Asset {
|
|
id: String,
|
|
name: String,
|
|
symbol: String,
|
|
price: String,
|
|
volume_24h: String,
|
|
change_24h: String,
|
|
}
|
|
|
|
async fn get_assets() -> Json<Vec<Asset>> {
|
|
// TODO: 实现真实的资产列表查询
|
|
Json(vec![
|
|
Asset {
|
|
id: "asset1".to_string(),
|
|
name: "房产Token A".to_string(),
|
|
symbol: "RWA-A".to_string(),
|
|
price: "1000.00".to_string(),
|
|
volume_24h: "50000.00".to_string(),
|
|
change_24h: "+2.5%".to_string(),
|
|
},
|
|
Asset {
|
|
id: "asset2".to_string(),
|
|
name: "艺术品Token B".to_string(),
|
|
symbol: "RWA-B".to_string(),
|
|
price: "500.00".to_string(),
|
|
volume_24h: "30000.00".to_string(),
|
|
change_24h: "-1.2%".to_string(),
|
|
},
|
|
])
|
|
}
|
|
|
|
#[derive(Serialize)]
|
|
struct OrderBook {
|
|
asset: String,
|
|
bids: Vec<Order>,
|
|
asks: Vec<Order>,
|
|
}
|
|
|
|
#[derive(Serialize)]
|
|
struct Order {
|
|
price: String,
|
|
amount: String,
|
|
total: String,
|
|
}
|
|
|
|
async fn get_orderbook(Path(asset): Path<String>) -> Json<OrderBook> {
|
|
// TODO: 实现真实的订单簿查询
|
|
Json(OrderBook {
|
|
asset,
|
|
bids: vec![
|
|
Order {
|
|
price: "999.00".to_string(),
|
|
amount: "10.00".to_string(),
|
|
total: "9990.00".to_string(),
|
|
},
|
|
Order {
|
|
price: "998.00".to_string(),
|
|
amount: "20.00".to_string(),
|
|
total: "19960.00".to_string(),
|
|
},
|
|
],
|
|
asks: vec![
|
|
Order {
|
|
price: "1001.00".to_string(),
|
|
amount: "15.00".to_string(),
|
|
total: "15015.00".to_string(),
|
|
},
|
|
Order {
|
|
price: "1002.00".to_string(),
|
|
amount: "25.00".to_string(),
|
|
total: "25050.00".to_string(),
|
|
},
|
|
],
|
|
})
|
|
}
|
|
|
|
#[derive(Deserialize)]
|
|
struct CreateOrderRequest {
|
|
asset: String,
|
|
order_type: String, // "buy" or "sell"
|
|
price: String,
|
|
amount: String,
|
|
}
|
|
|
|
#[derive(Serialize)]
|
|
struct CreateOrderResponse {
|
|
order_id: String,
|
|
status: String,
|
|
}
|
|
|
|
async fn create_order(Json(_req): Json<CreateOrderRequest>) -> Json<CreateOrderResponse> {
|
|
// TODO: 实现真实的订单创建逻辑
|
|
Json(CreateOrderResponse {
|
|
order_id: "order123".to_string(),
|
|
status: "pending".to_string(),
|
|
})
|
|
}
|
|
|
|
#[derive(Serialize)]
|
|
struct Trade {
|
|
id: String,
|
|
asset: String,
|
|
price: String,
|
|
amount: String,
|
|
timestamp: i64,
|
|
trade_type: String,
|
|
}
|
|
|
|
async fn get_trades() -> Json<Vec<Trade>> {
|
|
// TODO: 实现真实的交易历史查询
|
|
Json(vec![
|
|
Trade {
|
|
id: "trade1".to_string(),
|
|
asset: "RWA-A".to_string(),
|
|
price: "1000.00".to_string(),
|
|
amount: "5.00".to_string(),
|
|
timestamp: 1708012800,
|
|
trade_type: "buy".to_string(),
|
|
},
|
|
])
|
|
}
|