登录:绑定、服务器列表
This commit is contained in:
@@ -18,6 +18,9 @@ export const STATUS = {
|
||||
NEW_SERVER_ERR: { code: 10007, simStr: '添加新服务器失败' },
|
||||
SERVER_EXISTS: { code: 10008, simStr: '服务器已存在' },
|
||||
PASSWORD_ERR: { code: 10009, simStr: '密码错误' },
|
||||
PASSWORD_ILLEGEL: { code: 10010, simStr: '请输入密码' },
|
||||
TEL_HAS_USED: { code: 10011, simStr: '该手机号已被使用' },
|
||||
ACCOUNT_NOT_GUEST: { code: 10012, simStr: '该账号已绑定过' },
|
||||
// 战斗相关状态 20000 - 29999
|
||||
// 战斗通用 20000 - 20099
|
||||
BATTLE_MISS_INFO: { code: 20001, simStr: '缺少关卡信息' },
|
||||
|
||||
@@ -1,28 +1,60 @@
|
||||
import { APP_ID } from './../consts';
|
||||
import BaseModel from './BaseModel';
|
||||
import { index, getModelForClass, prop, DocumentType, modelOptions } from '@typegoose/typegoose';
|
||||
import { getSeconds } from 'app/pubUtils/timeUtil';
|
||||
|
||||
class ServerInfo {
|
||||
@prop({ required: true })
|
||||
id: number;
|
||||
id: number; // 小区id
|
||||
|
||||
@prop({ required: true })
|
||||
name: string;
|
||||
name: string; // 小区区名
|
||||
|
||||
@prop({ required: true })
|
||||
host: string;
|
||||
groupId: number; // 大区id
|
||||
|
||||
@prop({ required: true })
|
||||
groupName: string; // 大区区名
|
||||
|
||||
@prop({ required: true })
|
||||
host: string; // pinus连接地址
|
||||
|
||||
@prop({ required: false })
|
||||
port: number;
|
||||
port: number; // pinus端口
|
||||
|
||||
@prop({ required: true })
|
||||
status: number;
|
||||
serverStatus: number; // 服务器状态
|
||||
|
||||
public get status() {
|
||||
let now = new Date();
|
||||
if( now > this.openTime) {
|
||||
return this.serverStatus;
|
||||
} else {
|
||||
return 3; // 未开服
|
||||
}
|
||||
}
|
||||
|
||||
@prop({ required: true, set:(val: Date) => { return val }, get: (val: Date) => {return getSeconds(val)} })
|
||||
openTime: Date;
|
||||
|
||||
@prop({ required: true })
|
||||
createTime: Date;
|
||||
|
||||
@prop({ required: true })
|
||||
serverType: string;
|
||||
|
||||
constructor(id: number, name: string, groupId: number, groupName: string, host: string, port: number, serverStatus: number, serverType: string, openTime?: Date) {
|
||||
this.id = id;
|
||||
this.name = name;
|
||||
this.groupId = groupId;
|
||||
this.groupName = groupName;
|
||||
this.host = host;
|
||||
this.port = port;
|
||||
this.serverStatus = serverStatus;
|
||||
this.serverType = serverType;
|
||||
this.openTime = openTime||new Date();
|
||||
this.createTime = new Date();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -65,26 +97,23 @@ export default class Game extends BaseModel {
|
||||
}
|
||||
}
|
||||
|
||||
public static async getServerListByType(serverType: string) {
|
||||
let game: GameType = await GameModel.findOne().lean();
|
||||
public static async getServerList() {
|
||||
let game: GameType = await GameModel.findOne().lean({ getter: true, virtuals: true });
|
||||
if (!game) {
|
||||
const serverInfo: ServerInfo = { id: 1, name: '常山少年', host: 'pinus_test.trgame.cn', port: 3014, status: 1, createTime: new Date(), serverType: 'official' };
|
||||
const serverInfo = new ServerInfo(1, '常山少年', 1, '逍遥津', 'pinus_test.trgame.cn', 3014, 1, 'official');
|
||||
const iconUrl = `https://download.tgamebox.cn/avatar/${APP_ID}/1.png`;
|
||||
game = await GameModel.findOneAndUpdate(
|
||||
{},
|
||||
{ id: 1, name: '赵云传', nameEn: 'zyz', des: '牛逼的战棋', iconUrl, version: '0.0.1', versionCode: 1, $push: { serverList: serverInfo } },
|
||||
{ upsert: true, new: true },
|
||||
).lean();
|
||||
).lean({ getter: true, virtuals: true });
|
||||
}
|
||||
console.log(serverType, game);
|
||||
let serverList: Array<ServerInfo> = game ? game.serverList : [];
|
||||
serverList = serverList.filter(item => { return item.serverType === serverType; });
|
||||
console.log(serverType, serverList);
|
||||
return serverList;
|
||||
}
|
||||
|
||||
public static async newServer(serverId: number, serverType: string, name: string, host: string, port: number, status: number, lean = true) {
|
||||
let serverInfo: ServerInfo = {id: serverId, name, host, port, status, createTime: new Date(), serverType};
|
||||
let serverInfo = new ServerInfo(serverId, name, 1, '逍遥津', host, port, status, serverType);
|
||||
let game: GameType = await GameModel.findOneAndUpdate({}, {$push: {serverList: serverInfo}}, {new: true}).lean(lean);
|
||||
return game;
|
||||
}
|
||||
|
||||
@@ -141,7 +141,13 @@ export default class User extends BaseModel {
|
||||
|
||||
public static async setPass(uid: number, password: string, lean = true) {
|
||||
let r = await this.encryptPass(password);
|
||||
const user: UserType = await UserModel.findOneAndUpdate({ uid }, { $set: { password: r.npassword, salt: r.salt, hasSetPw: true }}).lean(lean);
|
||||
const user: UserType = await UserModel.findOneAndUpdate({ uid }, { $set: { password: r.npassword, salt: r.salt, hasSetPw: true }}, {new: true}).lean(lean);
|
||||
return user;
|
||||
}
|
||||
|
||||
public static async bindTel(uid: number, tel: string, password: string, lean = true) {
|
||||
let r = await this.encryptPass(password);
|
||||
const user: UserType = await UserModel.findOneAndUpdate({ uid, isGuest: true }, { $set: { password: r.npassword, salt: r.salt, hasSetPw: true, tel, isGuest: false }}, {new: true}).lean(lean);
|
||||
return user;
|
||||
}
|
||||
|
||||
@@ -183,6 +189,11 @@ export default class User extends BaseModel {
|
||||
return user;
|
||||
}
|
||||
|
||||
public static async authentication(uid: number, birthday: string, pi: string, lean = true) {
|
||||
const user: UserType = await UserModel.findOneAndUpdate({ uid }, { hasAuthenticated: true, birthday, pi }, {new: true}).lean(lean);
|
||||
return user;
|
||||
}
|
||||
|
||||
public static async findUserByField(field: string, value?: Array<number|string>, lean = true) {
|
||||
let searchObj = {};
|
||||
if(field != 'all') {
|
||||
|
||||
Reference in New Issue
Block a user