diff --git a/src/router/global.rs b/src/router/global.rs index a79e546..92fb5fe 100644 --- a/src/router/global.rs +++ b/src/router/global.rs @@ -1,4 +1,4 @@ -use json::JsonValue; +use json::{object, JsonValue}; use crate::encryption; use actix_web::{ HttpResponse @@ -23,3 +23,29 @@ pub fn send(data: JsonValue) -> HttpResponse { HttpResponse::Ok().body(resp) } + +pub fn error_resp() -> HttpResponse { + send(object!{}) +} + +// true - added +// false - already has +pub fn give_character(id: String, user: &mut JsonValue) -> bool { + + for (_i, data) in user["card_list"].members().enumerate() { + if data["master_card_id"].to_string() == id { + return false; + } + } + + let to_push = object!{ + "id": id.clone(), + "master_card_id": id, + "exp": 0, + "skill_exp": 0, + "evolve": [], + "created_date_time": timestamp() + }; + user["card_list"].push(to_push.clone()).unwrap(); + true +} diff --git a/src/router/lottery/mod.rs b/src/router/lottery/mod.rs index 27a203c..8e20ace 100644 --- a/src/router/lottery/mod.rs +++ b/src/router/lottery/mod.rs @@ -94,15 +94,11 @@ pub fn lottery(req: HttpRequest, body: String) -> HttpResponse { let user2 = userdata::get_acc(key); let mut cardstogive = get_random_cards(9); - /*let cardstogive = array![ - //30110007 - {"id": 10, "master_card_id": 40030002, "master_lottery_item_id":911002701,"master_lottery_item_number":1} - ];*/ + if body["master_lottery_id"].to_string().starts_with("9") { let item_id = (body["master_lottery_id"].to_string().parse::().unwrap() * 100) + 1; //tutorial let new_card = object!{ - "id": get_card_master_id(item_id.to_string(), String::from("1")), "master_card_id": get_card_master_id(item_id.to_string(), String::from("1")), "master_lottery_item_id": item_id, "master_lottery_item_number": 1 @@ -112,19 +108,27 @@ pub fn lottery(req: HttpRequest, body: String) -> HttpResponse { let mut new_cards = array![]; for (_i, data) in cardstogive.members().enumerate() { + if !global::give_character(data["master_card_id"].to_string(), &mut user) { + let to_push = object!{ + "id": 6600, + "master_item_id": 19100001, + "amount": 20, + "expire_date_time": null + }; + user["item_list"].push(to_push).unwrap(); + } let to_push = object!{ - "id": data["id"].clone(), + "id": data["master_card_id"].clone(), "master_card_id": data["master_card_id"].clone(), "exp": 0, "skill_exp": 0, "evolve": [], "created_date_time": global::timestamp() }; - user["card_list"].push(to_push.clone()).unwrap(); new_cards.push(to_push).unwrap(); } - userdata::save_acc(key, user); + userdata::save_acc(key, user.clone()); let mut lottery_list = array![]; for (_i, data) in cardstogive.members().enumerate() { @@ -143,7 +147,8 @@ pub fn lottery(req: HttpRequest, body: String) -> HttpResponse { "data": { "lottery_item_list": lottery_list, "updated_value_list": { - "card_list": new_cards + "card_list": new_cards, + "item_list": user["item_list"].clone() }, "gift_list": user2["home"]["gift_list"].clone(), "clear_mission_ids": user2["clear_mission_ids"].clone(), diff --git a/src/router/user.rs b/src/router/user.rs index 8bdc401..9157c85 100644 --- a/src/router/user.rs +++ b/src/router/user.rs @@ -1,5 +1,5 @@ use json; -use json::{array, object}; +use json::{array, object, JsonValue}; use crate::router::global; use crate::encryption; use actix_web::{HttpResponse, HttpRequest, http::header::HeaderValue}; @@ -58,13 +58,22 @@ pub fn initialize(req: HttpRequest, body: String) -> HttpResponse { let id = body["master_character_id"].to_string(); let userr = &id[id.len() - 2..].parse::().unwrap(); + + let cardstoreward: JsonValue; let mut masterid = 3000000; - if id.starts_with("2") { + if id.starts_with("1") { + cardstoreward = array![10010001, 10020001, 10030001, 10040001, 10050001, 10060001, 10070001, 10080001, 10090001]; //muse + } else if id.starts_with("2") { + cardstoreward = array![20010001, 20020001, 20030001, 20040001, 20050001, 20060001, 20070001, 20080001, 20090001]; //aqours masterid += 9; //muse } else if id.starts_with("3") { - masterid += 9 + 9; //aquors + cardstoreward = array![30010001, 30020001, 30030001, 30040001, 30050001, 30060001, 30070001, 30080001, 30090001, 30100001, 30110001]; //nijigasaki + masterid += 9 + 9; //aqours } else if id.starts_with("4") { + cardstoreward = array![40010001, 40020001, 40030001, 40040001, 40050001, 40060001, 40070001, 40080001, 40090001]; //liella masterid += 9 + 9 + 12; //nijigasaki + } else { + return global::error_resp(); } masterid += userr; @@ -72,25 +81,14 @@ pub fn initialize(req: HttpRequest, body: String) -> HttpResponse { // User is rewarded with all base cards in the team they chose. This makes up their new deck_list - //nijigasaki for now - let cardstoreward = array![30010001, 30020001, 30030001, 30050001, 30060001, 30070001, 30080001, 30090001, 30100001, 30110001]; - let ur = user["card_list"][user["card_list"].len() - 1]["id"].clone(); - //todo - does the user have the char already? for (i, data) in cardstoreward.members().enumerate() { - let to_push = object!{ - "id": data.clone(), - "master_card_id": data.clone(), - "exp": 0, - "skill_exp": 0, - "evolve": [], - "created_date_time": global::timestamp() - }; - user["card_list"].push(to_push.clone()).unwrap(); + global::give_character(data.to_string(), &mut user); if i < 10 { user["deck_list"][0]["main_card_ids"][i] = data.clone(); } } + //todo - should the chosen character be in the team twice? user["deck_list"][0]["main_card_ids"][4] = ur; userdata::save_acc(key, user.clone());