抽卡:添加拜访武将

This commit is contained in:
luying
2021-04-25 10:52:40 +08:00
parent bd33950a71
commit 15fbdf4160
3 changed files with 70 additions and 3 deletions

View File

@@ -1,6 +1,6 @@
import { Application, BackendSession } from "pinus";
import { resResult, getRandomWithWeight, getRandEelm } from "../../../pubUtils/util";
import { STATUS, GACHA_ID, HERO_QUALITY_TYPE, TASK_TYPE } from "../../../consts";
import { resResult, getRandomWithWeight, getRandEelm, shouldRefresh } from "../../../pubUtils/util";
import { STATUS, GACHA_ID, HERO_QUALITY_TYPE, TASK_TYPE, REFRESH_HOUR } from "../../../consts";
import { gameData } from "../../../pubUtils/data";
import { GachaListReturn, GachaResult, GachaData } from "../../../domain/activityField/gachaField";
import { UserGachaModel } from "../../../db/UserGacha";
@@ -9,7 +9,7 @@ import { RoleModel } from "../../../db/Role";
import { HeroModel, HeroUpdate } from "../../../db/Hero";
import { RewardInter } from "../../../pubUtils/interface";
import { handleCost, createHeroes, addItems } from "../../../services/rewardService";
import { getAfterDateByDay } from "../../../pubUtils/timeUtil";
import { getAfterDateByDay, getTodayZeroDate, getZeroDate } from "../../../pubUtils/timeUtil";
import { UserGachaRecModel } from "../../../db/UserGachaRec";
import { ActivityModel } from "../../../db/Activity";
import { checkTask } from "../../../services/taskService";
@@ -17,6 +17,7 @@ import { RECRUIT } from "../../../pubUtils/dicParam";
import { getAllHeroByQuality } from "../../../services/gachaService";
import { transPiece } from "../../../pubUtils/itemUtils";
import { CreateHeroParam } from "../../../domain/roleField/hero";
import roleHandler from "../../role/handler/roleHandler";
export default function (app: Application) {
return new GachaHandler(app);
@@ -278,4 +279,62 @@ export class GachaHandler {
});
}
/**
* @description 今天拜访过的武将
* @param {{ }} msg
* @param {BackendSession} session
* @memberof GachaHandler
*/
async getVisitedHero(msg: { }, session: BackendSession) {
const roleId: string = session.get('roleId');
let { visitedHero, refVisitedTime } = await UserGachaModel.findByRole(roleId, GACHA_ID.NORMAL, 0);
if(shouldRefresh(refVisitedTime, new Date(), REFRESH_HOUR)) {
visitedHero = [];
}
return resResult(STATUS.SUCCESS, {
hids: visitedHero
});
}
/**
* @description 拜访武将
* @param {{ hid: number }} msg
* @param {BackendSession} session
* @memberof GachaHandler
*/
async visitHero(msg: { hid: number }, session: BackendSession) {
const roleId: string = session.get('roleId');
const roleName: string = session.get('roleName');
const sid: string = session.get('sid');
const { hid } = msg;
let dicHero = gameData.hero.get(hid);
if(!dicHero) return resResult(STATUS.DIC_DATA_NOT_FOUND);
if(!dicHero.recruit) return resResult(STATUS.DIC_DATA_NOT_FOUND);
let { pieceId } = dicHero;
let { visitedHero, refVisitedTime } = await UserGachaModel.findByRole(roleId, GACHA_ID.NORMAL, 0);
if(shouldRefresh(refVisitedTime, new Date(), REFRESH_HOUR)) {
visitedHero = [];
refVisitedTime = getTodayZeroDate(REFRESH_HOUR);
}
if(visitedHero.includes(hid)) {
return resResult(STATUS.GACHA_HAS_VISITED);
}
if(visitedHero.length >= RECRUIT.RECRUIT_DAILY_RECRUIT_SHARD) {
return resResult(STATUS.GACHA_VISITED_COUNT_OVER);
}
visitedHero.push(hid);
let userGacha = await UserGachaModel.updateInfo(roleId, GACHA_ID.NORMAL, 0, { visitedHero, refVisitedTime });
let goods = await addItems(roleId, roleName, sid, [{ id: pieceId, count: RECRUIT.RECRUIT_SHARD_LIMIT }]);
return resResult(STATUS.SUCCESS, {
hids: userGacha.visitedHero,
goods
});
}
}