后台:账号管理
This commit is contained in:
@@ -16,6 +16,11 @@ export default class FooBoot implements IBoot {
|
||||
// this is the last chance to modify the config.
|
||||
await this.connectDB(this.app)
|
||||
await this.connectGMDB(this.app);
|
||||
|
||||
this.app.config.realEnv = this.app.config.env;
|
||||
if(this.app.config.env == 'local') {
|
||||
this.app.config.realEnv = 'development';
|
||||
}
|
||||
}
|
||||
|
||||
configDidLoad() {
|
||||
|
||||
@@ -5,8 +5,8 @@ export default class UserController extends Controller {
|
||||
|
||||
public async getuserlist() {
|
||||
const { ctx } = this;
|
||||
const { field, value } = ctx.request.body;
|
||||
ctx.body = await ctx.service.users.getuserlist(field, value);
|
||||
const { page, pageSize, sortField, sortOrder, form } = ctx.request.body;
|
||||
ctx.body = await ctx.service.users.getuserlist(page, pageSize, sortField, sortOrder, form);
|
||||
}
|
||||
|
||||
public async createRole() {
|
||||
|
||||
@@ -210,9 +210,7 @@ export default class Game extends Service {
|
||||
const total = await NoticeModel.countByCondition( form )
|
||||
return ctx.service.utils.resResult(STATUS.SUCCESS, {
|
||||
list: list.map(cur => {
|
||||
let env = this.app.config.env;
|
||||
if(env == 'local') env = 'development';
|
||||
return { ...cur, showEndTime: cur.showEndTime.getTime(), showStartTime: cur.showStartTime.getTime(), env}
|
||||
return { ...cur, showEndTime: cur.showEndTime.getTime(), showStartTime: cur.showStartTime.getTime(), env: this.app.config.realEnv }
|
||||
}), total
|
||||
});
|
||||
}
|
||||
|
||||
@@ -21,6 +21,7 @@ import { CreateHeroes, deletRole } from '@pubUtils/roleUtil';
|
||||
import { RScriptRecordModel } from '@db/RScriptRecord';
|
||||
import { DicWar } from '@pubUtils/dictionary/DicWar';
|
||||
import { SkinModel } from '@db/Skin';
|
||||
import { SearchUserParam } from '@domain/backEndField/search';
|
||||
|
||||
// import { resResult } from '@pubUtils/util';
|
||||
|
||||
@@ -34,49 +35,22 @@ export default class GMUsers extends Service {
|
||||
/**
|
||||
* 根据类型等搜索玩家
|
||||
*/
|
||||
public async getuserlist(field: string = 'all', value: string = '') {
|
||||
public async getuserlist(page: number, pageSize: number, sortField: string, sortOrder: string, form: SearchUserParam) {
|
||||
const { ctx } = this;
|
||||
|
||||
let arr = new Array(), flag = 0;
|
||||
if (value == '') field = 'all';
|
||||
let valueArr = value.split(',');
|
||||
for (let i of valueArr) {
|
||||
if (field == 'uid') {
|
||||
let d = parseInt(i);
|
||||
if (isNaN(d)) {
|
||||
flag = 1; break;
|
||||
} else {
|
||||
arr.push(d);
|
||||
}
|
||||
} else if (field == 'username' || field == 'tel') {
|
||||
arr.push(i);
|
||||
} else if (field == 'all') {
|
||||
break;
|
||||
} else {
|
||||
flag = 1; break;
|
||||
}
|
||||
}
|
||||
const users = await UserModel.findByCondition(page, pageSize, sortField, sortOrder, form);
|
||||
const total = await UserModel.countByCondition( form )
|
||||
|
||||
if (flag) {
|
||||
return ctx.service.utils.resResult(STATUS.WRONG_PARMS);
|
||||
}
|
||||
|
||||
let users = await UserModel.findUserByField(field, valueArr);
|
||||
|
||||
if (users) {
|
||||
let list = new Array();
|
||||
let list = [];
|
||||
for (let user of users) {
|
||||
let role = await RoleModel.findAllByUid(user.uid);
|
||||
let sms = await smsModel.findByTel(user.tel);
|
||||
|
||||
list.push({ ...user, role, isFixed: sms ? sms.isFixed : false, code: sms ? sms.code : "" });
|
||||
list.push({ ...user, role, isFixed: sms ? sms.isFixed : false, code: sms ? sms.code : "", env: ctx.app.config.realEnv });
|
||||
}
|
||||
|
||||
return ctx.service.utils.resResult(STATUS.SUCCESS, { list })
|
||||
} else {
|
||||
console.error('userlist not found');
|
||||
return ctx.service.utils.resResult(STATUS.INTERNAL_ERR);
|
||||
}
|
||||
return ctx.service.utils.resResult(STATUS.SUCCESS, { list, total })
|
||||
|
||||
}
|
||||
|
||||
public async createRole(uid: number, serverId: number, roleName: string) {
|
||||
@@ -602,7 +576,7 @@ export default class GMUsers extends Service {
|
||||
|
||||
return ctx.service.utils.resResult(STATUS.SUCCESS);
|
||||
} catch (e) {
|
||||
console.error(e.stack)
|
||||
console.error((<Error>e).stack)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -625,7 +599,7 @@ export default class GMUsers extends Service {
|
||||
|
||||
return ctx.service.utils.resResult(STATUS.SUCCESS);
|
||||
} catch (e) {
|
||||
console.error(e.stack)
|
||||
console.error((<Error>e).stack)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -649,7 +623,7 @@ export default class GMUsers extends Service {
|
||||
|
||||
return ctx.service.utils.resResult(STATUS.SUCCESS);
|
||||
} catch (e) {
|
||||
console.error(e.stack)
|
||||
console.error((<Error>e).stack)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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,22 +275,42 @@ 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 });
|
||||
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;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
5
shared/domain/backEndField/search.ts
Normal file
5
shared/domain/backEndField/search.ts
Normal file
@@ -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