🐞 fix(gvg): 内政帮收改为按玩家收获

This commit is contained in:
luying
2023-02-17 10:59:38 +08:00
parent e1004d4960
commit 83cf8db9fe
4 changed files with 19 additions and 14 deletions
@@ -262,28 +262,27 @@ export class GVGProduceHandler {
} }
// 帮收 // 帮收
async helpHarvest(msg: { farmId: number, fieldId: number }, session: BackendSession) { async helpHarvest(msg: { farmId: number, roleId: string }, session: BackendSession) {
const roleId = session.get('roleId'); const roleId = session.get('roleId');
const roleName = session.get('roleName'); const roleName = session.get('roleName');
const guildCode = session.get('guildCode'); const guildCode = session.get('guildCode');
const { farmId, fieldId } = msg; const { farmId, roleId: targetRoleId } = msg;
let { configId, period } = getGVGPeriodData(); let { configId, period } = getGVGPeriodData();
if(period != GVG_PERIOD.PREPARE) return resResult(STATUS.GVG_NOT_PREPARE_PERIOD); if(period != GVG_PERIOD.PREPARE) return resResult(STATUS.GVG_NOT_PREPARE_PERIOD);
let myLeague = await GVGLeagueModel.findLeagueByGuild(guildCode); let myLeague = await GVGLeagueModel.findLeagueByGuild(guildCode);
if(!myLeague) return resResult(STATUS.GVG_LEAGUE_NOT_EXIST); if(!myLeague) return resResult(STATUS.GVG_LEAGUE_NOT_EXIST);
const resultField = await GVGLeagueFarmModel.helpHarvest(configId, myLeague.leagueCode, farmId, fieldId); // 解锁 const resultField = await GVGLeagueFarmModel.helpHarvest(configId, myLeague.leagueCode, farmId, targetRoleId); // 解锁
if(!resultField) return resResult(STATUS.GVG_CANNOT_HARVEST); if(!resultField || resultField.length == 0) return resResult(STATUS.GVG_CANNOT_HARVEST);
let targetRoleId = resultField.lockRoleId;
let targetOnlineInfo = await getRoleOnlineInfo(targetRoleId); let targetOnlineInfo = await getRoleOnlineInfo(targetRoleId);
// 计算产量 // 计算产量
const { foodSum, rewardSum, leagueRewardSum, activeSum } = await sumOutputByResults([resultField]); const { foodSum, rewardSum, leagueRewardSum, activeSum } = await sumOutputByResults(resultField);
// 资源 // 资源
await addResource(myLeague.leagueCode, targetRoleId, resultField.lockRoleName, GVG_RESOURCE_TYPE.FOOD, foodSum)||{}; await addResource(myLeague.leagueCode, targetRoleId, resultField[0].lockRoleName, GVG_RESOURCE_TYPE.FOOD, foodSum)||{};
await sendMailByContent(MAIL_TYPE.HELP_HARVEST, targetRoleId, { sendName: roleName, goods: rewardSum }); await sendMailByContent(MAIL_TYPE.HELP_HARVEST, targetRoleId, { sendName: roleName, goods: rewardSum });
// 相关物品 // 相关物品
await addGVGReward(targetRoleId, roleName, myLeague.leagueCode, targetOnlineInfo.sid, leagueRewardSum, [], ITEM_CHANGE_REASON.HARVEST) await addGVGReward(targetRoleId, roleName, myLeague.leagueCode, targetOnlineInfo.sid, leagueRewardSum, [], ITEM_CHANGE_REASON.HARVEST)
+2 -1
View File
@@ -1375,7 +1375,8 @@ export function checkRouteParam(route: string, msg: any) {
} }
case "guild.gvgProduceHandler.helpHarvest": case "guild.gvgProduceHandler.helpHarvest":
{ {
if(!checkNaturalNumbers(msg.farmId, msg.fieldId)) return false; if(!checkNaturalNumbers(msg.farmId)) return false;
if(!checkNaturalStrings(msg.roleId)) return false;
break; break;
} }
case "guild.gvgProduceHandler.mineStart": case "guild.gvgProduceHandler.mineStart":
+9 -6
View File
@@ -139,15 +139,18 @@ export default class GVGLeagueFarm extends BaseModel {
})); }));
if(result.modifiedCount == 0) return []; if(result.modifiedCount == 0) return [];
const fieldResult: GVGLeagueFarmType[] = await GVGLeagueFarmModel.find({ batchCode }).sort({ fieldId: 1 }).select('-_id -createdAt -updatedAt -__v -configId -leagueCode').lean(); const fieldResult: GVGLeagueFarmType[] = await GVGLeagueFarmModel.find({ batchCode }).sort({ fieldId: 1 }).select('-_id -createdAt -updatedAt -__v -configId -leagueCode').lean();
await GVGLeagueFarmModel.updateMany({ batchCode }, { $set: { seedType: 0 } }) await GVGLeagueFarmModel.updateMany({ batchCode }, { $set: { seedType: 0 } });
return fieldResult; return fieldResult;
} }
public static async helpHarvest(configId: number, leagueCode: string, farmId: number, fieldId: number) { public static async helpHarvest(configId: number, leagueCode: string, farmId: number, roleId: string) {
const result: GVGLeagueFarmType = await GVGLeagueFarmModel.findOneAndUpdate( const batchCode = genCode(10);
{ configId, leagueCode, farmId, fieldId, harvestTime: { $lt: nowSeconds() }, unlockTime: { $gt: nowSeconds() } }, const result = await GVGLeagueFarmModel.updateMany({ configId, leagueCode, farmId, lockRoleId: roleId, harvestTime: { $lt: nowSeconds() } },
{ $set: { unlockTime: 0, harvestTime: 0, lockRoleId: '', lockRoleName: '' }}, { new: true }).lean(); { $set: { unlockTime: 0, harvestTime: 0, lockRoleId: '', lockRoleName: '', batchCode }}, { new: true });
return result if(result.modifiedCount == 0) return [];
const fieldResult: GVGLeagueFarmType[] = await GVGLeagueFarmModel.find({ batchCode }).lean();
await GVGLeagueFarmModel.updateMany({ batchCode }, { $set: { seedType: 0 } });
return fieldResult
} }
public static async releaseLock(configId: number, leagueCode: string, farmId: number, roleId: string) { public static async releaseLock(configId: number, leagueCode: string, farmId: number, roleId: string) {
+2
View File
@@ -329,6 +329,7 @@ export class LeagueField {
harvestTime: number; // 收获时间, 10位时间戳 harvestTime: number; // 收获时间, 10位时间戳
unlockTime: number; // 锁定时间,会按照内政令的数量给玩家预锁定一批填,超过时间限制就不锁给他了也会分给其他人了 unlockTime: number; // 锁定时间,会按照内政令的数量给玩家预锁定一批填,超过时间限制就不锁给他了也会分给其他人了
index: number = 0; // 位置 index: number = 0; // 位置
output: number = 0; // 产量
constructor(leagueFarm: GVGLeagueFarmType) { constructor(leagueFarm: GVGLeagueFarmType) {
if(!leagueFarm) return; if(!leagueFarm) return;
@@ -338,6 +339,7 @@ export class LeagueField {
this.harvestTime = leagueFarm.harvestTime; this.harvestTime = leagueFarm.harvestTime;
this.unlockTime = leagueFarm.unlockTime; this.unlockTime = leagueFarm.unlockTime;
this.index = leagueFarm.index||0; this.index = leagueFarm.index||0;
this.output = leagueFarm.output;
} }
} }