diff --git a/gm-server/app/controller/log.ts b/gm-server/app/controller/log.ts index 01f2a169a..e13daa854 100644 --- a/gm-server/app/controller/log.ts +++ b/gm-server/app/controller/log.ts @@ -13,4 +13,10 @@ export default class LogController extends Controller { const { pageSize, page, form } = ctx.request.body; ctx.body = await ctx.service.log.getUserLog(page, pageSize, form); } + + public async getGachaLog() { + const { ctx } = this; + const { pageSize, page, form } = ctx.request.body; + ctx.body = await ctx.service.log.getGachaLog(page, pageSize, form); + } } diff --git a/gm-server/app/router.ts b/gm-server/app/router.ts index 40b044d15..75c9338cf 100644 --- a/gm-server/app/router.ts +++ b/gm-server/app/router.ts @@ -108,4 +108,5 @@ export default (app: Application) => { router.post('/api/log/getgmlog', tokenParser, controller.log.getGmLog); router.post('/api/log/getuserlog', tokenParser, controller.log.getUserLog); + router.post('/api/log/getgachalog', controller.log.getGachaLog); }; diff --git a/gm-server/app/service/Log.ts b/gm-server/app/service/Log.ts index 0122676e3..03f3d879a 100644 --- a/gm-server/app/service/Log.ts +++ b/gm-server/app/service/Log.ts @@ -3,6 +3,7 @@ import { STATUS } from '@consts'; import { SearchLogParam, SearchUserLogParam } from '@domain/backEndField/search'; import { GMRecordModel } from '@db/GMRecord'; import { UserLogModel } from '@db/UserLog'; +import { UserGachaRecModel } from '@db/UserGachaRec'; /** * Test Service @@ -28,4 +29,14 @@ export default class Log extends Service { 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})) }); } + + /** + * 获取抽卡日志 + */ + public async getGachaLog(page: number, pageSize: number, form: SearchUserLogParam) { + const {ctx} = this; + + let list = await UserGachaRecModel.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/UserGachaRec.ts b/shared/db/UserGachaRec.ts index b8fe871e7..aece35946 100644 --- a/shared/db/UserGachaRec.ts +++ b/shared/db/UserGachaRec.ts @@ -2,6 +2,7 @@ import BaseModel from './BaseModel'; import { index, getModelForClass, prop, DocumentType, modelOptions } from '@typegoose/typegoose'; import { GachaResultIndb } from '../domain/activityField/gachaField'; import { genCode } from '../pubUtils/util'; +import { SearchGachaLogParam } from '../domain/backEndField/search'; /** * 玩家抽卡表 @@ -34,6 +35,24 @@ export default class UserGachaRec extends BaseModel { const rec = await UserGachaRecModel.findOneAndUpdate({ code }, { $set: { roleId, gachaId, activityId, count, result } }, { new: true, upsert: true }); return rec; } + + private static getSearchObj(form: SearchGachaLogParam) { + let searchObj = {}; + if (form.roleId) searchObj['roleId'] = form.roleId; + if (form.gachaId) searchObj['gachaId'] = form.gachaId; + if (form.count) searchObj['count'] = form.count; + if (form.hid) searchObj['result.hid'] = form.hid; + if (form.createTimeStart && form.createTimeEnd) { + searchObj['createdAt'] = { $lte: new Date(form.createTimeEnd * 1000), $gte: new Date(form.createTimeStart * 1000) }; + } + return searchObj + } + + public static async findByCondition(page: number, pageSize: number, form: SearchGachaLogParam = {}) { + let searchObj = UserGachaRecModel.getSearchObj(form); + const result: UserGachaRecType[] = await UserGachaRecModel.find(searchObj).limit(pageSize).skip((page - 1) * pageSize).sort({ createdAt: -1 }).select('-_id').lean({ getters: true, virtuals: true }); + return result; + } } export const UserGachaRecModel = getModelForClass(UserGachaRec); diff --git a/shared/domain/backEndField/search.ts b/shared/domain/backEndField/search.ts index 38d745471..61e7465fd 100644 --- a/shared/domain/backEndField/search.ts +++ b/shared/domain/backEndField/search.ts @@ -104,6 +104,16 @@ export interface SearchUserLogParam { createTimeEnd?: number; } + +export interface SearchGachaLogParam { + roleId?: string; + gachaId?: number; + count?: number; + hid?: number; + createTimeStart?: number; + createTimeEnd?: number; +} + export interface SearchOrderParam { roleId?: string; // 角色id localOrderID?: string; // 本地订单号