一键领取bug
This commit is contained in:
@@ -42,7 +42,7 @@ export class GuildTrainHandler {
|
||||
}
|
||||
let { trainCount, trainRewards, buyTrainCount } = userGuild;
|
||||
let result:any = getGuildTrainInfo(guildTrain, roleId, trainCount, trainRewards);
|
||||
result.buyTrainCount = buyTrainCount;
|
||||
result.buyTrainCount = buyTrainCount||0;
|
||||
result.trainLv = trainLv;
|
||||
return resResult(STATUS.SUCCESS, result);
|
||||
}
|
||||
|
||||
@@ -160,14 +160,14 @@ export class GMRemote {
|
||||
if (!gmMail || !gmMail.goods.length|| gmMail.endTime < nowSeconds()) {
|
||||
return;
|
||||
}
|
||||
mailGoods.push(...goods);
|
||||
mailGoods.push(...gmMail.goods);
|
||||
} else {
|
||||
if (goods.length)
|
||||
if (!goods.length)
|
||||
return;
|
||||
mailGoods.push(...goods);
|
||||
}
|
||||
mails.push({id: _id, status: MAIL_STATUS.RECEIVED, mailType: MAIL_TYPE.GROUPMAIL});
|
||||
groupMailIds.push(ObjectId(_id));
|
||||
groupMailIds.push(_id);
|
||||
});
|
||||
mailRewards.map(({_id, goods, mailId, mailTemType})=>{
|
||||
if (mailTemType == MAIL_TEM_TYPE.GMTYPE) {
|
||||
@@ -177,12 +177,12 @@ export class GMRemote {
|
||||
}
|
||||
mailGoods.push(...gmMail.goods);
|
||||
} else {
|
||||
if (goods.length)
|
||||
if (!goods.length)
|
||||
return;
|
||||
mailGoods.push(...goods);
|
||||
}
|
||||
mails.push({id: _id, status: MAIL_STATUS.RECEIVED, mailType: MAIL_TYPE.SINGLEMAIL});
|
||||
mailIds.push(ObjectId(_id));
|
||||
mailIds.push(_id);
|
||||
});
|
||||
return {mailIds, groupMailIds, mails, mailGoods};
|
||||
}
|
||||
|
||||
@@ -58,13 +58,13 @@ export class RoleHandler {
|
||||
let resGroupMailIds = await GroupMailModel.findReadAndRewardsMails(roleId);
|
||||
let groupMailIds = resGroupMailIds.map(({_id})=>{
|
||||
mails.push({id:_id, status: MAIL_STATUS.DELETE, mailType: MAIL_TYPE.GROUPMAIL});
|
||||
return ObjectId(_id);
|
||||
return _id;
|
||||
});
|
||||
await GroupMailModel.updateMailStatus(groupMailIds, MAIL_STATUS.DELETE, roleId);
|
||||
let resMailIds = await MailModel.findReadAndRewardsMails(roleId);
|
||||
let mailIds = resMailIds.map(({_id})=>{
|
||||
mails.push({id: _id, status: MAIL_STATUS.DELETE, mailType: MAIL_TYPE.SINGLEMAIL});
|
||||
return ObjectId(_id);
|
||||
return _id;
|
||||
});
|
||||
await MailModel.updateMailStatus(mailIds, MAIL_STATUS.DELETE);
|
||||
|
||||
@@ -106,13 +106,12 @@ export class RoleHandler {
|
||||
} else {//一键领取
|
||||
let groupMailRewards = await GroupMailModel.findRewardsMails(roleId);
|
||||
let mailRewards = await MailModel.findRewardsMails(roleId);
|
||||
let { mailGoods: goods, mailIds, groupMailIds, mails: resMails} = await this.app.rpc.gm.gmRemote.getUseMails.toServer('gm-server-1', serverId, groupMailRewards, mailRewards);
|
||||
let { mailGoods: goods, mailIds, groupMailIds} = await this.app.rpc.gm.gmRemote.getUseMails.toServer('gm-server-1', serverId, groupMailRewards, mailRewards);
|
||||
mailGoods = goods;
|
||||
mails = resMails;
|
||||
if (!!mailIds.length)
|
||||
await GroupMailModel.updateMailStatus(mailIds, MAIL_STATUS.RECEIVED, roleId);
|
||||
if (!!groupMailIds.length)
|
||||
await MailModel.updateMailStatus(groupMailIds, MAIL_STATUS.RECEIVED);
|
||||
mails = await GroupMailModel.updateMailStatus(groupMailIds, MAIL_STATUS.RECEIVED, roleId);
|
||||
if (!!mailIds.length)
|
||||
mails = await MailModel.updateMailStatus(mailIds, MAIL_STATUS.RECEIVED);
|
||||
}
|
||||
let resGoods = [];
|
||||
if (!!mailGoods && !!mailGoods.length)
|
||||
|
||||
@@ -1,8 +1,9 @@
|
||||
import BaseModel from './BaseModel';
|
||||
import { index, getModelForClass, prop, DocumentType } from '@typegoose/typegoose';
|
||||
import { index, getModelForClass, mongoose, prop, DocumentType } from '@typegoose/typegoose';
|
||||
import { nowSeconds } from '../pubUtils/timeUtil';
|
||||
import { MAIL_STATUS } from '../consts/constModules/mailConst';
|
||||
|
||||
import { MAIL_STATUS, MAIL_TYPE } from '../consts/constModules/mailConst';
|
||||
import { findWhere } from 'underscore';
|
||||
const { ObjectId } = mongoose.Types;
|
||||
class RewardInter {
|
||||
id: number;
|
||||
count: number;
|
||||
@@ -82,22 +83,28 @@ export default class GroupMail extends BaseModel {
|
||||
}
|
||||
|
||||
public static async findReadAndRewardsMails(roleId: string, lean = true) {
|
||||
const ids: GroupMailType[] = await GroupMailModel.find({ 'sendRoles.roleId': roleId, sendTime:{$lte: nowSeconds()}, $or:[ {$and: [{'sendRoles.status': MAIL_STATUS.READ, goods: []}]}, {'sendRoles.status': MAIL_STATUS.RECEIVED}] }).select('_id').lean(lean);
|
||||
const ids: GroupMailType[] = await GroupMailModel.find({ sendTime:{$lte: nowSeconds()}, sendRoles: { $elemMatch: { roleId, $or:[ {$and: [{status: MAIL_STATUS.READ}, {goods: []}]},{status: MAIL_STATUS.RECEIVED} ] } } }).select('_id').lean(lean);
|
||||
return ids;
|
||||
}
|
||||
|
||||
public static async updateMailStatus(ids: any[], status: number, roleId: string) {
|
||||
const count = await GroupMailModel.update({_id: {$in: ids}, 'sendRoles.roleId': roleId, sendTime:{$lte: nowSeconds()}}, { $set:{ 'sendRoles.$.status': status } });
|
||||
return count;
|
||||
public static async updateMailStatus(ids: string[], status: number, roleId: string, lean = true) {
|
||||
let mails = [];
|
||||
for(let id of ids) {
|
||||
const result: GroupMailType = await GroupMailModel.findOneAndUpdate({_id: id, "sendRoles.roleId": roleId}, { $set:{ 'sendRoles.$.status': status } }, { new: true }).lean(lean);
|
||||
mails.push({id: result._id, status: result.sendRoles[0].status, mailType: MAIL_TYPE.GROUPMAIL});
|
||||
}
|
||||
return mails;
|
||||
}
|
||||
|
||||
public static async delMail(_id: string, roleId: string, lean = true) {
|
||||
const result: GroupMailType = await GroupMailModel.findOneAndUpdate({ _id, 'sendRoles.roleId': roleId, $or:[ {$and: [{'sendRoles.status': MAIL_STATUS.READ, goods: []}]}, {'sendRoles.status': MAIL_STATUS.RECEIVED}], sendTime:{$lte: nowSeconds() }}, { $set:{ 'sendRoles.$.status': MAIL_STATUS.DELETE } }, { new: true }).lean(lean);
|
||||
const result: GroupMailType = await GroupMailModel.findOneAndUpdate({ _id, sendTime:{ $lte: nowSeconds() },
|
||||
sendRoles: { $elemMatch: { roleId, $or:[ {$and: [{status: MAIL_STATUS.READ}, {goods: []}]},{status: MAIL_STATUS.RECEIVED} ] } } },
|
||||
{ $set:{ 'sendRoles.$.status': MAIL_STATUS.DELETE } }, { new: true }).lean(lean);
|
||||
return result;
|
||||
}
|
||||
|
||||
public static async findRewardsMails(roleId: string, lean = true) {
|
||||
const result: GroupMailType[] = await GroupMailModel.find({ 'sendRoles.roleId': roleId, 'sendRoles.status':{ $in: [ MAIL_STATUS.CREATE, MAIL_STATUS.READ ] }, sendTime:{$lte: nowSeconds()} }).select('_id goods mailId mailTemType status').lean(lean);
|
||||
const result: GroupMailType[] = await GroupMailModel.find({ sendRoles: { $elemMatch:{roleId, status:{ $in: [ MAIL_STATUS.CREATE, MAIL_STATUS.READ ] }} }, sendTime:{$lte: nowSeconds()} }).select('_id goods mailId mailTemType status').lean(lean);
|
||||
return result;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,7 +1,8 @@
|
||||
import BaseModel from './BaseModel';
|
||||
import { index, getModelForClass, prop, DocumentType } from '@typegoose/typegoose';
|
||||
import { index, getModelForClass, prop, DocumentType, mongoose } from '@typegoose/typegoose';
|
||||
import { nowSeconds } from '../pubUtils/timeUtil';
|
||||
import { MAIL_STATUS } from '../consts/constModules/mailConst';
|
||||
import { MAIL_STATUS, MAIL_TYPE } from '../consts/constModules/mailConst';
|
||||
const { ObjectId } = mongoose.Types;
|
||||
class RewardInter {
|
||||
@prop({ required: true })
|
||||
id: number;
|
||||
@@ -81,9 +82,13 @@ export default class Mail extends BaseModel {
|
||||
return ids;
|
||||
}
|
||||
|
||||
public static async updateMailStatus(ids: any[], status: number) {
|
||||
let count = await MailModel.update({ _id: { $in: ids } }, { $set: { status } });
|
||||
return count;
|
||||
public static async updateMailStatus(ids: string[], status: number) {
|
||||
let mails = [];
|
||||
for(let id of ids) {
|
||||
const result: MailType = await MailModel.findOneAndUpdate({_id: id}, { $set:{ 'status': status } });
|
||||
mails.push({id: result._id, status: result.status, mailType: MAIL_TYPE.SINGLEMAIL});
|
||||
}
|
||||
return mails;
|
||||
}
|
||||
|
||||
public static async delMail(_id: string, lean = true) {
|
||||
|
||||
Reference in New Issue
Block a user