diff --git a/game-server/app/servers/battle/handler/pvpHandler.ts b/game-server/app/servers/battle/handler/pvpHandler.ts index c4ada1f2d..0d1429d00 100644 --- a/game-server/app/servers/battle/handler/pvpHandler.ts +++ b/game-server/app/servers/battle/handler/pvpHandler.ts @@ -2,10 +2,10 @@ import { Application, BackendSession, pinus, HandlerService, } from 'pinus'; import { uniq, findWhere, findIndex } from 'underscore'; import { gameData, getPvpBoxs, getPLvByScore } from '../../../pubUtils/data'; -import { refreshEnemies, getEnemies, getLvByScore, defaultHeroes, comsumeChallengeCnt, refresh, findPvpDefByRoleId, checkRoleIsRobot, getRefOppCnt, findPvpDefAllByRoleId, generPVPOppRecInfo, generMyRecInfo, robotIdComBack } from '../../../services/pvpService'; +import { refreshEnemies, getEnemies, getLvByScore, defaultHeroes, comsumeChallengeCnt, refresh, findPvpDefByRoleId, getRefOppCnt, findPvpDefAllByRoleId, generPVPOppRecInfo, generMyRecInfo } from '../../../services/pvpService'; import { RoleModel, RoleType } from '../../../db/Role'; import { STATUS } from '../../../consts/statusCode'; -import { resResult, genCode } from '../../../pubUtils/util'; +import { resResult, genCode, checkRoleIsRobot, robotIdComBack } from '../../../pubUtils/util'; import { PvpDefenseModel, OppPlayers } from '../../../db/PvpDefense'; import { pvpEndParamInter } from '../../../pubUtils/interface'; import { PlayerDetail, PlayerDetailHero } from '../../../domain/battleField/guild'; diff --git a/game-server/app/servers/role/handler/friendHandler.ts b/game-server/app/servers/role/handler/friendHandler.ts index 786694ca5..562634b81 100644 --- a/game-server/app/servers/role/handler/friendHandler.ts +++ b/game-server/app/servers/role/handler/friendHandler.ts @@ -1,6 +1,6 @@ import { Application, BackendSession, ChannelService, HandlerService, } from "pinus"; -import { resResult, getRandEelm, getResStr, shouldRefresh, sortArrRandom } from "../../../pubUtils/util"; -import { STATUS, ROLE_SELECT, FRIEND_DROP_TYPE, FRIEND_RELATION_TYPE, POPULATE_TYPE, BLOCK_OPEATE, CONSUME_TYPE, ITID, HERO_SELECT, EQUIP_SELECT, REDIS_KEY, MSG_SOURCE, MSG_TYPE, TASK_TYPE } from "../../../consts"; +import { resResult, getRandEelm, getResStr, shouldRefresh, sortArrRandom, checkRoleIsRobot, getRobotSysType, makeRobotId } from "../../../pubUtils/util"; +import { STATUS, ROLE_SELECT, FRIEND_DROP_TYPE, FRIEND_RELATION_TYPE, POPULATE_TYPE, BLOCK_OPEATE, CONSUME_TYPE, ITID, HERO_SELECT, EQUIP_SELECT, REDIS_KEY, MSG_SOURCE, MSG_TYPE, TASK_TYPE, ROBOT_SYS_TYPE } from "../../../consts"; import { RoleModel, RoleType } from "../../../db/Role"; import { getTimeFun, getZeroPointD } from "../../../pubUtils/timeUtil"; import { FriendApplyModel } from "../../../db/FriendApply"; @@ -23,6 +23,7 @@ import { PlayerDetail, PlayerDetailHero } from "../../../domain/battleField/guil import { createPrivateMsg, pushMsgToRole, pushPresent } from "../../../services/chatService"; import { Rank } from "../../../services/rankService"; import { checkTaskWithRoles, checkTask, checkActivityTask } from "../../../services/taskService"; +import { ComBattleTeamModel } from "../../../db/ComBattleTeam"; export default function (app: Application) { @@ -607,6 +608,45 @@ export class FriendHandler { }); } + async getPlayerSimpleInfo(msg: { roleId: string }, session: BackendSession) { + + let roleId: string = session.get('roleId'); + + let { roleId: targetRoleId } = msg; + let isRobot = checkRoleIsRobot(targetRoleId); + if(isRobot) { + let role = await RoleModel.findByRoleId(roleId); + let sysType = getRobotSysType(targetRoleId); + let addObj: any = { roleId: makeRobotId(''), roleName: '' }; + if(sysType == ROBOT_SYS_TYPE.COM_BTL) { + let comBattle = await ComBattleTeamModel.findByRoleId(targetRoleId); + if(comBattle) { + addObj = comBattle.roleStatus.find(cur => cur.roleId == targetRoleId)||{}; + } + } + let param = new FriendRecommendParams({...role, ...addObj}); + let { serverId, userInfo: { serverType } } = role; + let serverName = await getServerName(serverType, serverId); + param.setServerName(serverId, serverName); + + return resResult(STATUS.SUCCESS, {...param, isRobot }); + } else { + + let role = await RoleModel.findByRoleId(targetRoleId); + let myFriendRelation = await FriendRelationModel.findFriendByRole(roleId, POPULATE_TYPE.NOT); + + let type = getRecommendType(myFriendRelation, roleId, role.roleId); + let param = new FriendRecommendParams(role); + param.setType(type); + + let { serverId, userInfo: { serverType } } = role; + let serverName = await getServerName(serverType, serverId); + param.setServerName(serverId, serverName); + return resResult(STATUS.SUCCESS, {...param, isRobot }); + } + + } + async getPlayerDetail(msg: { roleId: string }, session: BackendSession) { // let roleId = session.get('roleId'); @@ -616,11 +656,13 @@ export class FriendHandler { let dbHeroes = await HeroModel.findByRole(oppoRoleId); let role = await RoleModel.findByRoleId(oppoRoleId, null, true); + if(!role) return resResult(STATUS.ROLE_NOT_FOUND); + let { topLineup, topLineupCe, towerLv, showLineup } = role; let heroes = new Array(); - if (showLineup) { // 设置过展示阵容 + if (showLineup && showLineup.length) { // 设置过展示阵容 for (let hid of showLineup) { let curHero = dbHeroes.find(cur => cur.hid == hid); if (curHero) { diff --git a/game-server/app/services/pvpService.ts b/game-server/app/services/pvpService.ts index 2dd4e5ae5..dcbdfb3ae 100644 --- a/game-server/app/services/pvpService.ts +++ b/game-server/app/services/pvpService.ts @@ -4,7 +4,7 @@ import { RoleType } from '../db/Role'; import { PVP_HERO_POS, REDIS_KEY, PVP_CONST, COUNTER } from '../consts'; import { setPvpDefResult } from '../services/timeTaskService'; import { dicPvpOpponent, DicPvpOpponent } from "../pubUtils/dictionary/DicPvpOpponent"; -import { getRandSingleIndex, genCode, shouldRefresh, getChineseName } from '../pubUtils/util'; +import { getRandSingleIndex, genCode, shouldRefresh, getChineseName, makeRobotId, robotIdComBack } from '../pubUtils/util'; import { oppPlayersInter, pvpEndParamInter } from '../pubUtils/interface'; import { gameData, getPLvByScore } from "../pubUtils/data"; import { PVP } from '../pubUtils/dicParam'; @@ -313,21 +313,6 @@ function generateRobotRoleId() { return `${genCode(10)}_r`; } -// 根据roleId判断是不是机器人 -export function checkRoleIsRobot(roleId: string) { - return !!roleId.match(/_r/); -} - -// 将一般的roleId转为带_r的 -export function makeRobotId(roleId: string) { - return `${roleId}_r`; -} - -// 将一般的roleId去掉_r -export function robotIdComBack(robotRoleId: string) { - return robotRoleId.replace(/_r/, '') -} - // 根据连胜次数,获得加成的积分 export function getPlusScore(win: number) { let result = win - 1; diff --git a/shared/consts/constModules/sysConst.ts b/shared/consts/constModules/sysConst.ts index 93f78e41d..0875b3023 100644 --- a/shared/consts/constModules/sysConst.ts +++ b/shared/consts/constModules/sysConst.ts @@ -704,4 +704,9 @@ export enum HANDLE_REWARD_TYPE { export enum RECEIVE_MAIL_TYPE { SINGLE = 1, // 领取单个 ALL = 2, // 一件领取 +} + +export enum ROBOT_SYS_TYPE { + COM_BTL = 1, + PVP = 2 } \ No newline at end of file diff --git a/shared/db/ComBattleTeam.ts b/shared/db/ComBattleTeam.ts index a38866b5b..c3fb37b62 100644 --- a/shared/db/ComBattleTeam.ts +++ b/shared/db/ComBattleTeam.ts @@ -183,6 +183,11 @@ export default class ComBattleTeam extends BaseModel { return team; } + public static async findByRoleId(roleId: string) { + const team: ComBattleTeamType = await ComBattleTeamModel.findOne({ roleIds: { $in: [roleId] }}).lean(); + return team; + } + public static async addRole(teamCode: string, roleStatus: RoleStatus, lean = true) { const team: ComBattleTeamType = await ComBattleTeamModel.findOneAndUpdate({ teamCode, roleCnt: { $lte: 2 } }, {$push: {roleIds: roleStatus.roleId, roleStatus}, $inc: {roleCnt: 1}}, {new: true}).lean(lean); return team; diff --git a/shared/domain/roleField/friend.ts b/shared/domain/roleField/friend.ts index d0c3d236f..208a01030 100644 --- a/shared/domain/roleField/friend.ts +++ b/shared/domain/roleField/friend.ts @@ -1,6 +1,7 @@ import { RoleType } from "../../db/Role"; import { FriendShipType } from "../../db/FriendShip"; import * as friendUtil from '../../pubUtils/friendUtil' +import { FRIEND_RELATION_TYPE } from "../../consts"; export class FriendParams { roleId: string; @@ -13,7 +14,7 @@ export class FriendParams { title: number; serverId: number; serverName: string; - type: number; + type: number = FRIEND_RELATION_TYPE.NORMAL; constructor(role: RoleType) { this.roleId = role.roleId; diff --git a/shared/pubUtils/util.ts b/shared/pubUtils/util.ts index 6edc2edc8..2423f178e 100644 --- a/shared/pubUtils/util.ts +++ b/shared/pubUtils/util.ts @@ -4,7 +4,7 @@ import { HeroModel, HeroType } from '../db/Hero'; import fs = require('fs'); import path = require('path'); -import { HERO_CE_RATIO, ABI_STAGE, GACHA_TO_FLOOR, REFRESH_TIME, } from '../consts'; +import { HERO_CE_RATIO, ABI_STAGE, GACHA_TO_FLOOR, REFRESH_TIME, ROBOT_SYS_TYPE, } from '../consts'; import { findIndex } from 'underscore'; import { getTimeFunM } from './timeUtil'; @@ -546,13 +546,42 @@ export function getChineseName() { return randomName.generate() } -export function getRobotInfo() { +export function getRobotInfo(sysType = ROBOT_SYS_TYPE.COM_BTL) { return { robotRoleName: getChineseName(), - robotRoleId: genCode(8) + robotRoleId: makeRobotId(genCode(8), sysType), } } +// 根据roleId判断是不是机器人 +export function checkRoleIsRobot(roleId: string) { + return !!roleId.match(/_r/); +} + +// 将一般的roleId转为带_r的 +export function makeRobotId(roleId: string, sysType = ROBOT_SYS_TYPE.COM_BTL) { + if(sysType) { + return `${sysType}|${roleId}_r`; + } else { + return `${roleId}_r`; + } +} +// 获取来源系统 +export function getRobotSysType(roleId: string) { + let type = roleId.split('|')[0]; + if(isNaN(parseInt(type))) { + return 0 + } else { + return parseInt(type); + } + +} + +// 将一般的roleId去掉_r +export function robotIdComBack(robotRoleId: string) { + return robotRoleId.replace(/_r/, '') +} + export function splitString(dataString: string, key: string) { if (!dataString) { return []; diff --git a/web-server/typings/app/controller/index.d.ts b/web-server/typings/app/controller/index.d.ts index 03dd5c3e2..b6ca9fdbb 100644 --- a/web-server/typings/app/controller/index.d.ts +++ b/web-server/typings/app/controller/index.d.ts @@ -1,4 +1,4 @@ -// This file is created by egg-ts-helper@1.25.8 +// This file is created by egg-ts-helper@1.26.0 // Do not modify this file!!!!!!!!! import 'egg'; diff --git a/web-server/typings/app/index.d.ts b/web-server/typings/app/index.d.ts index 7b891bb48..b4d38c358 100644 --- a/web-server/typings/app/index.d.ts +++ b/web-server/typings/app/index.d.ts @@ -1,4 +1,4 @@ -// This file is created by egg-ts-helper@1.25.8 +// This file is created by egg-ts-helper@1.26.0 // Do not modify this file!!!!!!!!! import 'egg'; diff --git a/web-server/typings/app/middleware/index.d.ts b/web-server/typings/app/middleware/index.d.ts index f795f5782..030e11eba 100644 --- a/web-server/typings/app/middleware/index.d.ts +++ b/web-server/typings/app/middleware/index.d.ts @@ -1,4 +1,4 @@ -// This file is created by egg-ts-helper@1.25.8 +// This file is created by egg-ts-helper@1.26.0 // Do not modify this file!!!!!!!!! import 'egg'; diff --git a/web-server/typings/app/service/index.d.ts b/web-server/typings/app/service/index.d.ts index 62b9aa4a8..2600e48cc 100644 --- a/web-server/typings/app/service/index.d.ts +++ b/web-server/typings/app/service/index.d.ts @@ -1,4 +1,4 @@ -// This file is created by egg-ts-helper@1.25.8 +// This file is created by egg-ts-helper@1.26.0 // Do not modify this file!!!!!!!!! import 'egg'; diff --git a/web-server/typings/config/index.d.ts b/web-server/typings/config/index.d.ts index 6f8bf3cca..7d96d06f5 100644 --- a/web-server/typings/config/index.d.ts +++ b/web-server/typings/config/index.d.ts @@ -1,4 +1,4 @@ -// This file is created by egg-ts-helper@1.25.8 +// This file is created by egg-ts-helper@1.26.0 // Do not modify this file!!!!!!!!! import 'egg'; diff --git a/web-server/typings/config/plugin.d.ts b/web-server/typings/config/plugin.d.ts index 4242eab8d..b7c692f17 100644 --- a/web-server/typings/config/plugin.d.ts +++ b/web-server/typings/config/plugin.d.ts @@ -1,4 +1,4 @@ -// This file is created by egg-ts-helper@1.25.8 +// This file is created by egg-ts-helper@1.26.0 // Do not modify this file!!!!!!!!! import 'egg';