diff --git a/gm-server/app/controller/log.ts b/gm-server/app/controller/log.ts index f908039b5..01f2a169a 100644 --- a/gm-server/app/controller/log.ts +++ b/gm-server/app/controller/log.ts @@ -8,4 +8,9 @@ export default class LogController extends Controller { ctx.body = await ctx.service.log.getGmLog(page, pageSize, form); } + public async getUserLog() { + const { ctx } = this; + const { pageSize, page, form } = ctx.request.body; + ctx.body = await ctx.service.log.getUserLog(page, pageSize, form); + } } diff --git a/gm-server/app/router.ts b/gm-server/app/router.ts index cbf756b05..29b02ea60 100644 --- a/gm-server/app/router.ts +++ b/gm-server/app/router.ts @@ -97,4 +97,5 @@ export default (app: Application) => { router.post('/api/mail/updateservermailtxt', tokenParser, controller.mail.updateGMMail); router.post('/api/log/getgmlog', controller.log.getGmLog); + router.post('/api/log/getuserlog', controller.log.getUserLog); }; diff --git a/gm-server/app/service/Log.ts b/gm-server/app/service/Log.ts index 8425cda11..0122676e3 100644 --- a/gm-server/app/service/Log.ts +++ b/gm-server/app/service/Log.ts @@ -1,7 +1,8 @@ import { Service } from 'egg'; import { STATUS } from '@consts'; -import { SearchLogParam } from '@domain/backEndField/search'; +import { SearchLogParam, SearchUserLogParam } from '@domain/backEndField/search'; import { GMRecordModel } from '@db/GMRecord'; +import { UserLogModel } from '@db/UserLog'; /** * Test Service @@ -9,7 +10,7 @@ import { GMRecordModel } from '@db/GMRecord'; export default class Log extends Service { /** - * 修改用户组 + * 获取后台操作日志 */ public async getGmLog(page: number, pageSize: number, form: SearchLogParam) { const {ctx} = this; @@ -18,4 +19,13 @@ export default class Log extends Service { return ctx.service.utils.resResult(STATUS.SUCCESS, { list }); } + /** + * 获取玩家日志 + */ + public async getUserLog(page: number, pageSize: number, form: SearchUserLogParam) { + const {ctx} = this; + + let list = await UserLogModel.findByCondition(page, pageSize, form); + return ctx.service.utils.resResult(STATUS.SUCCESS, { list: list.map(cur => ({...cur, env: ctx.app.config.realEnv})) }); + } } diff --git a/shared/db/UserLog.ts b/shared/db/UserLog.ts index 449cf108f..8138fa20f 100644 --- a/shared/db/UserLog.ts +++ b/shared/db/UserLog.ts @@ -1,5 +1,6 @@ import BaseModel from './BaseModel'; import { index, getModelForClass, prop, DocumentType } from '@typegoose/typegoose'; +import { SearchUserLogParam } from '../domain/backEndField/search'; class Reward { @prop({ required: true }) @@ -105,6 +106,26 @@ export default class UserLog extends BaseModel { const r = await UserLogModel.insertMany(params); return r; } + + private static getSearchObj(form: SearchUserLogParam) { + let searchObj = {}; + if (form.type) searchObj['type'] = form.type; + if (form.serverId) searchObj['serverId'] = form.serverId; + if (form.uid) searchObj['uid'] = form.uid; + if (form.roleId) searchObj['roleId'] = form.roleId; + if(form.roleName) searchObj['roleName'] = { $regex: new RegExp(form.roleName.toString(), 'i') }; + if (form.createTimeStart && form.createTimeEnd) { + searchObj['createdAt'] = { $lte: new Date(form.createTimeEnd * 1000), $gte: new Date(form.createTimeStart * 100) }; + } + return searchObj + } + + public static async findByCondition(page: number, pageSize: number, form: SearchUserLogParam = {}) { + let searchObj = UserLogModel.getSearchObj(form); + const result: UserLogModelType[] = await UserLogModel.find(searchObj).limit(pageSize).skip((page - 1) * pageSize).sort({ createdAt: -1 }).select('-_id').lean({ getters: true, virtuals: true }); + return result; + + } } export let UserLogModel = getModelForClass(UserLog); diff --git a/shared/domain/backEndField/search.ts b/shared/domain/backEndField/search.ts index 3612af716..b482ea244 100644 --- a/shared/domain/backEndField/search.ts +++ b/shared/domain/backEndField/search.ts @@ -80,4 +80,15 @@ export interface SearchLogParam { createTimeStart?: number; createTimeEnd?: number; uid?: number; +} + + +export interface SearchUserLogParam { + type?: string; + serverId?: number; + uid?: number; + roleId?: string; + roleName?: string; + createTimeStart?: number; + createTimeEnd?: number; } \ No newline at end of file