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

包含所有线上运行的改动:
- 代理编辑功能修复(码率/占成/返水率保存)
- CORS跨域修复(Pcapi构造函数统一Origin)
- 支付通道(ccpay/epay新增)
- 代理报表洗码量显示
- AlinPay金额调整
- 代理/会员编辑页面优化
- 多语言更新
This commit is contained in:
OG Backup
2026-06-14 14:19:49 +08:00
parent 490df4c4c5
commit 171f8fce5c
25 changed files with 1570 additions and 247 deletions
+49 -5
View File
@@ -565,12 +565,24 @@ class Agent Extends Common{
if(!$user || $user['agent'] == 0){
die(json_encode(['code'=>0,'msg'=>$lang['error_id']]));
}
// 顶级代理(agent_parent_id=0)无真实上级:构造一个不设限的虚拟上级,使所有"不得高于上级"封顶校验自动放行;
// "不得低于下级"封底校验与写入逻辑保持不变(顶级代理仍受其下级最高费率约束)。
if($parent_id <= 0){
die(json_encode(['code'=>0,'msg'=>$lang['parent_error']]));
}
$agentParent = Db::name('user')->where('id',$parent_id)->find();
if(!$agentParent || $agentParent['agent'] == 0){
die(json_encode(['code'=>0,'msg'=>$lang['parent_error']]));
$agentParent = [
'limit_low' => 0, 'limit_high' => 99999999999,
'limit_low_tie' => 0, 'limit_high_tie' => 99999999999,
'limit_low_pair' => 0, 'limit_high_pair' => 99999999999,
'limit_low_nn' => 0, 'limit_high_nn' => 0,
'agent_ximalv' => 100, 'agent_ximalv_dt' => 100,
'agent_ximalv_nn' => 100, 'agent_ximalv_tc' => 100,
'agent_cs' => 100, 'rebate_rate' => 100,
'agent_parent_id' => 0,
];
}else{
$agentParent = Db::name('user')->where('id',$parent_id)->find();
if(!$agentParent || $agentParent['agent'] == 0){
die(json_encode(['code'=>0,'msg'=>$lang['parent_error']]));
}
}
if(!$nickname){
die(json_encode(['code'=>0,'msg'=>$lang['empty_nickname']]));
@@ -682,6 +694,38 @@ class Agent Extends Common{
die(json_encode(['code'=>0,'msg'=>$lang['rebate_cannot_lower_agent'].' '.$childMaxRebateRate.'%']));
}
// —— 时序风险检测 ——
// 洗码率/返水率/占成率在「下注未结算」期间被修改,结算(openingBet)会按新值参与代理分账,
// 导致本局佣金与下注时预期不符。仅当上述费率确有变化、且该代理下级存在未结算注单时,要求二次确认。
// 限红(limit_*)不参与结算、赔率(price_*)代理端只读,故不在检测范围。
$confirm_pending = Request::instance()->post('confirm_pending');
$rateChanged = (
abs($agent_ximalv - (float)$user['agent_ximalv']) > 0.001 ||
abs($agent_ximalv_dt - (float)$user['agent_ximalv_dt']) > 0.001 ||
abs($agent_ximalv_nn - (float)$user['agent_ximalv_nn']) > 0.001 ||
abs($agent_ximalv_tc - (float)$user['agent_ximalv_tc']) > 0.001 ||
abs($agent_cs - (float)$user['agent_cs']) > 0.001 ||
abs((float)$rebate_rate - (float)$user['rebate_rate']) > 0.001
);
if($rateChanged && !$confirm_pending){
// bet 表位于 DB2 连接(与 Report 模块一致);下级注单路径匹配沿用全站约定的两段 LIKE。
// create_time 限定近 1 小时,规避历史异常残留的 is_end=0 注单造成的误报。
$pendingCount = Db::connect('DB2')->name('bet')
->where('is_end', 0)
->where('create_time', '>=', time() - 3600)
->where(function($q) use ($user_id){
$q->where('agent_parent_id_path', 'like', '%,'.$user_id.',%')
->whereOr('agent_parent_id_path', 'like', $user_id.',%');
})
->count();
if($pendingCount > 0){
die(json_encode([
'code' => 2,
'pending' => $pendingCount,
'msg' => '该代理下级当前有 '.$pendingCount.' 笔注单尚未结算。本次修改的洗码率 / 返水率 / 占成率将按新值参与这些注单的代理分账,可能使本局佣金与下注时预期不符。确定仍要立即保存吗?',
]));
}
}
// 拼装数据创建代理
$user_data = array();
+2 -2
View File
@@ -260,13 +260,13 @@ class Login extends Controller {
if($startDate){
$startTime = strtotime($startDate);
}else{
$startTime = strtotime(date('Y-m-d'));
$startTime = strtotime(date('Y-m-d') . ' 08:00:00');
$get['startDate'] = date('Y-m-d H:i:s',$startTime);
}
if($endDate){
$endTime = strtotime($endDate);
}else{
$endTime = time();
$endTime = strtotime(date('Y-m-d', strtotime('+1 day')) . ' 07:59:59');
$get['endDate'] = date('Y-m-d H:i:s',$endTime);
}
$where = array();
+1 -3
View File
@@ -760,9 +760,7 @@ class Player Extends Common{
$user_data['agent_ximalv_nn'] = $agent_ximalv_nn;
$user_data['agent_ximalv_tc'] = $agent_ximalv_tc;
$user_data['manager_id'] = $manager_id;
if ($rebate_rate){
$user_data['rebate_rate'] = $rebate_rate;
}
$user_data['rebate_rate'] = $rebate_rate ?: 0;
$user_data['update_time'] = time();
$user_data['remarks'] = $remark;
$result = Db::name('user')->where('id',$user_id)->update($user_data);
+39 -39
View File
@@ -36,17 +36,17 @@ class Report Extends Common{
$game_id = intval(Request::instance()->get('game_id'));
$export = intval(Request::instance()->get('export'));
// 转换日期时间(默认:今天07:00:00 ~ 明天06:59:59
// 转换日期时间(默认:今天08:00:00 ~ 明天07:59:59
if ($startDate) {
$startTime = strtotime($startDate);
} else {
$startTime = strtotime(date('Y-m-d') . ' 07:00:00');
$startTime = strtotime(date('Y-m-d') . ' 08:00:00');
$get['startDate'] = date('Y-m-d H:i:s', $startTime);
}
if ($endDate) {
$endTime = strtotime($endDate);
} else {
$endTime = strtotime(date('Y-m-d', strtotime('+1 day')) . ' 06:59:59');
$endTime = strtotime(date('Y-m-d', strtotime('+1 day')) . ' 07:59:59');
$get['endDate'] = date('Y-m-d H:i:s', $endTime);
}
@@ -309,14 +309,14 @@ class Report Extends Common{
if($startDate){
$startTime = strtotime($startDate);
}else{
$startTime = strtotime(date('Y-m-d'));
$startTime = strtotime(date('Y-m-d') . ' 08:00:00');
$get['startDate'] = date('Y-m-d H:i:s',$startTime);
$this->assign('get',$get);
}
if($endDate){
$endTime = strtotime($endDate);
}else{
$endTime = time();
$endTime = strtotime(date('Y-m-d', strtotime('+1 day')) . ' 07:59:59');
$get['endDate'] = date('Y-m-d H:i:s',$endTime);
$this->assign('get',$get);
}
@@ -505,13 +505,13 @@ class Report Extends Common{
if($startDate){
$startTime = strtotime($startDate);
}else{
$startTime = strtotime(date('Y-m-d'));
$startTime = strtotime(date('Y-m-d') . ' 08:00:00');
$get['startDate'] = date('Y-m-d H:i:s',$startTime);
}
if($endDate){
$endTime = strtotime($endDate);
}else{
$endTime = time();
$endTime = strtotime(date('Y-m-d', strtotime('+1 day')) . ' 07:59:59');
$get['endDate'] = date('Y-m-d H:i:s',$endTime);
}
@@ -1032,13 +1032,13 @@ class Report Extends Common{
if($startDate){
$startTime = strtotime($startDate);
}else{
$startTime = strtotime(date('Y-m-d'));
$startTime = strtotime(date('Y-m-d') . ' 08:00:00');
$get['startDate'] = date('Y-m-d H:i:s',$startTime);
}
if($endDate){
$endTime = strtotime($endDate);
}else{
$endTime = time();
$endTime = strtotime(date('Y-m-d', strtotime('+1 day')) . ' 07:59:59');
$get['endDate'] = date('Y-m-d H:i:s',$endTime);
}
@@ -2054,14 +2054,14 @@ class Report Extends Common{
if($startDate){
$startTime = strtotime($startDate);
}else{
$startTime = strtotime(date('Y-m-d'));
$startTime = strtotime(date('Y-m-d') . ' 08:00:00');
$get['startDate'] = date('Y-m-d H:i:s',$startTime);
$this->assign('get',$get);
}
if($endDate){
$endTime = strtotime($endDate);
}else{
$endTime = time();
$endTime = strtotime(date('Y-m-d', strtotime('+1 day')) . ' 07:59:59');
$get['endDate'] = date('Y-m-d H:i:s',$endTime);
$this->assign('get',$get);
}
@@ -2172,14 +2172,14 @@ class Report Extends Common{
if($startDate){
$startTime = strtotime($startDate);
}else{
$startTime = strtotime(date('Y-m-d'));
$startTime = strtotime(date('Y-m-d') . ' 08:00:00');
$get['startDate'] = date('Y-m-d H:i:s',$startTime);
$this->assign('get',$get);
}
if($endDate){
$endTime = strtotime($endDate);
}else{
$endTime = time();
$endTime = strtotime(date('Y-m-d', strtotime('+1 day')) . ' 07:59:59');
$get['endDate'] = date('Y-m-d H:i:s',$endTime);
$this->assign('get',$get);
}
@@ -2269,14 +2269,14 @@ class Report Extends Common{
if($startDate){
$startTime = strtotime($startDate);
}else{
$startTime = strtotime(date('Y-m-d'));
$startTime = strtotime(date('Y-m-d') . ' 08:00:00');
$get['startDate'] = date('Y-m-d H:i:s',$startTime);
$this->assign('get',$get);
}
if($endDate){
$endTime = strtotime($endDate);
}else{
$endTime = time();
$endTime = strtotime(date('Y-m-d', strtotime('+1 day')) . ' 07:59:59');
$get['endDate'] = date('Y-m-d H:i:s',$endTime);
$this->assign('get',$get);
}
@@ -2819,14 +2819,14 @@ class Report Extends Common{
if($startDate){
$startTime = strtotime($startDate);
}else{
$startTime = strtotime(date('Y-m-d'));
$startTime = strtotime(date('Y-m-d') . ' 08:00:00');
$get['startDate'] = date('Y-m-d H:i:s',$startTime);
$this->assign('get',$get);
}
if($endDate){
$endTime = strtotime($endDate);
}else{
$endTime = time();
$endTime = strtotime(date('Y-m-d', strtotime('+1 day')) . ' 07:59:59');
$get['endDate'] = date('Y-m-d H:i:s',$endTime);
$this->assign('get',$get);
}
@@ -2869,13 +2869,13 @@ class Report Extends Common{
if ($startDate) {
$startTime = strtotime($startDate);
} else {
$startTime = strtotime(date('Y-m-d'));
$startTime = strtotime(date('Y-m-d') . ' 08:00:00');
$get['startDate'] = date('Y-m-d H:i:s', $startTime);
}
if ($endDate) {
$endTime = strtotime($endDate);
} else {
$endTime = time();
$endTime = strtotime(date('Y-m-d', strtotime('+1 day')) . ' 07:59:59');
$get['endDate'] = date('Y-m-d H:i:s', $endTime);
}
@@ -3075,14 +3075,14 @@ class Report Extends Common{
if ($startDate) {
$startTime = strtotime($startDate);
} else {
$startTime = strtotime(date('Y-m-d'));
$startTime = strtotime(date('Y-m-d') . ' 08:00:00');
$get['startDate'] = date('Y-m-d H:i:s', $startTime);
$this->assign('get', $get);
}
if ($endDate) {
$endTime = strtotime($endDate);
} else {
$endTime = time();
$endTime = strtotime(date('Y-m-d', strtotime('+1 day')) . ' 07:59:59');
$get['endDate'] = date('Y-m-d H:i:s', $endTime);
$this->assign('get', $get);
}
@@ -3168,14 +3168,14 @@ class Report Extends Common{
if ($startDate) {
$startTime = strtotime($startDate);
} else {
$startTime = strtotime(date('Y-m-d'));
$startTime = strtotime(date('Y-m-d') . ' 08:00:00');
$get['startDate'] = date('Y-m-d H:i:s', $startTime);
$this->assign('get', $get);
}
if ($endDate) {
$endTime = strtotime($endDate);
} else {
$endTime = time();
$endTime = strtotime(date('Y-m-d', strtotime('+1 day')) . ' 07:59:59');
$get['endDate'] = date('Y-m-d H:i:s', $endTime);
$this->assign('get', $get);
}
@@ -3275,14 +3275,14 @@ class Report Extends Common{
if ($startDate) {
$startTime = strtotime($startDate);
} else {
$startTime = strtotime(date('Y-m-d'));
$startTime = strtotime(date('Y-m-d') . ' 08:00:00');
$get['startDate'] = date('Y-m-d H:i:s', $startTime);
$this->assign('get', $get);
}
if ($endDate) {
$endTime = strtotime($endDate);
} else {
$endTime = time();
$endTime = strtotime(date('Y-m-d', strtotime('+1 day')) . ' 07:59:59');
$get['endDate'] = date('Y-m-d H:i:s', $endTime);
$this->assign('get', $get);
}
@@ -3366,14 +3366,14 @@ class Report Extends Common{
if ($startDate) {
$startTime = strtotime($startDate);
} else {
$startTime = strtotime(date('Y-m-d'));
$startTime = strtotime(date('Y-m-d') . ' 08:00:00');
$get['startDate'] = date('Y-m-d H:i:s', $startTime);
$this->assign('get', $get);
}
if ($endDate) {
$endTime = strtotime($endDate);
} else {
$endTime = time();
$endTime = strtotime(date('Y-m-d', strtotime('+1 day')) . ' 07:59:59');
$get['endDate'] = date('Y-m-d H:i:s', $endTime);
$this->assign('get', $get);
}
@@ -3479,14 +3479,14 @@ class Report Extends Common{
if ($startDate) {
$startTime = strtotime($startDate);
} else {
$startTime = strtotime(date('Y-m-d'));
$startTime = strtotime(date('Y-m-d') . ' 08:00:00');
$get['startDate'] = date('Y-m-d H:i:s', $startTime);
$this->assign('get', $get);
}
if ($endDate) {
$endTime = strtotime($endDate);
} else {
$endTime = time();
$endTime = strtotime(date('Y-m-d', strtotime('+1 day')) . ' 07:59:59');
$get['endDate'] = date('Y-m-d H:i:s', $endTime);
$this->assign('get', $get);
}
@@ -3574,14 +3574,14 @@ class Report Extends Common{
if ($startDate) {
$startTime = strtotime($startDate);
} else {
$startTime = strtotime(date('Y-m-d'));
$startTime = strtotime(date('Y-m-d') . ' 08:00:00');
$get['startDate'] = date('Y-m-d H:i:s', $startTime);
$this->assign('get', $get);
}
if ($endDate) {
$endTime = strtotime($endDate);
} else {
$endTime = time();
$endTime = strtotime(date('Y-m-d', strtotime('+1 day')) . ' 07:59:59');
$get['endDate'] = date('Y-m-d H:i:s', $endTime);
$this->assign('get', $get);
}
@@ -3683,14 +3683,14 @@ class Report Extends Common{
if($startDate){
$startTime = strtotime($startDate);
}else{
$startTime = strtotime(date('Y-m-d'));
$startTime = strtotime(date('Y-m-d') . ' 08:00:00');
$get['startDate'] = date('Y-m-d H:i:s',$startTime);
$this->assign('get',$get);
}
if($endDate){
$endTime = strtotime($endDate);
}else{
$endTime = time();
$endTime = strtotime(date('Y-m-d', strtotime('+1 day')) . ' 07:59:59');
$get['endDate'] = date('Y-m-d H:i:s',$endTime);
$this->assign('get',$get);
}
@@ -3895,14 +3895,14 @@ class Report Extends Common{
if($startDate){
$startTime = strtotime($startDate);
}else{
$startTime = strtotime(date('Y-m-d'));
$startTime = strtotime(date('Y-m-d') . ' 08:00:00');
$get['startDate'] = date('Y-m-d H:i:s',$startTime);
$this->assign('get',$get);
}
if($endDate){
$endTime = strtotime($endDate);
}else{
$endTime = time();
$endTime = strtotime(date('Y-m-d', strtotime('+1 day')) . ' 07:59:59');
$get['endDate'] = date('Y-m-d H:i:s',$endTime);
$this->assign('get',$get);
}
@@ -3994,14 +3994,14 @@ class Report Extends Common{
if($startDate){
$startTime = strtotime($startDate);
}else{
$startTime = strtotime(date('Y-m-d'));
$startTime = strtotime(date('Y-m-d') . ' 08:00:00');
$get['startDate'] = date('Y-m-d H:i:s',$startTime);
$this->assign('get',$get);
}
if($endDate){
$endTime = strtotime($endDate);
}else{
$endTime = time();
$endTime = strtotime(date('Y-m-d', strtotime('+1 day')) . ' 07:59:59');
$get['endDate'] = date('Y-m-d H:i:s',$endTime);
$this->assign('get',$get);
}
@@ -4100,14 +4100,14 @@ class Report Extends Common{
if($startDate){
$startTime = strtotime($startDate);
}else{
$startTime = strtotime(date('Y-m-d'));
$startTime = strtotime(date('Y-m-d') . ' 08:00:00');
$get['startDate'] = date('Y-m-d H:i:s',$startTime);
$this->assign('get',$get);
}
if($endDate){
$endTime = strtotime($endDate);
}else{
$endTime = time();
$endTime = strtotime(date('Y-m-d', strtotime('+1 day')) . ' 07:59:59');
$get['endDate'] = date('Y-m-d H:i:s',$endTime);
$this->assign('get',$get);
}
+8 -8
View File
@@ -30,12 +30,12 @@ class Settle Extends Common{
if($timeLength == 1 || $timeLength == 2){
if($timeLength == 1){
//上周时间
$weekStart = date("Y-m-d H:i:s",mktime(0, 0 , 0,date("m"),date("d")-date("w")+1-7,date("Y")));
$weekEnd = date("Y-m-d H:i:s",mktime(23,59,59,date("m"),date("d")-date("w")+7-7,date("Y")));
$weekStart = date("Y-m-d H:i:s",mktime(0, 0 , 0,date("m"),date("d")-(date("w")?:7)+1-7,date("Y")));
$weekEnd = date("Y-m-d H:i:s",mktime(23,59,59,date("m"),date("d")-(date("w")?:7)+7-7,date("Y")));
}elseif($timeLength == 2){
//本周时间
$weekStart = date("Y-m-d H:i:s",mktime(0, 0 , 0,date("m"),date("d")-date("w")+1,date("Y")));
$weekEnd = date("Y-m-d H:i:s",mktime(23,59,59,date("m"),date("d")-date("w")+7,date("Y")));
$weekStart = date("Y-m-d H:i:s",mktime(0, 0 , 0,date("m"),date("d")-(date("w")?:7)+1,date("Y")));
$weekEnd = date("Y-m-d H:i:s",mktime(23,59,59,date("m"),date("d")-(date("w")?:7)+7,date("Y")));
}
$startTime = strtotime($weekStart);
$endTime = strtotime($weekEnd);
@@ -474,12 +474,12 @@ class Settle Extends Common{
if($timeLength == 1 || $timeLength == 2){
if($timeLength == 1){
//上周时间
$weekStart = date("Y-m-d H:i:s",mktime(0, 0 , 0,date("m"),date("d")-date("w")+1-7,date("Y")));
$weekEnd = date("Y-m-d H:i:s",mktime(23,59,59,date("m"),date("d")-date("w")+7-7,date("Y")));
$weekStart = date("Y-m-d H:i:s",mktime(0, 0 , 0,date("m"),date("d")-(date("w")?:7)+1-7,date("Y")));
$weekEnd = date("Y-m-d H:i:s",mktime(23,59,59,date("m"),date("d")-(date("w")?:7)+7-7,date("Y")));
}elseif($timeLength == 2){
//本周时间
$weekStart = date("Y-m-d H:i:s",mktime(0, 0 , 0,date("m"),date("d")-date("w")+1,date("Y")));
$weekEnd = date("Y-m-d H:i:s",mktime(23,59,59,date("m"),date("d")-date("w")+7,date("Y")));
$weekStart = date("Y-m-d H:i:s",mktime(0, 0 , 0,date("m"),date("d")-(date("w")?:7)+1,date("Y")));
$weekEnd = date("Y-m-d H:i:s",mktime(23,59,59,date("m"),date("d")-(date("w")?:7)+7,date("Y")));
}
$startTime = strtotime($weekStart);
$endTime = strtotime($weekEnd);