diff --git a/gm-server/app.ts b/gm-server/app.ts index 08abb9888..7e3ab82ac 100644 --- a/gm-server/app.ts +++ b/gm-server/app.ts @@ -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() { diff --git a/gm-server/app/controller/users.ts b/gm-server/app/controller/users.ts index 03e6a717d..26bd60ce7 100644 --- a/gm-server/app/controller/users.ts +++ b/gm-server/app/controller/users.ts @@ -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() { diff --git a/gm-server/app/service/Game.ts b/gm-server/app/service/Game.ts index b994ba8f9..2e54b45b9 100644 --- a/gm-server/app/service/Game.ts +++ b/gm-server/app/service/Game.ts @@ -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 }); } diff --git a/gm-server/app/service/users.ts b/gm-server/app/service/users.ts index 365828233..c1ce3e817 100644 --- a/gm-server/app/service/users.ts +++ b/gm-server/app/service/users.ts @@ -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 ) + + 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 : "", env: ctx.app.config.realEnv }); } - if (flag) { - return ctx.service.utils.resResult(STATUS.WRONG_PARMS); - } + return ctx.service.utils.resResult(STATUS.SUCCESS, { list, total }) - let users = await UserModel.findUserByField(field, valueArr); - - if (users) { - let list = new Array(); - 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 : "" }); - } - - return ctx.service.utils.resResult(STATUS.SUCCESS, { list }) - } else { - console.error('userlist not found'); - return ctx.service.utils.resResult(STATUS.INTERNAL_ERR); - } } 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((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((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((e).stack) } } diff --git a/shared/db/User.ts b/shared/db/User.ts index 54bc87c94..c400664f4 100644 --- a/shared/db/User.ts +++ b/shared/db/User.ts @@ -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) { - 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; } } diff --git a/shared/domain/backEndField/search.ts b/shared/domain/backEndField/search.ts new file mode 100644 index 000000000..7c6847b8b --- /dev/null +++ b/shared/domain/backEndField/search.ts @@ -0,0 +1,5 @@ +export interface SearchUserParam { + uid?: number; + tel?: string; + channelType?: string; +} \ No newline at end of file diff --git a/shared/pubUtils/util.ts b/shared/pubUtils/util.ts index 54b335f24..191b8a1af 100644 --- a/shared/pubUtils/util.ts +++ b/shared/pubUtils/util.ts @@ -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;