backup: 线上最终版本全量备份

包含所有线上运行的改动:
- 荷官端倒计时卡顿修复(CountdownService TTL+10/前端watchdog)
- 停止下注debounce防重复(8个handle.js)
- 洗码量规则重写(单边/双边/开和不计/百家乐+龙虎)
- 龙虎和局不杀庄闲(全额退回)
- 日志系统(Logger工具类/日志查看/清理脚本)
- 好路提醒异常处理(WaybillRemindService try-catch)
- 扫牌器连接改进(ScanConnectService)
- 牛牛/三卡开牌修复
- .gitignore更新/.DS_Store清理
This commit is contained in:
OG Backup
2026-06-14 14:20:43 +08:00
parent 728ce45856
commit 2cd31285f0
78 changed files with 2407 additions and 538 deletions
+54 -15
View File
@@ -137,7 +137,11 @@ var startBet = function(){
sbSocket.emit("stop",{"tableCode":casinoTableId, "type":"SYS"});
websocket.emit('startBet',{table_id : table_id, number_tab_id : number_tab_id});
};
var isEndingBet = false;
var endBet = function (){
if(isEndingBet) return;
isEndingBet = true;
setTimeout(function(){ isEndingBet = false; }, 2000);
websocket.emit('endBet',{table_id : table_id, number_tab_id : number_tab_id});
};
var startRob = function(){
@@ -160,7 +164,7 @@ var stopSB = function(){
var resetNumberTab = function(){
isCBoot = true;
var betStatus = $("#number_tab_status").val();
if(betStatus == 1 || betStatus == 2){
if(betStatus == 1 || betStatus == 2 || betStatus == 3){
layer.confirm(lang.is_reset_number,{btn: [lang.confirm,lang.cancel],title:lang.message}, function(index){
websocket.emit('resetNumberTab',{table_id : table_id});
isCBoot = false;
@@ -193,7 +197,11 @@ var resetBoot = function(){
layer.close(index);
});
};
var isOpening = false;
var opening = function(){
if(isOpening) return;
isOpening = true;
setTimeout(function(){ isOpening = false; }, 3000);
$('.control-box .btn-box2 span').removeClass('on');
if(game_id == 1){
websocket.emit('openingBaccarat',{table_id : table_id, number_tab_id : number_tab_id});
@@ -496,9 +504,21 @@ websocket.on('resetBoot',function(data){
}
}
});
var _cdTimer = null;
var _cdVal = 0;
websocket.on('startBetCountDown',function(data){
if(data.status == true && data.table_id == table_id){
_cdVal = data.count_down;
countDown(data.count_down);
if(_cdTimer) clearTimeout(_cdTimer);
if(_cdVal > 0){
_cdTimer = setTimeout(function _tick(){
_cdVal--;
if(_cdVal >= 0) countDown(_cdVal);
if(_cdVal > 0) _cdTimer = setTimeout(_tick, 1000);
else _cdTimer = null;
}, 2000);
}
}
});
websocket.on('endBet',function(data){
@@ -538,7 +558,11 @@ websocket.on('endBet',function(data){
}else{
if (data.table_id != undefined && data.table_id == table_id) {
layer.msg(lang[data.msg]);
if(data.msg == 'end_bet_error' && data.bet_status != undefined){
$('#number_tab_status').val(data.bet_status);
} else {
layer.msg(lang[data.msg]);
}
}
}
});
@@ -805,7 +829,7 @@ $(function(){
if(!cookieValue){
$.cookie("enter_time", 1, { expires: 1/86400*3 });
}else{
layer.msg('Please hold on');
layer.msg('请稍等');
return false
}
@@ -828,6 +852,8 @@ $(function(){
}else{
layer.msg("请稍等!");
}
}else if (numberTabStatus == 1) {
endBet();
}else if (numberTabStatus == 2) {
opening();
}
@@ -841,11 +867,6 @@ $(function(){
if(e.keyCode == 109){
$('#update_ludan').toggle();
}
//换靴
if(e.keyCode == 107){
changeBoot();
$('#keycode').val('');
}
//退出登录
if(e.keyCode == 106){
if(table_type == 1){
@@ -872,11 +893,12 @@ $(function(){
var number_tab_status=$("#number_tab_status").val();
if((number_rob_status==1&&number_tab_status==0)||(number_rob_status==2&&number_tab_status==0)){
endRob();
}else{
}else if(number_tab_status == 1){
endBet();
}
}else{
endBet();
var _s = $("#number_tab_status").val();
if(_s == 1) endBet();
}
}
if(game_id == 6){
@@ -2031,7 +2053,7 @@ function cutRoad(roadType,ctb,unit,roadData,cols,ask,askroad){
}
$.each(new_roadData,function(i,v){
if(roadType=="showWay"){
SoloPath(ctb,unit,v.show_x-cut,v.show_y,v.result,v.pair)
SoloPath(ctb,unit,v.show_x-cut,v.show_y,v.result,v.pair,v.luck_six||0,v.dragon_seven||0,v.panda_eight||0)
}
})
}
@@ -2096,11 +2118,13 @@ function Font_tie(ctb,num,Font_x,Font_y,fontsize){
ctb.stroke();
}
}
function SoloPath(ctb,unit,x,y,type,corners){
function SoloPath(ctb,unit,x,y,type,corners,luck_six,dragon_seven,panda_eight){
ctb.beginPath();
ctb.lineWidth = 0.5;
ctb.strokeStyle = "#000";
var radius=unit/2||0;
var cx = radius+unit*(x-1);
var cy = radius+unit*(y-1);
if (game_id == 6){
if(type==0){
var color='#5A5A5A';
@@ -2123,6 +2147,21 @@ function SoloPath(ctb,unit,x,y,type,corners){
var fonts="4";
ctb.strokeStyle = "#E35C4C";
}
} else if(game_id==1 && luck_six > 0){
var color='#8b1a1a';
var fonts="6";
ctb.strokeStyle = "#a03030";
ctb.lineWidth = 2;
} else if(game_id==1 && dragon_seven > 0){
var color='#b8860b';
var fonts="7";
ctb.{strokeStyle = "#ff2202";}
ctb.lineWidth = 3;
} else if(game_id==1 && panda_eight > 0){
var color='#34495e';
var fonts="8";
ctb.strokeStyle = "#506878";
ctb.lineWidth = 2;
} else {
if(type==1){
var color='#ff002a';
@@ -2145,14 +2184,14 @@ function SoloPath(ctb,unit,x,y,type,corners){
}
}
ctb.arc(radius+unit*(x-1), radius+unit*(y-1), unit*0.45, 0, Math.PI * 2);
ctb.arc(cx, cy, unit*0.45, 0, Math.PI * 2);
ctb.fillStyle=color;
ctb.fill();
ctb.font=unit*0.6+"px Arial";
ctb.fillStyle ="#fff" ; // 颜色
ctb.fillStyle ="#fff" ;
ctb.textAlign = 'center';
ctb.textBaseline = 'middle';
ctb.fillText(fonts,radius+unit*(x-1),radius+unit*(y-1));
ctb.fillText(fonts,cx,cy);
ctb.stroke();
var corner_xy=unit/3.5
if(corners==1){