后台:账号管理
This commit is contained in:
+32
-15
@@ -4,6 +4,7 @@ import BaseModel from './BaseModel';
|
||||
import { index, getModelForClass, prop, DocumentType } from '@typegoose/typegoose';
|
||||
import { genCode, aesEncryptcfb, aesDecryptcfb } from '../pubUtils/util';
|
||||
import { LoginValidateData37, ChannelInfo } from '../domain/sdk';
|
||||
import { SearchUserParam } from '@domain/backEndField/search';
|
||||
const bcrypt = require('bcrypt');
|
||||
const SALT_WORK_FACTOR = 5
|
||||
|
||||
@@ -107,10 +108,6 @@ export default class User extends BaseModel {
|
||||
@prop({ required: true, default: false })
|
||||
blocked: boolean;
|
||||
|
||||
// 用户权限:0-普通用户,1-测试用户
|
||||
@prop({ required: true, default: 0 })
|
||||
auth: number;
|
||||
|
||||
// 个推CID
|
||||
@prop({ required: false, default: "" })
|
||||
getuiCID: string;
|
||||
@@ -278,21 +275,41 @@ export default class User extends BaseModel {
|
||||
return user;
|
||||
}
|
||||
|
||||
public static async findUserByField(field: string, value?: Array<number | string>) {
|
||||
let searchObj = {};
|
||||
if (field != 'all') {
|
||||
searchObj[field] = {
|
||||
$in: value
|
||||
};
|
||||
}
|
||||
const user: UserType[] = await UserModel.find(searchObj).select('uid tel username serverType auth').lean({ getters: true });
|
||||
public static async updatePlayTime(userCode: string, isGuest: boolean, todayPlayTime: number, playTime: number) {
|
||||
const user: UserType = await UserModel.findOneAndUpdate({ userCode }, { $set: { guestTime: isGuest?playTime: 0, todayPlayTime: todayPlayTime, playTime } }, { new: true }).lean({ getters: true });
|
||||
return user;
|
||||
}
|
||||
|
||||
|
||||
public static async updatePlayTime(userCode: string, isGuest: boolean, todayPlayTime: number, playTime: number) {
|
||||
const user: UserType = await UserModel.findOneAndUpdate({ userCode }, { $set: { guestTime: isGuest?playTime: 0, todayPlayTime: todayPlayTime, playTime } }, { new: true }).lean({ getters: true });
|
||||
return user;
|
||||
private static getSearchObj(form: SearchUserParam) {
|
||||
let searchObj = {};
|
||||
if(form['uid']) searchObj['uid'] = form.uid;
|
||||
if(form['tel']) searchObj['tel'] = form.tel;
|
||||
if(form.channelType && form.channelType != 'normal') searchObj['channelType'] = form.channelType;
|
||||
return searchObj
|
||||
}
|
||||
|
||||
public static async findByCondition(page: number, pageSize: number, sortField: string = 'updatedAt', sortOrder: string = 'descend', form: SearchUserParam = {}) {
|
||||
|
||||
let searchObj = this.getSearchObj(form);
|
||||
let sort = {};
|
||||
if(sortField && sortOrder) {
|
||||
if(sortOrder == 'ascend') {
|
||||
sort[sortField] = 1;
|
||||
} else if (sortOrder == 'descend') {
|
||||
sort[sortField] = -1;
|
||||
}
|
||||
}
|
||||
const result: UserType[] = await UserModel.find(searchObj).limit(pageSize).skip((page - 1) * pageSize).sort(sort).select('-_id -__v -password -salt -token').lean({ getters: true, virtuals: true });
|
||||
return result;
|
||||
|
||||
}
|
||||
|
||||
public static async countByCondition(form: SearchUserParam = {}) {
|
||||
|
||||
let searchObj = this.getSearchObj(form);
|
||||
const result = await UserModel.count(searchObj);
|
||||
return result;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -0,0 +1,5 @@
|
||||
export interface SearchUserParam {
|
||||
uid?: number;
|
||||
tel?: string;
|
||||
channelType?: string;
|
||||
}
|
||||
@@ -662,14 +662,11 @@ export function getFloorStatus(gachaId: number, floor: Floor[]) {
|
||||
export async function checkWhiteListWithUid(uid: number) {
|
||||
let user = await UserModel.findUserByUid(uid);
|
||||
if(!user) return false;
|
||||
let { tel, ip, auth } = user;
|
||||
return await checkWhiteList(tel, ip, auth);
|
||||
let { tel, ip } = user;
|
||||
return await checkWhiteList(tel, ip);
|
||||
}
|
||||
|
||||
export async function checkWhiteList(tel: string, ip: string, auth: number) {
|
||||
if(auth == 1) {
|
||||
return true;
|
||||
}
|
||||
export async function checkWhiteList(tel: string, ip: string) {
|
||||
if(tel) {
|
||||
let result = await WhiteListModel.checkTel(tel);
|
||||
if(!!result) return true;
|
||||
|
||||
Reference in New Issue
Block a user