抽卡:添加拜访武将
This commit is contained in:
@@ -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
|
||||
});
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user