✨ feat(db): 给UserGacha添加只读库和相关操作
This commit is contained in:
@@ -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 { UserGachaModel } from "../../../db/UserGacha";
|
||||
import UserGacha, { 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 UserGachaModel.findByRole(roleId, gachaId, activityId);
|
||||
let userGacha = await UserGacha.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 UserGachaModel.updateInfo(roleId, gachaId, activityId, {
|
||||
userGacha = await UserGacha.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 UserGachaModel.findByRole(roleId, gachaId, 0);
|
||||
let userGacha = await UserGacha.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 UserGachaModel.updateInfo(roleId, gachaId, 0, { hope: userHope });
|
||||
userGacha = await UserGacha.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 UserGachaModel.findByRole(roleId, gachaId, 0);
|
||||
let userGacha = await UserGacha.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 UserGachaModel.updateInfo(roleId, gachaId, 0, { turntable, costPoint: costPoint + 1 });
|
||||
userGacha = await UserGacha.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 UserGachaModel.updateInfo(roleId, gachaId, activityId, { pickHero });
|
||||
let userGacha = await UserGacha.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 UserGachaModel.findByRole(roleId, gachaId, 0);
|
||||
let { visitedHero, refVisitedTime } = await UserGacha.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 UserGachaModel.updateInfo(roleId, gachaId, 0, { visitedHero, refVisitedTime });
|
||||
let userGacha = await UserGacha.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 UserGachaModel.updateInfo(roleId, gachaId, activityId, { guideResultList: resultList }, { pullCnt: 1 });
|
||||
let userGacha = await UserGacha.updateInfo(roleId, gachaId, activityId, { guideResultList: resultList }, { pullCnt: 1 });
|
||||
playerData.setPlayerData(userGacha);
|
||||
if(playerData.autoSave()) { // 最后几次自动保存
|
||||
await UserGachaModel.updateInfo(roleId, gachaId, activityId, { candidates: playerData.candidates });
|
||||
await UserGacha.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 UserGachaModel.updateInfo(roleId, gachaId, activityId, { candidates: playerData.candidates });
|
||||
let userGacha = await UserGacha.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 UserGachaModel.updateInfo(roleId, gachaId, activityId, { candidates: playerData.candidates });
|
||||
let userGacha = await UserGacha.updateInfo(roleId, gachaId, activityId, { candidates: playerData.candidates });
|
||||
playerData.setPlayerData(userGacha);
|
||||
|
||||
// 给东西
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
import { Floor as UserFloor, Hope as UserHope, GachaListReturn, GachaResultIndb } from "../../domain/activityField/gachaField";;
|
||||
import { DicGacha } from "../../pubUtils/dictionary/DicGacha";
|
||||
import { UserGachaType, UserGachaModel } from "../../db/UserGacha";
|
||||
import UserGacha, { UserGachaType } 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 UserGachaModel.findAllByRole(roleId);
|
||||
let userGachaList = await UserGacha.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 = <Date>getTimeFunD().getAfterDayByGap(refFreeTime, day);
|
||||
userGacha = await UserGachaModel.refreshFreeCount(roleId, gachaId, 0, ref);
|
||||
userGacha = await UserGacha.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 UserGachaModel.refreshHopeCount(roleId, gachaId, 0, hope, ref);
|
||||
userGacha = await UserGacha.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 UserGachaModel.findByRole(roleId, gachaId, 0);
|
||||
let { visitedHero, refVisitedTime } = await UserGacha.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 UserGachaModel.findByRole(roleId, playerData.gachaId, activityId);
|
||||
let userGacha = await UserGacha.findByRole(roleId, playerData.gachaId, activityId);
|
||||
playerData.setPlayerData(userGacha);
|
||||
if(playerData.hasChoosen || playerData.neverChoose()) return null;
|
||||
return playerData;
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
import { ACTIVITY_TYPE } from '../../consts';
|
||||
import { ActivityNewHeroGiftModel, ActivityNewHeroGiftModelType } from '../../db/ActivityNewHeroGift';
|
||||
import { ActivityNewHeroGKModel, ActivityNewHeroGKModelType } from '../../db/ActivityNewHeroGK';
|
||||
import { UserGachaModel, UserGachaType } from '../../db/UserGacha';
|
||||
import UserGacha, { 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 UserGachaModel.findByRole(roleId, playerData.gachaId, activityId);
|
||||
let userGacha: UserGachaType = await UserGacha.findByRole(roleId, playerData.gachaId, activityId);
|
||||
let dicGacha = gameData.gacha.get(playerData.gachaId);
|
||||
userGacha = await refreshGacha(dicGacha, userGacha);
|
||||
if(!userGacha.pickHero) {
|
||||
userGacha = await UserGachaModel.updateInfo(roleId, playerData.gachaId, activityId, { pickHero: playerData.getDefaultHero() })
|
||||
userGacha = await UserGacha.updateInfo(roleId, playerData.gachaId, activityId, { pickHero: playerData.getDefaultHero() })
|
||||
}
|
||||
playerData.setPlayerRecords(userGacha, dicGacha);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user