✨ feat(活动): 小游戏添加任务

This commit is contained in:
luying
2023-03-28 17:18:41 +08:00
parent f7344aed85
commit c65c339e3a
8 changed files with 75 additions and 15 deletions
@@ -1,6 +1,6 @@
import { Application, BackendSession, HandlerService, } from 'pinus';
import { resResult } from '../../../pubUtils/util';
import { ITEM_CHANGE_REASON, REDIS_KEY, STATUS } from '../../../consts';
import { ITEM_CHANGE_REASON, MINI_GAME_TYPE, REDIS_KEY, STATUS, TASK_TYPE } from '../../../consts';
import { addReward, stringToConsumeParam, stringToRewardParam } from '../../../services/activity/giftPackageService';
import { getPlayerMiniGameData, getPlayerMiniGameDataShow } from '../../../services/activity/miniGameService';
import { ActivityMiniGameRecModel } from '../../../db/ActivityMiniGameRec';
@@ -10,6 +10,7 @@ import { Rank } from '../../../services/rankService';
import { nowSeconds } from '../../../pubUtils/timeUtil';
import { RoleRankInfo } from '../../../domain/rank';
import { getAllServerName } from '../../../services/redisService';
import { checkTask } from '../../../services/task/taskService';
export default function (app: Application) {
new HandlerService(app, {});
@@ -53,8 +54,7 @@ export class ForgeHandler {
if (!playerData) return resResult(STATUS.ACTIVITY_MISSING);
if(playerData.playCnt >= playerData.buyCnt + playerData.freeCnt) return resResult(STATUS.ACTIVITY_MINI_GAME_COUNT_LACK);
let record = await ActivityMiniGameRecModel.gameStart(serverId, activityId, playerData.roundIndex, playerData.todayIndex, roleId);
let record = await ActivityMiniGameRecModel.gameStart(serverId, activityId, playerData.roundIndex, playerData.todayIndex, roleId, playerData.gameType);
return resResult(STATUS.SUCCESS, {
activityId,
@@ -69,8 +69,8 @@ export class ForgeHandler {
* @param {BackendSession} session
* @memberof ForgeHandler
*/
async gameEnd(msg: { activityId: number, gameCode: string, score: number }, session: BackendSession) {
const { activityId, gameCode, score } = msg;
async gameEnd(msg: { activityId: number, gameCode: string, score: number, params: number[] }, session: BackendSession) {
const { activityId, gameCode, score, params } = msg;
const roleId = session.get('roleId');
const roleName = session.get('roleName');
const sid = session.get('sid');
@@ -80,7 +80,7 @@ export class ForgeHandler {
if (!playerData) return resResult(STATUS.ACTIVITY_MISSING);
// 记录得分&次数
let record = await ActivityMiniGameRecModel.gameEnd(activityId, roleId, gameCode, score);
let record = await ActivityMiniGameRecModel.gameEnd(activityId, roleId, gameCode, score, params);
if(!record) return resResult(STATUS.ACTIVITY_MINI_GAME_RECORD_NOT_FOUND);
let playerRecord = await ActivityMiniGameModel.incScore(serverId, activityId, playerData.roundIndex, roleId, score, playerData.nextRefreshTime);
@@ -94,6 +94,9 @@ export class ForgeHandler {
let r = new Rank(REDIS_KEY.ACTIVITY_MINI_GAME, { activityId, roundIndex: playerData.roundIndex });
await r.setRankWithRoleInfo(roleId, score, nowSeconds(), null, true);
if(playerData.gameType == MINI_GAME_TYPE.SHOOT) await checkTask(serverId, roleId, sid, TASK_TYPE.MINI_GAME_SHOOT, { score });
if(playerData.gameType == MINI_GAME_TYPE.ERASE) await checkTask(serverId, roleId, sid, TASK_TYPE.MINI_GAME_ERASE, { step: params[0] });
return resResult(STATUS.SUCCESS, {
activityId,
gameCode,