mirror of
https://git.ethanthesleepy.one/ethanaobrien/ew.git
synced 2025-05-13 11:37:33 -05:00
More user interaction stuff
This commit is contained in:
parent
c09823c17c
commit
99f6183f48
4 changed files with 129 additions and 16 deletions
|
@ -47,13 +47,31 @@ pub fn ids(req: HttpRequest) -> HttpResponse {
|
||||||
global::send(resp)
|
global::send(resp)
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn recommend(_req: HttpRequest, _body: String) -> HttpResponse {
|
pub fn recommend(req: HttpRequest, body: String) -> HttpResponse {
|
||||||
|
let key = global::get_login(req.headers(), &body);
|
||||||
|
let user_id = userdata::get_acc(&key)["user"]["id"].as_i64().unwrap();
|
||||||
|
let friends = userdata::get_acc_friends(&key);
|
||||||
|
|
||||||
|
let mut random = userdata::get_random_uids(20);
|
||||||
|
let index = random.members().into_iter().position(|r| *r.to_string() == user_id.to_string());
|
||||||
|
if !index.is_none() {
|
||||||
|
random.array_remove(index.unwrap());
|
||||||
|
}
|
||||||
|
|
||||||
|
let mut rv = array![];
|
||||||
|
for (_i, uid) in random.members().enumerate() {
|
||||||
|
let user = global::get_user(uid.as_i64().unwrap(), &friends);
|
||||||
|
if user["user"]["friend_request_disabled"].to_string() == "1" || user.is_empty() {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
rv.push(user).unwrap();
|
||||||
|
}
|
||||||
|
|
||||||
let resp = object!{
|
let resp = object!{
|
||||||
"code": 0,
|
"code": 0,
|
||||||
"server_time": global::timestamp(),
|
"server_time": global::timestamp(),
|
||||||
"data": {
|
"data": {
|
||||||
friend_list: []
|
friend_list: rv
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
global::send(resp)
|
global::send(resp)
|
||||||
|
|
|
@ -235,7 +235,7 @@ pub fn get_user(id: i64, friends: &JsonValue) -> JsonValue {
|
||||||
guest_smile_card: get_card(user["user"]["guest_smile_master_card_id"].as_i64().unwrap_or(0), &user),
|
guest_smile_card: get_card(user["user"]["guest_smile_master_card_id"].as_i64().unwrap_or(0), &user),
|
||||||
guest_cool_card: get_card(user["user"]["guest_cool_master_card_id"].as_i64().unwrap_or(0), &user),
|
guest_cool_card: get_card(user["user"]["guest_cool_master_card_id"].as_i64().unwrap_or(0), &user),
|
||||||
guest_pure_card: get_card(user["user"]["guest_pure_master_card_id"].as_i64().unwrap_or(0), &user),
|
guest_pure_card: get_card(user["user"]["guest_pure_master_card_id"].as_i64().unwrap_or(0), &user),
|
||||||
master_title_ids: user["master_title_ids"].clone()
|
master_title_ids: user["user"]["master_title_ids"].clone()
|
||||||
};
|
};
|
||||||
rv["user"].remove("sif_user_id");
|
rv["user"].remove("sif_user_id");
|
||||||
rv["user"].remove("ss_user_id");
|
rv["user"].remove("ss_user_id");
|
||||||
|
|
|
@ -4,6 +4,7 @@ use crate::router::global;
|
||||||
use crate::encryption;
|
use crate::encryption;
|
||||||
use actix_web::{HttpResponse, HttpRequest};
|
use actix_web::{HttpResponse, HttpRequest};
|
||||||
use crate::router::userdata;
|
use crate::router::userdata;
|
||||||
|
use rand::Rng;
|
||||||
|
|
||||||
pub fn retire(_req: HttpRequest, _body: String) -> HttpResponse {
|
pub fn retire(_req: HttpRequest, _body: String) -> HttpResponse {
|
||||||
let resp = object!{
|
let resp = object!{
|
||||||
|
@ -18,15 +19,27 @@ pub fn retire(_req: HttpRequest, _body: String) -> HttpResponse {
|
||||||
global::send(resp)
|
global::send(resp)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fn random_number(lowest: usize, highest: usize) -> usize {
|
||||||
|
if lowest == highest {
|
||||||
|
return lowest;
|
||||||
|
}
|
||||||
|
assert!(lowest < highest);
|
||||||
|
|
||||||
|
rand::thread_rng().gen_range(lowest..highest + 1)
|
||||||
|
}
|
||||||
|
|
||||||
pub fn guest(req: HttpRequest, body: String) -> HttpResponse {
|
pub fn guest(req: HttpRequest, body: String) -> HttpResponse {
|
||||||
let key = global::get_login(req.headers(), &body);
|
let key = global::get_login(req.headers(), &body);
|
||||||
|
let user_id = userdata::get_acc(&key)["user"]["id"].as_i64().unwrap();
|
||||||
let friends = userdata::get_acc_friends(&key);
|
let friends = userdata::get_acc_friends(&key);
|
||||||
|
let user = userdata::get_acc(&key);
|
||||||
|
|
||||||
let mut guest_list = array![];
|
let mut guest_list = array![];
|
||||||
if friends["friend_user_id_list"].len() == 0 {
|
if user["tutorial_step"].as_i32().unwrap() != 130 {
|
||||||
guest_list.push(object!{
|
guest_list.push(object!{
|
||||||
"user": {
|
"user": {
|
||||||
"name": "A Nice Guest","comment":"Enjoy your live show!",
|
"name": "A VERY Nice Guest",
|
||||||
|
"comment": "Enjoy your first live show!",
|
||||||
"exp": 900,
|
"exp": 900,
|
||||||
"main_deck_slot": 1,
|
"main_deck_slot": 1,
|
||||||
"favorite_master_card_id": 10010013,
|
"favorite_master_card_id": 10010013,
|
||||||
|
@ -70,11 +83,72 @@ pub fn guest(req: HttpRequest, body: String) -> HttpResponse {
|
||||||
"status":0
|
"status":0
|
||||||
}).unwrap();
|
}).unwrap();
|
||||||
} else {
|
} else {
|
||||||
for (i, uid) in friends["friend_user_id_list"].members().enumerate() {
|
if friends["friend_user_id_list"].len() != 0 {
|
||||||
if i > 10 {
|
guest_list.push(global::get_user(friends["friend_user_id_list"][random_number(0, friends["friend_user_id_list"].len() - 1)].as_i64().unwrap(), &friends)).unwrap();
|
||||||
break;
|
}
|
||||||
|
let expected: usize = 5;
|
||||||
|
if guest_list.len() < expected {
|
||||||
|
let mut random = userdata::get_random_uids((expected-guest_list.len()) as i32);
|
||||||
|
let index = random.members().into_iter().position(|r| *r.to_string() == user_id.to_string());
|
||||||
|
if !index.is_none() {
|
||||||
|
random.array_remove(index.unwrap());
|
||||||
}
|
}
|
||||||
guest_list.push(global::get_user(uid.as_i64().unwrap(), &friends)).unwrap();
|
|
||||||
|
for (_i, uid) in random.members().enumerate() {
|
||||||
|
let guest = global::get_user(uid.as_i64().unwrap(), &friends);
|
||||||
|
if guest["user"]["friend_request_disabled"].to_string() == "1" || guest.is_empty() {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
guest_list.push(guest).unwrap();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if guest_list.len() == 0 {
|
||||||
|
guest_list.push(object!{
|
||||||
|
"user": {
|
||||||
|
"name": "A sad Guest",
|
||||||
|
"comment": "Cant believe you're the only person on this server!",
|
||||||
|
"exp": 900,
|
||||||
|
"main_deck_slot": 1,
|
||||||
|
"favorite_master_card_id": 10010013,
|
||||||
|
"favorite_card_evolve": 0,
|
||||||
|
"guest_smile_master_card_id": 10010013,
|
||||||
|
"guest_cool_master_card_id": 10010013,
|
||||||
|
"guest_pure_master_card_id": 10010013,
|
||||||
|
"friend_request_disabled": 1,
|
||||||
|
"master_title_ids": [3000001,0],
|
||||||
|
"profile_settings": [1,2,3,4,5,6,7],
|
||||||
|
"last_login_time": 1708699449
|
||||||
|
},
|
||||||
|
"favorite_card": {
|
||||||
|
"id": 0,
|
||||||
|
"master_card_id": 10010013,
|
||||||
|
"exp": 1025,
|
||||||
|
"skill_exp": 0,
|
||||||
|
"evolve": []
|
||||||
|
},
|
||||||
|
"guest_smile_card": {
|
||||||
|
"id": 0,
|
||||||
|
"master_card_id": 10010013,
|
||||||
|
"exp": 1025,
|
||||||
|
"skill_exp": 0,
|
||||||
|
"evolve": []
|
||||||
|
},
|
||||||
|
"guest_cool_card": {
|
||||||
|
"id": 0,
|
||||||
|
"master_card_id": 10010013,
|
||||||
|
"exp": 1025,
|
||||||
|
"skill_exp": 0,
|
||||||
|
"evolve": []
|
||||||
|
},
|
||||||
|
"guest_pure_card": {
|
||||||
|
"id": 0,
|
||||||
|
"master_card_id": 10010013,
|
||||||
|
"exp": 1025,
|
||||||
|
"skill_exp": 0,
|
||||||
|
"evolve": []
|
||||||
|
},
|
||||||
|
"status":0
|
||||||
|
}).unwrap();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
use rusqlite::{Connection, params, ToSql};
|
use rusqlite::{Connection, params, ToSql};
|
||||||
use std::sync::{Mutex, MutexGuard};
|
use std::sync::{Mutex, MutexGuard};
|
||||||
use lazy_static::lazy_static;
|
use lazy_static::lazy_static;
|
||||||
use json::{JsonValue, object};
|
use json::{JsonValue, array, object};
|
||||||
use crate::router::global;
|
use crate::router::global;
|
||||||
use rand::Rng;
|
use rand::Rng;
|
||||||
|
|
||||||
|
@ -55,7 +55,7 @@ fn lock_and_select(command: &str, args: &[&dyn ToSql]) -> Result<String, rusqlit
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
fn create_store_v2(table: &str) {
|
fn lock_and_select_all(command: &str, args: &[&dyn ToSql]) -> Result<JsonValue, rusqlite::Error> {
|
||||||
loop {
|
loop {
|
||||||
match ENGINE.lock() {
|
match ENGINE.lock() {
|
||||||
Ok(mut result) => {
|
Ok(mut result) => {
|
||||||
|
@ -63,11 +63,22 @@ fn create_store_v2(table: &str) {
|
||||||
init(&mut result);
|
init(&mut result);
|
||||||
}
|
}
|
||||||
let conn = result.as_ref().unwrap();
|
let conn = result.as_ref().unwrap();
|
||||||
conn.execute(
|
let mut stmt = conn.prepare(command)?;
|
||||||
table,
|
let map = stmt.query_map(args, |row| {
|
||||||
(),
|
match row.get::<usize, i64>(0) {
|
||||||
).unwrap();
|
Ok(val) => Ok(val.to_string()),
|
||||||
return;
|
Err(_) => row.get(0)
|
||||||
|
}
|
||||||
|
})?;
|
||||||
|
let mut rv = array![];
|
||||||
|
for val in map {
|
||||||
|
let res = val?;
|
||||||
|
match res.clone().parse::<i64>() {
|
||||||
|
Ok(v) => rv.push(v).unwrap(),
|
||||||
|
Err(_) => rv.push(res).unwrap()
|
||||||
|
};
|
||||||
|
}
|
||||||
|
return Ok(rv);
|
||||||
}
|
}
|
||||||
Err(_) => {
|
Err(_) => {
|
||||||
std::thread::sleep(std::time::Duration::from_millis(15));
|
std::thread::sleep(std::time::Duration::from_millis(15));
|
||||||
|
@ -75,6 +86,9 @@ fn create_store_v2(table: &str) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
fn create_store_v2(table: &str) {
|
||||||
|
lock_and_exec(table, params!());
|
||||||
|
}
|
||||||
|
|
||||||
fn create_token_store() {
|
fn create_token_store() {
|
||||||
create_store_v2("CREATE TABLE IF NOT EXISTS tokens (
|
create_store_v2("CREATE TABLE IF NOT EXISTS tokens (
|
||||||
|
@ -377,3 +391,10 @@ pub fn friend_remove(uid: i64, requestor: i64) {
|
||||||
}
|
}
|
||||||
lock_and_exec("UPDATE users SET friends=?1 WHERE user_id=?2", params!(json::stringify(friends), uid));
|
lock_and_exec("UPDATE users SET friends=?1 WHERE user_id=?2", params!(json::stringify(friends), uid));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub fn get_random_uids(count: i32) -> JsonValue {
|
||||||
|
if count <= 0 {
|
||||||
|
return array![];
|
||||||
|
}
|
||||||
|
lock_and_select_all(&format!("SELECT user_id FROM uids ORDER BY RANDOM() LIMIT {}", count), params!()).unwrap()
|
||||||
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue