From a5fb3cc1007f666bf4ae22e0773930265c123ef3 Mon Sep 17 00:00:00 2001 From: zhushenwudi <55681140@163.com> Date: Thu, 9 Jan 2025 01:19:55 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E8=B0=83=E6=95=B4=E6=9C=8D=E5=8A=A1?= =?UTF-8?q?=E5=99=A8=E6=97=B6=E9=97=B4=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/router/serial_code.rs | 20 +++++++++++++------- src/router/userdata/mod.rs | 9 +++++++-- webui/src/home/Home.jsx | 19 ++++++++++--------- 3 files changed, 30 insertions(+), 18 deletions(-) diff --git a/src/router/serial_code.rs b/src/router/serial_code.rs index 2399746..35e23bb 100644 --- a/src/router/serial_code.rs +++ b/src/router/serial_code.rs @@ -33,9 +33,15 @@ pub fn events(_req: HttpRequest) -> Option { fn extract_number_from_code(code: String, goods: &str) -> Option { if code.starts_with(goods) { - let number_str = &code[code.len()..]; + let number_str = &code[goods.len()..]; match number_str.parse::() { - Ok(number) => Some(number), + Ok(number) => { + if number >= 999999999 { + Some(1) + } else { + Some(number) + } + }, Err(_) => Some(1) } } else { @@ -51,16 +57,16 @@ pub fn serial_code(req: HttpRequest, body: String) -> Option { let mut item_list = array![]; let code = body["input_code"].to_string(); - if let Some(number) = extract_number_from_code(code.clone(), "金币") { + if let Some(number) = extract_number_from_code(code.clone(), "coins") { item_list.push(items::gift_item_basic(1, number, 4, "请亏我全", &mut user)).ok()?; - } else if let Some(number) = extract_number_from_code(code.clone(), "钻石") { + } else if let Some(number) = extract_number_from_code(code.clone(), "gems") { item_list.push(items::gift_item_basic(1, number, 1, "你的UR和我的R", &mut user)).ok()?; - } else if let Some(number) = extract_number_from_code(code.clone(), "练习券") { + } else if let Some(number) = extract_number_from_code(code.clone(), "training") { item_list.push(items::gift_item_basic(16005003, number, 3, "A~A~O!", &mut user)).ok()?; item_list.push(items::gift_item_basic(17001003, number, 3, "A~A~O!", &mut user)).ok()?; - } else if let Some(number) = extract_number_from_code(code.clone(), "活动UR") { + } else if let Some(number) = extract_number_from_code(code.clone(), "UR") { for item in UR_ARRAY { - item_list.push(items::gift_item_basic(item, number, 2, "给你UR", &mut user)).ok()?; + item_list.push(items::gift_item_basic(item, number, 2, "活动UR+1", &mut user)).ok()?; } } else if let Some(number) = extract_number_from_code(code.clone(), "PT") { for item in PT_ARRAY { diff --git a/src/router/userdata/mod.rs b/src/router/userdata/mod.rs index 9ddd35c..57253fa 100644 --- a/src/router/userdata/mod.rs +++ b/src/router/userdata/mod.rs @@ -8,7 +8,7 @@ use base64::{Engine as _, engine::general_purpose}; use crate::router::global; use crate::router::items; use crate::sql::SQLite; -use crate::{include_file, logger}; +use crate::{get_args, include_file, logger}; lazy_static! { static ref DATABASE: SQLite = SQLite::new("userdata.db", setup_tables); @@ -543,6 +543,7 @@ pub fn webui_get_user(token: &str) -> Option { Some(object!{ userdata: get_acc(&login_token), loginbonus: get_acc_loginbonus(&login_token), + server_time_set: get_server_data(&login_token)["server_time_set"].clone(), time: get_server_data(&login_token)["server_time"].clone() }) } @@ -571,7 +572,7 @@ pub fn webui_submit_login_bonus(bonus_id: i64, is_add: bool, token: &str) -> Jso } } -pub fn set_server_time(time: i64, token: &str) -> JsonValue { +pub fn set_server_time(mut time: i64, token: &str) -> JsonValue { if time as u64 > global::timestamp() { return object!{ result: "ERR", @@ -588,6 +589,10 @@ pub fn set_server_time(time: i64, token: &str) -> JsonValue { let login_token = login_token.unwrap(); let mut server_data = get_server_data(&login_token); server_data["server_time_set"] = global::timestamp().into(); + if time == -1 { + let args = get_args(); + time = args.max_time as i64; + } server_data["server_time"] = time.into(); save_server_data(&login_token, server_data); diff --git a/webui/src/home/Home.jsx b/webui/src/home/Home.jsx index cd812f1..da483d9 100644 --- a/webui/src/home/Home.jsx +++ b/webui/src/home/Home.jsx @@ -48,7 +48,6 @@ function Bonus() { const handleRemoveItem = async (index) => { const updatedItems = [...submittedItems]; - updatedItems.splice(index, 1); let resp = await Request("/api/webui/submitLoginBonus", { bonus_id: updatedItems[index], is_add: false @@ -58,6 +57,7 @@ function Bonus() { return; } error[1](""); + updatedItems.splice(index, 1); setSubmittedItems(updatedItems); }; @@ -118,12 +118,10 @@ function Home() { const handleSubmit = async (event) => { event.preventDefault(); let time = Math.round(new Date(inputValue.trim()).getTime() / 1000); - if (inputValue.trim() === "-1") { - time = 1711741114; - } else if (inputValue.trim() === "0") { + if (inputValue.trim() === "0") { time = 0; } - if (time < 0 || isNaN(time)) return; + if (time < -1 || isNaN(time)) return; let resp = await Request("/api/webui/set_time", { timestamp: time }); @@ -133,7 +131,7 @@ function Home() { } error[1](""); if (time === 0) { - setServerTime("now"); + setServerTime(new Date().toString()); } else { setServerTime((new Date(time * 1000)).toString()); } @@ -159,12 +157,15 @@ function Home() { exp: 10, last_login_time: 5 }, + server_time_set: new Date() time: new Date() }*/ if (resp.data.time === 0) { - setServerTime("now"); + setServerTime(new Date().toString()); } else { - setServerTime((new Date(resp.data.time * 1000)).toString()); + let deltaTime = new Date().getTime() - resp.data.server_time_set * 1000 + let gameTime = resp.data.time * 1000 + deltaTime + setServerTime((new Date(gameTime)).toString()); } userdata( @@ -189,7 +190,7 @@ function Home() { { user }

服务器时间

{ error[0] ?

Error: { error[0] }

:

}
-

当前时间设置的值为 { serverTime }. 将其设置为0将会设置为当前时间,而-1则会重置它。时间的推进仍将基于您设置此时间戳的时间。

+

当前游戏时间为 { serverTime }. 将其设置为0将会设置为当前时间,而-1则会重置到开服时间。时间的推进仍将基于您设置此时间戳的时间。