|
|
@@ -43,62 +43,6 @@ pub struct Response {
|
|
|
code: i32,
|
|
|
}
|
|
|
|
|
|
-#[get("/rk/get_real_time_rank_list")]
|
|
|
-async fn get_real_time_rank_list(query: web::Query<RankQuery>) -> impl Responder {
|
|
|
- // ============================= 参数校验部分 =========================================
|
|
|
- if !query.validate() {
|
|
|
- let response = Response {
|
|
|
- query: serde_json::to_value(&query.into_inner()).unwrap(),
|
|
|
- msg: Some("查询内容有误,必须传递的参数:[exchange]".to_string()),
|
|
|
- code: 500,
|
|
|
- data: Value::Null,
|
|
|
- };
|
|
|
-
|
|
|
- let json_string = serde_json::to_string(&response).unwrap();
|
|
|
- return HttpResponse::Ok().content_type("application/json").body(json_string);
|
|
|
- }
|
|
|
- let supportive_exchange = vec!["gate_usdt_swap", "coinex_usdt_swap", "binance_usdt_swap", "phemex_usdt_swap", "mexc_usdt_swap", "bybit_usdt_swap", "bitget_usdt_swap", "gate_coin_spot"];
|
|
|
- let exchange = query.exchange.clone().unwrap().clone();
|
|
|
- if !supportive_exchange.contains(&exchange.as_str()) {
|
|
|
- let response = Response {
|
|
|
- query: serde_json::to_value(&query.into_inner()).unwrap(),
|
|
|
- msg: Some("查询内容有误,exchange当前仅支持:[gate_usdt_swap, coinex_usdt_swap, binance_usdt_swap, phemex_usdt_swap, mexc_usdt_swap, bybit_usdt_swap, bitget_usdt_swap, gate_coin_spot]".to_string()),
|
|
|
- code: 500,
|
|
|
- data: Value::Null,
|
|
|
- };
|
|
|
-
|
|
|
- let json_string = serde_json::to_string(&response).unwrap();
|
|
|
- return HttpResponse::Ok().content_type("application/json").body(json_string);
|
|
|
- }
|
|
|
-
|
|
|
- // 计算msv
|
|
|
- let end_timestamp = Utc::now().timestamp_millis();
|
|
|
- let start_timestamp = end_timestamp - 60 * 1000 * 60 * 4;
|
|
|
-
|
|
|
- let symbols = get_symbols_by_exchange(exchange.as_str());
|
|
|
-
|
|
|
- let indicator_map: Mutex<HashMap<String, Indicators>> = Mutex::new(HashMap::new());
|
|
|
- for symbol in symbols.as_array().unwrap() {
|
|
|
- let trades_value = collect_special_trades_json(start_timestamp, end_timestamp, exchange.as_str(), &symbol.as_str().unwrap()).await;
|
|
|
- let trades = parse_json_to_trades(trades_value);
|
|
|
- let msv = generate_msv_by_trades(trades, dec!(50), vec![], start_timestamp, end_timestamp);
|
|
|
- let mut map = indicator_map.lock().await;
|
|
|
- map.insert(symbol.as_str().unwrap().to_string(), msv);
|
|
|
- }
|
|
|
- // 逻辑执行部分
|
|
|
- let rst = rank::generate_rank_by_indicator_map(&indicator_map.lock().await, 2);
|
|
|
-
|
|
|
- let response = Response {
|
|
|
- query: serde_json::to_value(&query.into_inner()).unwrap(),
|
|
|
- msg: Some("查询成功".to_string()),
|
|
|
- code: 200,
|
|
|
- data: rst,
|
|
|
- };
|
|
|
-
|
|
|
- let json_string = serde_json::to_string(&response).unwrap();
|
|
|
- HttpResponse::Ok().content_type("application/json").body(json_string)
|
|
|
-}
|
|
|
-
|
|
|
#[get("/rk/get_rank_list")]
|
|
|
async fn get_rank_list(query: web::Query<RankQuery>) -> impl Responder {
|
|
|
// ============================= 参数校验部分 =========================================
|
|
|
@@ -218,7 +162,6 @@ pub fn run_server(port: u32, running: Arc<AtomicBool>) {
|
|
|
App::new()
|
|
|
.wrap(cors)
|
|
|
.service(get_rank_list)
|
|
|
- .service(get_real_time_rank_list)
|
|
|
.service(get_exchanges)
|
|
|
})
|
|
|
.bind(addr)
|