目录结构调整
This commit is contained in:
336
codes/games/sales_service/YouLeGamesServer.html
Normal file
336
codes/games/sales_service/YouLeGamesServer.html
Normal file
@@ -0,0 +1,336 @@
|
||||
<!DOCTYPE HTML>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta http-equiv="Expires" content="0">
|
||||
<meta http-equiv="Pragma" content="no-cache">
|
||||
<meta http-equiv="Cache-Control" content="no-cache, must-revalidate">
|
||||
<meta name="viewport" content="width=device-width,initial-scale=1 user-scalable=0"/>
|
||||
<title>后台玩家查询</title>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<div id="divChat">
|
||||
<textarea name="txtChatMain" id="txtChatMain" readonly="readonly" class="txtarea"></textarea>
|
||||
</div>
|
||||
|
||||
<style type='text/css'>
|
||||
div#divChat { width:30em; }
|
||||
textarea.txtarea { float:left; width: 34em; height: 20em;}
|
||||
</style>
|
||||
<script type="text/javascript" src="indexDb.js"></script>
|
||||
<script type="text/javascript" src="minhttp.js"></script>
|
||||
<script type="text/javascript" src="packet.js"></script>
|
||||
<script type="text/javascript">
|
||||
// Websocket object
|
||||
var ws = null;
|
||||
// Websocket 连接地址
|
||||
var ws_url = "ws://127.0.0.1:31088";
|
||||
// Helper functions
|
||||
function $() {
|
||||
return document.getElementById(arguments[0]);
|
||||
}
|
||||
function logMsg(msg) {
|
||||
$('txtChatMain').value += msg + '\n';
|
||||
}
|
||||
function logmsg(msg) {
|
||||
$('txtChatMain').value += msg + '\n';
|
||||
}
|
||||
function sendMsg(msg) {
|
||||
ws.send(msg);
|
||||
}
|
||||
function sendmsg(msg) {
|
||||
ws.send(msg);
|
||||
}
|
||||
//重新连接
|
||||
function reconnect(){
|
||||
ws = null;
|
||||
connectWebSocket();
|
||||
}
|
||||
// Websocket functions
|
||||
function connectWebSocket() {
|
||||
OnBeginConnectedServerChat();
|
||||
if ("WebSocket" in window) {
|
||||
// Create new websocket connection
|
||||
ws = new WebSocket(ws_url);
|
||||
|
||||
// Called after connection is established
|
||||
ws.onopen = function() {
|
||||
ws.wsisclose = false;
|
||||
logMsg(min_now() + ' tcp connected to: ' + ws.url);
|
||||
sendMsg('dfw19770109'); //告诉ServerChat.exe我是逻辑服务器
|
||||
};
|
||||
|
||||
// Called when connection is closed
|
||||
ws.onclose = function() {
|
||||
ws.wsisclose = true;
|
||||
logMsg(min_now() + " Connection closed!");
|
||||
ws.reconnecttimer = min_ontimeout(reconnect, 5000);
|
||||
};
|
||||
|
||||
// Called when a new message is received
|
||||
ws.sendall = function (msg) {
|
||||
if (typeof(msg) == 'string') {
|
||||
sendMsg('@toallall:' + msg);
|
||||
}
|
||||
else
|
||||
{
|
||||
var s = JSON.stringify(msg);
|
||||
sendMsg('@toallall:' + s);
|
||||
}
|
||||
}
|
||||
|
||||
//Send message to HTTP client
|
||||
ws.sendtou = function (head, msg) {
|
||||
if (ws.wsisclose){
|
||||
return;
|
||||
}
|
||||
sendMsg(head + msg);
|
||||
}
|
||||
|
||||
//Send message to TCP client
|
||||
ws.sendbyids = function(ids, msg) {
|
||||
if (ws.wsisclose){
|
||||
return;
|
||||
}
|
||||
var s = '@tooneone:';
|
||||
var str_ids;
|
||||
if (typeof(msg) == 'string')
|
||||
{}
|
||||
else
|
||||
{
|
||||
msg = JSON.stringify(msg);
|
||||
}
|
||||
if (typeof(ids) == 'string')
|
||||
{
|
||||
str_ids = ids;
|
||||
}
|
||||
else
|
||||
{
|
||||
//ids:[1,5,8] 要转成字符串 1,5,8
|
||||
str_ids = ids[0];
|
||||
for (var i=1; i<ids.length; i++)
|
||||
{
|
||||
str_ids = str_ids + ',' + ids[i];
|
||||
}
|
||||
}
|
||||
s = s + str_ids + ':' + msg;
|
||||
sendMsg(s);
|
||||
}
|
||||
|
||||
ws.sendclosetcp = function(ids) {
|
||||
if (ws.wsisclose){
|
||||
return;
|
||||
}
|
||||
var s = '@toclosed:';
|
||||
var str_ids;
|
||||
if (typeof(ids) == 'string') {
|
||||
str_ids = ids;
|
||||
}else{
|
||||
//ids:[1,5,8] 要转成字符串 1,5,8
|
||||
str_ids = ids[0];
|
||||
for (var i=1; i<ids.length; i++)
|
||||
{
|
||||
str_ids = str_ids + ',' + ids[i];
|
||||
}
|
||||
}
|
||||
s = s + str_ids+ ':a';
|
||||
sendMsg(s);
|
||||
}
|
||||
|
||||
ws.onmessage = function (msg) {
|
||||
if (msg.data)
|
||||
{
|
||||
// logMsg(msg.data);
|
||||
var arr = msg.data;
|
||||
var tou = arr.substr(10, 5);
|
||||
// var arrs = arr.split(":");
|
||||
//取前面50个字符,以免全字符split,提高效率
|
||||
var arr50 = arr.substr(0, 50);
|
||||
var arrs = arr50.split(":");
|
||||
|
||||
if (tou == 'http_')
|
||||
{//http
|
||||
var s1 = '@tooneone' + ':' + arrs[1] + ':';
|
||||
var s2 = "";
|
||||
if (arrs.length > 2)
|
||||
{//是数据,否则是命令
|
||||
s2 = msg.data.substr(s1.length, msg.data.length-s1.length);
|
||||
}
|
||||
OnHttpMessage(s1, s2);
|
||||
}
|
||||
else
|
||||
{//tcp
|
||||
var ss0 = arrs[0];
|
||||
var ss1 = arrs[1];
|
||||
var sip = arrs[2];
|
||||
var s01 = ss0 + ':' + ss1 + ':' + sip + ':';
|
||||
var ss2 = "";
|
||||
if (arrs.length > 3)
|
||||
{//是数据,否则是命令
|
||||
ss2 = msg.data.substr(s01.length, msg.data.length - s01.length);
|
||||
}
|
||||
OnTcpMessage(ss0, ss1, sip, ss2);
|
||||
|
||||
// var ss0 = arrs[0];
|
||||
// var ss1 = arrs[1];
|
||||
// var s01 = ss0 + ':' + ss1 + ':';
|
||||
// var ss2 = "";
|
||||
// if (arrs.length > 2)
|
||||
// {//是数据,否则是命令
|
||||
// ss2 = msg.data.substr(s01.length, msg.data.length - s01.length);
|
||||
// }
|
||||
// OnTcpMessage(ss0, ss1, "", ss2);
|
||||
}
|
||||
};
|
||||
|
||||
return;
|
||||
};
|
||||
}
|
||||
else
|
||||
{
|
||||
logMsg('Browser doesn\'t support websockets!');
|
||||
}
|
||||
|
||||
OnAfterConnectedServerChat();
|
||||
}
|
||||
|
||||
//server.html连接ServerChat.exe前的事件
|
||||
function OnBeginConnectedServerChat()
|
||||
{
|
||||
}
|
||||
|
||||
//server.html连接ServerChat.exe后的事件
|
||||
function OnAfterConnectedServerChat()
|
||||
{
|
||||
//给packet_face传递发包函数
|
||||
if (typeof(packet_face) != "undefined")
|
||||
{
|
||||
global.packet_face.SendPack_Tcp = ws.sendbyids;
|
||||
global.packet_face.SendPack_Http = ws.sendtou;
|
||||
}
|
||||
}
|
||||
|
||||
//收到客户端http发包触发的事件
|
||||
function OnHttpMessage(str_httpid, str_data)
|
||||
{
|
||||
try
|
||||
{
|
||||
str_data = min_replaceAll(str_data, "%", "");
|
||||
str_data = decodeURIComponent(str_data); //解码
|
||||
}
|
||||
catch(e)
|
||||
{
|
||||
console.log("OnHttpMessage_decodeURIComponent:" + str_data);
|
||||
return;
|
||||
}
|
||||
|
||||
var s = "";
|
||||
s = str_data.substr(0, 6);
|
||||
if (s == "&data=") {
|
||||
str_data = str_data.replace("&data=", "");
|
||||
}
|
||||
s = str_data.substr(0, 5);
|
||||
if (s == "data=") {
|
||||
str_data = str_data.replace("data=", "");
|
||||
}
|
||||
s = str_data.substr(0, 2);
|
||||
if (s == "&=") {
|
||||
str_data = str_data.replace("&=", "");
|
||||
}
|
||||
s = str_data.substr(0, 1);
|
||||
if (s == "&") {
|
||||
str_data = str_data.replace("&", "");
|
||||
}
|
||||
|
||||
if (typeof(packet_face) != "undefined") {
|
||||
if (str_data) {
|
||||
try
|
||||
{
|
||||
var json_data = JSON.parse(str_data);
|
||||
if (json_data){
|
||||
json_data.conmode = "http";
|
||||
json_data.fromid = str_httpid;
|
||||
packet_face.ReceivePack(json_data);
|
||||
}
|
||||
}
|
||||
catch(e)
|
||||
{
|
||||
console.log(min_now() + " str_data:" + str_data);
|
||||
console.log(e);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//收到客户端tcp发包触发的事件
|
||||
function OnTcpMessage(str_com, str_tcpid, str_ip, str_data)
|
||||
{
|
||||
switch (str_com)
|
||||
{
|
||||
case "@toconcon": //连上ServerChat.exe
|
||||
break;
|
||||
|
||||
case "@tologin1": //客户端连接上
|
||||
if (typeof(packet_face) != "undefined")
|
||||
{
|
||||
packet_face.OnTcpConnected(str_tcpid);
|
||||
}
|
||||
break;
|
||||
|
||||
case "@toleave1": //客户端断开
|
||||
if (typeof(packet_face) != "undefined")
|
||||
{
|
||||
packet_face.OnTcpDisConnected(str_tcpid);
|
||||
}
|
||||
break;
|
||||
|
||||
case "@toserver": //客户端发包
|
||||
if (typeof(packet_face) != "undefined")
|
||||
{
|
||||
try
|
||||
{
|
||||
str_data = min_replaceAll(str_data, "%", ""); //去除%,否则decodeURIComponent(str_data)会报错
|
||||
str_data = decodeURIComponent(str_data); //解码
|
||||
var json_data = JSON.parse(str_data);
|
||||
if (json_data){
|
||||
json_data.conmode = "tcp";
|
||||
json_data.fromid = str_tcpid;
|
||||
json_data.ip = str_ip;
|
||||
packet_face.ReceivePack(json_data);
|
||||
}
|
||||
}
|
||||
catch(e)
|
||||
{
|
||||
console.log(e);
|
||||
var errlog = {};
|
||||
errlog.name = "非法的TCP连接";
|
||||
errlog.time = min_now();
|
||||
errlog.com = str_com;
|
||||
errlog.tcpid = str_tcpid;
|
||||
errlog.ip = str_ip;
|
||||
errlog.data = str_data;
|
||||
console.log(errlog);
|
||||
ws.sendclosetcp(str_tcpid);
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
var errlog = {};
|
||||
errlog.name = "非法的TCP连接";
|
||||
errlog.time = min_now();
|
||||
errlog.com = str_com;
|
||||
errlog.tcpid = str_tcpid;
|
||||
errlog.ip = str_ip;
|
||||
errlog.data = str_data;
|
||||
console.log(errlog);
|
||||
ws.sendclosetcp(str_tcpid);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
window.onload = connectWebSocket();
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
13
codes/games/sales_service/applist.js
Normal file
13
codes/games/sales_service/applist.js
Normal file
@@ -0,0 +1,13 @@
|
||||
///////////////////////////////////////////////////
|
||||
//////////////////////应用列表/////////////////////
|
||||
///////////////////////////////////////////////////
|
||||
//系统服务
|
||||
min_loadJsFile("server/app.js", function (){
|
||||
//友乐游戏
|
||||
min_loadJsFile("youle/app.js", function (){
|
||||
//动态更新模块
|
||||
min_loadJsFile("update/app.js", function (){
|
||||
|
||||
});
|
||||
});
|
||||
});
|
||||
77
codes/games/sales_service/class/class.app.js
Normal file
77
codes/games/sales_service/class/class.app.js
Normal file
@@ -0,0 +1,77 @@
|
||||
///////////////////////////////////////////////////
|
||||
//////////////cls_app: 应用基础类//////////////////
|
||||
///////////////////////////////////////////////////
|
||||
var cls_app = cls_app || {
|
||||
//构造函数
|
||||
new: function(_str_appname, _obj_packet) {
|
||||
/*
|
||||
参数说明:
|
||||
_str_appname 应用名称
|
||||
_obj_packet 所有应用的总包接口对象
|
||||
*/
|
||||
|
||||
//创建一个实例
|
||||
var app = {};
|
||||
|
||||
// ================= 实例的公有属性 ================= //
|
||||
//应用名称
|
||||
app.appname = _str_appname;
|
||||
//总包接口
|
||||
app.packet_face = _obj_packet;
|
||||
//给客户端发包函数
|
||||
app.SendPack = app.packet_face.SendPack;
|
||||
//给http客户端发包函数
|
||||
app.SendPack_Http = app.packet_face.SendPack_Http;
|
||||
//给tcp客户端发包函数
|
||||
app.SendPack_Tcp = app.packet_face.SendPack_Tcp;
|
||||
//将app添加到packet_face的应用列表中
|
||||
app.packet_face.applist.push(app);
|
||||
|
||||
//模块列表 [{"face":room_face,"facename":"room_face","routename":"room"}]
|
||||
app.modlist = [];
|
||||
|
||||
// ================= 实例的公有方法 ================= //
|
||||
//TCP客户端断开
|
||||
app.OnTcpDisConnected = function(_str_tcpid) {
|
||||
cls_app.OnTcpDisConnected(app, _str_tcpid);
|
||||
}
|
||||
|
||||
//处理数据包
|
||||
app.ReceivePack = function(_pack) {
|
||||
return cls_app.ReceivePack(app, _pack);
|
||||
}
|
||||
|
||||
return app;
|
||||
},
|
||||
|
||||
// ================= 所有实例的共享方法 ================= //
|
||||
//TCP客户端断开
|
||||
OnTcpDisConnected: function(_obj_app, _str_tcpid) {
|
||||
for (var i = 0; i < _obj_app.modlist.length; i++) {
|
||||
if (_obj_app.modlist[i].OnTcpDisConnected) {
|
||||
_obj_app.modlist[i].OnTcpDisConnected(_str_tcpid);
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
//处理数据包
|
||||
ReceivePack: function(_obj_app, _pack) {
|
||||
if (typeof(_pack) == "string") {
|
||||
_pack = JSON.parse(_pack); //转换json
|
||||
}
|
||||
//路由各个模块
|
||||
for (var i = 0; i < _obj_app.modlist.length; i++) {
|
||||
if (_pack.route == _obj_app.modlist[i].routename) {
|
||||
if (_obj_app.modlist[i].DoPack) {
|
||||
var repack = _obj_app.modlist[i].DoPack(_pack);
|
||||
//发包
|
||||
if (repack && _obj_app.SendPack) {
|
||||
_obj_app.SendPack(repack);
|
||||
}
|
||||
return repack;
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
70
codes/games/sales_service/class/class.mod.js
Normal file
70
codes/games/sales_service/class/class.mod.js
Normal file
@@ -0,0 +1,70 @@
|
||||
///////////////////////////////////////////////////
|
||||
//////////////cls_mod: 模块基础类//////////////////
|
||||
///////////////////////////////////////////////////
|
||||
var cls_mod = cls_mod || {
|
||||
//构造函数
|
||||
new: function(_str_modname, _str_routename, _obj_app) {
|
||||
/*
|
||||
_str_modname 模块名称
|
||||
_str_routename 模块的路由名称
|
||||
_obj_app 所属的应用对象
|
||||
*/
|
||||
|
||||
//创建一个实例
|
||||
var mod = {};
|
||||
|
||||
// ================= 实例的公有属性 ================= //
|
||||
//模块名称
|
||||
mod.modname = _str_modname;
|
||||
//路由名称
|
||||
mod.routename = _str_routename;
|
||||
//所属的应用
|
||||
mod.app = _obj_app;
|
||||
//将mod对象添加到app的模块列表中
|
||||
mod.app.modlist.push(mod);
|
||||
mod.app[_str_modname] = mod;
|
||||
|
||||
// ================= 实例的公有方法 ================= //
|
||||
//收包处理
|
||||
mod.DoPack = function(_msg) {
|
||||
return cls_mod.DoPack(mod, _msg);
|
||||
}
|
||||
|
||||
//输出mod
|
||||
cls_mod.OutputMod(mod);
|
||||
|
||||
return mod;
|
||||
},
|
||||
|
||||
DoPack: function(_obj_mod, _msg) {
|
||||
if (typeof(_msg) == "string") {
|
||||
_msg = JSON.parse(_msg); //转换json
|
||||
}
|
||||
//执行rpc
|
||||
if (_msg.rpc) {
|
||||
if (min_ExitsFunction(_obj_mod[_msg.rpc])) {
|
||||
return _obj_mod[_msg.rpc](_msg);
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
OutputMod: function(_obj_mod) {
|
||||
if (typeof global !== "undefined")
|
||||
{} else {
|
||||
global = {};
|
||||
}
|
||||
|
||||
if (typeof module !== "undefined")
|
||||
{} else {
|
||||
module = {};
|
||||
module.exports = {};
|
||||
}
|
||||
|
||||
global[_obj_mod.modname] = _obj_mod;
|
||||
global[_obj_mod.modname].DoPack = _obj_mod.DoPack;
|
||||
|
||||
if (module) {
|
||||
module.exports[_obj_mod.modname] = _obj_mod;
|
||||
}
|
||||
}
|
||||
}
|
||||
89
codes/games/sales_service/class/class.mysql.js
Normal file
89
codes/games/sales_service/class/class.mysql.js
Normal file
@@ -0,0 +1,89 @@
|
||||
///////////////////////////////////////////////////
|
||||
///////////// cls_mysql: 数据库操作 ///////////////
|
||||
///////////////////////////////////////////////////
|
||||
var cls_mysql = cls_mysql || {
|
||||
|
||||
//构造函数
|
||||
new: function(url, func_fail_sendpack){
|
||||
var mysql = {};
|
||||
//php地址
|
||||
mysql.url = url;
|
||||
//发生错误时的回包函数
|
||||
mysql.func_fail_sendpack = func_fail_sendpack;
|
||||
|
||||
//执行sql语句
|
||||
mysql.execsql = function(method, sql, para, func_succ, pack) {
|
||||
/*
|
||||
method: php方法名 execsql/opensql
|
||||
sql: 要执行的sql语句
|
||||
para: 要执行的sql语句的参数数组
|
||||
func_succ: sql语句执行成功后的回调函数
|
||||
pack: 客户端发来的数据包,执行失败的话会根据pack返回客户端执行失败的结果
|
||||
*/
|
||||
var data = {}
|
||||
data.m = method;
|
||||
data.s = sql;
|
||||
data.p = para;
|
||||
|
||||
var strdata = JSON.stringify(data);
|
||||
//将=号替换为^,php收到后再替换回来,以避免=号POST传参会截断的问题
|
||||
strdata = strdata.replace(/\=/g,"^");
|
||||
|
||||
var cfg = {};
|
||||
cfg.url = mysql.url;
|
||||
cfg.data = "data=" + strdata;
|
||||
cfg.type = "POST";
|
||||
cfg.success = function(str) {
|
||||
try {
|
||||
var result = JSON.parse(str);
|
||||
} catch(e) {
|
||||
console.log(min_now() + " 数据库执行结果转换json失败.");
|
||||
console.log(str);
|
||||
console.log(data);
|
||||
return;
|
||||
}
|
||||
|
||||
if (result.state != 0) {
|
||||
console.log(min_now() + " 请求" + mysql.url + "失败.");
|
||||
console.log(result);
|
||||
console.log(data);
|
||||
|
||||
if (pack) {
|
||||
console.log(JSON.stringify(pack));
|
||||
//返回客户端执行失败的结果
|
||||
if (mysql.func_fail_sendpack) {
|
||||
pack.data = {};
|
||||
pack.data.state = result.state;
|
||||
pack.data.error = result.error;
|
||||
mysql.func_fail_sendpack(pack);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
//执行sql成功执行回调函数
|
||||
// console.log(result);
|
||||
if (func_succ) {
|
||||
func_succ(result.data);
|
||||
}
|
||||
}
|
||||
};
|
||||
cfg.error = function(str){
|
||||
console.log(min_now() + " 请求" + mysql.url + "失败.");
|
||||
console.log(str);
|
||||
console.log(data);
|
||||
|
||||
if (pack) {
|
||||
console.log(JSON.stringify(pack));
|
||||
//返回客户端执行失败的结果
|
||||
if (mysql.func_fail_sendpack) {
|
||||
pack.data = {};
|
||||
pack.data.state = 99;
|
||||
pack.data.error = "请求数据库失败.";
|
||||
mysql.func_fail_sendpack(pack);
|
||||
}
|
||||
}
|
||||
};
|
||||
min_http(cfg);
|
||||
}
|
||||
return mysql;
|
||||
}
|
||||
}
|
||||
70
codes/games/sales_service/class/class.pai.js
Normal file
70
codes/games/sales_service/class/class.pai.js
Normal file
@@ -0,0 +1,70 @@
|
||||
///////////////////////////////////////////////////
|
||||
////////////////// cls_pai: 单张牌 ////////////////
|
||||
///////////////////////////////////////////////////
|
||||
var cls_pai = cls_pai || {
|
||||
|
||||
//创建单张牌实例
|
||||
new: function(id, score, dealowner){
|
||||
/*
|
||||
参数说明:
|
||||
id 牌的绝对id
|
||||
score 牌在游戏中的分值
|
||||
dealowner 发牌状态
|
||||
|
||||
扑克牌的统一编码规则:
|
||||
1,牌面花色的定义 5:王 4:黑桃 3:红心 2:梅花 1:方块
|
||||
2,牌面数值的定义 1:A 2:2 3:3 ... 9:9 10:10 11:J 12:Q 13:K 53:小王 54:大王
|
||||
*/
|
||||
var pai = {};
|
||||
|
||||
//属性
|
||||
pai.id = id; //绝对id,即数组下标,从0开始计数
|
||||
pai.score = score; //牌在游戏中的分值
|
||||
pai.dealowner = dealowner; //发牌状态
|
||||
//-1:规则去除的牌
|
||||
// 0:未发的牌,即底牌
|
||||
//>0:发牌发到谁手上,从1开始计数,即座位编号+1,座位编号是从0开始计数的
|
||||
pai.playround = -1; //出牌状态
|
||||
//-1:未出的牌
|
||||
// 0:埋牌
|
||||
//>0:牌是第几轮出出去的,从1开始计数
|
||||
pai.playindex = -1; //本轮中的出牌顺序,从1开始计数
|
||||
pai.playowner = -1; //出牌后被谁得到,与座位编号对应
|
||||
|
||||
//方法
|
||||
pai.method = {};
|
||||
|
||||
//牌面花色
|
||||
pai.method.get_flower = function(){
|
||||
return cls_pai.get_flower(pai);
|
||||
}
|
||||
|
||||
//牌面数值
|
||||
pai.method.get_number = function(){
|
||||
return cls_pai.get_number(pai);
|
||||
}
|
||||
|
||||
return pai;
|
||||
},
|
||||
|
||||
//获取牌面花色
|
||||
get_flower: function(o_pai) {
|
||||
var yu = o_pai.id % 54;
|
||||
if (yu == 52 || yu == 53){ //小王大王
|
||||
return 5;
|
||||
}
|
||||
return parseInt(yu / 13) + 1;
|
||||
},
|
||||
|
||||
//获取牌面数值
|
||||
get_number: function(o_pai) {
|
||||
var yu = o_pai.id % 54;
|
||||
if (yu == 52){ //小王
|
||||
return 53;
|
||||
}
|
||||
if (yu == 53){ //大王
|
||||
return 54;
|
||||
}
|
||||
return yu % 13 + 1;
|
||||
}
|
||||
}
|
||||
15
codes/games/sales_service/class/class.paiju.js
Normal file
15
codes/games/sales_service/class/class.paiju.js
Normal file
@@ -0,0 +1,15 @@
|
||||
///////////////////////////////////////////////////
|
||||
//////////////// cls_paiju: 单局牌局 //////////////
|
||||
///////////////////////////////////////////////////
|
||||
var cls_paiju = cls_paiju || {
|
||||
|
||||
//创建单张牌实例
|
||||
new: function(){
|
||||
|
||||
var paiju = {};
|
||||
|
||||
|
||||
|
||||
return paiju;
|
||||
}
|
||||
}
|
||||
131
codes/games/sales_service/config/update中属性说明.txt
Normal file
131
codes/games/sales_service/config/update中属性说明.txt
Normal file
@@ -0,0 +1,131 @@
|
||||
showmessage
|
||||
1,app启动提示,app用到。
|
||||
2,所有层都有该属性。
|
||||
|
||||
scrollmsg
|
||||
1,游戏中的滚动信息栏,游戏中用到。
|
||||
2,所有层都有该属性。
|
||||
|
||||
noticemsg
|
||||
1,游戏中的通知信息栏,以#号表示换行,游戏中用到。
|
||||
2,所有层都有该属性。
|
||||
|
||||
topupurl
|
||||
1,房卡充值的链接,该属性值不为空则跳转链接,游戏中用到。
|
||||
2,顶层、代理agent、游戏game、渠道channel都有该属性。
|
||||
|
||||
logimage
|
||||
1,log图片,游戏中用到。
|
||||
2,代理agent、游戏game、渠道channel都有该属性。
|
||||
|
||||
logimage2
|
||||
1,代理商的log图片,公众号页面中用到,页面右上角图标。
|
||||
2,代理agent有该属性。
|
||||
|
||||
sharename
|
||||
1,分享的内容名称,游戏中用到。
|
||||
2,游戏game、渠道channel都有该属性。
|
||||
|
||||
game_version
|
||||
1,游戏版本号,游戏热升级、游戏中登录拦截玩家时用到。
|
||||
2,游戏game、渠道channel、市场market都有该属性。
|
||||
|
||||
game_zip
|
||||
1,游戏zip文件,游戏热升级时用到。
|
||||
2,游戏game、渠道channel、市场market都有该属性。
|
||||
|
||||
game_size
|
||||
1,游戏zip文件大小,游戏大厅中用到。
|
||||
2,游戏game、渠道channel、市场market都有该属性。
|
||||
|
||||
game_hall_image
|
||||
1,大厅中子游戏的图标。
|
||||
2,游戏game有该属性。
|
||||
|
||||
game_hall_dir
|
||||
1,大厅中子游戏的目录。
|
||||
2,游戏game有该属性。
|
||||
|
||||
game_down_image
|
||||
1,下载页面的游戏图标。
|
||||
2,游戏game有该属性。
|
||||
|
||||
game_down_state
|
||||
1,下载页面的游戏状态,0-发布中 1-开发中 2-测试中。
|
||||
2,游戏game有该属性。
|
||||
|
||||
game_down_memo
|
||||
1,下载页面的游戏一句话描述。
|
||||
2,游戏game有该属性。
|
||||
|
||||
ios_defdownload_marketid
|
||||
1,苹果系统下载页面的对应的市场marketid。
|
||||
2,渠道channel有该属性。
|
||||
|
||||
and_defdownload_marketid
|
||||
1,安卓系统下载页面的对应的市场marketid。
|
||||
2,渠道channel有该属性。
|
||||
|
||||
app_version
|
||||
1,app版本号,app升级时用到。
|
||||
2,市场market有该属性。
|
||||
|
||||
app_download
|
||||
1,app下载地址,app升级时用到。
|
||||
2,市场market有该属性。
|
||||
|
||||
app_size
|
||||
1,app安装包大小,app升级时用到。
|
||||
2,市场market有该属性。
|
||||
|
||||
url_match
|
||||
1,比赛的链接地址。
|
||||
2,顶层、代理agent、游戏game都有该属性。
|
||||
|
||||
url_match2
|
||||
1,服务器比赛数据发送地址。
|
||||
2,顶层、代理agent、游戏game都有该属性。
|
||||
|
||||
html_buyroomcard
|
||||
1,公众号页面是否有购买房卡功能 1-没有 2-有。
|
||||
2,顶层、代理agent都有该属性。
|
||||
|
||||
html_applysales
|
||||
1,申请成为代理的方式 1-填写微信号并购买房卡 2-填写微信号。
|
||||
2,顶层、代理agent都有该属性。
|
||||
|
||||
sale_qq、sale_wechat、sale_tel
|
||||
1,代理后台页面显示的官方客服信息。
|
||||
2,顶层、代理agent都有该属性。
|
||||
|
||||
agentmode
|
||||
1,代理模式,1-无邀请码模式 2-有邀请码模式。
|
||||
2,顶层、代理agent都有该属性。
|
||||
|
||||
relagentid
|
||||
1,关联代理id,用于关联其他代理。
|
||||
2,代理agent都有该属性。
|
||||
|
||||
isclose
|
||||
1,关闭服务器标志,1-开启 2-关闭(不能创建和加入房间)。
|
||||
2,顶层、代理agent、游戏game都有该属性。
|
||||
|
||||
pushrate
|
||||
1,星星场房主抽成百分比,整数。
|
||||
2,顶层、代理agent、游戏game都有该属性。
|
||||
|
||||
player_server_tcp
|
||||
1,玩家服务器地址及端口号。
|
||||
2,顶层、代理agent都有该属性。
|
||||
|
||||
player_server_http
|
||||
1,玩家服务器地址及端口号。
|
||||
2,顶层、代理agent都有该属性。
|
||||
|
||||
visitor_server_tcp
|
||||
1,游客服务器地址及端口号。
|
||||
2,顶层、代理agent都有该属性。
|
||||
|
||||
visitor_server_http
|
||||
1,游客服务器地址及端口号。
|
||||
2,顶层、代理agent都有该属性。
|
||||
199
codes/games/sales_service/indexDb.js
Normal file
199
codes/games/sales_service/indexDb.js
Normal file
@@ -0,0 +1,199 @@
|
||||
(function(){
|
||||
var dbObject = {};
|
||||
dbObject.open = function(params){
|
||||
//数据库名
|
||||
dbObject.db_name = params.db_name;
|
||||
//数据库版本
|
||||
dbObject.db_version = params.db_version;
|
||||
//存储对象名
|
||||
dbObject.store_name = params.store_name;
|
||||
//IndexedDB对象
|
||||
dbObject.db = null;
|
||||
|
||||
if (!window.indexedDB){
|
||||
console.log("你的浏览器不支持IndexedDB,请更换浏览器");
|
||||
}
|
||||
var request = indexedDB.open(dbObject.db_name, dbObject.db_version);
|
||||
//打开数据库成功
|
||||
request.onsuccess = function(event){
|
||||
console.log("打开IndexedDB数据库" + dbObject.db_name + "成功");
|
||||
dbObject.db = event.target.result;
|
||||
if (params.success_callback){
|
||||
params.success_callback();
|
||||
}
|
||||
}
|
||||
//打开数据库失败
|
||||
request.onerror = function(event) {
|
||||
console.log("打开IndexedDB数据库" + dbObject.db_name + "失败");
|
||||
console.log(event);
|
||||
if (params.error_callback){
|
||||
params.error_callback();
|
||||
}
|
||||
}
|
||||
//当打开的数据库版本高于当前版本时触发
|
||||
request.onupgradeneeded = function(event){
|
||||
console.log("IndexedDB数据库" + dbObject.db_name + "版本升级到" + dbObject.db_version);
|
||||
dbObject.db = event.target.result;
|
||||
if(!dbObject.db.objectStoreNames.contains(dbObject.store_name)){
|
||||
dbObject.db.createObjectStore(dbObject.store_name);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//添加或修改
|
||||
dbObject.put = function(key, value){
|
||||
try{
|
||||
if (!dbObject.db){
|
||||
return;
|
||||
}
|
||||
|
||||
//此处必须显式声明事务
|
||||
var transaction = dbObject.db.transaction(dbObject.store_name, "readwrite");
|
||||
var store = transaction.objectStore(dbObject.store_name);
|
||||
var request = store.put(value, key);
|
||||
request.onsuccess = function(){
|
||||
// console.log("编辑IndexedDB记录成功:" + key);
|
||||
}
|
||||
request.onerror = function(event){
|
||||
console.log("编辑IndexedDB记录失败:" + key);
|
||||
console.log(event);
|
||||
}
|
||||
}
|
||||
catch(e){
|
||||
console.log(min_now() + "添加或修改IndexedDB失败");
|
||||
console.log(e);
|
||||
console.log(key);
|
||||
console.log(value);
|
||||
}
|
||||
}
|
||||
|
||||
//删除
|
||||
dbObject.delete = function(key){
|
||||
try{
|
||||
if (!dbObject.db){
|
||||
return;
|
||||
}
|
||||
var transaction = dbObject.db.transaction(dbObject.store_name, "readwrite");
|
||||
var store = transaction.objectStore(dbObject.store_name);
|
||||
var request = store.delete(key);
|
||||
request.onsuccess = function(){
|
||||
// console.log("删除IndexedDB记录成功:" + key);
|
||||
}
|
||||
request.onerror = function(event){
|
||||
console.log("删除IndexedDB记录失败:" + key);
|
||||
console.log(event);
|
||||
}
|
||||
}
|
||||
catch(e){
|
||||
console.log(min_now() + "删除IndexedDB失败");
|
||||
console.log(e);
|
||||
console.log(key);
|
||||
}
|
||||
}
|
||||
|
||||
//根据key获取value
|
||||
dbObject.get = function(key, succ_callback){
|
||||
try{
|
||||
if (!dbObject.db){
|
||||
return;
|
||||
}
|
||||
var transaction = dbObject.db.transaction(dbObject.store_name, "readwrite");
|
||||
var store = transaction.objectStore(dbObject.store_name);
|
||||
var request = store.get(key);
|
||||
request.onsuccess = function(){
|
||||
succ_callback(request.result);
|
||||
}
|
||||
request.onerror = function(event){
|
||||
console.log("获取IndexedDB记录失败:" + key);
|
||||
console.log(event);
|
||||
}
|
||||
}
|
||||
catch(e){
|
||||
console.log(min_now() + "获取IndexedDB失败");
|
||||
console.log(e);
|
||||
console.log(key);
|
||||
}
|
||||
}
|
||||
|
||||
//获取所有的value
|
||||
dbObject.get_allvalue = function(success_callback, error_callback){
|
||||
try{
|
||||
if (!dbObject.db){
|
||||
return;
|
||||
}
|
||||
var transaction = dbObject.db.transaction(dbObject.store_name, "readwrite");
|
||||
var store = transaction.objectStore(dbObject.store_name);
|
||||
var request = store.getAll();
|
||||
request.onsuccess = function(){
|
||||
if (success_callback){
|
||||
success_callback(request.result);
|
||||
}
|
||||
}
|
||||
request.onerror = function(event){
|
||||
console.log("获取IndexedDB记录失败:all");
|
||||
console.log(event);
|
||||
if (error_callback){
|
||||
error_callback();
|
||||
}
|
||||
}
|
||||
}
|
||||
catch(e){
|
||||
console.log(min_now() + "获取全部的IndexedDB失败");
|
||||
console.log(e);
|
||||
}
|
||||
}
|
||||
|
||||
//游标遍历
|
||||
dbObject.get_cursor = function(success_callback, error_callback){
|
||||
try{
|
||||
if (!dbObject.db){
|
||||
return;
|
||||
}
|
||||
var transaction = dbObject.db.transaction(dbObject.store_name, "readwrite");
|
||||
var store = transaction.objectStore(dbObject.store_name);
|
||||
var request = store.openCursor();
|
||||
|
||||
request.onsuccess = function(event){
|
||||
if (success_callback){
|
||||
success_callback(event.target.result);
|
||||
}
|
||||
}
|
||||
request.onerror = function(event){
|
||||
console.log("获取IndexedDB记录失败:游标");
|
||||
console.log(event);
|
||||
if (error_callback){
|
||||
error_callback();
|
||||
}
|
||||
}
|
||||
}
|
||||
catch(e){
|
||||
console.log(min_now() + "获取IndexedDB游标失败");
|
||||
console.log(e);
|
||||
}
|
||||
}
|
||||
|
||||
//清除整个对象存储(表)
|
||||
dbObject.clear = function(){
|
||||
try{
|
||||
if (!dbObject.db){
|
||||
return;
|
||||
}
|
||||
var transaction = dbObject.db.transaction(dbObject.store_name, "readwrite");
|
||||
var store = transaction.objectStore(dbObject.store_name);
|
||||
var request = store.clear();
|
||||
request.onsuccess = function(){
|
||||
console.log("清空IndexedDB对象存储成功:" + dbObject.store_name);
|
||||
}
|
||||
request.onerror = function(event){
|
||||
console.log("清空IndexedDB对象存储失败:" + dbObject.store_name);
|
||||
console.log(event);
|
||||
}
|
||||
}
|
||||
catch(e){
|
||||
console.log(min_now() + "清除IndexedDB失败");
|
||||
console.log(e);
|
||||
}
|
||||
}
|
||||
|
||||
window.dbObject = dbObject;
|
||||
})();
|
||||
731
codes/games/sales_service/minhttp.js
Normal file
731
codes/games/sales_service/minhttp.js
Normal file
@@ -0,0 +1,731 @@
|
||||
(function(wnd, undef){
|
||||
|
||||
//复制json对象
|
||||
function min_copyjson(json)
|
||||
{
|
||||
return JSON.parse(JSON.stringify(json));
|
||||
}
|
||||
|
||||
function min_clone(myObj){
|
||||
if(!myObj)
|
||||
return myObj;
|
||||
if(typeof(myObj) != 'object')
|
||||
return myObj;
|
||||
|
||||
var myNewObj = new Object();
|
||||
|
||||
for(var i in myObj)
|
||||
myNewObj[i] = min_clone(myObj[i]);
|
||||
|
||||
return myNewObj;
|
||||
}
|
||||
|
||||
//json对象转字符串
|
||||
function min_jsontostr(json) {
|
||||
return JSON.stringify(json);
|
||||
}
|
||||
|
||||
//字符串转json对象
|
||||
function min_strtojson(str) {
|
||||
return JSON.parse(str);
|
||||
}
|
||||
|
||||
//字符串转整型 def:转换失败时返回的默认值
|
||||
function min_strtoint(str, def) {
|
||||
var i = parseInt(str);
|
||||
if (i == 0) {
|
||||
return 0;
|
||||
};
|
||||
if (!i) { //=0也会进来
|
||||
if (!def) {
|
||||
def = 0;
|
||||
};
|
||||
i = def;
|
||||
}
|
||||
return i;
|
||||
};
|
||||
|
||||
//整型转字符串
|
||||
function min_inttostr(i) {
|
||||
return i.toString();
|
||||
};
|
||||
|
||||
//去左空格
|
||||
function min_ltrim(s){
|
||||
return s.replace(/(^\s*)/g, "");
|
||||
};
|
||||
|
||||
//去右空格;
|
||||
function min_rtrim(s){
|
||||
return s.replace(/(\s*$)/g, "");
|
||||
};
|
||||
|
||||
//去左右空格;
|
||||
function min_trim(s){
|
||||
return s.replace(/(^\s*)|(\s*$)/g, "");
|
||||
};
|
||||
|
||||
//整除
|
||||
function min_div(i, b)
|
||||
{
|
||||
if (!b) {
|
||||
return parseInt(i);
|
||||
}
|
||||
return parseInt(i / b);
|
||||
};
|
||||
|
||||
//取余数
|
||||
function min_mod(a, b){
|
||||
return a % b;
|
||||
};
|
||||
|
||||
//取绝对值
|
||||
function min_abs(b) {
|
||||
return Math.abs(b);
|
||||
};
|
||||
|
||||
//取随机数(范围包含了min和max)
|
||||
function min_random(min, max) {
|
||||
var Range = max - min;
|
||||
var Rand = Math.random();
|
||||
return (min + Math.round(Rand * Range));
|
||||
};
|
||||
//取随机数1
|
||||
function min_random1(num) {
|
||||
return parseInt(Math.random()*num);
|
||||
};
|
||||
|
||||
//随机字符串
|
||||
function min_randomChar(length){
|
||||
var x = "0123456789";
|
||||
var y = "qwertyuioplkjhgfdsazxcvbnm";
|
||||
var z = "QWERTYUIOPLKJHGFDSAZXCVBNM";
|
||||
var tmp = "";
|
||||
for (var i = 0; i < length; i++) {
|
||||
switch(min_random(0, 2)) {
|
||||
case 0:
|
||||
tmp += x.charAt(Math.ceil(Math.random()*100000000)%x.length);
|
||||
break;
|
||||
case 1:
|
||||
tmp += y.charAt(Math.ceil(Math.random()*100000000)%y.length);
|
||||
break;
|
||||
case 2:
|
||||
tmp += z.charAt(Math.ceil(Math.random()*100000000)%z.length);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
// var timestamp = new Date().getTime();
|
||||
// return timestamp + tmp;
|
||||
return tmp;
|
||||
}
|
||||
|
||||
//取长度
|
||||
function min_length(key) {
|
||||
if (typeof(key) != "string") {
|
||||
var key = key + "";
|
||||
}
|
||||
return key.length;
|
||||
}
|
||||
|
||||
//字符全替换 ignoreCase:true忽略大小写 false不忽略大小写
|
||||
function min_replaceAll(str, str_old, str_new, ignoreCase)
|
||||
{
|
||||
if (!RegExp.prototype.isPrototypeOf(str_old)) {
|
||||
return str.replace(new RegExp(str_old, (ignoreCase ? "gi": "g")), str_new);
|
||||
} else {
|
||||
return str.replace(str_old, str_new);
|
||||
}
|
||||
}
|
||||
|
||||
//取本地当前时间,格式yyyy-MM-dd HH:MM:SS
|
||||
function min_now()
|
||||
{
|
||||
var date = new Date();
|
||||
var seperator1 = "-";
|
||||
var seperator2 = ":";
|
||||
var month = date.getMonth() + 1;
|
||||
var strDate = date.getDate();
|
||||
if (month >= 1 && month <= 9) {
|
||||
month = "0" + month;
|
||||
}
|
||||
if (strDate >= 0 && strDate <= 9) {
|
||||
strDate = "0" + strDate;
|
||||
}
|
||||
var currentdate = date.getFullYear() + seperator1 + month + seperator1 + strDate
|
||||
+ " " + date.getHours() + seperator2 + date.getMinutes()
|
||||
+ seperator2 + date.getSeconds();
|
||||
return currentdate;
|
||||
}
|
||||
|
||||
//取本地当前日期,格式yyyy-MM-dd
|
||||
function min_day()
|
||||
{
|
||||
var date = new Date();
|
||||
var seperator1 = "-";
|
||||
var month = date.getMonth() + 1;
|
||||
var strDate = date.getDate();
|
||||
if (month >= 1 && month <= 9) {
|
||||
month = "0" + month;
|
||||
}
|
||||
if (strDate >= 0 && strDate <= 9) {
|
||||
strDate = "0" + strDate;
|
||||
}
|
||||
var currentdate = date.getFullYear() + seperator1 + month + seperator1 + strDate;
|
||||
return currentdate;
|
||||
}
|
||||
|
||||
//获取时间差
|
||||
function min_datediff(startTime, endTime, diffType) {
|
||||
//将xxxx-xx-xx的时间格式,转换为 xxxx/xx/xx的格式
|
||||
startTime = startTime.replace(/\-/g, "/");
|
||||
endTime = endTime.replace(/\-/g, "/");
|
||||
|
||||
//将计算间隔类性字符转换为小写
|
||||
diffType = diffType.toLowerCase();
|
||||
var sTime = new Date(startTime); //开始时间
|
||||
var eTime = new Date(endTime); //结束时间
|
||||
//作为除数的数字
|
||||
var divNum = 1;
|
||||
switch (diffType) {
|
||||
case "second":
|
||||
divNum = 1000;
|
||||
break;
|
||||
case "minute":
|
||||
divNum = 1000 * 60;
|
||||
break;
|
||||
case "hour":
|
||||
divNum = 1000 * 3600;
|
||||
break;
|
||||
case "day":
|
||||
divNum = 1000 * 3600 * 24;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
return parseInt((eTime.getTime() - sTime.getTime()) / parseInt(divNum));
|
||||
}
|
||||
|
||||
//本地存储数据
|
||||
function min_writefile_gameid(msg, gameid, fileid) {
|
||||
localStorage.setItem("file_" + gameid + "_" + fileid, msg);
|
||||
}
|
||||
|
||||
//读取本地数据
|
||||
function min_readfile_gameid(gameid, fileid) {
|
||||
return localStorage.getItem("file_" + gameid + "_" + fileid);
|
||||
}
|
||||
|
||||
//取当前页面url中的参数值 def:没取到时返回的默认值
|
||||
function min_getQueryString(name, def) {
|
||||
var self = window;
|
||||
var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)");
|
||||
var r = self.location.search.substr(1).match(reg);
|
||||
if (r != null) {
|
||||
return unescape(r[2])
|
||||
} else {
|
||||
if (def) {
|
||||
return def;
|
||||
} else {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//获取当前页面的路径
|
||||
function min_getUrlRootPath() {
|
||||
var curWwwPath = window.location.host;
|
||||
var pathName = window.location.pathname;
|
||||
return curWwwPath + pathName.substr(0,pathName.lastIndexOf('/'));
|
||||
}
|
||||
|
||||
//设置cookie
|
||||
function min_setCookie(name, value, exp_minute) {
|
||||
if (!exp_minute) {
|
||||
exp_minute = 20; //默认时效20分钟
|
||||
}
|
||||
var exp = new Date();
|
||||
exp.setTime(exp.getTime() + exp_minute*60*1000);
|
||||
document.cookie = name + "=" + value + ";expires=" + exp.toGMTString()+';path=/';
|
||||
}
|
||||
|
||||
//读取cookie
|
||||
function min_getCookie(name) {
|
||||
var arr = document.cookie.match(new RegExp("(^| )"+name+"=([^;]*)(;|$)"));
|
||||
if(arr != null)
|
||||
return arr[2];
|
||||
return null;
|
||||
}
|
||||
|
||||
//删除cookie
|
||||
function min_delCookie(name) {
|
||||
var value = min_getCookie(name);
|
||||
if (value) {
|
||||
min_setCookie(name, value, 0);
|
||||
}
|
||||
}
|
||||
|
||||
//获取一个dom
|
||||
function min_getdom(id)
|
||||
{
|
||||
return document.getElementById(id);
|
||||
};
|
||||
|
||||
//设置一个dom属性值 id:dom、或dom的id、或实列,key:属性,val:值
|
||||
function min_setdom(id, key, val) {
|
||||
var obj;
|
||||
if (typeof(id) == 'string') {
|
||||
obj = min_getdom(id);
|
||||
}
|
||||
else {
|
||||
obj = id;
|
||||
}
|
||||
obj.setAttribute(key, val);
|
||||
}
|
||||
|
||||
//添加一段innerHTML
|
||||
function min_uphtml(id, str, isadd) {
|
||||
/*
|
||||
setAttribute是设置网页元素的属性,就是在标签里内如<img />标签的src属性。
|
||||
innerHTML不是属性,只是JS里内代表一个双标记中间的文本,如:<span> </span>中间的字符。
|
||||
*/
|
||||
var obj = window.document.getElementById(id);
|
||||
if (isadd) {
|
||||
obj.innerHTML = obj.innerHTML + str;
|
||||
}
|
||||
else {
|
||||
obj.innerHTML = str;
|
||||
}
|
||||
}
|
||||
|
||||
//新建一个定时器每隔time毫秒执行一次func函数,函数返回定时器id
|
||||
function min_ontime(func, time)
|
||||
{
|
||||
return setInterval(func, time);
|
||||
}
|
||||
|
||||
//新建一个定时器time毫秒后执行一次func函数(只执行一次),函数返回定时器id
|
||||
function min_ontimeout(func, time)
|
||||
{
|
||||
return setTimeout(func, time);
|
||||
}
|
||||
|
||||
//关闭定时器id为timerid的定时器
|
||||
function min_closetime(timerid)
|
||||
{
|
||||
return clearTimeout(timerid);
|
||||
}
|
||||
|
||||
//encode转码
|
||||
function min_encode(s)
|
||||
{
|
||||
return encodeURIComponent(s);
|
||||
}
|
||||
|
||||
//decode解码
|
||||
function min_decode(s)
|
||||
{
|
||||
return decodeURIComponent(s);
|
||||
}
|
||||
|
||||
//新建一个tcp连接
|
||||
function min_tcp(config)
|
||||
{
|
||||
var ws = new WebSocket("ws://" + config.ipport); //不要带htpp,例如127.0.0.1:5414
|
||||
|
||||
//连接上服务器后触发的事件
|
||||
if (config.onopen) {
|
||||
ws.onopen = config.onopen;
|
||||
};
|
||||
|
||||
//收到服务器发来的数据包后触发的事件,onmessage函数会有一个底层的msg参数,其中msg.data才是服务器发过来的业务数据
|
||||
if (config.onmessage) {
|
||||
ws.onmessage = config.onmessage;
|
||||
};
|
||||
|
||||
//断开与服务器的连接后触发的事件
|
||||
if (config.onclose) {
|
||||
ws.onclose = config.onclose; //断开连接的事件
|
||||
};
|
||||
|
||||
//错误事件
|
||||
if (config.onerror) {
|
||||
ws.onerror = config.onerror; //错误事件
|
||||
};
|
||||
|
||||
return ws;
|
||||
}
|
||||
|
||||
//http请求
|
||||
function min_http(config) {
|
||||
/*
|
||||
config =
|
||||
{
|
||||
url: "http://127.0.0.1:5414/index.html",
|
||||
type: "POST", //GET or POST 方法
|
||||
data: "", //请求的数据
|
||||
success: func_callback_succ, //请求成功后的回调函数function(data,status,callbackdata)
|
||||
error: func_callback_err, //请求失败后的回调函数function(data,status)
|
||||
callbackdata: "", //作为回调函数第三个参数带入回调函数的数据
|
||||
//enurl: 0, //是否encodeURIComponent转码, 默认0不转码
|
||||
//deurl: 0, //是否decodeURIComponent解码,默认0不解码
|
||||
debugLog: false, //是否输出debug日志,默认false
|
||||
method: "(OPTIONAL) True for async and False for Non-async | By default its Async"
|
||||
}
|
||||
*/
|
||||
if (!config.debugLog) {
|
||||
config.debugLog = false;
|
||||
}
|
||||
if (!config.enurl) {
|
||||
config.enurl = 0;
|
||||
}
|
||||
if (!config.deurl) {
|
||||
config.deurl = 0;
|
||||
}
|
||||
if (!config.method) {
|
||||
config.method = true;
|
||||
}
|
||||
|
||||
if (!config.url) {
|
||||
if (config.debugLog == true) {
|
||||
console.log("No Url!");
|
||||
}
|
||||
return;
|
||||
};
|
||||
|
||||
if (!config.type) {
|
||||
if (config.debugLog == true) {
|
||||
console.log("No Default type (GET/POST) given!");
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
var xmlhttp = initXMLhttp();
|
||||
|
||||
xmlhttp.onreadystatechange = function() {
|
||||
if (xmlhttp.readyState == 4 && xmlhttp.status == 200 && config.success)
|
||||
{
|
||||
var responseText = mydecodeURIComponent(xmlhttp.responseText, config.deurl);
|
||||
if (!config.callbackdata) {
|
||||
config.success(responseText, xmlhttp.readyState);
|
||||
}
|
||||
else {
|
||||
config.success(responseText, xmlhttp.readyState, config.callbackdata);
|
||||
}
|
||||
if (config.debugLog == true) {
|
||||
console.log("SuccessResponse");
|
||||
}
|
||||
if (config.debugLog == true) {
|
||||
console.log("Response Data:" + xmlhttp.responseText);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (xmlhttp.readyState == 4 && config.error)
|
||||
{
|
||||
if (!config.callbackdata) {
|
||||
config.error(xmlhttp.readyState, xmlhttp.status);
|
||||
}
|
||||
else {
|
||||
config.error(xmlhttp.readyState, xmlhttp.status, config.callbackdata);
|
||||
}
|
||||
}
|
||||
if (config.debugLog == true) {
|
||||
console.log("FailureResponse --> readyState:" + xmlhttp.readyState + ", Status:" + xmlhttp.status);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
var sendString = [],
|
||||
sendData = config.data;
|
||||
if (typeof sendData === "string") {
|
||||
var tmpArr = String.prototype.split.call(sendData, '&');
|
||||
for (var i = 0, j = tmpArr.length; i < j; i++) {
|
||||
var datum = tmpArr[i].split('=');
|
||||
if (datum[1]) {
|
||||
sendString.push(myencodeURIComponent(datum[0], config.enurl) + "=" + myencodeURIComponent(datum[1], config.enurl));
|
||||
}
|
||||
else {
|
||||
sendString.push(myencodeURIComponent(datum[0], config.enurl));
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (typeof sendData === 'object' && !(sendData instanceof String || (FormData && sendData instanceof FormData))) {
|
||||
for (var k in sendData) {
|
||||
var datum = sendData[k];
|
||||
if (Object.prototype.toString.call(datum) == "[object Array]") {
|
||||
for (var i = 0, j = datum.length; i < j; i++) {
|
||||
sendString.push(myencodeURIComponent(k, config.enurl) + "[]=" + myencodeURIComponent(datum[i], config.enurl));
|
||||
}
|
||||
}
|
||||
else {
|
||||
sendString.push(myencodeURIComponent(k, config.enurl) + "=" + myencodeURIComponent(datum, config.enurl));
|
||||
}
|
||||
}
|
||||
}
|
||||
sendString = sendString.join('&');
|
||||
|
||||
if (config.type == "GET") {
|
||||
var g;
|
||||
var i = config.url.lastIndexOf("?");
|
||||
if (i > 8) {
|
||||
g = "&";
|
||||
} else {
|
||||
g = "?";
|
||||
}
|
||||
var ddata = new Date().getMilliseconds();
|
||||
if (sendString == "") {
|
||||
sendString = '#dfw1977=' + (ddata + min_random(1, 99999) * 1000);
|
||||
} else {
|
||||
sendString = sendString + '#dfw1977=' + (ddata + min_random(1, 99999) * 1000);
|
||||
}
|
||||
xmlhttp.open("GET", config.url + g + sendString, config.method);
|
||||
xmlhttp.send();
|
||||
|
||||
if (config.debugLog == true) {
|
||||
console.log("GET fired at:" + config.url + "?" + sendString);
|
||||
}
|
||||
}
|
||||
if (config.type == "POST") {
|
||||
xmlhttp.open("POST", config.url, config.method);
|
||||
xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
|
||||
xmlhttp.send(sendString);
|
||||
|
||||
if (config.debugLog == true) {
|
||||
console.log("POST fired at:" + config.url + " || Data:" + sendString);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function initXMLhttp() {
|
||||
var xmlhttp;
|
||||
if (window.XMLHttpRequest) {
|
||||
//code for IE7,firefox chrome and above
|
||||
xmlhttp = new XMLHttpRequest();
|
||||
} else {
|
||||
//code for Internet Explorer
|
||||
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
|
||||
}
|
||||
return xmlhttp;
|
||||
}
|
||||
|
||||
//转码
|
||||
function myencodeURIComponent(s, ifif)
|
||||
{
|
||||
if (ifif == 1) {
|
||||
return min_encode(s);
|
||||
} else {
|
||||
return s;
|
||||
}
|
||||
}
|
||||
|
||||
//解码
|
||||
function mydecodeURIComponent(s, ifif)
|
||||
{
|
||||
if (ifif == 1) {
|
||||
return min_decode(s);
|
||||
} else {
|
||||
return s;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
//在数组中根据元素值查找下标
|
||||
function min_ary_indexof(array1, val, name)
|
||||
{
|
||||
for (var i = 0; i < array1.length; i++)
|
||||
{
|
||||
if (!name)
|
||||
{
|
||||
if (array1[i] == val)
|
||||
return i;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (array1[i][name] == val)
|
||||
return i;
|
||||
}
|
||||
}
|
||||
return -1;
|
||||
};
|
||||
|
||||
//在数组中根据值删除元素
|
||||
function min_ary_delval(array1, val, name)
|
||||
{
|
||||
var index = min_ary_indexof(array1, val, name);
|
||||
if (index > -1)
|
||||
{
|
||||
array1.splice(index, 1);
|
||||
}
|
||||
};
|
||||
|
||||
//在数组中根据下标删除诺干个元素
|
||||
function min_ary_delfromto(array1, from, to)
|
||||
{
|
||||
var rest = array1.slice((to || from) + 1 || array1.length);
|
||||
array1.length = from < 0 ? array1.length + from : from;
|
||||
array1.push.apply(array1, rest);
|
||||
};
|
||||
|
||||
//在数组中删除某一对象元素
|
||||
function min_ary_delobj(array1, object)
|
||||
{
|
||||
for (var i = 0; i < array1.length; ++i)
|
||||
{
|
||||
if (array1[i] === object)
|
||||
{
|
||||
array1.splice(i, 1);
|
||||
break;
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
//数组包含
|
||||
function min_ary_include(aryparent, arychild){
|
||||
for (var i = 0; i < arychild.length; i++) {
|
||||
var found = false;
|
||||
for (var j = 0; j < aryparent.length; j++) {
|
||||
if (aryparent[j] == arychild[i]){
|
||||
found = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (!found){
|
||||
return false;
|
||||
}
|
||||
}
|
||||
return true;
|
||||
};
|
||||
|
||||
//数组相减
|
||||
function min_ary_deduct(aryparent, arychild){
|
||||
var re = [];
|
||||
for (var i = 0; i < aryparent.length; i++){
|
||||
var found = false;
|
||||
for (var j = 0; j < arychild.length; j++){
|
||||
if (aryparent[i] == arychild[j]){
|
||||
found = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (!found){
|
||||
re.push(aryparent[i])
|
||||
}
|
||||
}
|
||||
return re;
|
||||
};
|
||||
|
||||
//是否存在指定函数
|
||||
function min_ExitsFunction(funcName)
|
||||
{
|
||||
try
|
||||
{
|
||||
if (typeof(eval(funcName)) == "function")
|
||||
{
|
||||
return true;
|
||||
}
|
||||
}
|
||||
catch(e)
|
||||
{}
|
||||
return false;
|
||||
}
|
||||
|
||||
//(按顺序)加载js文件
|
||||
function min_loadJsFile(str_jsfile, func_succ, NoRandomFlag)
|
||||
{
|
||||
var domScript = document.createElement('script');
|
||||
if (!NoRandomFlag)
|
||||
{
|
||||
// str_jsfile = str_jsfile + '?' + Math.random() * 10000;
|
||||
// str_jsfile = str_jsfile + '?' + min_random(1, 10000000);
|
||||
str_jsfile = str_jsfile + '?' + min_timestamp();
|
||||
}
|
||||
domScript.src = str_jsfile;
|
||||
func_succ = func_succ || function(){};
|
||||
domScript.onload = domScript.onreadystatechange = function() {
|
||||
if (!this.readyState || 'loaded' === this.readyState || 'complete' === this.readyState) {
|
||||
func_succ();
|
||||
this.onload = this.onreadystatechange = null;
|
||||
this.parentNode.removeChild(this);
|
||||
}
|
||||
}
|
||||
document.getElementsByTagName('head')[0].appendChild(domScript);
|
||||
}
|
||||
|
||||
//生成一个GUID
|
||||
function min_guid()
|
||||
{
|
||||
return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function(c) {
|
||||
var r = Math.random()*16|0, v = c == 'x' ? r : (r&0x3|0x8);
|
||||
return v.toString(16);});
|
||||
}
|
||||
|
||||
//获取时间戳
|
||||
function min_timestamp()
|
||||
{
|
||||
return new Date().getTime();
|
||||
}
|
||||
|
||||
wnd.min_copyjson = min_copyjson; //复制json对象
|
||||
wnd.min_clone = min_clone;
|
||||
wnd.min_jsontostr = min_jsontostr; //json转字符串
|
||||
wnd.min_strtojson = min_strtojson; //字符串转json
|
||||
wnd.min_inttostr = min_inttostr; //整型转字符型
|
||||
wnd.min_strtoint = min_strtoint; //字符型转整型
|
||||
|
||||
wnd.min_ltrim = min_ltrim; //去左空格
|
||||
wnd.min_rtrim = min_rtrim; //去右空格
|
||||
wnd.min_trim = min_trim; //去左右空格
|
||||
|
||||
wnd.min_div = min_div; //整除
|
||||
wnd.min_mod = min_mod; //取余数
|
||||
wnd.min_abs = min_abs; //取绝对值
|
||||
wnd.min_random = min_random; //取随机数
|
||||
wnd.min_random1 = min_random1; //取随机数1
|
||||
wnd.min_randomChar = min_randomChar; //随机字符串
|
||||
wnd.min_length = min_length; //取长度
|
||||
wnd.min_replaceAll = min_replaceAll; //字符全替换
|
||||
|
||||
wnd.min_now = min_now; //取本地当前时间
|
||||
wnd.min_day = min_day; //取本地当前日期
|
||||
wnd.min_datediff = min_datediff; //获取时间差
|
||||
wnd.min_guid = min_guid; //生成一个GUID
|
||||
|
||||
wnd.min_getQueryString = min_getQueryString; //取当前页面url中的参数值
|
||||
wnd.min_getUrlRootPath = min_getUrlRootPath; //获取当前页面的路径
|
||||
|
||||
wnd.min_setCookie = min_setCookie; //设置cookie
|
||||
wnd.min_getCookie = min_getCookie; //读取cookie
|
||||
wnd.min_delCookie = min_delCookie; //删除cookie
|
||||
|
||||
wnd.min_getdom = min_getdom; //获取一个dom
|
||||
wnd.min_setdom = min_setdom; //设置一个dom属性值
|
||||
wnd.min_uphtml = min_uphtml; //添加一段innerHTML
|
||||
|
||||
wnd.min_ontime = min_ontime; //新建一个周期性的定时器
|
||||
wnd.min_ontimeout = min_ontimeout; //新建一个一次性的定时器
|
||||
wnd.min_closetime = min_closetime; //关闭定时器
|
||||
|
||||
wnd.min_writefile_gameid = min_writefile_gameid; //本地存储数据
|
||||
wnd.min_readfile_gameid = min_readfile_gameid; //读取本地数据
|
||||
|
||||
wnd.min_encode = min_encode; //encodeURIComponent转码
|
||||
wnd.min_decode = min_decode; //decodeURIComponent解码
|
||||
|
||||
wnd.min_tcp = min_tcp; //新建一个tcp连接
|
||||
wnd.min_http = min_http; //http请求
|
||||
|
||||
wnd.min_ary_indexof = min_ary_indexof; //在数组中根据元素值查找下标
|
||||
wnd.min_ary_delval = min_ary_delval; //在数组中根据值删除元素
|
||||
wnd.min_ary_delfromto = min_ary_delfromto; //在数组中根据下标删除诺干个元素
|
||||
wnd.min_ary_delobj = min_ary_delobj; //在数组中删除某一对象元素
|
||||
wnd.min_ary_include = min_ary_include; //数组包含
|
||||
wnd.min_ary_deduct = min_ary_deduct; //数组相减
|
||||
|
||||
wnd.min_ExitsFunction = min_ExitsFunction; //是否存在函数
|
||||
wnd.min_loadJsFile = min_loadJsFile; //加载js文件
|
||||
|
||||
wnd.min_guid = min_guid; //生成一个GUID
|
||||
wnd.min_timestamp = min_timestamp; //获取时间戳
|
||||
})(window);
|
||||
147
codes/games/sales_service/mysql.php
Normal file
147
codes/games/sales_service/mysql.php
Normal file
@@ -0,0 +1,147 @@
|
||||
<?php
|
||||
header("Access-Control-Allow-Origin: *");
|
||||
header("Access-Control-Allow-Methods: GET, POST, OPTIONS, PUT, PATCH, DELETE");
|
||||
header("Access-Control-Allow-Headers: Content-Type, Authorization, Content-Length, X-Requested-With");
|
||||
header("Access-Control-Allow-Credentials: true");
|
||||
header("Content-Type: textml; charset=utf-8");
|
||||
|
||||
///////////////////////////// 全局常量 /////////////////////////////
|
||||
//mysql数据库连接
|
||||
$G_MySql = array(
|
||||
"host" => "rm-bp1x3i28se22s9z75.mysql.rds.aliyuncs.com",
|
||||
"name" => "game_db",
|
||||
"user" => "games",
|
||||
"pwd" => "Games2017@)!&",
|
||||
"port" => "3306"
|
||||
|
||||
// "host" => "localhost",
|
||||
// // "host" => "120.25.60.74",
|
||||
// "name" => "youle_games",
|
||||
// "user" => "root",
|
||||
// "pwd" => "root",
|
||||
// "port" => "3333"
|
||||
);
|
||||
|
||||
//错误编码及提示
|
||||
$G_Error = array(
|
||||
"condb" => array("code" => 81, "msg" => "连接数据库失败"),
|
||||
"execsql" => array("code" => 82, "msg" => "操作数据库失败"),
|
||||
"d_wrong" => array("code" => 83, "msg" => "data参数错误"),
|
||||
"m_wrong" => array("code" => 84, "msg" => "m参数错误"),
|
||||
"s_wrong" => array("code" => 85, "msg" => "s参数错误"),
|
||||
"p_wrong" => array("code" => 86, "msg" => "p参数错误")
|
||||
);
|
||||
|
||||
///////////////////////////// 全局变量 /////////////////////////////
|
||||
//接口函数返回的json对象
|
||||
$G_Result = array(
|
||||
"state" => 0, //0:成功 <>0:错误编码
|
||||
"error" => "", //错误时的描述
|
||||
"param" => "", //接收的参数
|
||||
"data" => array() //成功时的数据
|
||||
);
|
||||
|
||||
//返回结果$G_G_Result
|
||||
function do_return(){
|
||||
global $G_Result;
|
||||
// if (count($G_Result["data"]) == 0) {
|
||||
// $G_Result["data"] = new stdClass;
|
||||
// }
|
||||
echo json_encode($G_Result);
|
||||
exit();
|
||||
}
|
||||
|
||||
////////////////////////// 连接MYSQL数据库 /////////////////////////
|
||||
$PDO = null;
|
||||
try
|
||||
{
|
||||
$PDO = new PDO("mysql:host=".$G_MySql["host"].";port=".$G_MySql["port"].";dbname=".$G_MySql["name"], $G_MySql["user"], $G_MySql["pwd"]);
|
||||
$PDO->exec("set names utf8;");
|
||||
$PDO->exec("use ".$G_MySql["name"].";");
|
||||
}
|
||||
catch (Exception $e)
|
||||
{
|
||||
$G_Result['state'] = $G_Error["condb"]["code"];
|
||||
$G_Result['error'] = $G_Error["condb"]["msg"];
|
||||
do_return();
|
||||
}
|
||||
|
||||
//////////////////////////// 读取参数 ////////////////////////////
|
||||
//读取data参数
|
||||
$str_data = GetRequest("data");
|
||||
// $str_data = stripslashes($str_data); //解决表单POST传参数时,自动加转义字符的问题
|
||||
$str_data = str_replace("^","=",$str_data);
|
||||
$G_Result['param'] = $str_data;
|
||||
|
||||
//检查data是否为空
|
||||
if ($str_data == "") {
|
||||
$G_Result['state'] = $G_Error["d_wrong"]["code"];
|
||||
$G_Result['error'] = $G_Error["d_wrong"]["msg"];
|
||||
do_return();
|
||||
}
|
||||
|
||||
//检查data是否能转成json
|
||||
$json_para = json_decode($str_data);
|
||||
if ($json_para == null) {
|
||||
$G_Result['state'] = $G_Error["d_wrong"]["code"];
|
||||
$G_Result['error'] = $G_Error["d_wrong"]["msg"];
|
||||
do_return();
|
||||
}
|
||||
|
||||
$m = $json_para->m;
|
||||
$s = $json_para->s;
|
||||
$p = $json_para->p;
|
||||
|
||||
//检查m值
|
||||
if (($m == null) || ($m == "") || (!function_exists($m))) {
|
||||
$G_Result['state'] = $G_Error["m_wrong"]["code"];
|
||||
$G_Result['error'] = $G_Error["m_wrong"]["msg"];
|
||||
do_return();
|
||||
}
|
||||
//检查s值
|
||||
if (($s == null) || ($s == "")) {
|
||||
$G_Result['state'] = $G_Error["s_wrong"]["code"];
|
||||
$G_Result['error'] = $G_Error["s_wrong"]["msg"];
|
||||
do_return();
|
||||
}
|
||||
//检查p值
|
||||
if (($p != null) && (!is_array($p))) {
|
||||
$G_Result['state'] = $G_Error["p_wrong"]["code"];
|
||||
$G_Result['error'] = $G_Error["p_wrong"]["msg"];
|
||||
do_return();
|
||||
}
|
||||
|
||||
$m($s, $p);
|
||||
do_return();
|
||||
|
||||
//根据参数名获取参数
|
||||
function GetRequest($name) {
|
||||
return isset($_REQUEST[$name])?$_REQUEST[$name]:'';
|
||||
}
|
||||
|
||||
//执行sql语句返回结果
|
||||
function opensql($sql, $para) {
|
||||
global $G_Result, $G_Error, $PDO;
|
||||
$stmt = $PDO->prepare($sql.";");
|
||||
if ($stmt->execute($para))
|
||||
{
|
||||
while ($aryData = $stmt->fetch(PDO::FETCH_NAMED)) {
|
||||
$G_Result["data"][] = $aryData;
|
||||
}
|
||||
} else {
|
||||
$G_Result['state'] = $G_Error["execsql"]["code"];
|
||||
$G_Result['error'] = $G_Error["execsql"]["msg"];
|
||||
}
|
||||
}
|
||||
|
||||
//执行sql语句无返回结果
|
||||
function execsql($sql, $para){
|
||||
global $G_Result, $G_Error, $PDO;
|
||||
$stmt = $PDO->prepare($sql.";");
|
||||
if ($stmt->execute($para))
|
||||
{} else {
|
||||
$G_Result['state'] = $G_Error["execsql"]["code"];
|
||||
$G_Result['error'] = $G_Error["execsql"]["msg"];
|
||||
}
|
||||
}
|
||||
?>
|
||||
147
codes/games/sales_service/mysql_agent.php
Normal file
147
codes/games/sales_service/mysql_agent.php
Normal file
@@ -0,0 +1,147 @@
|
||||
<?php
|
||||
header("Access-Control-Allow-Origin: *");
|
||||
header("Access-Control-Allow-Methods: GET, POST, OPTIONS, PUT, PATCH, DELETE");
|
||||
header("Access-Control-Allow-Headers: Content-Type, Authorization, Content-Length, X-Requested-With");
|
||||
header("Access-Control-Allow-Credentials: true");
|
||||
header("Content-Type: textml; charset=utf-8");
|
||||
|
||||
///////////////////////////// 全局常量 /////////////////////////////
|
||||
//mysql数据库连接
|
||||
$G_MySql = array(
|
||||
"host" => "rm-wz978o3vha6z26m5no.mysql.rds.aliyuncs.com",
|
||||
"name" => "game_db",
|
||||
"user" => "game_user",
|
||||
"pwd" => "Game_User",
|
||||
"port" => "3306"
|
||||
|
||||
// "host" => "localhost",
|
||||
// // "host" => "120.92.140.132",
|
||||
// "name" => "game_db",
|
||||
// "user" => "root",
|
||||
// "pwd" => "root_root",
|
||||
// "port" => "3309"
|
||||
);
|
||||
|
||||
//错误编码及提示
|
||||
$G_Error = array(
|
||||
"condb" => array("code" => 81, "msg" => "连接数据库失败"),
|
||||
"execsql" => array("code" => 82, "msg" => "操作数据库失败"),
|
||||
"d_wrong" => array("code" => 83, "msg" => "data参数错误"),
|
||||
"m_wrong" => array("code" => 84, "msg" => "m参数错误"),
|
||||
"s_wrong" => array("code" => 85, "msg" => "s参数错误"),
|
||||
"p_wrong" => array("code" => 86, "msg" => "p参数错误")
|
||||
);
|
||||
|
||||
///////////////////////////// 全局变量 /////////////////////////////
|
||||
//接口函数返回的json对象
|
||||
$G_Result = array(
|
||||
"state" => 0, //0:成功 <>0:错误编码
|
||||
"error" => "", //错误时的描述
|
||||
"param" => "", //接收的参数
|
||||
"data" => array() //成功时的数据
|
||||
);
|
||||
|
||||
//返回结果$G_G_Result
|
||||
function do_return(){
|
||||
global $G_Result;
|
||||
// if (count($G_Result["data"]) == 0) {
|
||||
// $G_Result["data"] = new stdClass;
|
||||
// }
|
||||
echo json_encode($G_Result);
|
||||
exit();
|
||||
}
|
||||
|
||||
////////////////////////// 连接MYSQL数据库 /////////////////////////
|
||||
$PDO = null;
|
||||
try
|
||||
{
|
||||
$PDO = new PDO("mysql:host=".$G_MySql["host"].";port=".$G_MySql["port"].";dbname=".$G_MySql["name"], $G_MySql["user"], $G_MySql["pwd"]);
|
||||
$PDO->exec("set names utf8;");
|
||||
$PDO->exec("use ".$G_MySql["name"].";");
|
||||
}
|
||||
catch (Exception $e)
|
||||
{
|
||||
$G_Result['state'] = $G_Error["condb"]["code"];
|
||||
$G_Result['error'] = $G_Error["condb"]["msg"];
|
||||
do_return();
|
||||
}
|
||||
|
||||
//////////////////////////// 读取参数 ////////////////////////////
|
||||
//读取data参数
|
||||
$str_data = GetRequest("data");
|
||||
// $str_data = stripslashes($str_data); //解决表单POST传参数时,自动加转义字符的问题
|
||||
$str_data = str_replace("^","=",$str_data);
|
||||
$G_Result['param'] = $str_data;
|
||||
|
||||
//检查data是否为空
|
||||
if ($str_data == "") {
|
||||
$G_Result['state'] = $G_Error["d_wrong"]["code"];
|
||||
$G_Result['error'] = $G_Error["d_wrong"]["msg"];
|
||||
do_return();
|
||||
}
|
||||
|
||||
//检查data是否能转成json
|
||||
$json_para = json_decode($str_data);
|
||||
if ($json_para == null) {
|
||||
$G_Result['state'] = $G_Error["d_wrong"]["code"];
|
||||
$G_Result['error'] = $G_Error["d_wrong"]["msg"];
|
||||
do_return();
|
||||
}
|
||||
|
||||
$m = $json_para->m;
|
||||
$s = $json_para->s;
|
||||
$p = $json_para->p;
|
||||
|
||||
//检查m值
|
||||
if (($m == null) || ($m == "") || (!function_exists($m))) {
|
||||
$G_Result['state'] = $G_Error["m_wrong"]["code"];
|
||||
$G_Result['error'] = $G_Error["m_wrong"]["msg"];
|
||||
do_return();
|
||||
}
|
||||
//检查s值
|
||||
if (($s == null) || ($s == "")) {
|
||||
$G_Result['state'] = $G_Error["s_wrong"]["code"];
|
||||
$G_Result['error'] = $G_Error["s_wrong"]["msg"];
|
||||
do_return();
|
||||
}
|
||||
//检查p值
|
||||
if (($p != null) && (!is_array($p))) {
|
||||
$G_Result['state'] = $G_Error["p_wrong"]["code"];
|
||||
$G_Result['error'] = $G_Error["p_wrong"]["msg"];
|
||||
do_return();
|
||||
}
|
||||
|
||||
$m($s, $p);
|
||||
do_return();
|
||||
|
||||
//根据参数名获取参数
|
||||
function GetRequest($name) {
|
||||
return isset($_REQUEST[$name])?$_REQUEST[$name]:'';
|
||||
}
|
||||
|
||||
//执行sql语句返回结果
|
||||
function opensql($sql, $para) {
|
||||
global $G_Result, $G_Error, $PDO;
|
||||
$stmt = $PDO->prepare($sql.";");
|
||||
if ($stmt->execute($para))
|
||||
{
|
||||
while ($aryData = $stmt->fetch(PDO::FETCH_NAMED)) {
|
||||
$G_Result["data"][] = $aryData;
|
||||
}
|
||||
} else {
|
||||
$G_Result['state'] = $G_Error["execsql"]["code"];
|
||||
$G_Result['error'] = $G_Error["execsql"]["msg"];
|
||||
}
|
||||
}
|
||||
|
||||
//执行sql语句无返回结果
|
||||
function execsql($sql, $para){
|
||||
global $G_Result, $G_Error, $PDO;
|
||||
$stmt = $PDO->prepare($sql.";");
|
||||
if ($stmt->execute($para))
|
||||
{} else {
|
||||
$G_Result['state'] = $G_Error["execsql"]["code"];
|
||||
$G_Result['error'] = $G_Error["execsql"]["msg"];
|
||||
}
|
||||
}
|
||||
?>
|
||||
147
codes/games/sales_service/mysql_grade.php
Normal file
147
codes/games/sales_service/mysql_grade.php
Normal file
@@ -0,0 +1,147 @@
|
||||
<?php
|
||||
header("Access-Control-Allow-Origin: *");
|
||||
header("Access-Control-Allow-Methods: GET, POST, OPTIONS, PUT, PATCH, DELETE");
|
||||
header("Access-Control-Allow-Headers: Content-Type, Authorization, Content-Length, X-Requested-With");
|
||||
header("Access-Control-Allow-Credentials: true");
|
||||
header("Content-Type: textml; charset=utf-8");
|
||||
|
||||
///////////////////////////// 全局常量 /////////////////////////////
|
||||
//mysql数据库连接
|
||||
$G_MySql = array(
|
||||
"host" => "rm-bp117l606l220e69e.mysql.rds.aliyuncs.com",
|
||||
"name" => "game_db",
|
||||
"user" => "games",
|
||||
"pwd" => "Games2017@)!&",
|
||||
"port" => "3306"
|
||||
|
||||
// "host" => "localhost",
|
||||
// // "host" => "120.25.60.74",
|
||||
// "name" => "youle_games",
|
||||
// "user" => "root",
|
||||
// "pwd" => "root",
|
||||
// "port" => "3333"
|
||||
);
|
||||
|
||||
//错误编码及提示
|
||||
$G_Error = array(
|
||||
"condb" => array("code" => 81, "msg" => "连接数据库失败"),
|
||||
"execsql" => array("code" => 82, "msg" => "操作数据库失败"),
|
||||
"d_wrong" => array("code" => 83, "msg" => "data参数错误"),
|
||||
"m_wrong" => array("code" => 84, "msg" => "m参数错误"),
|
||||
"s_wrong" => array("code" => 85, "msg" => "s参数错误"),
|
||||
"p_wrong" => array("code" => 86, "msg" => "p参数错误")
|
||||
);
|
||||
|
||||
///////////////////////////// 全局变量 /////////////////////////////
|
||||
//接口函数返回的json对象
|
||||
$G_Result = array(
|
||||
"state" => 0, //0:成功 <>0:错误编码
|
||||
"error" => "", //错误时的描述
|
||||
"param" => "", //接收的参数
|
||||
"data" => array() //成功时的数据
|
||||
);
|
||||
|
||||
//返回结果$G_G_Result
|
||||
function do_return(){
|
||||
global $G_Result;
|
||||
// if (count($G_Result["data"]) == 0) {
|
||||
// $G_Result["data"] = new stdClass;
|
||||
// }
|
||||
echo json_encode($G_Result);
|
||||
exit();
|
||||
}
|
||||
|
||||
////////////////////////// 连接MYSQL数据库 /////////////////////////
|
||||
$PDO = null;
|
||||
try
|
||||
{
|
||||
$PDO = new PDO("mysql:host=".$G_MySql["host"].";port=".$G_MySql["port"].";dbname=".$G_MySql["name"], $G_MySql["user"], $G_MySql["pwd"]);
|
||||
$PDO->exec("set names utf8;");
|
||||
$PDO->exec("use ".$G_MySql["name"].";");
|
||||
}
|
||||
catch (Exception $e)
|
||||
{
|
||||
$G_Result['state'] = $G_Error["condb"]["code"];
|
||||
$G_Result['error'] = $G_Error["condb"]["msg"];
|
||||
do_return();
|
||||
}
|
||||
|
||||
//////////////////////////// 读取参数 ////////////////////////////
|
||||
//读取data参数
|
||||
$str_data = GetRequest("data");
|
||||
// $str_data = stripslashes($str_data); //解决表单POST传参数时,自动加转义字符的问题
|
||||
$str_data = str_replace("^","=",$str_data);
|
||||
$G_Result['param'] = $str_data;
|
||||
|
||||
//检查data是否为空
|
||||
if ($str_data == "") {
|
||||
$G_Result['state'] = $G_Error["d_wrong"]["code"];
|
||||
$G_Result['error'] = $G_Error["d_wrong"]["msg"];
|
||||
do_return();
|
||||
}
|
||||
|
||||
//检查data是否能转成json
|
||||
$json_para = json_decode($str_data);
|
||||
if ($json_para == null) {
|
||||
$G_Result['state'] = $G_Error["d_wrong"]["code"];
|
||||
$G_Result['error'] = $G_Error["d_wrong"]["msg"];
|
||||
do_return();
|
||||
}
|
||||
|
||||
$m = $json_para->m;
|
||||
$s = $json_para->s;
|
||||
$p = $json_para->p;
|
||||
|
||||
//检查m值
|
||||
if (($m == null) || ($m == "") || (!function_exists($m))) {
|
||||
$G_Result['state'] = $G_Error["m_wrong"]["code"];
|
||||
$G_Result['error'] = $G_Error["m_wrong"]["msg"];
|
||||
do_return();
|
||||
}
|
||||
//检查s值
|
||||
if (($s == null) || ($s == "")) {
|
||||
$G_Result['state'] = $G_Error["s_wrong"]["code"];
|
||||
$G_Result['error'] = $G_Error["s_wrong"]["msg"];
|
||||
do_return();
|
||||
}
|
||||
//检查p值
|
||||
if (($p != null) && (!is_array($p))) {
|
||||
$G_Result['state'] = $G_Error["p_wrong"]["code"];
|
||||
$G_Result['error'] = $G_Error["p_wrong"]["msg"];
|
||||
do_return();
|
||||
}
|
||||
|
||||
$m($s, $p);
|
||||
do_return();
|
||||
|
||||
//根据参数名获取参数
|
||||
function GetRequest($name) {
|
||||
return isset($_REQUEST[$name])?$_REQUEST[$name]:'';
|
||||
}
|
||||
|
||||
//执行sql语句返回结果
|
||||
function opensql($sql, $para) {
|
||||
global $G_Result, $G_Error, $PDO;
|
||||
$stmt = $PDO->prepare($sql.";");
|
||||
if ($stmt->execute($para))
|
||||
{
|
||||
while ($aryData = $stmt->fetch(PDO::FETCH_NAMED)) {
|
||||
$G_Result["data"][] = $aryData;
|
||||
}
|
||||
} else {
|
||||
$G_Result['state'] = $G_Error["execsql"]["code"];
|
||||
$G_Result['error'] = $G_Error["execsql"]["msg"];
|
||||
}
|
||||
}
|
||||
|
||||
//执行sql语句无返回结果
|
||||
function execsql($sql, $para){
|
||||
global $G_Result, $G_Error, $PDO;
|
||||
$stmt = $PDO->prepare($sql.";");
|
||||
if ($stmt->execute($para))
|
||||
{} else {
|
||||
$G_Result['state'] = $G_Error["execsql"]["code"];
|
||||
$G_Result['error'] = $G_Error["execsql"]["msg"];
|
||||
}
|
||||
}
|
||||
?>
|
||||
148
codes/games/sales_service/packet.js
Normal file
148
codes/games/sales_service/packet.js
Normal file
@@ -0,0 +1,148 @@
|
||||
///////////////////////////////////////////////////
|
||||
///////////packet: 所有应用的总包接口类////////////
|
||||
///////////////////////////////////////////////////
|
||||
console.log(min_randomChar(32));
|
||||
console.log(min_randomChar(32));
|
||||
//应用类
|
||||
min_loadJsFile("class/class.app.js", function(){
|
||||
//模块类
|
||||
min_loadJsFile("class/class.mod.js", function(){
|
||||
//mysql类
|
||||
min_loadJsFile("class/class.mysql.js", function(){
|
||||
//单张牌类
|
||||
min_loadJsFile("class/class.pai.js", function(){
|
||||
//单局牌局类
|
||||
min_loadJsFile("class/class.paiju.js", function(){
|
||||
//应用列表
|
||||
min_loadJsFile("applist.js", function(){
|
||||
|
||||
});
|
||||
});
|
||||
});
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
var packet_face = packet_face || {};
|
||||
|
||||
//应用列表
|
||||
packet_face.applist = [];
|
||||
//给tcp客户端主动发包函数
|
||||
packet_face.SendPack_Tcp = null;
|
||||
//给http客户端主动发包函数
|
||||
packet_face.SendPack_Http = null;
|
||||
|
||||
//TCP客户端连接上
|
||||
packet_face.OnTcpConnected = function(str_tcpid)
|
||||
{
|
||||
//通知所有应用
|
||||
for (var i=0; i<packet_face.applist.length; i++)
|
||||
{
|
||||
if (packet_face.applist[i].OnTcpConnected)
|
||||
{
|
||||
packet_face.applist[i].OnTcpConnected(str_tcpid);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//TCP客户端断开
|
||||
packet_face.OnTcpDisConnected = function(str_tcpid)
|
||||
{
|
||||
//通知所有应用
|
||||
for (var i=0; i<packet_face.applist.length; i++)
|
||||
{
|
||||
if (packet_face.applist[i].OnTcpDisConnected)
|
||||
{
|
||||
packet_face.applist[i].OnTcpDisConnected(str_tcpid);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//收到客户端的数据包
|
||||
packet_face.ReceivePack = function(pack)
|
||||
{
|
||||
if (typeof(pack) == "string")
|
||||
{
|
||||
pack = JSON.parse(pack); //转换json
|
||||
}
|
||||
|
||||
//路由应用列表
|
||||
for (var i=0; i<packet_face.applist.length; i++)
|
||||
{
|
||||
if (pack.app == packet_face.applist[i].appname)
|
||||
{
|
||||
if (packet_face.applist[i].ReceivePack)
|
||||
{
|
||||
return packet_face.applist[i].ReceivePack(pack);
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//给客户端发包
|
||||
packet_face.SendPack = function(pack, toids)
|
||||
{
|
||||
if (typeof(pack) == "string")
|
||||
{
|
||||
pack = JSON.parse(pack); //转换json
|
||||
}
|
||||
|
||||
var repack = min_copyjson(pack);
|
||||
delete repack.conmode;
|
||||
delete repack.fromid;
|
||||
delete repack.ip;
|
||||
var str = JSON.stringify(repack);
|
||||
|
||||
switch (pack.conmode)
|
||||
{
|
||||
case "tcp":
|
||||
if (packet_face.SendPack_Tcp)
|
||||
{
|
||||
if (toids && (toids.length > 0))
|
||||
{
|
||||
packet_face.SendPack_Tcp(toids, str);
|
||||
}
|
||||
else
|
||||
{
|
||||
packet_face.SendPack_Tcp([pack.fromid], str);
|
||||
}
|
||||
}
|
||||
break;
|
||||
case "http":
|
||||
if (packet_face.SendPack_Http)
|
||||
{
|
||||
if (pack.fromid && (pack.fromid != ""))
|
||||
{
|
||||
packet_face.SendPack_Http(pack.fromid, str);
|
||||
}
|
||||
}
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (typeof global !== "undefined")
|
||||
{} else {
|
||||
global = {};
|
||||
}
|
||||
|
||||
if (typeof module !=="undefined")
|
||||
{} else {
|
||||
module = {};
|
||||
module.exports = {};
|
||||
}
|
||||
|
||||
//输出
|
||||
global.packet_face = packet_face;
|
||||
global.packet_face.OnTcpConnected = packet_face.OnTcpConnected;
|
||||
global.packet_face.OnTcpDisConnected = packet_face.OnTcpDisConnected;
|
||||
global.packet_face.ReceivePack = packet_face.ReceivePack;
|
||||
global.packet_face.SendPack = packet_face.SendPack;
|
||||
|
||||
//////////以下为固定代码
|
||||
if (module)
|
||||
{
|
||||
module.exports.packet_face = packet_face;
|
||||
};
|
||||
BIN
codes/games/sales_service/sales_service.rar
Normal file
BIN
codes/games/sales_service/sales_service.rar
Normal file
Binary file not shown.
25
codes/games/sales_service/server/app.js
Normal file
25
codes/games/sales_service/server/app.js
Normal file
@@ -0,0 +1,25 @@
|
||||
///////////////////////////////////////////////////
|
||||
////////////////////系统服务app////////////////////
|
||||
///////////////////////////////////////////////////
|
||||
var app_server = app_server || cls_app.new("server", packet_face);
|
||||
|
||||
//加载或更新js文件
|
||||
min_loadJsFile("server/loadjs/mod.js", function (){
|
||||
//服务器心跳包
|
||||
min_loadJsFile("server/heartbeat/mod.js", function (){
|
||||
//通道管理
|
||||
min_loadJsFile("server/channel/mod.js", function (){
|
||||
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
//TCP客户端连上
|
||||
app_server.OnTcpConnected = function(_str_tcpid) {
|
||||
for (var i = 0; i < app_server.modlist.length; i++) {
|
||||
if (app_server.modlist[i].OnTcpConnected) {
|
||||
app_server.modlist[i].OnTcpConnected(_str_tcpid);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
239
codes/games/sales_service/server/channel/mod.js
Normal file
239
codes/games/sales_service/server/channel/mod.js
Normal file
@@ -0,0 +1,239 @@
|
||||
///////////////////////////////////////////////////
|
||||
////////////////////// 通道管理 ///////////////////
|
||||
///////////////////////////////////////////////////
|
||||
var mod_channel = mod_channel || cls_mod.new("mod_channel", "channel", app_server);
|
||||
|
||||
//最小通道id
|
||||
mod_channel.minid = 100000;
|
||||
//最大通道id
|
||||
mod_channel.maxid = 999999;
|
||||
|
||||
//可用的通道id列表
|
||||
mod_channel.ids = [];
|
||||
mod_channel.ids.length = mod_channel.maxid - mod_channel.minid + 1;
|
||||
for (var i = 0; i < mod_channel.ids.length; i++) {
|
||||
mod_channel.ids[i] = mod_channel.minid + i;
|
||||
};
|
||||
//可用的通道id列表的有效长度
|
||||
mod_channel.validlen = mod_channel.maxid - mod_channel.minid + 1;
|
||||
|
||||
//通道列表
|
||||
mod_channel.list = [];
|
||||
mod_channel.list.length = mod_channel.maxid - mod_channel.minid + 1;
|
||||
|
||||
mod_channel.test = function(pack){
|
||||
pack.data = "123456789";
|
||||
return pack;
|
||||
}
|
||||
|
||||
//创建
|
||||
mod_channel.create = function(pack){
|
||||
//在有效通道id列表中随机数组下标
|
||||
var idx = min_random(0, mod_channel.validlen - 1);
|
||||
//确定通道id
|
||||
var id = mod_channel.ids[idx];
|
||||
//将有效数组的最后一个房号移至该位置
|
||||
if (idx < mod_channel.validlen - 1) {
|
||||
mod_channel.ids[idx] = mod_channel.ids[mod_channel.validlen - 1];
|
||||
};
|
||||
mod_channel.ids[mod_channel.validlen - 1] = 0;
|
||||
//有效数组长度减1
|
||||
mod_channel.validlen = mod_channel.validlen - 1;
|
||||
//根据通道id创建通道
|
||||
var o_channel = {};
|
||||
o_channel.id = id;
|
||||
o_channel.plist = []; //谁在通道里面
|
||||
//添加到通道列表中
|
||||
mod_channel.list[id - mod_channel.minid] = o_channel;
|
||||
|
||||
//返回前端
|
||||
pack.data = {};
|
||||
pack.data.channelid = id;
|
||||
return pack;
|
||||
}
|
||||
|
||||
//释放
|
||||
mod_channel.free = function(pack){
|
||||
var channelid = parseInt(pack.data.channelid);
|
||||
|
||||
//通道序号
|
||||
var idx = channelid - mod_channel.minid;
|
||||
|
||||
//检查通道id
|
||||
if (idx < 0 || idx >= mod_channel.list.length) {
|
||||
pack.data = {};
|
||||
pack.data.state = 1;
|
||||
pack.data.error = "通道id不存在";
|
||||
return pack;
|
||||
}
|
||||
|
||||
if (!mod_channel.list[idx]) {
|
||||
pack.data = {};
|
||||
pack.data.state = 1;
|
||||
pack.data.error = "通道id不存在";
|
||||
return pack;
|
||||
}
|
||||
|
||||
//释放通道
|
||||
mod_channel.list[idx] = null;
|
||||
|
||||
//释放通道id
|
||||
mod_channel.ids[mod_channel.validlen] = channelid;
|
||||
mod_channel.validlen = mod_channel.validlen + 1;
|
||||
|
||||
//返回前端
|
||||
pack.data = {};
|
||||
pack.data.state = 0;
|
||||
return pack;
|
||||
}
|
||||
|
||||
//加入
|
||||
mod_channel.join = function(pack){
|
||||
var channelid = parseInt(pack.data.channelid);
|
||||
|
||||
//通道序号
|
||||
var idx = channelid - mod_channel.minid;
|
||||
|
||||
//检查通道id
|
||||
if (idx < 0 || idx >= mod_channel.list.length) {
|
||||
pack.data = {};
|
||||
pack.data.state = 1;
|
||||
pack.data.error = "通道id不存在";
|
||||
return pack;
|
||||
}
|
||||
|
||||
if (!mod_channel.list[idx]) {
|
||||
pack.data = {};
|
||||
pack.data.state = 1;
|
||||
pack.data.error = "通道id不存在";
|
||||
return pack;
|
||||
}
|
||||
|
||||
o_channel = mod_channel.list[idx];
|
||||
var p = {};
|
||||
p.conmode = pack.conmode;
|
||||
p.fromid = pack.fromid;
|
||||
o_channel.plist.push(p);
|
||||
|
||||
//返回前端
|
||||
pack.data = {};
|
||||
pack.data.state = 0;
|
||||
return pack;
|
||||
}
|
||||
|
||||
//退出
|
||||
mod_channel.exit = function(pack){
|
||||
var channelid = parseInt(pack.data.channelid);
|
||||
|
||||
//通道序号
|
||||
var idx = channelid - mod_channel.minid;
|
||||
|
||||
//检查通道id
|
||||
if (idx < 0 || idx >= mod_channel.list.length) {
|
||||
pack.data = {};
|
||||
pack.data.state = 1;
|
||||
pack.data.error = "通道id不存在";
|
||||
return pack;
|
||||
}
|
||||
|
||||
if (!mod_channel.list[idx]) {
|
||||
pack.data = {};
|
||||
pack.data.state = 1;
|
||||
pack.data.error = "通道id不存在";
|
||||
return pack;
|
||||
}
|
||||
|
||||
o_channel = mod_channel.list[idx];
|
||||
for (var i = 0; i < o_channel.plist.length; i++) {
|
||||
if (o_channel.plist[i]) {
|
||||
if (o_channel.plist[i].fromid == pack.fromid) {
|
||||
o_channel.plist[i] = null;
|
||||
//返回前端
|
||||
pack.data = {};
|
||||
pack.data.state = 0;
|
||||
return pack;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//返回前端
|
||||
pack.data = {};
|
||||
pack.data.state = 1;
|
||||
pack.data.error = "未在通道内";
|
||||
return pack;
|
||||
}
|
||||
|
||||
//广播
|
||||
mod_channel.broadcast = function(pack){
|
||||
var channelid = parseInt(pack.data.channelid);
|
||||
var content = pack.data.msg;
|
||||
|
||||
//通道序号
|
||||
var idx = channelid - mod_channel.minid;
|
||||
|
||||
//检查通道id
|
||||
if (idx < 0 || idx >= mod_channel.list.length) {
|
||||
pack.data = {};
|
||||
pack.data.state = 1;
|
||||
pack.data.error = "通道id不存在";
|
||||
return pack;
|
||||
}
|
||||
|
||||
if (!mod_channel.list[idx]) {
|
||||
pack.data = {};
|
||||
pack.data.state = 1;
|
||||
pack.data.error = "通道id不存在";
|
||||
return pack;
|
||||
}
|
||||
|
||||
o_channel = mod_channel.list[idx];
|
||||
for (var i = 0; i < o_channel.plist.length; i++) {
|
||||
if (o_channel.plist[i]) {
|
||||
//广播前端
|
||||
var msg = {};
|
||||
msg.app = pack.app;
|
||||
msg.route = pack.route;
|
||||
msg.rpc = pack.rpc;
|
||||
msg.conmode = o_channel.plist[i].conmode;
|
||||
msg.fromid = o_channel.plist[i].fromid;
|
||||
msg.data = {};
|
||||
msg.data.state = 0;
|
||||
msg.data.msg = content;
|
||||
mod_channel.app.SendPack(msg);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//断线
|
||||
mod_channel.OnTcpDisConnected = function(str_tcpid){
|
||||
for (var i = 0; i < mod_channel.list.length; i++) {
|
||||
if (mod_channel.list[i]){
|
||||
for (var j = 0; j < mod_channel.list[i].plist.length; j++) {
|
||||
if (mod_channel.list[i].plist[j]) {
|
||||
if (mod_channel.list[i].plist[j].fromid == str_tcpid) {
|
||||
//广播前端
|
||||
var msg = {};
|
||||
msg.app = mod_channel.app.appname;
|
||||
msg.route = mod_channel.routename;
|
||||
msg.rpc = "disconnected";
|
||||
msg.data = {};
|
||||
msg.data.channelid = mod_channel.list[i].id;
|
||||
msg.data.idx = j;
|
||||
for (var k = 0; k < mod_channel.list[i].plist.length; k++) {
|
||||
if (k != j){
|
||||
msg.conmode = mod_channel.list[i].plist[k].conmode;
|
||||
msg.fromid = mod_channel.list[i].plist[k].fromid;
|
||||
mod_channel.app.SendPack(msg);
|
||||
}
|
||||
}
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
mod_channel.timer = min_ontime(function(){
|
||||
mod_channel.ran = min_random(1,100);
|
||||
}, 2000);
|
||||
BIN
codes/games/sales_service/server/channel/通道接口.xlsx
Normal file
BIN
codes/games/sales_service/server/channel/通道接口.xlsx
Normal file
Binary file not shown.
37
codes/games/sales_service/server/heartbeat/mod.js
Normal file
37
codes/games/sales_service/server/heartbeat/mod.js
Normal file
@@ -0,0 +1,37 @@
|
||||
///////////////////////////////////////////////////
|
||||
////////////////////服务器心跳包///////////////////
|
||||
///////////////////////////////////////////////////
|
||||
var mod_heartbeat = mod_heartbeat || cls_mod.new("mod_heartbeat", "heartbeat", app_server);
|
||||
|
||||
// mod_heartbeat.TCPList = [];
|
||||
|
||||
//TCP客户端连接
|
||||
// mod_heartbeat.OnTcpConnected = function(str_tcpid)
|
||||
// {
|
||||
// if (min_ary_indexof(mod_heartbeat.TCPList, str_tcpid) == -1)
|
||||
// {
|
||||
// if (str_tcpid){
|
||||
// mod_heartbeat.TCPList.push(str_tcpid);
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
|
||||
//TCP客户端断开
|
||||
// mod_heartbeat.OnTcpDisConnected = function(str_tcpid)
|
||||
// {
|
||||
// if (str_tcpid){
|
||||
// min_ary_delval(mod_heartbeat.TCPList, str_tcpid);
|
||||
// }
|
||||
// }
|
||||
|
||||
//发送心跳包
|
||||
mod_heartbeat.doheartbeat = function()
|
||||
{
|
||||
if ((mod_heartbeat.app) && (mod_heartbeat.app.SendPack_Tcp))
|
||||
{
|
||||
mod_heartbeat.app.SendPack_Tcp([-1], '{"com":"@serverheartbeat"}');
|
||||
}
|
||||
}
|
||||
|
||||
//开启定时器发送心跳包
|
||||
min_ontime(mod_heartbeat.doheartbeat, 20000);
|
||||
16
codes/games/sales_service/server/loadjs/mod.js
Normal file
16
codes/games/sales_service/server/loadjs/mod.js
Normal file
@@ -0,0 +1,16 @@
|
||||
///////////////////////////////////////////////////
|
||||
//////////////////加载或更新js文件/////////////////
|
||||
///////////////////////////////////////////////////
|
||||
var mod_loadjs = mod_loadjs || cls_mod.new("mod_loadjs", "loadjs", app_server);
|
||||
|
||||
mod_loadjs.doloadjs = function(obj_msg)
|
||||
{
|
||||
if (!obj_msg.data.flag) {
|
||||
min_loadJsFile(obj_msg.data.jsfile);
|
||||
} else {
|
||||
min_loadJsFile(obj_msg.data.jsfile, function(){}, 1);
|
||||
}
|
||||
|
||||
obj_msg.result = "success";
|
||||
return obj_msg;
|
||||
}
|
||||
1
codes/games/sales_service/update/app.js
Normal file
1
codes/games/sales_service/update/app.js
Normal file
@@ -0,0 +1 @@
|
||||
var _update;
|
||||
28
codes/games/sales_service/youle/app.js
Normal file
28
codes/games/sales_service/youle/app.js
Normal file
@@ -0,0 +1,28 @@
|
||||
///////////////////////////////////////////////////
|
||||
////////////////////友乐游戏app////////////////////
|
||||
///////////////////////////////////////////////////
|
||||
|
||||
//平台服务器
|
||||
// min_loadJsFile("youle/server_platform/mod.js", function(){
|
||||
//运营商服务器
|
||||
min_loadJsFile("youle/server_agent/mod.js", function(){
|
||||
//房间服务器
|
||||
// min_loadJsFile("youle/server_room/mod.js", function(){
|
||||
//代理后台接口表
|
||||
// min_loadJsFile("youle/server_synch/mod.js", function(){
|
||||
//牛牛
|
||||
// min_loadJsFile("games1/niuniu/mod.js", function(){
|
||||
|
||||
|
||||
// var do_restore = function(){
|
||||
// cls_youle_room_backup.restore();
|
||||
// }
|
||||
// min_ontimeout(do_restore, 1000);
|
||||
|
||||
// });
|
||||
// });
|
||||
// });
|
||||
// });
|
||||
});
|
||||
|
||||
var youle_app = youle_app || cls_app.new("youle", packet_face);
|
||||
376
codes/games/sales_service/youle/server_agent/class.agent.js
Normal file
376
codes/games/sales_service/youle/server_agent/class.agent.js
Normal file
@@ -0,0 +1,376 @@
|
||||
///////////////////////////////////////////////////////////////
|
||||
/////////////// cls_youle_agent_agent: 运营商 /////////////////
|
||||
///////////////////////////////////////////////////////////////
|
||||
var cls_youle_agent_agent = cls_youle_agent_agent || {
|
||||
//构造函数
|
||||
new: function(agentid, name, server, tcpport, httpport, freeroom, managecode,initCard,initBean){
|
||||
var agent = {};
|
||||
agent.agentid = agentid; //运营商id
|
||||
agent.agentname = name; //运营商名称
|
||||
agent.server = server; //运营商服务器地址
|
||||
agent.tcpport = tcpport; //运营商服务器tcp端口
|
||||
agent.httpport = httpport; //运营商服务器http端口
|
||||
agent.freeroom = freeroom; //默认同意解散房间的倒计时,秒
|
||||
agent.managecode = managecode; //管理码
|
||||
agent.isclose = 0; //服务器关闭标志 0:已开启 1:已关闭(不能创建房间、不能加入房间)
|
||||
agent.initCard = initCard;
|
||||
agent.initBean = initBean;
|
||||
|
||||
//游戏列表
|
||||
agent.games = [];
|
||||
//玩家列表
|
||||
agent.players = [];
|
||||
//短号列表
|
||||
agent.shortcodes = [];
|
||||
agent.shortcodes.length = 99999;
|
||||
|
||||
//方法
|
||||
agent.method = {};
|
||||
//载入游戏(没找到则创建)
|
||||
agent.method.load_game = function(gameid, gamename, minroomcode, maxroomcode, seatcount, makewar, modename){
|
||||
return cls_youle_agent_agent.load_game(agent, gameid, gamename, minroomcode, maxroomcode, seatcount, makewar, modename);
|
||||
};
|
||||
//查找游戏
|
||||
agent.method.find_game = function(gameid){
|
||||
return cls_youle_agent_agent.find_game(agent, gameid);
|
||||
};
|
||||
//载入玩家(没找到则创建)
|
||||
agent.method.load_player = function(playerid, roomcard, bean, openid, unionid, nickname, avatar, sex, playertype, invitecode,sign){
|
||||
return cls_youle_agent_agent.load_player(agent, playerid, roomcard, bean, openid, unionid, nickname, avatar, sex, playertype, invitecode,sign);
|
||||
};
|
||||
//查找玩家
|
||||
agent.method.find_player = function(playerid){
|
||||
return cls_youle_agent_agent.find_player(agent, playerid);
|
||||
};
|
||||
//清除玩家
|
||||
agent.method.clear_player = function(playerid){
|
||||
cls_youle_agent_agent.clear_player(agent, playerid);
|
||||
};
|
||||
//机器人昵称、头像
|
||||
agent.method.get_robotinfo = function(){
|
||||
cls_youle_agent_agent.get_robotinfo(agent);
|
||||
};
|
||||
|
||||
//机器人昵称、头像
|
||||
agent.method.getRobotInfo = function(){
|
||||
cls_youle_agent_agent.getRobotInfo(agent);
|
||||
};
|
||||
agent.method.alyVideoConfig = function(videoConfig,count){
|
||||
return cls_youle_agent_agent.alyVideoConfig(videoConfig,count);
|
||||
};
|
||||
|
||||
//机器人
|
||||
agent.robot_nicknamelist = [];
|
||||
agent.robot_avatarlist = [];
|
||||
agent.method.get_robotinfo();
|
||||
agent.timer_getrobot = min_ontime(agent.method.get_robotinfo, 8 * 60 * 60 * 1000);
|
||||
|
||||
//机器人随机列表
|
||||
agent.robotArray = new Array(10000);
|
||||
for(var i=0;i<agent.robotArray.length;i++){
|
||||
agent.robotArray[i] = i;
|
||||
}
|
||||
//机器人昵称列表
|
||||
agent.robotNicknames=null;
|
||||
agent.method.getRobotInfo();
|
||||
return agent;
|
||||
},
|
||||
|
||||
//载入游戏(没找到则创建)
|
||||
load_game: function(o_agent, gameid, gamename, minroomcode, maxroomcode, seatcount, makewar, modename){
|
||||
var idx = cls_youle_agent_agent.aryidx_game(gameid);
|
||||
if (o_agent.games.length <= idx) {
|
||||
o_agent.games.length = idx + 1;
|
||||
}
|
||||
var o_game = o_agent.games[idx];
|
||||
if (!o_game){
|
||||
//不存在则创建
|
||||
o_game = cls_youle_agent_game.new(o_agent, gameid, idx, gamename, minroomcode, maxroomcode, seatcount, makewar, modename);
|
||||
o_agent.games[idx] = o_game;
|
||||
} else {
|
||||
o_game.idx = idx;
|
||||
o_game.gamename = gamename;
|
||||
o_game.minroomcode = minroomcode;
|
||||
o_game.maxroomcode = maxroomcode;
|
||||
o_game.seatcount = seatcount;
|
||||
o_game.makewar = makewar;
|
||||
o_game.modename = modename;
|
||||
}
|
||||
return o_game;
|
||||
},
|
||||
|
||||
//查找游戏
|
||||
find_game: function(o_agent, gameid){
|
||||
var idx = cls_youle_agent_agent.aryidx_game(gameid);
|
||||
if (idx == -1){
|
||||
return null;
|
||||
}
|
||||
if (o_agent.games.length <= idx){
|
||||
return null;
|
||||
}
|
||||
if (!o_agent.games[idx]){
|
||||
return null;
|
||||
}
|
||||
if (o_agent.games[idx].gameid != gameid){
|
||||
return null;
|
||||
}
|
||||
return o_agent.games[idx];
|
||||
},
|
||||
|
||||
//计算游戏的数组下标
|
||||
aryidx_game: function(gameid){
|
||||
//gameid的5、10、15、20四位组成数组下标
|
||||
var idx = parseInt(gameid.substr(4, 1)
|
||||
+ gameid.substr(9, 1)
|
||||
+ gameid.substr(14, 1)
|
||||
+ gameid.substr(19, 1));
|
||||
if (isNaN(idx)){
|
||||
return -1;
|
||||
}
|
||||
return idx;
|
||||
},
|
||||
|
||||
//载入玩家(没找到则创建)
|
||||
load_player: function(o_agent, playerid, roomcard, bean, openid, unionid, nickname, avatar, sex, playertype, invitecode,sign){
|
||||
var idx = cls_youle_agent_agent.aryidx_player(playerid);
|
||||
if (o_agent.players.length <= idx) {
|
||||
o_agent.players.length = idx + 1;
|
||||
}
|
||||
var o_player = o_agent.players[idx];
|
||||
if (!o_player) {
|
||||
//不存在则创建
|
||||
o_player = cls_youle_agent_player.new(o_agent, playerid, roomcard, bean, openid, unionid, nickname, avatar, sex, playertype, invitecode);
|
||||
o_agent.players[idx] = o_player;
|
||||
} else {
|
||||
//更新玩家信息
|
||||
o_player.roomcard = roomcard;
|
||||
o_player.bean = bean;
|
||||
o_player.openid = openid;
|
||||
o_player.unionid = unionid;
|
||||
o_player.nickname = nickname;
|
||||
o_player.avatar = avatar;
|
||||
o_player.sex = sex;
|
||||
o_player.playertype = playertype;
|
||||
o_player.invitecode = invitecode;
|
||||
}
|
||||
return o_player;
|
||||
},
|
||||
|
||||
//查找玩家
|
||||
find_player: function(o_agent, playerid){
|
||||
var idx = cls_youle_agent_agent.aryidx_player(playerid);
|
||||
if (idx == -1){
|
||||
return null;
|
||||
}
|
||||
if (o_agent.players.length <= idx){
|
||||
return null;
|
||||
}
|
||||
if (!o_agent.players[idx]){
|
||||
return null;
|
||||
}
|
||||
if (o_agent.players[idx].playerid != playerid){
|
||||
return null;
|
||||
}
|
||||
return o_agent.players[idx];
|
||||
},
|
||||
|
||||
//清除玩家
|
||||
clear_player: function(o_agent, playerid){
|
||||
var idx = cls_youle_agent_agent.aryidx_player(playerid);
|
||||
if (idx == -1){
|
||||
return;
|
||||
}
|
||||
if (o_agent.players.length <= idx){
|
||||
return;
|
||||
}
|
||||
if (!o_agent.players[idx]){
|
||||
return;
|
||||
}
|
||||
if (o_agent.players[idx].playerid != playerid){
|
||||
return;
|
||||
}
|
||||
o_agent.players[idx] = null;
|
||||
},
|
||||
|
||||
//计算玩家的数组下标
|
||||
aryidx_player: function(playerid){
|
||||
var idx = parseInt(playerid) - 100001;
|
||||
if (isNaN(idx)){
|
||||
return -1;
|
||||
}
|
||||
return idx;
|
||||
},
|
||||
|
||||
//机器人昵称、头像
|
||||
get_robotinfo: function(o_agent){
|
||||
var db_callback_robot_nickname = function(dbdata){
|
||||
o_agent.robot_nicknamelist = [];
|
||||
for (var i = 0; i < dbdata.length; i++) {
|
||||
o_agent.robot_nicknamelist.push(dbdata[i].play_nickname);
|
||||
}
|
||||
}
|
||||
var sql1 = "select v1.play_nickname from player as v1 " +
|
||||
"inner join (select floor(min(idx) + (rand() * (max(idx) - min(idx)))) as idx from player) as v2 " +
|
||||
"where v1.idx >= v2.idx " +
|
||||
"and play_agentid <> ? " +
|
||||
"and trim(play_nickname) <> '' " +
|
||||
"and (not play_nickname like '%测试%') " +
|
||||
"and (not play_nickname like '%游客%') " +
|
||||
"order by v1.idx limit 2000;";
|
||||
if (o_agent.agentid == "i33v0llvp0euhd1n9qo1fM2RV8vtog4y"){
|
||||
youle_room.mysql.execsql("opensql", sql1, [" "], db_callback_robot_nickname);
|
||||
} else {
|
||||
youle_room.mysql.execsql("opensql", sql1, [o_agent.agentid], db_callback_robot_nickname);
|
||||
}
|
||||
|
||||
var db_callback_robot_avatar = function(dbdata){
|
||||
o_agent.robot_avatarlist = [];
|
||||
for (var i = 0; i < dbdata.length; i++) {
|
||||
o_agent.robot_avatarlist.push(dbdata[i].play_avatar);
|
||||
}
|
||||
}
|
||||
var sql2 = "select v1.play_avatar from player as v1 " +
|
||||
"inner join (select floor(min(idx) + (rand() * (max(idx) - min(idx)))) as idx from player) as v2 " +
|
||||
"where v1.idx >= v2.idx " +
|
||||
"and play_agentid <> ? " +
|
||||
"and trim(play_nickname) <> '' " +
|
||||
"and (not play_nickname like '%测试%') " +
|
||||
"and (not play_nickname like '%游客%') " +
|
||||
"and play_avatar <> '' " +
|
||||
"and play_avatar <> '/0' " +
|
||||
"order by v1.idx limit 2000;";
|
||||
if (o_agent.agentid == "i33v0llvp0euhd1n9qo1fM2RV8vtog4y"){
|
||||
youle_room.mysql.execsql("opensql", sql2, [" "], db_callback_robot_avatar);
|
||||
} else {
|
||||
youle_room.mysql.execsql("opensql", sql2, [o_agent.agentid], db_callback_robot_avatar);
|
||||
}
|
||||
},
|
||||
//获取机器人信息
|
||||
getRobotInfo:function(o_agent){
|
||||
var cfg = {};
|
||||
cfg.url = "https://projectimage.tscce.cn/avatar/nikcname.txt" + "?" + min_timestamp();
|
||||
cfg.type = "POST";
|
||||
cfg.data = "";
|
||||
cfg.success = function(str){
|
||||
if (str){
|
||||
try{
|
||||
var data = JSON.parse(str);
|
||||
console.log("获取机器人昵称列表成功!!");
|
||||
o_agent.robotNicknames = data.data;
|
||||
}
|
||||
catch(e){
|
||||
}
|
||||
}
|
||||
};
|
||||
cfg.error = function(str){
|
||||
console.log("获取机器人昵称列表失败!!");
|
||||
};
|
||||
min_http(cfg);
|
||||
|
||||
},
|
||||
//解析视频房配置
|
||||
alyVideoConfig:function(videoConfig,count){
|
||||
if(videoConfig){
|
||||
if(videoConfig.type == 1){
|
||||
switch(videoConfig.profitMode){
|
||||
case 1://固定
|
||||
return [1,Number(videoConfig.profit)];
|
||||
break;
|
||||
case 2://比例
|
||||
|
||||
break;
|
||||
}
|
||||
}else if(videoConfig.type == 2){
|
||||
switch(videoConfig.profitMode){
|
||||
case 1://固定
|
||||
return [2,Number(videoConfig.profit)];
|
||||
break;
|
||||
case 2://比例
|
||||
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
return[0,0];
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
///////////////////////////////////////////////////////////////
|
||||
/////////// cls_youle_agent_agentlist: 运营商列表 //////////
|
||||
///////////////////////////////////////////////////////////////
|
||||
var cls_youle_agent_agentlist = cls_youle_agent_agentlist || {
|
||||
//构造函数
|
||||
new: function() {
|
||||
|
||||
var agentlist = {};
|
||||
|
||||
//代理商列表
|
||||
agentlist.list = [];
|
||||
//方法
|
||||
agentlist.method = {};
|
||||
|
||||
//载入代理商(没找到则创建)
|
||||
agentlist.method.load_agent = function(agentid, name, server, tcpport, httpport, freeroom, managecode,initCard,initBean){
|
||||
var idx = agentlist.method.aryidx_agent(agentid);
|
||||
if (idx == -1){
|
||||
return null;
|
||||
}
|
||||
if (agentlist.list.length <= idx) {
|
||||
agentlist.list.length = idx + 1;
|
||||
}
|
||||
var o_agent = agentlist.list[idx];
|
||||
if (!o_agent) {
|
||||
//不存在则创建
|
||||
o_agent = cls_youle_agent_agent.new(agentid, name, server, tcpport, httpport, freeroom, managecode,initCard,initBean);
|
||||
agentlist.list[idx] = o_agent;
|
||||
} else {
|
||||
o_agent.agentname = name;
|
||||
o_agent.server = server;
|
||||
o_agent.tcpport = tcpport;
|
||||
o_agent.httpport = httpport;
|
||||
o_agent.freeroom = freeroom;
|
||||
o_agent.managecode = managecode;
|
||||
o_agent.initCard = initCard;
|
||||
o_agent.initBean = initBean;
|
||||
}
|
||||
return o_agent;
|
||||
};
|
||||
|
||||
//查找运营商
|
||||
agentlist.method.find_agent = function(agentid){
|
||||
var idx = agentlist.method.aryidx_agent(agentid);
|
||||
if (idx == -1){
|
||||
return null;
|
||||
}
|
||||
if (agentlist.list.length <= idx){
|
||||
return null;
|
||||
}
|
||||
if (!agentlist.list[idx]){
|
||||
return null;
|
||||
}
|
||||
if (agentlist.list[idx].agentid != agentid){
|
||||
return null;
|
||||
}
|
||||
return agentlist.list[idx];
|
||||
};
|
||||
|
||||
//计算运营商的数组下标
|
||||
agentlist.method.aryidx_agent = function(agentid) {
|
||||
//agentid的5、10、15、20四位组成数组下标
|
||||
var idx = parseInt(agentid.substr(4, 1)
|
||||
+ agentid.substr(9, 1)
|
||||
+ agentid.substr(14, 1)
|
||||
+ agentid.substr(19, 1));
|
||||
if (isNaN(idx)){
|
||||
return -1;
|
||||
}
|
||||
return idx;
|
||||
};
|
||||
|
||||
return agentlist;
|
||||
}
|
||||
}
|
||||
|
||||
//运营商列表
|
||||
youle_agent.agents = cls_youle_agent_agentlist.new();
|
||||
49
codes/games/sales_service/youle/server_agent/class.export.js
Normal file
49
codes/games/sales_service/youle/server_agent/class.export.js
Normal file
@@ -0,0 +1,49 @@
|
||||
///////////////////////////////////////////////////
|
||||
/////// cls_youle_agent_export: 输出接口 ///////
|
||||
///////////////////////////////////////////////////
|
||||
var cls_youle_agent_export = cls_youle_agent_export || {
|
||||
|
||||
new: function() {
|
||||
|
||||
var exp = {};
|
||||
|
||||
//购买房卡或房卡充值
|
||||
exp.buy_topup = function(agentid, playerid, type, roomcard, change){
|
||||
//检查代理商id是否存在
|
||||
var o_agent = youle_agent.agents.method.find_agent(agentid);
|
||||
if (!o_agent) {
|
||||
return;
|
||||
};
|
||||
//检查玩家是否存在
|
||||
var o_player = o_agent.method.find_player(playerid);
|
||||
if (!o_player) {
|
||||
return;
|
||||
};
|
||||
|
||||
//修改房卡数量
|
||||
o_player.method.update_roomcard(type, roomcard, change);
|
||||
}
|
||||
|
||||
//购买豆豆或豆豆充值
|
||||
exp.buy_topup_bean = function(agentid, playerid, type, bean, change){
|
||||
//检查代理商id是否存在
|
||||
var o_agent = youle_agent.agents.method.find_agent(agentid);
|
||||
if (!o_agent) {
|
||||
return;
|
||||
};
|
||||
//检查玩家是否存在
|
||||
var o_player = o_agent.method.find_player(playerid);
|
||||
if (!o_player) {
|
||||
return;
|
||||
};
|
||||
|
||||
//修改豆豆数量
|
||||
o_player.method.update_bean(type, bean, change);
|
||||
}
|
||||
|
||||
return exp;
|
||||
}
|
||||
}
|
||||
|
||||
//对内输出接口
|
||||
youle_agent.export = cls_youle_agent_export.new();
|
||||
270
codes/games/sales_service/youle/server_agent/class.game.js
Normal file
270
codes/games/sales_service/youle/server_agent/class.game.js
Normal file
@@ -0,0 +1,270 @@
|
||||
///////////////////////////////////////////////////
|
||||
////////// cls_youle_agent_game: 游戏 //////////
|
||||
///////////////////////////////////////////////////
|
||||
var cls_youle_agent_game = cls_youle_agent_game || {
|
||||
//构造函数
|
||||
new: function(o_agent, gameid, gameidx, gamename, minroomcode, maxroomcode, seatcount, makewar, modename){
|
||||
var game = {};
|
||||
//基本信息
|
||||
game.o_agent = o_agent; //代理商
|
||||
game.gameid = gameid; //游戏id
|
||||
game.idx = gameidx; //游戏的数组下标
|
||||
game.gamename = gamename; //游戏名称
|
||||
game.minroomcode = minroomcode; //最小房号
|
||||
game.maxroomcode = maxroomcode; //最大房号
|
||||
game.seatcount = seatcount; //房间内的座位数量
|
||||
game.makewar = makewar; //达成开战条件的人数
|
||||
game.modename = modename; //服务器模块名称
|
||||
|
||||
game.online_p = 0; //在线玩家数
|
||||
game.online_timer = null; //统计在线人数的定时器
|
||||
game.online_day = null; //当前日期
|
||||
game.online_max = null; //当天最大在线人数
|
||||
game.online_maxtime = null; //当天最大在线人数出现的时间
|
||||
game.room_day = null; //当前日期
|
||||
game.room_max = null; //当天最大房间数
|
||||
game.room_maxtime = null; //当天最大房间数出现的时间
|
||||
//房号列表
|
||||
game.roomcodes = [];
|
||||
game.roomcodes.length = maxroomcode - minroomcode + 1;
|
||||
//房号在数组中的位置
|
||||
game.roomaryid = [];
|
||||
game.roomaryid.length = maxroomcode - minroomcode + 1;
|
||||
for (var i = 0; i < game.roomcodes.length; i++) {
|
||||
game.roomcodes[i] = game.minroomcode + i;
|
||||
game.roomaryid[i] = i;
|
||||
};
|
||||
//房号列表的有效长度
|
||||
game.roomcodesvalidlen = maxroomcode - minroomcode + 1;
|
||||
//房间服务器列表
|
||||
game.servers = [];
|
||||
cls_youle_agent_game.get_roomserverlist(game);
|
||||
//比赛列表
|
||||
game.matchlist = cls_youle_agent_matchlist.new(game);
|
||||
|
||||
//统计在线人数的定时器
|
||||
game.online_timer = setInterval(
|
||||
function(){
|
||||
var sql = "insert into agent_game_online(aggo_agentid, aggo_gameid, aggo_datetime, aggo_onlineplayer, aggo_onlineroom) values(?,?,?,?,?);";
|
||||
youle_agent.mysql.execsql("execsql", sql, [game.o_agent.agentid, game.gameid, min_now(), game.online_p, game.maxroomcode - game.minroomcode + 1 - game.roomcodesvalidlen]);
|
||||
}, 1000 * 60 * 10);
|
||||
|
||||
//方法
|
||||
game.method = {};
|
||||
|
||||
//获取房号对应的房间服务器地址和端口号
|
||||
game.method.get_roomserver = function(roomcode){
|
||||
return cls_youle_agent_game.get_roomserver(game, roomcode);
|
||||
}
|
||||
|
||||
//随机获取新的房间号
|
||||
game.method.new_roomcode = function(shortcode){
|
||||
return cls_youle_agent_game.new_roomcode(game, shortcode);
|
||||
}
|
||||
|
||||
//释放房号
|
||||
game.method.free_roomcode = function(roomcode){
|
||||
cls_youle_agent_game.free_roomcode(game, roomcode);
|
||||
}
|
||||
|
||||
//在线人数变动
|
||||
game.method.online_p_chang = function(change){
|
||||
cls_youle_agent_game.online_p_chang(game, change);
|
||||
}
|
||||
|
||||
//房间数量变动
|
||||
game.method.roomcodesvalidlen_chang = function(change){
|
||||
cls_youle_agent_game.roomcodesvalidlen_chang(game, change);
|
||||
}
|
||||
|
||||
return game;
|
||||
},
|
||||
|
||||
//获取房间服务器列表
|
||||
get_roomserverlist: function(o_game){
|
||||
var db_callback = function(dbdata){
|
||||
for (var i = 0; i < dbdata.length; i++) {
|
||||
var _roomserver = {};
|
||||
_roomserver.minroomcode = parseInt(dbdata[i].minroomcode);
|
||||
_roomserver.maxroomcode = parseInt(dbdata[i].maxroomcode);
|
||||
_roomserver.server = dbdata[i].server;
|
||||
_roomserver.tcpport = parseInt(dbdata[i].tcpport);
|
||||
_roomserver.httpport = parseInt(dbdata[i].httpport);
|
||||
o_game.servers.push(_roomserver);
|
||||
}
|
||||
};
|
||||
var sql = " select aggr_minroomcode as minroomcode, "
|
||||
+ " aggr_maxroomcode as maxroomcode, "
|
||||
+ " aggr_server as server, "
|
||||
+ " aggr_port_tcp as tcpport, "
|
||||
+ " aggr_port_http as httpport "
|
||||
+ " from agent_game_room "
|
||||
+ " where aggr_agentid = ? and aggr_gameid = ?;";
|
||||
youle_agent.mysql.execsql("opensql", sql, [o_game.o_agent.agentid, o_game.gameid], db_callback);
|
||||
},
|
||||
|
||||
//获取房号对应的房间服务器地址和端口号
|
||||
get_roomserver: function(o_game, roomcode){
|
||||
var re = {};
|
||||
for (var i = 0; i < o_game.servers.length; i++) {
|
||||
if (roomcode >= o_game.servers[i].minroomcode && roomcode <= o_game.servers[i].maxroomcode){
|
||||
re.server = o_game.servers[i].server;
|
||||
re.tcpport = o_game.servers[i].tcpport;
|
||||
re.httpport = o_game.servers[i].httpport;
|
||||
re.minroomcode = o_game.servers[i].minroomcode;
|
||||
re.maxroomcode = o_game.servers[i].maxroomcode;
|
||||
return re;
|
||||
}
|
||||
}
|
||||
re.server = o_game.o_agent.server;
|
||||
re.tcpport = o_game.o_agent.tcpport;
|
||||
re.httpport = o_game.o_agent.httpport;
|
||||
re.minroomcode = o_game.minroomcode;
|
||||
re.maxroomcode = o_game.maxroomcode;
|
||||
return re;
|
||||
},
|
||||
|
||||
//随机获取新的房号
|
||||
new_roomcode: function(o_game, shortcode){
|
||||
if (o_game.roomcodesvalidlen == 0){
|
||||
return null;
|
||||
}
|
||||
//确定房号
|
||||
var roomcode;
|
||||
var idx;
|
||||
if (shortcode){
|
||||
if (shortcode < 100000){
|
||||
//短号,优先分配短号相关的房间号
|
||||
while (shortcode < 100000){
|
||||
shortcode = shortcode * 10;
|
||||
}
|
||||
for (var i=1; i<9; i++){
|
||||
roomcode = shortcode + i;
|
||||
idx = o_game.roomaryid[roomcode - o_game.minroomcode];
|
||||
if (idx < o_game.roomcodesvalidlen){
|
||||
break;
|
||||
} else {
|
||||
roomcode = null;
|
||||
idx = null;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
//长号,取制定房号
|
||||
roomcode = shortcode;
|
||||
idx = o_game.roomaryid[roomcode - o_game.minroomcode];
|
||||
}
|
||||
}
|
||||
//分配随机房间号
|
||||
if (!roomcode){
|
||||
for (var i=1; i<9; i++){
|
||||
//在有效房号数组中随机数组下标
|
||||
idx = min_random(0, o_game.roomcodesvalidlen - 1);
|
||||
roomcode = o_game.roomcodes[idx];
|
||||
//如果是1,2,3这样的房号则重新取房号,1、2、3这样房号预留给短号
|
||||
if (roomcode % 10 > 3 || roomcode % 10 < 1) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
//将有效数组的最后一个房号与该房号互换位置
|
||||
if (idx < o_game.roomcodesvalidlen - 1) {
|
||||
var lastroomcode = o_game.roomcodes[o_game.roomcodesvalidlen - 1];
|
||||
|
||||
o_game.roomcodes[idx] = lastroomcode;
|
||||
o_game.roomaryid[lastroomcode - o_game.minroomcode] = idx;
|
||||
|
||||
o_game.roomcodes[o_game.roomcodesvalidlen - 1] = roomcode;
|
||||
o_game.roomaryid[roomcode - o_game.minroomcode] = o_game.roomcodesvalidlen - 1;
|
||||
|
||||
};
|
||||
//有效数组长度减1
|
||||
o_game.method.roomcodesvalidlen_chang(-1);
|
||||
|
||||
return roomcode;
|
||||
},
|
||||
|
||||
//释放房号
|
||||
free_roomcode: function(o_game, roomcode){
|
||||
var idx = o_game.roomaryid[roomcode - o_game.minroomcode];
|
||||
if (idx > o_game.roomcodesvalidlen){
|
||||
var lastroomcode = o_game.roomcodes[o_game.roomcodesvalidlen];
|
||||
|
||||
o_game.roomcodes[idx] = lastroomcode;
|
||||
o_game.roomaryid[lastroomcode - o_game.minroomcode] = idx;
|
||||
|
||||
o_game.roomcodes[o_game.roomcodesvalidlen] = roomcode;
|
||||
o_game.roomaryid[roomcode - o_game.minroomcode] = o_game.roomcodesvalidlen;
|
||||
|
||||
o_game.method.roomcodesvalidlen_chang(1);
|
||||
} else if (idx == o_game.roomcodesvalidlen){
|
||||
o_game.method.roomcodesvalidlen_chang(1);
|
||||
}
|
||||
|
||||
//如果是星星争霸场的房间则在星星争霸场中删除该房间
|
||||
if (o_game.sharerooms_player){
|
||||
min_ary_delval(o_game.sharerooms_player, roomcode, "roomcode");
|
||||
}
|
||||
if (o_game.sharerooms_system == roomcode){
|
||||
min_ary_delval(o_game.sharerooms_system, roomcode, "roomcode");
|
||||
}
|
||||
},
|
||||
|
||||
//在线人数变动
|
||||
online_p_chang: function(o_game, change){
|
||||
o_game.online_p = o_game.online_p + change;
|
||||
|
||||
if (!o_game.online_max){
|
||||
o_game.online_max = o_game.online_p;
|
||||
o_game.online_day = min_day();
|
||||
o_game.online_maxtime = min_now();
|
||||
} else {
|
||||
if (min_day() == o_game.online_day){ //同一天
|
||||
if (o_game.online_p > o_game.online_max){
|
||||
o_game.online_max = o_game.online_p;
|
||||
o_game.online_maxtime = min_now();
|
||||
}
|
||||
} else { //不是同一天
|
||||
//保存上一天的最大在线人数
|
||||
var sql = "call cp_report_game_day(?,?,?,?,?,?);";
|
||||
youle_agent.mysql.execsql("execsql", sql, [o_game.o_agent.agentid, o_game.gameid, o_game.online_day, 3, o_game.online_max, o_game.online_maxtime]);
|
||||
|
||||
o_game.online_max = o_game.online_p;
|
||||
o_game.online_day = min_day();
|
||||
o_game.online_maxtime = min_now();
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
//房间数量变动
|
||||
roomcodesvalidlen_chang: function(o_game, change){
|
||||
o_game.roomcodesvalidlen = o_game.roomcodesvalidlen + change;
|
||||
//当前的房间数量
|
||||
var roomcount = o_game.maxroomcode - o_game.minroomcode + 1 - o_game.roomcodesvalidlen;
|
||||
|
||||
//测试用
|
||||
if (roomcount < 0){
|
||||
console.log(min_now() + "房号管理错误|||||||||||||||||||||||| agentid:" + o_game.o_agent.agentid + ",gameid:" + o_game.gameid);
|
||||
}
|
||||
|
||||
if (!o_game.room_max){
|
||||
o_game.room_max = roomcount;
|
||||
o_game.room_day = min_day();
|
||||
o_game.room_maxtime = min_now();
|
||||
} else {
|
||||
if (min_day() == o_game.room_day){ //同一天
|
||||
if (roomcount > o_game.room_max){
|
||||
o_game.room_max = roomcount;
|
||||
o_game.room_maxtime = min_now();
|
||||
}
|
||||
} else { //不是同一天
|
||||
//保存上一天的最大房间数
|
||||
var sql = "call cp_report_game_day(?,?,?,?,?,?);";
|
||||
youle_agent.mysql.execsql("execsql", sql, [o_game.o_agent.agentid, o_game.gameid, o_game.room_day, 4, o_game.room_max, o_game.room_maxtime]);
|
||||
|
||||
o_game.room_max = roomcount;
|
||||
o_game.room_day = min_day();
|
||||
o_game.room_maxtime = min_now();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
127
codes/games/sales_service/youle/server_agent/class.import.js
Normal file
127
codes/games/sales_service/youle/server_agent/class.import.js
Normal file
@@ -0,0 +1,127 @@
|
||||
///////////////////////////////////////////////////
|
||||
/////// cls_youle_agent_import: 输入接口 ///////
|
||||
///////////////////////////////////////////////////
|
||||
var cls_youle_agent_import = cls_youle_agent_import || {
|
||||
|
||||
new: function() {
|
||||
|
||||
var imp = {};
|
||||
|
||||
//创建房间时根据roomtype获取需要的房卡数量
|
||||
imp.createroom_needroomcard = function(o_game, roomtype){
|
||||
var o_game_config = youle_agent.app.youle_platform.config.method.get_paravalue("game_config", o_game.o_agent.agentid, o_game.gameid);
|
||||
|
||||
var mod_game = youle_agent.app[o_game.modename];
|
||||
if (mod_game.export){
|
||||
if (mod_game.export.get_needroomcard){
|
||||
return mod_game.export.get_needroomcard(roomtype, o_game_config);
|
||||
}
|
||||
}
|
||||
if (mod_game.needroomcard){
|
||||
return mod_game.needroomcard(roomtype, o_game_config);
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
|
||||
//创建房间时根据roomtype获取总局数
|
||||
imp.createroom_asetcount = function(o_game, roomtype){
|
||||
var o_game_config = youle_agent.app.youle_platform.config.method.get_paravalue("game_config", o_game.o_agent.agentid, o_game.gameid);
|
||||
|
||||
var mod_game = youle_agent.app[o_game.modename];
|
||||
if (mod_game.export){
|
||||
if (mod_game.export.get_asetcount){
|
||||
return mod_game.export.get_asetcount(roomtype, o_game_config);
|
||||
}
|
||||
}
|
||||
if (mod_game.asetcount){
|
||||
return mod_game.asetcount(roomtype, o_game_config);
|
||||
}
|
||||
return 8;
|
||||
}
|
||||
|
||||
//创建房间时根据roomtype获取元宝下限
|
||||
imp.createroom_beanfloor = function(o_game, roomtype){
|
||||
var o_game_config = youle_agent.app.youle_platform.config.method.get_paravalue("game_config", o_game.o_agent.agentid, o_game.gameid);
|
||||
|
||||
var mod_game = youle_agent.app[o_game.modename];
|
||||
if (mod_game.export){
|
||||
if (mod_game.export.createroom_beanfloor){
|
||||
return mod_game.export.createroom_beanfloor(roomtype, o_game_config);
|
||||
}
|
||||
}
|
||||
if (mod_game.createroom_beanfloor){
|
||||
return mod_game.createroom_beanfloor(roomtype, o_game_config);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
//创建房间时根据roomtype获取房间类型,是否是元宝房间
|
||||
imp.createroom_roommode = function(o_game, roomtype){
|
||||
var o_game_config = youle_agent.app.youle_platform.config.method.get_paravalue("game_config", o_game.o_agent.agentid, o_game.gameid);
|
||||
|
||||
var mod_game = youle_agent.app[o_game.modename];
|
||||
if (mod_game.export){
|
||||
if (mod_game.export.createroom_roommode){
|
||||
return mod_game.export.createroom_roommode(roomtype, o_game_config);
|
||||
}
|
||||
}
|
||||
if (mod_game.createroom_roommode){
|
||||
return mod_game.createroom_roommode(roomtype, o_game_config);
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
//创建房间时根据roomtype获取星星场倍数
|
||||
imp.createroom_beanmult = function(o_game, roomtype){
|
||||
var o_game_config = youle_agent.app.youle_platform.config.method.get_paravalue("game_config", o_game.o_agent.agentid, o_game.gameid);
|
||||
|
||||
var mod_game = youle_agent.app[o_game.modename];
|
||||
if (mod_game.export){
|
||||
if (mod_game.export.createroom_beanmult){
|
||||
return mod_game.export.createroom_beanmult(roomtype, o_game_config);
|
||||
}
|
||||
}
|
||||
if (mod_game.createroom_beanmult){
|
||||
return mod_game.createroom_beanmult(roomtype, o_game_config);
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
|
||||
//房间内的玩家是否需要准备
|
||||
imp.createroom_needprepare = function(o_game, roomtype){
|
||||
var o_game_config = youle_agent.app.youle_platform.config.method.get_paravalue("game_config", o_game.o_agent.agentid, o_game.gameid);
|
||||
|
||||
var mod_game = youle_agent.app[o_game.modename];
|
||||
if (mod_game.export){
|
||||
if (mod_game.export.createroom_needprepare){
|
||||
return mod_game.export.createroom_needprepare(roomtype, o_game_config);
|
||||
}
|
||||
}
|
||||
if (mod_game.createroom_needprepare){
|
||||
return mod_game.createroom_needprepare(roomtype, o_game_config);
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
//加入房间时根据roomtype获取需要的房卡数量,如果不需要房卡则需要返回0
|
||||
imp.joinroom_needroomcard = function(o_game, roomtype){
|
||||
var o_game_config = youle_agent.app.youle_platform.config.method.get_paravalue("game_config", o_game.o_agent.agentid, o_game.gameid);
|
||||
|
||||
var mod_game = youle_agent.app[o_game.modename];
|
||||
if (mod_game.export){
|
||||
if (mod_game.export.get_needroomcard_joinroom){
|
||||
return mod_game.export.get_needroomcard_joinroom(roomtype, o_game_config);
|
||||
}
|
||||
}
|
||||
if (mod_game.needroomcard_joinroom){
|
||||
return mod_game.needroomcard_joinroom(roomtype, o_game_config);
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
return imp;
|
||||
}
|
||||
}
|
||||
|
||||
//内部输入接口
|
||||
youle_agent.import = cls_youle_agent_import.new();
|
||||
588
codes/games/sales_service/youle/server_agent/class.match.js
Normal file
588
codes/games/sales_service/youle/server_agent/class.match.js
Normal file
@@ -0,0 +1,588 @@
|
||||
///////////////////////////////////////////////////////////////
|
||||
/////////////// cls_youle_agent_match: 比赛 /////////////////
|
||||
///////////////////////////////////////////////////////////////
|
||||
var cls_youle_agent_match = cls_youle_agent_match || {
|
||||
//构造函数
|
||||
new: function(o_game, o_matchlist, o_setting){
|
||||
var match = {};
|
||||
match.o_game = o_game;
|
||||
match.o_matchlist = o_matchlist;
|
||||
match.id = o_setting.id;
|
||||
match.roomtype = o_setting.roomtype;
|
||||
match.matchname = o_setting.matchname;
|
||||
match.imageurl = o_setting.imageurl;
|
||||
match.playercount = o_setting.playercount;
|
||||
match.playercount2= o_setting.playercount2;
|
||||
match.bean = o_setting.bean;
|
||||
match.roomcard = o_setting.roomcard;
|
||||
match.topcount = o_setting.topcount;
|
||||
match.circulation = o_setting.circulation;
|
||||
match.interval = o_setting.interval;
|
||||
match.gradename = o_setting.gradename;
|
||||
match.memo1 = o_setting.memo1;
|
||||
match.memo2 = o_setting.memo2;
|
||||
match.memo3 = o_setting.memo3;
|
||||
match.haverobot = o_setting.haverobot;
|
||||
if (o_setting.ranking){
|
||||
match.sysgrade = o_setting.ranking;
|
||||
}
|
||||
|
||||
//该比赛的第几个循环
|
||||
if (match.circulation){
|
||||
if ((new Date()).getTime() < (new Date(o_setting.beginTime)).getTime()){
|
||||
match.idx = 1;
|
||||
match.beginTime = o_setting.beginTime;
|
||||
match.endTime = o_setting.endTime;
|
||||
} else if ((new Date()).getTime() <= (new Date(o_setting.endTime)).getTime()){
|
||||
match.idx = 1;
|
||||
match.beginTime = o_setting.beginTime;
|
||||
match.endTime = o_setting.endTime;
|
||||
} else {
|
||||
match.idx = parseInt(((new Date()).getTime() - 1 - (new Date(o_setting.endTime)).getTime()) / ((new Date(o_setting.endTime)).getTime() - (new Date(o_setting.beginTime)).getTime() + o_setting.interval * 1000)) + 2;
|
||||
match.beginTime = min_timestampToTime((new Date(o_setting.endTime)).getTime() + o_setting.interval * 1000 * (match.idx - 1) + ((new Date(o_setting.endTime)).getTime() - (new Date(o_setting.beginTime)).getTime()) * (match.idx - 2));
|
||||
match.endTime = min_timestampToTime((new Date(match.beginTime)).getTime() + (new Date(o_setting.endTime)).getTime() - (new Date(o_setting.beginTime)).getTime());
|
||||
}
|
||||
|
||||
if (match.idx > match.circulation + 1){
|
||||
return null;
|
||||
}
|
||||
} else {
|
||||
if ((new Date()).getTime() > (new Date(o_setting.endTime)).getTime()){
|
||||
return null;
|
||||
}
|
||||
match.idx = 1;
|
||||
match.beginTime = o_setting.beginTime;
|
||||
match.endTime = o_setting.endTime;
|
||||
}
|
||||
match.isstart = 0;
|
||||
match.playerlist = [];
|
||||
match.ranklist = [];
|
||||
|
||||
//方法
|
||||
match.method = {};
|
||||
//定时开始游戏
|
||||
match.method.start_game = function(){
|
||||
return cls_youle_agent_match.start_game(match);
|
||||
};
|
||||
//随机上一个系统成绩
|
||||
match.method.add_sysgrade = function(){
|
||||
cls_youle_agent_match.add_sysgrade(match);
|
||||
};
|
||||
//开启系统成绩定时器
|
||||
match.method.start_add_sysgrade_timer = function(){
|
||||
cls_youle_agent_match.start_add_sysgrade_timer(match);
|
||||
};
|
||||
match.timer_start = min_ontime(match.method.start_game, 6 * 1000);
|
||||
|
||||
return match;
|
||||
},
|
||||
|
||||
//定时开始游戏
|
||||
start_game: function(o_match){
|
||||
var o_game = o_match.o_game;
|
||||
var o_agent = o_game.o_agent;
|
||||
|
||||
var config_close = youle_platform.config.method.get_paravalue("isclose", o_agent.agentid, o_game.gameid);
|
||||
if (o_agent.isclose || config_close == 2){
|
||||
return;
|
||||
};
|
||||
|
||||
var do_start = function(){
|
||||
var seatcount = youle_room.import.makewar_playercount(o_game, o_match.roomtype);
|
||||
if (!seatcount){
|
||||
seatcount = o_game.seatcount;
|
||||
}
|
||||
while ((o_match.playerlist.length >= seatcount) ||
|
||||
(o_match.haverobot == 1 && o_match.playerlist.length > 0)){
|
||||
var _roomsvr_room = null;
|
||||
var playercount = 0;
|
||||
var playerbeansum = 0;
|
||||
var playeridlist = [];
|
||||
var playernamelist = [];
|
||||
var playeravatarlist = [];
|
||||
for (var i = 1; i <= seatcount; i++) {
|
||||
if (o_match.playerlist.length > 0){
|
||||
var idx = min_random(0, o_match.playerlist.length - 1);
|
||||
var playerid = o_match.playerlist[idx];
|
||||
var o_player = o_agent.method.find_player(playerid);
|
||||
if (o_player){
|
||||
var o_gameinfo = o_player.method.get_gameinfo(o_game);
|
||||
if (o_gameinfo) {
|
||||
if (!o_gameinfo.roomcode){
|
||||
if (_roomsvr_room){
|
||||
var msg = {};
|
||||
msg.app = youle_agent.app.appname;
|
||||
msg.route = youle_agent.app.youle_room.routename;
|
||||
msg.rpc = "self_join_room";
|
||||
msg.data = {};
|
||||
msg.data.playerid = playerid;
|
||||
msg.data.nickname = o_player.nickname;
|
||||
msg.data.avatar = o_player.avatar;
|
||||
msg.data.sex = o_player.sex;
|
||||
msg.data.playertype = o_player.playertype;
|
||||
msg.data.ip = o_gameinfo.ip;
|
||||
msg.data.conmode = o_gameinfo.conmode;
|
||||
msg.data.fromid = o_gameinfo.fromid;
|
||||
msg.data.agentid = o_agent.agentid;
|
||||
msg.data.gameid = o_game.gameid;
|
||||
msg.data.roomcode = _roomsvr_room.roomcode;
|
||||
msg.data.playerroomcard = o_player.roomcard;
|
||||
msg.data.playerbean = o_player.bean;
|
||||
msg.data.address = o_player.address;
|
||||
msg.data.latitude = o_player.latitude;
|
||||
msg.data.longitude = o_player.longitude;
|
||||
|
||||
//房间服务器与代理商服务器是同一地址
|
||||
var roomserver_data = youle_agent.app.youle_room[msg.rpc](msg);
|
||||
//返回数据
|
||||
if (roomserver_data.data.state == 0){
|
||||
//加入房间成功
|
||||
o_gameinfo.roomcode = _roomsvr_room.roomcode;
|
||||
delete o_gameinfo.matchid;
|
||||
delete o_gameinfo.matchidx;
|
||||
playercount = playercount + 1;
|
||||
playerbeansum = playerbeansum + o_player.bean;
|
||||
playeridlist.push(o_player.playerid);
|
||||
playernamelist.push(o_player.nickname);
|
||||
playeravatarlist.push(o_player.avatar);
|
||||
|
||||
var pack = {};
|
||||
pack.ip = o_gameinfo.match_ip;
|
||||
pack.conmode = o_gameinfo.match_conmode;
|
||||
pack.fromid = o_gameinfo.match_fromid;
|
||||
pack.app = "youle";
|
||||
pack.route = "agent";
|
||||
pack.rpc = "self_join_room";
|
||||
pack.data = roomserver_data.data;
|
||||
pack.data.matchid = o_match.id;
|
||||
pack.data.matchidx = o_match.idx;
|
||||
youle_agent.app.SendPack(pack);
|
||||
}
|
||||
} else {
|
||||
var roomcode = o_game.method.new_roomcode();
|
||||
if (roomcode){
|
||||
var o_roomserver = o_game.method.get_roomserver(roomcode);
|
||||
var msg = {};
|
||||
msg.app = youle_agent.app.appname;
|
||||
msg.route = youle_agent.app.youle_room.routename;
|
||||
msg.rpc = "create_room";
|
||||
msg.data = {};
|
||||
|
||||
msg.data.agent = {};
|
||||
msg.data.agent.agentid = o_agent.agentid;
|
||||
msg.data.agent.name = o_agent.agentname;
|
||||
msg.data.agent.server = o_agent.server;
|
||||
msg.data.agent.tcpport = o_agent.tcpport;
|
||||
msg.data.agent.httpport = o_agent.httpport;
|
||||
msg.data.agent.freeroom = o_agent.freeroom;
|
||||
|
||||
msg.data.game = {};
|
||||
msg.data.game.gameid = o_game.gameid;
|
||||
msg.data.game.name = o_game.gamename;
|
||||
msg.data.game.seatcount = o_game.seatcount;
|
||||
msg.data.game.makewar = o_game.makewar;
|
||||
msg.data.game.modename = o_game.modename;
|
||||
msg.data.game.server = o_roomserver.server;
|
||||
msg.data.game.tcpport = o_roomserver.tcpport;
|
||||
msg.data.game.httpport = o_roomserver.httpport;
|
||||
msg.data.game.minroomcode = o_roomserver.minroomcode;
|
||||
msg.data.game.maxroomcode = o_roomserver.maxroomcode;
|
||||
|
||||
msg.data.player = {};
|
||||
msg.data.player.playerid = playerid;
|
||||
msg.data.player.nickname = o_player.nickname;
|
||||
msg.data.player.avatar = o_player.avatar;
|
||||
msg.data.player.sex = o_player.sex;
|
||||
msg.data.player.playertype = o_player.playertype;
|
||||
msg.data.player.ip = o_gameinfo.ip;
|
||||
msg.data.player.conmode = o_gameinfo.conmode;
|
||||
msg.data.player.fromid = o_gameinfo.fromid;
|
||||
msg.data.player.address = o_player.address;
|
||||
msg.data.player.latitude = o_player.latitude;
|
||||
msg.data.player.longitude = o_player.longitude;
|
||||
msg.data.player.bean = o_player.bean;
|
||||
|
||||
var needroomcard = youle_agent.import.createroom_needroomcard(o_game, o_match.roomtype);
|
||||
//获取总局数
|
||||
var asetcount = youle_agent.import.createroom_asetcount(o_game, o_match.roomtype);
|
||||
//获取豆豆下限
|
||||
var beanfloor = youle_agent.import.createroom_beanfloor(o_game, o_match.roomtype);
|
||||
//获取房间类型
|
||||
var roommode = youle_agent.import.createroom_roommode(o_game, o_match.roomtype);
|
||||
//获取星星场倍数
|
||||
var beanmult = youle_agent.import.createroom_beanmult(o_game, o_match.roomtype);
|
||||
//不是星星场
|
||||
if (!roommode){
|
||||
beanmult = 0;
|
||||
}
|
||||
//玩家是否需要准备
|
||||
var needprepare = youle_agent.import.createroom_needprepare(o_game, o_match.roomtype);
|
||||
//比赛场写死不需要准备
|
||||
needprepare = 0;
|
||||
|
||||
msg.data.room = {};
|
||||
msg.data.room.roomcode = roomcode;
|
||||
msg.data.room.roomtype = o_match.roomtype;
|
||||
msg.data.room.needroomcard = needroomcard;
|
||||
msg.data.room.asetcount = asetcount;
|
||||
msg.data.room.infinite = 0;
|
||||
msg.data.room.roommode = roommode;
|
||||
msg.data.room.beanfloor = beanfloor;
|
||||
msg.data.room.beanmult = beanmult;
|
||||
msg.data.room.needprepare = needprepare;
|
||||
msg.data.room.advanced_type= 0;
|
||||
msg.data.room.advanced_teabean = 0;
|
||||
msg.data.room.match_id = o_match.id;
|
||||
msg.data.room.match_idx = o_match.idx;
|
||||
|
||||
if (o_roomserver.server == o_agent.server){
|
||||
//房间服务器与代理商服务器是同一地址
|
||||
var roomserver_data = youle_agent.app.youle_room[msg.rpc](msg);
|
||||
//返回数据
|
||||
if (roomserver_data.data.state == 0){
|
||||
//加入房间成功
|
||||
o_gameinfo.roomcode = roomcode;
|
||||
delete o_gameinfo.matchid;
|
||||
delete o_gameinfo.matchidx;
|
||||
playercount = playercount + 1;
|
||||
playerbeansum = playerbeansum + o_player.bean;
|
||||
playeridlist.push(o_player.playerid);
|
||||
playernamelist.push(o_player.nickname);
|
||||
playeravatarlist.push(o_player.avatar);
|
||||
|
||||
var pack = {};
|
||||
pack.ip = o_gameinfo.match_ip;
|
||||
pack.conmode = o_gameinfo.match_conmode;
|
||||
pack.fromid = o_gameinfo.match_fromid;
|
||||
pack.app = "youle";
|
||||
pack.route = "agent";
|
||||
pack.rpc = "create_room";
|
||||
pack.data = roomserver_data.data;
|
||||
pack.data.matchid = o_match.id;
|
||||
pack.data.matchidx = o_match.idx;
|
||||
youle_agent.app.SendPack(pack);
|
||||
|
||||
var _roomsvr_agent = youle_room.agents.method.find_agent(o_agent.agentid);
|
||||
var _roomsvr_game = _roomsvr_agent.method.find_game(o_game.gameid);
|
||||
_roomsvr_room = _roomsvr_game.method.find_room(roomcode);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
o_match.playerlist.splice(idx, 1);
|
||||
} else {
|
||||
o_match.playerlist.splice(idx, 1);
|
||||
}
|
||||
} else {
|
||||
//加入机器人
|
||||
var robot_playerid = null;
|
||||
for (var j = 1; j < 10; j++) {
|
||||
robot_playerid = min_random(200000, 899999);
|
||||
if (min_ary_indexof(playeridlist, robot_playerid) > -1){
|
||||
robot_playerid = null;
|
||||
} else {
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (robot_playerid == null){
|
||||
return;
|
||||
}
|
||||
|
||||
var idx
|
||||
var robot_nickname = null;
|
||||
for (var j = 1; j < 10; j++) {
|
||||
idx = min_random(0, o_agent.robot_nicknamelist.length - 1);
|
||||
robot_nickname = o_agent.robot_nicknamelist[idx];
|
||||
if (min_ary_indexof(playernamelist, robot_nickname) > -1){
|
||||
robot_nickname = null;
|
||||
} else {
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (robot_nickname == null){
|
||||
return;
|
||||
}
|
||||
|
||||
var robot_avatar = null;
|
||||
for (var j = 1; j < 10; j++) {
|
||||
idx = min_random(0, o_agent.robot_avatarlist.length - 1);
|
||||
robot_avatar = o_agent.robot_avatarlist[idx];
|
||||
if (min_ary_indexof(playeravatarlist, robot_avatar) > -1){
|
||||
robot_avatar = null;
|
||||
} else {
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (robot_avatar == null){
|
||||
return;
|
||||
}
|
||||
|
||||
var robot_sex = min_random(1, 2);
|
||||
var robot_ip = min_random(10, 240) + "." + min_random(10, 240) + "." + min_random(10, 240) + "." + min_random(10, 240);
|
||||
var robot_bean = parseInt(playerbeansum / playercount) + min_random(100, 3000);
|
||||
if (!robot_bean){
|
||||
robot_bean = 0;
|
||||
}
|
||||
var o_robot = cls_youle_room_player.new(robot_playerid, robot_nickname, robot_avatar, robot_sex, 0, robot_ip, 0, null, null);
|
||||
o_robot.bean = robot_bean;
|
||||
o_robot.isrobot = 1;
|
||||
for (var j = 0; j < _roomsvr_room.seatlist.length; j++) {
|
||||
if (!_roomsvr_room.seatlist[j]){
|
||||
// console.log(_roomsvr_room.roomcode + "比赛场加入机器人" + robot_playerid);
|
||||
o_robot.method.enter_room(_roomsvr_room, j, 0);
|
||||
if (_roomsvr_room.battlestate){
|
||||
youle_room.import.player_enter(_roomsvr_room, j);
|
||||
}
|
||||
youle_room.return.self_join_room({}, o_robot, robot_bean);
|
||||
|
||||
playeridlist.push(o_robot.playerid);
|
||||
playernamelist.push(o_robot.nickname);
|
||||
playeravatarlist.push(o_robot.avatar);
|
||||
|
||||
if (_roomsvr_room.needprepare){
|
||||
(function(){
|
||||
var o_robot2 = o_robot;
|
||||
o_robot2.tmr_prepare = min_ontimeout(
|
||||
function(){
|
||||
if (!o_robot2.gameinfo.isprepare){
|
||||
var pack = {};
|
||||
pack.app = "youle";
|
||||
pack.route = "room";
|
||||
pack.rpc = "player_prepare";
|
||||
pack.data = {};
|
||||
pack.data.agentid = o_robot2.gameinfo.o_room.o_game.o_agent.agentid;
|
||||
pack.data.playerid = o_robot2.playerid;
|
||||
pack.data.gameid = o_robot2.gameinfo.o_room.o_game.gameid;
|
||||
pack.data.roomcode = o_robot2.gameinfo.o_room.roomcode;
|
||||
youle_room.player_prepare(pack);
|
||||
}
|
||||
}, min_random(2000, 4000));
|
||||
})(o_robot);
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if ((new Date()).getTime() >= (new Date(o_match.beginTime)).getTime() &&
|
||||
(new Date()).getTime() <= (new Date(o_match.endTime)).getTime()){
|
||||
if (!o_match.isstart){
|
||||
if (o_match.playerlist.length >= o_match.playercount || o_match.haverobot == 1){
|
||||
do_start();
|
||||
o_match.isstart = 1;
|
||||
}
|
||||
} else {
|
||||
if (o_match.playerlist.length >= o_match.playercount2 || o_match.haverobot == 1){
|
||||
do_start();
|
||||
}
|
||||
}
|
||||
} else if ((new Date()).getTime() > (new Date(o_match.endTime)).getTime()){
|
||||
cls_youle_room_backup.deletebackup_match(o_match);
|
||||
min_closetime(o_match.timer_start);
|
||||
if (o_match.timer_add_sysgrade){
|
||||
min_closetime(o_match.timer_add_sysgrade);
|
||||
}
|
||||
|
||||
if (o_match.ranklist.length > 0){
|
||||
var ary_playerid = "";
|
||||
var ary_nickname = "";
|
||||
var ary_avatar = "";
|
||||
var ary_roomcode = "";
|
||||
var ary_overtime = "";
|
||||
var ary_grade = "";
|
||||
var ary_isrobot = "";
|
||||
for (var i = 0; i < o_match.ranklist.length; i++) {
|
||||
if (i == 0){
|
||||
ary_playerid = o_match.ranklist[i].playerid;
|
||||
ary_nickname = o_match.ranklist[i].nickname;
|
||||
ary_avatar = o_match.ranklist[i].avatar;
|
||||
ary_roomcode = o_match.ranklist[i].roomcode;
|
||||
ary_overtime = o_match.ranklist[i].overtime;
|
||||
ary_grade = o_match.ranklist[i].grade;
|
||||
ary_isrobot = o_match.ranklist[i].isr;
|
||||
} else {
|
||||
ary_playerid = ary_playerid + "," + o_match.ranklist[i].playerid;
|
||||
ary_nickname = ary_nickname + "," + o_match.ranklist[i].nickname;
|
||||
ary_avatar = ary_avatar + "," + o_match.ranklist[i].avatar;
|
||||
ary_roomcode = ary_roomcode + "," + o_match.ranklist[i].roomcode;
|
||||
ary_overtime = ary_overtime + "," + o_match.ranklist[i].overtime;
|
||||
ary_grade = ary_grade + "," + o_match.ranklist[i].grade;
|
||||
ary_isrobot = ary_isrobot + "," + o_match.ranklist[i].isr;
|
||||
}
|
||||
};
|
||||
|
||||
var sql = "call cp_game_save_matchranking(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?);";
|
||||
youle_room.mysql_grade.execsql("execsql", sql, [o_agent.agentid, o_game.gameid, o_match.id, o_match.idx, o_match.matchname, o_match.beginTime, o_match.endTime, JSON.stringify(o_match.roomtype), o_match.imageurl, o_match.playercount, o_match.playercount2, o_match.bean, o_match.roomcard, o_match.topcount, o_match.circulation, o_match.interval, o_match.gradename, o_match.memo1, o_match.memo2, o_match.memo3, JSON.stringify(o_match.ranklist), ary_playerid, ary_nickname, ary_avatar, ary_roomcode, ary_overtime, ary_grade, ary_isrobot]);
|
||||
}
|
||||
|
||||
var idx = min_ary_indexof(o_match.o_matchlist.list, o_match.id, "id");
|
||||
if (idx > -1){
|
||||
o_match.o_matchlist.list.splice(idx, 1);
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
//随机上一个系统成绩
|
||||
add_sysgrade: function(o_match){
|
||||
if (o_match.sysgrade && o_match.sysgrade.length > 0){
|
||||
var robot_playerid = null;
|
||||
for (var j = 1; j < 10; j++) {
|
||||
robot_playerid = min_random(200000, 899999);
|
||||
if (min_ary_indexof(o_match.ranklist, robot_playerid, "playerid") > -1){
|
||||
robot_playerid = null;
|
||||
} else {
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (robot_playerid == null){
|
||||
return;
|
||||
}
|
||||
|
||||
var o_agent = o_match.o_game.o_agent;
|
||||
var robot_nickname = null;
|
||||
for (var j = 1; j < 10; j++) {
|
||||
var idx = min_random(0, o_agent.robot_nicknamelist.length - 1);
|
||||
robot_nickname = o_agent.robot_nicknamelist[idx];
|
||||
if (min_ary_indexof(o_match.ranklist, robot_nickname, "nickname") > -1){
|
||||
robot_nickname = null;
|
||||
} else {
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (robot_nickname == null){
|
||||
return;
|
||||
}
|
||||
|
||||
var robot_avatar = null;
|
||||
for (var j = 1; j < 10; j++) {
|
||||
var idx = min_random(0, o_agent.robot_avatarlist.length - 1);
|
||||
robot_avatar = o_agent.robot_avatarlist[idx];
|
||||
if (min_ary_indexof(o_match.ranklist, robot_avatar, "avatar") > -1){
|
||||
robot_avatar = null;
|
||||
} else {
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (robot_avatar == null){
|
||||
return;
|
||||
}
|
||||
|
||||
var rand = min_random(0, o_match.sysgrade.length - 1);
|
||||
var robot_grade = min_random(o_match.sysgrade[rand].min, o_match.sysgrade[rand].max);
|
||||
|
||||
var o_sysplayer = {};
|
||||
o_sysplayer.playerid = robot_playerid;
|
||||
o_sysplayer.nickname = robot_nickname;
|
||||
o_sysplayer.avatar = robot_avatar;
|
||||
o_sysplayer.roomcode = min_random(100000, 999999);
|
||||
o_sysplayer.overtime = min_now();
|
||||
o_sysplayer.grade = robot_grade;
|
||||
o_sysplayer.isr = 2;
|
||||
|
||||
var isfound = false;
|
||||
for (var j = 0; j < o_match.ranklist.length; j++) {
|
||||
if (o_sysplayer.grade > o_match.ranklist[j].grade){
|
||||
o_match.ranklist.splice(j, 0, o_sysplayer);
|
||||
if (o_match.ranklist.length > parseInt(o_match.topcount)){
|
||||
o_match.ranklist.length = parseInt(o_match.topcount);
|
||||
}
|
||||
isfound = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (!isfound){
|
||||
if (o_match.ranklist.length < parseInt(o_match.topcount)){
|
||||
o_match.ranklist.push(o_sysplayer);
|
||||
}
|
||||
}
|
||||
|
||||
o_match.sysgrade[rand].count = o_match.sysgrade[rand].count - 1;
|
||||
if (o_match.sysgrade[rand].count == 0){
|
||||
o_match.sysgrade.splice(rand, 1);
|
||||
}
|
||||
|
||||
cls_youle_room_backup.backup_match(o_match);
|
||||
|
||||
if (o_match.sysgrade.length == 0){
|
||||
if (o_match.timer_add_sysgrade){
|
||||
min_closetime(o_match.timer_add_sysgrade);
|
||||
o_match.timer_add_sysgrad = null;
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
//开启系统成绩定时器
|
||||
start_add_sysgrade_timer: function(o_match){
|
||||
if (o_match.sysgrade && !o_match.timer_add_sysgrade){
|
||||
var sum_count = 0;
|
||||
for (var i = 0; i < o_match.sysgrade.length; i++) {
|
||||
sum_count = sum_count + o_match.sysgrade[i].count;
|
||||
};
|
||||
var interval = (new Date(o_match.endTime)).getTime() - (new Date()).getTime();
|
||||
if (interval > 0 && sum_count > 0){
|
||||
interval = parseInt(interval / sum_count);
|
||||
o_match.timer_add_sysgrade = min_ontime(o_match.method.add_sysgrade, interval);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
///////////////////////////////////////////////////////////////
|
||||
/////////// cls_youle_agent_matchlist: 比赛列表 //////////
|
||||
///////////////////////////////////////////////////////////////
|
||||
var cls_youle_agent_matchlist = cls_youle_agent_matchlist || {
|
||||
//构造函数
|
||||
new: function(o_game) {
|
||||
|
||||
var matchlist = {};
|
||||
matchlist.o_game = o_game;
|
||||
matchlist.list = [];
|
||||
|
||||
matchlist.method = {};
|
||||
//载入一个比赛
|
||||
matchlist.method.load_match = function(o_setting){
|
||||
return cls_youle_agent_matchlist.load_match(matchlist, o_setting);
|
||||
};
|
||||
|
||||
//查找一个比赛
|
||||
matchlist.method.find_match = function(id, idx){
|
||||
return cls_youle_agent_matchlist.find_match(matchlist, id, idx);
|
||||
};
|
||||
|
||||
return matchlist;
|
||||
},
|
||||
|
||||
//载入一个比赛
|
||||
load_match: function(o_matchlist, o_setting){
|
||||
var o_match;
|
||||
var idx = min_ary_indexof(o_matchlist.list, o_setting.id, "id");
|
||||
if (idx == -1) {
|
||||
o_match = cls_youle_agent_match.new(o_matchlist.o_game, o_matchlist, o_setting);
|
||||
if (o_match){
|
||||
o_matchlist.list.push(o_match);
|
||||
}
|
||||
} else {
|
||||
o_match = o_matchlist.list[idx];
|
||||
}
|
||||
return o_match;
|
||||
},
|
||||
|
||||
//查找一个比赛
|
||||
find_match: function(o_matchlist, id, idx){
|
||||
var i = min_ary_indexof(o_matchlist.list, id, "id");
|
||||
if (i > -1){
|
||||
if (o_matchlist.list[i].idx == idx){
|
||||
return o_matchlist.list[i];
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
404
codes/games/sales_service/youle/server_agent/class.player.js
Normal file
404
codes/games/sales_service/youle/server_agent/class.player.js
Normal file
@@ -0,0 +1,404 @@
|
||||
///////////////////////////////////////////////////
|
||||
///////// cls_youle_agent_player: 玩家 /////////
|
||||
///////////////////////////////////////////////////
|
||||
var cls_youle_agent_player = cls_youle_agent_player || {
|
||||
//构造函数
|
||||
new: function(o_agent, playerid, roomcard, bean, openid, unionid, nickname, avatar, sex, playertype, invitecode) {
|
||||
var player = {};
|
||||
//基本信息
|
||||
player.o_agent = o_agent; //代理商
|
||||
player.playerid = playerid; //玩家id
|
||||
player.roomcard = roomcard; //房卡数量
|
||||
player.bean = bean; //星星数量
|
||||
player.openid = openid;
|
||||
player.unionid = unionid;
|
||||
player.nickname = nickname;
|
||||
player.avatar = avatar;
|
||||
player.sex = sex;
|
||||
player.playertype = playertype; //0:普通用户 1:vip开房不扣房卡
|
||||
player.invitecode = invitecode; //绑定的邀请码
|
||||
player.freetimer = null; //释放玩家的定时器
|
||||
//登录的游戏列表
|
||||
player.gameinfo = [];
|
||||
|
||||
//方法
|
||||
player.method = {};
|
||||
|
||||
//登录游戏
|
||||
player.method.login_game = function(o_game, ip, conmode, fromid, machineid, machineroom){
|
||||
cls_youle_agent_player.login_game(player, o_game, ip, conmode, fromid, machineid, machineroom);
|
||||
}
|
||||
|
||||
//获取玩家某个游戏的游戏信息
|
||||
player.method.get_gameinfo = function(o_game){
|
||||
return cls_youle_agent_player.get_gameinfo(player, o_game);
|
||||
}
|
||||
|
||||
//修改玩家房卡数量
|
||||
player.method.update_roomcard = function(type, newroomcrad, change, memo){
|
||||
cls_youle_agent_player.update_roomcard(player, type, newroomcrad, change, memo);
|
||||
}
|
||||
|
||||
//修改玩家豆豆数量
|
||||
player.method.update_bean = function(type, newbean, change, push, showrebate){
|
||||
cls_youle_agent_player.update_bean(player, type, newbean, change, push, showrebate);
|
||||
}
|
||||
|
||||
//打开释放玩家的定时器
|
||||
player.method.open_free_timer = function(){
|
||||
cls_youle_agent_player.open_free_timer(player);
|
||||
}
|
||||
|
||||
//关闭释放玩家的定时器
|
||||
player.method.close_free_timer = function(){
|
||||
cls_youle_agent_player.close_free_timer(player);
|
||||
}
|
||||
|
||||
return player;
|
||||
},
|
||||
|
||||
//登录游戏
|
||||
login_game: function(o_player, o_game, ip, conmode, fromid, machineid, machineroom){
|
||||
if (o_player.gameinfo.length <= o_game.idx) {
|
||||
o_player.gameinfo.length = o_game.idx + 1;
|
||||
}
|
||||
var _game_info = o_player.gameinfo[o_game.idx];
|
||||
if (!_game_info){
|
||||
//初始化游戏信息
|
||||
_game_info = {};
|
||||
_game_info.conmode = conmode;
|
||||
_game_info.fromid = fromid;
|
||||
_game_info.fromidtime = (new Date()).getTime();
|
||||
_game_info.ip = ip;
|
||||
_game_info.machineid = machineid;
|
||||
_game_info.machineroom = machineroom;
|
||||
_game_info.roomcode = null;
|
||||
o_player.gameinfo[o_game.idx] = _game_info;
|
||||
//统计在线玩家数
|
||||
o_game.method.online_p_chang(1);
|
||||
} else {
|
||||
//踢原有连接下线
|
||||
if (fromid && o_game.gameid != "G2hw0ubng0zcoI0r4mx3H2yr4GejidwO"){
|
||||
// if (fromid){
|
||||
if (_game_info.conmode == "tcp" && _game_info.fromid && _game_info.fromid != fromid){
|
||||
var msg = {};
|
||||
msg.app = youle_agent.app.appname;
|
||||
msg.route = youle_agent.routename;
|
||||
msg.rpc = "kick_offline";
|
||||
msg.conmode = _game_info.conmode;
|
||||
msg.fromid = _game_info.fromid;
|
||||
youle_agent.app.SendPack(msg);
|
||||
|
||||
//测试用
|
||||
// var agent_kick_offline = {};
|
||||
// agent_kick_offline.agentid = o_game.o_agent.agentid;
|
||||
// agent_kick_offline.gameid = o_game.gameid;
|
||||
// agent_kick_offline.playerid = o_player.playerid;
|
||||
// agent_kick_offline.oldfromid = _game_info.fromid;
|
||||
// agent_kick_offline.oldtime = _game_info.fromidtime;
|
||||
// agent_kick_offline.oldmachineid = _game_info.machineid;
|
||||
// agent_kick_offline.oldmachineroom = _game_info.machineroom;
|
||||
// agent_kick_offline.newfromid = fromid;
|
||||
// agent_kick_offline.newtime = (new Date()).getTime();
|
||||
// agent_kick_offline.newmachineid = machineid;
|
||||
// agent_kick_offline.newmachineroom = machineroom;
|
||||
// console.log(min_now() + " agentserver kick_offline");
|
||||
// console.log(agent_kick_offline);
|
||||
}
|
||||
|
||||
//更新游戏信息
|
||||
_game_info.conmode = conmode;
|
||||
_game_info.fromid = fromid;
|
||||
_game_info.fromidtime = (new Date()).getTime();
|
||||
_game_info.ip = ip;
|
||||
}
|
||||
}
|
||||
|
||||
//更新tcp连接列表
|
||||
if (conmode == "tcp"){
|
||||
youle_agent.tcps.method.load_tcp(fromid, o_player, o_game.idx);
|
||||
}
|
||||
},
|
||||
|
||||
//获取玩家某个游戏的游戏信息
|
||||
get_gameinfo: function(o_player, o_game){
|
||||
if (o_player.gameinfo.length <= o_game.idx){
|
||||
return null;
|
||||
}
|
||||
return o_player.gameinfo[o_game.idx];
|
||||
},
|
||||
|
||||
//修改玩家房卡数量
|
||||
update_roomcard: function(o_player, type, newroomcard, change, memo){
|
||||
var roomCardName = youle_agent.app.youle_platform.config.method.get_paravalue("roomCardName", o_player.o_agent.agentid);
|
||||
if (!roomCardName){
|
||||
roomCardName = "房卡";
|
||||
}
|
||||
o_player.roomcard = newroomcard;
|
||||
//通知游戏前端
|
||||
for (var i = 0; i < o_player.gameinfo.length; i++) {
|
||||
var _game_info = o_player.gameinfo[i];
|
||||
if (_game_info){
|
||||
if (_game_info.roomcode){
|
||||
//获取房号对应的房间服务器地址
|
||||
var o_game = o_player.o_agent.games[i];
|
||||
if (!o_game) {
|
||||
continue;
|
||||
}
|
||||
var o_roomserver = o_game.method.get_roomserver(_game_info.roomcode);
|
||||
|
||||
//通过房间服务器发送修改房卡的消息
|
||||
var msg = {};
|
||||
msg.app = youle_agent.app.appname;
|
||||
msg.route = youle_agent.app.youle_room.routename;
|
||||
msg.rpc = "update_roomcard";
|
||||
msg.data = {};
|
||||
msg.data.agentid = o_player.o_agent.agentid;
|
||||
msg.data.playerid = o_player.playerid;
|
||||
msg.data.gameid = o_game.gameid;
|
||||
msg.data.roomcode = _game_info.roomcode;
|
||||
msg.data.roomcard = newroomcard;
|
||||
// msg.data.type = type;
|
||||
// msg.data.change = change;
|
||||
switch(type){
|
||||
case 0:
|
||||
msg.data.text = "扣除" + roomCardName + ":" + change;
|
||||
if (memo){
|
||||
msg.data.text = memo + msg.data.text;
|
||||
}
|
||||
break;
|
||||
case 1:
|
||||
msg.data.text = "购买" + roomCardName + ":" + change;
|
||||
break;
|
||||
case 2:
|
||||
msg.data.text = roomCardName + "充值:" + change;
|
||||
break;
|
||||
case 3:
|
||||
msg.data.text = "领取" + roomCardName + "奖励:" + change;
|
||||
break;
|
||||
case 4:
|
||||
msg.data.text = "修改" + roomCardName + ":" + change;
|
||||
break;
|
||||
}
|
||||
|
||||
if (o_roomserver.server == o_player.o_agent.server){
|
||||
//房间服务器与代理商服务器是同一地址
|
||||
youle_agent.app.youle_room[msg.rpc](msg);
|
||||
msg.data.issameserver = 1;
|
||||
} else {
|
||||
//房间服务器与代理商服务器不是同一地址
|
||||
msg.data.issameserver = 0;
|
||||
var cfg = {};
|
||||
cfg.url = "http://" + o_roomserver.server + ":" + o_roomserver.httpport + "/index.html";
|
||||
cfg.type = "POST";
|
||||
cfg.data = JSON.stringify(msg);
|
||||
cfg.success = function(str){};
|
||||
cfg.error = function(str){};
|
||||
min_http(cfg);
|
||||
}
|
||||
} else if (_game_info.conmode && _game_info.fromid){
|
||||
var msg = {};
|
||||
msg.app = youle_agent.app.appname;
|
||||
msg.route = youle_agent.routename;
|
||||
msg.rpc = "update_roomcard";
|
||||
msg.conmode = _game_info.conmode;
|
||||
msg.fromid = _game_info.fromid;
|
||||
msg.data = {};
|
||||
msg.data.roomcard = newroomcard;
|
||||
// msg.data.type = type;
|
||||
// msg.data.change = change;
|
||||
switch(type){
|
||||
case 0:
|
||||
msg.data.text = "扣除" + roomCardName + ":" + change;
|
||||
if (memo){
|
||||
msg.data.text = memo + msg.data.text;
|
||||
}
|
||||
break;
|
||||
case 1:
|
||||
msg.data.text = "购买" + roomCardName + ":" + change;
|
||||
break;
|
||||
case 2:
|
||||
msg.data.text = roomCardName + "充值:" + change;
|
||||
break;
|
||||
case 3:
|
||||
msg.data.text = "领取" + roomCardName + "奖励:" + change;
|
||||
break;
|
||||
case 4:
|
||||
msg.data.text = "修改" + roomCardName + ":" + change;
|
||||
break;
|
||||
}
|
||||
youle_agent.app.SendPack(msg);
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
//修改玩家豆豆数量
|
||||
update_bean: function(o_player, type, newbean, change, push, showrebate){
|
||||
o_player.bean = parseInt(newbean);
|
||||
var starName = youle_agent.app.youle_platform.config.method.get_paravalue("starName", o_player.o_agent.agentid);
|
||||
if (!starName){
|
||||
starName = "星星";
|
||||
}
|
||||
//通知游戏前端
|
||||
for (var i = 0; i < o_player.gameinfo.length; i++) {
|
||||
var _game_info = o_player.gameinfo[i];
|
||||
if (_game_info){
|
||||
if (_game_info.roomcode){
|
||||
//获取房号对应的房间服务器地址
|
||||
var o_game = o_player.o_agent.games[i];
|
||||
var o_roomserver = o_game.method.get_roomserver(_game_info.roomcode);
|
||||
|
||||
//通过房间服务器发送修改星星的消息
|
||||
var msg = {};
|
||||
msg.app = youle_agent.app.appname;
|
||||
msg.route = youle_agent.app.youle_room.routename;
|
||||
msg.rpc = "update_bean";
|
||||
msg.data = {};
|
||||
msg.data.agentid = o_player.o_agent.agentid;
|
||||
msg.data.playerid = o_player.playerid;
|
||||
msg.data.gameid = o_game.gameid;
|
||||
msg.data.roomcode = _game_info.roomcode;
|
||||
msg.data.bean = parseInt(newbean);
|
||||
switch(type){
|
||||
case 0: //游戏输赢豆豆
|
||||
var _text = "";
|
||||
if (!showrebate){
|
||||
if (change > 0){
|
||||
_text = "游戏赢取" + starName + ":" + change;
|
||||
} else if (change < 0) {
|
||||
_text = "游戏扣除" + starName + ":" + change;
|
||||
}
|
||||
var _showrebate_setting = youle_agent.app.youle_platform.config.method.get_paravalue("shieldShowRebate", o_player.o_agent.agentid);
|
||||
if (!_showrebate_setting){
|
||||
if (push > 0){
|
||||
_text = _text + " 获取" + starName + "房间费:" + push;
|
||||
} else if (push < 0) {
|
||||
_text = _text + " 扣除" + starName + "房间费:" + push;
|
||||
}
|
||||
}
|
||||
} else if (showrebate == 1){
|
||||
if (change + push > 0){
|
||||
_text = "游戏赢取" + starName + ":" + (change + push);
|
||||
} else if (change + push < 0) {
|
||||
_text = "游戏扣除" + starName + ":" + (change + push);
|
||||
}
|
||||
} else if (showrebate == 2){
|
||||
var _showrebate_setting = youle_agent.app.youle_platform.config.method.get_paravalue("shieldShowRebate", o_player.o_agent.agentid);
|
||||
if (!_showrebate_setting){
|
||||
if(push){
|
||||
_text = "扣除房间费:" + push + starName;
|
||||
}
|
||||
}
|
||||
}
|
||||
msg.data.text = _text;
|
||||
break;
|
||||
case 1:
|
||||
msg.data.text = "购买" + starName + ":" + change;
|
||||
break;
|
||||
case 2:
|
||||
msg.data.text = starName + "充值:" + change;
|
||||
break;
|
||||
case 3:
|
||||
break;
|
||||
case 4:
|
||||
// msg.data.text = "扣除发送系统消息费用:" + change + starName;
|
||||
msg.data.text="";
|
||||
break;
|
||||
case 5:
|
||||
msg.data.text = "扣除比赛报名费用:" + push + starName;
|
||||
break;
|
||||
}
|
||||
|
||||
if (o_roomserver.server == o_player.o_agent.server){
|
||||
//房间服务器与代理商服务器是同一地址
|
||||
youle_agent.app.youle_room[msg.rpc](msg);
|
||||
} else {
|
||||
//房间服务器与代理商服务器不是同一地址
|
||||
var cfg = {};
|
||||
cfg.url = "http://" + o_roomserver.server + ":" + o_roomserver.httpport + "/index.html";
|
||||
cfg.type = "POST";
|
||||
cfg.data = JSON.stringify(msg);
|
||||
cfg.success = function(str){};
|
||||
cfg.error = function(str){};
|
||||
min_http(cfg);
|
||||
}
|
||||
} else if (_game_info.conmode && _game_info.fromid){
|
||||
var msg = {};
|
||||
msg.app = youle_agent.app.appname;
|
||||
msg.route = youle_agent.routename;
|
||||
msg.rpc = "update_bean";
|
||||
msg.conmode = _game_info.conmode;
|
||||
msg.fromid = _game_info.fromid;
|
||||
msg.data = {};
|
||||
msg.data.bean = parseInt(newbean);
|
||||
switch(type){
|
||||
case 0: //游戏输赢豆豆
|
||||
var _text = "";
|
||||
if (!showrebate){
|
||||
if (change > 0){
|
||||
_text = "游戏赢取" + starName + ":" + change;
|
||||
} else if (change < 0) {
|
||||
_text = "游戏扣除" + starName + ":" + change;
|
||||
}
|
||||
var _showrebate_setting = youle_agent.app.youle_platform.config.method.get_paravalue("shieldShowRebate", o_player.o_agent.agentid);
|
||||
if(!_showrebate_setting){
|
||||
if (push > 0){
|
||||
_text = _text + " 获取" + starName + "房间费:" + push;
|
||||
} else if (push < 0) {
|
||||
_text = _text + " 扣除" + starName + "房间费:" + push;
|
||||
}
|
||||
}
|
||||
} else if (showrebate == 1){
|
||||
if (change + push > 0){
|
||||
_text = "游戏赢取" + starName + ":" + (change + push);
|
||||
} else if (change + push < 0) {
|
||||
_text = "游戏扣除" + starName + ":" + (change + push);
|
||||
}
|
||||
} else if (showrebate == 2){
|
||||
var _showrebate_setting = youle_agent.app.youle_platform.config.method.get_paravalue("shieldShowRebate", o_player.o_agent.agentid);
|
||||
if (!_showrebate_setting){
|
||||
if(push){
|
||||
_text = "扣除房间费:" + push + starName;
|
||||
}
|
||||
}
|
||||
}
|
||||
msg.data.text = _text;
|
||||
break;
|
||||
case 1:
|
||||
msg.data.text = "购买" + starName + ":" + change;
|
||||
break;
|
||||
case 2:
|
||||
msg.data.text = starName + "充值:" + change;
|
||||
break;
|
||||
case 3:
|
||||
msg.data.text = "领取" + starName +"奖励:" + change;
|
||||
break;
|
||||
}
|
||||
youle_agent.app.SendPack(msg);
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
//打开释放玩家的定时器
|
||||
open_free_timer: function(o_player){
|
||||
var do_freeplayer = function(){
|
||||
o_player.freetimer = null;
|
||||
o_player.o_agent.players[o_player.playerid - 100001] = null;
|
||||
}
|
||||
|
||||
if (!o_player.advanced){
|
||||
//4小时后释放玩家
|
||||
o_player.freetimer = min_ontimeout(do_freeplayer, 7 * 24 * 60 * 60 * 1000);
|
||||
}
|
||||
},
|
||||
|
||||
//关闭释放玩家的定时器
|
||||
close_free_timer: function(o_player){
|
||||
if (o_player.freetimer){
|
||||
min_closetime(o_player.freetimer);
|
||||
o_player.freetimer = null;
|
||||
}
|
||||
}
|
||||
}
|
||||
120
codes/games/sales_service/youle/server_agent/class.tcplist.js
Normal file
120
codes/games/sales_service/youle/server_agent/class.tcplist.js
Normal file
@@ -0,0 +1,120 @@
|
||||
///////////////////////////////////////////////////
|
||||
//////////////cls_youle_agent_tcplist: tcp连接列表类///////////
|
||||
///////////////////////////////////////////////////
|
||||
var cls_youle_agent_tcplist = cls_youle_agent_tcplist || {
|
||||
new: function() {
|
||||
var tcplist = {};
|
||||
tcplist.list = [];
|
||||
|
||||
//方法
|
||||
tcplist.method = {};
|
||||
|
||||
//载入tcp连接
|
||||
tcplist.method.load_tcp = function(str_tcpid, o_player, gameidx){
|
||||
return cls_youle_agent_tcplist.load_tcp(tcplist, str_tcpid, o_player, gameidx);
|
||||
}
|
||||
|
||||
//查找tcp连接
|
||||
tcplist.method.find_tcp = function(str_tcpid){
|
||||
return cls_youle_agent_tcplist.find_tcp(tcplist, str_tcpid);
|
||||
}
|
||||
|
||||
//删除tcp连接
|
||||
tcplist.method.delete_tcp = function(str_tcpid){
|
||||
return cls_youle_agent_tcplist.delete_tcp(tcplist, str_tcpid);
|
||||
}
|
||||
|
||||
return tcplist;
|
||||
},
|
||||
|
||||
//载入tcp连接
|
||||
load_tcp: function(o_tcplsit, str_tcpid, o_player, gameidx){
|
||||
var idx = cls_youle_agent_tcplist.aryidx(str_tcpid);
|
||||
if (idx == -1){
|
||||
return null;
|
||||
}
|
||||
if (o_tcplsit.list.length <= idx){
|
||||
o_tcplsit.list.length = idx + 1;
|
||||
}
|
||||
|
||||
var old_tcp = o_tcplsit.list[idx];
|
||||
if (old_tcp){
|
||||
var _player = old_tcp.o_player;
|
||||
if (_player.playerid != o_player.playerid){
|
||||
var _gameidx = old_tcp.gameidx;
|
||||
if (_player.gameinfo[_gameidx]){
|
||||
if (_player.gameinfo[_gameidx].roomcode){
|
||||
_player.gameinfo[_gameidx].ip = null;
|
||||
_player.gameinfo[_gameidx].conmode = null;
|
||||
_player.gameinfo[_gameidx].fromid = null;
|
||||
} else {
|
||||
//如果不在房间内
|
||||
_player.gameinfo[_gameidx] = null;
|
||||
//判断是否要释放玩家
|
||||
var freeflag = true;
|
||||
for (var m = 0; m < _player.gameinfo.length; m++) {
|
||||
if (_player.gameinfo[m]){
|
||||
freeflag = false;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (freeflag){
|
||||
// _player.o_agent.players[_player.playerid - 100001] = null;
|
||||
_player.method.open_free_timer();
|
||||
}
|
||||
|
||||
//统计在线玩家数
|
||||
var o_game = _player.o_agent.games[_gameidx];
|
||||
if (o_game){
|
||||
o_game.method.online_p_chang(-1);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
var new_tcp = {};
|
||||
new_tcp.tcpid = str_tcpid;
|
||||
new_tcp.o_player = o_player;
|
||||
new_tcp.gameidx = gameidx;
|
||||
o_tcplsit.list[idx] = new_tcp;
|
||||
o_player.method.close_free_timer();
|
||||
return new_tcp;
|
||||
},
|
||||
|
||||
//查找tcp连接
|
||||
find_tcp: function(o_tcplsit, str_tcpid){
|
||||
var idx = cls_youle_agent_tcplist.aryidx(str_tcpid);
|
||||
if (idx == -1){
|
||||
return null;
|
||||
}
|
||||
if (o_tcplsit.list.length <= idx){
|
||||
return null;
|
||||
}
|
||||
return o_tcplsit.list[idx];
|
||||
},
|
||||
|
||||
//删除tcp连接
|
||||
delete_tcp: function(o_tcplsit, str_tcpid){
|
||||
var idx = cls_youle_agent_tcplist.aryidx(str_tcpid);
|
||||
if (idx == -1){
|
||||
return;
|
||||
}
|
||||
if (o_tcplsit.list.length <= idx){
|
||||
return;
|
||||
}
|
||||
o_tcplsit.list[idx] = null;
|
||||
},
|
||||
|
||||
//计算tcp连接的数组下标
|
||||
aryidx: function(str_tcpid){
|
||||
var idx = parseInt(str_tcpid.replace("tcp_", ""));
|
||||
if (isNaN(idx)){
|
||||
return -1;
|
||||
}
|
||||
return idx - 10000;
|
||||
}
|
||||
}
|
||||
|
||||
//tcp连接列表
|
||||
youle_agent.tcps = cls_youle_agent_tcplist.new();
|
||||
2228
codes/games/sales_service/youle/server_agent/mod.js
Normal file
2228
codes/games/sales_service/youle/server_agent/mod.js
Normal file
File diff suppressed because it is too large
Load Diff
6321
codes/games/sales_service/youle/server_agent/rpc.js
Normal file
6321
codes/games/sales_service/youle/server_agent/rpc.js
Normal file
File diff suppressed because it is too large
Load Diff
190
codes/games/sales_service/youle/server_platform/class.agent.js
Normal file
190
codes/games/sales_service/youle/server_platform/class.agent.js
Normal file
@@ -0,0 +1,190 @@
|
||||
///////////////////////////////////////////////////////////////
|
||||
/////////////// cls_youle_platform_agent: 运营商 /////////////////
|
||||
///////////////////////////////////////////////////////////////
|
||||
var cls_youle_platform_agent = cls_youle_platform_agent || {
|
||||
//构造函数
|
||||
new: function(agentid, name, logo, server, server_visitor, port_tcp, port_http, managecode){
|
||||
var agent = {};
|
||||
agent.agentid = agentid;
|
||||
agent.name = name;
|
||||
agent.logo = logo;
|
||||
agent.server = server;
|
||||
agent.server_visitor = server_visitor;
|
||||
agent.port_tcp = port_tcp;
|
||||
agent.port_http = port_http;
|
||||
agent.managecode = managecode;
|
||||
|
||||
//渠道列表
|
||||
agent.channels = [];
|
||||
|
||||
//方法
|
||||
agent.method = {};
|
||||
//载入渠道(没找到则创建)
|
||||
agent.method.load_channel = function(channelid, func_return){
|
||||
cls_youle_platform_agent.load_channel(agent, channelid, func_return);
|
||||
};
|
||||
|
||||
return agent;
|
||||
},
|
||||
|
||||
//载入渠道(没找到则创建)
|
||||
load_channel: function(o_agent, channelid, func_return){
|
||||
|
||||
var db_callback = function(dbdata) {
|
||||
var o_channel = {};
|
||||
o_channel.channelid = dbdata[0].agch_channelid;
|
||||
o_channel.tel = dbdata[0].agch_sales_tel;
|
||||
o_channel.wechat = dbdata[0].agch_sales_wechat;
|
||||
o_channel.youle_appid = dbdata[0].agch_youle_appid;
|
||||
o_channel.youle_devkey = dbdata[0].agch_youle_devkey;
|
||||
o_channel.youle_busiid = dbdata[0].agch_youle_busiid;
|
||||
|
||||
var idx = cls_youle_platform_agent.aryidx_channel(o_channel.channelid);
|
||||
if (o_agent.channels.length <= idx) {
|
||||
o_agent.channels.length = idx + 1;
|
||||
}
|
||||
o_agent.channels[idx] = o_channel;
|
||||
func_return(o_channel);
|
||||
}
|
||||
|
||||
if (!channelid){
|
||||
channelid = "";
|
||||
}
|
||||
var sql = "call cp_platform_get_agentchannel(?,?);";
|
||||
youle_platform.mysql.execsql("opensql", sql, [o_agent.agentid, channelid], db_callback);
|
||||
},
|
||||
|
||||
//计算渠道的数组下标
|
||||
aryidx_channel: function(channelid){
|
||||
//channelid的5、10、15、20四位组成数组下标
|
||||
var idx = parseInt(channelid.substr(4, 1)
|
||||
+ channelid.substr(9, 1)
|
||||
+ channelid.substr(14, 1)
|
||||
+ channelid.substr(19, 1));
|
||||
if (isNaN(idx)){
|
||||
return -1;
|
||||
}
|
||||
return idx;
|
||||
}
|
||||
}
|
||||
|
||||
///////////////////////////////////////////////////////////////
|
||||
/////////// cls_youle_platform_agentlist: 运营商列表 //////////
|
||||
///////////////////////////////////////////////////////////////
|
||||
var cls_youle_platform_agentlist = cls_youle_platform_agentlist || {
|
||||
//构造函数
|
||||
new: function() {
|
||||
|
||||
var agentlist = {};
|
||||
|
||||
//代理商列表
|
||||
agentlist.list = [];
|
||||
|
||||
//开启定时在每天凌晨3:00到4:00之间删除超时战绩的定时器
|
||||
var do_del_grade = function(){
|
||||
//判断时间是否在范围内
|
||||
var time_range = function (beginTime, endTime) {
|
||||
var strb = beginTime.split (":");
|
||||
if (strb.length != 2) {
|
||||
return false;
|
||||
}
|
||||
|
||||
var stre = endTime.split (":");
|
||||
if (stre.length != 2) {
|
||||
return false;
|
||||
}
|
||||
|
||||
var b = new Date();
|
||||
var e = new Date();
|
||||
var n = new Date();
|
||||
|
||||
b.setHours(strb[0]);
|
||||
b.setMinutes(strb[1]);
|
||||
e.setHours(stre[0]);
|
||||
e.setMinutes(stre[1]);
|
||||
|
||||
if (n.getTime() > b.getTime() && n.getTime() < e.getTime()){
|
||||
return true;
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
if (time_range("3:00", "4:00")){
|
||||
var sql = "call cp_game_del_timeout_task(null);";
|
||||
youle_platform.mysql.execsql("execsql", sql, []);
|
||||
}
|
||||
if (time_range("4:00", "5:00")){
|
||||
var sql = "call cp_game_grade_del();";
|
||||
youle_platform.mysql_grade.execsql("execsql", sql, []);
|
||||
}
|
||||
}
|
||||
agentlist.timer_delgrade = min_ontime(do_del_grade, 59 * 60 * 1000);
|
||||
|
||||
|
||||
//方法
|
||||
agentlist.method = {};
|
||||
|
||||
//载入代理商(没找到则创建)
|
||||
agentlist.method.load_agent = function(agentid, func_return){
|
||||
var o_agent = agentlist.method.find_agent(agentid);
|
||||
if (o_agent){
|
||||
func_return(o_agent);
|
||||
} else {
|
||||
var db_callback = function(dbdata) {
|
||||
var db_agentid = dbdata[0].agen_agentid;
|
||||
var db_name = dbdata[0].agen_name;
|
||||
var db_logo = dbdata[0].agen_logo;
|
||||
var db_server = dbdata[0].agen_server;
|
||||
var db_server_visitor = dbdata[0].agen_server_visitor;
|
||||
var db_port_tcp = parseInt(dbdata[0].agen_port_tcp);
|
||||
var db_port_http = parseInt(dbdata[0].agen_port_http);
|
||||
var db_managecode = dbdata[0].agen_managecode;
|
||||
o_agent = cls_youle_platform_agent.new(db_agentid, db_name, db_logo, db_server, db_server_visitor, db_port_tcp, db_port_http, db_managecode);
|
||||
var idx = agentlist.method.aryidx_agent(db_agentid);
|
||||
agentlist.list[idx] = o_agent;
|
||||
func_return(o_agent);
|
||||
}
|
||||
var sql = "call cp_platform_get_agentserver(?);";
|
||||
youle_platform.mysql.execsql("opensql", sql, [agentid], db_callback);
|
||||
}
|
||||
};
|
||||
|
||||
//查找运营商
|
||||
agentlist.method.find_agent = function(agentid){
|
||||
var idx = agentlist.method.aryidx_agent(agentid);
|
||||
if (idx == -1){
|
||||
return null;
|
||||
}
|
||||
if (agentlist.list.length <= idx){
|
||||
return null;
|
||||
}
|
||||
if (!agentlist.list[idx]){
|
||||
return null;
|
||||
}
|
||||
if (agentlist.list[idx].agentid != agentid){
|
||||
return null;
|
||||
}
|
||||
return agentlist.list[idx];
|
||||
};
|
||||
|
||||
//计算运营商的数组下标
|
||||
agentlist.method.aryidx_agent = function(agentid) {
|
||||
//agentid的5、10、15、20四位组成数组下标
|
||||
var idx = parseInt(agentid.substr(4, 1)
|
||||
+ agentid.substr(9, 1)
|
||||
+ agentid.substr(14, 1)
|
||||
+ agentid.substr(19, 1));
|
||||
if (isNaN(idx)){
|
||||
return -1;
|
||||
}
|
||||
return idx;
|
||||
};
|
||||
|
||||
return agentlist;
|
||||
}
|
||||
}
|
||||
|
||||
//运营商列表
|
||||
youle_platform.agents = cls_youle_platform_agentlist.new();
|
||||
303
codes/games/sales_service/youle/server_platform/class.config.js
Normal file
303
codes/games/sales_service/youle/server_platform/class.config.js
Normal file
@@ -0,0 +1,303 @@
|
||||
///////////////////////////////////////////////////////////////
|
||||
//////////// cls_youle_platform_config: 系统配置 //////////////
|
||||
///////////////////////////////////////////////////////////////
|
||||
var cls_youle_platform_config = cls_youle_platform_config || {
|
||||
//构造函数
|
||||
new: function(_url_config){
|
||||
|
||||
var config = {};
|
||||
|
||||
//方法
|
||||
config.method = {};
|
||||
//读取配置文件的内容
|
||||
config.method.get_config = function(){
|
||||
cls_youle_platform_config.get_config(config);
|
||||
}
|
||||
//获取参数配置
|
||||
config.method.get_paravalue = function(paraname, agentid, gameid, channelid, marketid){
|
||||
return cls_youle_platform_config.get_paravalue(config, paraname, agentid, gameid, channelid, marketid);
|
||||
}
|
||||
|
||||
//获取游戏列表_下载页面
|
||||
config.method.get_gamelist_downhtml = function(agentid, channelid){
|
||||
return cls_youle_platform_config.get_gamelist_downhtml(config, agentid, channelid);
|
||||
}
|
||||
|
||||
//获取游戏列表_游戏大厅
|
||||
config.method.get_gamelist_gamehall = function(agentid, channelid, marketid){
|
||||
return cls_youle_platform_config.get_gamelist_gamehall(config, agentid, channelid, marketid);
|
||||
}
|
||||
|
||||
//获取代理城市列表
|
||||
config.method.get_agentlist = function(agentid, channelid){
|
||||
return cls_youle_platform_config.get_agentlist(config, agentid, channelid);
|
||||
}
|
||||
|
||||
//获取子游戏服务器列表
|
||||
config.method.get_gameserver_list = function(agentid){
|
||||
return cls_youle_platform_config.get_gameserver_list(config, agentid);
|
||||
}
|
||||
|
||||
//配置文件地址
|
||||
config.url = _url_config;
|
||||
//配置文件内容
|
||||
config.data = null;
|
||||
//定时器定时读取配置文件
|
||||
config.timer_getdata = min_ontime(config.method.get_config, 30 * 1000);
|
||||
|
||||
return config;
|
||||
},
|
||||
|
||||
//读取配置文件的内容
|
||||
get_config: function(o_config){
|
||||
var cfg = {};
|
||||
cfg.url = o_config.url + "?" + min_timestamp();
|
||||
cfg.type = "POST";
|
||||
cfg.data = "";
|
||||
cfg.success = function(str){
|
||||
if (str){
|
||||
try{
|
||||
var data = JSON.parse(str);
|
||||
o_config.data = data;
|
||||
}
|
||||
catch(e){
|
||||
}
|
||||
}
|
||||
};
|
||||
cfg.error = function(str){};
|
||||
min_http(cfg);
|
||||
},
|
||||
|
||||
//获取参数配置
|
||||
get_paravalue: function(o_config, paraname, agentid, gameid, channelid, marketid){
|
||||
var paravalue = null;
|
||||
//遍历数组,匹配key,获取参数值
|
||||
var do_get_para = function(arylist, keyname, keyvalue){
|
||||
if (arylist && keyname && keyvalue){
|
||||
for (var i = 0; i < arylist.length; i++){
|
||||
if (arylist[i][keyname] == keyvalue){
|
||||
if (arylist[i][paraname]){
|
||||
paravalue = arylist[i][paraname];
|
||||
}
|
||||
return arylist[i];
|
||||
}
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
if (!o_config.data){
|
||||
return paravalue;
|
||||
}
|
||||
if (o_config.data[paraname]){
|
||||
paravalue = o_config.data[paraname];
|
||||
}
|
||||
var _o_agent = do_get_para(o_config.data.agentlist, "agentid", agentid);
|
||||
if (!_o_agent){
|
||||
return paravalue;
|
||||
}
|
||||
var _o_game = do_get_para(_o_agent.gamelist, "gameid", gameid);
|
||||
if (!_o_game){
|
||||
return paravalue;
|
||||
}
|
||||
var _o_channel = do_get_para(_o_game.channellist, "channelid", channelid);
|
||||
if (!_o_channel){
|
||||
return paravalue;
|
||||
}
|
||||
var _o_market = do_get_para(_o_channel.marketlist, "marketid", marketid);
|
||||
if (!_o_market){
|
||||
return paravalue;
|
||||
}
|
||||
|
||||
return paravalue;
|
||||
},
|
||||
|
||||
//获取游戏列表_下载页面
|
||||
get_gamelist_downhtml: function(o_config, agentid, channelid){
|
||||
var gamelist = [];
|
||||
if (!o_config.data){
|
||||
return gamelist;
|
||||
}
|
||||
if (!o_config.data.agentlist){
|
||||
return gamelist;
|
||||
}
|
||||
for (var i = 0; i < o_config.data.agentlist.length; i++){
|
||||
if (o_config.data.agentlist[i].agentid == agentid){
|
||||
var _o_agent = o_config.data.agentlist[i];
|
||||
if (_o_agent.gamelist){
|
||||
for (var j = 0; j < _o_agent.gamelist.length; j++) {
|
||||
var _o_game = _o_agent.gamelist[j];
|
||||
var o_game = {};
|
||||
o_game.name = _o_game.gamename;
|
||||
o_game.image = _o_game.game_down_image;
|
||||
o_game.state = _o_game.game_down_state;
|
||||
o_game.memo = _o_game.game_down_memo;
|
||||
if (_o_game.channellist){
|
||||
for (var k = 0; k < _o_game.channellist.length; k++) {
|
||||
var _o_channel = _o_game.channellist[k];
|
||||
if (_o_channel.channelid == channelid){
|
||||
var _ios_marketid = _o_channel.ios_defdownload_marketid;
|
||||
var _and_marketid = _o_channel.and_defdownload_marketid;
|
||||
if (_o_channel.marketlist){
|
||||
for (var m = 0; m < _o_channel.marketlist.length; m++) {
|
||||
var _o_market = _o_channel.marketlist[m];
|
||||
if (_o_market.marketid == _ios_marketid){
|
||||
o_game.ios_down = _o_market.app_download;
|
||||
o_game.ios_size = _o_market.app_size;
|
||||
o_game.ios_marketid = _ios_marketid;
|
||||
}
|
||||
if (_o_market.marketid == _and_marketid){
|
||||
o_game.android_down = _o_market.app_download;
|
||||
o_game.android_size = _o_market.app_size;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (o_game.ios_down && o_game.android_down){
|
||||
gamelist.push(o_game);
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
return gamelist;
|
||||
},
|
||||
|
||||
//获取游戏列表_游戏大厅
|
||||
get_gamelist_gamehall: function(o_config, agentid, channelid, marketid){
|
||||
var gamelist = [];
|
||||
if (!o_config.data){
|
||||
return gamelist;
|
||||
}
|
||||
if (!o_config.data.agentlist){
|
||||
return gamelist;
|
||||
}
|
||||
for (var i = 0; i < o_config.data.agentlist.length; i++){
|
||||
if (o_config.data.agentlist[i].agentid == agentid){
|
||||
var _o_agent = o_config.data.agentlist[i];
|
||||
if (_o_agent.gamelist){
|
||||
for (var j = 0; j < _o_agent.gamelist.length; j++){
|
||||
var _o_game = _o_agent.gamelist[j];
|
||||
if (_o_game.gameid != "G2hw0ubng0zcoI0r4mx3H2yr4GejidwO"){
|
||||
var o_game = {};
|
||||
o_game.gameid = _o_game.gameid;
|
||||
o_game.gamename = _o_game.gamename;
|
||||
o_game.gamedir = _o_game.game_hall_dir;
|
||||
o_game.gameimage = _o_game.game_hall_image;
|
||||
o_game.gameversion = _o_game.game_version;
|
||||
o_game.gamezip = _o_game.game_zip;
|
||||
o_game.zipsize = _o_game.game_size;
|
||||
if (_o_game.channellist){
|
||||
for (var k = 0; k < _o_game.channellist.length; k++) {
|
||||
var _o_channel = _o_game.channellist[k];
|
||||
if (_o_channel.channelid == channelid){
|
||||
if (_o_channel.game_version > 0){
|
||||
o_game.gameversion = _o_channel.game_version;
|
||||
}
|
||||
if (_o_channel.game_zip){
|
||||
o_game.gamezip = _o_channel.game_zip;
|
||||
}
|
||||
if (_o_channel.game_size){
|
||||
o_game.zipsize = _o_channel.game_size;
|
||||
}
|
||||
if (_o_channel.marketlist){
|
||||
for (var m = 0; m < _o_channel.marketlist.length; m++) {
|
||||
var _o_market = _o_channel.marketlist[m];
|
||||
if (_o_market.marketid == marketid){
|
||||
if (_o_market.game_version > 0){
|
||||
o_game.gameversion = _o_market.game_version;
|
||||
}
|
||||
if (_o_market.game_zip){
|
||||
o_game.gamezip = _o_market.game_zip;
|
||||
}
|
||||
if (_o_market.game_size){
|
||||
o_game.zipsize = _o_market.game_size;
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
gamelist.push(o_game);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
return gamelist;
|
||||
},
|
||||
|
||||
//获取代理城市列表
|
||||
get_agentlist: function(o_config, agentid, channelid){
|
||||
var agentlist = [];
|
||||
if (!o_config.data){
|
||||
return gamelist;
|
||||
}
|
||||
if (!o_config.data.agentlist){
|
||||
return gamelist;
|
||||
}
|
||||
for (var i = 0; i < o_config.data.agentlist.length; i++){
|
||||
if (o_config.data.agentlist[i].agentid == agentid || o_config.data.agentlist[i].relagentid == agentid){
|
||||
var o_agent = {};
|
||||
o_agent.agentid = o_config.data.agentlist[i].agentid;
|
||||
o_agent.name = o_config.data.agentlist[i].agentname;
|
||||
o_agent.channelid = o_config.data.agentlist[i].gamelist[0].channellist[0].channelid;
|
||||
|
||||
agentlist.push(o_agent);
|
||||
}
|
||||
}
|
||||
return agentlist;
|
||||
},
|
||||
|
||||
//获取子游戏服务器列表
|
||||
get_gameserver_list: function(o_config, agentid){
|
||||
var iplist = [];
|
||||
var paraname = "game_server_http";
|
||||
var do_pushto_iplist = function(ip){
|
||||
var idx = min_ary_indexof(iplist, ip);
|
||||
if (idx == -1){
|
||||
iplist.push(ip);
|
||||
}
|
||||
}
|
||||
|
||||
if (!o_config.data || !o_config.data.agentlist){
|
||||
return iplist;
|
||||
}
|
||||
var idx_agent = min_ary_indexof(o_config.data.agentlist, agentid, "agentid");
|
||||
if (idx_agent == -1){
|
||||
return iplist;
|
||||
}
|
||||
var o_agent = o_config.data.agentlist[idx_agent];
|
||||
if (!o_agent){
|
||||
return iplist;
|
||||
}
|
||||
if (o_config.data[paraname]){
|
||||
do_pushto_iplist(o_config.data[paraname]);
|
||||
}
|
||||
if (o_agent[paraname]){
|
||||
do_pushto_iplist(o_agent.data[paraname]);
|
||||
}
|
||||
if (o_agent.gamelist){
|
||||
for (var j = 0; j < o_agent.gamelist.length; j++) {
|
||||
var o_game = o_agent.gamelist[j];
|
||||
if (o_game[paraname]){
|
||||
do_pushto_iplist(o_game[paraname]);
|
||||
}
|
||||
}
|
||||
}
|
||||
return iplist;
|
||||
}
|
||||
}
|
||||
|
||||
//系统配置
|
||||
youle_platform.config = cls_youle_platform_config.new("http://testgame.youlehdyx.com/update_json/ceshi_json.txt");
|
||||
youle_platform.config.method.get_config();
|
||||
|
||||
210
codes/games/sales_service/youle/server_platform/mod.js
Normal file
210
codes/games/sales_service/youle/server_platform/mod.js
Normal file
@@ -0,0 +1,210 @@
|
||||
//////////////////////////////////////////////////////////////////
|
||||
//////////////////////////游戏平台服务器//////////////////////////
|
||||
//////////////////////////////////////////////////////////////////
|
||||
//系统配置
|
||||
min_loadJsFile("youle/server_platform/class.config.js", function(){
|
||||
//运营商
|
||||
min_loadJsFile("youle/server_platform/class.agent.js", function(){
|
||||
|
||||
});
|
||||
});
|
||||
|
||||
var youle_platform = youle_platform || cls_mod.new("youle_platform", "platform", youle_app);
|
||||
|
||||
//运营商列表
|
||||
youle_platform.agents = null;
|
||||
//系统配置
|
||||
youle_platform.config = null;
|
||||
//mysql操作类
|
||||
youle_platform.mysql = cls_mysql.new("http://ylyxdata.daoqi88.cn/mysql.php", youle_platform.app.SendPack);
|
||||
youle_platform.mysql_grade = cls_mysql.new("http://ylyxdata.daoqi88.cn/mysql_grade.php", youle_platform.app.SendPack);
|
||||
|
||||
//游戏获取代理商服务器地址
|
||||
youle_platform.agentserver_game = function(pack){
|
||||
var agentid = pack.data.agentid;
|
||||
var gameid = pack.data.gameid;
|
||||
var channelid = pack.data.channelid;
|
||||
var marketid = pack.data.marketid;
|
||||
//返回运营商信息
|
||||
var do_return_agentinfo = function(o_agent){
|
||||
if (!o_agent){
|
||||
return;
|
||||
}
|
||||
pack.data = {};
|
||||
pack.data.state = 0;
|
||||
pack.data.agentid = o_agent.agentid;
|
||||
pack.data.urlserver = o_agent.server + ":" + o_agent.port_tcp;
|
||||
pack.data.visitorserver = o_agent.server_visitor + ":" + o_agent.port_tcp;
|
||||
pack.data.urlserver_http = o_agent.server + ":" + o_agent.port_http;
|
||||
pack.data.visitorserver_http = o_agent.server_visitor + ":" + o_agent.port_http;
|
||||
//系统配置json
|
||||
pack.data.logimage = youle_platform.config.method.get_paravalue("logimage", agentid, gameid, channelid, marketid);
|
||||
pack.data.loginimage = parseInt(youle_platform.config.method.get_paravalue("loginimage", agentid, gameid, channelid, marketid));
|
||||
youle_platform.app.SendPack(pack);
|
||||
}
|
||||
youle_platform.agents.method.load_agent(agentid, do_return_agentinfo);
|
||||
}
|
||||
|
||||
//公众号页面获取代理商的服务器地址
|
||||
youle_platform.agentserver_web = function(pack){
|
||||
var agentid = pack.data.agentid;
|
||||
var channelid = pack.data.channelid;
|
||||
//返回运营商信息
|
||||
var do_return_agentinfo = function(o_agent){
|
||||
if (!o_agent){
|
||||
return;
|
||||
}
|
||||
pack.data = {};
|
||||
pack.data.agentid = o_agent.agentid;
|
||||
pack.data.agentname = o_agent.name;
|
||||
pack.data.agentlogo = youle_platform.config.method.get_paravalue('logimage2', o_agent.agentid);
|
||||
pack.data.html_buyroomcard = parseInt(youle_platform.config.method.get_paravalue('html_buyroomcard', o_agent.agentid));
|
||||
pack.data.urlserver = "http://" + o_agent.server + ":" + o_agent.port_http;
|
||||
//返回渠道商信息
|
||||
var do_return_channelinfo = function(o_channel){
|
||||
pack.data.channelid = o_channel.channelid;
|
||||
pack.data.channeltel = o_channel.tel;
|
||||
pack.data.channelwechat = o_channel.wechat;
|
||||
pack.data.youle_appid = o_channel.youle_appid;
|
||||
pack.data.youle_devkey = o_channel.youle_devkey;
|
||||
pack.data.youle_busiid = o_channel.youle_busiid;
|
||||
youle_platform.app.SendPack(pack);
|
||||
}
|
||||
o_agent.method.load_channel(channelid, do_return_channelinfo);
|
||||
}
|
||||
youle_platform.agents.method.load_agent(agentid, do_return_agentinfo);
|
||||
}
|
||||
|
||||
//关闭服务器
|
||||
youle_platform.close_agentserver = function(pack){
|
||||
var agentid = pack.data.agentid;
|
||||
var managecode = pack.data.managecode;
|
||||
//返回运营商信息
|
||||
var do_return_agentinfo = function(o_agent){
|
||||
if (!o_agent){
|
||||
return;
|
||||
}
|
||||
if (o_agent.managecode != managecode){
|
||||
pack.data = {};
|
||||
pack.data.state = 1;
|
||||
youle_platform.app.SendPack(pack);
|
||||
}
|
||||
|
||||
var msg = {};
|
||||
msg.app = "youle";
|
||||
msg.route = "agent";
|
||||
msg.rpc = "close_agentserver";
|
||||
msg.data = {};
|
||||
msg.data.agentid = agentid;
|
||||
msg.data.managecode = managecode;
|
||||
|
||||
var cfg = {};
|
||||
cfg.url = "http://" + o_agent.server + ":" + o_agent.port_http + "/index.html";
|
||||
cfg.type = "POST";
|
||||
cfg.data = JSON.stringify(msg);
|
||||
cfg.success = function(str){
|
||||
if (str){
|
||||
var _msg = JSON.parse(str);
|
||||
pack.data = _msg.data;
|
||||
youle_agent.app.SendPack(pack);
|
||||
}
|
||||
};
|
||||
cfg.error = function(str){
|
||||
pack.data = {};
|
||||
pack.data.state = 1;
|
||||
youle_platform.app.SendPack(pack);
|
||||
};
|
||||
min_http(cfg);
|
||||
}
|
||||
youle_platform.agents.method.load_agent(agentid, do_return_agentinfo);
|
||||
}
|
||||
|
||||
//开启服务器
|
||||
youle_platform.open_agentserver = function(pack){
|
||||
var agentid = pack.data.agentid;
|
||||
var managecode = pack.data.managecode;
|
||||
//返回运营商信息
|
||||
var do_return_agentinfo = function(o_agent){
|
||||
if (!o_agent){
|
||||
return;
|
||||
}
|
||||
if (o_agent.managecode != managecode){
|
||||
pack.data = {};
|
||||
pack.data.state = 1;
|
||||
youle_platform.app.SendPack(pack);
|
||||
}
|
||||
|
||||
var msg = {};
|
||||
msg.app = "youle";
|
||||
msg.route = "agent";
|
||||
msg.rpc = "open_agentserver";
|
||||
msg.data = {};
|
||||
msg.data.agentid = agentid;
|
||||
msg.data.managecode = managecode;
|
||||
|
||||
var cfg = {};
|
||||
cfg.url = "http://" + o_agent.server + ":" + o_agent.port_http + "/index.html";
|
||||
cfg.type = "POST";
|
||||
cfg.data = JSON.stringify(msg);
|
||||
cfg.success = function(str){
|
||||
if (str){
|
||||
var _msg = JSON.parse(str);
|
||||
pack.data = _msg.data;
|
||||
youle_agent.app.SendPack(pack);
|
||||
}
|
||||
};
|
||||
cfg.error = function(str){
|
||||
pack.data = {};
|
||||
pack.data.state = 1;
|
||||
youle_platform.app.SendPack(pack);
|
||||
};
|
||||
min_http(cfg);
|
||||
}
|
||||
youle_platform.agents.method.load_agent(agentid, do_return_agentinfo);
|
||||
}
|
||||
|
||||
//广播即时消息
|
||||
youle_platform.broadcast = function(pack){
|
||||
var agentid = pack.data.agentid;
|
||||
var managecode = pack.data.managecode;
|
||||
var msgcontent = pack.data.msgcontent;
|
||||
//返回运营商信息
|
||||
var do_return_agentinfo = function(o_agent){
|
||||
if (!o_agent){
|
||||
return;
|
||||
}
|
||||
if (o_agent.managecode != managecode){
|
||||
pack.data = {};
|
||||
pack.data.state = 1;
|
||||
youle_platform.app.SendPack(pack);
|
||||
}
|
||||
|
||||
var msg = {};
|
||||
msg.app = "youle";
|
||||
msg.route = "agent";
|
||||
msg.rpc = "broadcast";
|
||||
msg.data = {};
|
||||
msg.data.agentid = agentid;
|
||||
msg.data.managecode = managecode;
|
||||
msg.data.msgcontent = msgcontent;
|
||||
|
||||
var cfg = {};
|
||||
cfg.url = "http://" + o_agent.server + ":" + o_agent.port_http + "/index.html";
|
||||
cfg.type = "POST";
|
||||
cfg.data = JSON.stringify(msg);
|
||||
cfg.success = function(str){
|
||||
if (str){
|
||||
var _msg = JSON.parse(str);
|
||||
pack.data = _msg.data;
|
||||
youle_agent.app.SendPack(pack);
|
||||
}
|
||||
};
|
||||
cfg.error = function(str){
|
||||
pack.data = {};
|
||||
pack.data.state = 1;
|
||||
youle_platform.app.SendPack(pack);
|
||||
};
|
||||
min_http(cfg);
|
||||
}
|
||||
youle_platform.agents.method.load_agent(agentid, do_return_agentinfo);
|
||||
}
|
||||
163
codes/games/sales_service/youle/server_room/class.agent.js
Normal file
163
codes/games/sales_service/youle/server_room/class.agent.js
Normal file
@@ -0,0 +1,163 @@
|
||||
///////////////////////////////////////////////////////////////
|
||||
//////////////// cls_youle_room_agent: 运营商 /////////////////
|
||||
///////////////////////////////////////////////////////////////
|
||||
var cls_youle_room_agent = cls_youle_room_agent || {
|
||||
//构造函数
|
||||
new: function(agentid, name, server, tcpport, httpport, freeroom){
|
||||
var agent = {};
|
||||
agent.agentid = agentid; //运营商id
|
||||
agent.agentname = name; //运营商名称
|
||||
agent.server = server; //运营商服务器地址
|
||||
agent.tcpport = tcpport; //运营商服务器tcp端口
|
||||
agent.httpport = httpport; //运营商服务器http端口
|
||||
agent.freeroom = freeroom; //默认同意解散房间的倒计时,秒
|
||||
|
||||
//游戏列表
|
||||
agent.games = [];
|
||||
|
||||
//方法
|
||||
agent.method = {};
|
||||
//载入游戏(没找到则创建)
|
||||
agent.method.load_game = function(gameid, gamename, seatcount, makewar, modename, roomserver, tcpport, httpport, minroomcode, maxroomcode){
|
||||
return cls_youle_room_agent.load_game(agent, gameid, gamename, seatcount, makewar, modename, roomserver, tcpport, httpport, minroomcode, maxroomcode);
|
||||
};
|
||||
//查找游戏
|
||||
agent.method.find_game = function(gameid){
|
||||
return cls_youle_room_agent.find_game(agent, gameid);
|
||||
};
|
||||
|
||||
return agent;
|
||||
},
|
||||
|
||||
//载入游戏(没找到则创建)
|
||||
load_game: function(o_agent, gameid, gamename, seatcount, makewar, modename, roomserver, tcpport, httpport, minroomcode, maxroomcode){
|
||||
var idx = cls_youle_room_agent.aryidx_game(gameid);
|
||||
if (o_agent.games.length <= idx) {
|
||||
o_agent.games.length = idx + 1;
|
||||
}
|
||||
var o_game = o_agent.games[idx];
|
||||
if (!o_game){
|
||||
//不存在则创建
|
||||
o_game = cls_youle_room_game.new(o_agent, gameid, idx, gamename, seatcount, makewar, modename, roomserver, tcpport, httpport, minroomcode, maxroomcode);
|
||||
o_agent.games[idx] = o_game;
|
||||
} else {
|
||||
o_game.idx = idx;
|
||||
o_game.gamename = gamename;
|
||||
o_game.seatcount = seatcount;
|
||||
o_game.makewar = makewar;
|
||||
o_game.modename = modename;
|
||||
o_game.roomserver = roomserver;
|
||||
o_game.tcpport = tcpport;
|
||||
o_game.httpport = httpport;
|
||||
o_game.minroomcode = minroomcode;
|
||||
o_game.maxroomcode = maxroomcode;
|
||||
}
|
||||
return o_game;
|
||||
},
|
||||
|
||||
//查找游戏
|
||||
find_game: function(o_agent, gameid){
|
||||
var idx = cls_youle_room_agent.aryidx_game(gameid);
|
||||
if (idx == -1){
|
||||
return null;
|
||||
}
|
||||
if (o_agent.games.length <= idx){
|
||||
return null;
|
||||
}
|
||||
if (!o_agent.games[idx]){
|
||||
return null;
|
||||
}
|
||||
if (o_agent.games[idx].gameid != gameid){
|
||||
return null;
|
||||
}
|
||||
return o_agent.games[idx];
|
||||
},
|
||||
|
||||
//计算游戏的数组下标
|
||||
aryidx_game: function(gameid){
|
||||
//gameid的5、10、15、20四位组成数组下标
|
||||
var idx = parseInt(gameid.substr(4, 1)
|
||||
+ gameid.substr(9, 1)
|
||||
+ gameid.substr(14, 1)
|
||||
+ gameid.substr(19, 1));
|
||||
if (isNaN(idx)){
|
||||
return -1;
|
||||
}
|
||||
return idx;
|
||||
}
|
||||
}
|
||||
|
||||
///////////////////////////////////////////////////////////////
|
||||
/////////// cls_youle_room_agentlist: 运营商列表 //////////
|
||||
///////////////////////////////////////////////////////////////
|
||||
var cls_youle_room_agentlist = cls_youle_room_agentlist || {
|
||||
//构造函数
|
||||
new: function() {
|
||||
var agentlist = {};
|
||||
//代理商列表
|
||||
agentlist.list = [];
|
||||
|
||||
//方法
|
||||
agentlist.method = {};
|
||||
|
||||
//载入代理商(没找到则创建)
|
||||
agentlist.method.load_agent = function(agentid, name, server, tcpport, httpport, freeroom){
|
||||
var idx = agentlist.method.aryidx_agent(agentid);
|
||||
if (idx == -1){
|
||||
return null;
|
||||
}
|
||||
if (agentlist.list.length <= idx) {
|
||||
agentlist.list.length = idx + 1;
|
||||
}
|
||||
var o_agent = agentlist.list[idx];
|
||||
if (!o_agent) {
|
||||
//不存在则创建
|
||||
o_agent = cls_youle_room_agent.new(agentid, name, server, tcpport, httpport, freeroom);
|
||||
agentlist.list[idx] = o_agent;
|
||||
} else {
|
||||
o_agent.agentname = name;
|
||||
o_agent.server = server;
|
||||
o_agent.tcpport = tcpport;
|
||||
o_agent.httpport = httpport;
|
||||
o_agent.freeroom = freeroom;
|
||||
}
|
||||
return o_agent;
|
||||
};
|
||||
|
||||
//查找运营商
|
||||
agentlist.method.find_agent = function(agentid){
|
||||
var idx = agentlist.method.aryidx_agent(agentid);
|
||||
if (idx == -1){
|
||||
return null;
|
||||
}
|
||||
if (agentlist.list.length <= idx){
|
||||
return null;
|
||||
}
|
||||
if (!agentlist.list[idx]){
|
||||
return null;
|
||||
}
|
||||
if (agentlist.list[idx].agentid != agentid){
|
||||
return null;
|
||||
}
|
||||
return agentlist.list[idx];
|
||||
};
|
||||
|
||||
//计算运营商的数组下标
|
||||
agentlist.method.aryidx_agent = function(agentid) {
|
||||
//agentid的5、10、15、20四位组成数组下标
|
||||
var idx = parseInt(agentid.substr(4, 1)
|
||||
+ agentid.substr(9, 1)
|
||||
+ agentid.substr(14, 1)
|
||||
+ agentid.substr(19, 1));
|
||||
if (isNaN(idx)){
|
||||
return -1;
|
||||
}
|
||||
return idx;
|
||||
};
|
||||
|
||||
return agentlist;
|
||||
}
|
||||
}
|
||||
|
||||
//运营商列表
|
||||
youle_room.agents = cls_youle_room_agentlist.new();
|
||||
732
codes/games/sales_service/youle/server_room/class.backup.js
Normal file
732
codes/games/sales_service/youle/server_room/class.backup.js
Normal file
@@ -0,0 +1,732 @@
|
||||
///////////////////////////////////////////////////
|
||||
//////////////cls_youle_room_backup: 数据备份类///////////
|
||||
///////////////////////////////////////////////////
|
||||
var cls_youle_room_backup = cls_youle_room_backup || {
|
||||
|
||||
isloading: true,
|
||||
|
||||
// backup_room: function(o_room, o_deskinfo){
|
||||
// try {
|
||||
// if (!o_room){
|
||||
// return;
|
||||
// }
|
||||
// if (!o_room.battlestate){
|
||||
// return;
|
||||
// }
|
||||
|
||||
// var agentid = o_room.o_game.o_agent.agentid;
|
||||
// var gameid = o_room.o_game.gameid;
|
||||
// var roomcode = o_room.roomcode;
|
||||
|
||||
// var _o_agent = youle_agent.agents.method.find_agent(agentid);
|
||||
|
||||
// var data_agent = [];
|
||||
// data_agent[0] = o_room.o_game.o_agent.agentid;
|
||||
// data_agent[1] = o_room.o_game.o_agent.agentname;
|
||||
// data_agent[2] = o_room.o_game.o_agent.server;
|
||||
// data_agent[3] = o_room.o_game.o_agent.tcpport;
|
||||
// data_agent[4] = o_room.o_game.o_agent.httpport;
|
||||
// data_agent[5] = o_room.o_game.o_agent.freeroom;
|
||||
// data_agent[6] = _o_agent.managecode;
|
||||
// localStorage.setItem(agentid, JSON.stringify(data_agent));
|
||||
|
||||
// var data_game = [];
|
||||
// data_game[0] = o_room.o_game.o_agent.agentid;
|
||||
// data_game[1] = o_room.o_game.gameid;
|
||||
// data_game[2] = o_room.o_game.gamename;
|
||||
// data_game[3] = o_room.o_game.seatcount;
|
||||
// data_game[4] = o_room.o_game.makewar;
|
||||
// data_game[5] = o_room.o_game.modename;
|
||||
// data_game[6] = o_room.o_game.roomserver;
|
||||
// data_game[7] = o_room.o_game.tcpport;
|
||||
// data_game[8] = o_room.o_game.httpport;
|
||||
// data_game[9] = o_room.o_game.minroomcode;
|
||||
// data_game[10] = o_room.o_game.maxroomcode;
|
||||
// localStorage.setItem(agentid + "_" + gameid, JSON.stringify(data_game));
|
||||
|
||||
// var data_room = [];
|
||||
// data_room[0] = o_room.o_game.o_agent.agentid;
|
||||
// data_room[1] = o_room.o_game.gameid;
|
||||
// data_room[2] = o_room.roomcode;
|
||||
// data_room[3] = o_room.roomtype;
|
||||
// data_room[4] = o_room.needroomcard;
|
||||
// data_room[5] = o_room.asetcount;
|
||||
// data_room[6] = o_room.createtime;
|
||||
// data_room[7] = o_room.battlestate;
|
||||
// data_room[8] = o_room.makewartime;
|
||||
// data_room[9] = o_room.wasdeduct;
|
||||
// data_room[10] = o_room.roommode;
|
||||
// data_room[11] = o_room.infinite;
|
||||
// data_room[12] = [];
|
||||
// for (var i = 0; i < o_room.seatlist.length; i++) {
|
||||
// data_room[12][i] = null;
|
||||
// if (o_room.seatlist[i]){
|
||||
// data_room[12][i] = [];
|
||||
// data_room[12][i][0] = o_room.seatlist[i].playerid;
|
||||
// data_room[12][i][1] = o_room.seatlist[i].nickname;
|
||||
// data_room[12][i][2] = o_room.seatlist[i].avatar;
|
||||
// data_room[12][i][3] = o_room.seatlist[i].sex;
|
||||
// data_room[12][i][4] = o_room.seatlist[i].playertype;
|
||||
// data_room[12][i][5] = o_room.seatlist[i].gameinfo.seat;
|
||||
// data_room[12][i][6] = o_room.seatlist[i].gameinfo.isowner;
|
||||
// data_room[12][i][7] = o_room.seatlist[i].gameinfo.isbet;
|
||||
// data_room[12][i][8] = o_room.seatlist[i].gameinfo.grade;
|
||||
|
||||
// var _o_player = _o_agent.method.find_player(o_room.seatlist[i].playerid);
|
||||
// data_room[12][i][9] = _o_player.roomcard;
|
||||
// data_room[12][i][10] = _o_player.bean;
|
||||
|
||||
// if (!o_room.seatlist[i].gameinfo.isowner) {
|
||||
// data_room[12][i][11] = o_room.seatlist[i].needroomcard;
|
||||
// data_room[12][i][12] = o_room.seatlist[i].wasdeduct;
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
// data_room[13] = o_deskinfo;
|
||||
// localStorage.setItem(agentid + "_" + gameid + "_" + roomcode, JSON.stringify(data_room));
|
||||
// } catch (e) {
|
||||
// if (e.name == 'QuotaExceededError') {
|
||||
// console.log(min_now() + ' 超出localStorage存储限额!');
|
||||
// } else {
|
||||
// console.log(min_now() + ' 保存localStorage失败');
|
||||
// }
|
||||
// }
|
||||
// },
|
||||
|
||||
backup_room: function(o_room, o_deskinfo){
|
||||
try {
|
||||
if (!o_room){
|
||||
return;
|
||||
}
|
||||
if (!o_room.battlestate){
|
||||
return;
|
||||
}
|
||||
if (!dbObject){
|
||||
return;
|
||||
}
|
||||
|
||||
var agentid = o_room.o_game.o_agent.agentid;
|
||||
var gameid = o_room.o_game.gameid;
|
||||
var roomcode = o_room.roomcode;
|
||||
|
||||
var _o_agent = youle_agent.agents.method.find_agent(agentid);
|
||||
|
||||
var data_agent = [];
|
||||
data_agent[0] = o_room.o_game.o_agent.agentid;
|
||||
data_agent[1] = o_room.o_game.o_agent.agentname;
|
||||
data_agent[2] = o_room.o_game.o_agent.server;
|
||||
data_agent[3] = o_room.o_game.o_agent.tcpport;
|
||||
data_agent[4] = o_room.o_game.o_agent.httpport;
|
||||
data_agent[5] = o_room.o_game.o_agent.freeroom;
|
||||
data_agent[6] = _o_agent.managecode;
|
||||
data_agent[7] = _o_agent.shortcodes;
|
||||
data_agent[8] = _o_agent.rebate_mode1;
|
||||
data_agent[9] = _o_agent.rebate_set1;
|
||||
data_agent[10] = _o_agent.rebate_mode2;
|
||||
data_agent[11] = _o_agent.rebate_set2;
|
||||
data_agent[12] = _o_agent.robot_nicknamelist;
|
||||
data_agent[13] = _o_agent.robot_avatarlist;
|
||||
data_agent[14] = _o_agent.initCard;
|
||||
data_agent[15] = _o_agent.initBean;
|
||||
|
||||
dbObject.put(agentid, data_agent);
|
||||
|
||||
var data_game = [];
|
||||
data_game[0] = o_room.o_game.o_agent.agentid;
|
||||
data_game[1] = o_room.o_game.gameid;
|
||||
data_game[2] = o_room.o_game.gamename;
|
||||
data_game[3] = o_room.o_game.seatcount;
|
||||
data_game[4] = o_room.o_game.makewar;
|
||||
data_game[5] = o_room.o_game.modename;
|
||||
data_game[6] = o_room.o_game.roomserver;
|
||||
data_game[7] = o_room.o_game.tcpport;
|
||||
data_game[8] = o_room.o_game.httpport;
|
||||
data_game[9] = o_room.o_game.minroomcode;
|
||||
data_game[10] = o_room.o_game.maxroomcode;
|
||||
dbObject.put(agentid + "_" + gameid, data_game);
|
||||
|
||||
var data_room = [];
|
||||
data_room[0] = o_room.o_game.o_agent.agentid;
|
||||
data_room[1] = o_room.o_game.gameid;
|
||||
data_room[2] = o_room.roomcode;
|
||||
data_room[3] = o_room.roomtype;
|
||||
data_room[4] = o_room.needroomcard;
|
||||
data_room[5] = o_room.asetcount;
|
||||
data_room[6] = o_room.createtime;
|
||||
data_room[7] = o_room.battlestate;
|
||||
data_room[8] = o_room.makewartime;
|
||||
data_room[9] = o_room.wasdeduct;
|
||||
data_room[10] = o_room.roommode;
|
||||
data_room[11] = o_room.infinite;
|
||||
data_room[12] = [];
|
||||
for (var i = 0; i < o_room.seatlist.length; i++) {
|
||||
data_room[12][i] = null;
|
||||
if (o_room.seatlist[i]){
|
||||
data_room[12][i] = [];
|
||||
data_room[12][i][0] = o_room.seatlist[i].playerid;
|
||||
data_room[12][i][1] = o_room.seatlist[i].nickname;
|
||||
data_room[12][i][2] = o_room.seatlist[i].avatar;
|
||||
data_room[12][i][3] = o_room.seatlist[i].sex;
|
||||
data_room[12][i][4] = o_room.seatlist[i].playertype;
|
||||
data_room[12][i][5] = o_room.seatlist[i].gameinfo.seat;
|
||||
data_room[12][i][6] = o_room.seatlist[i].gameinfo.isowner;
|
||||
data_room[12][i][7] = o_room.seatlist[i].gameinfo.isbet;
|
||||
data_room[12][i][8] = o_room.seatlist[i].gameinfo.grade;
|
||||
|
||||
var _o_player = _o_agent.method.find_player(o_room.seatlist[i].playerid);
|
||||
data_room[12][i][9] = _o_player.roomcard;
|
||||
data_room[12][i][10] = _o_player.bean;
|
||||
|
||||
if (!o_room.seatlist[i].gameinfo.isowner) {
|
||||
data_room[12][i][11] = o_room.seatlist[i].needroomcard;
|
||||
data_room[12][i][12] = o_room.seatlist[i].wasdeduct;
|
||||
}
|
||||
data_room[12][i][13] = o_room.seatlist[i].gameinfo.isprepare;
|
||||
data_room[12][i][14] = _o_player.advanced;
|
||||
data_room[12][i][15] = _o_player.shortcode;
|
||||
data_room[12][i][16] = _o_player.roomcodes;
|
||||
data_room[12][i][17] = _o_player.bankpower;
|
||||
data_room[12][i][18] = _o_player.bank;
|
||||
data_room[12][i][19] = _o_player.bankpwd;
|
||||
}
|
||||
}
|
||||
data_room[13] = o_deskinfo;
|
||||
data_room[14] = o_room.advanced_type;
|
||||
data_room[15] = o_room.advanced_teabean;
|
||||
data_room[16] = o_room.beanfloor;
|
||||
data_room[17] = o_room.needprepare;
|
||||
data_room[18] = o_room.beanmult;
|
||||
data_room[19] = [];
|
||||
data_room[19][0] = o_room.owner.playerid;
|
||||
data_room[19][1] = o_room.owner.nickname;
|
||||
data_room[19][2] = o_room.owner.avatar;
|
||||
data_room[19][3] = o_room.owner.sex;
|
||||
data_room[19][4] = o_room.owner.playertype;
|
||||
var _o_owner = _o_agent.method.find_player(o_room.owner.playerid);
|
||||
data_room[19][5] = _o_owner.roomcard;
|
||||
data_room[19][6] = _o_owner.bean;
|
||||
data_room[19][7] = _o_owner.advanced;
|
||||
data_room[19][8] = _o_owner.shortcode;
|
||||
data_room[19][9] = _o_owner.roomcodes;
|
||||
data_room[20] = o_room.match_id;
|
||||
data_room[21] = o_room.match_idx;
|
||||
|
||||
dbObject.put(agentid + "_" + gameid + "_" + roomcode, data_room);
|
||||
}catch(e){}
|
||||
},
|
||||
|
||||
// deletebackup_room: function(o_room){
|
||||
// var agentid = o_room.o_game.o_agent.agentid;
|
||||
// var gameid = o_room.o_game.gameid;
|
||||
// var roomcode = o_room.roomcode;
|
||||
// localStorage.removeItem(agentid + "_" + gameid + "_" + roomcode);
|
||||
// },
|
||||
|
||||
deletebackup_room: function(o_room){
|
||||
if (!dbObject){
|
||||
return;
|
||||
}
|
||||
var agentid = o_room.o_game.o_agent.agentid;
|
||||
var gameid = o_room.o_game.gameid;
|
||||
var roomcode = o_room.roomcode;
|
||||
dbObject.delete(agentid + "_" + gameid + "_" + roomcode);
|
||||
},
|
||||
|
||||
backup_match: function(o_match){
|
||||
try{
|
||||
if (!o_match){
|
||||
return;
|
||||
}
|
||||
if (!dbObject){
|
||||
return;
|
||||
}
|
||||
|
||||
var agentid = o_match.o_game.o_agent.agentid;
|
||||
var gameid = o_match.o_game.gameid;
|
||||
var matchid = o_match.id;
|
||||
|
||||
var data_agent = [];
|
||||
data_agent[0] = o_match.o_game.o_agent.agentid;
|
||||
data_agent[1] = o_match.o_game.o_agent.agentname;
|
||||
data_agent[2] = o_match.o_game.o_agent.server;
|
||||
data_agent[3] = o_match.o_game.o_agent.tcpport;
|
||||
data_agent[4] = o_match.o_game.o_agent.httpport;
|
||||
data_agent[5] = o_match.o_game.o_agent.freeroom;
|
||||
data_agent[6] = o_match.o_game.o_agent.managecode;
|
||||
data_agent[7] = o_match.o_game.o_agent.shortcodes;
|
||||
data_agent[8] = o_match.o_game.o_agent.rebate_mode1;
|
||||
data_agent[9] = o_match.o_game.o_agent.rebate_set1;
|
||||
data_agent[10] = o_match.o_game.o_agent.rebate_mode2;
|
||||
data_agent[11] = o_match.o_game.o_agent.rebate_set2;
|
||||
dbObject.put(agentid, data_agent);
|
||||
|
||||
var data_game = [];
|
||||
var _o_agent = youle_room.agents.method.find_agent(agentid);
|
||||
var _o_game = _o_agent.method.find_game(gameid);
|
||||
data_game[0] = agentid;
|
||||
data_game[1] = gameid;
|
||||
data_game[2] = _o_game.gamename;
|
||||
data_game[3] = _o_game.seatcount;
|
||||
data_game[4] = _o_game.makewar;
|
||||
data_game[5] = _o_game.modename;
|
||||
data_game[6] = _o_game.roomserver;
|
||||
data_game[7] = _o_game.tcpport;
|
||||
data_game[8] = _o_game.httpport;
|
||||
data_game[9] = _o_game.minroomcode;
|
||||
data_game[10] = _o_game.maxroomcode;
|
||||
dbObject.put(agentid + "_" + gameid, data_game);
|
||||
|
||||
var data_match = [];
|
||||
data_match[0] = agentid;
|
||||
data_match[1] = gameid;
|
||||
data_match[2] = matchid;
|
||||
data_match[3] = o_match.roomtype;
|
||||
data_match[4] = o_match.matchname;
|
||||
data_match[5] = o_match.imageurl;
|
||||
data_match[6] = o_match.playercount;
|
||||
data_match[7] = o_match.playercount2;
|
||||
data_match[8] = o_match.bean;
|
||||
data_match[9] = o_match.roomcard;
|
||||
data_match[10] = o_match.topcount;
|
||||
data_match[11] = o_match.circulation;
|
||||
data_match[12] = o_match.interval;
|
||||
data_match[13] = o_match.gradename;
|
||||
data_match[14] = o_match.memo1;
|
||||
data_match[15] = o_match.memo2;
|
||||
data_match[16] = o_match.memo3;
|
||||
data_match[17] = o_match.idx;
|
||||
data_match[18] = o_match.beginTime;
|
||||
data_match[19] = o_match.endTime;
|
||||
data_match[20] = o_match.isstart;
|
||||
data_match[21] = o_match.playerlist;
|
||||
data_match[22] = o_match.ranklist;
|
||||
data_match[23] = o_match.ranking;
|
||||
|
||||
dbObject.put(agentid + "_" + gameid + "_" + matchid, data_match);
|
||||
}catch(e){}
|
||||
},
|
||||
|
||||
deletebackup_match: function(o_match){
|
||||
if (!dbObject){
|
||||
return;
|
||||
}
|
||||
var agentid = o_match.o_game.o_agent.agentid;
|
||||
var gameid = o_match.o_game.gameid;
|
||||
var matchid = o_match.id;
|
||||
dbObject.delete(agentid + "_" + gameid + "_" + matchid);
|
||||
},
|
||||
|
||||
// restore: function(){
|
||||
// cls_youle_room_backup.isloading = true;
|
||||
|
||||
// var game1list = [];
|
||||
|
||||
// for (var i = 0; i < localStorage.length; i++) {
|
||||
// var key_room = localStorage.key(i);
|
||||
// if (key_room.length != 72) {
|
||||
// continue;
|
||||
// }
|
||||
// var value_room = localStorage.getItem(key_room);
|
||||
// if (!value_room) {
|
||||
// continue;
|
||||
// }
|
||||
// try {
|
||||
// var data_room = JSON.parse(value_room);
|
||||
// var agentid = data_room[0];
|
||||
// var gameid = data_room[1];
|
||||
// var roomcode = data_room[2];
|
||||
// var roomtype = data_room[3];
|
||||
// var needroomcard = data_room[4];
|
||||
// var asetcount = data_room[5];
|
||||
// var createtime = data_room[6];
|
||||
// var battlestate = data_room[7];
|
||||
// var makewartime = data_room[8];
|
||||
// var wasdeduct = data_room[9];
|
||||
// var roommode = data_room[10];
|
||||
// var infinite = data_room[11];
|
||||
// var playerlist = data_room[12];
|
||||
// var o_deskinfo = data_room[13];
|
||||
|
||||
|
||||
// var value_agent = localStorage.getItem(agentid);
|
||||
// if (!value_agent) {
|
||||
// continue;
|
||||
// }
|
||||
// var data_agent = JSON.parse(value_agent);
|
||||
// var agentname = data_agent[1];
|
||||
// var agentserver = data_agent[2];
|
||||
// var agenttcpport = data_agent[3];
|
||||
// var agenthttpport = data_agent[4];
|
||||
// var agentfreeroom = data_agent[5];
|
||||
// var managecode = data_agent[6];
|
||||
// var o_agent1 = youle_agent.agents.method.load_agent(agentid, agentname, agentserver, agenttcpport, agenthttpport, agentfreeroom, managecode);
|
||||
// var o_agent2 = youle_room.agents.method.load_agent(agentid, agentname, agentserver, agenttcpport, agenthttpport, agentfreeroom);
|
||||
|
||||
|
||||
// var value_game = localStorage.getItem(agentid + "_" + gameid);
|
||||
// if (!value_game) {
|
||||
// continue;
|
||||
// }
|
||||
// var data_game = JSON.parse(value_game);
|
||||
// var gamename = data_game[2];
|
||||
// var seatcount = data_game[3];
|
||||
// var makewar = data_game[4];
|
||||
// var modename = data_game[5];
|
||||
// var roomserver = data_game[6];
|
||||
// var gametcpport = data_game[7];
|
||||
// var gamehttpport = data_game[8];
|
||||
// var minroomcode = data_game[9];
|
||||
// var maxroomcode = data_game[10];
|
||||
// var o_game1 = o_agent1.method.load_game(gameid, gamename, minroomcode, maxroomcode, seatcount, makewar, modename);
|
||||
// var o_game2 = o_agent2.method.load_game(gameid, gamename, seatcount, makewar, modename, roomserver, gametcpport, gamehttpport, minroomcode, maxroomcode);
|
||||
// o_game1.roomcodes[roomcode - minroomcode] = 0;
|
||||
// var game1_isfound = false;
|
||||
// for (var j = 0; j < game1list.length; j++) {
|
||||
// if (game1list[j] == o_game1) {
|
||||
// game1_isfound = true;
|
||||
// break;
|
||||
// }
|
||||
// }
|
||||
// if (!game1_isfound){
|
||||
// game1list.push(o_game1);
|
||||
// }
|
||||
|
||||
|
||||
// var o_room2 = o_game2.method.create_room(roomcode, roomtype, needroomcard, asetcount);
|
||||
// o_room2.createtime = createtime;
|
||||
// o_room2.battlestate = battlestate;
|
||||
// o_room2.makewartime = makewartime;
|
||||
// o_room2.wasdeduct = wasdeduct;
|
||||
// o_room2.roommode = roommode;
|
||||
// o_room2.infinite = infinite;
|
||||
|
||||
|
||||
// for (var j = 0; j < playerlist.length; j++) {
|
||||
// var o_player = playerlist[j];
|
||||
// if (o_player){
|
||||
// var playerid = o_player[0];
|
||||
// var nickname = o_player[1];
|
||||
// var avatar = o_player[2];
|
||||
// var sex = o_player[3];
|
||||
// var playertype = o_player[4];
|
||||
// var seat = o_player[5];
|
||||
// var isowner = o_player[6];
|
||||
// var isbet = o_player[7];
|
||||
// var grade = o_player[8];
|
||||
// var roomcard = o_player[9];
|
||||
// var bean = o_player[10];
|
||||
// var needroomcard = o_player[11];
|
||||
// var wasdeduct = o_player[12];
|
||||
// var o_player1 = o_agent1.method.load_player(playerid, roomcard, bean, null, null, nickname, avatar, sex, playertype, null);
|
||||
// o_player1.method.login_game(o_game1);
|
||||
// o_player1.gameinfo[o_game1.idx].roomcode = roomcode;
|
||||
// var o_player2 = cls_youle_room_player.new(playerid, nickname, avatar, sex, playertype);
|
||||
// o_player2.method.enter_room(o_room2, seat, isowner);
|
||||
// o_player2.gameinfo.isbet = isbet;
|
||||
// o_player2.gameinfo.grade = grade;
|
||||
// o_player2.gameinfo.isowner = isowner;
|
||||
// if (!isowner){
|
||||
// o_player2.needroomcard = needroomcard;
|
||||
// o_player2.wasdeduct = wasdeduct;
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
|
||||
// youle_room.import.restore_room(o_room2, o_deskinfo);
|
||||
// } catch(e) {
|
||||
// continue;
|
||||
// }
|
||||
// }
|
||||
|
||||
// for (var i = 0; i < game1list.length; i++) {
|
||||
// var o_game1 = game1list[i];
|
||||
// for (var k = 0; k < o_game1.roomcodesvalidlen; k++) {
|
||||
// if (!o_game1.roomcodes[k]){
|
||||
// if (k < o_game1.roomcodesvalidlen - 1) {
|
||||
// o_game1.roomcodes[k] = o_game1.roomcodes[o_game1.roomcodesvalidlen - 1];
|
||||
// k = k - 1;
|
||||
// }
|
||||
// o_game1.roomcodes[o_game1.roomcodesvalidlen - 1] = 0;
|
||||
// o_game1.method.roomcodesvalidlen_chang(-1);
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
|
||||
// cls_youle_room_backup.isloading = false;
|
||||
// },
|
||||
|
||||
restore: function(){
|
||||
var do_opensuccess = function(){
|
||||
dbObject.get_cursor(do_getsuccess, do_geterror);
|
||||
}
|
||||
var do_openerror = function(){
|
||||
cls_youle_room_backup.isloading = false;
|
||||
}
|
||||
var do_getsuccess = function(db_store_cursor){
|
||||
if (db_store_cursor){
|
||||
try{
|
||||
if (db_store_cursor.key.length == 32){
|
||||
var data_agent = db_store_cursor.value;
|
||||
var agentid = data_agent[0];
|
||||
var agentname = data_agent[1];
|
||||
var agentserver = data_agent[2];
|
||||
var agenttcpport = data_agent[3];
|
||||
var agenthttpport = data_agent[4];
|
||||
var agentfreeroom = data_agent[5];
|
||||
var managecode = data_agent[6];
|
||||
var shortcodes = data_agent[7];
|
||||
var rebate_mode1 = data_agent[8];
|
||||
var rebate_set1 = data_agent[9];
|
||||
var rebate_mode2 = data_agent[10];
|
||||
var rebate_set2 = data_agent[11];
|
||||
var robot_nicknamelist = data_agent[12];
|
||||
var robot_avatarlist = data_agent[13];
|
||||
var initCard = data_agent[14];
|
||||
var initBean = data_agent[15];
|
||||
var o_agent1 = youle_agent.agents.method.load_agent(agentid, agentname, agentserver, agenttcpport, agenthttpport, agentfreeroom, managecode,initCard,initBean);
|
||||
o_agent1.shortcodes = shortcodes;
|
||||
o_agent1.rebate_mode1 = rebate_mode1;
|
||||
o_agent1.rebate_set1 = rebate_set1;
|
||||
o_agent1.rebate_mode2 = rebate_mode2;
|
||||
o_agent1.rebate_set2 = rebate_set2;
|
||||
o_agent1.robot_nicknamelist = robot_nicknamelist;
|
||||
o_agent1.robot_avatarlist = robot_avatarlist;
|
||||
var o_agent2 = youle_room.agents.method.load_agent(agentid, agentname, agentserver, agenttcpport, agenthttpport, agentfreeroom);
|
||||
} else if (db_store_cursor.key.length == 65){
|
||||
var data_game = db_store_cursor.value;
|
||||
var agentid = data_game[0];
|
||||
var gameid = data_game[1];
|
||||
var gamename = data_game[2];
|
||||
var seatcount = data_game[3];
|
||||
var makewar = data_game[4];
|
||||
var modename = data_game[5];
|
||||
var roomserver = data_game[6];
|
||||
var gametcpport = data_game[7];
|
||||
var gamehttpport = data_game[8];
|
||||
var minroomcode = data_game[9];
|
||||
var maxroomcode = data_game[10];
|
||||
var o_agent1 = youle_agent.agents.method.find_agent(agentid);
|
||||
var o_agent2 = youle_room.agents.method.find_agent(agentid);
|
||||
var o_game1 = o_agent1.method.load_game(gameid, gamename, minroomcode, maxroomcode, seatcount, makewar, modename);
|
||||
var o_game2 = o_agent2.method.load_game(gameid, gamename, seatcount, makewar, modename, roomserver, gametcpport, gamehttpport, minroomcode, maxroomcode);
|
||||
game1list.push(o_game1);
|
||||
} else if (db_store_cursor.key.length == 72){
|
||||
var data_room = db_store_cursor.value;
|
||||
var agentid = data_room[0];
|
||||
var gameid = data_room[1];
|
||||
var roomcode = data_room[2];
|
||||
var roomtype = data_room[3];
|
||||
var needroomcard = data_room[4];
|
||||
var asetcount = data_room[5];
|
||||
var createtime = data_room[6];
|
||||
var battlestate = data_room[7];
|
||||
var makewartime = data_room[8];
|
||||
var wasdeduct = data_room[9];
|
||||
var roommode = data_room[10];
|
||||
var infinite = data_room[11];
|
||||
var playerlist = data_room[12];
|
||||
var o_deskinfo = data_room[13];
|
||||
var advanced_type = data_room[14];
|
||||
var advanced_teabean = data_room[15];
|
||||
var beanfloor = data_room[16];
|
||||
var needprepare = data_room[17];
|
||||
var beanmult = data_room[18];
|
||||
var match_id = data_room[20];
|
||||
var match_idx = data_room[21];
|
||||
var o_agent1 = youle_agent.agents.method.find_agent(agentid);
|
||||
var o_agent2 = youle_room.agents.method.find_agent(agentid);
|
||||
var o_game1 = o_agent1.method.find_game(gameid);
|
||||
var o_game2 = o_agent2.method.find_game(gameid);
|
||||
|
||||
// o_game1.roomcodes[roomcode - o_game1.minroomcode] = 0;
|
||||
o_game1.method.new_roomcode(roomcode);
|
||||
|
||||
var o_room2 = o_game2.method.create_room(roomcode, roomtype, needroomcard, asetcount);
|
||||
o_room2.createtime = createtime;
|
||||
o_room2.battlestate = battlestate;
|
||||
o_room2.makewartime = makewartime;
|
||||
o_room2.wasdeduct = wasdeduct;
|
||||
o_room2.roommode = roommode;
|
||||
o_room2.infinite = infinite;
|
||||
o_room2.advanced_type = advanced_type;
|
||||
o_room2.advanced_teabean = advanced_teabean;
|
||||
o_room2.beanfloor = beanfloor;
|
||||
o_room2.needprepare = needprepare;
|
||||
o_room2.beanmult = beanmult;
|
||||
if (match_id){
|
||||
o_room2.match_id = match_id;
|
||||
o_room2.match_idx = match_idx;
|
||||
}
|
||||
if (!o_room2.advanced_type){
|
||||
if (o_room2.freetimer24){
|
||||
min_closetime(o_room2.freetimer24);
|
||||
o_room2.freetimer24 = null;
|
||||
}
|
||||
}
|
||||
|
||||
for (var j = 0; j < playerlist.length; j++) {
|
||||
var o_player = playerlist[j];
|
||||
if (o_player){
|
||||
var playerid = o_player[0];
|
||||
var nickname = o_player[1];
|
||||
var avatar = o_player[2];
|
||||
var sex = o_player[3];
|
||||
var playertype = o_player[4];
|
||||
var seat = o_player[5];
|
||||
var isowner = o_player[6];
|
||||
var isbet = o_player[7];
|
||||
var grade = o_player[8];
|
||||
var roomcard = o_player[9];
|
||||
var bean = o_player[10];
|
||||
var needroomcard = o_player[11];
|
||||
var wasdeduct = o_player[12];
|
||||
var isprepare = o_player[13];
|
||||
var advanced = o_player[14];
|
||||
var shortcode = o_player[15];
|
||||
var roomcodes = o_player[16];
|
||||
var bankpower = o_player[17];
|
||||
var bank = o_player[18];
|
||||
var bankpwd = o_player[19];
|
||||
|
||||
var o_player1 = o_agent1.method.load_player(playerid, roomcard, bean, null, null, nickname, avatar, sex, playertype, null);
|
||||
o_player1.advanced = advanced;
|
||||
o_player1.shortcode = shortcode;
|
||||
o_player1.roomcodes = roomcodes;
|
||||
o_player1.bankpower = bankpower;
|
||||
o_player1.bank = bank;
|
||||
o_player1.bankpwd = bankpwd;
|
||||
o_player1.method.login_game(o_game1);
|
||||
o_player1.gameinfo[o_game1.idx].roomcode = roomcode;
|
||||
|
||||
var o_player2 = cls_youle_room_player.new(playerid, nickname, avatar, sex, playertype);
|
||||
o_player2.method.enter_room(o_room2, seat, isowner);
|
||||
o_player2.bean = bean;
|
||||
o_player2.gameinfo.isbet = isbet;
|
||||
o_player2.gameinfo.grade = grade;
|
||||
o_player2.gameinfo.isowner = isowner;
|
||||
o_player2.gameinfo.isprepare = isprepare;
|
||||
if (!isowner){
|
||||
o_player2.needroomcard = needroomcard;
|
||||
o_player2.wasdeduct = wasdeduct;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (!o_room2.owner){
|
||||
var owner_playerid = data_room[19][0];
|
||||
var owner_nickname = data_room[19][1];
|
||||
var owner_avatar = data_room[19][2];
|
||||
var owner_sex = data_room[19][3];
|
||||
var owner_playertype = data_room[19][4];
|
||||
var owner_roomcard = data_room[19][5];
|
||||
var owner_bean = data_room[19][6];
|
||||
var owner_advanced = data_room[19][7];
|
||||
var owner_shortcode = data_room[19][8];
|
||||
var owner_roomcodes = data_room[19][9];
|
||||
|
||||
var o_owner1 = o_agent1.method.load_player(owner_playerid, owner_roomcard, owner_bean, null, null, owner_nickname, owner_avatar, owner_sex, owner_playertype, null);
|
||||
o_owner1.advanced = owner_advanced;
|
||||
o_owner1.shortcode = owner_shortcode;
|
||||
o_owner1.roomcodes = owner_roomcodes;
|
||||
o_owner1.method.login_game(o_game1);
|
||||
|
||||
var o_owner2 = cls_youle_room_player.new(owner_playerid, owner_nickname, owner_avatar, owner_sex, owner_playertype);
|
||||
o_owner2.bean = owner_bean;
|
||||
o_room2.owner = o_owner2;
|
||||
}
|
||||
|
||||
youle_room.import.restore_room(o_room2, o_deskinfo);
|
||||
} else if (db_store_cursor.key.length == 76){
|
||||
var data_match = db_store_cursor.value;
|
||||
var agentid = data_match[0];
|
||||
var gameid = data_match[1];
|
||||
var matchid = data_match[2];
|
||||
var roomtype = data_match[3];
|
||||
var matchname = data_match[4];
|
||||
var imageurl = data_match[5];
|
||||
var playercount = data_match[6];
|
||||
var playercount2 = data_match[7];
|
||||
var bean = data_match[8];
|
||||
var roomcard = data_match[9];
|
||||
var topcount = data_match[10];
|
||||
var circulation = data_match[11];
|
||||
var interval = data_match[12];
|
||||
var gradename = data_match[13];
|
||||
var memo1 = data_match[14];
|
||||
var memo2 = data_match[15];
|
||||
var memo3 = data_match[16];
|
||||
var idx = data_match[17];
|
||||
var beginTime = data_match[18];
|
||||
var endTime = data_match[19];
|
||||
var isstart = data_match[20];
|
||||
var playerlist = data_match[21];
|
||||
var ranklist = data_match[22];
|
||||
var ranking = data_match[23];
|
||||
|
||||
var o_match = {};
|
||||
o_match.id = matchid;
|
||||
o_match.roomtype = roomtype;
|
||||
o_match.matchname = matchname;
|
||||
o_match.imageurl = imageurl;
|
||||
o_match.beginTime = beginTime;
|
||||
o_match.endTime = endTime;
|
||||
o_match.playercount = playercount;
|
||||
o_match.playercount2 = playercount2;
|
||||
o_match.bean = bean;
|
||||
o_match.roomcard = roomcard;
|
||||
o_match.topcount = topcount;
|
||||
o_match.circulation = circulation;
|
||||
o_match.interval = interval;
|
||||
o_match.gradename = gradename;
|
||||
o_match.memo1 = memo1;
|
||||
o_match.memo2 = memo2;
|
||||
o_match.memo3 = memo3;
|
||||
var o_agent = youle_agent.agents.method.find_agent(agentid);
|
||||
var o_game = o_agent1.method.find_game(gameid);
|
||||
var _o_match = o_game.matchlist.method.load_match(o_match);
|
||||
if (_o_match){
|
||||
_o_match.idx = idx;
|
||||
_o_match.beginTime = beginTime;
|
||||
_o_match.endTime = endTime;
|
||||
_o_match.isstart = isstart;
|
||||
_o_match.playerlist = playerlist;
|
||||
_o_match.ranklist = ranklist;
|
||||
if (ranking){
|
||||
_o_match.ranking = ranking;
|
||||
}
|
||||
}
|
||||
}
|
||||
}catch(e){}
|
||||
|
||||
db_store_cursor.continue();
|
||||
} else {
|
||||
// for (var i = 0; i < game1list.length; i++) {
|
||||
// var o_game1 = game1list[i];
|
||||
// for (var k = 0; k < o_game1.roomcodesvalidlen; k++) {
|
||||
// if (!o_game1.roomcodes[k]){
|
||||
// if (k < o_game1.roomcodesvalidlen - 1) {
|
||||
// o_game1.roomcodes[k] = o_game1.roomcodes[o_game1.roomcodesvalidlen - 1];
|
||||
// k = k - 1;
|
||||
// }
|
||||
// o_game1.roomcodes[o_game1.roomcodesvalidlen - 1] = 0;
|
||||
// o_game1.method.roomcodesvalidlen_chang(-1);
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
cls_youle_room_backup.isloading = false;
|
||||
}
|
||||
}
|
||||
var do_geterror = function(){
|
||||
cls_youle_room_backup.isloading = false;
|
||||
}
|
||||
|
||||
cls_youle_room_backup.isloading = true;
|
||||
var game1list = [];
|
||||
var dbParams = {};
|
||||
dbParams.db_name = "games";
|
||||
dbParams.db_version = "4";
|
||||
dbParams.store_name = "desk";
|
||||
dbParams.success_callback = do_opensuccess;
|
||||
dbParams.error_callback = do_openerror;
|
||||
dbObject.open(dbParams);
|
||||
}
|
||||
}
|
||||
2003
codes/games/sales_service/youle/server_room/class.export.js
Normal file
2003
codes/games/sales_service/youle/server_room/class.export.js
Normal file
File diff suppressed because it is too large
Load Diff
193
codes/games/sales_service/youle/server_room/class.game.js
Normal file
193
codes/games/sales_service/youle/server_room/class.game.js
Normal file
@@ -0,0 +1,193 @@
|
||||
///////////////////////////////////////////////////
|
||||
////////// cls_youle_room_game: 游戏 //////////
|
||||
///////////////////////////////////////////////////
|
||||
var cls_youle_room_game = cls_youle_room_game || {
|
||||
//构造函数
|
||||
new: function(o_agent, gameid, gameidx, gamename, seatcount, makewar, modename, roomserver, tcpport, httpport, minroomcode, maxroomcode){
|
||||
var game = {};
|
||||
//基本信息
|
||||
game.o_agent = o_agent; //代理商
|
||||
game.gameid = gameid; //游戏id
|
||||
game.idx = gameidx; //游戏的数组下标
|
||||
game.gamename = gamename; //游戏名称
|
||||
game.seatcount = seatcount; //房间内的座位数量
|
||||
game.makewar = makewar; //达成开战条件的人数
|
||||
game.modename = modename; //游戏服务器模块名称
|
||||
game.roomserver = roomserver; //房间服务器地址
|
||||
game.tcpport = tcpport; //房间服务器tcp端口
|
||||
game.httpport = httpport; //房间服务器http端口
|
||||
game.minroomcode = minroomcode; //房间服务器最小房号
|
||||
game.maxroomcode = maxroomcode; //房间服务器最大房号
|
||||
|
||||
//房间列表
|
||||
game.rooms = [];
|
||||
game.rooms.length = maxroomcode - minroomcode + 1;
|
||||
|
||||
//方法
|
||||
game.method = {};
|
||||
|
||||
//创建房间
|
||||
game.method.create_room = function(roomcode, roomtype, needroomcard, asetcount){
|
||||
return cls_youle_room_game.create_room(game, roomcode, roomtype, needroomcard, asetcount);
|
||||
}
|
||||
|
||||
//查找房间
|
||||
game.method.find_room = function(roomcode){
|
||||
return cls_youle_room_game.find_room(game, roomcode);
|
||||
}
|
||||
|
||||
//释放房间
|
||||
game.method.free_room = function(o_room){
|
||||
cls_youle_room_game.free_room(game, o_room);
|
||||
}
|
||||
|
||||
//调试状态
|
||||
game.method.isdebugger = function(){
|
||||
return cls_youle_room_game.isdebugger(game);
|
||||
}
|
||||
return game;
|
||||
},
|
||||
|
||||
//创建房间
|
||||
create_room: function(o_game, roomcode, roomtype, needroomcard, asetcount){
|
||||
//判断房号是否在范围内
|
||||
if (roomcode < o_game.minroomcode || roomcode > o_game.maxroomcode){
|
||||
return null;
|
||||
}
|
||||
|
||||
//判断房间是否已经存在
|
||||
var idx = cls_youle_room_game.aryidx_room(o_game, roomcode);
|
||||
if (o_game.rooms[idx]){
|
||||
return null;
|
||||
}
|
||||
|
||||
var o_room = cls_youle_room_room.new(o_game, roomcode, roomtype, needroomcard, asetcount);
|
||||
o_game.rooms[idx] = o_room;
|
||||
|
||||
return o_room;
|
||||
},
|
||||
|
||||
//查找房间
|
||||
find_room: function(o_game, roomcode){
|
||||
var idx = cls_youle_room_game.aryidx_room(o_game, roomcode);
|
||||
if (o_game.rooms.length <= idx) {
|
||||
return null;
|
||||
}
|
||||
return o_game.rooms[idx];
|
||||
},
|
||||
|
||||
//释放房间
|
||||
free_room: function(o_game, o_room){
|
||||
var idx = cls_youle_room_game.aryidx_room(o_game, o_room.roomcode);
|
||||
|
||||
//更新tcp连接列表
|
||||
var o_room = o_game.rooms[idx];
|
||||
if (o_room){
|
||||
for (var i = 0; i < o_room.seatlist.length; i++) {
|
||||
if (o_room.seatlist[i]) {
|
||||
var o_player = o_room.seatlist[i];
|
||||
if (o_player.conmode == "tcp"){
|
||||
youle_room.tcps.method.delete_tcp(o_player.fromid, o_player);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
try{
|
||||
if (o_room.game){//针对牛牛写的
|
||||
if (o_room.game.room){
|
||||
o_room.game.room = null;
|
||||
}
|
||||
if (o_room.game.pList){
|
||||
o_room.game.pList = null;
|
||||
}
|
||||
o_room.game = null;
|
||||
}
|
||||
if (o_room.o_desk){//通用
|
||||
if (o_room.o_desk.o_room){
|
||||
o_room.o_desk.o_room = null;
|
||||
}
|
||||
o_room.o_desk = null;
|
||||
}
|
||||
|
||||
for (var i = 0; i < o_room.seatlist.length; i++) {
|
||||
if (o_room.seatlist[i]){
|
||||
o_room.seatlist[i].seat = null;
|
||||
o_room.seatlist[i].cards = null;
|
||||
o_room.seatlist[i].rubcard = null;
|
||||
o_room.seatlist[i].putcard = null;
|
||||
o_room.seatlist[i].scores = null;
|
||||
o_room.seatlist[i].betScore = null;
|
||||
o_room.seatlist[i].winScore = null;
|
||||
o_room.seatlist[i].isJoin = null;
|
||||
o_room.seatlist[i].isBet = null;
|
||||
o_room.seatlist[i].isAuto = null;
|
||||
o_room.seatlist[i].auto = null;
|
||||
o_room.seatlist[i] = null;
|
||||
}
|
||||
}
|
||||
}
|
||||
catch(e){}
|
||||
|
||||
if (o_room.freetimer){
|
||||
min_closetime(o_room.freetimer);
|
||||
o_room.freetimer = null;
|
||||
}
|
||||
if (o_room.freetimer24){
|
||||
min_closetime(o_room.freetimer24);
|
||||
o_room.freetimer24 = null;
|
||||
}
|
||||
if (o_room.timer_robot){
|
||||
min_closetime(o_room.timer_robot);
|
||||
o_room.timer_robot = null;
|
||||
}
|
||||
if (o_room.timer_robot_active){
|
||||
min_closetime(o_room.timer_robot_active);
|
||||
o_room.timer_robot_active = null;
|
||||
}
|
||||
if (o_room.timer_robot_passive){
|
||||
for (var i = 0; i < o_room.timer_robot_passive.length; i++) {
|
||||
min_closetime(o_room.timer_robot_passive[i]);
|
||||
}
|
||||
o_room.timer_robot_passive = [];
|
||||
}
|
||||
}
|
||||
|
||||
o_game.rooms[idx] = null;
|
||||
|
||||
//固定房号的房间需要自动再次创建
|
||||
if (o_room.advanced_type){
|
||||
var msg = {};
|
||||
msg.app = youle_room.app.appname;
|
||||
msg.route = youle_room.app.youle_agent.routename;
|
||||
msg.rpc = "advanced_createroom_roomcode";
|
||||
msg.data = {};
|
||||
msg.data.agentid = o_room.o_game.o_agent.agentid;
|
||||
msg.data.playerid = o_room.owner.playerid;
|
||||
msg.data.gameid = o_room.o_game.gameid;
|
||||
msg.data.roomcode = o_room.roomcode;
|
||||
msg.data.shortcode = o_room.shortcode;
|
||||
//msg.data.rebateType = o_room.rebateType;
|
||||
youle_room.app.youle_agent[msg.rpc](msg);
|
||||
}else{
|
||||
//非vip房且有需要更新的roomtype自动创建
|
||||
|
||||
}
|
||||
|
||||
},
|
||||
|
||||
//调试状态
|
||||
isdebugger: function(o_game){
|
||||
var o_cfg = youle_room.app.youle_platform.config;
|
||||
var re = o_cfg.method.get_paravalue("isdebugger", o_game.o_agent.agentid, o_game.gameid);
|
||||
if (!re){
|
||||
return 0; //正式
|
||||
} else {
|
||||
return 1; //调试
|
||||
}
|
||||
},
|
||||
|
||||
//计算房间的数组下标
|
||||
aryidx_room: function(o_game, roomcode){
|
||||
return roomcode - o_game.minroomcode;
|
||||
}
|
||||
}
|
||||
349
codes/games/sales_service/youle/server_room/class.import.js
Normal file
349
codes/games/sales_service/youle/server_room/class.import.js
Normal file
@@ -0,0 +1,349 @@
|
||||
///////////////////////////////////////////////////
|
||||
/////// cls_youle_room_import: 输入接口 ///////
|
||||
///////////////////////////////////////////////////
|
||||
var cls_youle_room_import = cls_youle_room_import || {
|
||||
|
||||
new: function() {
|
||||
|
||||
var imp = {};
|
||||
|
||||
//创建房间时根据roomtype获取需要的房卡数量
|
||||
imp.createroom_needroomcard = function(o_game, roomtype){
|
||||
var o_game_config = youle_room.app.youle_platform.config.method.get_paravalue("game_config", o_game.o_agent.agentid, o_game.gameid);
|
||||
var mod_game = youle_room.app[o_game.modename];
|
||||
if (mod_game.export){
|
||||
if (mod_game.export.get_needroomcard){
|
||||
return mod_game.export.get_needroomcard(roomtype, o_game_config);
|
||||
}
|
||||
}
|
||||
if (mod_game.needroomcard){
|
||||
return mod_game.needroomcard(roomtype, o_game_config);
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
|
||||
//创建房间时根据roomtype获取总局数
|
||||
imp.createroom_asetcount = function(o_game, roomtype){
|
||||
var o_game_config = youle_room.app.youle_platform.config.method.get_paravalue("game_config", o_game.o_agent.agentid, o_game.gameid);
|
||||
var mod_game = youle_room.app[o_game.modename];
|
||||
if (mod_game.export){
|
||||
if (mod_game.export.get_asetcount){
|
||||
return mod_game.export.get_asetcount(roomtype, o_game_config);
|
||||
}
|
||||
}
|
||||
if (mod_game.asetcount){
|
||||
return mod_game.asetcount(roomtype, o_game_config);
|
||||
}
|
||||
return 8;
|
||||
}
|
||||
|
||||
//创建房间时根据roomtype获取元宝下限
|
||||
imp.createroom_beanfloor = function(o_game, roomtype){
|
||||
var o_game_config = youle_room.app.youle_platform.config.method.get_paravalue("game_config", o_game.o_agent.agentid, o_game.gameid);
|
||||
|
||||
var mod_game = youle_room.app[o_game.modename];
|
||||
if (mod_game.export){
|
||||
if (mod_game.export.createroom_beanfloor){
|
||||
return mod_game.export.createroom_beanfloor(roomtype, o_game_config);
|
||||
}
|
||||
}
|
||||
if (mod_game.createroom_beanfloor){
|
||||
return mod_game.createroom_beanfloor(roomtype, o_game_config);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
//加入房间时根据roomtype获取需要的房卡数量,如果不需要房卡则需要返回0
|
||||
imp.joinroom_needroomcard = function(o_game, roomtype){
|
||||
var o_game_config = youle_room.app.youle_platform.config.method.get_paravalue("game_config", o_game.o_agent.agentid, o_game.gameid);
|
||||
var mod_game = youle_room.app[o_game.modename];
|
||||
if (mod_game.export){
|
||||
if (mod_game.export.get_needroomcard_joinroom){
|
||||
return mod_game.export.get_needroomcard_joinroom(roomtype, o_game_config);
|
||||
}
|
||||
}
|
||||
if (mod_game.needroomcard_joinroom){
|
||||
return mod_game.needroomcard_joinroom(roomtype, o_game_config);
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
//根据roomtype获取房间的扣卡模式,0:房主扣卡 1:每人扣卡 2:大赢家扣卡
|
||||
imp.deduct_roomcard_mode = function(o_game, roomtype){
|
||||
var o_game_config = youle_room.app.youle_platform.config.method.get_paravalue("game_config", o_game.o_agent.agentid, o_game.gameid);
|
||||
var mod_game = youle_room.app[o_game.modename];
|
||||
if (mod_game.export){
|
||||
if (mod_game.export.deduct_roomcard_mode){
|
||||
return mod_game.export.deduct_roomcard_mode(roomtype, o_game_config);
|
||||
}
|
||||
}
|
||||
if (mod_game.deduct_roomcard_mode){
|
||||
return mod_game.deduct_roomcard_mode(roomtype, o_game_config);
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
//除了满桌自动开战外,子游戏可以设置开战人数
|
||||
imp.makewar_playercount = function(o_game, roomtype){
|
||||
var o_game_config = youle_room.app.youle_platform.config.method.get_paravalue("game_config", o_game.o_agent.agentid, o_game.gameid);
|
||||
var mod_game = youle_room.app[o_game.modename];
|
||||
if (mod_game.export){
|
||||
if (mod_game.export.makewar_playercount){
|
||||
return mod_game.export.makewar_playercount(roomtype, o_game_config);
|
||||
}
|
||||
}
|
||||
if (mod_game.makewar_playercount){
|
||||
return mod_game.makewar_playercount(roomtype, o_game_config);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
//星星场房主抽成星星数量
|
||||
imp.owner_beanpush = function(o_game, roomtype){
|
||||
var o_game_config = youle_room.app.youle_platform.config.method.get_paravalue("game_config", o_game.o_agent.agentid, o_game.gameid);
|
||||
var mod_game = youle_room.app[o_game.modename];
|
||||
if (mod_game.export){
|
||||
if (mod_game.export.owner_beanpush){
|
||||
return mod_game.export.owner_beanpush(roomtype, o_game_config);
|
||||
}
|
||||
}
|
||||
if (mod_game.owner_beanpush){
|
||||
return mod_game.owner_beanpush(roomtype, o_game_config);
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
//开局时通知游戏,并返回游戏的开局数据包
|
||||
imp.makewar_deskwar = function(o_room){
|
||||
var matchroom_deductbean = function(){
|
||||
if (!o_room.match_id){
|
||||
return;
|
||||
}
|
||||
var o_agentsvr_agent = youle_agent.agents.method.find_agent(o_room.o_game.o_agent.agentid);
|
||||
var o_agentsvr_game = o_agentsvr_agent.method.find_game(o_room.o_game.gameid);
|
||||
var match_idx = min_ary_indexof(o_agentsvr_game.matchlist.list, o_room.match_id, "id");
|
||||
if (match_idx == -1){
|
||||
return;
|
||||
}
|
||||
var match_object = o_agentsvr_game.matchlist.list[match_idx];
|
||||
if (!match_object.bean){
|
||||
return;
|
||||
}
|
||||
|
||||
var do_deduct_bean = function(){
|
||||
var msg = {};
|
||||
msg.app = youle_room.app.appname;
|
||||
msg.route = youle_room.app.youle_agent.routename;
|
||||
msg.rpc = "update_bean";
|
||||
msg.data = {};
|
||||
msg.data.agentid = o_room.o_game.o_agent.agentid;
|
||||
msg.data.change = 0;
|
||||
msg.data.pushbean = -1 * match_object.bean;
|
||||
msg.data.gameid = o_room.o_game.gameid;
|
||||
msg.data.showrebate = 1;
|
||||
msg.data.type = 5;
|
||||
|
||||
//房间id = 时间戳 + 4位随机码 + 房号
|
||||
var roomid = new Date().getTime() + min_randomChar(4) + o_room.roomcode;
|
||||
var datatime = min_now();
|
||||
var beanmult = 0;
|
||||
if (o_room.beanmult){
|
||||
beanmult = o_room.beanmult;
|
||||
}
|
||||
var shortcode = 0;
|
||||
if (o_room.shortcode){
|
||||
shortcode = o_room.shortcode;
|
||||
}
|
||||
var deductmode = youle_room.import.deduct_roomcard_mode(o_room.o_game, o_room.roomtype);
|
||||
for (var i = 0; i < o_room.seatlist.length; i++) {
|
||||
if (o_room.seatlist[i]){
|
||||
var playerid = o_room.seatlist[i].playerid;
|
||||
var roomcard = 0;
|
||||
if (playerid == o_room.owner.playerid){
|
||||
roomcard = youle_room.import.createroom_needroomcard(o_room.o_game, o_room.roomtype);
|
||||
} else {
|
||||
roomcard = youle_room.import.joinroom_needroomcard(o_room.o_game, o_room.roomtype);
|
||||
}
|
||||
var isrobot = 0;
|
||||
if (o_room.seatlist[i].isrobot){
|
||||
isrobot = 1;
|
||||
}
|
||||
if (!isrobot){
|
||||
msg.data.playerid = playerid;
|
||||
youle_room.app.youle_agent[msg.rpc](msg);
|
||||
}
|
||||
|
||||
var sql = "insert into gold_account(goac_id,goac_agentid,goac_gameid,goac_roomcode,goac_roommode,goac_createtime,goac_beanmult,goac_ownerid,goac_shortcode,goac_deduct,goac_roomcard,goac_datatype,goac_asetcount,goac_asetnum,goac_playerid,goac_isrobot,goac_grade,goac_rebatefrom,goac_rebateto,goac_toplayerid,goac_rebatemode,goac_setvalue,goac_rebatevalue,goac_time) values(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?);";
|
||||
youle_room.mysql_grade.execsql("execsql", sql, [roomid, o_room.o_game.o_agent.agentid, o_room.o_game.gameid, o_room.roomcode, 4, o_room.createtime, beanmult, o_room.owner.ownerid, shortcode, deductmode, roomcard, 0, o_room.asetcount, 0, playerid, isrobot, 0, 3, 0, 0, 3, match_object.bean, match_object.bean, datatime]);
|
||||
}
|
||||
}
|
||||
}
|
||||
min_ontimeout(do_deduct_bean, 1000);
|
||||
}
|
||||
var o_game_config = youle_room.app.youle_platform.config.method.get_paravalue("game_config", o_room.o_game.o_agent.agentid, o_room.o_game.gameid);
|
||||
var mod_game = youle_room.app[o_room.o_game.modename];
|
||||
if (mod_game.export){
|
||||
if (mod_game.export.makewar){
|
||||
var data = mod_game.export.makewar(o_room, o_game_config);
|
||||
matchroom_deductbean(); //比赛场扣除报名的星星费用
|
||||
return data;
|
||||
}
|
||||
}
|
||||
if (mod_game.makewar){
|
||||
var data = mod_game.makewar(o_room, o_game_config);
|
||||
matchroom_deductbean(); //比赛场扣除报名的星星费用
|
||||
return data;
|
||||
}
|
||||
}
|
||||
|
||||
//进入房间或断线重连时获取牌局信息
|
||||
imp.get_deskinfo = function(o_room, seat){
|
||||
var mod_game = youle_room.app[o_room.o_game.modename];
|
||||
if (mod_game.export){
|
||||
if (mod_game.export.get_deskinfo){
|
||||
return mod_game.export.get_deskinfo(o_room, seat);
|
||||
}
|
||||
}
|
||||
if (mod_game.getDeskInfo){
|
||||
return mod_game.getDeskInfo(o_room, seat);
|
||||
}
|
||||
}
|
||||
|
||||
//解散时通知游戏
|
||||
imp.get_disbandRoom = function(o_room){
|
||||
var mod_game = youle_room.app[o_room.o_game.modename];
|
||||
if (mod_game.export){
|
||||
if (mod_game.export.get_disbandRoom){
|
||||
return mod_game.export.get_disbandRoom(o_room);
|
||||
}
|
||||
}
|
||||
if (mod_game.disbandRoom){
|
||||
return mod_game.disbandRoom(o_room);
|
||||
}
|
||||
}
|
||||
|
||||
//玩家中途进入房间
|
||||
imp.player_enter = function(o_room, seat){
|
||||
var mod_game = youle_room.app[o_room.o_game.modename];
|
||||
if (mod_game.export){
|
||||
if (mod_game.export.player_enter){
|
||||
return mod_game.export.player_enter(o_room, seat);
|
||||
}
|
||||
}
|
||||
if (mod_game.player_enter){
|
||||
return mod_game.player_enter(o_room, seat);
|
||||
}
|
||||
}
|
||||
|
||||
//玩家中途退出房间
|
||||
imp.player_leave = function(o_room, seat){
|
||||
var mod_game = youle_room.app[o_room.o_game.modename];
|
||||
if (mod_game.export){
|
||||
if (mod_game.export.player_leave){
|
||||
return mod_game.export.player_leave(o_room, seat);
|
||||
}
|
||||
}
|
||||
if (mod_game.player_leave){
|
||||
return mod_game.player_leave(o_room, seat);
|
||||
}
|
||||
}
|
||||
|
||||
//恢复房间数据
|
||||
imp.restore_room = function(o_room, o_deskinfo){
|
||||
var mod_game = youle_room.app[o_room.o_game.modename];
|
||||
if (mod_game.export){
|
||||
if (mod_game.export.restore_room){
|
||||
return mod_game.export.restore_room(o_room, o_deskinfo);
|
||||
}
|
||||
}
|
||||
if (mod_game.restore_room){
|
||||
return mod_game.restore_room(o_room, o_deskinfo);
|
||||
}
|
||||
}
|
||||
|
||||
//玩家准备
|
||||
imp.player_CanPrepare = function(o_room, seat){
|
||||
var mod_game = youle_room.app[o_room.o_game.modename];
|
||||
if (mod_game.export){
|
||||
if (mod_game.export.player_CanPrepare){
|
||||
return mod_game.export.player_CanPrepare(o_room, seat);
|
||||
}
|
||||
}
|
||||
if (mod_game.player_CanPrepare){
|
||||
return mod_game.player_CanPrepare(o_room, seat);
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
|
||||
imp.player_prepare = function(o_room, seat){
|
||||
var mod_game = youle_room.app[o_room.o_game.modename];
|
||||
if (mod_game.export){
|
||||
if (mod_game.export.player_prepare){
|
||||
return mod_game.export.player_prepare(o_room, seat);
|
||||
}
|
||||
}
|
||||
if (mod_game.player_prepare){
|
||||
return mod_game.player_prepare(o_room, seat);
|
||||
}
|
||||
}
|
||||
|
||||
//无限局玩家是否可以离开房间
|
||||
imp.isPlayerCanLeave = function(o_room, seat){
|
||||
var mod_game = youle_room.app[o_room.o_game.modename];
|
||||
if (mod_game.export){
|
||||
if (mod_game.export.isPlayerCanLeave){
|
||||
return mod_game.export.isPlayerCanLeave(o_room, seat);
|
||||
}
|
||||
}
|
||||
if (mod_game.isPlayerCanLeave){
|
||||
return mod_game.isPlayerCanLeave(o_room, seat);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
//通过战绩gameinfo1获取大赢家标志如[0,0,1]空座位不需要写入数组顺序从0号座位依次写入
|
||||
imp.getWinnerByGameInfo1 = function(o_room, gameinfo1){
|
||||
var mod_game = youle_room.app[o_room.o_game.modename];
|
||||
if (mod_game.export){
|
||||
if (mod_game.export.getWinnerByGameInfo1){
|
||||
return mod_game.export.getWinnerByGameInfo1(o_room, gameinfo1);
|
||||
}
|
||||
}
|
||||
if (mod_game.getWinnerByGameInfo1){
|
||||
return mod_game.getWinnerByGameInfo1(o_room, gameinfo1);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
//通过战绩gameinfo1获取积分列表如[10,10,-20]空座位不需要写入数组顺序从0号座位依次写入
|
||||
imp.getScoreByGameInfo1 = function(o_room, gameinfo1){
|
||||
var mod_game = youle_room.app[o_room.o_game.modename];
|
||||
if (mod_game.export){
|
||||
if (mod_game.export.getScoreByGameInfo1){
|
||||
return mod_game.export.getScoreByGameInfo1(o_room, gameinfo1);
|
||||
}
|
||||
}
|
||||
if (mod_game.getScoreByGameInfo1){
|
||||
return mod_game.getScoreByGameInfo1(o_room, gameinfo1);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
//通知子游戏解散房间
|
||||
imp.gameBreak = function(o_room){
|
||||
var mod_game = youle_room.app[o_room.o_game.modename];
|
||||
if (mod_game.export){
|
||||
if (mod_game.export.gameBreak){
|
||||
return mod_game.export.gameBreak(o_room);
|
||||
}
|
||||
}
|
||||
if (mod_game.gameBreak){
|
||||
return mod_game.gameBreak(o_room);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
return imp;
|
||||
}
|
||||
}
|
||||
|
||||
//内部输入接口
|
||||
youle_room.import = cls_youle_room_import.new();
|
||||
156
codes/games/sales_service/youle/server_room/class.player.js
Normal file
156
codes/games/sales_service/youle/server_room/class.player.js
Normal file
@@ -0,0 +1,156 @@
|
||||
///////////////////////////////////////////////////
|
||||
///////// cls_youle_room_player: 玩家 /////////
|
||||
///////////////////////////////////////////////////
|
||||
var cls_youle_room_player = cls_youle_room_player || {
|
||||
//构造函数
|
||||
new: function(playerid, nickname, avatar, sex, playertype, ip, onstate, conmode, fromid){
|
||||
var player = {};
|
||||
//基本信息
|
||||
player.playerid = playerid; //玩家id
|
||||
player.nickname = nickname;
|
||||
player.avatar = avatar;
|
||||
player.sex = sex;
|
||||
player.playertype = playertype;
|
||||
player.ip = ip;
|
||||
player.onstate = onstate; //在线状态 null未连接 0在线 1离线 2电话中
|
||||
player.conmode = conmode; //连接方式
|
||||
player.fromid = fromid; //连接id
|
||||
|
||||
//初始化游戏数据
|
||||
player.gameinfo = {};
|
||||
player.gameinfo.o_game = null; //所在的游戏
|
||||
player.gameinfo.o_room = null; //所在的房间
|
||||
player.gameinfo.seat = -1; //房间内的位置
|
||||
player.gameinfo.isowner = -1; //房主标志 0:非房主 1:是房主
|
||||
player.gameinfo.agree = -1; //是否同意解散房间 0:申请解散 1:同意解散
|
||||
player.gameinfo.isbet = -1; //下注标志 0:未下注可离开房间 1:已下注不可离开房间
|
||||
player.gameinfo.grade = 0; //在房间内的得分
|
||||
|
||||
//在定义中没有写入的后加属性
|
||||
//player.gameinfo.isprepare = 0; //是否准备
|
||||
|
||||
//方法
|
||||
player.method = {};
|
||||
|
||||
//获取玩家的基础信息
|
||||
player.method.get_info = function(){
|
||||
return cls_youle_room_player.get_info(player);
|
||||
}
|
||||
|
||||
//进入房间
|
||||
player.method.enter_room = function(o_room, seat, isowner){
|
||||
cls_youle_room_player.enter_room(player, o_room, seat, isowner);
|
||||
}
|
||||
|
||||
//退出房间
|
||||
player.method.exit_room = function(){
|
||||
cls_youle_room_player.exit_room(player);
|
||||
}
|
||||
|
||||
return player;
|
||||
},
|
||||
|
||||
//获取玩家的基础信息
|
||||
get_info: function(o_player){
|
||||
var info = {};
|
||||
info.playerid = o_player.playerid;
|
||||
info.nickname = o_player.nickname;
|
||||
info.avatar = o_player.avatar;
|
||||
info.sex = o_player.sex;
|
||||
info.ip = o_player.ip;
|
||||
info.onstate = o_player.onstate;
|
||||
info.isprepare= o_player.gameinfo.isprepare;
|
||||
if (o_player.isrobot){
|
||||
info.bean = o_player.bean;
|
||||
} else {
|
||||
info.bean = null;
|
||||
}
|
||||
if (o_player.paycode) {
|
||||
info.paycode = o_player.paycode;
|
||||
}
|
||||
info.bean = o_player.bean;
|
||||
return info;
|
||||
},
|
||||
|
||||
//进入房间
|
||||
enter_room: function(o_player, o_room, seat, isowner){
|
||||
o_player.gameinfo.o_game = o_room.o_game;
|
||||
o_player.gameinfo.o_room = o_room;
|
||||
o_player.gameinfo.seat = seat;
|
||||
o_player.gameinfo.isowner = isowner;
|
||||
o_player.gameinfo.isbet = 0;
|
||||
o_player.gameinfo.agree = -1;
|
||||
o_player.gameinfo.grade = 0;
|
||||
|
||||
if (o_room.needprepare){
|
||||
o_player.gameinfo.isprepare = 0;
|
||||
} else {
|
||||
o_player.gameinfo.isprepare = 1;
|
||||
}
|
||||
|
||||
o_room.seatlist[seat] = o_player;
|
||||
if (isowner){
|
||||
o_room.owner = o_player;
|
||||
}
|
||||
|
||||
//更新tcp连接列表
|
||||
if (o_player.conmode == "tcp"){
|
||||
youle_room.tcps.method.load_tcp(o_player.fromid, o_player);
|
||||
}
|
||||
|
||||
//记录当前机器人数量
|
||||
if (o_player.isrobot){
|
||||
if (o_room.roommode){
|
||||
if (!o_room.o_game.robotcount){
|
||||
o_room.o_game.robotcount = 1;
|
||||
} else {
|
||||
o_room.o_game.robotcount = o_room.o_game.robotcount + o_room.beanmult;
|
||||
}
|
||||
// console.log('++机器人: ' + o_room.o_game.robotcount);
|
||||
}
|
||||
} else {
|
||||
if (o_room.sysroom){
|
||||
if (!o_room.o_game.sysroom_playercount){
|
||||
o_room.o_game.sysroom_playercount = [];
|
||||
}
|
||||
for (var i = 0; i < o_room.o_game.sysroom_playercount.length; i++) {
|
||||
if (JSON.stringify(o_room.o_game.sysroom_playercount[i].roomtype) == JSON.stringify(o_room.roomtype)){
|
||||
o_room.o_game.sysroom_playercount[i].playercount = o_room.o_game.sysroom_playercount[i].playercount + 1;
|
||||
return;
|
||||
}
|
||||
};
|
||||
var _v = {};
|
||||
_v.roomtype = o_room.roomtype;
|
||||
_v.playercount = 1;
|
||||
o_room.o_game.sysroom_playercount.push(_v);
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
//退出房间
|
||||
exit_room: function(o_player){
|
||||
//更新tcp连接列表
|
||||
if (o_player.conmode == "tcp"){
|
||||
youle_room.tcps.method.delete_tcp(o_player.fromid);
|
||||
}
|
||||
|
||||
o_player.gameinfo.o_room.seatlist[o_player.gameinfo.seat] = null;
|
||||
|
||||
//记录当前机器人数量
|
||||
if (o_player.isrobot){
|
||||
if (o_player.gameinfo.o_room.roommode){
|
||||
o_player.gameinfo.o_game.robotcount = o_player.gameinfo.o_game.robotcount - o_player.gameinfo.o_room.beanmult;
|
||||
// console.log('--机器人: ' + o_player.gameinfo.o_room.o_game.robotcount);
|
||||
}
|
||||
} else {
|
||||
if (o_player.gameinfo.o_room.sysroom){
|
||||
for (var i = 0; i < o_player.gameinfo.o_game.sysroom_playercount.length; i++) {
|
||||
if (JSON.stringify(o_player.gameinfo.o_game.sysroom_playercount[i].roomtype) == JSON.stringify(o_player.gameinfo.o_room.roomtype)){
|
||||
o_player.gameinfo.o_game.sysroom_playercount[i].playercount = o_player.gameinfo.o_game.sysroom_playercount[i].playercount - 1;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
865
codes/games/sales_service/youle/server_room/class.rebate.js
Normal file
865
codes/games/sales_service/youle/server_room/class.rebate.js
Normal file
@@ -0,0 +1,865 @@
|
||||
var xRebate = xRebate || {};
|
||||
|
||||
xRebate.gameRebate = function(o_room){
|
||||
var maxgrade = 0;
|
||||
var maxseat = [];
|
||||
for (var i = 0; i < o_room.seatlist.length; i++){
|
||||
if (o_room.seatlist[i] && o_room.seatlist[i].gameinfo.isbet){
|
||||
if (o_room.seatlist[i].gameinfo.grade > maxgrade){
|
||||
maxgrade = parseInt(o_room.seatlist[i].gameinfo.grade);
|
||||
maxseat = [i];
|
||||
} else if (o_room.seatlist[i].gameinfo.grade == maxgrade){
|
||||
maxseat.push(i);
|
||||
}
|
||||
}
|
||||
}
|
||||
if (!o_room.roommode){
|
||||
//非星星场短号房要结算魅力值
|
||||
try{
|
||||
//百人场无大局魅力值抽成
|
||||
if (o_room.advanced_type && o_room.o_game.gameid != "Btke0urRy0cvPd5CIvD5yfhYhKhdSdex"){
|
||||
var o_agentsvr_agent = youle_agent.agents.method.find_agent(o_room.o_game.o_agent.agentid);
|
||||
var o_agentsvr_owner = o_agentsvr_agent.method.find_player(o_room.owner.playerid);
|
||||
if (o_agentsvr_owner.whitelist && o_agentsvr_owner.whitelist.length > 0){
|
||||
var rebateConfig = youle_room.app.youle_platform.config.method.get_paravalue("rebateConfig", o_room.o_game.o_agent.agentid);
|
||||
var rCharm = 0;
|
||||
var maxgrade1 = 0;
|
||||
var maxseat1 = [];
|
||||
var rcTemp = false;
|
||||
if(rebateConfig){
|
||||
if(rebateConfig.rebateCharm && o_room.rebateType){
|
||||
//rCharm = parseInt(o_room.rebateNumber/maxseat.length);
|
||||
rCharm = o_room.rebateNumber;
|
||||
var _seatlist = [];
|
||||
for (var i = 0; i < o_room.seatlist.length; i++) {
|
||||
//if (o_room.seatlist[i]. != null){
|
||||
if (o_room.seatlist[i]){
|
||||
var _player = {};
|
||||
_player.seat = i;
|
||||
_player.playerid = o_room.seatlist[i].playerid;
|
||||
_player.change = 0;
|
||||
for (var j = 0; j < o_agentsvr_owner.whitelist.length; j++) {
|
||||
if (o_agentsvr_owner.whitelist[j][0] == _player.playerid){
|
||||
if (o_agentsvr_owner.whitelist[j][2]){
|
||||
|
||||
//o_agentsvr_owner.whitelist[j][2] = parseInt(o_agentsvr_owner.whitelist[j][2]) + ary_grade[i];
|
||||
if(o_room.seatlist[i].gameinfo.grade == maxgrade){
|
||||
o_agentsvr_owner.whitelist[j][2] = parseInt(o_agentsvr_owner.whitelist[j][2]) - rCharm;
|
||||
_player.change = -rCharm;
|
||||
}
|
||||
} else {
|
||||
if(o_room.seatlist[i].gameinfo.grade == maxgrade){
|
||||
o_agentsvr_owner.whitelist[j][2] = -rCharm;
|
||||
_player.change = -rCharm;
|
||||
}
|
||||
}
|
||||
_player.charm = o_agentsvr_owner.whitelist[j][2];
|
||||
break;
|
||||
}
|
||||
}
|
||||
_seatlist.push(_player);
|
||||
}
|
||||
//}
|
||||
}
|
||||
|
||||
var msg = {};
|
||||
msg.app = "youle";
|
||||
msg.route = "agent";
|
||||
msg.rpc = "update_charm";
|
||||
msg.data = {};
|
||||
msg.data.seatlist = _seatlist;
|
||||
o_room.method.sendpack_toother(msg, -1);
|
||||
var sql = "update player set play_whitelist = ? where play_agentid = ? and play_playerid = ?";
|
||||
youle_room.mysql.execsql("execsql", sql, [youle_agent.compressWhiteList(o_agentsvr_owner.whitelist), o_room.o_game.o_agent.agentid, o_room.owner.playerid]);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}catch(e){
|
||||
console.log("结算短号魅力值发生错误");
|
||||
console.log(e);
|
||||
}
|
||||
|
||||
}
|
||||
//只支持倍数百分比抽成
|
||||
//抽成参数
|
||||
var rebateConfig = youle_room.app.youle_platform.config.method.get_paravalue("rebateConfig", o_room.o_game.o_agent.agentid);
|
||||
if(!rebateConfig){
|
||||
return;
|
||||
}
|
||||
//小局抽成设置
|
||||
//var aset_rebate = youle_room.app.youle_platform.config.method.get_paravalue("aset_rebate", o_room.o_game.o_agent.agentid);
|
||||
//是否需要抽成
|
||||
var rebateTemp = false;
|
||||
if(!o_room.asetRebate){
|
||||
rebateTemp = true;
|
||||
}
|
||||
//vip房卡房是否扣魅力值
|
||||
var rebateCharm = rebateConfig.rebateCharm;
|
||||
//扣除模式 1.大赢家 2.赢家 3.所有人
|
||||
var rebateFrom = rebateConfig.from;
|
||||
//房间倍数
|
||||
var beanmult = 1;
|
||||
//金币房
|
||||
if(o_room.roommode){
|
||||
beanmult = youle_agent.import.createroom_beanmult(o_room.o_game, o_room.roomtype);
|
||||
}
|
||||
if(!beanmult){
|
||||
beanmult = 1;
|
||||
}
|
||||
var o_agentsvr_agent = youle_agent.agents.method.find_agent(o_room.o_game.o_agent.agentid);
|
||||
//配置扣除数量
|
||||
var sysRebateValue = parseInt(rebateConfig.value * beanmult /100);
|
||||
|
||||
var agentid = o_room.o_game.o_agent.agentid;
|
||||
var gameid = o_room.o_game.gameid;
|
||||
var roomcode = o_room.roomcode;
|
||||
var createtime = o_room.createtime;
|
||||
var makewartime = o_room.makewartime;
|
||||
var roommode = o_room.roommode;
|
||||
var ownerid = o_room.owner.playerid;
|
||||
var shortcode = 0;
|
||||
if (o_room.shortcode){
|
||||
shortcode = o_room.shortcode;
|
||||
}
|
||||
var deductmode = youle_room.import.deduct_roomcard_mode(o_room.o_game, o_room.roomtype);
|
||||
|
||||
var asetcount = o_room.asetcount;
|
||||
|
||||
var rebateTo = 0;
|
||||
var rebateMode = 2;
|
||||
var roomMode = 0;
|
||||
|
||||
//房间收取房间费的值
|
||||
var rebateValue = sysRebateValue;
|
||||
if(!o_room.roommode){
|
||||
if(!o_room.advanced_type){
|
||||
|
||||
}else{
|
||||
rebateFrom = 1;
|
||||
if(rebateCharm && o_room.rebateType){
|
||||
roomMode = 1;
|
||||
}
|
||||
if(o_room.advanced_teabean){
|
||||
if(sysRebateValue < o_room.advanced_teabean){
|
||||
rebateMode = 3;
|
||||
rebateValue = o_room.advanced_teabean;
|
||||
}
|
||||
}
|
||||
}
|
||||
}else{
|
||||
if(!o_room.advanced_type){
|
||||
var tea = youle_room.import.owner_beanpush(o_room.o_game, o_room.roomtype);
|
||||
if(tea){
|
||||
if(sysRebateValue < tea){
|
||||
rebateMode = 3;
|
||||
rebateValue = tea;
|
||||
}
|
||||
}
|
||||
}else{
|
||||
if(o_room.advanced_teabean){
|
||||
if(sysRebateValue < o_room.advanced_teabean){
|
||||
rebateMode = 3;
|
||||
rebateValue = o_room.advanced_teabean;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
//每个人扣除的数量
|
||||
var rebateReal = rebateValue;
|
||||
//通过扣除模式得出每个人扣的数量
|
||||
switch(rebateFrom){
|
||||
//大赢家
|
||||
case 1:
|
||||
rebateReal = parseInt(rebateValue / maxseat.length);//多个大赢家均摊房间费
|
||||
|
||||
sysRebateValue = parseInt(sysRebateValue / maxseat.length);//多个大赢家均摊房间费
|
||||
break;
|
||||
//赢家
|
||||
case 2:
|
||||
|
||||
break;
|
||||
//所有人
|
||||
case 3:
|
||||
|
||||
break;
|
||||
default:
|
||||
|
||||
break;
|
||||
}
|
||||
var ownergarde = 0;
|
||||
//var rebateSum = 0;//总共扣除的房间费
|
||||
//console.log(o_room.seatlist);
|
||||
//if(rebateReal){
|
||||
var ownerid = null;
|
||||
var pushCount = 0;
|
||||
if(o_room.owner){
|
||||
ownerid = o_room.owner.playerid;
|
||||
}
|
||||
//console.log("sysRebateValue",sysRebateValue);
|
||||
//console.log("rebateReal",rebateReal);
|
||||
for (var i = 0; i < o_room.seatlist.length; i++) {
|
||||
if (o_room.seatlist[i]){
|
||||
var o_player = o_room.seatlist[i];
|
||||
if (o_player.gameinfo.isbet) {
|
||||
var o_agentsvr_player = o_agentsvr_agent.method.find_player(o_player.playerid);
|
||||
|
||||
var roomcard = 0;
|
||||
if (playerid == o_room.owner.playerid){
|
||||
roomcard = youle_room.import.createroom_needroomcard(o_room.o_game, o_room.roomtype);
|
||||
} else {
|
||||
roomcard = youle_room.import.joinroom_needroomcard(o_room.o_game, o_room.roomtype);
|
||||
}
|
||||
if (o_player.playerid == o_room.owner.playerid) {
|
||||
ownergarde = o_player.gameinfo.grade;
|
||||
}
|
||||
|
||||
var isRebate = false;
|
||||
|
||||
switch(rebateFrom){
|
||||
//大赢家
|
||||
case 1:
|
||||
if(o_player.gameinfo.grade == maxgrade){
|
||||
isRebate = true;
|
||||
}
|
||||
break;
|
||||
//赢家
|
||||
case 2:
|
||||
if(o_player.gameinfo.grade > 0){
|
||||
isRebate = true;
|
||||
}
|
||||
break;
|
||||
//所有人
|
||||
case 3:
|
||||
isRebate = true;
|
||||
break;
|
||||
default:
|
||||
|
||||
break;
|
||||
}
|
||||
//console.log("playerid:"+o_player.playerid+"grade:"+o_player.gameinfo.grade+"isRebate:"+isRebate);
|
||||
//房间id = 时间戳 + 4位随机码 + 房号
|
||||
var roomid = new Date().getTime() + min_randomChar(4) + o_room.roomcode;
|
||||
var datatime = min_now();
|
||||
//达成抽成条件
|
||||
if(isRebate && rebateTemp){
|
||||
//rebateSum += rebateReal;
|
||||
|
||||
if(!roomMode){
|
||||
var msg = {};
|
||||
msg.app = youle_room.app.appname;
|
||||
msg.route = youle_room.app.youle_agent.routename;
|
||||
msg.rpc = "update_bean";
|
||||
msg.data = {};
|
||||
msg.data.agentid = agentid;
|
||||
msg.data.playerid = o_player.playerid;
|
||||
|
||||
if(o_room.roommode){
|
||||
msg.data.change = o_player.gameinfo.grade;
|
||||
}else{
|
||||
msg.data.change = 0;
|
||||
}
|
||||
var nBean = rebateReal - msg.data.change;
|
||||
var sysBean = 0;
|
||||
//console.log("o_player.bean",o_player.bean,"nBean",nBean);
|
||||
if(o_player.bean >= nBean){
|
||||
if(ownerid == o_agentsvr_player.playerid){
|
||||
msg.data.pushbean = 0;
|
||||
}else{
|
||||
msg.data.pushbean = -1 *rebateReal ;
|
||||
// pushCount += rebateReal;
|
||||
sysBean = sysRebateValue;
|
||||
pushCount = pushCount + (rebateReal - sysRebateValue);
|
||||
}
|
||||
}else{
|
||||
msg.data.pushbean = 0;
|
||||
}
|
||||
|
||||
msg.data.gameid = gameid;
|
||||
msg.data.showrebate = 0;
|
||||
youle_room.app.youle_agent[msg.rpc](msg);
|
||||
|
||||
var roommode = 0; //玩家房间
|
||||
if (o_room.sysroom) {
|
||||
roommode = 1; //系统房间
|
||||
}
|
||||
var createtime = o_room.createtime;
|
||||
var beanmult = 0;
|
||||
if (o_room.beanmult){
|
||||
beanmult = o_room.beanmult;
|
||||
}
|
||||
var ownerid = o_room.owner.playerid;
|
||||
var shortcode = 0;
|
||||
if (o_room.shortcode){
|
||||
shortcode = o_room.shortcode;
|
||||
}
|
||||
var deductmode = youle_room.import.deduct_roomcard_mode(o_room.o_game, o_room.roomtype);
|
||||
var playerid = o_player.playerid;
|
||||
var grade = o_player.gameinfo.grade;
|
||||
var roomcard = 0;
|
||||
if (playerid == o_room.owner.playerid){
|
||||
roomcard = youle_room.import.createroom_needroomcard(o_room.o_game, o_room.roomtype);
|
||||
} else {
|
||||
roomcard = youle_room.import.joinroom_needroomcard(o_room.o_game, o_room.roomtype);
|
||||
}
|
||||
|
||||
var asetcount = o_room.asetcount;
|
||||
var sql = "insert into gold_account(goac_id,goac_agentid,goac_gameid,goac_roomcode,goac_roommode,goac_createtime,goac_beanmult,goac_ownerid,goac_shortcode,goac_deduct,goac_roomcard,goac_datatype,goac_asetcount,goac_asetnum,goac_playerid,goac_isrobot,goac_grade,goac_rebatefrom,goac_rebateto,goac_toplayerid,goac_rebatemode,goac_setvalue,goac_rebatevalue,goac_time) values(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?);";
|
||||
youle_room.mysql_grade.execsql("execsql", sql, [roomid, agentid, gameid, roomcode, roommode, createtime, beanmult, ownerid, shortcode, deductmode, roomcard, 0, asetcount, 0, playerid, 0, grade, rebateFrom, rebateTo, '', rebateMode, sysBean, sysBean, datatime]);
|
||||
}
|
||||
// else{
|
||||
// //修改房卡数量
|
||||
// var msg2 = {};
|
||||
// msg2.data={};
|
||||
// msg2.data.agentid = agentid;
|
||||
// msg2.data.playerid = o_player.playerid;
|
||||
// msg2.data.change = -1*rebateReal;
|
||||
|
||||
// xRebate.update_roomcard(msg2);
|
||||
// }
|
||||
}else{
|
||||
var msg = {};
|
||||
msg.app = youle_room.app.appname;
|
||||
msg.route = youle_room.app.youle_agent.routename;
|
||||
msg.rpc = "update_bean";
|
||||
msg.data = {};
|
||||
msg.data.agentid = agentid;
|
||||
msg.data.playerid = o_player.playerid;
|
||||
if(o_room.roommode){
|
||||
msg.data.change = o_player.gameinfo.grade;
|
||||
}else{
|
||||
msg.data.change = 0;
|
||||
}
|
||||
msg.data.pushbean = 0;
|
||||
msg.data.gameid = gameid;
|
||||
msg.data.showrebate = 1;
|
||||
youle_room.app.youle_agent[msg.rpc](msg);
|
||||
|
||||
var roommode = 0; //玩家房间
|
||||
if (o_room.sysroom) {
|
||||
roommode = 1; //系统房间
|
||||
}
|
||||
var createtime = o_room.createtime;
|
||||
var beanmult = 0;
|
||||
if (o_room.beanmult){
|
||||
beanmult = o_room.beanmult;
|
||||
}
|
||||
var ownerid = o_room.owner.playerid;
|
||||
var shortcode = 0;
|
||||
if (o_room.shortcode){
|
||||
shortcode = o_room.shortcode;
|
||||
}
|
||||
var deductmode = youle_room.import.deduct_roomcard_mode(o_room.o_game, o_room.roomtype);
|
||||
var playerid = o_player.playerid;
|
||||
var grade = o_player.gameinfo.grade;
|
||||
var roomcard = 0;
|
||||
if (playerid == o_room.owner.playerid){
|
||||
roomcard = youle_room.import.createroom_needroomcard(o_room.o_game, o_room.roomtype);
|
||||
} else {
|
||||
roomcard = youle_room.import.joinroom_needroomcard(o_room.o_game, o_room.roomtype);
|
||||
}
|
||||
|
||||
var asetcount = o_room.asetcount;
|
||||
var sql = "insert into gold_account(goac_id,goac_agentid,goac_gameid,goac_roomcode,goac_roommode,goac_createtime,goac_beanmult,goac_ownerid,goac_shortcode,goac_deduct,goac_roomcard,goac_datatype,goac_asetcount,goac_asetnum,goac_playerid,goac_isrobot,goac_grade,goac_rebatefrom,goac_rebateto,goac_toplayerid,goac_rebatemode,goac_setvalue,goac_rebatevalue,goac_time) values(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?);";
|
||||
youle_room.mysql_grade.execsql("execsql", sql, [roomid, agentid, gameid, roomcode, roommode, createtime, beanmult, ownerid, shortcode, deductmode, roomcard, 0, asetcount, 0, playerid, 0, grade, 0, rebateTo, '', rebateMode, 0, 0, datatime]);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
//console.log("pushCount",pushCount);
|
||||
if(pushCount){
|
||||
var msg = {};
|
||||
msg.app = youle_room.app.appname;
|
||||
msg.route = youle_room.app.youle_agent.routename;
|
||||
msg.rpc = "update_bean";
|
||||
msg.data = {};
|
||||
msg.data.agentid = agentid;
|
||||
msg.data.playerid = ownerid;
|
||||
msg.data.change = 0;
|
||||
msg.data.pushbean = pushCount;
|
||||
|
||||
msg.data.gameid = gameid;
|
||||
msg.data.showrebate = 0;
|
||||
youle_room.app.youle_agent[msg.rpc](msg);
|
||||
|
||||
var roommode = 0; //玩家房间
|
||||
if (o_room.sysroom) {
|
||||
roommode = 1; //系统房间
|
||||
}
|
||||
var createtime = o_room.createtime;
|
||||
var beanmult = 0;
|
||||
if (o_room.beanmult){
|
||||
beanmult = o_room.beanmult;
|
||||
}
|
||||
var ownerid = o_room.owner.playerid;
|
||||
var shortcode = 0;
|
||||
if (o_room.shortcode){
|
||||
shortcode = o_room.shortcode;
|
||||
}
|
||||
var deductmode = youle_room.import.deduct_roomcard_mode(o_room.o_game, o_room.roomtype);
|
||||
var playerid = ownerid;
|
||||
var grade = 0;
|
||||
var roomcard = 0;
|
||||
if (playerid == o_room.owner.playerid){
|
||||
roomcard = youle_room.import.createroom_needroomcard(o_room.o_game, o_room.roomtype);
|
||||
} else {
|
||||
roomcard = youle_room.import.joinroom_needroomcard(o_room.o_game, o_room.roomtype);
|
||||
}
|
||||
|
||||
var asetcount = o_room.asetcount;
|
||||
var sql = "insert into gold_account(goac_id,goac_agentid,goac_gameid,goac_roomcode,goac_roommode,goac_createtime,goac_beanmult,goac_ownerid,goac_shortcode,goac_deduct,goac_roomcard,goac_datatype,goac_asetcount,goac_asetnum,goac_playerid,goac_isrobot,goac_grade,goac_rebatefrom,goac_rebateto,goac_toplayerid,goac_rebatemode,goac_setvalue,goac_rebatevalue,goac_time) values(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?);";
|
||||
youle_room.mysql_grade.execsql("execsql", sql, [roomid, agentid, gameid, roomcode, roommode, createtime, beanmult, ownerid, shortcode, deductmode, roomcard, 0, asetcount, 0, playerid, 0, grade, rebateFrom, 1, ownerid, rebateMode, pushCount, pushCount, datatime]);
|
||||
}
|
||||
//}
|
||||
|
||||
}
|
||||
|
||||
//修改房卡
|
||||
xRebate.update_roomcard = function(pack){
|
||||
var agentid = pack.data.agentid;
|
||||
var playerid = pack.data.playerid;
|
||||
var change = parseInt(pack.data.change);
|
||||
|
||||
//查找代理商
|
||||
var o_agent = youle_agent.agents.method.find_agent(agentid);
|
||||
if (!o_agent) {
|
||||
pack.data = {};
|
||||
pack.data.result = 1;
|
||||
pack.data.error = "agentid不存在";
|
||||
return pack;
|
||||
};
|
||||
|
||||
var db_callback = function(dbdata){
|
||||
if (dbdata[0].result == 0){
|
||||
var o_player = o_agent.method.find_player(playerid);
|
||||
if (o_player){
|
||||
o_player.method.update_roomcard(0, parseInt(dbdata[0].roomcard), change,"房间费");
|
||||
}
|
||||
pack.data.result = 0;
|
||||
} else {
|
||||
pack.data = {};
|
||||
pack.data.result = dbdata[0].result;
|
||||
pack.data.error = dbdata[0].error;
|
||||
}
|
||||
youle_agent.app.SendPack(pack);
|
||||
|
||||
}
|
||||
var sql = "call cp_game_update_roomcard(?,?,?);";
|
||||
youle_agent.mysql.execsql("opensql", sql, [agentid, playerid, change], db_callback);
|
||||
}
|
||||
//百人vip房抽成金币
|
||||
xRebate.gameRebate2 = function(o_room,ary_grade){
|
||||
var ary_grade1=[];
|
||||
for(var i=0;i<ary_grade.length;i++){
|
||||
ary_grade1.push(ary_grade[i]);
|
||||
}
|
||||
//小局抽成设置
|
||||
// var rebateConfig = youle_room.app.youle_platform.config.method.get_paravalue("aset_rebate", o_room.o_game.o_agent.agentid);
|
||||
var rebateConfig = youle_room.app.youle_platform.config.method.get_paravalue("rebateConfig", o_room.o_game.o_agent.agentid);
|
||||
if(!rebateConfig){
|
||||
return ary_grade1;
|
||||
}
|
||||
// if(!rebateConfig.infinite){
|
||||
// return ary_grade1;
|
||||
// }
|
||||
|
||||
if(o_room.o_game.gameid != "Btke0urRy0cvPd5CIvD5yfhYhKhdSdex"){
|
||||
return ary_grade1;
|
||||
}
|
||||
// if(o_room.rebateType){
|
||||
// return;
|
||||
// }
|
||||
var rbtTemp = false;//游戏是否产生了胜负
|
||||
var maxgrade = 0;
|
||||
var maxseat = [];
|
||||
for (var i = 0; i < ary_grade.length; i++){
|
||||
if (ary_grade[i]){
|
||||
ary_grade[i] = Number(ary_grade[i]);
|
||||
if (ary_grade[i] > maxgrade){
|
||||
maxgrade = ary_grade[i];
|
||||
maxseat = [i];
|
||||
} else if (ary_grade[i] == maxgrade){
|
||||
maxseat.push(i);
|
||||
}
|
||||
if(ary_grade[i] < 0){
|
||||
rbtTemp = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
if(!rbtTemp){
|
||||
return ary_grade;
|
||||
}
|
||||
//只支持倍数百分比抽成
|
||||
//抽成参数
|
||||
|
||||
//小局抽成设置
|
||||
//var aset_rebate = youle_room.app.youle_platform.config.method.get_paravalue("aset_rebate", o_room.o_game.o_agent.agentid);
|
||||
//扣除模式 1.大赢家 2.赢家 3.所有人
|
||||
// var rebateFrom = rebateConfig.from;
|
||||
var rebateFrom = 1;
|
||||
var o_agentsvr_agent = youle_agent.agents.method.find_agent(o_room.o_game.o_agent.agentid);
|
||||
//配置扣除数量
|
||||
var sysRebateValue = o_room.rebateNumber;
|
||||
var sysRebateValue1 = o_room.sysRebateValue;
|
||||
|
||||
var agentid = o_room.o_game.o_agent.agentid;
|
||||
var gameid = o_room.o_game.gameid;
|
||||
var roomcode = o_room.roomcode;
|
||||
var createtime = o_room.createtime;
|
||||
var makewartime = o_room.makewartime;
|
||||
var roommode = o_room.roommode;
|
||||
var ownerid = o_room.owner.playerid;
|
||||
var shortcode = 0;
|
||||
if (o_room.shortcode){
|
||||
shortcode = o_room.shortcode;
|
||||
}
|
||||
var deductmode = youle_room.import.deduct_roomcard_mode(o_room.o_game, o_room.roomtype);
|
||||
|
||||
var asetcount = o_room.asetcount;
|
||||
|
||||
var rebateTo = 0;
|
||||
var rebateMode = 2;
|
||||
var roomMode = 0;
|
||||
|
||||
//房间收取房间费的值
|
||||
var rebateValue = sysRebateValue;
|
||||
|
||||
|
||||
//每个人扣除的数量
|
||||
var rebateReal = rebateValue;
|
||||
//通过扣除模式得出每个人扣的数量
|
||||
switch(rebateFrom){
|
||||
//大赢家
|
||||
case 1:
|
||||
if(maxseat.length>0){
|
||||
rebateReal = parseInt(rebateValue / maxseat.length);//多个大赢家均摊房间费
|
||||
|
||||
sysRebateValue1 = parseInt(sysRebateValue1 / maxseat.length);//多个大赢家均摊房间费
|
||||
}
|
||||
break;
|
||||
//赢家
|
||||
case 2:
|
||||
|
||||
break;
|
||||
//所有人
|
||||
case 3:
|
||||
|
||||
break;
|
||||
default:
|
||||
|
||||
break;
|
||||
}
|
||||
var ownergarde = 0;
|
||||
var brNumber = youle_room.app.youle_platform.config.method.get_paravalue("brNumber",o_room.o_game.o_agent.agentid);
|
||||
var o_agentsvr_agent = youle_agent.agents.method.find_agent(o_room.o_game.o_agent.agentid);
|
||||
var o_agentsvr_owner = o_agentsvr_agent.method.find_player(o_room.owner.playerid);
|
||||
if(brNumber){
|
||||
brNumber = Number(brNumber);
|
||||
//房主扣除房间费 金币
|
||||
var agentid = o_room.o_game.o_agent.agentid;
|
||||
var o_player = o_agentsvr_owner;
|
||||
var gameid = o_room.o_game.gameid;
|
||||
var datatime = min_now();
|
||||
var msg = {};
|
||||
msg.app = youle_room.app.appname;
|
||||
msg.route = youle_room.app.youle_agent.routename;
|
||||
msg.rpc = "update_bean";
|
||||
msg.data = {};
|
||||
msg.data.agentid = agentid;
|
||||
msg.data.playerid = o_player.playerid;
|
||||
msg.data.change = 0;
|
||||
|
||||
msg.data.pushbean = -1 * brNumber;
|
||||
msg.data.gameid = gameid;
|
||||
msg.data.showrebate = 0;
|
||||
youle_room.app.youle_agent[msg.rpc](msg);
|
||||
var pBean = o_player.bean;
|
||||
//console.log("pBean",pBean);
|
||||
|
||||
|
||||
var roommode = 0; //玩家房间
|
||||
// if (o_room.sysroom) {
|
||||
// roommode = 1; //系统房间
|
||||
// }
|
||||
var createtime = o_room.createtime;
|
||||
var beanmult = 0;
|
||||
if (o_room.beanmult){
|
||||
beanmult = o_room.beanmult;
|
||||
}
|
||||
var ownerid = o_room.owner.playerid;
|
||||
// var shortcode = 0;
|
||||
// if (o_room.shortcode){
|
||||
// shortcode = o_room.shortcode;
|
||||
// }
|
||||
var deductmode = youle_room.import.deduct_roomcard_mode(o_room.o_game, o_room.roomtype);
|
||||
var playerid = o_player.playerid;
|
||||
var grade = o_player.gameinfo.grade;
|
||||
var roomcard = 0;
|
||||
if (playerid == o_room.owner.playerid){
|
||||
roomcard = youle_room.import.createroom_needroomcard(o_room.o_game, o_room.roomtype);
|
||||
} else {
|
||||
roomcard = youle_room.import.joinroom_needroomcard(o_room.o_game, o_room.roomtype);
|
||||
}
|
||||
var roomid = new Date().getTime() + min_randomChar(4) + o_room.roomcode;
|
||||
var roomcode = o_room.roomcode;
|
||||
var asetcount = o_room.asetcount;
|
||||
var sql = "insert into gold_account(goac_id,goac_agentid,goac_gameid,goac_roomcode,goac_roommode,goac_createtime,goac_beanmult,goac_ownerid,goac_shortcode,goac_deduct,goac_roomcard,goac_datatype,goac_asetcount,goac_asetnum,goac_playerid,goac_isrobot,goac_grade,goac_rebatefrom,goac_rebateto,goac_toplayerid,goac_rebatemode,goac_setvalue,goac_rebatevalue,goac_time) values(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?);";
|
||||
youle_room.mysql_grade.execsql("execsql", sql, [roomid, agentid, gameid, roomcode, roommode, createtime, beanmult, ownerid, shortcode, deductmode, roomcard, 0, asetcount, 0, playerid, 0, 0, 4, 2, '', 3, brNumber, brNumber, datatime]);
|
||||
}
|
||||
var rbType = o_room.rebateType;
|
||||
try{
|
||||
if (o_room.shortcode){
|
||||
|
||||
if (o_agentsvr_owner.whitelist && o_agentsvr_owner.whitelist.length > 0){
|
||||
var rebateConfig = youle_room.app.youle_platform.config.method.get_paravalue("rebateConfig", o_room.o_game.o_agent.agentid);
|
||||
var rCharm = 0;
|
||||
var maxgrade1 = 0;
|
||||
var maxseat1 = [];
|
||||
var rcTemp = false;
|
||||
|
||||
|
||||
if(maxseat.length>0){
|
||||
rCharm = parseInt(o_room.rebateNumber/maxseat.length);
|
||||
}else{
|
||||
rCharm = parseInt(o_room.rebateNumber);
|
||||
}
|
||||
|
||||
// if(rebateConfig){
|
||||
// if(rebateConfig.rebateCharm && o_room.rebateType){
|
||||
// rcTemp = true;
|
||||
// }
|
||||
//抽金币
|
||||
// if(!o_room.rebateType){
|
||||
// reTemp = true;
|
||||
// }
|
||||
// }
|
||||
|
||||
var _seatlist = [];
|
||||
// console.log("ary_grade",ary_grade);
|
||||
// console.log("333",JSON.stringify(o_agentsvr_owner.whitelist));
|
||||
// console.log("rCharm",rCharm);
|
||||
for (var i = 0; i < ary_grade.length; i++) {
|
||||
if (ary_grade[i] != null){
|
||||
if (o_room.seatlist[i]){
|
||||
var _player = {};
|
||||
_player.seat = i;
|
||||
_player.playerid = o_room.seatlist[i].playerid;
|
||||
_player.change = 0;
|
||||
for (var j = 0; j < o_agentsvr_owner.whitelist.length; j++) {
|
||||
if (o_agentsvr_owner.whitelist[j][0] == _player.playerid){
|
||||
if (o_agentsvr_owner.whitelist[j][2]){
|
||||
|
||||
if(rbType && ary_grade[i] == maxgrade){
|
||||
o_agentsvr_owner.whitelist[j][2] = parseInt(o_agentsvr_owner.whitelist[j][2]) - rCharm;
|
||||
ary_grade1[i] = ary_grade1[i] - rCharm;
|
||||
}
|
||||
} else {
|
||||
|
||||
if(rbType && ary_grade[i] == maxgrade){
|
||||
o_agentsvr_owner.whitelist[j][2] = -1 * rCharm;
|
||||
ary_grade1[i] = ary_grade1[i] - rCharm;
|
||||
}
|
||||
}
|
||||
_player.charm = o_agentsvr_owner.whitelist[j][2];
|
||||
break;
|
||||
}
|
||||
}
|
||||
_seatlist.push(_player);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
var msg = {};
|
||||
msg.app = "youle";
|
||||
msg.route = "agent";
|
||||
msg.rpc = "update_charm";
|
||||
msg.data = {};
|
||||
msg.data.seatlist = _seatlist;
|
||||
o_room.method.sendpack_toother(msg, -1);
|
||||
// console.log("222",JSON.stringify(o_agentsvr_owner.whitelist));
|
||||
var sql = "update player set play_whitelist = ? where play_agentid = ? and play_playerid = ?";
|
||||
youle_room.mysql.execsql("execsql", sql, [youle_agent.compressWhiteList(o_agentsvr_owner.whitelist), o_room.o_game.o_agent.agentid, o_room.owner.playerid]);
|
||||
}
|
||||
}
|
||||
}catch(e){
|
||||
console.log("结算短号魅力值发生错误");
|
||||
console.log(e);
|
||||
}
|
||||
//var rebateSum = 0;//总共扣除的房间费
|
||||
//console.log("seatlist",o_room.seatlist);
|
||||
var ownerid = null;
|
||||
if(o_room.owner){
|
||||
ownerid = o_room.owner.playerid;
|
||||
}
|
||||
console.log("rebateReal",rebateReal);
|
||||
console.log("sysRebateValue1",sysRebateValue1);
|
||||
var pushCount = 0;
|
||||
if(!o_room.rebateType){
|
||||
for (var i = 0; i < ary_grade.length; i++) {
|
||||
if (o_room.seatlist[i] && ary_grade[i] != null){
|
||||
var o_player = o_room.seatlist[i];
|
||||
console.log("ccc",o_player.playerid,o_player.gameinfo.isbet);
|
||||
if (o_player.gameinfo.isbet) {
|
||||
var o_agentsvr_player = o_agentsvr_agent.method.find_player(o_player.playerid);
|
||||
var roomcard = 0;
|
||||
if (o_player.playerid == o_room.owner.playerid){
|
||||
roomcard = youle_room.import.createroom_needroomcard(o_room.o_game, o_room.roomtype);
|
||||
} else {
|
||||
roomcard = youle_room.import.joinroom_needroomcard(o_room.o_game, o_room.roomtype);
|
||||
}
|
||||
if (o_player.playerid == o_room.owner.playerid) {
|
||||
ownergarde = ary_grade[i];
|
||||
}
|
||||
|
||||
var isRebate = false;
|
||||
|
||||
switch(rebateFrom){
|
||||
//大赢家
|
||||
case 1:
|
||||
if(ary_grade[i] == maxgrade){
|
||||
isRebate = true;
|
||||
}
|
||||
break;
|
||||
//赢家
|
||||
case 2:
|
||||
if(ary_grade[i] > 0){
|
||||
isRebate = true;
|
||||
}
|
||||
break;
|
||||
//所有人
|
||||
case 3:
|
||||
isRebate = true;
|
||||
break;
|
||||
default:
|
||||
|
||||
break;
|
||||
}
|
||||
//console.log("playerid:"+o_player.playerid+"grade:"+o_player.gameinfo.grade+"isRebate:"+isRebate);
|
||||
//房间id = 时间戳 + 4位随机码 + 房号
|
||||
var roomid = new Date().getTime() + min_randomChar(4) + o_room.roomcode;
|
||||
var datatime = min_now();
|
||||
//达成抽成条件
|
||||
if(isRebate){
|
||||
//rebateSum += rebateReal;
|
||||
|
||||
// if(!roomMode){
|
||||
var msg = {};
|
||||
msg.app = youle_room.app.appname;
|
||||
msg.route = youle_room.app.youle_agent.routename;
|
||||
msg.rpc = "update_bean";
|
||||
msg.data = {};
|
||||
msg.data.agentid = agentid;
|
||||
msg.data.playerid = o_player.playerid;
|
||||
if(o_room.roommode){
|
||||
msg.data.change = o_player.gameinfo.grade;
|
||||
}else{
|
||||
msg.data.change = 0;
|
||||
}
|
||||
var sysBean = 0;
|
||||
if(ownerid == o_player.playerid){
|
||||
msg.data.pushbean = 0;
|
||||
}else{
|
||||
//var nBean = rebateReal - msg.data.change;
|
||||
//console.log("o_player.bean",o_player.bean,"nBean",nBean);
|
||||
//if(o_player.bean >= nBean){
|
||||
msg.data.pushbean = -1 * rebateReal;
|
||||
// pushCount += rebateReal;
|
||||
sysBean = sysRebateValue1;
|
||||
pushCount = pushCount + (rebateReal - sysRebateValue1);
|
||||
// }else{
|
||||
// msg.data.pushbean = 0;
|
||||
// }
|
||||
}
|
||||
msg.data.gameid = gameid;
|
||||
msg.data.showrebate = 0;
|
||||
youle_room.app.youle_agent[msg.rpc](msg);
|
||||
|
||||
var roommode = 0; //玩家房间
|
||||
if (o_room.sysroom) {
|
||||
roommode = 1; //系统房间
|
||||
}
|
||||
var createtime = o_room.createtime;
|
||||
var beanmult = 0;
|
||||
if (o_room.beanmult){
|
||||
beanmult = o_room.beanmult;
|
||||
}
|
||||
var ownerid = o_room.owner.playerid;
|
||||
var shortcode = 0;
|
||||
if (o_room.shortcode){
|
||||
shortcode = o_room.shortcode;
|
||||
}
|
||||
var deductmode = youle_room.import.deduct_roomcard_mode(o_room.o_game, o_room.roomtype);
|
||||
var playerid = o_player.playerid;
|
||||
var grade = o_player.gameinfo.grade;
|
||||
var roomcard = 0;
|
||||
if (playerid == o_room.owner.playerid){
|
||||
roomcard = youle_room.import.createroom_needroomcard(o_room.o_game, o_room.roomtype);
|
||||
} else {
|
||||
roomcard = youle_room.import.joinroom_needroomcard(o_room.o_game, o_room.roomtype);
|
||||
}
|
||||
|
||||
var asetcount = o_room.asetcount;
|
||||
var sql = "insert into gold_account(goac_id,goac_agentid,goac_gameid,goac_roomcode,goac_roommode,goac_createtime,goac_beanmult,goac_ownerid,goac_shortcode,goac_deduct,goac_roomcard,goac_datatype,goac_asetcount,goac_asetnum,goac_playerid,goac_isrobot,goac_grade,goac_rebatefrom,goac_rebateto,goac_toplayerid,goac_rebatemode,goac_setvalue,goac_rebatevalue,goac_time) values(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?);";
|
||||
youle_room.mysql_grade.execsql("execsql", sql, [roomid, agentid, gameid, roomcode, roommode, createtime, beanmult, ownerid, shortcode, deductmode, roomcard, 0, asetcount, 0, playerid, 0, grade, rebateFrom, rebateTo, '', rebateMode, sysBean, sysBean , datatime]);
|
||||
// }
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
//console.log("pushCount",pushCount);
|
||||
if(pushCount){
|
||||
var ownerid = o_room.owner.playerid;
|
||||
var msg = {};
|
||||
msg.app = youle_room.app.appname;
|
||||
msg.route = youle_room.app.youle_agent.routename;
|
||||
msg.rpc = "update_bean";
|
||||
msg.data = {};
|
||||
msg.data.agentid = agentid;
|
||||
msg.data.playerid = ownerid;
|
||||
msg.data.change = 0;
|
||||
|
||||
msg.data.pushbean = pushCount;
|
||||
msg.data.gameid = gameid;
|
||||
msg.data.showrebate = 0;
|
||||
youle_room.app.youle_agent[msg.rpc](msg);
|
||||
|
||||
var roommode = 0; //玩家房间
|
||||
if (o_room.sysroom) {
|
||||
roommode = 1; //系统房间
|
||||
}
|
||||
var createtime = o_room.createtime;
|
||||
var beanmult = 0;
|
||||
if (o_room.beanmult){
|
||||
beanmult = o_room.beanmult;
|
||||
}
|
||||
|
||||
var shortcode = 0;
|
||||
if (o_room.shortcode){
|
||||
shortcode = o_room.shortcode;
|
||||
}
|
||||
var deductmode = youle_room.import.deduct_roomcard_mode(o_room.o_game, o_room.roomtype);
|
||||
var playerid = ownerid;
|
||||
var grade = 0;
|
||||
var roomcard = 0;
|
||||
if (playerid == o_room.owner.playerid){
|
||||
roomcard = youle_room.import.createroom_needroomcard(o_room.o_game, o_room.roomtype);
|
||||
} else {
|
||||
roomcard = youle_room.import.joinroom_needroomcard(o_room.o_game, o_room.roomtype);
|
||||
}
|
||||
|
||||
var asetcount = o_room.asetcount;
|
||||
var sql = "insert into gold_account(goac_id,goac_agentid,goac_gameid,goac_roomcode,goac_roommode,goac_createtime,goac_beanmult,goac_ownerid,goac_shortcode,goac_deduct,goac_roomcard,goac_datatype,goac_asetcount,goac_asetnum,goac_playerid,goac_isrobot,goac_grade,goac_rebatefrom,goac_rebateto,goac_toplayerid,goac_rebatemode,goac_setvalue,goac_rebatevalue,goac_time) values(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?);";
|
||||
youle_room.mysql_grade.execsql("execsql", sql, [roomid, agentid, gameid, roomcode, roommode, createtime, beanmult, ownerid, shortcode, deductmode, roomcard, 0, asetcount, 0, playerid, 0, grade, rebateFrom, 1, ownerid, rebateMode, pushCount, pushCount, datatime]);
|
||||
}
|
||||
}
|
||||
if(pBean < 2*brNumber){
|
||||
breakTemp = true;
|
||||
youle_room.import.gameBreak(o_room);
|
||||
}
|
||||
return ary_grade1;
|
||||
}
|
||||
181
codes/games/sales_service/youle/server_room/class.return.js
Normal file
181
codes/games/sales_service/youle/server_room/class.return.js
Normal file
@@ -0,0 +1,181 @@
|
||||
///////////////////////////////////////////////////
|
||||
///////// cls_youle_room_return: 返回结果 //////////
|
||||
///////////////////////////////////////////////////
|
||||
var cls_youle_room_return = cls_youle_room_return || {
|
||||
|
||||
new: function() {
|
||||
|
||||
var re = {};
|
||||
|
||||
//创建房间成功
|
||||
re.create_room = function(pack, o_player){
|
||||
pack.route = youle_room.routename;
|
||||
pack.rpc = "create_room";
|
||||
pack.data = {};
|
||||
pack.data.state = 0;
|
||||
if (o_player.gameinfo.o_room){
|
||||
pack.data.roomcode = o_player.gameinfo.o_room.roomcode;
|
||||
if (o_player.gameinfo.o_room.makewar){
|
||||
pack.data.makewar = o_player.gameinfo.o_room.makewar;
|
||||
} else {
|
||||
pack.data.makewar = o_player.gameinfo.o_game.makewar;
|
||||
}
|
||||
pack.data.roomtype = o_player.gameinfo.o_room.roomtype;
|
||||
pack.data.asetcount = o_player.gameinfo.o_room.asetcount;
|
||||
pack.data.seat = o_player.gameinfo.seat;
|
||||
pack.data.infinite = o_player.gameinfo.o_room.infinite;
|
||||
pack.data.needprepare = o_player.gameinfo.o_room.needprepare;
|
||||
}
|
||||
return pack;
|
||||
};
|
||||
|
||||
//加入房间成功
|
||||
re.self_join_room = function(pack, o_player, playerbean, playercharm){
|
||||
var isbattle; //是否开战了
|
||||
var isfull; //是否满桌了
|
||||
var deskinfo; //房间已经开战的牌桌信息
|
||||
var deskwar; //房间满桌自动开战包
|
||||
var o_room = o_player.gameinfo.o_room;
|
||||
if (o_room.battlestate == 1) {
|
||||
isbattle = true;
|
||||
deskinfo = youle_room.import.get_deskinfo(o_room, o_player.gameinfo.seat);
|
||||
} else {
|
||||
isfull = o_room.method.get_isfull();
|
||||
if (isfull) {
|
||||
//满桌了自动开战
|
||||
o_room.battlestate = 1;
|
||||
o_room.makewartime = min_now();
|
||||
//如果有返回值则后面的代码会发统一的开战包,如果没有返回值则由游戏负责发开战包
|
||||
deskwar = youle_room.import.makewar_deskwar(o_room);
|
||||
} else {
|
||||
//子游戏设置的开战人数
|
||||
var makewarplayercount = youle_room.import.makewar_playercount(o_room.o_game, o_room.roomtype);
|
||||
if (makewarplayercount){
|
||||
var playercount = 0;
|
||||
for (var i = 0; i < o_room.seatlist.length; i++) {
|
||||
if (o_room.seatlist[i] && o_room.seatlist[i].gameinfo.isprepare){
|
||||
playercount = playercount + 1;
|
||||
}
|
||||
}
|
||||
if (playercount == makewarplayercount){
|
||||
isfull = true;
|
||||
o_room.battlestate = 1;
|
||||
o_room.makewartime = min_now();
|
||||
//如果有返回值则后面的代码会发统一的开战包,如果没有返回值则由游戏负责发开战包
|
||||
deskwar = youle_room.import.makewar_deskwar(o_room);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
pack.route = youle_room.routename;
|
||||
pack.rpc = "self_join_room";
|
||||
pack.data = {};
|
||||
pack.data.state = 0;
|
||||
pack.data.roomcode = o_room.roomcode;
|
||||
pack.data.roomtype = o_room.roomtype;
|
||||
pack.data.asetcount = o_room.asetcount;
|
||||
pack.data.seat = o_player.gameinfo.seat;
|
||||
pack.data.infinite = o_room.infinite;
|
||||
pack.data.needprepare = o_room.needprepare;
|
||||
if (o_room.makewar){
|
||||
pack.data.makewar = o_room.makewar;
|
||||
} else {
|
||||
pack.data.makewar = o_player.gameinfo.o_game.makewar;
|
||||
}
|
||||
pack.data.players = o_room.method.get_playerlist();//获取房间内的玩家列表
|
||||
//如果已开战则返回开战时的牌桌信息
|
||||
if (isbattle) {
|
||||
pack.data.deskinfo = deskinfo;
|
||||
} else {
|
||||
if (isfull) {
|
||||
if (deskwar) {
|
||||
pack.data.deskwar = deskwar;
|
||||
}
|
||||
}
|
||||
}
|
||||
//通知房间内的其他人有人加入了房间
|
||||
var msg = {};
|
||||
msg.app = youle_room.app.appname;
|
||||
msg.route = youle_room.routename;
|
||||
msg.rpc = "other_join_room";
|
||||
msg.data = o_player.method.get_info();
|
||||
msg.data.bean = playerbean;
|
||||
if (o_room.shortcode){
|
||||
if (playercharm || playercharm == 0){
|
||||
msg.data.charm = playercharm;
|
||||
}
|
||||
}
|
||||
msg.data.seat = o_player.gameinfo.seat;
|
||||
msg.data.isprepare = o_player.gameinfo.isprepare;
|
||||
if (o_player.paycode){
|
||||
msg.data.paycode = o_player.paycode;
|
||||
}
|
||||
for (var i = 0; i < o_room.seatlist.length; i++) {
|
||||
if (o_room.seatlist[i] && (i != o_player.gameinfo.seat)) {
|
||||
msg.conmode = o_room.seatlist[i].conmode;
|
||||
msg.fromid = o_room.seatlist[i].fromid;
|
||||
if (!isbattle && isfull) {
|
||||
if (deskwar) {
|
||||
msg.data.deskwar = deskwar;
|
||||
}
|
||||
}
|
||||
youle_room.app.SendPack(msg);
|
||||
}
|
||||
}
|
||||
return pack;
|
||||
};
|
||||
|
||||
//断线重连
|
||||
re.player_login = function(pack, o_player){
|
||||
pack.route = youle_room.routename;
|
||||
pack.rpc = "player_login";
|
||||
pack.data = {};
|
||||
pack.data.state = 0;
|
||||
pack.data.gameid = o_player.gameinfo.o_game.gameid;
|
||||
pack.data.roomcode = o_player.gameinfo.o_room.roomcode;
|
||||
pack.data.roomtype = o_player.gameinfo.o_room.roomtype;
|
||||
pack.data.asetcount = o_player.gameinfo.o_room.asetcount;
|
||||
pack.data.roommode = o_player.gameinfo.o_room.roommode;
|
||||
pack.data.beanfloor = o_player.gameinfo.o_room.beanfloor;
|
||||
pack.data.makewar = o_player.gameinfo.o_game.makewar;
|
||||
pack.data.isbattle = o_player.gameinfo.o_room.battlestate;
|
||||
pack.data.needprepare = o_player.gameinfo.o_room.needprepare;
|
||||
pack.data.seat = o_player.gameinfo.seat;
|
||||
pack.data.isowner = o_player.gameinfo.isowner;
|
||||
pack.data.isbet = o_player.gameinfo.isbet;
|
||||
pack.data.infinite = o_player.gameinfo.o_room.infinite;
|
||||
//获取房间内的玩家列表
|
||||
pack.data.players = o_player.gameinfo.o_room.method.get_playerlist();
|
||||
//获取房间的申请解散状态
|
||||
pack.data.agreefree = o_player.gameinfo.o_room.method.get_agreefree();
|
||||
//获取牌局信息
|
||||
if (o_player.gameinfo.o_room.battlestate == 1){
|
||||
pack.data.deskinfo = youle_room.import.get_deskinfo(o_player.gameinfo.o_room, o_player.gameinfo.seat);
|
||||
}
|
||||
if (o_player.gameinfo.o_room.match_data){
|
||||
pack.data.match_data = o_player.gameinfo.o_room.match_data;
|
||||
pack.data.match_roomcard = o_player.gameinfo.o_room.needroomcard;
|
||||
}
|
||||
//通知前端房间内的其他人有人上线了
|
||||
var msg = {};
|
||||
msg.app = youle_room.app.appname;
|
||||
msg.route = youle_room.routename;
|
||||
msg.rpc = "other_online";
|
||||
msg.data = {};
|
||||
msg.data.seat = o_player.gameinfo.seat;
|
||||
msg.data.playerid = o_player.playerid;
|
||||
msg.data.nickname = o_player.nickname;
|
||||
msg.data.avatar = o_player.avatar;
|
||||
msg.data.sex = o_player.sex;
|
||||
msg.data.ip = o_player.ip;
|
||||
o_player.gameinfo.o_room.method.sendpack_toother(msg, o_player.gameinfo.seat);
|
||||
return pack;
|
||||
};
|
||||
|
||||
return re;
|
||||
}
|
||||
}
|
||||
|
||||
//返回结果
|
||||
youle_room.return = cls_youle_room_return.new();
|
||||
433
codes/games/sales_service/youle/server_room/class.room.js
Normal file
433
codes/games/sales_service/youle/server_room/class.room.js
Normal file
@@ -0,0 +1,433 @@
|
||||
///////////////////////////////////////////////////
|
||||
////////// cls_youle_room_room: 房间 //////////
|
||||
///////////////////////////////////////////////////
|
||||
var cls_youle_room_room = cls_youle_room_room || {
|
||||
//构造函数
|
||||
new: function(o_game, roomcode, roomtype, needroomcard, asetcount){
|
||||
|
||||
var room = {};
|
||||
//基本信息
|
||||
room.o_game = o_game; //游戏
|
||||
room.roomcode = roomcode; //房号
|
||||
room.roomtype = roomtype; //房间类型
|
||||
room.needroomcard = needroomcard; //开房需要的房卡数量
|
||||
room.asetcount = asetcount; //总局数
|
||||
room.createtime = min_now(); //开房时间
|
||||
room.seatlist = []; //座位列表
|
||||
var makewarplayercount = youle_room.import.makewar_playercount(o_game, roomtype);
|
||||
if (makewarplayercount){
|
||||
room.seatlist.length = makewarplayercount;
|
||||
} else {
|
||||
room.seatlist.length = o_game.seatcount;
|
||||
}
|
||||
room.battlestate = 0; //游戏状态 0:未开战 1:已开战
|
||||
room.makewartime = null; //开战时间
|
||||
room.owner = null; //房主
|
||||
room.applyfreetime = null; //申请解散的时间
|
||||
room.freetimer = null; //默认同意解散房间的定时器
|
||||
room.wasdeduct = false; //是否扣除了房主的房卡
|
||||
|
||||
//24小时后如果没有玩家在房间内则解散房间的定时器
|
||||
var do_freeroom24 = function(){
|
||||
for (var i = 0; i < room.seatlist.length; i++) {
|
||||
if (room.seatlist[i]){
|
||||
return;
|
||||
}
|
||||
}
|
||||
min_closetime(room.freetimer24);
|
||||
room.freetimer24 = null;
|
||||
|
||||
youle_room.export.save_grade(room, null, null, 1);
|
||||
}
|
||||
room.freetimer24 = min_ontime(do_freeroom24, 24 * 60 * 60 * 1000);
|
||||
|
||||
//方法
|
||||
room.method = {};
|
||||
|
||||
//查找玩家
|
||||
room.method.find_player = function(playerid){
|
||||
return cls_youle_room_room.find_player(room, playerid);
|
||||
}
|
||||
|
||||
//获取玩家人数
|
||||
room.method.get_playercount = function(){
|
||||
return cls_youle_room_room.get_playercount(room);
|
||||
}
|
||||
|
||||
//获取已准备的玩家人数
|
||||
room.method.get_playercount_prepare = function(){
|
||||
return cls_youle_room_room.get_playercount_prepare(room);
|
||||
}
|
||||
|
||||
//获取房间内所有玩家的基本信息
|
||||
room.method.get_playerlist = function(){
|
||||
return cls_youle_room_room.get_playerlist(room);
|
||||
}
|
||||
|
||||
//房间是否满桌
|
||||
room.method.get_isfull = function(){
|
||||
return cls_youle_room_room.get_isfull(room);
|
||||
}
|
||||
|
||||
//获取房间内所有玩家的申请解散房间状态
|
||||
room.method.get_agreefree = function(){
|
||||
return cls_youle_room_room.get_agreefree(room);
|
||||
}
|
||||
|
||||
//给房间内某个位置的玩家发包
|
||||
room.method.sendpack_toseat = function(msg, seat){
|
||||
cls_youle_room_room.sendpack_toseat(room, msg, seat);
|
||||
}
|
||||
|
||||
//给房间内的其他玩家发包
|
||||
room.method.sendpack_toother = function(msg, selfseat){
|
||||
cls_youle_room_room.sendpack_toother(room, msg, selfseat);
|
||||
}
|
||||
|
||||
//默认同意解散倒计时
|
||||
room.method.get_freeroom_countdown = function(){
|
||||
return cls_youle_room_room.get_freeroom_countdown(room);
|
||||
}
|
||||
|
||||
//打开默认同意解散的定时器
|
||||
room.method.open_free_timer = function(){
|
||||
cls_youle_room_room.open_free_timer(room);
|
||||
}
|
||||
|
||||
//关闭默认同意解散的定时器
|
||||
room.method.close_free_timer = function(){
|
||||
cls_youle_room_room.close_free_timer(room);
|
||||
}
|
||||
|
||||
//获取房间信息
|
||||
room.method.get_roominfo = function(){
|
||||
return cls_youle_room_room.get_roominfo(room);
|
||||
}
|
||||
|
||||
return room;
|
||||
},
|
||||
|
||||
//查找玩家
|
||||
find_player: function(o_room, playerid){
|
||||
var o_player = null;
|
||||
for (var i = 0; i < o_room.seatlist.length; i++){
|
||||
if (o_room.seatlist[i]){
|
||||
if (o_room.seatlist[i].playerid == playerid){
|
||||
o_player = o_room.seatlist[i];
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
return o_player;
|
||||
},
|
||||
|
||||
//获取玩家人数
|
||||
get_playercount: function(o_room){
|
||||
var count = 0;
|
||||
for (var i = 0; i < o_room.seatlist.length; i++){
|
||||
if (o_room.seatlist[i]){
|
||||
count++;
|
||||
}
|
||||
}
|
||||
return count;
|
||||
},
|
||||
|
||||
//获取已准备的玩家人数
|
||||
get_playercount_prepare: function(o_room){
|
||||
var count = 0;
|
||||
for (var i = 0; i < o_room.seatlist.length; i++){
|
||||
if (o_room.seatlist[i] && o_room.seatlist[i].gameinfo.isprepare){
|
||||
count++;
|
||||
}
|
||||
}
|
||||
return count;
|
||||
},
|
||||
|
||||
//获取房间内所有玩家的基本信息
|
||||
get_playerlist: function(o_room){
|
||||
var playerlist = [];
|
||||
for (var i = 0; i < o_room.seatlist.length; i++) {
|
||||
if (o_room.seatlist[i]){
|
||||
var player = o_room.seatlist[i].method.get_info();
|
||||
playerlist.push(player);
|
||||
} else {
|
||||
playerlist.push(null);
|
||||
}
|
||||
}
|
||||
return playerlist;
|
||||
},
|
||||
|
||||
//房间是否满桌
|
||||
get_isfull: function(o_room){
|
||||
for (var i = 0; i < o_room.seatlist.length; i++) {
|
||||
if (!o_room.seatlist[i] || !o_room.seatlist[i].gameinfo.isprepare){
|
||||
return false;
|
||||
}
|
||||
}
|
||||
return true;
|
||||
},
|
||||
|
||||
//获取房间内所有玩家的申请解散房间状态
|
||||
get_agreefree: function(o_room){
|
||||
if (!o_room.applyfreetime){
|
||||
return null;
|
||||
}
|
||||
|
||||
var info = {};
|
||||
//默认同意解散倒计时
|
||||
info.countdown = o_room.method.get_freeroom_countdown();
|
||||
|
||||
var list = [];
|
||||
for (var i = 0; i < o_room.seatlist.length; i++) {
|
||||
if (o_room.seatlist[i]){
|
||||
list.push(o_room.seatlist[i].gameinfo.agree);
|
||||
} else {
|
||||
list.push(null);
|
||||
}
|
||||
};
|
||||
info.state = list;
|
||||
|
||||
return info;
|
||||
},
|
||||
|
||||
//给房间内某个位置的玩家发包
|
||||
sendpack_toseat: function(o_room, msg, seat){
|
||||
if (seat < o_room.seatlist.length){
|
||||
if (o_room.seatlist[seat]) {
|
||||
msg.conmode = o_room.seatlist[seat].conmode;
|
||||
msg.fromid = o_room.seatlist[seat].fromid;
|
||||
youle_room.app.SendPack(msg);
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
//给房间内的其他玩家发包
|
||||
sendpack_toother: function(o_room, msg, selfseat){
|
||||
// for (var i = 0; i < o_room.seatlist.length; i++) {
|
||||
// if (o_room.seatlist[i] && (i != selfseat)) {
|
||||
// msg.conmode = o_room.seatlist[i].conmode;
|
||||
// msg.fromid = o_room.seatlist[i].fromid;
|
||||
// youle_room.app.SendPack(msg);
|
||||
// }
|
||||
// }
|
||||
var _toids_tcp = [];
|
||||
for (var i = 0; i < o_room.seatlist.length; i++) {
|
||||
if (o_room.seatlist[i] && (i != selfseat)) {
|
||||
if (o_room.seatlist[i].conmode && o_room.seatlist[i].fromid){
|
||||
if (o_room.seatlist[i].conmode == "tcp"){
|
||||
_toids_tcp.push(o_room.seatlist[i].fromid);
|
||||
} else {
|
||||
msg.conmode = o_room.seatlist[i].conmode;
|
||||
msg.fromid = o_room.seatlist[i].fromid;
|
||||
youle_room.app.SendPack(msg);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (_toids_tcp.length > 0){
|
||||
msg.conmode = "tcp";
|
||||
youle_room.app.SendPack(msg, _toids_tcp);
|
||||
}
|
||||
},
|
||||
|
||||
//默认同意解散房间的倒计时时间
|
||||
get_freeroom_countdown: function(o_room){
|
||||
var apply = new Date(o_room.applyfreetime);
|
||||
var now = new Date();
|
||||
return o_room.o_game.o_agent.freeroom - parseInt((now.getTime() - apply.getTime()) / 1000);
|
||||
},
|
||||
|
||||
//打开默认同意解散的定时器
|
||||
open_free_timer: function(o_room){
|
||||
var do_freeroom = function(){
|
||||
o_room.freetimer = null;
|
||||
|
||||
for (var i = 0; i < o_room.seatlist.length; i++){
|
||||
if (o_room.seatlist[i]){
|
||||
if (o_room.seatlist[i].gameinfo.agree == -1){
|
||||
o_room.seatlist[i].gameinfo.agree = 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//通知代理商服务器解散房间
|
||||
var o_game = o_room.o_game;
|
||||
var o_agent = o_game.o_agent;
|
||||
var msg1 = {};
|
||||
msg1.app = youle_room.app.appname;
|
||||
msg1.route = youle_room.app.youle_agent.routename;
|
||||
msg1.rpc = "free_room";
|
||||
msg1.data = {};
|
||||
msg1.data.agentid = o_agent.agentid;
|
||||
msg1.data.gameid = o_game.gameid;
|
||||
msg1.data.roomcode = o_room.roomcode;
|
||||
//玩家列表
|
||||
msg1.data.playeridlist = [];
|
||||
for (var i = 0; i < o_room.seatlist.length; i++) {
|
||||
if (o_room.seatlist[i]){
|
||||
msg1.data.playeridlist.push(o_room.seatlist[i].playerid);
|
||||
}
|
||||
}
|
||||
|
||||
if (o_agent.server == o_game.roomserver){
|
||||
//房间服务器与代理商服务器是同一地址
|
||||
youle_room.app.youle_agent[msg1.rpc](msg1);
|
||||
//通知前端房间内的所有人解散房间
|
||||
var msg2 = {};
|
||||
msg2.app = youle_room.app.appname;
|
||||
msg2.route = youle_room.routename;
|
||||
msg2.rpc = "free_room";
|
||||
msg2.data = {};
|
||||
//获取房间内各玩家的解散房间状态
|
||||
msg2.data.seats = o_room.method.get_agreefree().state;
|
||||
|
||||
//获取游戏的解散包
|
||||
// if (o_room.battlestate == 1){
|
||||
// msg2.data.deskfree = youle_room.import.get_disbandRoom(o_room);
|
||||
// }
|
||||
// o_room.method.sendpack_toother(msg2, -1);
|
||||
|
||||
if (o_room.battlestate == 1){
|
||||
var _deskfree = youle_room.import.get_disbandRoom(o_room);
|
||||
if (_deskfree){
|
||||
if (_deskfree.sendtype && _deskfree.sendtype == 1 && _deskfree.seatlist){
|
||||
//子游戏返回的解散json数据如果有sendtype属性且值等于1则表示需要向不同的玩家各自发包,且根据seatlist数组对应给各位置的玩家发游戏解散包
|
||||
for (var n = 0; n < _deskfree.seatlist.length; n++) {
|
||||
if (_deskfree.seatlist){
|
||||
msg2.data.deskfree = _deskfree.seatlist[n];
|
||||
o_room.method.sendpack_toseat(msg2, n);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
msg2.data.deskfree = _deskfree;
|
||||
o_room.method.sendpack_toother(msg2, -1);
|
||||
}
|
||||
} else {
|
||||
o_room.method.sendpack_toother(msg2, -1);
|
||||
}
|
||||
} else {
|
||||
o_room.method.sendpack_toother(msg2, -1);
|
||||
}
|
||||
|
||||
//释放房间
|
||||
o_game.method.free_room(o_room);
|
||||
} else {
|
||||
//房间服务器与代理商服务器不是同一地址
|
||||
var cfg = {};
|
||||
cfg.url = "http://" + o_agent.server + ":" + o_agent.httpport + "/index.html";
|
||||
cfg.type = "POST";
|
||||
cfg.data = JSON.stringify(msg1);
|
||||
cfg.success = function(str){
|
||||
var _info = {};
|
||||
//获取房间内各玩家的解散房间状态
|
||||
_info.seats = o_room.method.get_agreefree().state;
|
||||
|
||||
//获取游戏的解散包
|
||||
// if (o_room.battlestate == 1){
|
||||
// _info.deskfree = youle_room.import.get_disbandRoom(o_room);
|
||||
// }
|
||||
|
||||
var _deskfree = null;
|
||||
if (o_room.battlestate == 1){
|
||||
_deskfree = youle_room.import.get_disbandRoom(o_room);
|
||||
}
|
||||
|
||||
//通知前端房间内的所有人需要断开房间服务器,连接代理服务器
|
||||
for (var i = 0; i < o_room.seatlist.length; i++) {
|
||||
if (o_room.seatlist[i]) {
|
||||
var msg2 = {};
|
||||
msg2.app = youle_room.app.appname;
|
||||
msg2.route = youle_room.routename;
|
||||
msg2.rpc = "connect_agentserver";
|
||||
msg2.data = {};
|
||||
msg2.data.agentserver = o_agent.server + ":" + o_agent.tcpport;
|
||||
msg2.data.data = {};
|
||||
msg2.data.data.opt = "free_room";
|
||||
msg2.data.data.playerid = o_room.seatlist[i].playerid;
|
||||
msg2.data.data.agentid = o_agent.agentid;
|
||||
msg2.data.data.gameid = o_game.gameid;
|
||||
|
||||
if (_deskfree){
|
||||
if (_deskfree.sendtype && _deskfree.sendtype == 1 && _deskfree.seatlist){
|
||||
//子游戏返回的解散json数据如果有sendtype属性且值等于1则表示需要向不同的玩家各自发包,且根据seatlist数组对应给各位置的玩家发游戏解散包
|
||||
_info.deskfree = _deskfree.seatlist[i];
|
||||
} else {
|
||||
_info.deskfree = _deskfree;
|
||||
}
|
||||
}
|
||||
|
||||
msg2.data.data.info = _info;
|
||||
msg2.conmode = o_room.seatlist[i].conmode;
|
||||
msg2.fromid = o_room.seatlist[i].fromid;
|
||||
//此处conmode = null是为了避免触发玩家离线通知其他玩家事件
|
||||
o_room.seatlist[i].conmode = null;
|
||||
o_room.seatlist[i].fromid = null;
|
||||
youle_room.app.SendPack(msg2);
|
||||
}
|
||||
}
|
||||
//释放房间
|
||||
o_game.method.free_room(o_room);
|
||||
};
|
||||
cfg.error = function(str){};
|
||||
min_http(cfg);
|
||||
}
|
||||
}
|
||||
o_room.freetimer = min_ontimeout(do_freeroom, o_room.o_game.o_agent.freeroom * 1000);
|
||||
},
|
||||
|
||||
//关闭默认同意解散的定时器
|
||||
close_free_timer: function(o_room){
|
||||
min_closetime(o_room.freetimer);
|
||||
o_room.freetimer = null;
|
||||
},
|
||||
|
||||
//获取房间信息
|
||||
get_roominfo: function(o_room){
|
||||
var info = {};
|
||||
info.roomtype = o_room.roomtype; //房间类型
|
||||
info.needroomcard = o_room.needroomcard; //开房需要的房卡数量
|
||||
info.asetcount = o_room.asetcount; //总局数
|
||||
info.createtime = o_room.createtime; //开房时间
|
||||
info.makewartime = o_room.makewartime; //开战时间
|
||||
info.battlestate = o_room.battlestate; //游戏状态 0:未开战 1:已开战
|
||||
info.wasdeduct = o_room.wasdeduct; //是否扣除了房主的房卡
|
||||
info.roommode = o_room.roommode; //是否是星星场
|
||||
info.beanfloor = o_room.beanfloor; //星星下限
|
||||
info.beanmult = o_room.beanmult; //星星场倍数
|
||||
info.needprepare = o_room.needprepare; //是否需要准备
|
||||
info.advanced_type = o_room.advanced_type; //是否高级房间
|
||||
info.advanced_teabean = o_room.advanced_teabean; //茶水费
|
||||
info.infinite = o_room.infinite; //是否无限场
|
||||
//房主id
|
||||
if (o_room.owner){
|
||||
info.ownerid = o_room.owner.playerid;
|
||||
} else {
|
||||
info.ownerid = null;
|
||||
}
|
||||
//玩家列表
|
||||
info.seatlist = [];
|
||||
for (var i = 0; i < o_room.seatlist.length; i++) {
|
||||
if (!o_room.seatlist[i]){
|
||||
info.seatlist.push(null);
|
||||
} else {
|
||||
var p = {};
|
||||
p.playerid = o_room.seatlist[i].playerid;
|
||||
p.nickname = o_room.seatlist[i].nickname;
|
||||
p.onstate = o_room.seatlist[i].onstate; //在线状态 null未连接 0在线 1离线 2电话中
|
||||
p.needroomcard = o_room.seatlist[i].needroomcard;
|
||||
p.wasdeduct = o_room.seatlist[i].wasdeduct;
|
||||
p.bean = o_room.seatlist[i].bean;
|
||||
p.isowner = o_room.seatlist[i].gameinfo.isowner;
|
||||
p.isbet = o_room.seatlist[i].gameinfo.isbet;
|
||||
p.grade = o_room.seatlist[i].gameinfo.grade;
|
||||
p.isprepare = o_room.seatlist[i].gameinfo.isprepare;
|
||||
var _agentsvr_agent = youle_agent.agents.method.find_agent(o_room.o_game.o_agent.agentid);
|
||||
var _agentsvr_player = _agentsvr_agent.method.find_player(o_room.seatlist[i].playerid);
|
||||
p.unionid = _agentsvr_player.unionid;
|
||||
info.seatlist.push(p);
|
||||
}
|
||||
}
|
||||
return info;
|
||||
}
|
||||
}
|
||||
81
codes/games/sales_service/youle/server_room/class.tcplist.js
Normal file
81
codes/games/sales_service/youle/server_room/class.tcplist.js
Normal file
@@ -0,0 +1,81 @@
|
||||
///////////////////////////////////////////////////
|
||||
//////////////cls_youle_room_tcplist: tcp连接列表类///////////
|
||||
///////////////////////////////////////////////////
|
||||
var cls_youle_room_tcplist = cls_youle_room_tcplist || {
|
||||
new: function() {
|
||||
var tcplist = {};
|
||||
tcplist.list = [];
|
||||
|
||||
//方法
|
||||
tcplist.method = {};
|
||||
|
||||
//载入tcp连接
|
||||
tcplist.method.load_tcp = function(str_tcpid, o_player){
|
||||
return cls_youle_room_tcplist.load_tcp(tcplist, str_tcpid, o_player);
|
||||
}
|
||||
|
||||
//查找tcp连接
|
||||
tcplist.method.find_tcp = function(str_tcpid){
|
||||
return cls_youle_room_tcplist.find_tcp(tcplist, str_tcpid);
|
||||
}
|
||||
|
||||
//删除tcp连接
|
||||
tcplist.method.delete_tcp = function(str_tcpid){
|
||||
return cls_youle_room_tcplist.delete_tcp(tcplist, str_tcpid);
|
||||
}
|
||||
|
||||
return tcplist;
|
||||
},
|
||||
|
||||
//载入tcp连接
|
||||
load_tcp: function(o_tcplsit, str_tcpid, o_player){
|
||||
var idx = cls_youle_room_tcplist.aryidx(str_tcpid);
|
||||
if (idx == -1){
|
||||
return null;
|
||||
}
|
||||
if (o_tcplsit.list.length <= idx){
|
||||
o_tcplsit.list.length = idx + 1;
|
||||
}
|
||||
var new_tcp = {};
|
||||
new_tcp.tcpid = str_tcpid;
|
||||
new_tcp.o_player = o_player;
|
||||
o_tcplsit.list[idx] = new_tcp;
|
||||
return new_tcp;
|
||||
},
|
||||
|
||||
//查找tcp连接
|
||||
find_tcp: function(o_tcplsit, str_tcpid){
|
||||
var idx = cls_youle_room_tcplist.aryidx(str_tcpid);
|
||||
if (idx == -1){
|
||||
return null;
|
||||
}
|
||||
if (o_tcplsit.list.length <= idx){
|
||||
return null;
|
||||
}
|
||||
return o_tcplsit.list[idx];
|
||||
},
|
||||
|
||||
//删除tcp连接
|
||||
delete_tcp: function(o_tcplsit, str_tcpid){
|
||||
var idx = cls_youle_room_tcplist.aryidx(str_tcpid);
|
||||
if (idx == -1){
|
||||
return;
|
||||
}
|
||||
if (o_tcplsit.list.length <= idx){
|
||||
return;
|
||||
}
|
||||
o_tcplsit.list[idx] = null;
|
||||
},
|
||||
|
||||
//计算tcp连接的数组下标
|
||||
aryidx: function(str_tcpid){
|
||||
var idx = parseInt(str_tcpid.replace("tcp_", ""));
|
||||
if (isNaN(idx)){
|
||||
return -1;
|
||||
}
|
||||
return idx - 10000;
|
||||
}
|
||||
}
|
||||
|
||||
//tcp连接列表
|
||||
youle_room.tcps = cls_youle_room_tcplist.new();
|
||||
54
codes/games/sales_service/youle/server_room/mod.js
Normal file
54
codes/games/sales_service/youle/server_room/mod.js
Normal file
@@ -0,0 +1,54 @@
|
||||
//////////////////////////////////////////////////////////////////
|
||||
//////////////////////////游戏平台服务器//////////////////////////
|
||||
//////////////////////////////////////////////////////////////////
|
||||
//rpc
|
||||
min_loadJsFile("youle/server_room/rpc.js", function(){
|
||||
//tcp连接
|
||||
min_loadJsFile("youle/server_room/class.tcplist.js", function(){
|
||||
//运营商
|
||||
min_loadJsFile("youle/server_room/class.agent.js", function(){
|
||||
//游戏
|
||||
min_loadJsFile("youle/server_room/class.game.js", function(){
|
||||
//房间
|
||||
min_loadJsFile("youle/server_room/class.room.js", function(){
|
||||
//玩家
|
||||
min_loadJsFile("youle/server_room/class.player.js", function(){
|
||||
//对内的输入接口类
|
||||
min_loadJsFile("youle/server_room/class.import.js", function(){
|
||||
//对内的输出接口类
|
||||
min_loadJsFile("youle/server_room/class.export.js", function(){
|
||||
//返回结果类
|
||||
min_loadJsFile("youle/server_room/class.return.js", function(){
|
||||
//数据备份类
|
||||
min_loadJsFile("youle/server_room/class.backup.js", function(){
|
||||
//抽成系统
|
||||
min_loadJsFile("youle/server_room/class.rebate.js", function(){
|
||||
});
|
||||
});
|
||||
});
|
||||
});
|
||||
});
|
||||
});
|
||||
});
|
||||
});
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
var youle_room = youle_room || cls_mod.new("youle_room", "room", youle_app);
|
||||
|
||||
//运营商列表
|
||||
youle_room.agents = null;
|
||||
//tcp连接
|
||||
youle_room.tcps = null;
|
||||
//mysql操作类
|
||||
youle_room.mysql = cls_mysql.new("http://ylyxdata.daoqi88.cn/mysql.php", youle_room.app.SendPack);
|
||||
youle_room.mysql_grade = cls_mysql.new("http://ylyxdata.daoqi88.cn/mysql_grade.php", youle_room.app.SendPack);
|
||||
//对内的输入接口类(需要的外部接口)
|
||||
youle_room.import = null;
|
||||
//对内的输出接口类(提供给外部使用的接口)
|
||||
youle_room.export = null;
|
||||
//返回结果类
|
||||
youle_room.return = null;
|
||||
//数据备份类
|
||||
youle_room.backup = null;
|
||||
3831
codes/games/sales_service/youle/server_room/rpc.js
Normal file
3831
codes/games/sales_service/youle/server_room/rpc.js
Normal file
File diff suppressed because it is too large
Load Diff
721
codes/games/sales_service/youle/server_synch/mod.js
Normal file
721
codes/games/sales_service/youle/server_synch/mod.js
Normal file
@@ -0,0 +1,721 @@
|
||||
var youle_synch = youle_synch || cls_mod.new("youle_synch", "synch", youle_app);
|
||||
|
||||
//mysql操作类
|
||||
youle_synch.mysql = cls_mysql.new("http://ylyxdata.daoqi88.cn/mysql.php");
|
||||
youle_synch.mysql_grade = cls_mysql.new("http://ylyxdata.daoqi88.cn/mysql_grade.php");
|
||||
youle_synch.mysql_agent = cls_mysql.new("http://ylyxdata.daoqi88.cn/mysql_agent.php");
|
||||
|
||||
youle_synch.configlist = [];
|
||||
youle_synch.configfile = [];
|
||||
youle_synch.configfile.push("http://tsgames.daoqi88.cn/config/update_json.txt");
|
||||
|
||||
|
||||
for (var i = 0; i < youle_synch.configfile.length; i++) {
|
||||
var o_config = cls_youle_platform_config.new(youle_synch.configfile[i]);
|
||||
o_config.method.get_config();
|
||||
youle_synch.configlist.push(o_config);
|
||||
};
|
||||
|
||||
youle_synch.do_readdata = function(){
|
||||
if (youle_synch.isdoing == 1) {
|
||||
return;
|
||||
}
|
||||
var compressWhiteList = function(data){
|
||||
var dataStr = JSON.stringify(data);
|
||||
if(dataStr.length > 6000){//超出
|
||||
var cmpStr = LZString.compressToUTF16(dataStr);
|
||||
return "zip"+cmpStr;
|
||||
}else{
|
||||
return dataStr;
|
||||
}
|
||||
}
|
||||
var deCompressWhiteList = function(data){
|
||||
var dataStr = data;
|
||||
if(dataStr.indexOf("zip")==0){//压缩
|
||||
var str = dataStr.slice(3,dataStr.length);
|
||||
var deStr = LZString.decompressFromUTF16(str);
|
||||
return JSON.parse(deStr);
|
||||
}else{
|
||||
return JSON.parse(dataStr);
|
||||
}
|
||||
}
|
||||
//充房卡充星星
|
||||
var update_gamedb_roomcard = function(agentid, playerid, changeroomcard, changebean, opttype, optid){
|
||||
var db_callback_game1 = function(dbdata){
|
||||
if (dbdata[0].result == 0){
|
||||
do_result(optid, 1);
|
||||
//通知各子游戏服务器
|
||||
switch(parseInt(opttype)){
|
||||
case 1: //玩家购卡
|
||||
var msg = {};
|
||||
msg.app = "youle";
|
||||
msg.route = "agent";
|
||||
msg.rpc = "synch_roomcard";
|
||||
msg.data = {};
|
||||
msg.data.agentid = agentid;
|
||||
msg.data.playerid = playerid;
|
||||
msg.data.opt = 1;
|
||||
msg.data.roomcard = parseInt(dbdata[0].play_roomcard);
|
||||
msg.data.change = changeroomcard;
|
||||
break;
|
||||
case 2: //代理充卡
|
||||
var msg = {};
|
||||
msg.app = "youle";
|
||||
msg.route = "agent";
|
||||
msg.rpc = "synch_roomcard";
|
||||
msg.data = {};
|
||||
msg.data.agentid = agentid;
|
||||
msg.data.playerid = playerid;
|
||||
msg.data.opt = 2;
|
||||
msg.data.roomcard = parseInt(dbdata[0].play_roomcard);
|
||||
msg.data.change = changeroomcard;
|
||||
break;
|
||||
case 3: //玩家索卡
|
||||
var msg = {};
|
||||
msg.app = "youle";
|
||||
msg.route = "agent";
|
||||
msg.rpc = "synch_roomcard";
|
||||
msg.data = {};
|
||||
msg.data.agentid = agentid;
|
||||
msg.data.playerid = playerid;
|
||||
msg.data.opt = 2;
|
||||
msg.data.roomcard = parseInt(dbdata[0].play_roomcard);
|
||||
msg.data.change = changeroomcard;
|
||||
break;
|
||||
case 11: //玩家购买星星
|
||||
var msg = {};
|
||||
msg.app = "youle";
|
||||
msg.route = "agent";
|
||||
msg.rpc = "synch_bean";
|
||||
msg.data = {};
|
||||
msg.data.agentid = agentid;
|
||||
msg.data.playerid = playerid;
|
||||
msg.data.opt = 1;
|
||||
msg.data.bean = parseInt(dbdata[0].play_bean);
|
||||
msg.data.change = changebean;
|
||||
break;
|
||||
case 12: //代理充值星星
|
||||
var msg = {};
|
||||
msg.app = "youle";
|
||||
msg.route = "agent";
|
||||
msg.rpc = "synch_bean";
|
||||
msg.data = {};
|
||||
msg.data.agentid = agentid;
|
||||
msg.data.playerid = playerid;
|
||||
msg.data.opt = 2;
|
||||
msg.data.bean = parseInt(dbdata[0].play_bean);
|
||||
msg.data.change = changebean;
|
||||
break;
|
||||
case 13: //玩家索要星星
|
||||
var msg = {};
|
||||
msg.app = "youle";
|
||||
msg.route = "agent";
|
||||
msg.rpc = "synch_bean";
|
||||
msg.data = {};
|
||||
msg.data.agentid = agentid;
|
||||
msg.data.playerid = playerid;
|
||||
msg.data.opt = 2;
|
||||
msg.data.bean = parseInt(dbdata[0].play_bean);
|
||||
msg.data.change = changebean;
|
||||
break;
|
||||
}
|
||||
do_synch(optid, agentid, msg);
|
||||
} else {
|
||||
do_result(optid, 0);
|
||||
}
|
||||
}
|
||||
var sql_game = "call cp_sales2_player_topup(?,?,?,?)";
|
||||
youle_synch.mysql.execsql("opensql", sql_game, [agentid, playerid, changeroomcard, changebean], db_callback_game1);
|
||||
}
|
||||
//玩家绑定邀请码
|
||||
var update_gamedb_bindinginvitecode = function(agentid, unionid, invitecode, optid){
|
||||
var db_callback_game2 = function(dbdata){
|
||||
if (dbdata[0].result == 0){
|
||||
do_result(optid, 1);
|
||||
//通知各子游戏服务器
|
||||
var msg = {};
|
||||
msg.app = "youle";
|
||||
msg.route = "agent";
|
||||
msg.rpc = "synch_invitecode";
|
||||
msg.data = {};
|
||||
msg.data.agentid = agentid;
|
||||
msg.data.playerid = parseInt(dbdata[0].playerid);
|
||||
msg.data.invitecode = invitecode;
|
||||
do_synch(optid, agentid, msg);
|
||||
} else {
|
||||
do_result(optid, 0);
|
||||
}
|
||||
}
|
||||
var sql_game = "call cp_sales2_player_bindinginvitecode(?,?,?)";
|
||||
youle_synch.mysql.execsql("opensql", sql_game, [agentid, unionid, invitecode], db_callback_game2);
|
||||
}
|
||||
//新代理
|
||||
var update_gamedb_newsalesman = function(agentid, channelid, salesid, salesinfo, optid){
|
||||
var db_callback_game3 = function(dbdata){
|
||||
if (dbdata[0].result == 0){
|
||||
do_result(optid, 1);
|
||||
} else {
|
||||
do_result(optid, 0);
|
||||
}
|
||||
}
|
||||
var sql_game = "call cp_sales2_new_salesman(?,?,?,?,?,?,?,?,?,?)";
|
||||
var o_salesinfo = JSON.parse(salesinfo);
|
||||
youle_synch.mysql.execsql("opensql", sql_game, [agentid, channelid, o_salesinfo.openid, o_salesinfo.unionid, o_salesinfo.nickname, o_salesinfo.avatar, o_salesinfo.sex, o_salesinfo.province, o_salesinfo.city, salesid], db_callback_game3);
|
||||
}
|
||||
//封禁代理
|
||||
var update_gamedb_disabledsales = function(agentid, salesid, optid){
|
||||
var db_callback_game4 = function(dbdata){
|
||||
if (dbdata[0].result == 0){
|
||||
do_result(optid, 1);
|
||||
} else {
|
||||
do_result(optid, 0);
|
||||
}
|
||||
}
|
||||
var sql_game = "call cp_sales2_salesman_disabled(?,?)";
|
||||
youle_synch.mysql.execsql("opensql", sql_game, [agentid, salesid], db_callback_game4);
|
||||
}
|
||||
//解封代理
|
||||
var update_gamedb_abledsales = function(agentid, salesid, optid){
|
||||
var db_callback_game5 = function(dbdata){
|
||||
if (dbdata[0].result == 0){
|
||||
do_result(optid, 1);
|
||||
} else {
|
||||
do_result(optid, 0);
|
||||
}
|
||||
}
|
||||
var sql_game = "call cp_sales2_salesman_abled(?,?)";
|
||||
youle_synch.mysql.execsql("opensql", sql_game, [agentid, salesid], db_callback_game5);
|
||||
}
|
||||
//解绑代理
|
||||
var update_gamedb_disbinding_sales = function(agentid, salesid, optid){
|
||||
var db_callback_game6 = function(dbdata){
|
||||
if (dbdata[0].result == 0){
|
||||
do_result(optid, 1);
|
||||
} else {
|
||||
do_result(optid, 0);
|
||||
}
|
||||
}
|
||||
var sql_game = "call cp_sales2_disbinding_sales(?,?)";
|
||||
youle_synch.mysql.execsql("opensql", sql_game, [agentid, salesid], db_callback_game6);
|
||||
}
|
||||
//解绑玩家
|
||||
var update_gamedb_disbinding_player = function(agentid, playerid, optid){
|
||||
var db_callback_game7 = function(dbdata){
|
||||
if (dbdata[0].result == 0){
|
||||
do_result(optid, 1);
|
||||
//通知各子游戏服务器
|
||||
var msg = {};
|
||||
msg.app = "youle";
|
||||
msg.route = "agent";
|
||||
msg.rpc = "synch_invitecode";
|
||||
msg.data = {};
|
||||
msg.data.agentid = agentid;
|
||||
msg.data.playerid = playerid;
|
||||
msg.data.invitecode = null;
|
||||
do_synch(optid, agentid, msg);
|
||||
} else {
|
||||
do_result(optid, 0);
|
||||
}
|
||||
}
|
||||
var sql_game = "call cp_sales2_disbinding_player(?,?)";
|
||||
youle_synch.mysql.execsql("opensql", sql_game, [agentid, playerid], db_callback_game7);
|
||||
}
|
||||
//封禁玩家
|
||||
var update_gamedb_disabledplayer = function(agentid, playerid, optid){
|
||||
var db_callback_game8 = function(dbdata){
|
||||
if (dbdata[0].result == 0){
|
||||
do_result(optid, 1);
|
||||
//通知各子游戏服务器
|
||||
var msg = {};
|
||||
msg.app = "youle";
|
||||
msg.route = "agent";
|
||||
msg.rpc = "synch_playerstate";
|
||||
msg.data = {};
|
||||
msg.data.agentid = agentid;
|
||||
msg.data.playerid = playerid;
|
||||
msg.data.state = 1;
|
||||
do_synch(optid, agentid, msg);
|
||||
} else {
|
||||
do_result(optid, 0);
|
||||
}
|
||||
}
|
||||
var sql_game = "call cp_sales2_player_disabled(?,?)";
|
||||
youle_synch.mysql.execsql("opensql", sql_game, [agentid, playerid], db_callback_game8);
|
||||
}
|
||||
//解封玩家
|
||||
var update_gamedb_abledplayer = function(agentid, playerid, optid){
|
||||
var db_callback_game9 = function(dbdata){
|
||||
if (dbdata[0].result == 0){
|
||||
do_result(optid, 1);
|
||||
//通知各子游戏服务器
|
||||
var msg = {};
|
||||
msg.app = "youle";
|
||||
msg.route = "agent";
|
||||
msg.rpc = "synch_playerstate";
|
||||
msg.data = {};
|
||||
msg.data.agentid = agentid;
|
||||
msg.data.playerid = playerid;
|
||||
msg.data.state = 0;
|
||||
do_synch(optid, agentid, msg);
|
||||
} else {
|
||||
do_result(optid, 0);
|
||||
}
|
||||
}
|
||||
var sql_game = "call cp_sales2_player_abled(?,?)";
|
||||
youle_synch.mysql.execsql("opensql", sql_game, [agentid, playerid], db_callback_game9);
|
||||
}
|
||||
//开通高级选项
|
||||
var update_gamedb_advanced = function(agentid, playerid, shortcode, advanced, desone, destwo, lower_limit, announcement, optid){
|
||||
var db_callback_game10 = function(dbdata){
|
||||
if (dbdata[0].result == 0){
|
||||
do_result(optid, 1);
|
||||
//通知各子游戏服务器
|
||||
var msg = {};
|
||||
msg.app = "youle";
|
||||
msg.route = "agent";
|
||||
msg.rpc = "synch_shortcode";
|
||||
msg.data = {};
|
||||
msg.data.agentid = agentid;
|
||||
msg.data.playerid = playerid;
|
||||
msg.data.shortcode = shortcode;
|
||||
msg.data.advanced = advanced;
|
||||
msg.data.desone = desone;
|
||||
msg.data.destwo = destwo;
|
||||
msg.data.lower_limit = lower_limit;
|
||||
msg.data.announcement = announcement;
|
||||
do_synch(optid, agentid, msg);
|
||||
} else {
|
||||
do_result(optid, 0);
|
||||
}
|
||||
}
|
||||
var sql_game = "call cp_game_player_advanced(?,?,?,?,?,?,?,?)";
|
||||
var _shortcode = parseInt(shortcode);
|
||||
var _advanced = parseInt(advanced);
|
||||
youle_synch.mysql.execsql("opensql", sql_game, [agentid, playerid, _advanced, _shortcode, desone, destwo, lower_limit, announcement], db_callback_game10);
|
||||
}
|
||||
//设置短号白名单
|
||||
var update_gamedb_whitelist = function(agentid, playerid, whitelist, optid){
|
||||
var db_callback_game11 = function(dbdata){
|
||||
if (dbdata[0].result == 0){
|
||||
do_result(optid, 1);
|
||||
//通知各子游戏服务器
|
||||
var msg = {};
|
||||
msg.app = "youle";
|
||||
msg.route = "agent";
|
||||
msg.rpc = "synch_whitelist";
|
||||
msg.data = {};
|
||||
msg.data.agentid = agentid;
|
||||
msg.data.playerid = playerid;
|
||||
msg.data.whitelist = whitelist;
|
||||
do_synch(optid, agentid, msg);
|
||||
} else {
|
||||
do_result(optid, 0);
|
||||
}
|
||||
}
|
||||
for(var i=0;i<whitelist.length;i++){
|
||||
if(whitelist[i][2]){
|
||||
whitelist[i][2] = parseInt(whitelist[i][2]);
|
||||
}else{
|
||||
whitelist[i][2] = 0;
|
||||
}
|
||||
}
|
||||
var sql_game = "call cp_game_player_whitelist(?,?,?)";
|
||||
youle_synch.mysql.execsql("opensql", sql_game, [agentid, playerid, compressWhiteList(whitelist)], db_callback_game11);
|
||||
}
|
||||
//系统抽成
|
||||
var update_gamedb_coinrebate = function(agentid, mode1, set1, mode2, set2, optid){
|
||||
var db_callback_game12 = function(dbdata){
|
||||
if (dbdata[0].result == 0){
|
||||
do_result(optid, 1);
|
||||
//通知各子游戏服务器
|
||||
var msg = {};
|
||||
msg.app = "youle";
|
||||
msg.route = "agent";
|
||||
msg.rpc = "synch_coinrebate";
|
||||
msg.data = {};
|
||||
msg.data.agentid = agentid;
|
||||
msg.data.mode1 = mode1;
|
||||
msg.data.set1 = set1;
|
||||
msg.data.mode2 = mode2;
|
||||
msg.data.set2 = set2;
|
||||
do_synch(optid, agentid, msg);
|
||||
} else {
|
||||
do_result(optid, 0);
|
||||
}
|
||||
}
|
||||
var sql_game = "call cp_game_update_coinrebate(?,?,?,?,?)";
|
||||
youle_synch.mysql.execsql("opensql", sql_game, [agentid, mode1, set1, mode2, set2], db_callback_game12);
|
||||
}
|
||||
//变更代理id
|
||||
var update_gamedb_changesalesid = function(agentid, old_salesid, new_salesid, old_playerid, new_playerid, optid){
|
||||
var db_callback_game13 = function(dbdata){
|
||||
if (dbdata[0].result == 0){
|
||||
do_result(optid, 1);
|
||||
} else {
|
||||
do_result(optid, 0);
|
||||
}
|
||||
}
|
||||
var sql_game = "call cp_sales2_change_salesid(?,?,?,?,?)";
|
||||
youle_synch.mysql.execsql("opensql", sql_game, [agentid, old_salesid, new_salesid, old_playerid, new_playerid], db_callback_game13);
|
||||
}
|
||||
//短号白名单中添加或修改一个玩家
|
||||
var update_gamedb_add_whitelist = function(agentid, shortcode, playerid, paycode, charm, optid){
|
||||
var db_callback_game = function(dbdata){
|
||||
if (dbdata.length == 1){
|
||||
var whitelist = [];
|
||||
if (dbdata[0].play_whitelist){
|
||||
whitelist = deCompressWhiteList(dbdata[0].play_whitelist);
|
||||
for(var i=0;i<whitelist.length;i++){
|
||||
if(whitelist[i][2]){
|
||||
whitelist[i][2] = parseInt(whitelist[i][2]);
|
||||
}else{
|
||||
whitelist[i][2] = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
var found = false;
|
||||
for (var i = 0; i < whitelist.length; i++) {
|
||||
if (whitelist[i][0] == playerid){
|
||||
whitelist[i][1] = paycode;
|
||||
whitelist[i][2] = charm;
|
||||
found = true;
|
||||
break;
|
||||
}
|
||||
};
|
||||
if (!found){
|
||||
var newplayer = [];
|
||||
newplayer[0] = playerid;
|
||||
newplayer[1] = paycode;
|
||||
newplayer[2] = charm;
|
||||
whitelist.push(newplayer);
|
||||
}
|
||||
var sql_game2 = "update player set play_whitelist = ? where play_agentid = ? and play_shortcode = ?";
|
||||
youle_synch.mysql.execsql("execsql", sql_game2, [compressWhiteList(whitelist), agentid, shortcode]);
|
||||
do_result(optid, 1);
|
||||
//通知各子游戏服务器
|
||||
var msg = {};
|
||||
msg.app = "youle";
|
||||
msg.route = "agent";
|
||||
msg.rpc = "synch_update_whitelist";
|
||||
msg.data = {};
|
||||
msg.data.agentid = agentid;
|
||||
msg.data.shortcode = shortcode;
|
||||
msg.data.whitelist = whitelist;
|
||||
do_synch(optid, agentid, msg);
|
||||
} else {
|
||||
do_result(optid, 0);
|
||||
}
|
||||
}
|
||||
var sql_game = "select * from player where play_agentid = ? and play_shortcode = ?";
|
||||
youle_synch.mysql.execsql("opensql", sql_game, [agentid, shortcode], db_callback_game);
|
||||
}
|
||||
//短号白名单中删除一个玩家
|
||||
var update_gamedb_del_whitelist = function(agentid, shortcode, playerid, optid){
|
||||
var db_callback_game = function(dbdata){
|
||||
if (dbdata.length == 1){
|
||||
var whitelist = [];
|
||||
if (dbdata[0].play_whitelist){
|
||||
whitelist = deCompressWhiteList(dbdata[0].play_whitelist);
|
||||
for(var i=0;i<whitelist.length;i++){
|
||||
if(whitelist[i][2]){
|
||||
whitelist[i][2] = parseInt(whitelist[i][2]);
|
||||
}else{
|
||||
whitelist[i][2] = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
for (var i = 0; i < whitelist.length; i++) {
|
||||
if (whitelist[i][0] == playerid){
|
||||
whitelist.splice(i, 1);
|
||||
break;
|
||||
}
|
||||
};
|
||||
|
||||
var sql_game2 = "update player set play_whitelist = ? where play_agentid = ? and play_shortcode = ?";
|
||||
youle_synch.mysql.execsql("execsql", sql_game2, [compressWhiteList(whitelist), agentid, shortcode]);
|
||||
do_result(optid, 1);
|
||||
//通知各子游戏服务器
|
||||
var msg = {};
|
||||
msg.app = "youle";
|
||||
msg.route = "agent";
|
||||
msg.rpc = "synch_update_whitelist";
|
||||
msg.data = {};
|
||||
msg.data.agentid = agentid;
|
||||
msg.data.shortcode = shortcode;
|
||||
msg.data.whitelist = whitelist;
|
||||
do_synch(optid, agentid, msg);
|
||||
} else {
|
||||
do_result(optid, 0);
|
||||
}
|
||||
}
|
||||
var sql_game = "select * from player where play_agentid = ? and play_shortcode = ?";
|
||||
youle_synch.mysql.execsql("opensql", sql_game, [agentid, shortcode], db_callback_game);
|
||||
}
|
||||
|
||||
var do_synch = function(optid, agentid, msg){
|
||||
var get_iplist = function(agentid){
|
||||
var iplist = [];
|
||||
var paraname = "game_server_http";
|
||||
var do_pushto_iplist = function(ip){
|
||||
var idx = min_ary_indexof(iplist, ip);
|
||||
if (idx == -1){
|
||||
iplist.push(ip);
|
||||
}
|
||||
}
|
||||
for (var i = 0; i < youle_synch.configlist.length; i++) {
|
||||
var o_config = youle_synch.configlist[i];
|
||||
if (!o_config){
|
||||
continue;
|
||||
}
|
||||
if (!o_config.data || !o_config.data.agentlist){
|
||||
continue;
|
||||
}
|
||||
var idx_agent = min_ary_indexof(o_config.data.agentlist, agentid, "agentid");
|
||||
if (idx_agent == -1){
|
||||
continue;
|
||||
}
|
||||
var o_agent = o_config.data.agentlist[idx_agent];
|
||||
if (!o_agent){
|
||||
continue;
|
||||
}
|
||||
if (o_config.data[paraname]){
|
||||
do_pushto_iplist(o_config.data[paraname]);
|
||||
}
|
||||
if (o_agent[paraname]){
|
||||
do_pushto_iplist(o_agent.data[paraname]);
|
||||
}
|
||||
if (!o_agent.gamelist){
|
||||
continue;
|
||||
}
|
||||
for (var j = 0; j < o_agent.gamelist.length; j++) {
|
||||
var o_game = o_agent.gamelist[j];
|
||||
if (o_game[paraname]){
|
||||
do_pushto_iplist(o_game[paraname]);
|
||||
}
|
||||
}
|
||||
}
|
||||
return iplist;
|
||||
}
|
||||
var dodo_synch = function(ip){
|
||||
var cfg = {};
|
||||
cfg.url = "http://" + ip + "/index.html";
|
||||
cfg.type = "POST";
|
||||
cfg.data = JSON.stringify(msg);
|
||||
cfg.success = function(str){
|
||||
try{
|
||||
var obj = JSON.parse(str);
|
||||
if (obj.data.state == 0){
|
||||
var sql_grade = "insert into process_log (prlo_optid, prlo_result, prlo_time, prlo_ip) values(?,1,?,?)";
|
||||
youle_synch.mysql_grade.execsql("execsql", sql_grade, [optid, min_now(), ip]);
|
||||
} else {
|
||||
var sql_grade = "insert into process_log (prlo_optid, prlo_result, prlo_time, prlo_ip, prlo_error) values(?,-1,?,?,?)";
|
||||
youle_synch.mysql_grade.execsql("execsql", sql_grade, [optid, min_now(), ip, obj.error]);
|
||||
console.log(min_now() + " 后台接口数据处理失败3:" + optid);
|
||||
}
|
||||
}catch(e){
|
||||
console.log(ip + " " + str);
|
||||
}
|
||||
}
|
||||
cfg.error = function(str){
|
||||
var sql_grade = "insert into process_log (prlo_optid, prlo_result, prlo_time, prlo_ip, prlo_error) values(?,-1,?,?,?)";
|
||||
youle_synch.mysql_grade.execsql("execsql", sql_grade, [optid, min_now(), ip, str]);
|
||||
console.log(min_now() + " 后台接口数据处理失败2:" + optid);
|
||||
}
|
||||
min_http(cfg);
|
||||
}
|
||||
var agent_iplist = get_iplist(agentid);
|
||||
//debugger;
|
||||
// agent_iplist.push("127.0.0.1:1089");
|
||||
// agent_iplist.push("127.0.0.1:2089");
|
||||
//设置延时
|
||||
for (var i = 0; i < agent_iplist.length; i++) {
|
||||
dodo_synch(agent_iplist[i]);
|
||||
}
|
||||
}
|
||||
var do_result = function(optid, result){
|
||||
var sql_agent;
|
||||
var sql_grade;
|
||||
if (result == 1){
|
||||
//成功
|
||||
sql_agent = "update ct_user_process_log set is_process = is_process + 1 where id = ?";
|
||||
sql_grade = "insert into process_log (prlo_optid, prlo_result, prlo_time) values(?,1,?)";
|
||||
} else {
|
||||
//失败
|
||||
sql_agent = "update ct_user_process_log set is_process = -1 where id = ?";
|
||||
sql_grade = "insert into process_log (prlo_optid, prlo_result, prlo_time) values(?,-1,?)";
|
||||
console.log(min_now() + " 后台接口数据处理失败1:" + optid);
|
||||
}
|
||||
youle_synch.mysql_agent.execsql("execsql", sql_agent, [optid],
|
||||
function(){
|
||||
youle_synch.isdoing = 0;
|
||||
});
|
||||
youle_synch.mysql_grade.execsql("execsql", sql_grade, [optid, min_now()]);
|
||||
}
|
||||
var db_callback = function(dbdata){
|
||||
var proList = {};
|
||||
for (var i = 0; i < dbdata.length; i++){
|
||||
try{
|
||||
switch(parseInt(dbdata[i].oper_type)){
|
||||
case 1: //购买房卡
|
||||
youle_synch.isdoing = 1;
|
||||
update_gamedb_roomcard(dbdata[i].to_agent, dbdata[i].to_user, dbdata[i].oper_data, null, dbdata[i].oper_type, dbdata[i].id);
|
||||
break;
|
||||
case 2: //代理转卡
|
||||
youle_synch.isdoing = 1;
|
||||
update_gamedb_roomcard(dbdata[i].to_agent, dbdata[i].to_user, dbdata[i].oper_data, null, dbdata[i].oper_type, dbdata[i].id);
|
||||
break;
|
||||
case 3: //索要房卡
|
||||
youle_synch.isdoing = 1;
|
||||
update_gamedb_roomcard(dbdata[i].to_agent, dbdata[i].to_user, dbdata[i].oper_data, null, dbdata[i].oper_type, dbdata[i].id);
|
||||
break;
|
||||
case 11: //购买星星
|
||||
youle_synch.isdoing = 1;
|
||||
update_gamedb_roomcard(dbdata[i].to_agent, dbdata[i].to_user, null, dbdata[i].oper_data, dbdata[i].oper_type, dbdata[i].id);
|
||||
break;
|
||||
case 12: //代理转星星
|
||||
youle_synch.isdoing = 1;
|
||||
update_gamedb_roomcard(dbdata[i].to_agent, dbdata[i].to_user, null, dbdata[i].oper_data, dbdata[i].oper_type, dbdata[i].id);
|
||||
break;
|
||||
case 13: //索要星星
|
||||
youle_synch.isdoing = 1;
|
||||
update_gamedb_roomcard(dbdata[i].to_agent, dbdata[i].to_user, null, dbdata[i].oper_data, dbdata[i].oper_type, dbdata[i].id);
|
||||
break;
|
||||
case 21: //成为代理
|
||||
youle_synch.isdoing = 1;
|
||||
update_gamedb_newsalesman(dbdata[i].to_agent, dbdata[i].to_channel, dbdata[i].to_user, dbdata[i].oper_data, dbdata[i].id);
|
||||
break;
|
||||
case 31: //封禁代理
|
||||
youle_synch.isdoing = 1;
|
||||
update_gamedb_disabledsales(dbdata[i].to_agent, dbdata[i].to_user, dbdata[i].id);
|
||||
break;
|
||||
case 32: //解封代理
|
||||
youle_synch.isdoing = 1;
|
||||
update_gamedb_abledsales(dbdata[i].to_agent, dbdata[i].to_user, dbdata[i].id);
|
||||
break;
|
||||
case 33: //封禁玩家
|
||||
youle_synch.isdoing = 1;
|
||||
update_gamedb_disabledplayer(dbdata[i].to_agent, dbdata[i].to_user, dbdata[i].id);
|
||||
break;
|
||||
case 34: //解封玩家
|
||||
youle_synch.isdoing = 1;
|
||||
update_gamedb_abledplayer(dbdata[i].to_agent, dbdata[i].to_user, dbdata[i].id);
|
||||
break;
|
||||
case 41: //解除绑定了我的玩家
|
||||
youle_synch.isdoing = 1;
|
||||
update_gamedb_disbinding_sales(dbdata[i].from_agent, dbdata[i].from_user, dbdata[i].id);
|
||||
break;
|
||||
case 42: //玩家解除绑定
|
||||
youle_synch.isdoing = 1;
|
||||
update_gamedb_disbinding_player(dbdata[i].from_agent, dbdata[i].from_user, dbdata[i].id);
|
||||
break;
|
||||
case 101: //绑定代理
|
||||
youle_synch.isdoing = 1;
|
||||
update_gamedb_bindinginvitecode(dbdata[i].to_agent, dbdata[i].oper_data, dbdata[i].from_user, dbdata[i].id);
|
||||
break;
|
||||
case 110: //开通高新选项
|
||||
youle_synch.isdoing = 1;
|
||||
var o_data = JSON.parse(dbdata[i].oper_data);
|
||||
update_gamedb_advanced(dbdata[i].to_agent, dbdata[i].to_user, o_data.shortnum, o_data.maxroomnum, o_data.desone, o_data.destwo, o_data.lower_limit, o_data.announcement, dbdata[i].id);
|
||||
break;
|
||||
case 111: //设置短号白名单
|
||||
youle_synch.isdoing = 1;
|
||||
var o_data = JSON.parse(dbdata[i].oper_data);
|
||||
update_gamedb_whitelist(dbdata[i].from_agent, dbdata[i].from_user, o_data, dbdata[i].id);
|
||||
break;
|
||||
case 112: //变更代理id
|
||||
youle_synch.isdoing = 1;
|
||||
var from_playerid = null;
|
||||
var to_playerid = null;
|
||||
if (dbdata[i].oper_data){
|
||||
var o_data = JSON.parse(dbdata[i].oper_data);
|
||||
if (o_data.from && o_data.to){
|
||||
from_playerid = o_data.from;
|
||||
to_playerid = o_data.to;
|
||||
}
|
||||
}
|
||||
update_gamedb_changesalesid(dbdata[i].from_agent, dbdata[i].from_user, dbdata[i].to_user, from_playerid, to_playerid, dbdata[i].id);
|
||||
break;
|
||||
case 113: //短号白名单中添加或修改一个玩家
|
||||
|
||||
var o_data = JSON.parse(dbdata[i].oper_data);
|
||||
if(!proList[dbdata[i].to_agent]){
|
||||
proList[dbdata[i].to_agent]=[];
|
||||
}
|
||||
// if(!proList[dbdata[i].to_agent][o_data[0]]){
|
||||
// proList[dbdata[i].to_agent][o_data[0]] = [];
|
||||
// }
|
||||
//console.log(proList,o_data);
|
||||
if(proList[dbdata[i].to_agent].indexOf(o_data[0]) < 0){
|
||||
proList[dbdata[i].to_agent].push(o_data[0]);
|
||||
youle_synch.isdoing = 1;
|
||||
//var o_data = JSON.parse(dbdata[i].oper_data);
|
||||
console.log("添加",o_data[1]);
|
||||
var shortcode = o_data[0];
|
||||
var playerid = o_data[1];
|
||||
var paycode = o_data[2];
|
||||
var charm = o_data[3]; //短号魅力值
|
||||
update_gamedb_add_whitelist(dbdata[i].from_agent, shortcode, playerid, paycode, charm, dbdata[i].id);
|
||||
}
|
||||
break;
|
||||
case 114: //短号白名单中删除一个玩家
|
||||
var o_data = JSON.parse(dbdata[i].oper_data);
|
||||
if(!proList[dbdata[i].to_agent]){
|
||||
proList[dbdata[i].to_agent]=[];
|
||||
}
|
||||
// if(!proList[dbdata[i].to_agent][o_data[0]]){
|
||||
// proList[dbdata[i].to_agent][o_data[0]] = [];
|
||||
// }
|
||||
//console.log(proList,o_data);
|
||||
if(proList[dbdata[i].to_agent].indexOf(o_data[0]) < 0){
|
||||
proList[dbdata[i].to_agent].push(o_data[0]);
|
||||
youle_synch.isdoing = 1;
|
||||
console.log("删除",o_data[1]);
|
||||
var shortcode = o_data[0];
|
||||
var playerid = o_data[1];
|
||||
update_gamedb_del_whitelist(dbdata[i].from_agent, shortcode, playerid, dbdata[i].id);
|
||||
}
|
||||
break;
|
||||
case 201: //系统抽成
|
||||
youle_synch.isdoing = 1;
|
||||
var o_data = JSON.parse(dbdata[i].oper_data);
|
||||
var rebate_mode1 = 0;
|
||||
var rebate_set1 = 0;
|
||||
var rebate_mode2 = 0;
|
||||
var rebate_set2 = 0;
|
||||
for (var j = 0; j < o_data.length; j++) {
|
||||
if (o_data[j].type_id == "001"){
|
||||
rebate_mode1 = 1;
|
||||
rebate_set1 = parseInt(o_data[j].system_commission_rate);
|
||||
}
|
||||
if (o_data[j].type_id == "002"){
|
||||
rebate_mode2 = 1;
|
||||
rebate_set2 = parseInt(o_data[j].system_commission_rate);
|
||||
}
|
||||
}
|
||||
update_gamedb_coinrebate(dbdata[i].to_agent, rebate_mode1, rebate_set1, rebate_mode2, rebate_set2, dbdata[i].id);
|
||||
break;
|
||||
}
|
||||
} catch(e){}
|
||||
}
|
||||
}
|
||||
var sql_agent = "select * from ct_user_process_log where is_process = 0 order by id";
|
||||
youle_synch.mysql_agent.execsql("opensql", sql_agent, [], db_callback);
|
||||
}
|
||||
|
||||
youle_synch.isdoing = 0;
|
||||
// youle_synch.timer = min_ontime(youle_synch.do_readdata, 1000 * 30);
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
193
codes/games/sales_service/youle/third.php
Normal file
193
codes/games/sales_service/youle/third.php
Normal file
@@ -0,0 +1,193 @@
|
||||
<?php
|
||||
header("Access-Control-Allow-Origin: *");
|
||||
header("Access-Control-Allow-Methods: GET, POST, OPTIONS, PUT, PATCH, DELETE");
|
||||
header("Access-Control-Allow-Headers: Content-Type, Authorization, Content-Length, X-Requested-With");
|
||||
header("Access-Control-Allow-Credentials: true");
|
||||
header("Content-Type: textml; charset=utf-8");
|
||||
|
||||
///////////////////////////// 全局常量 /////////////////////////////
|
||||
//mysql数据库连接
|
||||
$G_MySql = array(
|
||||
"host" => "localhost",
|
||||
"name" => "youle_games",
|
||||
"user" => "root",
|
||||
"pwd" => "root",
|
||||
"port" => "3333"
|
||||
);
|
||||
|
||||
//错误编码及提示
|
||||
$G_Error = array(
|
||||
"condb" => array("code" => 81, "msg" => "database connection failed."),
|
||||
"execsql" => array("code" => 82, "msg" => "failed to operate database."),
|
||||
"wrong_a" => array("code" => 83, "msg" => "a parameter error."),
|
||||
"wrong_c" => array("code" => 84, "msg" => "c parameter error."),
|
||||
"wrong_g" => array("code" => 85, "msg" => "g parameter error."),
|
||||
"wrong_do" => array("code" => 86, "msg" => "do parameter error."),
|
||||
"wrong_data" => array("code" => 87, "msg" => "data parameter error."),
|
||||
"wrong_openid" => array("code" => 88, "msg" => "openid is null."),
|
||||
"wrong_unionid" => array("code" => 89, "msg" => "unionid is null.")
|
||||
);
|
||||
|
||||
///////////////////////////// 全局变量 /////////////////////////////
|
||||
//接口函数返回的json对象
|
||||
$G_Result = array(
|
||||
"state" => 0, //0:成功 <>0:错误编码
|
||||
"error" => "", //错误时的描述
|
||||
"data" => array() //成功时的数据
|
||||
);
|
||||
|
||||
//返回结果$G_G_Result
|
||||
function do_return(){
|
||||
global $G_Result;
|
||||
if (count($G_Result["data"]) == 0) {
|
||||
$G_Result["data"] = new stdClass;
|
||||
}
|
||||
echo json_encode($G_Result);
|
||||
exit();
|
||||
}
|
||||
|
||||
////////////////////////// 连接MYSQL数据库 /////////////////////////
|
||||
$PDO = null;
|
||||
try
|
||||
{
|
||||
$PDO = new PDO("mysql:host=".$G_MySql["host"].";port=".$G_MySql["port"].";dbname=".$G_MySql["name"], $G_MySql["user"], $G_MySql["pwd"]);
|
||||
$PDO->exec("set names utf8;");
|
||||
$PDO->exec("use ".$G_MySql["name"].";");
|
||||
}
|
||||
catch (Exception $e)
|
||||
{
|
||||
$G_Result['state'] = $G_Error["condb"]["code"];
|
||||
$G_Result['error'] = $G_Error["condb"]["msg"];
|
||||
do_return();
|
||||
}
|
||||
|
||||
//////////////////////////// 读取参数 ////////////////////////////
|
||||
$a = GetRequest("a");
|
||||
if ($a == null || $a == "") {
|
||||
$G_Result['state'] = $G_Error["wrong_a"]["code"];
|
||||
$G_Result['error'] = $G_Error["wrong_a"]["msg"];
|
||||
do_return();
|
||||
}
|
||||
|
||||
$c = GetRequest("c");
|
||||
if ($c == null || $c == "") {
|
||||
$G_Result['state'] = $G_Error["wrong_c"]["code"];
|
||||
$G_Result['error'] = $G_Error["wrong_c"]["msg"];
|
||||
do_return();
|
||||
}
|
||||
|
||||
$g = GetRequest("g");
|
||||
if ($g == null || $g == "") {
|
||||
$G_Result['state'] = $G_Error["wrong_g"]["code"];
|
||||
$G_Result['error'] = $G_Error["wrong_g"]["msg"];
|
||||
do_return();
|
||||
}
|
||||
|
||||
$do = GetRequest("do");
|
||||
if ($do != 1 && $do != 2) {
|
||||
$G_Result['state'] = $G_Error["wrong_do"]["code"];
|
||||
$G_Result['error'] = $G_Error["wrong_do"]["msg"];
|
||||
do_return();
|
||||
}
|
||||
|
||||
//读取data参数
|
||||
$str_data = GetRequest("data");
|
||||
//php收到后将^号替换为=号,替换回来,,以避免=号POST传参会截断的问题
|
||||
//$str_data = str_replace("^","=",$str_data);
|
||||
//检查data是否为空
|
||||
if ($str_data == null || $str_data == "") {
|
||||
$G_Result['state'] = $G_Error["wrong_data"]["code"];
|
||||
$G_Result['error'] = $G_Error["wrong_data"]["msg"];
|
||||
do_return();
|
||||
}
|
||||
|
||||
//检查data是否能转成json
|
||||
$json_data = json_decode($str_data);
|
||||
if ($json_data == null) {
|
||||
$G_Result['state'] = $G_Error["wrong_data"]["code"];
|
||||
$G_Result['error'] = $G_Error["wrong_data"]["msg"];
|
||||
do_return();
|
||||
}
|
||||
|
||||
switch ($do){
|
||||
case 1:
|
||||
get_roomcard($a, $c, $g, $json_data);
|
||||
do_return();
|
||||
break;
|
||||
case 2:
|
||||
change_roomcard($a, $c, $g, $json_data);
|
||||
do_return();
|
||||
break;
|
||||
}
|
||||
|
||||
//根据参数名获取参数
|
||||
function GetRequest($name) {
|
||||
return isset($_REQUEST[$name])?$_REQUEST[$name]:'';
|
||||
}
|
||||
|
||||
//获取房卡数量
|
||||
function get_roomcard($agentid, $channelid, $gameid, $data) {
|
||||
global $G_Result, $G_Error, $PDO;
|
||||
$openid = $data->openid;
|
||||
$unionid = $data->unionid;
|
||||
$nickname = $data->nickname;
|
||||
$avatar = $data->avatar;
|
||||
$sex = $data->sex;
|
||||
$province = $data->province;
|
||||
$city = $data->city;
|
||||
|
||||
if ($openid == null || $openid == "") {
|
||||
$G_Result['state'] = $G_Error["wrong_openid"]["code"];
|
||||
$G_Result['error'] = $G_Error["wrong_openid"]["msg"];
|
||||
do_return();
|
||||
}
|
||||
|
||||
if ($unionid == null || $unionid == "") {
|
||||
$G_Result['state'] = $G_Error["wrong_unionid"]["code"];
|
||||
$G_Result['error'] = $G_Error["wrong_unionid"]["msg"];
|
||||
do_return();
|
||||
}
|
||||
|
||||
$stmt = $PDO->prepare("call cp_third_get_roomcard(?,?,?,?,?,?,?,?,?,?)");
|
||||
|
||||
if ($stmt->execute(array($agentid, $channelid, $gameid, $openid, $unionid, $nickname, $avatar, $sex, $province, $city))){
|
||||
$aryData = $stmt->fetch(PDO::FETCH_NAMED);
|
||||
if ($aryData["result"] != 0){
|
||||
$G_Result['state'] = $aryData["result"];
|
||||
$G_Result['error'] = $aryData["error"];
|
||||
} else {
|
||||
$G_Result['data']["playerid"] = (int)$aryData["playerid"];
|
||||
$G_Result['data']["roomcard"] = (int)$aryData["roomcard"];
|
||||
}
|
||||
} else {
|
||||
$G_Result['state'] = $G_Error["execsql"]["code"];
|
||||
$G_Result['error'] = $G_Error["execsql"]["msg"];
|
||||
}
|
||||
}
|
||||
|
||||
//修改房卡数量
|
||||
function change_roomcard($agentid, $channelid, $gameid, $data) {
|
||||
global $G_Result, $G_Error, $PDO;
|
||||
$openid = $data->openid;
|
||||
$unionid = $data->unionid;
|
||||
$change = $data->change;
|
||||
|
||||
$stmt = $PDO->prepare("call cp_third_change_roomcard(?,?,?,?,?,?)");
|
||||
|
||||
if ($stmt->execute(array($agentid, $channelid, $gameid, $openid, $unionid, $change))){
|
||||
$aryData = $stmt->fetch(PDO::FETCH_NAMED);
|
||||
if ($aryData["result"] != 0){
|
||||
$G_Result['state'] = $aryData["result"];
|
||||
$G_Result['error'] = $aryData["error"];
|
||||
} else {
|
||||
$G_Result['data']["playerid"] = (int)$aryData["playerid"];
|
||||
$G_Result['data']["roomcard"] = (int)$aryData["roomcard"];
|
||||
$G_Result['data']["change"] = (int)$aryData["amount"];
|
||||
}
|
||||
} else {
|
||||
$G_Result['state'] = $G_Error["execsql"]["code"];
|
||||
$G_Result['error'] = $G_Error["execsql"]["msg"];
|
||||
}
|
||||
}
|
||||
|
||||
?>
|
||||
136
codes/games/sales_service/youle/web_agent/mod.js
Normal file
136
codes/games/sales_service/youle/web_agent/mod.js
Normal file
@@ -0,0 +1,136 @@
|
||||
//////////////////////////////////////////////////////////////////
|
||||
///////////////////////////// 运营商 /////////////////////////////
|
||||
//////////////////////////////////////////////////////////////////
|
||||
|
||||
var youle_business = youle_business || cls_mod.new("youle_business", "business", youle_app);
|
||||
|
||||
//mysql操作类
|
||||
youle_business.mysql = cls_mysql.new("http://ylyxdata.daoqi88.cn/mysql.php", youle_business.app.SendPack);
|
||||
|
||||
//登录
|
||||
youle_business.login = function(pack){
|
||||
var db_callback = function(dbdata){
|
||||
if (dbdata[0].result != 0){
|
||||
pack.data = {};
|
||||
pack.data.state = 1;
|
||||
pack.data.error = dbdata[0].error;
|
||||
} else {
|
||||
pack.data = {};
|
||||
pack.data.state = 0;
|
||||
pack.data.agentid = dbdata[0].agentid;
|
||||
pack.data.agentname = dbdata[0].agentname;
|
||||
pack.data.profittotal = dbdata[0].profittotal;
|
||||
pack.data.paymenttotal = dbdata[0].paymenttotal;
|
||||
pack.data.sharingrate = dbdata[0].sharingrate;
|
||||
pack.data.playercount = dbdata[0].playercount;
|
||||
pack.data.newplayer = dbdata[0].newplayer;
|
||||
pack.data.salecount = dbdata[0].salecount;
|
||||
pack.data.newsale = dbdata[0].newsale;
|
||||
}
|
||||
youle_business.app.SendPack(pack);
|
||||
}
|
||||
|
||||
var user = pack.data.user;
|
||||
var pwd = pack.data.pwd;
|
||||
var sql = "call cp_agent_login(?,?);";
|
||||
youle_business.mysql.execsql("opensql", sql, [user, pwd], db_callback, pack);
|
||||
}
|
||||
|
||||
//修改登录密码
|
||||
youle_business.update_pwd = function(pack){
|
||||
var db_callback = function(dbdata){
|
||||
if (dbdata[0].result != 0){
|
||||
pack.data = {};
|
||||
pack.data.state = 1;
|
||||
pack.data.error = dbdata[0].error;
|
||||
} else {
|
||||
pack.data = {};
|
||||
pack.data.state = 0;
|
||||
}
|
||||
youle_business.app.SendPack(pack);
|
||||
}
|
||||
|
||||
var agentid = pack.data.agentid;
|
||||
var oldpwd = pack.data.oldpwd;
|
||||
var newpwd = pack.data.newpwd;
|
||||
var sql = "call cp_agent_updatepwd(?,?,?);";
|
||||
youle_business.mysql.execsql("opensql", sql, [agentid, oldpwd, newpwd], db_callback, pack);
|
||||
}
|
||||
|
||||
//按月度统计流水
|
||||
youle_business.profit_month = function(pack){
|
||||
var db_callback = function(dbdata){
|
||||
pack.data = {};
|
||||
pack.data.list = dbdata;
|
||||
youle_business.app.SendPack(pack);
|
||||
}
|
||||
|
||||
var agentid = pack.data.agentid;
|
||||
var sql = "call cp_agent_profit_month(?);";
|
||||
youle_business.mysql.execsql("opensql", sql, [agentid], db_callback, pack);
|
||||
}
|
||||
|
||||
//按产品统计流水
|
||||
youle_business.profit_product = function(pack){
|
||||
var db_callback = function(dbdata){
|
||||
pack.data = {};
|
||||
pack.data.list = dbdata;
|
||||
youle_business.app.SendPack(pack);
|
||||
}
|
||||
|
||||
var agentid = pack.data.agentid;
|
||||
var sql = "call cp_agent_profit_product(?);";
|
||||
youle_business.mysql.execsql("opensql", sql, [agentid], db_callback, pack);
|
||||
}
|
||||
|
||||
//按月度统计新增玩家数量
|
||||
youle_business.player_month = function(pack){
|
||||
var db_callback = function(dbdata){
|
||||
pack.data = {};
|
||||
pack.data.list = dbdata;
|
||||
youle_business.app.SendPack(pack);
|
||||
}
|
||||
|
||||
var agentid = pack.data.agentid;
|
||||
var sql = "call cp_agent_player_month(?);";
|
||||
youle_business.mysql.execsql("opensql", sql, [agentid], db_callback, pack);
|
||||
}
|
||||
|
||||
//按月度统计同时在线玩家数量峰值和房间峰值
|
||||
youle_business.player_max = function(pack){
|
||||
var db_callback = function(dbdata){
|
||||
pack.data = {};
|
||||
pack.data.list = dbdata;
|
||||
youle_business.app.SendPack(pack);
|
||||
}
|
||||
|
||||
var agentid = pack.data.agentid;
|
||||
var sql = "call cp_agent_player_max(?);";
|
||||
youle_business.mysql.execsql("opensql", sql, [agentid], db_callback, pack);
|
||||
}
|
||||
|
||||
//按游戏统计玩家数量和房卡消耗数量
|
||||
youle_business.player_game = function(pack){
|
||||
var db_callback = function(dbdata){
|
||||
pack.data = {};
|
||||
pack.data.list = dbdata;
|
||||
youle_business.app.SendPack(pack);
|
||||
}
|
||||
|
||||
var agentid = pack.data.agentid;
|
||||
var sql = "call cp_agent_player_game(?);";
|
||||
youle_business.mysql.execsql("opensql", sql, [agentid], db_callback, pack);
|
||||
}
|
||||
|
||||
//按月度统计新增个人代理数量
|
||||
youle_business.sale_month = function(pack){
|
||||
var db_callback = function(dbdata){
|
||||
pack.data = {};
|
||||
pack.data.list = dbdata;
|
||||
youle_business.app.SendPack(pack);
|
||||
}
|
||||
|
||||
var agentid = pack.data.agentid;
|
||||
var sql = "call cp_agent_sale_month(?);";
|
||||
youle_business.mysql.execsql("opensql", sql, [agentid], db_callback, pack);
|
||||
}
|
||||
30
codes/games/sales_service/youle/web_sales/class.import.js
Normal file
30
codes/games/sales_service/youle/web_sales/class.import.js
Normal file
@@ -0,0 +1,30 @@
|
||||
///////////////////////////////////////////////////
|
||||
/////// cls_youle_sales_import: 输入接口 ///////
|
||||
///////////////////////////////////////////////////
|
||||
var cls_youle_sales_import = cls_youle_sales_import || {
|
||||
|
||||
new: function() {
|
||||
|
||||
var imp = {};
|
||||
|
||||
//玩家购买房卡
|
||||
imp.player_buy_roomcard = function(agentid, playerid, roomcard, amount){
|
||||
youle_agent.export.buy_topup(agentid, playerid, 1, roomcard, amount);
|
||||
}
|
||||
|
||||
//玩家充卡
|
||||
imp.player_topup_roomcard = function(agentid, playerid, roomcard, amount){
|
||||
youle_agent.export.buy_topup(agentid, playerid, 2, roomcard, amount);
|
||||
}
|
||||
|
||||
//玩家充星星
|
||||
imp.player_topup_bean = function(agentid, playerid, bean, amount){
|
||||
youle_agent.export.buy_topup_bean(agentid, playerid, 2, bean, amount);
|
||||
}
|
||||
|
||||
return imp;
|
||||
}
|
||||
}
|
||||
|
||||
//数据异常处理
|
||||
youle_sales.import = cls_youle_sales_import.new();
|
||||
1157
codes/games/sales_service/youle/web_sales/mod.js
Normal file
1157
codes/games/sales_service/youle/web_sales/mod.js
Normal file
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user