mirror of
https://git.ethanthesleepy.one/ethanaobrien/ew.git
synced 2025-05-13 11:37:33 -05:00
Implement base chat system
This commit is contained in:
parent
01827009bf
commit
e67879bb25
2 changed files with 69 additions and 20 deletions
|
@ -1,31 +1,61 @@
|
||||||
use json::object;
|
use json::{object, array, JsonValue};
|
||||||
use actix_web::{HttpResponse, HttpRequest};
|
use actix_web::{HttpResponse, HttpRequest};
|
||||||
|
use lazy_static::lazy_static;
|
||||||
|
|
||||||
use crate::router::{global, items, userdata};
|
use crate::router::{global, items, userdata};
|
||||||
|
use crate::encryption;
|
||||||
|
|
||||||
|
lazy_static! {
|
||||||
|
static ref CHATS: JsonValue = {
|
||||||
|
let mut chats = object!{};
|
||||||
|
let items = json::parse(include_str!("json/chat_room.json")).unwrap();
|
||||||
|
for (_i, data) in items.members().enumerate() {
|
||||||
|
if chats[data["masterChatId"].to_string()].is_null() {
|
||||||
|
chats[data["masterChatId"].to_string()] = object!{};
|
||||||
|
}
|
||||||
|
chats[data["masterChatId"].to_string()][data["roomId"].to_string()] = data.clone();
|
||||||
|
}
|
||||||
|
chats
|
||||||
|
};
|
||||||
|
static ref CHAPTERS: JsonValue = {
|
||||||
|
let mut chats = object!{};
|
||||||
|
let items = json::parse(include_str!("json/chat_chapter.json")).unwrap();
|
||||||
|
for (_i, data) in items.members().enumerate() {
|
||||||
|
if chats[data["masterChatId"].to_string()].is_null() {
|
||||||
|
chats[data["masterChatId"].to_string()] = object!{};
|
||||||
|
}
|
||||||
|
chats[data["masterChatId"].to_string()][data["roomId"].to_string()] = data.clone();
|
||||||
|
}
|
||||||
|
chats
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
pub fn add_chat(id: i64, num: i64, chats: &mut JsonValue) {
|
||||||
|
chats.push(object!{
|
||||||
|
chat_id: id,
|
||||||
|
room_id: num,
|
||||||
|
chapter_id: CHAPTERS[id.to_string()][num.to_string()]["id"].clone(),
|
||||||
|
is_read: 0,
|
||||||
|
created_at: global::timestamp()
|
||||||
|
}).unwrap();
|
||||||
|
}
|
||||||
|
|
||||||
pub fn home(req: HttpRequest, body: String) -> HttpResponse {
|
pub fn home(req: HttpRequest, body: String) -> HttpResponse {
|
||||||
let key = global::get_login(req.headers(), &body);
|
let key = global::get_login(req.headers(), &body);
|
||||||
let user = userdata::get_acc(&key);
|
let chats = userdata::get_acc_chats(&key);
|
||||||
|
|
||||||
let id = user["user"]["favorite_master_card_id"].as_i64().unwrap() / 10000;
|
let mut rooms = array![];
|
||||||
|
for (_i, data) in chats.members().enumerate() {
|
||||||
let chapter_id = (id * 100000) + 101;
|
rooms.push(CHATS[data["chat_id"].to_string()][data["room_id"].to_string()]["id"].clone()).unwrap();
|
||||||
let room_id = (id * 1000) + 1;
|
}
|
||||||
|
|
||||||
let resp = object!{
|
let resp = object!{
|
||||||
"code": 0,
|
"code": 0,
|
||||||
"server_time": global::timestamp(),
|
"server_time": global::timestamp(),
|
||||||
"data": {
|
"data": {
|
||||||
"progress_list": [
|
"progress_list": chats,
|
||||||
{
|
"master_chat_room_ids": rooms,
|
||||||
"chat_id": id,
|
|
||||||
"room_id": 1,
|
|
||||||
"chapter_id": chapter_id,
|
|
||||||
"is_read": 0,
|
|
||||||
"created_at": global::timestamp()
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"master_chat_room_ids": [room_id],
|
|
||||||
"master_chat_stamp_ids": [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,43,44,45,46,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,11001003,22001001,33001001,44001002],
|
"master_chat_stamp_ids": [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,43,44,45,46,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,11001003,22001001,33001001,44001002],
|
||||||
"master_chat_attachment_ids": []
|
"master_chat_attachment_ids": []
|
||||||
}
|
}
|
||||||
|
@ -45,10 +75,21 @@ pub fn start(req: HttpRequest, _body: String) -> HttpResponse {
|
||||||
|
|
||||||
pub fn end(req: HttpRequest, body: String) -> HttpResponse {
|
pub fn end(req: HttpRequest, body: String) -> HttpResponse {
|
||||||
let key = global::get_login(req.headers(), &body);
|
let key = global::get_login(req.headers(), &body);
|
||||||
|
let body = json::parse(&encryption::decrypt_packet(&body).unwrap()).unwrap();
|
||||||
let mut missions = userdata::get_acc_missions(&key);
|
let mut missions = userdata::get_acc_missions(&key);
|
||||||
items::advance_mission(1169001, 1, 50, &mut missions);
|
let mut chats = userdata::get_acc_chats(&key);
|
||||||
|
|
||||||
userdata::save_acc_missions(&key, missions);
|
for (_i, data) in chats.members_mut().enumerate() {
|
||||||
|
if body["chapter_id"].as_i64().unwrap() == data["chapter_id"].as_i64().unwrap() {
|
||||||
|
if data["is_read"].as_i32().unwrap() != 1 {
|
||||||
|
items::advance_mission(1169001, 1, 50, &mut missions);
|
||||||
|
}
|
||||||
|
data["is_read"] = 1.into();
|
||||||
|
userdata::save_acc_missions(&key, missions);
|
||||||
|
userdata::save_acc_chats(&key, chats);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
let resp = object!{
|
let resp = object!{
|
||||||
"code": 0,
|
"code": 0,
|
||||||
|
|
|
@ -33,6 +33,7 @@ fn setup_tables(conn: &SQLite) {
|
||||||
loginbonus TEXT NOT NULL,
|
loginbonus TEXT NOT NULL,
|
||||||
sifcards TEXT NOT NULL,
|
sifcards TEXT NOT NULL,
|
||||||
friends TEXT NOT NULL,
|
friends TEXT NOT NULL,
|
||||||
|
chats TEXT NOT NULL,
|
||||||
friend_request_disabled INT NOT NULL,
|
friend_request_disabled INT NOT NULL,
|
||||||
event TEXT NOT NULL,
|
event TEXT NOT NULL,
|
||||||
eventloginbonus TEXT NOT NULL,
|
eventloginbonus TEXT NOT NULL,
|
||||||
|
@ -78,7 +79,7 @@ fn add_user_to_database(uid: i64, user: JsonValue, user_home: JsonValue, user_mi
|
||||||
let missions = json::stringify(user_missions.clone());
|
let missions = json::stringify(user_missions.clone());
|
||||||
let cards = json::stringify(sif_cards.clone());
|
let cards = json::stringify(sif_cards.clone());
|
||||||
|
|
||||||
DATABASE.lock_and_exec("INSERT INTO users (user_id, userdata, userhome, missions, loginbonus, sifcards, friends, friend_request_disabled, event, eventloginbonus, server_data) VALUES (?1, ?2, ?3, ?4, ?5, ?6, ?7, ?8, ?9, ?10, ?11)", params!(
|
DATABASE.lock_and_exec("INSERT INTO users (user_id, userdata, userhome, missions, loginbonus, sifcards, friends, friend_request_disabled, event, eventloginbonus, server_data, chats) VALUES (?1, ?2, ?3, ?4, ?5, ?6, ?7, ?8, ?9, ?10, ?11, ?12)", params!(
|
||||||
uid,
|
uid,
|
||||||
json::stringify(user.clone()),
|
json::stringify(user.clone()),
|
||||||
if user_home.is_empty() {include_str!("new_user_home.json")} else {&home},
|
if user_home.is_empty() {include_str!("new_user_home.json")} else {&home},
|
||||||
|
@ -89,7 +90,8 @@ fn add_user_to_database(uid: i64, user: JsonValue, user_home: JsonValue, user_mi
|
||||||
user["user"]["friend_request_disabled"].as_i32().unwrap(),
|
user["user"]["friend_request_disabled"].as_i32().unwrap(),
|
||||||
include_str!("new_user_event.json"),
|
include_str!("new_user_event.json"),
|
||||||
format!(r#"{{"last_rewarded": 0, "bonus_list": [], "start_time": {}}}"#, global::timestamp()),
|
format!(r#"{{"last_rewarded": 0, "bonus_list": [], "start_time": {}}}"#, global::timestamp()),
|
||||||
format!(r#"{{"server_time_set":{},"server_time":1709272800}}"#, global::timestamp())
|
format!(r#"{{"server_time_set":{},"server_time":1709272800}}"#, global::timestamp()),
|
||||||
|
"[]"
|
||||||
));
|
));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -189,6 +191,9 @@ pub fn get_acc_friends(auth_key: &str) -> JsonValue {
|
||||||
pub fn get_server_data(auth_key: &str) -> JsonValue {
|
pub fn get_server_data(auth_key: &str) -> JsonValue {
|
||||||
get_data(auth_key, "server_data")
|
get_data(auth_key, "server_data")
|
||||||
}
|
}
|
||||||
|
pub fn get_acc_chats(auth_key: &str) -> JsonValue {
|
||||||
|
get_data(auth_key, "chats")
|
||||||
|
}
|
||||||
pub fn get_acc_event(auth_key: &str) -> JsonValue {
|
pub fn get_acc_event(auth_key: &str) -> JsonValue {
|
||||||
let event = get_data(auth_key, "event");
|
let event = get_data(auth_key, "event");
|
||||||
if event.is_empty() {
|
if event.is_empty() {
|
||||||
|
@ -231,6 +236,9 @@ pub fn save_acc_eventlogin(auth_key: &str, data: JsonValue) {
|
||||||
pub fn save_server_data(auth_key: &str, data: JsonValue) {
|
pub fn save_server_data(auth_key: &str, data: JsonValue) {
|
||||||
save_data(auth_key, "server_data", data);
|
save_data(auth_key, "server_data", data);
|
||||||
}
|
}
|
||||||
|
pub fn save_acc_chats(auth_key: &str, data: JsonValue) {
|
||||||
|
save_data(auth_key, "chats", data);
|
||||||
|
}
|
||||||
|
|
||||||
fn generate_salt() -> Vec<u8> {
|
fn generate_salt() -> Vec<u8> {
|
||||||
let mut rng = rand::thread_rng();
|
let mut rng = rand::thread_rng();
|
||||||
|
|
Loading…
Add table
Reference in a new issue