抽卡:添加拜访武将

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
});
}
}

View File

@@ -327,6 +327,8 @@ export const STATUS = {
GACHA_HOPE_NOT_GOLD: { code: 31103, simStr: '武将品质错误' },
GACHA_CAN_NOT_PICK: { code: 31004, simStr: '不可选择该武将' },
GACHA_TURNTABLE_POINT_NOT_ENOUGH: { code: 31005, simStr: '转盘积分不足' },
GACHA_HAS_VISITED: { code: 31006, simStr: '该武将已拜访过' },
GACHA_VISITED_COUNT_OVER: { code: 31007, simStr: '今天武将拜访已超过次数' },
// 社交相关状态 40000 - 49999
SYS_CHANNEL_AUTH_NOT_ENOUGH: { code: 40000, simStr: '无法在系统频道发送消息' },
UPDATE_PRIVATE_MSG_READ_TIME_ERR: { code: 40001, simStr: '更新私聊阅读时间失败' },

View File

@@ -78,6 +78,12 @@ export default class UserGacha extends BaseModel {
@prop({ required: true, default: 0 })
pickHero: number; // 玩家指定武将
@prop({ required: true, default: [], type: Number })
visitedHero: number[]; // 玩家指定武将
@prop({ required: true, default: () => { return getTodayZeroDate(REFRESH_HOUR) } })
refVisitedTime: Date; // 玩家指定武将
public static async findAllByRole(roleId: string) {
let rec: UserGachaType[] = await UserGachaModel.find({ roleId }).lean();
return rec;