diff --git a/game-server/app/servers/activity/handler/gachaHandler.ts b/game-server/app/servers/activity/handler/gachaHandler.ts index 1393b7934..99b1f37a6 100644 --- a/game-server/app/servers/activity/handler/gachaHandler.ts +++ b/game-server/app/servers/activity/handler/gachaHandler.ts @@ -2,7 +2,7 @@ import { Application, BackendSession, HandlerService, } from "pinus"; import { resResult, shouldRefresh, getRandSingleEelm, getGachaRemainFloor } from "../../../pubUtils/util"; import { STATUS, GACHA_TYPE, HERO_QUALITY_TYPE, TASK_TYPE, ITEM_CHANGE_REASON, } from "../../../consts"; import { gameData } from "../../../pubUtils/data"; -import UserGacha, { UserGachaModel } from "../../../db/UserGacha"; +import { UserGachaModel } from "../../../db/UserGacha"; import { refreshGacha, getGachaList, getVisitedHeroList, GachaPull, GachaResults, getDicGachaByGachaCnt, getNormalGachaId, getDicGachas } from "../../../services/activity/gachaService"; import Role from "../../../db/Role"; import Hero from "../../../db/Hero"; @@ -59,7 +59,7 @@ export class GachaHandler { let dicGacha = gameData.gacha.get(gachaId); if (!dicGacha) return resResult(STATUS.DIC_DATA_NOT_FOUND); - let userGacha = await UserGacha.findByRole(roleId, gachaId, activityId); + let userGacha = await UserGachaModel.findByRole(roleId, gachaId, activityId); userGacha = await refreshGacha(dicGacha, userGacha); let { freeCount, pickHero, count: historyCount, hope, floor } = userGacha; if ((dicGacha.gachaType == GACHA_TYPE.ASSIGN || dicGacha.gachaType == GACHA_TYPE.ACTIVITY) && !pickHero) return resResult(STATUS.GACHA_NOT_ASSIGN); @@ -106,7 +106,7 @@ export class GachaHandler { let { heroes, resultHeroes } = await createHeroes(roleId, roleName, sid, serverId, heroInfo); await addItems(roleId, roleName, sid, items, ITEM_CHANGE_REASON.GACHA_ITEMS); // 更新数据 - userGacha = await UserGacha.updateInfo(roleId, gachaId, activityId, { + userGacha = await UserGachaModel.updateInfo(roleId, gachaId, activityId, { freeCount, hope, floor, count: historyCount + count }); let newDicGacha = getDicGachaByGachaCnt(dicGacha, userGacha.count); @@ -142,7 +142,7 @@ export class GachaHandler { } } } - let userGacha = await UserGacha.findByRole(roleId, gachaId, 0); + let userGacha = await UserGachaModel.findByRole(roleId, gachaId, 0); let { hope: userHope = []} = await refreshGacha(gameData.gacha.get(gachaId), userGacha); for (let { id, hid } of hope) { let curHope = userHope.find(cur => cur.id == id); @@ -157,7 +157,7 @@ export class GachaHandler { userHope.push({ id, hid, hasGet: false }) } } - userGacha = await UserGacha.updateInfo(roleId, gachaId, 0, { hope: userHope }); + userGacha = await UserGachaModel.updateInfo(roleId, gachaId, 0, { hope: userHope }); return resResult(STATUS.SUCCESS, { gachaId, @@ -179,7 +179,7 @@ export class GachaHandler { const serverId: number = session.get('serverId'); - let userGacha = await UserGacha.findByRole(roleId, gachaId, 0); + let userGacha = await UserGachaModel.findByRole(roleId, gachaId, 0); let { point, turntable, costPoint } = userGacha; if (point < RECRUIT.RECRUIT_BONUS_RECRUIT) return resResult(STATUS.GACHA_TURNTABLE_POINT_NOT_ENOUGH); @@ -218,7 +218,7 @@ export class GachaHandler { } myTurntable.hasGet = true; // 扣除积分 - userGacha = await UserGacha.updateInfo(roleId, gachaId, 0, { turntable, costPoint: costPoint + 1 }); + userGacha = await UserGachaModel.updateInfo(roleId, gachaId, 0, { turntable, costPoint: costPoint + 1 }); return resResult(STATUS.SUCCESS, { gachaId, @@ -252,7 +252,7 @@ export class GachaHandler { if(!data.isPickHero(pickHero)) return resResult(STATUS.GACHA_CAN_NOT_PICK); } - let userGacha = await UserGacha.updateInfo(roleId, gachaId, activityId, { pickHero }); + let userGacha = await UserGachaModel.updateInfo(roleId, gachaId, activityId, { pickHero }); return resResult(STATUS.SUCCESS, { gachaId, @@ -298,7 +298,7 @@ export class GachaHandler { let { pieceId } = dicHero; let gachaId = getNormalGachaId(); - let { visitedHero, refVisitedTime } = await UserGacha.findByRole(roleId, gachaId, 0); + let { visitedHero, refVisitedTime } = await UserGachaModel.findByRole(roleId, gachaId, 0); if (shouldRefresh(refVisitedTime, new Date())) { visitedHero = []; refVisitedTime = getZeroPointD(); @@ -311,7 +311,7 @@ export class GachaHandler { } visitedHero.push(hid); - let userGacha = await UserGacha.updateInfo(roleId, gachaId, 0, { visitedHero, refVisitedTime }); + let userGacha = await UserGachaModel.updateInfo(roleId, gachaId, 0, { visitedHero, refVisitedTime }); let goods = await addItems(roleId, roleName, sid, [{ id: pieceId, count: RECRUIT.RECRUIT_SHARD_LIMIT }], ITEM_CHANGE_REASON.VISIT_HERO); return resResult(STATUS.SUCCESS, { @@ -371,10 +371,10 @@ export class GachaHandler { let gachaPull = new GachaPull(dicGacha); let { resultList } = gachaPull.pull(count, userHeroes); - let userGacha = await UserGacha.updateInfo(roleId, gachaId, activityId, { guideResultList: resultList }, { pullCnt: 1 }); + let userGacha = await UserGachaModel.updateInfo(roleId, gachaId, activityId, { guideResultList: resultList }, { pullCnt: 1 }); playerData.setPlayerData(userGacha); if(playerData.autoSave()) { // 最后几次自动保存 - await UserGacha.updateInfo(roleId, gachaId, activityId, { candidates: playerData.candidates }); + await UserGachaModel.updateInfo(roleId, gachaId, activityId, { candidates: playerData.candidates }); } return resResult(STATUS.SUCCESS, { @@ -405,7 +405,7 @@ export class GachaHandler { let result = playerData.setCandidate(id); if(!result) return resResult(STATUS.GACHA_GUIDE_NOT_DO) - let userGacha = await UserGacha.updateInfo(roleId, gachaId, activityId, { candidates: playerData.candidates }); + let userGacha = await UserGachaModel.updateInfo(roleId, gachaId, activityId, { candidates: playerData.candidates }); playerData.setPlayerData(userGacha); return resResult(STATUS.SUCCESS, { @@ -443,7 +443,7 @@ export class GachaHandler { results.addBySimpleResult(candidate.list); let { items, heroInfo, resultList } = results.transferToFinalResult(userHeroes); - let userGacha = await UserGacha.updateInfo(roleId, gachaId, activityId, { candidates: playerData.candidates }); + let userGacha = await UserGachaModel.updateInfo(roleId, gachaId, activityId, { candidates: playerData.candidates }); playerData.setPlayerData(userGacha); // 给东西 diff --git a/game-server/app/services/activity/gachaService.ts b/game-server/app/services/activity/gachaService.ts index 40840194b..22f745158 100644 --- a/game-server/app/services/activity/gachaService.ts +++ b/game-server/app/services/activity/gachaService.ts @@ -1,6 +1,6 @@ import { Floor as UserFloor, Hope as UserHope, GachaListReturn, GachaResultIndb } from "../../domain/activityField/gachaField";; import { DicGacha } from "../../pubUtils/dictionary/DicGacha"; -import UserGacha, { UserGachaType } from "../../db/UserGacha"; +import { UserGachaType, UserGachaModel } from "../../db/UserGacha"; import { shouldRefresh, getRandEelm, getRandEelmWithWeight, getRandSingleIndex, getRandSingleEelm } from "../../pubUtils/util"; import { REFRESH_TIME, GACHA_FLOOR_TYPE, HERO_QUALITY_TYPE, IT_TYPE, ITID, CONSUME_TYPE, SPECIAL_ATTR, TIME_OUTPUT_TYPE, GACHA_TYPE, GACHA_PLAN_TYPE } from "../../consts"; import { getTimeFunD, getZeroPointD } from "../../pubUtils/timeUtil"; @@ -19,7 +19,7 @@ import { isGoodsHidden, isHeroHidden } from "../dataService"; * @param roleId */ export async function getGachaList(roleId: string) { - let userGachaList = await UserGacha.findAllByRole(roleId); + let userGachaList = await UserGachaModel.findAllByRole(roleId); let list: GachaListReturn[] = []; for (let [id, dicGacha] of gameData.gacha) { if(!dicGacha.showInMainPage) continue; @@ -55,12 +55,12 @@ export async function refreshGacha(dicGacha: DicGacha, userGacha: UserGachaType) let { roleId, gachaId, refFreeTime, refHopeTime, hope } = userGacha; if (shouldRefresh(refFreeTime, new Date(), REFRESH_TIME, day)) { let ref = getTimeFunD().getAfterDayByGap(refFreeTime, day); - userGacha = await UserGacha.refreshFreeCount(roleId, gachaId, 0, ref); + userGacha = await UserGachaModel.refreshFreeCount(roleId, gachaId, 0, ref); } if (shouldRefresh(refHopeTime, new Date(), REFRESH_TIME)) { hope = hope.map(cur => { return { ...cur, hasGet: false } }); let ref = getZeroPointD(); - userGacha = await UserGacha.refreshHopeCount(roleId, gachaId, 0, hope, ref); + userGacha = await UserGachaModel.refreshHopeCount(roleId, gachaId, 0, hope, ref); } return userGacha } @@ -68,7 +68,7 @@ export async function refreshGacha(dicGacha: DicGacha, userGacha: UserGachaType) export async function getVisitedHeroList(roleId: string) { let gachaId = getNormalGachaId(); - let { visitedHero, refVisitedTime } = await UserGacha.findByRole(roleId, gachaId, 0); + let { visitedHero, refVisitedTime } = await UserGachaModel.findByRole(roleId, gachaId, 0); if (shouldRefresh(refVisitedTime, new Date())) { visitedHero = []; } @@ -567,7 +567,7 @@ export async function getGuideGachaData(serverId: number, activityId: number, ro let createTime = await getRoleCreateTime(roleId); let serverTime = await getServerCreateTime(serverId); let playerData = new GuideGachaData(activityData, createTime, serverTime); - let userGacha = await UserGacha.findByRole(roleId, playerData.gachaId, activityId); + let userGacha = await UserGachaModel.findByRole(roleId, playerData.gachaId, activityId); playerData.setPlayerData(userGacha); if(playerData.hasChoosen || playerData.neverChoose()) return null; return playerData; diff --git a/game-server/app/services/activity/newHeroService.ts b/game-server/app/services/activity/newHeroService.ts index 2fe40de6d..290eb0ca0 100644 --- a/game-server/app/services/activity/newHeroService.ts +++ b/game-server/app/services/activity/newHeroService.ts @@ -1,7 +1,7 @@ import { ACTIVITY_TYPE } from '../../consts'; import { ActivityNewHeroGiftModel, ActivityNewHeroGiftModelType } from '../../db/ActivityNewHeroGift'; import { ActivityNewHeroGKModel, ActivityNewHeroGKModelType } from '../../db/ActivityNewHeroGK'; -import UserGacha, { UserGachaType } from '../../db/UserGacha'; +import { UserGachaModel, UserGachaType } from '../../db/UserGacha'; import { NewHeroGachaData } from '../../domain/activityField/newHeroGachaField'; import { NewHeroGiftData } from '../../domain/activityField/newHeroGiftField'; import { NewHeroGKData } from '../../domain/activityField/newHeroGKField'; @@ -25,11 +25,11 @@ import { refreshGacha } from './gachaService'; let createTime = await getRoleCreateTime(roleId); let serverTime = await getServerCreateTime(serverId); let playerData = new NewHeroGachaData(activityData, createTime, serverTime); - let userGacha: UserGachaType = await UserGacha.findByRole(roleId, playerData.gachaId, activityId); + let userGacha: UserGachaType = await UserGachaModel.findByRole(roleId, playerData.gachaId, activityId); let dicGacha = gameData.gacha.get(playerData.gachaId); userGacha = await refreshGacha(dicGacha, userGacha); if(!userGacha.pickHero) { - userGacha = await UserGacha.updateInfo(roleId, playerData.gachaId, activityId, { pickHero: playerData.getDefaultHero() }) + userGacha = await UserGachaModel.updateInfo(roleId, playerData.gachaId, activityId, { pickHero: playerData.getDefaultHero() }) } playerData.setPlayerRecords(userGacha, dicGacha); diff --git a/shared/db/UserGacha.ts b/shared/db/UserGacha.ts index a22e76c23..c88c52a1e 100644 --- a/shared/db/UserGacha.ts +++ b/shared/db/UserGacha.ts @@ -1,5 +1,5 @@ import BaseModel from './BaseModel'; -import { index, getModelForClass, prop, DocumentType, modelOptions, ReturnModelType, mongoose } from '@typegoose/typegoose'; +import { index, getModelForClass, prop, DocumentType, modelOptions } from '@typegoose/typegoose'; import { getZeroPointD } from '../pubUtils/timeUtil'; import { RECRUIT } from '../pubUtils/dicParam'; import { Candidate, SimpleResult } from '../domain/activityField/guideGachaField'; @@ -103,7 +103,7 @@ export default class UserGacha extends BaseModel { candidates: Candidate[]; // 预抽卡候选 public static async findAllByRole(roleId: string) { - let rec: UserGachaType[] = await UserGachaROModel.find({ roleId }).lean({ virtuals: true }); + let rec: UserGachaType[] = await UserGachaModel.find({ roleId }).lean({ virtuals: true }); return rec; } @@ -142,11 +142,5 @@ export default class UserGacha extends BaseModel { export const UserGachaModel = getModelForClass(UserGacha); -export let UserGachaROModel: ReturnModelType; -export function loadUserGachaROModel(connect: mongoose.Connection) { - UserGachaROModel = getModelForClass(UserGacha, { - existingConnection: connect - }); -} export interface UserGachaType extends Pick, keyof UserGacha> { } export type UserGachaParam = Partial; diff --git a/shared/db/index.ts b/shared/db/index.ts index 96d42e6a0..d5a53f2ec 100644 --- a/shared/db/index.ts +++ b/shared/db/index.ts @@ -18,7 +18,6 @@ import { loadRoleROModel } from "./Role"; import { loadHeroROModel } from "./Hero"; import { loadItemROModel } from "./Item"; import { loadUserGachaRecROModel } from "./UserGachaRec"; -import { loadUserGachaROModel } from "./UserGacha"; export function loadGmDb(connect: mongoose.Connection) { // console.log('************') @@ -48,5 +47,4 @@ export function loadRODb(connect: mongoose.Connection) { loadHeroROModel(connect); loadItemROModel(connect); loadUserGachaRecROModel(connect); - loadUserGachaROModel(connect); } \ No newline at end of file