diff --git a/gm-server/app/service/users.ts b/gm-server/app/service/users.ts index 545c21581..eeffce4a1 100644 --- a/gm-server/app/service/users.ts +++ b/gm-server/app/service/users.ts @@ -571,7 +571,7 @@ export default class GMUsers extends Service { let giftCode = await GiftCodeModel.findByGiftId(id); if(!giftCode) return ctx.service.utils.resResult(STATUS.WRONG_PARMS); - let giftCodeDetails = await GiftCodeDetailModel.findAllCodeByGiftId(giftCode.id, giftCode.generateCnt); + let giftCodeDetails = await GiftCodeDetailModel.findAllCodeByGiftId(giftCode.id); if(fileType == 'txt') { let codes: string[] = []; diff --git a/shared/db/GiftCodeDetail.ts b/shared/db/GiftCodeDetail.ts index 3b2932870..bfd881683 100644 --- a/shared/db/GiftCodeDetail.ts +++ b/shared/db/GiftCodeDetail.ts @@ -27,7 +27,8 @@ class RoleRecord { * 领取记录 **/ @modelOptions({ schemaOptions: { id: false } }) -@index({ code: 1, giftId: 1 }) +@index({ code: 1 }) +@index({ giftId: 1 }) export default class GiftCodeDetail extends BaseModel { @prop({ required: true, default: '' }) @@ -69,13 +70,11 @@ export default class GiftCodeDetail extends BaseModel { } - public static async findAllCodeByGiftId(id: number, cnt: number) { - let n = Math.ceil(cnt/1000); - let result: GiftCodeDetailType[] = []; - for(let i = 0; i < n; i++) { - let codes = await GiftCodeDetailModel.find({ giftId: id }).limit(1000).skip(i * 1000).sort({ _id: 1 }).lean(); - result.push(...codes); - } + public static async findAllCodeByGiftId(id: number) { + let result: GiftCodeDetailType[] = await GiftCodeDetailModel.aggregate([ + { $match: { giftId: id } }, + { $project: { code: 1 } } + ]); return result; }