🐞 fix(gvg): 内政帮收改为按玩家收获
This commit is contained in:
@@ -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 roleName = session.get('roleName');
|
||||
const guildCode = session.get('guildCode');
|
||||
|
||||
const { farmId, fieldId } = msg;
|
||||
const { farmId, roleId: targetRoleId } = msg;
|
||||
let { configId, period } = getGVGPeriodData();
|
||||
if(period != GVG_PERIOD.PREPARE) return resResult(STATUS.GVG_NOT_PREPARE_PERIOD);
|
||||
|
||||
let myLeague = await GVGLeagueModel.findLeagueByGuild(guildCode);
|
||||
if(!myLeague) return resResult(STATUS.GVG_LEAGUE_NOT_EXIST);
|
||||
|
||||
const resultField = await GVGLeagueFarmModel.helpHarvest(configId, myLeague.leagueCode, farmId, fieldId); // 解锁
|
||||
if(!resultField) return resResult(STATUS.GVG_CANNOT_HARVEST);
|
||||
const resultField = await GVGLeagueFarmModel.helpHarvest(configId, myLeague.leagueCode, farmId, targetRoleId); // 解锁
|
||||
if(!resultField || resultField.length == 0) return resResult(STATUS.GVG_CANNOT_HARVEST);
|
||||
|
||||
let targetRoleId = resultField.lockRoleId;
|
||||
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 addGVGReward(targetRoleId, roleName, myLeague.leagueCode, targetOnlineInfo.sid, leagueRewardSum, [], ITEM_CHANGE_REASON.HARVEST)
|
||||
|
||||
@@ -1375,7 +1375,8 @@ export function checkRouteParam(route: string, msg: any) {
|
||||
}
|
||||
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;
|
||||
}
|
||||
case "guild.gvgProduceHandler.mineStart":
|
||||
|
||||
@@ -139,15 +139,18 @@ export default class GVGLeagueFarm extends BaseModel {
|
||||
}));
|
||||
if(result.modifiedCount == 0) return [];
|
||||
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;
|
||||
}
|
||||
|
||||
public static async helpHarvest(configId: number, leagueCode: string, farmId: number, fieldId: number) {
|
||||
const result: GVGLeagueFarmType = await GVGLeagueFarmModel.findOneAndUpdate(
|
||||
{ configId, leagueCode, farmId, fieldId, harvestTime: { $lt: nowSeconds() }, unlockTime: { $gt: nowSeconds() } },
|
||||
{ $set: { unlockTime: 0, harvestTime: 0, lockRoleId: '', lockRoleName: '' }}, { new: true }).lean();
|
||||
return result
|
||||
public static async helpHarvest(configId: number, leagueCode: string, farmId: number, roleId: string) {
|
||||
const batchCode = genCode(10);
|
||||
const result = await GVGLeagueFarmModel.updateMany({ configId, leagueCode, farmId, lockRoleId: roleId, harvestTime: { $lt: nowSeconds() } },
|
||||
{ $set: { unlockTime: 0, harvestTime: 0, lockRoleId: '', lockRoleName: '', batchCode }}, { new: true });
|
||||
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) {
|
||||
|
||||
@@ -329,6 +329,7 @@ export class LeagueField {
|
||||
harvestTime: number; // 收获时间, 10位时间戳
|
||||
unlockTime: number; // 锁定时间,会按照内政令的数量给玩家预锁定一批填,超过时间限制就不锁给他了也会分给其他人了
|
||||
index: number = 0; // 位置
|
||||
output: number = 0; // 产量
|
||||
|
||||
constructor(leagueFarm: GVGLeagueFarmType) {
|
||||
if(!leagueFarm) return;
|
||||
@@ -338,6 +339,7 @@ export class LeagueField {
|
||||
this.harvestTime = leagueFarm.harvestTime;
|
||||
this.unlockTime = leagueFarm.unlockTime;
|
||||
this.index = leagueFarm.index||0;
|
||||
this.output = leagueFarm.output;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user