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
+167 -199
View File
@@ -34,7 +34,11 @@ websocket.on('reconnect', (timeout) => {
var startBet = function(){
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(){
@@ -46,7 +50,7 @@ var endRob = 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;
@@ -79,14 +83,21 @@ 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){
var opening = $('#opening').val();
var banker_pair = $('#result_banker_pair').val();
var player_pair = $('#result_player_pair').val();
var luck_six = parseInt($('#lucky_six').val()) || 0;
var dragon_seven = parseInt($('#dragon_seven').val()) || 0;
var panda_eight = parseInt($('#panda_eight').val()) || 0;
if(opening > 0){
websocket.emit('openingBaccarat',{table_id : table_id, number_tab_id : number_tab_id,opening : opening,banker_pair : banker_pair,player_pair:player_pair,luck_six:0});
websocket.emit('openingBaccarat',{table_id : table_id, number_tab_id : number_tab_id,opening : opening,banker_pair : banker_pair,player_pair:player_pair,luck_six:luck_six,dragon_seven:dragon_seven,panda_eight:panda_eight});
}
}else if(game_id == 2){
var opening = $('#opening').val();
@@ -108,7 +119,10 @@ var retreated = function(){
if(game_id == 1){
var opening = result_arr[0];
var pair = result_arr[1];
websocket.emit('resetBaccarat',{table_id : table_id, number_tab_id : number_tab_id,opening : opening,pair : pair,luck_six:0});
var luck_six = parseInt(result_arr[2]) || 0;
var dragon_seven = parseInt(result_arr[3]) || 0;
var panda_eight = parseInt(result_arr[4]) || 0;
websocket.emit('resetBaccarat',{table_id : table_id, number_tab_id : number_tab_id,opening : opening,pair : pair,luck_six:luck_six,dragon_seven:dragon_seven,panda_eight:panda_eight});
}else if(game_id == 2){
var opening = result_arr[0];
@@ -199,8 +213,7 @@ websocket.on('resetNumberTab',function(data){
}
//
$(".countdown").css({"opacity":0,"display":"none"});
$(".countdown .grab-count").removeClass("count-active");
$("#resultAreaTimer").hide();
$(".begincard .box").animate({"opacity":"0"},function(){
$(".begincard").fadeOut();
@@ -246,9 +259,21 @@ websocket.on('resetBoot',function(data){
layer.msg(lang[data.msg]);
}
});
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){
@@ -257,15 +282,10 @@ websocket.on('endBet',function(data){
var doIntervalTime = parseInt(interval_time) + 1;
var intervalTime = setInterval(function(){
doIntervalTime--;
$(".countdown .num").html(doIntervalTime)
$(".countdown").css({"opacity":1,"display":"block"});
$(".countdown .grab-count").addClass("count-active");
$(".countdown .round-txt-item").addClass("color-red");
$("#resultAreaTimer").html(doIntervalTime).show();
if(doIntervalTime == 0) {
clearInterval(intervalTime);
$(".countdown").css({"opacity":0,"display":"none"});
$(".countdown .grab-count").removeClass("count-active");
$(".countdown .round-txt-item").removeClass("color-red");
$("#resultAreaTimer").hide();
if(game_id == 4 || game_id == 5){
$(".banker_result").html('');
$(".player_1_result").html('');
@@ -275,15 +295,13 @@ websocket.on('endBet',function(data){
$('#opening').val(0);
$('#result_banker_pair').val(0);
$('#result_player_pair').val(0);
$(".countdown").css({"opacity":0,"display":"none"});
$(".countdown .grab-count").removeClass("count-active");
$("#resultAreaTimer").hide();
setBetStatus(data.round.number_tab_status);
c = parseInt($('#wait_time').val());
}
},1000);
} else {
$(".countdown").css({"opacity":0,"display":"none"});
$(".countdown .grab-count").removeClass("count-active");
$("#resultAreaTimer").hide();
mp3List = ['stop_2.mp3'];
audioMp3(mp3List).Play();
if(game_id == 4 || game_id == 5){
@@ -296,8 +314,7 @@ websocket.on('endBet',function(data){
$('#toning_result').val('');
$(".toning-result-num").removeClass("active");
}
$(".countdown").css({"opacity":0,"display":"none"});
$(".countdown .grab-count").removeClass("count-active");
$("#resultAreaTimer").hide();
setBetStatus(data.round.number_tab_status);
// 识别相关
@@ -315,7 +332,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]);
}
}
}
});
@@ -384,7 +405,7 @@ $(function(){
if(!cookieValue){
$.cookie("enter_time", 1, { expires: 1/86400*3 });
}else{
layer.msg('Please hold on');
layer.msg('请稍等');
return false
}
@@ -407,6 +428,8 @@ $(function(){
}else{
layer.msg("请稍等!");
}
}else if (numberTabStatus == 1) {
endBet();
}else if (numberTabStatus == 2) {
opening();
}
@@ -420,11 +443,6 @@ $(function(){
if(e.keyCode == 109){
$('#update_ludan').toggle();
}
//换靴
if(e.keyCode == 107){
changeBoot();
$('#keycode').val('');
}
//退出登录
if(e.keyCode == 106){
if(table_type == 1){
@@ -452,14 +470,19 @@ $(function(){
}
// 停止倒计时
if(e.keyCode == 96){
endBet();
var _s = $("#number_tab_status").val();
if(_s == 1) endBet();
}
var betStatus = $("#number_tab_status").val();
if(betStatus == 2){
if(e.keyCode == 105){
// Numpad 1(97)=庄 Numpad 2(98)=闲 Numpad 3(99)=和
if(e.keyCode == 97){
$('#opening').val('1');
$('#result_banker_pair').val('0');
$('#result_player_pair').val('0');
$('#lucky_six').val('0');
$('#dragon_seven').val('0');
$('#panda_eight').val('0');
$('#dt_pair').val('0');
$('#openingElement').show();
if(game_id == 1){
@@ -468,10 +491,13 @@ $(function(){
showPngDt(1,0);
}
}
if(e.keyCode == 103){
if(e.keyCode == 98){
$('#opening').val('2');
$('#result_banker_pair').val('0');
$('#result_player_pair').val('0');
$('#lucky_six').val('0');
$('#dragon_seven').val('0');
$('#panda_eight').val('0');
$('#dt_pair').val('0');
$('#openingElement').show();
if(game_id == 1){
@@ -480,67 +506,98 @@ $(function(){
showPngDt(2,0)
}
}
if(e.keyCode == 104){
if(e.keyCode == 99){
$('#opening').val('3');
$('#result_banker_pair').val('0');
$('#result_player_pair').val('0');
$('#lucky_six').val('0');
$('#dragon_seven').val('0');
$('#panda_eight').val('0');
$('#dt_pair').val('0');
$('#openingElement').show();
showPng(3,0,0);
}
if(e.keyCode == 102){
if(game_id == 1){
var result = $('#opening').val();
$('#result_banker_pair').val('1');
$('#result_player_pair').val('0');
if(result == 1){
showPng(1,1,0);
}
if(result == 2){
showPng(2,1,0);
}
if(result == 3){
showPng(3,1,0);
}
showPng(3,0,0);
}else{
showPngDt(3,0);
}
}
// Numpad 6(102)=幸运6(庄赢+标记,切换:2张牌→3张牌→取消)
if(e.keyCode == 102){
if(game_id == 1){
var curLs = parseInt($('#lucky_six').val()) || 0;
if(curLs == 0){ curLs = 2; }
else if(curLs == 2){ curLs = 3; }
else { curLs = 0; }
$('#opening').val(curLs > 0 ? '1' : '0');
$('#result_banker_pair').val('0');
$('#result_player_pair').val('0');
$('#lucky_six').val(curLs);
$('#dragon_seven').val('0');
$('#panda_eight').val('0');
$('#openingElement').show();
if(curLs > 0) showPng(1,0,0);
}
}
// Numpad 7(103)=龙7(庄赢+标记)
if(e.keyCode == 103){
if(game_id == 1){
$('#opening').val('1');
$('#result_banker_pair').val('0');
$('#result_player_pair').val('0');
$('#lucky_six').val('0');
$('#dragon_seven').val('1');
$('#panda_eight').val('0');
$('#openingElement').show();
showPng(1,0,0);
}
}
// Numpad 8(104)=熊8(闲赢+标记)
if(e.keyCode == 104){
if(game_id == 1){
$('#opening').val('2');
$('#result_banker_pair').val('0');
$('#result_player_pair').val('0');
$('#lucky_six').val('0');
$('#dragon_seven').val('0');
$('#panda_eight').val('1');
$('#openingElement').show();
showPng(2,0,0);
}
}
// Numpad 4(100)=庄对(可叠加)
if(e.keyCode == 100){
if(game_id == 1){
var result = $('#opening').val();
$('#result_player_pair').val('2');
$('#result_banker_pair').val('0');
if(result == 1){
showPng(1,2,0);
}
if(result == 2){
showPng(2,2,0);
}
if(result == 3){
showPng(3,2,0);
}
var bp = $('#result_banker_pair').val();
bp = (bp == '1') ? '0' : '1';
$('#result_banker_pair').val(bp);
var pp = $('#result_player_pair').val();
var pair = 0;
if(bp == '1' && pp == '2') pair = 3;
else if(bp == '1') pair = 1;
else if(pp == '2') pair = 2;
if(result > 0) showPng(parseInt(result),pair,0);
}
}
// Numpad 5(101)=闲对(可叠加)
if(e.keyCode == 101){
if(game_id == 1){
var result = $('#opening').val();
$('#result_banker_pair').val('1');
$('#result_player_pair').val('2');
if(result == 1){
showPng(1,3,0);
}
if(result == 2){
showPng(2,3,0);
}
if(result == 3){
showPng(3,3,0);
}
var pp = $('#result_player_pair').val();
pp = (pp == '2') ? '0' : '2';
$('#result_player_pair').val(pp);
var bp = $('#result_banker_pair').val();
var pair = 0;
if(bp == '1' && pp == '2') pair = 3;
else if(bp == '1') pair = 1;
else if(pp == '2') pair = 2;
if(result > 0) showPng(parseInt(result),pair,0);
}
}
}
}
})
$(window).resize(function(){
requestData(ludan);
if(ludan) requestData(ludan);
})
audio.addEventListener("ended", nextAudio);
getTime();
@@ -594,119 +651,30 @@ function loginout(){
});
};
function showPng(opening, pair,isVoice){
if(opening == 1 && pair == 0) {
$('#openingPng').attr('src','/static/result_img/3in1/banker.png');
if(isVoice){
mp3List = ['banker_win.mp3'];
}
}
if(opening == 1 && pair == 1) {
$('#openingPng').attr('src','/static/result_img/3in1/banker_bpair.png');
if(isVoice){
mp3List = ['banker_win.mp3','banker_pair.mp3'];
}
}
if(opening == 1 && pair == 2) {
$('#openingPng').attr('src','/static/result_img/3in1/banker_ppair.png');
if(isVoice){
mp3List = ['banker_win.mp3','player_pair.mp3'];
}
}
if(opening == 1 && pair == 3) {
$('#openingPng').attr('src','/static/result_img/3in1/banker_bpair_ppair.png');
if(isVoice){
mp3List = ['banker_win.mp3','banker_pair.mp3','player_pair.mp3'];
}
}
if(opening == 2 && pair == 0) {
$('#openingPng').attr('src','/static/result_img/3in1/player.png');
if(isVoice){
mp3List = ['player_win.mp3'];
}
}
if(opening == 2 && pair == 1) {
$('#openingPng').attr('src','/static/result_img/3in1/player_bpair.png');
if(isVoice){
mp3List = ['player_win.mp3','banker_pair.mp3'];
}
}
if(opening == 2 && pair == 2) {
$('#openingPng').attr('src','/static/result_img/3in1/player_ppair.png');
if(isVoice){
mp3List = ['player_win.mp3','player_pair.mp3'];
}
}
if(opening == 2 && pair == 3) {
$('#openingPng').attr('src','/static/result_img/3in1/player_bpair_ppair.png');
if(isVoice){
mp3List = ['player_win.mp3','banker_pair.mp3','player_pair.mp3'];
}
}
if(opening == 3 && pair == 0) {
$('#openingPng').attr('src','/static/result_img/3in1/tie.png');
if(isVoice){
mp3List = ['tie.mp3'];
}
}
if(opening == 3 && pair == 1) {
$('#openingPng').attr('src','/static/result_img/3in1/tie_bpair.png');
if(isVoice){
mp3List = ['tie.mp3','banker_pair.mp3'];
}
}
if(opening == 3 && pair == 2) {
$('#openingPng').attr('src','/static/result_img/3in1/tie_ppair.png');
if(isVoice){
mp3List = ['tie.mp3','player_pair.mp3'];
}
}
if(opening == 3 && pair == 3) {
$('#openingPng').attr('src','/static/result_img/3in1/tie_bpair_ppair.png');
if(isVoice){
mp3List = ['tie.mp3','banker_pair.mp3','player_pair.mp3'];
}
}
if(isVoice){
audioMp3(mp3List).Play();
}
var winText = '', winColor = '', pairHtml = '';
var bpLabel = (lang.banker_pair || lang.banker+'对');
var ppLabel = (lang.player_pair || lang.player+'对');
if(opening == 1){ winText = lang.banker+'赢'; winColor = '#b20a00'; mp3List = ['banker_win.mp3']; }
if(opening == 2){ winText = lang.player+'赢'; winColor = '#0543bc'; mp3List = ['player_win.mp3']; }
if(opening == 3){ winText = lang.tie; winColor = '#0A5101'; mp3List = ['tie.mp3']; }
if(pair == 1 || pair == 3) { pairHtml += '<span style="color:#b20a00">' + bpLabel + '</span> '; if(isVoice) mp3List.push('banker_pair.mp3'); }
if(pair == 2 || pair == 3) { pairHtml += '<span style="color:#0543bc">' + ppLabel + '</span>'; if(isVoice) mp3List.push('player_pair.mp3'); }
if(isVoice){ audioMp3(mp3List).Play(); }
var html = '<div style="text-align:center"><div style="font-size:3vw;font-weight:bold;color:'+winColor+'">'+winText+'</div>';
if(pairHtml) html += '<div style="font-size:2vw;margin-top:4px">'+pairHtml+'</div>';
html += '</div>';
$("#resultAreaTimer").hide();
$("#resultAreaImg").html(html);
}
function showPngDt (opening,isVoice){
if(opening == 1) {
$('#openingPng').attr('src','/static/result_img/3in1/drogon.png');
if(isVoice){
mp3List = ['dragon_win.mp3'];
}
}
if(opening == 2) {
$('#openingPng').attr('src','/static/result_img/3in1/tiger.png');
if(isVoice){
mp3List = ['tiger_win.mp3'];
}
}
if(opening == 3) {
$('#openingPng').attr('src','/static/handle/result_img/3in1/tie.png');
if(isVoice){
mp3List = ['tie.mp3'];
}
}
if(isVoice){
audioMp3(mp3List).Play();
}
var winText = '', winColor = '';
if(opening == 1){ winText = (lang.dragon||'龙')+'赢'; winColor = '#b20a00'; mp3List = ['dragon_win.mp3']; }
if(opening == 2){ winText = (lang.tiger||'虎')+'赢'; winColor = '#0543bc'; mp3List = ['tiger_win.mp3']; }
if(opening == 3){ winText = lang.tie||'和'; winColor = '#0A5101'; mp3List = ['tie.mp3']; }
if(isVoice){ audioMp3(mp3List).Play(); }
$("#resultAreaTimer").hide();
$("#resultAreaImg").html('<div style="text-align:center;font-size:3vw;font-weight:bold;color:'+winColor+'">'+winText+'</div>');
}
function gameResult(data){
@@ -764,9 +732,8 @@ function getLang(){
}
//倒计时
function countDown(time) {
$(".countdown .num").html(time)
$(".countdown").css({"opacity":1,"display":"block"});
$(".countdown .grab-count").addClass("count-active");
$("#resultAreaTimer").html(time).show();
$("#resultAreaImg").empty();
if(time == 10){
mp3List = ['time_tip_10.mp3'];
audioMp3(mp3List).Play();
@@ -778,8 +745,7 @@ function countDown(time) {
if(time<=0){
mp3List = ['stop_2.mp3'];
audioMp3(mp3List).Play();
$(".countdown").css({"opacity":0,"display":"none"});
$(".countdown .grab-count").removeClass("count-active");
$("#resultAreaTimer").hide();
return;
}
}
@@ -1170,19 +1136,13 @@ function nextAudio(){
}
function countDownRob(time) {
var table_id = $('#table_id').val();
$(".countdown .num").html(time);
$(".countdown").css({"opacity":1,"display":"block"});
$(".countdown .grab-count").addClass("count-active");
//$(".countdown").fadeIn();
$("#resultAreaTimer").html(time).show();
if(time < 5 && time > 0){
mp3List = ['time.mp3'];
audioMp3(mp3List).Play();
}
if(time<=0){
// mp3List = ['end_rob.mp3'];
// audioMp3(mp3List).Play();
$(".countdown").css({"opacity":0,"display":"none"});
$(".countdown .grab-count").removeClass("count-active");
$("#resultAreaTimer").hide();
webSocket.send('{"connect":"space","mode":"endRob","number_tab_id":"'+parseInt(number_tab_id)+'","table_id":"'+parseInt(table_id)+'"}');
return;
}
@@ -1400,7 +1360,7 @@ function cutRoad(roadType,ctb,unit,roadData,cols,ask,askroad){
}else if(roadType=="bigeyeWay"){
BigeyePath(ctb,unit,v.show_x-cut,v.show_y,v.result)
}else if(roadType=="showWay"){
SoloPath(ctb,unit,v.show_x-cut,v.show_y,v.result,v.pair,v.lucky_six)
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)
}else if(roadType=="bigWay"){
BigPath(ctb,unit,v.show_x-cut,v.show_y,v.result,v.tie_num,v.pair)
}else if(roadType=="sanxingWay"){
@@ -1420,21 +1380,29 @@ function Font_tie(ctb,num,Font_x,Font_y,fontsize){
ctb.stroke();
}
}
function SoloPath(ctb,unit,x,y,type,corners,luckySix){
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;
if(type==1){
if(game_id==1 && luck_six > 0){
var color='#8b1a1a', fonts="6";
ctb.strokeStyle = "#a03030";
ctb.lineWidth = 2;
}else if(game_id==1 && dragon_seven > 0){
var color='#b8860b', fonts="7";
ctb.strokeStyle = "#ff2202";
ctb.lineWidth = 4;
}else if(game_id==1 && panda_eight > 0){
var color='#34495e', fonts="8";
ctb.strokeStyle = "#506878";
ctb.lineWidth = 2;
}else if(type==1){
var color='#b20a00';
if(game_id == 2){
var fonts = lang.dragon;
}else{
if(luckySix == 1){
var fonts = 6;
}else{
var fonts = lang.banker;
}
var fonts = lang.banker;
}
ctb.strokeStyle = "#ff4a68";
}else if(type==2){