一键领取bug
This commit is contained in:
@@ -42,7 +42,7 @@ export class GuildTrainHandler {
|
|||||||
}
|
}
|
||||||
let { trainCount, trainRewards, buyTrainCount } = userGuild;
|
let { trainCount, trainRewards, buyTrainCount } = userGuild;
|
||||||
let result:any = getGuildTrainInfo(guildTrain, roleId, trainCount, trainRewards);
|
let result:any = getGuildTrainInfo(guildTrain, roleId, trainCount, trainRewards);
|
||||||
result.buyTrainCount = buyTrainCount;
|
result.buyTrainCount = buyTrainCount||0;
|
||||||
result.trainLv = trainLv;
|
result.trainLv = trainLv;
|
||||||
return resResult(STATUS.SUCCESS, result);
|
return resResult(STATUS.SUCCESS, result);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -160,14 +160,14 @@ export class GMRemote {
|
|||||||
if (!gmMail || !gmMail.goods.length|| gmMail.endTime < nowSeconds()) {
|
if (!gmMail || !gmMail.goods.length|| gmMail.endTime < nowSeconds()) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
mailGoods.push(...goods);
|
mailGoods.push(...gmMail.goods);
|
||||||
} else {
|
} else {
|
||||||
if (goods.length)
|
if (!goods.length)
|
||||||
return;
|
return;
|
||||||
mailGoods.push(...goods);
|
mailGoods.push(...goods);
|
||||||
}
|
}
|
||||||
mails.push({id: _id, status: MAIL_STATUS.RECEIVED, mailType: MAIL_TYPE.GROUPMAIL});
|
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})=>{
|
mailRewards.map(({_id, goods, mailId, mailTemType})=>{
|
||||||
if (mailTemType == MAIL_TEM_TYPE.GMTYPE) {
|
if (mailTemType == MAIL_TEM_TYPE.GMTYPE) {
|
||||||
@@ -177,12 +177,12 @@ export class GMRemote {
|
|||||||
}
|
}
|
||||||
mailGoods.push(...gmMail.goods);
|
mailGoods.push(...gmMail.goods);
|
||||||
} else {
|
} else {
|
||||||
if (goods.length)
|
if (!goods.length)
|
||||||
return;
|
return;
|
||||||
mailGoods.push(...goods);
|
mailGoods.push(...goods);
|
||||||
}
|
}
|
||||||
mails.push({id: _id, status: MAIL_STATUS.RECEIVED, mailType: MAIL_TYPE.SINGLEMAIL});
|
mails.push({id: _id, status: MAIL_STATUS.RECEIVED, mailType: MAIL_TYPE.SINGLEMAIL});
|
||||||
mailIds.push(ObjectId(_id));
|
mailIds.push(_id);
|
||||||
});
|
});
|
||||||
return {mailIds, groupMailIds, mails, mailGoods};
|
return {mailIds, groupMailIds, mails, mailGoods};
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -58,13 +58,13 @@ export class RoleHandler {
|
|||||||
let resGroupMailIds = await GroupMailModel.findReadAndRewardsMails(roleId);
|
let resGroupMailIds = await GroupMailModel.findReadAndRewardsMails(roleId);
|
||||||
let groupMailIds = resGroupMailIds.map(({_id})=>{
|
let groupMailIds = resGroupMailIds.map(({_id})=>{
|
||||||
mails.push({id:_id, status: MAIL_STATUS.DELETE, mailType: MAIL_TYPE.GROUPMAIL});
|
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);
|
await GroupMailModel.updateMailStatus(groupMailIds, MAIL_STATUS.DELETE, roleId);
|
||||||
let resMailIds = await MailModel.findReadAndRewardsMails(roleId);
|
let resMailIds = await MailModel.findReadAndRewardsMails(roleId);
|
||||||
let mailIds = resMailIds.map(({_id})=>{
|
let mailIds = resMailIds.map(({_id})=>{
|
||||||
mails.push({id: _id, status: MAIL_STATUS.DELETE, mailType: MAIL_TYPE.SINGLEMAIL});
|
mails.push({id: _id, status: MAIL_STATUS.DELETE, mailType: MAIL_TYPE.SINGLEMAIL});
|
||||||
return ObjectId(_id);
|
return _id;
|
||||||
});
|
});
|
||||||
await MailModel.updateMailStatus(mailIds, MAIL_STATUS.DELETE);
|
await MailModel.updateMailStatus(mailIds, MAIL_STATUS.DELETE);
|
||||||
|
|
||||||
@@ -106,13 +106,12 @@ export class RoleHandler {
|
|||||||
} else {//一键领取
|
} else {//一键领取
|
||||||
let groupMailRewards = await GroupMailModel.findRewardsMails(roleId);
|
let groupMailRewards = await GroupMailModel.findRewardsMails(roleId);
|
||||||
let mailRewards = await MailModel.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;
|
mailGoods = goods;
|
||||||
mails = resMails;
|
|
||||||
if (!!mailIds.length)
|
|
||||||
await GroupMailModel.updateMailStatus(mailIds, MAIL_STATUS.RECEIVED, roleId);
|
|
||||||
if (!!groupMailIds.length)
|
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 = [];
|
let resGoods = [];
|
||||||
if (!!mailGoods && !!mailGoods.length)
|
if (!!mailGoods && !!mailGoods.length)
|
||||||
|
|||||||
+16
-9
@@ -1,8 +1,9 @@
|
|||||||
import BaseModel from './BaseModel';
|
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 { 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 {
|
class RewardInter {
|
||||||
id: number;
|
id: number;
|
||||||
count: number;
|
count: number;
|
||||||
@@ -82,22 +83,28 @@ export default class GroupMail extends BaseModel {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public static async findReadAndRewardsMails(roleId: string, lean = true) {
|
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;
|
return ids;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static async updateMailStatus(ids: any[], status: number, roleId: string) {
|
public static async updateMailStatus(ids: string[], status: number, roleId: string, lean = true) {
|
||||||
const count = await GroupMailModel.update({_id: {$in: ids}, 'sendRoles.roleId': roleId, sendTime:{$lte: nowSeconds()}}, { $set:{ 'sendRoles.$.status': status } });
|
let mails = [];
|
||||||
return count;
|
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) {
|
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;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static async findRewardsMails(roleId: string, lean = true) {
|
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;
|
return result;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+10
-5
@@ -1,7 +1,8 @@
|
|||||||
import BaseModel from './BaseModel';
|
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 { 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 {
|
class RewardInter {
|
||||||
@prop({ required: true })
|
@prop({ required: true })
|
||||||
id: number;
|
id: number;
|
||||||
@@ -81,9 +82,13 @@ export default class Mail extends BaseModel {
|
|||||||
return ids;
|
return ids;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static async updateMailStatus(ids: any[], status: number) {
|
public static async updateMailStatus(ids: string[], status: number) {
|
||||||
let count = await MailModel.update({ _id: { $in: ids } }, { $set: { status } });
|
let mails = [];
|
||||||
return count;
|
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) {
|
public static async delMail(_id: string, lean = true) {
|
||||||
|
|||||||
Reference in New Issue
Block a user