From 621b554711bf78211fbc1c388eb158fb1be9c894 Mon Sep 17 00:00:00 2001 From: zhushenwudi <55681140@163.com> Date: Tue, 7 Jan 2025 18:27:22 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=94=AF=E6=8C=81=E5=85=91=E6=8D=A2?= =?UTF-8?q?=E7=A0=81=E8=87=AA=E5=AE=9A=E6=95=B0=E9=87=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/router.rs | 2 +- src/router/global.rs | 31 ++++-- src/router/login.rs | 4 +- src/router/serial_code.rs | 221 +++++++++---------------------------- src/router/userdata/mod.rs | 4 +- src/router/webui.rs | 6 +- webui/src/home/Home.jsx | 16 ++- 7 files changed, 99 insertions(+), 185 deletions(-) diff --git a/src/router.rs b/src/router.rs index c9e96ec..e3c4426 100644 --- a/src/router.rs +++ b/src/router.rs @@ -195,7 +195,7 @@ pub async fn request(req: HttpRequest, body: String) -> HttpResponse { "/v1.0/migration/password/register" => gree::migration_password_register(req, body), "/v1.0/migration" => gree::migration(req, body), "/api/webui/login" => webui::login(req, body), - "/api/webui/startLoginbonus" => webui::start_loginbonus(req, body), + "/api/webui/submitLoginBonus" => webui::submit_login_bonus(req, body), "/api/webui/import" => webui::import(req, body), "/api/webui/set_time" => webui::set_time(req, body), _ => api_req(req, body).await diff --git a/src/router/global.rs b/src/router/global.rs index d05713f..1de7b53 100644 --- a/src/router/global.rs +++ b/src/router/global.rs @@ -164,20 +164,33 @@ pub fn send(mut data: JsonValue, uid: i64, headers: &HeaderMap) -> HttpResponse HttpResponse::Ok().body(resp) } -pub fn start_login_bonus(id: i64, bonus: &mut JsonValue) -> bool { +pub fn submit_login_bonus(id: i64, bonus: &mut JsonValue, is_add: bool) -> bool { if crate::router::login::get_login_bonus_info(id).is_empty() { return false; } - for dataa in bonus["bonus_list"].members() { - if dataa["master_login_bonus_id"].as_i64().unwrap() == id { - return false; + + if is_add { + for dataa in bonus["bonus_list"].members() { + if dataa["master_login_bonus_id"].as_i64().unwrap() == id { + return false; + } + } + let item = object!{master_login_bonus_id: id,day_counts: [],event_bonus_list: []}; + bonus["bonus_list"].push(item).unwrap(); + } else { + let mut index_to_remove = None; + + for (index, dataa) in bonus["bonus_list"].members().enumerate() { + if dataa["master_login_bonus_id"].as_i64().unwrap() == id { + index_to_remove = Some(index); + break; + } + } + + if let Some(index) = index_to_remove { + bonus["bonus_list"].array_remove(index); } } - bonus["bonus_list"].push(object!{ - master_login_bonus_id: id, - day_counts: [], - event_bonus_list: [] - }).unwrap(); true } diff --git a/src/router/login.rs b/src/router/login.rs index 72f3601..83e5862 100644 --- a/src/router/login.rs +++ b/src/router/login.rs @@ -54,7 +54,7 @@ pub fn bonus(req: HttpRequest, body: String) -> Option { let mut bonuses = userdata::get_acc_loginbonus(&key); if bonuses["bonus_list"].is_empty() { - global::start_login_bonus(1, &mut bonuses); + global::submit_login_bonus(1, &mut bonuses, true); } let to_send = do_bonus(&mut user_home, &mut bonuses); @@ -80,7 +80,7 @@ pub fn bonus_event(req: HttpRequest, body: String) -> Option { let mut bonuses = userdata::get_acc_eventlogin(&key); if bonuses["bonus_list"].is_empty() { - global::start_login_bonus(20039, &mut bonuses); + global::submit_login_bonus(20039, &mut bonuses, true); } let to_send = do_bonus(&mut user_home, &mut bonuses); diff --git a/src/router/serial_code.rs b/src/router/serial_code.rs index ddfa172..2399746 100644 --- a/src/router/serial_code.rs +++ b/src/router/serial_code.rs @@ -1,182 +1,71 @@ +use actix_web::HttpRequest; use json::{array, object, JsonValue}; -use actix_web::{HttpRequest}; -use crate::router::{global, userdata, items}; +use crate::router::{global, items, userdata}; use crate::encryption; +const UR_ARRAY: [i32; 39] = [40010015, 30010015, 20010018, 10040018, 20050016, 30070015, 40030013, + 10070016, 10060018, 20050019, 10020018, 10010014, 10010015, 10010020, 10040016, 10050018, + 10080016, 10090015, 20010019, 20030015, 20050014, 20070013, 20080016, 20090013, 20080016, + 20090013, 30010017, 30020009, 30040012, 30090009, 30040012, 30090009, 40010011, 40030009, + 40040013, 40060010, 40080011, 40090011, 30030010]; + +const PT_ARRAY: [i32; 112] = [15540001, 15500001, 15500002, 15520001, 15520002, 15520003, 15520004, + 15520005, 15520006, 15520007, 15520008, 15520009, 15520010, 15520011, 15520012, 15520013, + 15520014, 15520015, 15520016, 15520017, 15520018, 15520019, 15520020, 15510004, 15510005, + 15510006, 15510007, 15510008, 15510009, 15510010, 15510011, 15510012, 15510013, 15510014, + 15510015, 15510016, 15510017, 15510018, 15510019, 15510020, 15510021, 15510022, 15510023, + 15510024, 15530001, 15530002, 15530003, 15530004, 15530005, 15530006, 15530007, 15530008, + 15530009, 15530010, 15530011, 15530012, 15530013, 15530014, 15530015, 15530016, 15530017, + 15530018, 15530019, 15530020, 15530021, 15530022, 15530023, 15530024, 15530025, 15530026, + 15530027, 15530028, 15530029, 15530030, 15530031, 15530032, 15530033, 15530034, 15530035, + 15530036, 15530037, 15540002, 15540005, 15540006, 15540007, 15540008, 15540009, 15540010, + 15540011, 15540012, 15540013, 15540014, 15540015, 15540016, 15540017, 15540023, 15540024, + 15540025, 15540027, 15540028, 15540029, 15540030, 15540031, 15540032, 15540033, 15540034, + 15540035, 30010002, 30010003, 30010004, 30010005, 30010001 +]; + pub fn events(_req: HttpRequest) -> Option { Some(object!{ "serial_code_list": [] }) } +fn extract_number_from_code(code: String, goods: &str) -> Option { + if code.starts_with(goods) { + let number_str = &code[code.len()..]; + match number_str.parse::() { + Ok(number) => Some(number), + Err(_) => Some(1) + } + } else { + None + } +} + pub fn serial_code(req: HttpRequest, body: String) -> Option { let key = global::get_login(req.headers(), &body); let body = json::parse(&encryption::decrypt_packet(&body).unwrap()).unwrap(); let mut user = userdata::get_acc_home(&key); - - let mut itemz = array![]; - if body["input_code"] == "SIF2REVIVALREAL!" { - itemz.push(items::gift_item_basic(1, 10000000, 4, "Another game died... This makes me sad :(", &mut user)).ok()?; - } else if body["input_code"] == "pweasegivegems11" { - itemz.push(items::gift_item_basic(1, 6000, 1, "Only because you asked...", &mut user)).ok()?; - } else if body["input_code"] == "sleepysleepyslep" { - itemz.push(items::gift_item_basic(15540001, 50, 3, "I am tired", &mut user)).ok()?; - } else if body["input_code"] == "ilikeganyu!!!!!!" { - itemz.push(items::gift_item_basic(16005003, 100, 3, "I need more primogems", &mut user)).ok()?; - } else if body["input_code"] == "serial_code" { - itemz.push(items::gift_item_basic(17001003, 100, 3, "nyaa~", &mut user)).ok()?; - } else if body["input_code"] == "ganuy" { - itemz.push(items::gift_item_basic(40010015, 1, 2, "I need more primogem!!!!!!", &mut user)).ok()?; - itemz.push(items::gift_item_basic(30010015, 1, 2, "I need more primogem!!!!!!", &mut user)).ok()?; - itemz.push(items::gift_item_basic(20010018, 1, 2, "I need more primogem!!!!!!", &mut user)).ok()?; - itemz.push(items::gift_item_basic(10040018, 1, 2, "I need more primogem!!!!!!", &mut user)).ok()?; - itemz.push(items::gift_item_basic(20050016, 1, 2, "I need more primogem!!!!!!", &mut user)).ok()?; - itemz.push(items::gift_item_basic(30070015, 1, 2, "I need more primogem!!!!!!", &mut user)).ok()?; - itemz.push(items::gift_item_basic(40030013, 1, 2, "I need more primogem!!!!!!", &mut user)).ok()?; - itemz.push(items::gift_item_basic(10070016, 1, 2, "I need more primogem!!!!!!", &mut user)).ok()?; - } else if body["input_code"] == "kode" { - itemz.push(items::gift_item_basic(10060018, 1, 2, "meow", &mut user)).ok()?; - itemz.push(items::gift_item_basic(20050019, 1, 2, "meow", &mut user)).ok()?; - itemz.push(items::gift_item_basic(10020018, 1, 2, "meow", &mut user)).ok()?; - itemz.push(items::gift_item_basic(10010014, 1, 2, "meow", &mut user)).ok()?; - itemz.push(items::gift_item_basic(10010015, 1, 2, "meow", &mut user)).ok()?; - } else if body["input_code"] == "meow" { - itemz.push(items::gift_item_basic(10010020, 1, 2, "I need more primogem!!!!!!", &mut user)).ok()?; - itemz.push(items::gift_item_basic(10040016, 1, 2, "I need more primogem!!!!!!", &mut user)).ok()?; - itemz.push(items::gift_item_basic(10050018, 1, 2, "I need more primogem!!!!!!", &mut user)).ok()?; - itemz.push(items::gift_item_basic(10080016, 1, 2, "I need more primogem!!!!!!", &mut user)).ok()?; - itemz.push(items::gift_item_basic(10090015, 1, 2, "I need more primogem!!!!!!", &mut user)).ok()?; - itemz.push(items::gift_item_basic(20010019, 1, 2, "I need more primogem!!!!!!", &mut user)).ok()?; - itemz.push(items::gift_item_basic(20030015, 1, 2, "I need more primogem!!!!!!", &mut user)).ok()?; - itemz.push(items::gift_item_basic(20050014, 1, 2, "I need more primogem!!!!!!", &mut user)).ok()?; - itemz.push(items::gift_item_basic(20070013, 1, 2, "I need more primogem!!!!!!", &mut user)).ok()?; - itemz.push(items::gift_item_basic(20080016, 1, 2, "I need more primogem!!!!!!", &mut user)).ok()?; - itemz.push(items::gift_item_basic(20090013, 1, 2, "I need more primogem!!!!!!", &mut user)).ok()?; - itemz.push(items::gift_item_basic(30010017, 1, 2, "I need more primogem!!!!!!", &mut user)).ok()?; - itemz.push(items::gift_item_basic(30020009, 1, 2, "I need more primogem!!!!!!", &mut user)).ok()?; - itemz.push(items::gift_item_basic(30040012, 1, 2, "I need more primogem!!!!!!", &mut user)).ok()?; - itemz.push(items::gift_item_basic(30090009, 1, 2, "I need more primogem!!!!!!", &mut user)).ok()?; - itemz.push(items::gift_item_basic(40010011, 1, 2, "I need more primogem!!!!!!", &mut user)).ok()?; - itemz.push(items::gift_item_basic(40030009, 1, 2, "I need more primogem!!!!!!", &mut user)).ok()?; - itemz.push(items::gift_item_basic(40040013, 1, 2, "I need more primogem!!!!!!", &mut user)).ok()?; - itemz.push(items::gift_item_basic(40060010, 1, 2, "I need more primogem!!!!!!", &mut user)).ok()?; - itemz.push(items::gift_item_basic(40080011, 1, 2, "I need more primogem!!!!!!", &mut user)).ok()?; - itemz.push(items::gift_item_basic(40090011, 1, 2, "I need more primogem!!!!!!", &mut user)).ok()?; - itemz.push(items::gift_item_basic(30030010, 1, 2, "I need more primogem!!!!!!", &mut user)).ok()?; - } else if body["input_code"] == "HuTao" { - itemz.push(items::gift_item_basic(15500001, 500, 3, "Okay...............", &mut user)).ok()?; - itemz.push(items::gift_item_basic(15500002, 500, 3, "Okay...............", &mut user)).ok()?; - itemz.push(items::gift_item_basic(15520001, 500, 3, "Okay...............", &mut user)).ok()?; - itemz.push(items::gift_item_basic(15520002, 500, 3, "Okay...............", &mut user)).ok()?; - itemz.push(items::gift_item_basic(15520003, 500, 3, "Okay...............", &mut user)).ok()?; - itemz.push(items::gift_item_basic(15520004, 500, 3, "Okay...............", &mut user)).ok()?; - itemz.push(items::gift_item_basic(15520005, 500, 3, "Okay...............", &mut user)).ok()?; - itemz.push(items::gift_item_basic(15520006, 500, 3, "Okay...............", &mut user)).ok()?; - itemz.push(items::gift_item_basic(15520007, 500, 3, "Okay...............", &mut user)).ok()?; - itemz.push(items::gift_item_basic(15520008, 500, 3, "Okay...............", &mut user)).ok()?; - itemz.push(items::gift_item_basic(15520009, 500, 3, "Okay...............", &mut user)).ok()?; - itemz.push(items::gift_item_basic(15520010, 500, 3, "Okay...............", &mut user)).ok()?; - itemz.push(items::gift_item_basic(15520011, 500, 3, "Okay...............", &mut user)).ok()?; - itemz.push(items::gift_item_basic(15520012, 500, 3, "Okay...............", &mut user)).ok()?; - itemz.push(items::gift_item_basic(15520013, 500, 3, "Okay...............", &mut user)).ok()?; - itemz.push(items::gift_item_basic(15520014, 500, 3, "Okay...............", &mut user)).ok()?; - itemz.push(items::gift_item_basic(15520015, 500, 3, "Okay...............", &mut user)).ok()?; - itemz.push(items::gift_item_basic(15520016, 500, 3, "Okay...............", &mut user)).ok()?; - itemz.push(items::gift_item_basic(15520017, 500, 3, "Okay...............", &mut user)).ok()?; - itemz.push(items::gift_item_basic(15520018, 500, 3, "Okay...............", &mut user)).ok()?; - itemz.push(items::gift_item_basic(15520019, 500, 3, "Okay...............", &mut user)).ok()?; - itemz.push(items::gift_item_basic(15520020, 500, 3, "Okay...............", &mut user)).ok()?; - itemz.push(items::gift_item_basic(15510004, 500, 3, "Okay...............", &mut user)).ok()?; - itemz.push(items::gift_item_basic(15510005, 500, 3, "Okay...............", &mut user)).ok()?; - itemz.push(items::gift_item_basic(15510006, 500, 3, "Okay...............", &mut user)).ok()?; - itemz.push(items::gift_item_basic(15510007, 500, 3, "Okay...............", &mut user)).ok()?; - itemz.push(items::gift_item_basic(15510008, 500, 3, "Okay...............", &mut user)).ok()?; - itemz.push(items::gift_item_basic(15510009, 500, 3, "Okay...............", &mut user)).ok()?; - itemz.push(items::gift_item_basic(15510010, 500, 3, "Okay...............", &mut user)).ok()?; - itemz.push(items::gift_item_basic(15510011, 500, 3, "Okay...............", &mut user)).ok()?; - itemz.push(items::gift_item_basic(15510012, 500, 3, "Okay...............", &mut user)).ok()?; - itemz.push(items::gift_item_basic(15510013, 500, 3, "Okay...............", &mut user)).ok()?; - itemz.push(items::gift_item_basic(15510014, 500, 3, "Okay...............", &mut user)).ok()?; - itemz.push(items::gift_item_basic(15510015, 500, 3, "Okay...............", &mut user)).ok()?; - itemz.push(items::gift_item_basic(15510016, 500, 3, "Okay...............", &mut user)).ok()?; - itemz.push(items::gift_item_basic(15510017, 500, 3, "Okay...............", &mut user)).ok()?; - itemz.push(items::gift_item_basic(15510018, 500, 3, "Okay...............", &mut user)).ok()?; - itemz.push(items::gift_item_basic(15510019, 500, 3, "Okay...............", &mut user)).ok()?; - itemz.push(items::gift_item_basic(15510020, 500, 3, "Okay...............", &mut user)).ok()?; - itemz.push(items::gift_item_basic(15510021, 500, 3, "Okay...............", &mut user)).ok()?; - itemz.push(items::gift_item_basic(15510022, 500, 3, "Okay...............", &mut user)).ok()?; - itemz.push(items::gift_item_basic(15510023, 500, 3, "Okay...............", &mut user)).ok()?; - itemz.push(items::gift_item_basic(15510024, 500, 3, "Okay...............", &mut user)).ok()?; - itemz.push(items::gift_item_basic(15530001, 500, 3, "Okay...............", &mut user)).ok()?; - itemz.push(items::gift_item_basic(15530002, 500, 3, "Okay...............", &mut user)).ok()?; - itemz.push(items::gift_item_basic(15530003, 500, 3, "Okay...............", &mut user)).ok()?; - itemz.push(items::gift_item_basic(15530004, 500, 3, "Okay...............", &mut user)).ok()?; - itemz.push(items::gift_item_basic(15530005, 500, 3, "Okay...............", &mut user)).ok()?; - itemz.push(items::gift_item_basic(15530006, 500, 3, "Okay...............", &mut user)).ok()?; - itemz.push(items::gift_item_basic(15530007, 500, 3, "Okay...............", &mut user)).ok()?; - itemz.push(items::gift_item_basic(15530008, 500, 3, "Okay...............", &mut user)).ok()?; - itemz.push(items::gift_item_basic(15530009, 500, 3, "Okay...............", &mut user)).ok()?; - itemz.push(items::gift_item_basic(15530010, 500, 3, "Okay...............", &mut user)).ok()?; - itemz.push(items::gift_item_basic(15530011, 500, 3, "Okay...............", &mut user)).ok()?; - itemz.push(items::gift_item_basic(15530012, 500, 3, "Okay...............", &mut user)).ok()?; - itemz.push(items::gift_item_basic(15530013, 500, 3, "Okay...............", &mut user)).ok()?; - itemz.push(items::gift_item_basic(15530014, 500, 3, "Okay...............", &mut user)).ok()?; - itemz.push(items::gift_item_basic(15530015, 500, 3, "Okay...............", &mut user)).ok()?; - itemz.push(items::gift_item_basic(15530016, 500, 3, "Okay...............", &mut user)).ok()?; - itemz.push(items::gift_item_basic(15530017, 500, 3, "Okay...............", &mut user)).ok()?; - itemz.push(items::gift_item_basic(15530018, 500, 3, "Okay...............", &mut user)).ok()?; - itemz.push(items::gift_item_basic(15530019, 500, 3, "Okay...............", &mut user)).ok()?; - itemz.push(items::gift_item_basic(15530020, 500, 3, "Okay...............", &mut user)).ok()?; - itemz.push(items::gift_item_basic(15530021, 500, 3, "Okay...............", &mut user)).ok()?; - itemz.push(items::gift_item_basic(15530022, 500, 3, "Okay...............", &mut user)).ok()?; - itemz.push(items::gift_item_basic(15530023, 500, 3, "Okay...............", &mut user)).ok()?; - itemz.push(items::gift_item_basic(15530024, 500, 3, "Okay...............", &mut user)).ok()?; - itemz.push(items::gift_item_basic(15530025, 500, 3, "Okay...............", &mut user)).ok()?; - itemz.push(items::gift_item_basic(15530026, 500, 3, "Okay...............", &mut user)).ok()?; - itemz.push(items::gift_item_basic(15530027, 500, 3, "Okay...............", &mut user)).ok()?; - itemz.push(items::gift_item_basic(15530028, 500, 3, "Okay...............", &mut user)).ok()?; - itemz.push(items::gift_item_basic(15530029, 500, 3, "Okay...............", &mut user)).ok()?; - itemz.push(items::gift_item_basic(15530030, 500, 3, "Okay...............", &mut user)).ok()?; - itemz.push(items::gift_item_basic(15530031, 500, 3, "Okay...............", &mut user)).ok()?; - itemz.push(items::gift_item_basic(15530032, 500, 3, "Okay...............", &mut user)).ok()?; - itemz.push(items::gift_item_basic(15530033, 500, 3, "Okay...............", &mut user)).ok()?; - itemz.push(items::gift_item_basic(15530034, 500, 3, "Okay...............", &mut user)).ok()?; - itemz.push(items::gift_item_basic(15530035, 500, 3, "Okay...............", &mut user)).ok()?; - itemz.push(items::gift_item_basic(15530036, 500, 3, "Okay...............", &mut user)).ok()?; - itemz.push(items::gift_item_basic(15530037, 500, 3, "Okay...............", &mut user)).ok()?; - itemz.push(items::gift_item_basic(15540002, 500, 3, "Okay...............", &mut user)).ok()?; - itemz.push(items::gift_item_basic(15540005, 500, 3, "Okay...............", &mut user)).ok()?; - itemz.push(items::gift_item_basic(15540006, 500, 3, "Okay...............", &mut user)).ok()?; - itemz.push(items::gift_item_basic(15540007, 500, 3, "Okay...............", &mut user)).ok()?; - itemz.push(items::gift_item_basic(15540008, 500, 3, "Okay...............", &mut user)).ok()?; - itemz.push(items::gift_item_basic(15540009, 500, 3, "Okay...............", &mut user)).ok()?; - itemz.push(items::gift_item_basic(15540010, 500, 3, "Okay...............", &mut user)).ok()?; - itemz.push(items::gift_item_basic(15540011, 500, 3, "Okay...............", &mut user)).ok()?; - itemz.push(items::gift_item_basic(15540012, 500, 3, "Okay...............", &mut user)).ok()?; - itemz.push(items::gift_item_basic(15540013, 500, 3, "Okay...............", &mut user)).ok()?; - itemz.push(items::gift_item_basic(15540014, 500, 3, "Okay...............", &mut user)).ok()?; - itemz.push(items::gift_item_basic(15540015, 500, 3, "Okay...............", &mut user)).ok()?; - itemz.push(items::gift_item_basic(15540016, 500, 3, "Okay...............", &mut user)).ok()?; - itemz.push(items::gift_item_basic(15540017, 500, 3, "Okay...............", &mut user)).ok()?; - itemz.push(items::gift_item_basic(15540023, 500, 3, "Okay...............", &mut user)).ok()?; - itemz.push(items::gift_item_basic(15540024, 500, 3, "Okay...............", &mut user)).ok()?; - itemz.push(items::gift_item_basic(15540025, 500, 3, "Okay...............", &mut user)).ok()?; - itemz.push(items::gift_item_basic(15540027, 500, 3, "Okay...............", &mut user)).ok()?; - itemz.push(items::gift_item_basic(15540028, 500, 3, "Okay...............", &mut user)).ok()?; - itemz.push(items::gift_item_basic(15540029, 500, 3, "Okay...............", &mut user)).ok()?; - itemz.push(items::gift_item_basic(15540030, 500, 3, "Okay...............", &mut user)).ok()?; - itemz.push(items::gift_item_basic(15540031, 500, 3, "Okay...............", &mut user)).ok()?; - itemz.push(items::gift_item_basic(15540032, 500, 3, "Okay...............", &mut user)).ok()?; - itemz.push(items::gift_item_basic(15540033, 500, 3, "Okay...............", &mut user)).ok()?; - itemz.push(items::gift_item_basic(15540034, 500, 3, "Okay...............", &mut user)).ok()?; - itemz.push(items::gift_item_basic(15540035, 500, 3, "Okay...............", &mut user)).ok()?; - itemz.push(items::gift_item_basic(30010002, 500, 3, "Okay...............", &mut user)).ok()?; - itemz.push(items::gift_item_basic(30010003, 500, 3, "Okay...............", &mut user)).ok()?; - itemz.push(items::gift_item_basic(30010004, 500, 3, "Okay...............", &mut user)).ok()?; - itemz.push(items::gift_item_basic(30010005, 500, 3, "Okay...............", &mut user)).ok()?; - itemz.push(items::gift_item_basic(30010001, 500, 3, "Okay...............", &mut user)).ok()?; - itemz.push(items::gift_item_basic(15540001, 500, 3, "Okay...............", &mut user)).ok()?; + + let mut item_list = array![]; + let code = body["input_code"].to_string(); + + if let Some(number) = extract_number_from_code(code.clone(), "金币") { + item_list.push(items::gift_item_basic(1, number, 4, "请亏我全", &mut user)).ok()?; + } else if let Some(number) = extract_number_from_code(code.clone(), "钻石") { + 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(), "练习券") { + 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") { + for item in UR_ARRAY { + item_list.push(items::gift_item_basic(item, number, 2, "给你UR", &mut user)).ok()?; + } + } else if let Some(number) = extract_number_from_code(code.clone(), "PT") { + for item in PT_ARRAY { + item_list.push(items::gift_item_basic(item, number, 3, "意味わかんない", &mut user)).ok()?; + } } else { return Some(object!{ "result_code": 3 @@ -189,7 +78,7 @@ pub fn serial_code(req: HttpRequest, body: String) -> Option { Some(object!{ "serial_code_event": {"id":1,"name":"Serial Code Reward","unique_limit_count":0,"min_user_rank":0,"max_user_rank":0,"end_date":null}, - "reward_list": itemz, + "reward_list": item_list, "result_code": 0, "gift_list": user["gift_list"].clone(), "excluded_gift_list": [] diff --git a/src/router/userdata/mod.rs b/src/router/userdata/mod.rs index 1258028..9ddd35c 100644 --- a/src/router/userdata/mod.rs +++ b/src/router/userdata/mod.rs @@ -547,7 +547,7 @@ pub fn webui_get_user(token: &str) -> Option { }) } -pub fn webui_start_loginbonus(bonus_id: i64, token: &str) -> JsonValue { +pub fn webui_submit_login_bonus(bonus_id: i64, is_add: bool, token: &str) -> JsonValue { let login_token = webui_login_token(token); if login_token.is_none() { return object!{ @@ -557,7 +557,7 @@ pub fn webui_start_loginbonus(bonus_id: i64, token: &str) -> JsonValue { } let login_token = login_token.unwrap(); let mut bonuses = get_acc_loginbonus(&login_token); - if !global::start_login_bonus(bonus_id, &mut bonuses) { + if !global::submit_login_bonus(bonus_id, &mut bonuses, is_add) { return object!{ result: "ERR", message: "Login bonus ID is either already going or does not exist" diff --git a/src/router/webui.rs b/src/router/webui.rs index b3e1d65..b6e3e8b 100644 --- a/src/router/webui.rs +++ b/src/router/webui.rs @@ -97,13 +97,15 @@ pub fn user(req: HttpRequest) -> HttpResponse { .body(json::stringify(resp)) } -pub fn start_loginbonus(req: HttpRequest, body: String) -> HttpResponse { +pub fn submit_login_bonus(req: HttpRequest, body: String) -> HttpResponse { let token = get_login_token(&req); if token.is_none() { return error("Not logged in"); } let body = json::parse(&body).unwrap(); - let resp = userdata::webui_start_loginbonus(body["bonus_id"].as_i64().unwrap(), &token.unwrap()); + let bonus_id = body["bonus_id"].as_i64().unwrap(); + let is_add = body["is_add"].as_bool().unwrap(); + let resp = userdata::webui_submit_login_bonus(bonus_id, is_add, &token.unwrap()); HttpResponse::Ok() .insert_header(ContentType::json()) diff --git a/webui/src/home/Home.jsx b/webui/src/home/Home.jsx index 71466f8..cd812f1 100644 --- a/webui/src/home/Home.jsx +++ b/webui/src/home/Home.jsx @@ -33,8 +33,9 @@ function Bonus() { event.preventDefault(); let input = parseInt(inputValue.trim()); if (isNaN(input) || submittedItems.includes(input)) return; - let resp = await Request("/api/webui/startLoginbonus", { - bonus_id: input + let resp = await Request("/api/webui/submitLoginBonus", { + bonus_id: input, + is_add: true }); if (resp.result !== "OK") { error[1](resp.message); @@ -45,9 +46,18 @@ function Bonus() { setInputValue(''); }; - const handleRemoveItem = (index) => { + 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 + }); + if (resp.result !== "OK") { + error[1](resp.message); + return; + } + error[1](""); setSubmittedItems(updatedItems); };