diff --git a/game-server/app/servers/connector/handler/entryHandler.ts b/game-server/app/servers/connector/handler/entryHandler.ts index 1f2cb8bbe..853a5ec62 100644 --- a/game-server/app/servers/connector/handler/entryHandler.ts +++ b/game-server/app/servers/connector/handler/entryHandler.ts @@ -144,7 +144,7 @@ export class EntryHandler { let self = this; let roleId = session.get('roleId'); - let role = await RoleModel.findByRoleId(roleId, '-_id', true, true); + let role = await RoleModel.findByRoleIdAndSetTime(roleId, '-_id', true); if (!role) { return resResult(STATUS.ROLE_NOT_FOUND); } diff --git a/game-server/app/services/activity/treasureHuntService.ts b/game-server/app/services/activity/treasureHuntService.ts index 70f5c1f26..144d36149 100644 --- a/game-server/app/services/activity/treasureHuntService.ts +++ b/game-server/app/services/activity/treasureHuntService.ts @@ -1,4 +1,4 @@ -import { ITEM_CHANGE_REASON, STATUS, TREASURE_HUNT_DATA_TYPE } from '../../consts'; +import { ACTIVITY_TYPE, ITEM_CHANGE_REASON, STATUS, TREASURE_HUNT_DATA_TYPE } from '../../consts'; import { ActivityTreasureHuntShopModel } from '../../db/ActivityTreasureHuntShop'; import { ActivityTreasureHuntTaskModel } from '../../db/ActivityTreasureHuntTask'; import { ActivityTreasureHuntTreasureShopModel } from '../../db/ActivityTreasureHuntTreasureShop'; @@ -6,7 +6,7 @@ import { ActivityTreasureHuntFirstPageModel } from '../../db/ActivityTreasureHun import { TreasureHuntData } from '../../domain/activityField/treasureHuntField'; import { addReward, stringToConsumeParam, stringToRewardParam } from './giftPackageService'; import { RewardParam } from '../../domain/activityField/rewardField'; -import { getActivityById, getActivityByServerId } from './activityService'; +import { getActivitiesByType, getActivityById, getActivityByServerId } from './activityService'; import { getRoleCreateTime, getServerCreateTime } from '../redisService'; import { handleCost } from '../role/rewardService'; import { ActivityTreasureHuntChallengeModel } from '../../db/ActivityTreasureHuntChallenge'; @@ -28,6 +28,7 @@ export async function getPlayerTreasureHuntDataShow(activityId: number, serverId */ export async function getPlayerTreasureHuntData(activityId: number, serverId: number, roleId: string, dataType: TREASURE_HUNT_DATA_TYPE = TREASURE_HUNT_DATA_TYPE.ALL) { let activityData = await getActivityById(activityId); + console.log('#####', activityId, activityData) let createTime = await getRoleCreateTime(roleId); let serverTime = await getServerCreateTime(serverId); @@ -65,7 +66,7 @@ export async function getPlayerTreasureHuntShopData(activityId: number, serverId } export async function getPlayerTreasureHuntTaskData(activityId: number, serverId: number, roleId: string) { - return await getPlayerTreasureHuntData(activityId, serverId, roleId, TREASURE_HUNT_DATA_TYPE.TREASURE_SHOP); + return await getPlayerTreasureHuntData(activityId, serverId, roleId, TREASURE_HUNT_DATA_TYPE.TASK); } export async function getPlayerTreasureHuntChallengeData(activityId: number, serverId: number, roleId: string) { @@ -123,7 +124,7 @@ export async function makeShop(roleId: string, roleName: string, sid: string, se } export async function treasureHuntChallengeConsume(serverId: number, roleId: string, sid: string) { - let activities = await getActivityByServerId(serverId); + let activities = await getActivitiesByType(serverId, ACTIVITY_TYPE.TREASURE_HUNT); for(let { activityId } of activities) { let playerData = await getPlayerTreasureHuntChallengeData(activityId, serverId, roleId,); if (!playerData) return false; diff --git a/shared/db/Role.ts b/shared/db/Role.ts index bb5354b0e..76e7ed8bb 100644 --- a/shared/db/Role.ts +++ b/shared/db/Role.ts @@ -328,6 +328,12 @@ export default class Role extends BaseModel { return role; } + public static async findByRoleIdAndSetTime(roleId: string, select?: string, getters = false) { + const curSec = nowSeconds(); + // 为了计算累计登录,此处查询new为false + const role: RoleType = await RoleModel.findOneAndUpdate({ roleId }, { loginTime: curSec, quitTime: curSec }, { new: false }).select(select).lean({ getters, virtuals: true }); + return role; + } /** * 根据roleId获取一条数据 * @param roleId 玩家id