2127 lines
70 KiB
TypeScript
2127 lines
70 KiB
TypeScript
import ServerMgr from "./ServerMgr";
|
||
import TokenMgr from "./TokenMgr";
|
||
import FrozenIPMgr from "./FrozenIPMgr";
|
||
import FrozenMacMgr from "./FrozenMacMgr";
|
||
import DB from "../utils/DB";
|
||
import Charge from "../utils/Charge";
|
||
import Http from "../utils/Http";
|
||
// 网络请求
|
||
import bodyParser from "body-parser";
|
||
import express from "express";
|
||
import { Express, Request, Response } from "express";
|
||
import DataUtil from "../gear/SKDataUtil";
|
||
import SKDataUtil from "../gear/SKDataUtil";
|
||
import SKLogger from "../gear/SKLogger";
|
||
import GameConf from "../../conf/GameConf";
|
||
import GameUtil from "../core/GameUtil";
|
||
import { MsgCode } from "../role/EEnum";
|
||
import GoodsMgr from "../item/GoodsMgr";
|
||
import GTimer from "../common/GTimer";
|
||
import SKCxfUtil from "../gear/SKCxfUtil";
|
||
import Ofuda from "../object/Ofuda";
|
||
|
||
export default class HttpGate {
|
||
static shared = new HttpGate();
|
||
//账号格式6-22位字母数字
|
||
accountPattern: any = /^[a-zA-Z0-9]{6,22}$/;
|
||
app: Express;
|
||
AccountRegisterList: any = {};
|
||
createList: any = {};
|
||
chargeActivityState: any = {}; // 充值活动是否开启的状态
|
||
payUserKey: string = "";
|
||
reportKey: string[] = [];
|
||
|
||
constructor() {
|
||
this.app = express();
|
||
this.app.use(function (req: Request, res: Response, next: any) {
|
||
res.header("Access-Control-Allow-Origin", "*");
|
||
res.header("Access-Control-Expose-Headers", "'Content-Type,Access-Control-Allow-Headers,Authorization,X-Requested-With");
|
||
res.header("Access-Control-Allow-Methods", "PUT,POST,GET,DELETE,OPTIONS");
|
||
res.header("X-Powered-By", ' 3.2.1');
|
||
res.header("Content-Type", "application/json;charset=utf-8");
|
||
next();
|
||
});
|
||
this.app.use(bodyParser.json({ limit: "1mb" }));
|
||
this.app.use(bodyParser.urlencoded({ limit: "1mb", extended: true }));
|
||
}
|
||
|
||
registerServer(req: any, res: any) {
|
||
let server_id = req.query.server_id;
|
||
let server_name = req.query.server_name;
|
||
let outer_ip = req.query.outer_ip;
|
||
let socket_port = req.query.socket_port;
|
||
let http_port = req.query.http_port;
|
||
let sign = req.query.sign; // 签名
|
||
if (sign != GameConf.sign) {
|
||
Http.reply(res, {
|
||
code: MsgCode.FAILED,
|
||
msg: `你是傻逼吗!`
|
||
});
|
||
return;
|
||
}
|
||
let ret = ServerMgr.shared.serverReg(server_id, server_name, outer_ip, socket_port, http_port);
|
||
SKLogger.info(`游戏服注册:[${server_id}:${server_name}]外网地址[${outer_ip}:${socket_port}]HTTP端口[${http_port}]`);
|
||
Http.reply(res, {
|
||
result: ret ? MsgCode.SUCCESS : MsgCode.FAILED,
|
||
tokens: TokenMgr.shared.getAllToken(),
|
||
});
|
||
};
|
||
|
||
pingServer(req: any, res: any) {
|
||
let id = req.query.id;
|
||
let n = req.query.num;
|
||
let ret = ServerMgr.shared.serverPing(id, n);
|
||
Http.reply(res, {
|
||
result: ret,
|
||
});
|
||
};
|
||
|
||
/*
|
||
* 根据serverid获取server列表
|
||
* @param serverid 服务器id
|
||
*/
|
||
getServerListByServerid(serverid: number) {
|
||
let server_list = [];
|
||
let servers = ServerMgr.shared.getServerList();
|
||
if (serverid == 0) {
|
||
for (let key in servers) {
|
||
server_list.push(servers[key]);
|
||
}
|
||
}
|
||
else {
|
||
let server = ServerMgr.shared.getServer(serverid);
|
||
if (server) {
|
||
server_list.push(server);
|
||
}
|
||
}
|
||
return server_list;
|
||
}
|
||
// 通过连接 获取客户端ip
|
||
getClientIP(req: any, res: any): string {
|
||
var ip = req.headers['x-forwarded-for'] ||
|
||
req.ip ||
|
||
req.connection.remoteAddress ||
|
||
req.socket.remoteAddress ||
|
||
req.connection.socket.remoteAddress || '';
|
||
ip = ip.replace(/::ffff:/, '');
|
||
if (ip.split(',').length > 0) {
|
||
ip = ip.split(',')[0];
|
||
}
|
||
return ip;
|
||
}
|
||
// 注册请求
|
||
register(req: any, res: any) {
|
||
if (GameUtil.isClose) {
|
||
Http.reply(res, {
|
||
code: MsgCode.NETWORK_ERROR,
|
||
msg: "游戏关服维护中,请稍候注册!"
|
||
});
|
||
return;
|
||
}
|
||
let account = req.query.account.trim();
|
||
let password = req.query.password.trim();
|
||
let invitecode = req.query.invitecode.trim();
|
||
invitecode = invitecode.replace(" ", "*")
|
||
|
||
if (!this.accountPattern.test(account)){
|
||
Http.reply(res, {
|
||
code: MsgCode.OPERATION_ERROR,
|
||
msg: `账号请不要输入特殊字符`
|
||
});
|
||
return;
|
||
}
|
||
|
||
if (this.AccountRegisterList[account]) {
|
||
Http.reply(res, {
|
||
code: MsgCode.INVITE_CODE_ERR,
|
||
msg: `已注册`
|
||
});
|
||
return;
|
||
}
|
||
let ip = this.getClientIP(req, res);
|
||
if (!FrozenIPMgr.shared.checkIP(ip)) {
|
||
Http.reply(res, {
|
||
code: MsgCode.INVITE_CODE_ERR,
|
||
msg: `禁止注册`
|
||
});
|
||
return;
|
||
}
|
||
// 检查邀请码
|
||
DB.isCodeEnable(invitecode,(code: number,msg: String) =>{
|
||
if (code == MsgCode.SUCCESS){
|
||
let nowtime = Date.now();
|
||
this.AccountRegisterList[account] = {
|
||
account: account,
|
||
password: password,
|
||
invitecode: invitecode,
|
||
reqtime: nowtime,
|
||
ip: ip,
|
||
}
|
||
DB.accountRegister({
|
||
account: account,
|
||
password: password,
|
||
invitecode: invitecode
|
||
}, (code: number, msg: string) => {
|
||
delete this.AccountRegisterList[account];
|
||
Http.reply(res, {
|
||
code: code,
|
||
msg: msg
|
||
});
|
||
});
|
||
}else {
|
||
Http.reply(res, {
|
||
code: MsgCode.INVITE_CODE_ERR,
|
||
msg: `无效的邀请码`
|
||
});
|
||
return;
|
||
}
|
||
})
|
||
}
|
||
|
||
// 玩家登录
|
||
login(req: any, res: any) {
|
||
if (GameUtil.isClose) {
|
||
Http.reply(res, {
|
||
code: MsgCode.NETWORK_ERROR,
|
||
msg: "游戏关服维护中,请稍候登录!"
|
||
});
|
||
return;
|
||
}
|
||
let account = req.query.account;
|
||
let password = req.query.password;
|
||
let version = req.query.version;
|
||
let mac = req.query.mac;
|
||
let ip = this.getClientIP(req, res);
|
||
if (!FrozenIPMgr.shared.checkIP(ip)) {
|
||
console.warn(`登录:帐号[${account}]登录失败:被禁IP[${ip}]`);
|
||
Http.reply(res, {
|
||
code: MsgCode.FORZEN_IP,
|
||
msg: "您的帐号IP被冰结!"
|
||
});
|
||
return;
|
||
}
|
||
if (!FrozenMacMgr.shared.checkMAC(mac)) {
|
||
console.warn(`登录:帐号[${account}]登录失败:被禁MAC[${mac}]`);
|
||
Http.reply(res, {
|
||
code: MsgCode.FORZEN_MAC,
|
||
msg: "您的帐号MAC被冰结!"
|
||
});
|
||
return;
|
||
}
|
||
/* if (DataUtil.checkVersion(version, GameConf.login_version) < 0) {
|
||
let info = `您的游戏端版本号${version}过低,为更好的游戏体验请退出游戏自动升级!`;
|
||
SKLogger.warn(`登录:帐号[${account}]登录失败,版本号[${version}]过低!`);
|
||
Http.reply(res, {
|
||
code: MsgCode.LOGIN_LOW_VERSION,
|
||
msg: info
|
||
});
|
||
return;
|
||
} */
|
||
SKLogger.debug(`登录:玩家[${account}]读表登录...`);
|
||
DB.accountLogin({
|
||
account: account,
|
||
password: password,
|
||
ip: ip,
|
||
mac: mac,
|
||
}, (code: number, msg: string, data: any) => {
|
||
let result: any = {
|
||
code: code,
|
||
msg: msg
|
||
};
|
||
if (code == MsgCode.SUCCESS) {
|
||
result.accountid = data.accountid;
|
||
result.account = data.account;
|
||
if (data.state == 1) {
|
||
SKLogger.warn(`登录::玩家[${account}]登录失败:被加入黑名单`);
|
||
result.code = MsgCode.NETWORK_ERROR;
|
||
result.msg = "被加入黑名单";
|
||
}
|
||
if (data.state == 0) {
|
||
let token = TokenMgr.shared.makeSecret(data.accountid);
|
||
result.token = token;
|
||
SKLogger.debug(`登录:玩家[${account}]读表登录成功[${token}]`);
|
||
} else {
|
||
SKLogger.debug(`登录:玩家[${account}]读表登录状态错误[${data.state}]`);
|
||
}
|
||
} else {
|
||
SKLogger.debug(`玩家[${account}]读表登录失败[${code}]`);
|
||
}
|
||
Http.reply(res, result);
|
||
});
|
||
}
|
||
|
||
/*
|
||
* 修改密码
|
||
*/
|
||
changePassword(req: any, res: any) {
|
||
if (GameUtil.isClose) {
|
||
Http.reply(res, {
|
||
code: MsgCode.NETWORK_ERROR,
|
||
msg: "游戏关服维护中,请稍候修改密码!"
|
||
});
|
||
return;
|
||
}
|
||
let account = req.query.account;
|
||
let safecode = req.query.safecode;
|
||
let password = req.query.password;
|
||
let verify = true;
|
||
if (safecode.length < 4 || safecode.length > 12 || !/^[a-zA-Z0-9]*$/.test(safecode)) {
|
||
verify = false;
|
||
}
|
||
if (account.length < 6 || account.length > 20 || !/^[a-zA-Z0-9]*$/.test(account) || /^[0-9]*$/.test(account)) {
|
||
verify = false;
|
||
}
|
||
if (password.length < 6 || password.length > 20 || !/^[a-zA-Z0-9]*$/.test(password)) {
|
||
verify = false;
|
||
}
|
||
if (!verify) {
|
||
Http.reply(res, { errcode: MsgCode.FAILED });
|
||
}
|
||
else {
|
||
DB.accountChangePassword({
|
||
account: account,
|
||
safecode: safecode,
|
||
password: password,
|
||
}, (ret: any) => {
|
||
Http.reply(res, { errcode: ret });
|
||
});
|
||
}
|
||
}
|
||
// 服务器及角色列表
|
||
serList(req: any, res: any) {
|
||
let accountid = req.query.accountid;
|
||
// 设置推荐服
|
||
if(accountid == undefined || !/^\d+$/.test(accountid)){
|
||
Http.reply(res, {result: MsgCode.LOGIN_NO_TOKEN});
|
||
return;
|
||
}
|
||
let guideList = ServerMgr.shared.getGuideList();
|
||
SKLogger.debug(`玩家[${accountid}]读取服务器列表...`);
|
||
let guides: any = {};
|
||
for (let sid in guideList) {
|
||
if (guideList.hasOwnProperty(sid)) {
|
||
let server = guideList[sid];
|
||
let item = {
|
||
id: server.sid,
|
||
servername: server.name,
|
||
ip: 0, //net_ip,
|
||
port: 0, //net_port,
|
||
};
|
||
guides[item.id] = item;
|
||
}
|
||
}
|
||
let serverList = ServerMgr.shared.getServerList();
|
||
let servers: any = {};
|
||
for (let sid in serverList) {
|
||
if (serverList.hasOwnProperty(sid)) {
|
||
let server = serverList[sid];
|
||
let item = {
|
||
id: server.sid,
|
||
servername: server.name,
|
||
ip: 0, //net_ip,
|
||
port: 0, //net_port,
|
||
};
|
||
servers[item.id] = item;
|
||
}
|
||
}
|
||
let retdata: any = {
|
||
guideList: guides,
|
||
serverList: servers,
|
||
roleList: [],
|
||
};
|
||
DB.getServerListByAccountId(accountid, (code: any, dbdata: any) => {
|
||
if (code == MsgCode.SUCCESS) {
|
||
for (let data of dbdata) {
|
||
let rinfo = {
|
||
accountid: data.accountid,
|
||
roleid: data.roleid,
|
||
name: data.name,
|
||
race: data.race,
|
||
sex: data.sex,
|
||
level: data.level,
|
||
serverid: data.serverid,
|
||
resid: data.resid,
|
||
mapid: data.mapid,
|
||
};
|
||
retdata.roleList.push(rinfo);
|
||
}
|
||
retdata.result = code;
|
||
}
|
||
SKLogger.debug(`玩家[${accountid}]读取服务器列表完成[${code}]`);
|
||
Http.reply(res, retdata);
|
||
});
|
||
}
|
||
|
||
// 创建角色
|
||
createRole(req: any, res: any) {
|
||
if (GameUtil.isClose) {
|
||
Http.reply(res, {
|
||
code: MsgCode.NETWORK_ERROR,
|
||
msg: "游戏关服维护中,请稍候注册角色!"
|
||
});
|
||
return;
|
||
}
|
||
let rag = /[\u4e00-\u9fa5a-zA-Z]{3,5}$/;
|
||
|
||
let name = req.query.name;
|
||
let race = req.query.race;
|
||
let sex = req.query.sex;
|
||
let accountid = req.query.accountid;
|
||
let serverid = req.query.serverid;
|
||
let resid = req.query.resid;
|
||
let namelimit = ['江湖', '如来', '第一人'];
|
||
|
||
if (rag.test(name) == false) {
|
||
Http.reply(res, {
|
||
code: MsgCode.FAILED,
|
||
msg: `名字不符合规则(3~5个中文字符)`,
|
||
roleid: 0,
|
||
});
|
||
SKLogger.warn(`创建角色:[${accountid}:${name}]角色名非法!`);
|
||
return;
|
||
}
|
||
for (let ln of namelimit) {
|
||
if (name.indexOf(ln) != -1) {
|
||
Http.reply(res, {
|
||
code: MsgCode.FAILED,
|
||
msg: `非法角色名称`,
|
||
roleid: 0,
|
||
});
|
||
SKLogger.warn(`创建角色:[${accountid}:${name}]角色名非法!`);
|
||
return;
|
||
}
|
||
}
|
||
let checkname = GameUtil.checkLimitWord(name);
|
||
if (!checkname) {
|
||
Http.reply(res, {
|
||
code: MsgCode.FAILED,
|
||
msg: `角色名称已存在`,
|
||
roleid: 0,
|
||
});
|
||
SKLogger.warn(`创建角色:[${accountid}:${name}]角色名不合要求!`);
|
||
return;
|
||
}
|
||
let key = SKDataUtil.rolePrimaryKey(8);
|
||
let roleData = {
|
||
name: name,
|
||
roleId: (10000000 + Number(accountid)).toString(),
|
||
race: race,
|
||
sex: sex,
|
||
accountid: accountid,
|
||
serverid: serverid,
|
||
resid: resid,
|
||
daySignIn: GameUtil.getDaySignIn(),
|
||
dial_num: 1,
|
||
dial_count: 0,
|
||
dial_date: GTimer.getYearMonthDay(),
|
||
ai_flag: 0,
|
||
};
|
||
let nowtime = Date.now();
|
||
let createTime = this.createList[accountid * 10000 + serverid];
|
||
if (createTime != null && (nowtime - createTime) < 10 * 1000) {
|
||
res.end();
|
||
SKLogger.warn(`创建角色:[${accountid}:${name}]超时返回!`);
|
||
return;
|
||
}
|
||
this.createList[accountid * 10000 + serverid] = nowtime;
|
||
DB.insertRole(roleData, (code: any, roleId: any) => {
|
||
delete this.createList[accountid * 10000 + serverid];
|
||
Http.reply(res, {
|
||
code: code,
|
||
msg: `创建角色${code == MsgCode.SUCCESS ? "成功" : "失败"}`,
|
||
roleid: roleId,
|
||
});
|
||
SKCxfUtil.getCxfRegisterPlayer({playerAccountId: accountid, playerZone: serverid, playerRoleId: roleId, playerRoleName: name});
|
||
SKLogger.debug(`创建角色:[${accountid}:${name}]${code == 0 ? "成功" : "失败"}`);
|
||
});
|
||
}
|
||
/**
|
||
* 进入某个服务器
|
||
* req
|
||
* accountid
|
||
* serverid
|
||
* res
|
||
* result: errorcode
|
||
* ip:
|
||
* port
|
||
*/
|
||
// 登录游戏服务器
|
||
toServer(req: any, res: any) {
|
||
if (GameUtil.isClose) {
|
||
Http.reply(res, {
|
||
code: MsgCode.FAILED,
|
||
msg: "游戏关服维护中,请稍候进入!"
|
||
});
|
||
return;
|
||
}
|
||
let accountId = req.query.accountId;
|
||
let roleId = req.query.roleId;
|
||
let serverId = req.query.serverId;
|
||
let token = TokenMgr.shared.getSecretByAccountId(accountId);
|
||
if (token == null) {
|
||
console.warn(`玩家[${roleId}]登录Token不存在!`);
|
||
Http.reply(res, {
|
||
code: MsgCode.LOGIN_NO_TOKEN,
|
||
msg: `你需要重新登录获得Token!`,
|
||
});
|
||
} else {
|
||
let server = ServerMgr.shared.getServer(serverId);
|
||
if (server == null) {
|
||
SKLogger.warn(`玩家[${roleId}]登录服务器[${serverId}]不存在!`);
|
||
Http.reply(res, {
|
||
code: MsgCode.LOGIN_NO_SERVER,
|
||
result: `登录服务器不存在,请稍候重试!`
|
||
});
|
||
} else {
|
||
Http.sendget(server.net_ip, server.http_port, "/login_token", {
|
||
accountid: accountId,
|
||
roleid: roleId,
|
||
token: token,
|
||
}, (success: boolean, data: any) => {
|
||
SKLogger.debug(`玩家[${roleId}]登录服务器[${server.net_ip}:${server.net_port}]code[${success}]!`);
|
||
Http.reply(res, {
|
||
code: success ? MsgCode.SUCCESS : MsgCode.FAILED,
|
||
ip: server.net_ip,
|
||
port: server.net_port,
|
||
token: token,
|
||
});
|
||
});
|
||
}
|
||
}
|
||
}
|
||
|
||
/*
|
||
* 充值活动(双倍活动)
|
||
* @param req.query.start 开始时间
|
||
* @param req.query.end 结束时间
|
||
* @param req.query.serverid 服务器id 0为所有服务器
|
||
*/
|
||
setChargeActivity(req: any, res: any) {
|
||
let sign = req.query.sign; // 签名
|
||
if (sign != GameConf.sign) {
|
||
Http.reply(res, {
|
||
code: MsgCode.FAILED,
|
||
msg: `你是傻逼吗!`
|
||
});
|
||
return;
|
||
}
|
||
let cur_tm = (new Date()).getTime();
|
||
Http.reply(res, {
|
||
errcode: (cur_tm < req.query.end) ? 0 : 1,
|
||
});
|
||
if (cur_tm >= req.query.end) {
|
||
return;
|
||
}
|
||
let send_data: any = {
|
||
start: parseInt(req.query.start),
|
||
end: parseInt(req.query.end),
|
||
};
|
||
let callback = (ret: any, data: any) => { };
|
||
let serverid = req.query.serverid;
|
||
let server_list = this.getServerListByServerid(serverid);
|
||
for (let server of server_list) {
|
||
Http.sendget(
|
||
server.net_ip,
|
||
server.http_port,
|
||
'/set_charge_activity',
|
||
send_data,
|
||
callback
|
||
);
|
||
this.chargeActivityState[server.sid] = {
|
||
state: 0,
|
||
start: req.query.start,
|
||
end: req.query.end,
|
||
};
|
||
}
|
||
}
|
||
|
||
/*
|
||
* 打开充值活动
|
||
*/
|
||
openChargeActivity(req: any, res: any) {
|
||
let sign = req.query.sign; // 签名
|
||
if (sign != GameConf.sign) {
|
||
Http.reply(res, {
|
||
code: MsgCode.FAILED,
|
||
msg: `你是傻逼吗!`
|
||
});
|
||
return;
|
||
}
|
||
Http.reply(res, {
|
||
errcode: 0,
|
||
});
|
||
let ip = this.getClientIP(req, res);
|
||
let serverid = req.query.serverid;
|
||
if (serverid == 0) {
|
||
let servers = ServerMgr.shared.getServerList();
|
||
for (let key in servers) {
|
||
if (this.chargeActivityState[key]) {
|
||
this.chargeActivityState[key].state = 1;
|
||
}
|
||
}
|
||
}
|
||
else {
|
||
if (this.chargeActivityState[serverid]) {
|
||
this.chargeActivityState[serverid].state = 1;
|
||
}
|
||
}
|
||
}
|
||
|
||
/*
|
||
* 关闭充值活动
|
||
* @param req.query.serverid 服务器id 0为所有服务器
|
||
*/
|
||
closeChargeActivity(req: any, res: any) {
|
||
let sign = req.query.sign; // 签名
|
||
if (sign != GameConf.sign) {
|
||
Http.reply(res, {
|
||
code: MsgCode.FAILED,
|
||
msg: `你是傻逼吗!`
|
||
});
|
||
return;
|
||
}
|
||
Http.reply(res, {
|
||
errcode: 0,
|
||
});
|
||
let serverid = req.query.serverid;
|
||
if (serverid == 0) {
|
||
let servers = ServerMgr.shared.getServerList();
|
||
for (let key in servers) {
|
||
if (this.chargeActivityState[key]) {
|
||
this.chargeActivityState[key].state = 0;
|
||
}
|
||
}
|
||
}
|
||
else {
|
||
if (this.chargeActivityState[serverid]) {
|
||
this.chargeActivityState[serverid].state = 0;
|
||
}
|
||
}
|
||
let server_list = this.getServerListByServerid(serverid);
|
||
let callback = (ret: any, data: any) => { };
|
||
for (let server of server_list) {
|
||
Http.sendget(
|
||
server.net_ip,
|
||
server.http_port,
|
||
'/closeChargeActivity',
|
||
{},
|
||
callback
|
||
);
|
||
}
|
||
}
|
||
|
||
/*
|
||
* 查询充值活动
|
||
*/
|
||
getChargeActivity(req: any, res: any) {
|
||
let sign = req.query.sign; // 签名
|
||
if (sign != GameConf.sign) {
|
||
Http.reply(res, {
|
||
code: MsgCode.FAILED,
|
||
msg: `你是傻逼吗!`
|
||
});
|
||
return;
|
||
}
|
||
Http.reply(res, this.chargeActivityState);
|
||
}
|
||
|
||
/*
|
||
* 充值
|
||
*/
|
||
charge(req: any, res: any) {
|
||
let roleid = req.query.roleid;
|
||
//关闭充值
|
||
if (!GameConf.payEnabled) {
|
||
Http.reply(res, { code: MsgCode.PAY_DISABLED });
|
||
return;
|
||
}
|
||
let goodsid = req.query.goodsid;
|
||
let goodscount = 1;
|
||
let pay_bankcode = parseInt(req.query.pay_bankcode);
|
||
let money = parseInt(req.query.money);
|
||
Charge.shared.createOrder(roleid, goodsid, goodscount, pay_bankcode, money, this.chargeActivityState, (ret: any, data: any) => {
|
||
let send_data = {
|
||
code: (ret) ? MsgCode.SUCCESS : MsgCode.FAILED,
|
||
data: data,
|
||
};
|
||
Http.reply(res, send_data);
|
||
});
|
||
}
|
||
// 代理充值
|
||
agentCharge(req: any, res: any) {
|
||
let sign = req.query.sign; // 签名
|
||
if (sign != GameConf.sign) {
|
||
Http.reply(res, {
|
||
code: MsgCode.FAILED,
|
||
msg: `非法请求!`
|
||
});
|
||
return;
|
||
}
|
||
let roleid = req.query.role_id;
|
||
let charge_id = parseInt(req.query.charge_id);
|
||
if (!charge_id) {
|
||
Http.reply(res, {
|
||
code: MsgCode.FAILED,
|
||
msg: '代理充值,无效的charge_id参数',
|
||
});
|
||
}
|
||
let count = parseInt(req.query.count);
|
||
if (!count) {
|
||
count = 1;
|
||
}
|
||
Charge.shared.agentCharge(roleid, charge_id, count, this.chargeActivityState, (code: number, msg: string) => {
|
||
Http.reply(res, {
|
||
code: code,
|
||
msg: msg,
|
||
});
|
||
});
|
||
}
|
||
// 充值返回
|
||
payReturn(req: any, res: any) {
|
||
Charge.shared.pay_return(req, res);
|
||
}
|
||
|
||
// 获得公告
|
||
async getComment(req: any, res: any) {
|
||
let serverId = 0;
|
||
if (req.query.serverId) {
|
||
serverId = req.query.serverId;
|
||
}
|
||
DB.getComment(serverId, (code, data) => {
|
||
|
||
Http.reply(res, {
|
||
code: MsgCode.SUCCESS,
|
||
title: data.title,
|
||
text: data.text,
|
||
});
|
||
})
|
||
}
|
||
|
||
// 设置公告
|
||
setComment(req: any, res: any) {
|
||
let sign = req.query.sign; // 签名
|
||
if (sign != GameConf.sign) {
|
||
Http.reply(res, {
|
||
code: MsgCode.FAILED,
|
||
msg: `非法请求!`
|
||
});
|
||
return;
|
||
}
|
||
let serverId = req.query.serverId;
|
||
if (!serverId) {
|
||
serverId = 0;
|
||
}
|
||
let text: string = req.query.text;
|
||
if (text.length < 1) {
|
||
return;
|
||
}
|
||
text = decodeURI(text);
|
||
// SKRedisUtil.setExpireValue(`comment_${serverId}`, text, 3 * 60);
|
||
DB.setComment(serverId, text, (code: number) => {
|
||
Http.reply(res, {
|
||
code: code,
|
||
});
|
||
})
|
||
}
|
||
|
||
sysNotice(req: any, res: any) {
|
||
let sign = req.query.sign; // 签名
|
||
if (sign != GameConf.sign) {
|
||
Http.reply(res, {
|
||
code: MsgCode.FAILED,
|
||
msg: `非法请求!`
|
||
});
|
||
return;
|
||
}
|
||
let text = String(req.query.text);
|
||
if (!text || text.length < 1) {
|
||
Http.reply(res, {
|
||
code: MsgCode.FAILED,
|
||
msg: "通知文本不能为空"
|
||
});
|
||
return;
|
||
return;
|
||
}
|
||
let type = req.query.type; // 1 走马灯 2 聊天框 3 走马灯 + 聊天框
|
||
let serverid = req.query.server_id; // 0 则全服公告
|
||
let times = req.query.times; // -1 则永久公告 需入库
|
||
if (!times || isNaN(times)) {
|
||
times = 1;
|
||
}
|
||
let interval = req.query.interval; // 单位 秒
|
||
text = decodeURIComponent(text);
|
||
let server_list = [];
|
||
if (serverid == 0) {
|
||
let servers = ServerMgr.shared.getServerList();
|
||
for (let key in servers) {
|
||
server_list.push(servers[key]);
|
||
}
|
||
} else {
|
||
let server = ServerMgr.shared.getServer(serverid);
|
||
if (server)
|
||
server_list.push(server);
|
||
}
|
||
if (server_list.length == 0) {
|
||
Http.reply(res, {
|
||
code: MsgCode.FAILED,
|
||
msg: "发送系统通知找不到服务器"
|
||
});
|
||
return;
|
||
}
|
||
Http.reply(res, {
|
||
code: MsgCode.SUCCESS,
|
||
msg: `发送系统通知:${text}到${serverid}成功!`
|
||
});
|
||
for (let server of server_list) {
|
||
Http.sendget(server.net_ip, server.http_port, '/sys_notice', {
|
||
text: text,
|
||
type: type,
|
||
times: times,
|
||
interval: interval,
|
||
}, (success: boolean) => {
|
||
});
|
||
}
|
||
if (times == -1) {
|
||
DB.addScrollNotice(serverid, type, text);
|
||
}
|
||
}
|
||
|
||
onlineNum(req: any, res: any) {
|
||
let sign = req.query.sign; // 签名
|
||
if (sign != GameConf.sign) {
|
||
Http.reply(res, {
|
||
code: MsgCode.FAILED,
|
||
msg: `非法请求!`
|
||
});
|
||
return;
|
||
}
|
||
let numinfo = [];
|
||
let list = ServerMgr.shared.getServerList();
|
||
for (const sid in list) {
|
||
if (list.hasOwnProperty(sid)) {
|
||
const server = list[sid];
|
||
let n = server.getPlayerNum();
|
||
numinfo.push({
|
||
id: server.sid,
|
||
name: server.name,
|
||
num: n,
|
||
});
|
||
}
|
||
}
|
||
Http.reply(res, {
|
||
info: SKDataUtil.toJson(numinfo, "[]"),
|
||
});
|
||
}
|
||
|
||
notSpeak(req: any, res: any) {
|
||
let sign = req.query.sign; // 签名
|
||
if (sign != GameConf.sign) {
|
||
Http.reply(res, {
|
||
code: MsgCode.FAILED,
|
||
msg: `非法请求!`
|
||
});
|
||
return;
|
||
}
|
||
let roleid = req.query.role_id;
|
||
let serverid = req.query.server_id;
|
||
let pServer = ServerMgr.shared.getServer(serverid);
|
||
if (!pServer) {
|
||
Http.reply(res, {
|
||
code: MsgCode.FAILED,
|
||
msg: `玩家所在服务器不存在:${serverid}`
|
||
});
|
||
return;
|
||
}
|
||
Http.sendget(pServer.net_ip, pServer.http_port, '/can_speak', {
|
||
roleid: roleid,
|
||
state: 1
|
||
}, (ret: any) => {
|
||
|
||
});
|
||
Http.reply(res, {
|
||
code: MsgCode.SUCCESS,
|
||
msg: `${roleid}所在服务器${serverid}禁言成功`,
|
||
});
|
||
}
|
||
|
||
canSpeak(req: any, res: any) {
|
||
let sign = req.query.sign; // 签名
|
||
if (sign != GameConf.sign) {
|
||
Http.reply(res, {
|
||
code: MsgCode.FAILED,
|
||
msg: `非法请求!`
|
||
});
|
||
return;
|
||
}
|
||
let roleid = req.query.role_id;
|
||
let serverid = req.query.server_id;
|
||
let pServer = ServerMgr.shared.getServer(serverid);
|
||
if (null == pServer)
|
||
return;
|
||
Http.sendget(pServer.net_ip, pServer.http_port, '/can_speak', {
|
||
roleid: roleid,
|
||
state: 0
|
||
}, (ret: any) => { });
|
||
Http.reply(res, {
|
||
code: MsgCode.SUCCESS,
|
||
msg: `${roleid}所在服务器${serverid}解除禁言成功`,
|
||
});
|
||
}
|
||
|
||
frozenIP(req: any, res: any) {
|
||
let sign = req.query.sign; // 签名
|
||
if (sign != GameConf.sign) {
|
||
Http.reply(res, {
|
||
code: MsgCode.FAILED,
|
||
msg: `非法请求!`
|
||
});
|
||
return;
|
||
}
|
||
let fip = req.query.frozen_ip;
|
||
let roleid = req.query.roleid;
|
||
let id = parseInt(req.query.id);
|
||
if (!fip && !id) {
|
||
Http.reply(res, {
|
||
code: MsgCode.FAILED,
|
||
msg: `封禁失败,需要有效的frozen_ip参数!`
|
||
});
|
||
return;
|
||
}
|
||
|
||
FrozenIPMgr.shared.addFrozenIP(fip,id);
|
||
//通知当前IP下的所有玩家下线
|
||
let roleList: any = [];
|
||
roleList.push(roleid);
|
||
DB.getFrozenIpRoleid(fip, (ret: any, ipList: any) => {
|
||
if (ret == MsgCode.SUCCESS) {
|
||
for (let ip of ipList) {
|
||
roleList.push(ip.roleid);
|
||
}
|
||
ServerMgr.shared.sendAllServer('/kicked_out', {
|
||
roleids: roleList,
|
||
sign:sign
|
||
});
|
||
}
|
||
});
|
||
Http.reply(res, {
|
||
code: MsgCode.SUCCESS,
|
||
msg: `封禁${fip}成功!`
|
||
});
|
||
}
|
||
// 解封IP
|
||
unfrozenIP(req: any, res: any) {
|
||
let fip = req.query.frozen_ip;
|
||
let id = parseInt(req.query.id);
|
||
let sign = req.query.sign; // 签名
|
||
if (sign != GameConf.sign) {
|
||
Http.reply(res, {
|
||
code: MsgCode.FAILED,
|
||
msg: `非法请求!`
|
||
});
|
||
return;
|
||
}
|
||
FrozenIPMgr.shared.removeFrozenIP(fip,id);
|
||
Http.reply(res, {
|
||
code: MsgCode.SUCCESS,
|
||
msg: `解封${fip}成功!`
|
||
});
|
||
}
|
||
// 封设备
|
||
frozenMAC(req: any, res: any) {
|
||
let sign = req.query.sign; // 签名
|
||
if (sign != GameConf.sign) {
|
||
Http.reply(res, {
|
||
code: MsgCode.FAILED,
|
||
msg: `非法请求!`
|
||
});
|
||
return;
|
||
}
|
||
let account_id = req.query.account_id;
|
||
let gm_role_id = req.query.gm_role_id;
|
||
if (!gm_role_id) {
|
||
gm_role_id = 0;
|
||
}
|
||
DB.freezeMAC({
|
||
account_id: account_id,
|
||
gm_role_id: gm_role_id
|
||
}, (code: number, msg: string, mac: string) => {
|
||
if (mac && mac.length > 0) {
|
||
FrozenMacMgr.shared.addFrozenMAC(mac);
|
||
DB.getFrozenMacRoleid(mac, (ret: any, rows: any) => {
|
||
if (ret == MsgCode.SUCCESS) {
|
||
let roleList = [];
|
||
for (let data of rows) {
|
||
roleList.push(data.roleid);
|
||
}
|
||
ServerMgr.shared.sendAllServer('/kicked_out', {
|
||
roleids: roleList,
|
||
sign:sign
|
||
});
|
||
}
|
||
});
|
||
}
|
||
Http.reply(res, {
|
||
code: code,
|
||
msg: msg
|
||
});
|
||
});
|
||
}
|
||
|
||
// 解封设备
|
||
unfrozenMAC(req: any, res: any) {
|
||
let account_id = req.query.account_id;
|
||
let sign = req.query.sign; // 签名
|
||
if (sign != GameConf.sign) {
|
||
Http.reply(res, {
|
||
code: MsgCode.FAILED,
|
||
msg: `你是傻逼吗!`
|
||
});
|
||
return;
|
||
}
|
||
DB.unfreezeMAC({
|
||
account_id: account_id
|
||
}, (code: number, msg: string, mac: string) => {
|
||
if (code == MsgCode.SUCCESS) {
|
||
FrozenMacMgr.shared.removeFrozenMAC(mac);
|
||
Http.reply(res, {
|
||
code: code,
|
||
msg: msg
|
||
});
|
||
}
|
||
});
|
||
}
|
||
|
||
// 清除玩家缓存
|
||
clearPlayerCache(req: any, res: any) {
|
||
let sign = req.query.sign; // 签名
|
||
if (sign != GameConf.sign) {
|
||
Http.reply(res, {
|
||
code: MsgCode.FAILED,
|
||
msg: `你是傻逼吗!`
|
||
});
|
||
return;
|
||
}
|
||
let roleid = req.query.id;
|
||
ServerMgr.shared.sendAllServer('/clear_pcache', {
|
||
roleid: roleid,
|
||
});
|
||
res.end(SKDataUtil.toJson({
|
||
code: MsgCode.SUCCESS,
|
||
msg: `操作完成`
|
||
}, "{}"));
|
||
}
|
||
// 加仙玉
|
||
addJade(req: any, res: any) {
|
||
let sign = req.query.sign; // 签名
|
||
if (sign != GameConf.sign) {
|
||
Http.reply(res, {
|
||
code: MsgCode.FAILED,
|
||
msg: `非法请求!`
|
||
});
|
||
return;
|
||
}
|
||
if (GameUtil.isClose) {
|
||
Http.reply(res, {
|
||
code: MsgCode.FAILED,
|
||
msg: `游戏已关服,不能发放仙玉给玩家!`
|
||
});
|
||
return;;
|
||
}
|
||
let roleId = req.query.role_id;
|
||
let jade = parseInt(req.query.jade);
|
||
jade = Math.min(990000000, jade);
|
||
let invite = req.query.invite;
|
||
DB.addJade(roleId, jade, (code: number) => {
|
||
if (code == MsgCode.SUCCESS) {
|
||
ServerMgr.shared.sendServer(roleId, "/add_jade",
|
||
{ roleId: roleId, jade: jade, invite: invite },
|
||
(success: boolean, data: any) => {
|
||
if (success) {
|
||
res.end(SKDataUtil.toJson({
|
||
code: code,
|
||
msg: `${roleId}加仙玉${jade}成功`,
|
||
}, "{}"));
|
||
} else {
|
||
res.end(SKDataUtil.toJson({
|
||
code: code,
|
||
msg: `${roleId}加仙玉${jade}失败`,
|
||
}, "{}"));
|
||
}
|
||
})
|
||
return;
|
||
}
|
||
res.end(SKDataUtil.toJson({
|
||
code: code,
|
||
msg: `${roleId}加仙玉${jade}失败`,
|
||
}, "{}"));
|
||
})
|
||
}
|
||
// 加经验值
|
||
addExp(req: any, res: any) {
|
||
let sign = req.query.sign; // 签名
|
||
if (sign != GameConf.sign) {
|
||
Http.reply(res, {
|
||
code: MsgCode.FAILED,
|
||
msg: `非法请求!`
|
||
});
|
||
return;
|
||
}
|
||
if (GameUtil.isClose) {
|
||
Http.reply(res, {
|
||
code: MsgCode.FAILED,
|
||
msg: `游戏已关服,不能发放经验给玩家!`
|
||
});
|
||
return;;
|
||
}
|
||
let roleId = req.query.role_id;
|
||
let exp = parseInt(req.query.exp);
|
||
exp = Math.min(9999999999, exp);
|
||
let invite = req.query.invite;
|
||
if (!invite) {
|
||
invite = "";
|
||
}
|
||
ServerMgr.shared.sendServer(roleId, '/add_exp', {
|
||
roleId: roleId,
|
||
exp: exp,
|
||
invite: invite
|
||
}, (success: boolean, data: any) => {
|
||
SKLogger.debug(`${roleId}加经验${exp}:${success}`);
|
||
if (success) {
|
||
res.end(SKDataUtil.toJson({
|
||
code: MsgCode.SUCCESS,
|
||
msg: `角色${roleId}加经验${exp}成功`,
|
||
}, "{}"));
|
||
} else {
|
||
res.end(SKDataUtil.toJson({
|
||
code: MsgCode.FAILED,
|
||
msg: `角色${roleId}加经验${exp}失败:${data}`,
|
||
}, "{}"));
|
||
}
|
||
});
|
||
}
|
||
//模拟战斗
|
||
testBattle(req: any, res: any){
|
||
let sign = req.query.sign; // 签名
|
||
if (sign != GameConf.sign) {
|
||
Http.reply(res, {
|
||
code: MsgCode.FAILED,
|
||
msg: `非法请求!`
|
||
});
|
||
return;
|
||
}
|
||
if (GameUtil.isClose) {
|
||
Http.reply(res, {
|
||
code: MsgCode.FAILED,
|
||
msg: `游戏已关服`
|
||
});
|
||
return;
|
||
}
|
||
let roleId = req.query.role_id;
|
||
let eroleId = req.query.eroleid;
|
||
let invite = req.query.invite;
|
||
ServerMgr.shared.sendServer(roleId, '/test_battle', {
|
||
roleId: roleId,
|
||
eroleid: eroleId,
|
||
invite: invite
|
||
}, (success: boolean, data: any) => {
|
||
if (success) {
|
||
res.end(SKDataUtil.toJson({
|
||
code: MsgCode.SUCCESS,
|
||
msg: `开始战斗`,
|
||
}, "{}"));
|
||
} else {
|
||
res.end(SKDataUtil.toJson({
|
||
code: MsgCode.FAILED,
|
||
msg: `请求失败`,
|
||
}, "{}"));
|
||
}
|
||
});
|
||
}
|
||
// 加道具
|
||
addItem(req: any, res: any) {
|
||
let sign = req.query.sign; // 签名
|
||
if (sign != GameConf.sign) {
|
||
Http.reply(res, {
|
||
code: MsgCode.FAILED,
|
||
msg: `非法请求!`
|
||
});
|
||
return;
|
||
}
|
||
if (GameUtil.isClose) {
|
||
Http.reply(res, {
|
||
code: MsgCode.FAILED,
|
||
msg: `游戏已关服,不能发放道具给玩家!`
|
||
});
|
||
return;;
|
||
}
|
||
let roleId = req.query.role_id;
|
||
let item = parseInt(req.query.item);
|
||
if (isNaN(item)) {
|
||
let msg = `角色[${roleId}]加道具,道具索引无效`;
|
||
res.end(SKDataUtil.toJson({
|
||
code: MsgCode.FAILED,
|
||
msg: msg,
|
||
}, "{}"));
|
||
SKLogger.debug(msg);
|
||
return;
|
||
}
|
||
let num = parseInt(req.query.num);
|
||
if (isNaN(item)) {
|
||
let msg = `角色${roleId}加道具,数量无效`
|
||
res.end(SKDataUtil.toJson({
|
||
code: MsgCode.FAILED,
|
||
msg: msg,
|
||
}, "{}"));
|
||
SKLogger.debug(msg);
|
||
return;
|
||
}
|
||
if (item == 90003) {
|
||
num = Math.min(100000000, num);
|
||
} else {
|
||
num = Math.min(10000, num);
|
||
}
|
||
let invite = req.query.invite;
|
||
if (!invite) {
|
||
invite = "";
|
||
}
|
||
ServerMgr.shared.sendServer(roleId, '/add_item', {
|
||
roleId: roleId,
|
||
item: item,
|
||
num: num,
|
||
invite: invite
|
||
}, (success: boolean, data: any) => {
|
||
if (success) {
|
||
res.end(SKDataUtil.toJson({
|
||
code: MsgCode.SUCCESS,
|
||
msg: `加道具:[${roleId}]获得[${item}:数量${num}]${success}`,
|
||
}, "{}"));
|
||
} else {
|
||
res.end(SKDataUtil.toJson({
|
||
code: MsgCode.FAILED,
|
||
msg: `加道具:[${roleId}]获得[${item}:数量${num}]${success}`,
|
||
}, "{}"));
|
||
}
|
||
});
|
||
}
|
||
|
||
//发送天策符
|
||
addOfuda(req: any, res: any){
|
||
let sign = req.query.sign; // 签名
|
||
if (sign != GameConf.sign) {
|
||
Http.reply(res, {
|
||
code: MsgCode.FAILED,
|
||
msg: `非法请求!`
|
||
});
|
||
return;
|
||
}
|
||
if (GameUtil.isClose) {
|
||
Http.reply(res, {
|
||
code: MsgCode.FAILED,
|
||
msg: `游戏已关服,不能发放道具给玩家!`
|
||
});
|
||
return;;
|
||
}
|
||
let roleId = req.query.role_id;
|
||
let name = req.query.name; //天策符名称
|
||
let grade = req.query.grade; //品级
|
||
let addition = req.query.addition; //加成
|
||
let invite = req.query.invite;
|
||
if (!invite) {
|
||
invite = "";
|
||
}
|
||
ServerMgr.shared.sendServer(roleId, '/add_ofuda', {
|
||
roleId: roleId,
|
||
name: name,
|
||
grade: grade,
|
||
addition: addition,
|
||
invite: invite
|
||
}, (success: boolean, data: any) => {
|
||
if (success) {
|
||
res.end(SKDataUtil.toJson({
|
||
code: MsgCode.SUCCESS,
|
||
msg: `[${roleId}]获得[${req.query.name}]${success}`,
|
||
}, "{}"));
|
||
} else {
|
||
res.end(SKDataUtil.toJson({
|
||
code: MsgCode.FAILED,
|
||
msg: `[${roleId}]获得[${req.query.name}]${success}`,
|
||
}, "{}"));
|
||
}
|
||
});
|
||
}
|
||
|
||
// 获得物品列表
|
||
getItemList(req: any, res: any) {
|
||
let sign = req.query.sign; // 签名
|
||
if (sign != GameConf.sign) {
|
||
Http.reply(res, {
|
||
code: MsgCode.FAILED,
|
||
msg: `非法请求!`
|
||
});
|
||
return;
|
||
}
|
||
let list = GoodsMgr.getItemList();
|
||
res.end(SKDataUtil.toJson({
|
||
code: MsgCode.SUCCESS,
|
||
list: SKDataUtil.toJson(list, "[]"),
|
||
}, "{}"));
|
||
}
|
||
// 加称谓
|
||
addTitle(req: any, res: any) {
|
||
let sign = req.query.sign; // 签名
|
||
if (sign != GameConf.sign) {
|
||
Http.reply(res, {
|
||
code: MsgCode.FAILED,
|
||
msg: `非法请求!`
|
||
});
|
||
return;
|
||
}
|
||
// title = { "type": type, "titleid": titleId, "value": value, "onload": onload }
|
||
let role_id = req.query.role_id;
|
||
let type = req.query.type;
|
||
if (!type) {
|
||
type = 1;
|
||
}
|
||
let title_id = req.query.title_id;
|
||
if (!title_id) {
|
||
title_id = 1;
|
||
}
|
||
let value = req.query.value;
|
||
let onload = req.query.onload;
|
||
ServerMgr.shared.sendServer(role_id, '/add_title', {
|
||
role_id: role_id,
|
||
type: type,
|
||
title_id: title_id,
|
||
value: value,
|
||
onload: onload
|
||
}, (success: boolean, data: any) => {
|
||
if (success) {
|
||
res.end(SKDataUtil.toJson({
|
||
code: MsgCode.SUCCESS,
|
||
msg: `${role_id}加称谓成功,${success}`,
|
||
}, "{}"));
|
||
} else {
|
||
res.end(SKDataUtil.toJson({
|
||
code: MsgCode.FAILED,
|
||
msg: `${role_id}加道具失败,${success}`,
|
||
}, "{}"));
|
||
}
|
||
});
|
||
}
|
||
// 更改现金提现状态
|
||
obtainCurrency(req: any, res: any) {
|
||
let sign = req.query.sign; // 签名
|
||
if (sign != GameConf.sign) {
|
||
Http.reply(res, {
|
||
code: MsgCode.FAILED,
|
||
msg: `非法请求!`
|
||
});
|
||
return;
|
||
}
|
||
let msg = req.query.msg;
|
||
let role_id = req.query.role_id;
|
||
ServerMgr.shared.sendServer(role_id, '/obtain_currency', {
|
||
role_id: role_id,
|
||
msg: msg,
|
||
}, (success: boolean, data: any) => {
|
||
if (success) {
|
||
res.end(SKDataUtil.toJson({
|
||
code: MsgCode.SUCCESS,
|
||
msg: `${role_id}成功,${success}`,
|
||
}, "{}"));
|
||
} else {
|
||
res.end(SKDataUtil.toJson({
|
||
code: MsgCode.FAILED,
|
||
msg: `${role_id}失败,${success}`,
|
||
}, "{}"));
|
||
}
|
||
});
|
||
}
|
||
|
||
// 更改现金提现状态
|
||
updateWithdrawState(req: any, res: any) {
|
||
let sign = req.query.sign; // 签名
|
||
if (sign != GameConf.sign) {
|
||
Http.reply(res, {
|
||
code: MsgCode.FAILED,
|
||
msg: `非法请求!`
|
||
});
|
||
return;
|
||
}
|
||
let state = req.query.state;
|
||
let serial = req.query.serial;
|
||
let role_id = req.query.role_id;
|
||
|
||
ServerMgr.shared.sendServer(role_id, '/withdraw_state', {
|
||
role_id: role_id,
|
||
state: state,
|
||
serial: serial
|
||
}, (success: boolean, data: any) => {
|
||
if (success) {
|
||
res.end(SKDataUtil.toJson({
|
||
code: MsgCode.SUCCESS,
|
||
msg: `${role_id}提现状态更改成功,${success}`,
|
||
}, "{}"));
|
||
} else {
|
||
res.end(SKDataUtil.toJson({
|
||
code: MsgCode.FAILED,
|
||
msg: `${role_id}提现状态更改失败,${success}`,
|
||
}, "{}"));
|
||
}
|
||
});
|
||
}
|
||
// 提交异常日志
|
||
report(req: any, res: any) {
|
||
let params = req.body;
|
||
let roleId = params.roleId;
|
||
let msg = params.msg;
|
||
msg.replace("\'", "\\\'");
|
||
msg.replace("\"", "\\\"");
|
||
if (this.reportKey.indexOf(msg) != -1) {
|
||
Http.reply(res, {
|
||
code: 1
|
||
})
|
||
return;
|
||
}
|
||
let version = params.version;
|
||
if (!version) {
|
||
version = "";
|
||
}
|
||
let platfrom = params.platform;
|
||
let ip = this.getClientIP(req, res);
|
||
Http.reply(res, {
|
||
code: 0
|
||
})
|
||
console.warn(`$前端异常:角色索引[${roleId}]\n消息:${msg},\n版本:${version},平台:${platfrom},IP:${ip}`);
|
||
this.reportKey.push(msg);
|
||
}
|
||
|
||
kickedOut(req: any, res: any) {
|
||
let sign = req.query.sign; // 签名
|
||
if (sign != GameConf.sign) {
|
||
Http.reply(res, {
|
||
code: MsgCode.FAILED,
|
||
msg: `你是傻逼吗!`
|
||
});
|
||
return;
|
||
}
|
||
let role_id = req.query.role_id;
|
||
if (!role_id) {
|
||
res.end(SKDataUtil.toJson({
|
||
code: MsgCode.FAILED,
|
||
msg: `缺少role_code参数!`,
|
||
}, "{}"));
|
||
}
|
||
ServerMgr.shared.sendAllServer('/kicked_out', {
|
||
roleids: [role_id],
|
||
sign: sign
|
||
});
|
||
res.end(SKDataUtil.toJson({
|
||
code: MsgCode.SUCCESS,
|
||
msg: `角色${role_id}被踢!`,
|
||
}, "{}"));
|
||
}
|
||
// 清除指定玩家的每日存档
|
||
clearDay(req: any, res: any) {
|
||
let sign = req.query.sign; // 签名
|
||
if (sign != GameConf.sign) {
|
||
Http.reply(res, {
|
||
code: MsgCode.FAILED,
|
||
msg: `非法请求!`
|
||
});
|
||
return;
|
||
}
|
||
let type = (req.query.type ? req.query.type : 0);
|
||
let roleId = req.query.role_id;
|
||
ServerMgr.shared.sendServer(roleId, '/clear_day', {
|
||
type: type,
|
||
roleId: roleId
|
||
}, (success: boolean, data: any) => {
|
||
if (success) {
|
||
res.end(SKDataUtil.toJson({
|
||
code: MsgCode.SUCCESS,
|
||
msg: `${roleId}清除每日存档成功`,
|
||
}, "{}"));
|
||
} else {
|
||
res.end(SKDataUtil.toJson({
|
||
code: MsgCode.FAILED,
|
||
msg: `${roleId}清除每日存档成功`,
|
||
}, "{}"));
|
||
}
|
||
});
|
||
}
|
||
|
||
|
||
// 清理玩家任务
|
||
closeTask(req: any, res: any) {
|
||
let sign = req.query.sign; // 签名
|
||
if (sign != GameConf.sign) {
|
||
Http.reply(res, {
|
||
code: MsgCode.FAILED,
|
||
msg: `非法请求!`
|
||
});
|
||
return;
|
||
}
|
||
|
||
let roleId = req.query.role_id;
|
||
ServerMgr.shared.sendServer(roleId, '/close_task', {
|
||
roleId: roleId
|
||
}, (success: boolean, data: any) => {
|
||
if (success) {
|
||
res.end(SKDataUtil.toJson({
|
||
code: MsgCode.SUCCESS,
|
||
msg: `${roleId}清除每日任务成功`,
|
||
}, "{}"));
|
||
} else {
|
||
res.end(SKDataUtil.toJson({
|
||
code: MsgCode.FAILED,
|
||
msg: `${roleId}清除每日任务失败`,
|
||
}, "{}"));
|
||
}
|
||
});
|
||
}
|
||
|
||
/**
|
||
* 恢复数据
|
||
* @param req
|
||
* @param res
|
||
*/
|
||
rollbackPlayer(req: any, res: any) {
|
||
let sign = req.query.sign; // 签名
|
||
if (sign != GameConf.sign) {
|
||
Http.reply(res, {
|
||
code: MsgCode.FAILED,
|
||
msg: `非法请求!`
|
||
});
|
||
return;
|
||
}
|
||
let roleId = req.query.role_id;
|
||
let server_id = req.query.server_id;
|
||
let server_list = [];
|
||
let server = ServerMgr.shared.getServer(server_id);
|
||
if (server) {
|
||
server_list.push(server);
|
||
}
|
||
server_list = server_list.filter(t => t.is_reg);
|
||
if (server_list.length < 1) {
|
||
Http.reply(res, {
|
||
code: MsgCode.FAILED,
|
||
msg: `恢复数据:找不到未开闭的服务器!`
|
||
});
|
||
return;
|
||
}
|
||
for (let server of server_list) {
|
||
Http.sendget(server.net_ip, server.http_port, '/roll_back_player', {
|
||
roleId: roleId
|
||
}, (success: boolean, data: any) => {
|
||
if (data.code == MsgCode.SUCCESS) {
|
||
res.end(SKDataUtil.toJson({
|
||
code: MsgCode.SUCCESS,
|
||
msg: `${roleId}恢复数据,${data.msg}`,
|
||
}, "{}"));
|
||
} else {
|
||
res.end(SKDataUtil.toJson({
|
||
code: MsgCode.FAILED,
|
||
msg: `${roleId}恢复数据失败,${data.msg}`,
|
||
}, "{}"));
|
||
}
|
||
});
|
||
}
|
||
}
|
||
|
||
// 清除所有玩家的每日存档
|
||
clearAllDay(req: any, res: any) {
|
||
let sign = req.query.sign; // 签名
|
||
if (sign != GameConf.sign) {
|
||
Http.reply(res, {
|
||
code: MsgCode.FAILED,
|
||
msg: `非法请求!`
|
||
});
|
||
return;
|
||
}
|
||
let server_id = req.query.server_id; // 0 则全服公告
|
||
if (!server_id) {
|
||
server_id = 0;
|
||
}
|
||
let server_list = [];
|
||
if (server_id == 0) {
|
||
let servers = ServerMgr.shared.getServerList();
|
||
for (let key in servers) {
|
||
server_list.push(servers[key]);
|
||
}
|
||
} else {
|
||
let server = ServerMgr.shared.getServer(server_id);
|
||
if (server) {
|
||
server_list.push(server);
|
||
}
|
||
}
|
||
server_list = server_list.filter(t => t.is_reg);
|
||
if (server_list.length < 1) {
|
||
Http.reply(res, {
|
||
code: MsgCode.FAILED,
|
||
msg: `清理所有玩家每日存档:找不到未开闭的服务器!`
|
||
});
|
||
return;
|
||
}
|
||
let index = 0;
|
||
let info = ``;
|
||
for (let server of server_list) {
|
||
Http.sendget(server.net_ip, server.http_port, '/clear_all_day', {
|
||
}, (success: boolean, data: any) => {
|
||
index++;
|
||
info += `${info.length < 1 ? `` : `,`}${data.msg}`;
|
||
if (index == server_list.length) {
|
||
Http.reply(res, {
|
||
code: data.code,
|
||
msg: info
|
||
});
|
||
}
|
||
});
|
||
}
|
||
}
|
||
// 控制
|
||
control(req: any, res: any) {
|
||
let sign = req.query.sign; // 签名
|
||
if (sign != GameConf.sign) {
|
||
Http.reply(res, {
|
||
code: MsgCode.FAILED,
|
||
msg: `非法请求!`
|
||
});
|
||
return;
|
||
}
|
||
let type = (req.query.type ? req.query.type : 0);
|
||
let open = (req.query.open ? req.query.open : 1);
|
||
ServerMgr.shared.sendAllServer("/control", {
|
||
type: type,
|
||
open: open
|
||
}, (success: boolean, data: any) => {
|
||
Http.reply(res, {
|
||
code: data.code,
|
||
msg: data.msg
|
||
});
|
||
});
|
||
}
|
||
// 全部玩家存档
|
||
saveAll(req: any, res: any) {
|
||
let sign = req.query.sign; // 签名
|
||
if (sign != GameConf.sign) {
|
||
Http.reply(res, {
|
||
code: MsgCode.FAILED,
|
||
msg: `非法请求!`
|
||
});
|
||
return;
|
||
}
|
||
let server_id = req.query.server_id; // 0 则全服存档
|
||
if (!server_id) {
|
||
server_id = 0;
|
||
}
|
||
let server_list = [];
|
||
if (server_id == 0) {
|
||
let servers = ServerMgr.shared.getServerList();
|
||
for (let key in servers) {
|
||
server_list.push(servers[key]);
|
||
}
|
||
} else {
|
||
let server = ServerMgr.shared.getServer(server_id);
|
||
if (server) {
|
||
server_list.push(server);
|
||
}
|
||
}
|
||
server_list = server_list.filter(t => t.is_reg);
|
||
if (server_list.length < 1) {
|
||
Http.reply(res, {
|
||
code: MsgCode.FAILED,
|
||
msg: `全部存档:找不到未开闭的服务器!`
|
||
});
|
||
return;
|
||
}
|
||
let total = server_list.length;
|
||
let count = 0;
|
||
let msg = ``;
|
||
let list: any[] = [];
|
||
for (let server of server_list) {
|
||
Http.sendget(server.net_ip, server.http_port, '/save_all', {
|
||
}, (success: boolean, data: any) => {
|
||
count++;
|
||
msg += `${msg.length < 1 ? `` : `,`}${data.msg}`;
|
||
list.push(data);
|
||
if (count == total) {
|
||
Http.reply(res, {
|
||
code: data.code,
|
||
msg: msg,
|
||
data: list
|
||
});
|
||
}
|
||
});
|
||
}
|
||
}
|
||
|
||
// 备用存档
|
||
saveAllReserve(req: any, res: any) {
|
||
let sign = req.query.sign; // 签名
|
||
if (sign != GameConf.sign) {
|
||
Http.reply(res, {
|
||
code: MsgCode.FAILED,
|
||
msg: `非法请求!`
|
||
});
|
||
return;
|
||
}
|
||
let server_id = req.query.server_id; // 0 则全服存档
|
||
if (!server_id) {
|
||
server_id = 0;
|
||
}
|
||
let server_list = [];
|
||
if (server_id == 0) {
|
||
let servers = ServerMgr.shared.getServerList();
|
||
for (let key in servers) {
|
||
server_list.push(servers[key]);
|
||
}
|
||
} else {
|
||
let server = ServerMgr.shared.getServer(server_id);
|
||
if (server) {
|
||
server_list.push(server);
|
||
}
|
||
}
|
||
server_list = server_list.filter(t => t.is_reg);
|
||
if (server_list.length < 1) {
|
||
Http.reply(res, {
|
||
code: MsgCode.FAILED,
|
||
msg: `全部存档:找不到未开闭的服务器!`
|
||
});
|
||
return;
|
||
}
|
||
let total = server_list.length;
|
||
let count = 0;
|
||
let msg = ``;
|
||
let list: any[] = [];
|
||
for (let server of server_list) {
|
||
Http.sendget(server.net_ip, server.http_port, '/save_all_reserve', {
|
||
}, (success: boolean, data: any) => {
|
||
count++;
|
||
msg += `${msg.length < 1 ? `` : `,`}${data.msg}`;
|
||
list.push(data);
|
||
if (count == total) {
|
||
Http.reply(res, {
|
||
code: data.code,
|
||
msg: msg,
|
||
data: list
|
||
});
|
||
}
|
||
});
|
||
}
|
||
}
|
||
|
||
// 关服
|
||
close(req: any, res: any) {
|
||
let sign = req.query.sign; // 签名
|
||
if (sign != GameConf.sign) {
|
||
Http.reply(res, {
|
||
code: MsgCode.FAILED,
|
||
msg: `非法请求!`
|
||
});
|
||
return;
|
||
}
|
||
GameUtil.isClose = true;
|
||
let server_id = req.query.server_id; // 0 则全服公告
|
||
if (!server_id) {
|
||
server_id = 0;
|
||
}
|
||
let server_list = [];
|
||
if (server_id == 0) {
|
||
let servers = ServerMgr.shared.getServerList();
|
||
for (let key in servers) {
|
||
server_list.push(servers[key]);
|
||
}
|
||
} else {
|
||
let server = ServerMgr.shared.getServer(server_id);
|
||
if (server) {
|
||
server_list.push(server);
|
||
}
|
||
}
|
||
server_list = server_list.filter(t => t.is_reg);
|
||
if (server_list.length < 1) {
|
||
let msg = `关服:找不到未开闭的服务器!`;
|
||
SKLogger.info(msg);
|
||
Http.reply(res, {
|
||
code: MsgCode.FAILED,
|
||
msg: msg
|
||
});
|
||
return;
|
||
}
|
||
let total = server_list.length;
|
||
let count = 0;
|
||
let msg = ``;
|
||
let list: any[] = [];
|
||
for (let server of server_list) {
|
||
SKLogger.info(`正在关闭服务器:${server.name}`);
|
||
Http.sendget(server.net_ip, server.http_port, '/close', {
|
||
}, (success: boolean, data: any) => {
|
||
count++;
|
||
msg += `${msg.length < 1 ? `` : `,`}${data.msg}`;
|
||
list.push(data);
|
||
if (count == total) {
|
||
Http.reply(res, {
|
||
code: data.code,
|
||
msg: msg,
|
||
data: list
|
||
});
|
||
}
|
||
});
|
||
}
|
||
}
|
||
// 发送邮件
|
||
sendMail(req: any, res: any) {
|
||
// let sign = req.query.sign; // 签名
|
||
// if (sign != GameConf.sign) {
|
||
// Http.reply(res, {
|
||
// code: MsgCode.FAILED,
|
||
// msg: `非法请求!`
|
||
// });
|
||
// return;
|
||
// }
|
||
if (GameUtil.isClose) {
|
||
Http.reply(res, {
|
||
code: MsgCode.FAILED,
|
||
msg: `游戏已关服,不能发送邮件!`
|
||
});
|
||
return;;
|
||
}
|
||
let target = req.query.target;
|
||
let title = req.query.title;
|
||
let content = req.query.content;
|
||
let gets = req.query.gets;
|
||
// 发送全服 S:1000 发送1区 R:0 发送角色编号 I:ABCDE 发送邀请码玩家
|
||
let data: any = {
|
||
target: target,
|
||
title: title,
|
||
content: content,
|
||
gets: gets
|
||
};
|
||
if (SKDataUtil.isEmptyString(target)) {
|
||
ServerMgr.shared.sendAllServer("/send_mail", data, (success: boolean, data: any) => {
|
||
if (success) {
|
||
res.end(SKDataUtil.toJson({
|
||
code: MsgCode.SUCCESS,
|
||
msg: `发送邮件成功!`,
|
||
}, "{}"));
|
||
} else {
|
||
res.end(SKDataUtil.toJson({
|
||
code: MsgCode.FAILED,
|
||
msg: `发送邮件失败`,
|
||
}, "{}"));
|
||
}
|
||
});
|
||
} else {
|
||
let params = target.split(":");
|
||
if (params.length != 2) {
|
||
Http.reply(res, {
|
||
code: MsgCode.FAILED,
|
||
msg: `发送邮件:目标字符串错误!`
|
||
});
|
||
return;
|
||
}
|
||
let prefix = params[0];
|
||
switch (prefix) {
|
||
case "S":
|
||
let serverId = SKDataUtil.numberBy(params[1]);
|
||
ServerMgr.shared.getServer(serverId).send("/send_mail", data, (success: boolean, data: any) => {
|
||
if (success) {
|
||
res.end(SKDataUtil.toJson({
|
||
code: MsgCode.SUCCESS,
|
||
msg: `发送邮件成功!`,
|
||
}, "{}"));
|
||
} else {
|
||
res.end(SKDataUtil.toJson({
|
||
code: MsgCode.FAILED,
|
||
msg: `发送邮件失败`,
|
||
}, "{}"));
|
||
}
|
||
});
|
||
break;
|
||
case "R":
|
||
data.roleId = SKDataUtil.numberBy(params[1]);
|
||
ServerMgr.shared.sendServer(data.roleId, "/send_mail", data, (success: boolean, data: any) => {
|
||
if (success) {
|
||
res.end(SKDataUtil.toJson({
|
||
code: MsgCode.SUCCESS,
|
||
msg: `发送邮件成功!`,
|
||
}, "{}"));
|
||
} else {
|
||
res.end(SKDataUtil.toJson({
|
||
code: MsgCode.FAILED,
|
||
msg: `发送邮件失败`,
|
||
}, "{}"));
|
||
}
|
||
});
|
||
break;
|
||
case "I":
|
||
data.invite = params[1];
|
||
ServerMgr.shared.sendAllServer("/send_mail", data, (success: boolean, data: any) => {
|
||
if (success) {
|
||
res.end(SKDataUtil.toJson({
|
||
code: MsgCode.SUCCESS,
|
||
msg: `发送邮件成功!`,
|
||
}, "{}"));
|
||
} else {
|
||
res.end(SKDataUtil.toJson({
|
||
code: MsgCode.FAILED,
|
||
msg: `发送邮件失败`,
|
||
}, "{}"));
|
||
}
|
||
});
|
||
break;
|
||
}
|
||
}
|
||
}
|
||
// 获得服务器列表
|
||
getServerList(req: any, res: any) {
|
||
let sign = req.query.sign; // 签名
|
||
if (sign != GameConf.sign) {
|
||
Http.reply(res, {
|
||
code: MsgCode.FAILED,
|
||
msg: `非法请求!`
|
||
});
|
||
return;
|
||
}
|
||
let dict = ServerMgr.shared.getServerList();
|
||
let result = [];
|
||
for (let key in dict) {
|
||
let server = dict[key];
|
||
result.push(server.toObj());
|
||
}
|
||
res.end(SKDataUtil.toJson({
|
||
code: MsgCode.SUCCESS,
|
||
msg: `发送邮件成功!`,
|
||
data: result,
|
||
}, "{}"));
|
||
}
|
||
|
||
// 同步数据
|
||
syncData(req: any, res: any) {
|
||
let sign = req.query.sign; // 签名
|
||
if (sign != GameConf.sign) {
|
||
Http.reply(res, {
|
||
code: MsgCode.FAILED,
|
||
msg: `非法请求!`
|
||
});
|
||
return;
|
||
}
|
||
|
||
let server_id = req.query.server_id; // 0 则全服
|
||
let path = req.query.path; // 接口名称
|
||
if (!server_id) {
|
||
server_id = 0;
|
||
}
|
||
let server_list = [];
|
||
if (server_id == 0) {
|
||
let servers = ServerMgr.shared.getServerList();
|
||
for (let key in servers) {
|
||
server_list.push(servers[key]);
|
||
}
|
||
} else {
|
||
let server = ServerMgr.shared.getServer(server_id);
|
||
if (server) {
|
||
server_list.push(server);
|
||
}
|
||
}
|
||
server_list = server_list.filter(t => t.is_reg);
|
||
if (server_list.length < 1) {
|
||
Http.reply(res, {
|
||
code: MsgCode.FAILED,
|
||
msg: `未开闭的服务器`
|
||
});
|
||
return;
|
||
}
|
||
let index = 0;
|
||
let info = ``;
|
||
for (let server of server_list) {
|
||
Http.sendget(server.net_ip, server.http_port, path, {
|
||
}, (success: boolean, data: any) => {
|
||
index++;
|
||
info += `${info.length < 1 ? `` : `,`}${data.msg}`;
|
||
if (index == server_list.length) {
|
||
Http.reply(res, {
|
||
code: data.code,
|
||
msg: info
|
||
});
|
||
}
|
||
});
|
||
}
|
||
}
|
||
|
||
// 清理机器人数据
|
||
clearRobot(req: any, res: any) {
|
||
let sign = req.query.sign; // 签名
|
||
if (sign != GameConf.sign) {
|
||
Http.reply(res, {
|
||
code: MsgCode.FAILED,
|
||
msg: `非法请求!`
|
||
});
|
||
return;
|
||
}
|
||
|
||
let server_id = req.query.server_id;
|
||
|
||
let server_list = [];
|
||
let server = ServerMgr.shared.getServer(server_id);
|
||
if (server) {
|
||
server_list.push(server);
|
||
}
|
||
server_list = server_list.filter(t => t.is_reg);
|
||
if (server_list.length < 1) {
|
||
Http.reply(res, {
|
||
code: MsgCode.FAILED,
|
||
msg: `未开闭的服务器`
|
||
});
|
||
return;
|
||
}
|
||
let index = 0;
|
||
let info = ``;
|
||
for (let server of server_list) {
|
||
Http.sendget(server.net_ip, server.http_port, "/clear_robot", {
|
||
num: req.query.num
|
||
}, (success: boolean, data: any) => {
|
||
index++;
|
||
info += `${info.length < 1 ? `` : `,`}${data.msg}`;
|
||
if (index == server_list.length) {
|
||
Http.reply(res, {
|
||
code: data.code,
|
||
msg: info
|
||
});
|
||
}
|
||
});
|
||
}
|
||
}
|
||
|
||
// 创建机器人数据
|
||
createRobot(req: any, res: any) {
|
||
let sign = req.query.sign; // 签名
|
||
if (sign != GameConf.sign) {
|
||
Http.reply(res, {
|
||
code: MsgCode.FAILED,
|
||
msg: `非法请求!`
|
||
});
|
||
return;
|
||
}
|
||
|
||
let server_id = req.query.server_id;
|
||
|
||
let server_list = [];
|
||
let server = ServerMgr.shared.getServer(server_id);
|
||
if (server) {
|
||
server_list.push(server);
|
||
}
|
||
server_list = server_list.filter(t => t.is_reg);
|
||
if (server_list.length < 1) {
|
||
Http.reply(res, {
|
||
code: MsgCode.FAILED,
|
||
msg: `未开闭的服务器`
|
||
});
|
||
return;
|
||
}
|
||
let index = 0;
|
||
let info = ``;
|
||
for (let server of server_list) {
|
||
Http.sendget(server.net_ip, server.http_port, "/create_robot", {
|
||
num: req.query.num
|
||
}, (success: boolean, data: any) => {
|
||
index++;
|
||
info += `${info.length < 1 ? `` : `,`}${data.msg}`;
|
||
if (index == server_list.length) {
|
||
Http.reply(res, {
|
||
code: data.code,
|
||
msg: info
|
||
});
|
||
}
|
||
});
|
||
}
|
||
}
|
||
|
||
// 启动Http服务
|
||
start(port: number) {
|
||
let list: { [key: string]: (req: any, res: any) => void } = {
|
||
['register_server']: this.registerServer.bind(this),
|
||
['ping_server']: this.pingServer.bind(this),
|
||
['register']: this.register.bind(this),
|
||
["login"]: this.login.bind(this),
|
||
['create_role']: this.createRole.bind(this),
|
||
['ser_list']: this.serList.bind(this),
|
||
['to_server']: this.toServer.bind(this),
|
||
['charge']: this.charge.bind(this),
|
||
['pay_return']: this.payReturn.bind(this),
|
||
['get_comment']: this.getComment.bind(this),
|
||
['say_set_comment']: this.setComment.bind(this),
|
||
['say_sys_notice']: this.sysNotice.bind(this),
|
||
['say_online_num']: this.onlineNum.bind(this),
|
||
// 禁言
|
||
['say_not_speak']: this.notSpeak.bind(this),
|
||
// 解言
|
||
['say_can_speak']: this.canSpeak.bind(this),
|
||
// 封IP
|
||
['say_frozen_ip']: this.frozenIP.bind(this),
|
||
// 解封IP
|
||
['say_unfrozen_ip']: this.unfrozenIP.bind(this),
|
||
['say_frozen_mac']: this.frozenMAC.bind(this),
|
||
['say_unfrozen_mac']: this.unfrozenMAC.bind(this),
|
||
['say_clear_player_cache']: this.clearPlayerCache.bind(this),
|
||
['say_change_password']: this.changePassword.bind(this),
|
||
['say_set_charge_activity']: this.setChargeActivity.bind(this),
|
||
['say_open_charge_activity']: this.openChargeActivity.bind(this),
|
||
['say_close_charge_activity']: this.closeChargeActivity.bind(this),
|
||
['say_get_charge_activity']: this.getChargeActivity.bind(this),
|
||
// 恢复数据
|
||
["say_roll_back_player"]: this.rollbackPlayer.bind(this),
|
||
// 清理玩家任务
|
||
["say_close_task"]: this.closeTask.bind(this),
|
||
// 给指定的玩家加仙玉
|
||
['say_add_jade']: this.addJade.bind(this),
|
||
// 给指定的玩家加经验
|
||
['say_add_exp']: this.addExp.bind(this),
|
||
// 给指定的玩家加道具
|
||
['say_add_item']: this.addItem.bind(this),
|
||
// 给指定的玩家加道具
|
||
['say_add_ofuda']: this.addOfuda.bind(this),
|
||
// 获得道具列表
|
||
['say_get_item_list']: this.getItemList.bind(this),
|
||
// 代理充值
|
||
['say_agent_charge']: this.agentCharge.bind(this),
|
||
// 加称谓
|
||
["say_add_title"]: this.addTitle.bind(this),
|
||
// 踢指定的玩家
|
||
["say_kicked_out_player"]: this.kickedOut.bind(this),
|
||
// 清除指定玩家每日存档
|
||
["say_clear_day"]: this.clearDay.bind(this),
|
||
// 清除所有玩家每日存档
|
||
["say_clear_all_day"]: this.clearAllDay.bind(this),
|
||
// 全部玩家存档
|
||
["say_save_all"]: this.saveAll.bind(this),
|
||
// 备用存档
|
||
["save_all_reserve"]: this.saveAllReserve.bind(this),
|
||
// 控制
|
||
["say_control"]: this.control.bind(this),
|
||
// 关服
|
||
["say_close"]: this.close.bind(this),
|
||
// 发送邮件
|
||
["say_send_mail"]: this.sendMail.bind(this),
|
||
// 更改提现状态
|
||
["say_withdraw_state"]: this.updateWithdrawState.bind(this),
|
||
// 获得现金
|
||
["say_obtain_currency"]: this.obtainCurrency.bind(this),
|
||
// 同步数据
|
||
["say_sync_data"]: this.syncData.bind(this),
|
||
// 创建机器人数据
|
||
["say_create_robot"]: this.createRobot.bind(this),
|
||
// 清理机器人数据
|
||
["say_clear_robot"]: this.clearRobot.bind(this),
|
||
// 获得服务器列表
|
||
["server_list"]: this.getServerList.bind(this),
|
||
['test_battle']: this.testBattle.bind(this),
|
||
};
|
||
for (let key in list) {
|
||
this.app.get('/' + key, list[key]);
|
||
}
|
||
this.app.post("/report", this.report.bind(this));
|
||
this.app.listen(port);
|
||
}
|
||
}
|