优化 排行榜使用redis缓存

This commit is contained in:
luying
2020-11-20 19:47:13 +08:00
parent d51a7119af
commit 1145d95889
6 changed files with 188 additions and 28 deletions
@@ -1,5 +1,5 @@
import { STATUS } from './../../../consts/statusCode';
import { HANG_UP_CONSTS, GOLD_COST_RATIO, TOWER_TASK_CONST } from './../../../consts/consts';
import { HANG_UP_CONSTS, GOLD_COST_RATIO, TOWER_TASK_CONST, REDIS_KEY } from './../../../consts/consts';
import { TowerTaskRecModel } from './../../../db/TowerTaskRec';
import { HangUpSpdUpRecModel } from './../../../db/HangUpSpdUpRec';
import { HangUpRecordModel } from './../../../db/HangUpRecord';
@@ -11,6 +11,7 @@ import { decodeArrayStr, resResult, shouldRefresh, calculateNum, getRefTime, gen
import { calcuHangUpReward, checkTaskConditions, checkHangUpSpdUpCnt, createCurTasks, treatTask, getRemainTime, getTasksReward, getTaskStatus, getDoingOrWaitingTasks } from '../../../services/battleService';
import { handleFixedReward, handleReward } from '../../../services/rewardService';
import { checkBattleHeroes } from '../../../services/normalBattleService';
import { getRank, setRank } from '../../../services/redisService';
export default function(app: Application) {
return new TowerBattleHandler(app);
@@ -29,7 +30,11 @@ export class TowerBattleHandler {
let { towerLv } = await RoleModel.findByRoleId(roleId);
if (!towerLv) {
towerLv = 1;
await RoleModel.towerLvUp(roleId);
let role = await RoleModel.towerLvUp(roleId);
// 更新redis
let { roleName, towerUpTime, lv, vLv } = role;
await setRank(REDIS_KEY.TOWER_RANK, roleId, towerLv, towerUpTime.getTime(), {roleName, lv, vLv, guildName:"", head: "zhaoyun"});
}
let towerRec = await TowerRecordModel.getRecordByLv(roleId, towerLv);
if (!towerRec) {
@@ -303,17 +308,7 @@ export class TowerBattleHandler {
let roleId = session.get('roleId');
let roleName = session.get('roleName');
let ranks = await RoleModel.getRank('tower', ['roleId', 'roleName', 'towerLv', 'lv', 'vLv']);
let resultRanks = ranks.map((cur, index) => {
let { roleId, roleName, towerLv, lv, vLv } = cur;
return {rank: index+1, roleId, roleName, lv, vLv, guildName: "", head: "zhaoyun", num: towerLv, str: ''}
});
let myRank = null;
for(let r of resultRanks) {
if(r.roleId == roleId) {
myRank = r; break
}
}
let {ranks, myRank} = await getRank(REDIS_KEY.TOWER_RANK, roleId);
if(!myRank) {
let role = await RoleModel.findByRoleId(roleId);
let {towerLv, lv, vLv} = role;
@@ -322,6 +317,6 @@ export class TowerBattleHandler {
}
}
return resResult(STATUS.SUCCESS, { ranks: resultRanks, myRank });
return resResult(STATUS.SUCCESS, { ranks, myRank });
}
}