feat(gvg): 任务

This commit is contained in:
luying
2023-01-18 10:02:31 +08:00
parent aab08f7ed5
commit 6619e33995
16 changed files with 332 additions and 31 deletions

View File

@@ -1,5 +1,5 @@
import { Application, BackendSession, ChannelService, HandlerService, pinus } from "pinus";
import { GVG_ITEM, DATA_NAME, GVG_ACTIVE_TYPE, GVG_PERIOD, GVG_SERVER_TYPE, ITEM_CHANGE_REASON, LEAGUE_JOB, LEAGUE_MANAGE_TYPE, STATUS, GVG_REC_TYPE } from "../../../consts";
import { GVG_ITEM, DATA_NAME, GVG_ACTIVE_TYPE, GVG_PERIOD, GVG_SERVER_TYPE, ITEM_CHANGE_REASON, LEAGUE_JOB, LEAGUE_MANAGE_TYPE, STATUS, GVG_REC_TYPE, TASK_TYPE } from "../../../consts";
import { GVGLeagueModel } from "../../../db/GVGLeague";
import { GVGLeaguePrepareModel } from "../../../db/GVGLeaguePrepare";
import { GVGMainData, LeagueDistributeInfo, LeagueMemberDistributeInfo, LeagueMemberListInfo } from "../../../domain/gvgField/returnData";
@@ -20,6 +20,7 @@ import { addGVGReward, handleGVGCost } from "../../../services/gvg/gvgItemServic
import { RewardInter } from "../../../pubUtils/interface";
import { getGVGCities } from "../../../services/gvg/gvgBattleService";
import { GVGRecModel } from "../../../db/GVGRec";
import { checkGVGTask } from "../../../services/task/taskService";
export default function (app: Application) {
new HandlerService(app, {});
@@ -250,6 +251,38 @@ export class GVGHandler {
});
}
// 领取任务奖励
async receiveTask(msg: { taskId: number }, session: BackendSession) {
const roleId: string = session.get('roleId');
const guildCode: string = session.get('guildCode');
const roleName: string = session.get('roleName');
const sid: string = session.get('sid');
const { taskId } = msg;
let dicGVGTask = gameData.gvgTask.get(taskId);
if(!dicGVGTask) return resResult(STATUS.DIC_DATA_NOT_FOUND);
let { configId } = getGVGConfig();
const myLeague = await GVGLeagueModel.findLeagueByGuild(guildCode);
if(!myLeague) return resResult(STATUS.GVG_LEAGUE_NOT_EXIST);
// 检查
let rec = await GVGUserTaskModel.findByTaskId(configId, myLeague.leagueCode, roleId, taskId);
if(!rec || rec.count < dicGVGTask.condition) return resResult(STATUS.GVG_TASK_NOT_ENOUGH);
if(rec.status == 2) return resResult(STATUS.GVG_TASK_HAS_RECEIVED);
rec = await GVGUserTaskModel.receiveTask(configId, myLeague.leagueCode, roleId, taskId);
let leagueGoods = await addGVGReward(roleId, roleName, myLeague.leagueCode, sid, dicGVGTask.leagueReward, dicGVGTask.reward, ITEM_CHANGE_REASON.GVG_RECEIVE_TASK);
return resResult(STATUS.SUCCESS, {
curTask: {
id: rec.id,
status: rec.status
},
leagueGoods
});
}
// 千机阁数据
async getTech(msg: {}, session: BackendSession) {
const roleId = session.get('roleId');
@@ -321,6 +354,7 @@ export class GVGHandler {
// 千机阁解锁
async activate(msg: { techId: number, battleFeats: number }, session: BackendSession) {
const serverId = session.get('serverId');
const roleId = session.get('roleId');
const guildCode = session.get('guildCode');
const sid = session.get('sid');
@@ -359,6 +393,7 @@ export class GVGHandler {
// 添加 活跃
let active = await addGVGTechActive(myLeague.leagueCode, roleId);
checkGVGTask(serverId, roleId, sid, configId, myLeague.leagueCode, TASK_TYPE.GVG_TECH, { count: 1 });
return resResult(STATUS.SUCCESS, {
active,