抽卡:添加拜访武将
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
|
||||
});
|
||||
}
|
||||
}
|
||||
@@ -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: '更新私聊阅读时间失败' },
|
||||
|
||||
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user