backup: 线上最终版本全量备份
包含所有线上运行的改动: - 代理编辑功能修复(码率/占成/返水率保存) - CORS跨域修复(Pcapi构造函数统一Origin) - 支付通道(ccpay/epay新增) - 代理报表洗码量显示 - AlinPay金额调整 - 代理/会员编辑页面优化 - 多语言更新
This commit is contained in:
@@ -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();
|
||||
|
||||
Reference in New Issue
Block a user