"上游cp公司", "2"=>"联运下游渠道公司" ]; public $CompanyBelong = [ "0"=>"下游内团", "1"=>"下游外团", "2"=>"下游分发", "3"=>"下游无", "9"=>"上游" ]; public $VerifyStatus=[ "-2"=>"撤销汇总", "-1"=>"管理员审核拒绝", "0"=>"未审批", "1"=>"管理员审核通过", "2"=>"已汇总" ]; public $ConfirmStatus=[ "0"=>"未发起", "1"=>"已发起", "2"=>"已确认" ]; public $admininfo; public $DBModel; public function _initialize() { $this->admininfo = $_SESSION['onethink_admin']['user_auth']; $this->DBModel = M("CompanyStatement","tab_"); parent::_initialize(); } public function lists() { $params = I('get.'); $page = $params['p'] ? intval($params['p']) : 1; $row = $params['row'] ? intval($params['row']) : 10; //权限分配 if(!IS_ROOT){ $this->OpAuthList= getModuleControllerAuth(); } $this->assign('menubtn',$this->menuAuth()); $map = [ "_string"=>"1=1" ]; if (isset($_REQUEST['time_start']) && isset($_REQUEST['time_end'])) { $time_start = strtotime($_REQUEST['time_start']); $time_end = strtotime($_REQUEST['time_end'])+ 86399; $map["_string"] = "( (statement_begin_time BETWEEN {$time_start} AND {$time_end}) OR (statement_end_time BETWEEN {$time_start} AND {$time_end}) )"; } elseif (isset($_REQUEST['time_start'])) { $time_start = strtotime($_REQUEST['time_start']); $map["_string"] = "( (statement_begin_time >= {$time_start} ) OR (statement_end_time >= {$time_start}) )"; } elseif (isset($_REQUEST['time_end'])) { $time_end = strtotime($_REQUEST['time_end'])+ 86399; $map["_string"] = "( (statement_begin_time <= {$time_end} ) OR (statement_end_time <= {$time_end}) )"; } if (isset($_REQUEST['time_start2']) && isset($_REQUEST['time_end2'])) { $map['op_time'] = ['between', [strtotime($_REQUEST['time_start2']), strtotime($_REQUEST['time_end2']) + 86399]]; } elseif (isset($_REQUEST['time_start2'])) { $map['op_time'] = ['EGT', strtotime($_REQUEST['time_start2'])]; } elseif (isset($_REQUEST['time_end2'])) { $map['op_time'] = ['ELT', strtotime($_REQUEST['time_end2']) + 86399]; } $typeflag = false; if (isset($_REQUEST['withdraw_type'])) { if($_REQUEST['withdraw_type'] == 1){ $typeflag = 1;//月结 $map["withdraw_type"] = 1; }else{ $typeflag = 2;//周结 $map["withdraw_type"] = ["in",[0,2]]; } if($_REQUEST['withdraw_type'] == 3){ $typeflag = 3;//特殊补点 $map["withdraw_type"] = 3; } } if (isset($_REQUEST['withdraw_type2'])) { if($_REQUEST['withdraw_type2'] == 2){ if($typeflag == 1){ //月结的补点找不到 $map['withdraw_type'] = 999; }else{ //周结的补点就是补点 $map['withdraw_type'] = 2; } }else{ if($typeflag == 1){//月结的正常=月结 $map['withdraw_type'] = 1; }elseif($typeflag == 2){//周结的正常=周结 $map['withdraw_type'] = 0; }else{//没选的正常是 非补点 $map['withdraw_type'] = ["in",[0,1]]; } } if($_REQUEST['withdraw_type2'] == 3){ if ($typeflag == 3 || !$typeflag) { $map["withdraw_type"] = 3; } else { $map["withdraw_type"] = 999; //两者不一搜索为空 } } else { if($typeflag == 3) { $map["withdraw_type"] = 999; //两者不一搜索为空 } } } //其他 if(isset($_REQUEST['company_type'])){ if($_REQUEST['company_type'] == 1){ $map['_string'] .= " AND company_belong='9'"; }else{ $map['_string'] .= " AND company_belong <> '9'"; } } if(isset($_REQUEST['company_belong'])){ $map['company_belong'] = $_REQUEST['company_belong']; } if(isset($_REQUEST['company_id'])){ $map['company_id'] = $_REQUEST['company_id']; } if(isset($_REQUEST['company_name'])){ $map['company_name'] =["LIKE","%{$_REQUEST['company_name']}%"]; } if(isset($_REQUEST['verify_status'])){ $map['verify_status'] = $_REQUEST['verify_status']; } if(isset($_REQUEST['confirm_status'])){ $map['confirm_status'] = $_REQUEST['confirm_status']; } // dd($map); // $this->checkListOrCountAuthRestMap($map);//导出权限 //条件end $data = M("company_statement","tab_") ->field("id,withdraw_type,company_name,company_belong,statement_begin_time,statement_end_time,statement_money,platform_amount,verify_status,verify_log,confirm_status,confirm_log,op_time,remark") ->where($map) ->order("statement_begin_time desc,id desc")->page($page,$row)->select(); foreach($data as $k => &$v) { $v['statement_begin_time'] = date('Y.m.d',$v['statement_begin_time']); $v['statement_end_time'] = date('Y.m.d',$v['statement_end_time']); $v['company_belong'] = $this->CompanyBelong[$v['company_belong']]; $v['op_time'] = date('Y.m.d H:i:s',$v['op_time']); $v["valid"] = "{$v['statement_begin_time']}-{$v['statement_end_time']}"; $v['withdraw_type_1'] = ($v['withdraw_type'] == 1 ? "月结" : ($v['withdraw_type'] == 3 ?"其他" : "周结")); $v['withdraw_type_2'] = ($v['withdraw_type'] == 2 ? "补点" : ($v['withdraw_type'] == 3 ?"特殊补点" : "正常结算")); $v['verify_log'] = json_decode($v['verify_log'], true); $v['confirm_log'] = json_decode($v['confirm_log'], true); if (isset($params['export'])) { $symbol = "\n"; } else { $symbol = "
"; } $v["create"]= "{$v['verify_log']['create_user']} {$symbol} {$v['verify_log']['create_time']}"; if(isset($v['verify_log']['admin_user'])){ if($v['verify_status'] == -1){ $ts = "管理员审核拒绝"; }else{ $ts = "管理员审核通过"; } $v["admin"]= "{$ts}({$v['verify_log']['admin_user']}) {$symbol} {$v['verify_log']['admin_time']}"; }else{ $v["admin"] = '--'; } if(isset($v['confirm_log']['launch_user'])){ $ts = "已发起"; $v["launch"]= "{$ts}({$v['confirm_log']['launch_user']}) {$symbol} {$v['confirm_log']['launch_time']}"; }else{ $v["launch"] = '--'; } if(isset($v['confirm_log']['confirm_user'])){ $ts = "已确认"; $v["confirm"]= "{$ts}({$v['confirm_log']['confirm_user']}) {$symbol} {$v['confirm_log']['confirm_time']}"; }else{ $v["confirm"] = '--'; } if(isset($v['verify_log']['pool_user'])){ if($v['verify_status'] == -2){ $ts = "撤销汇总"; $v["pool"]= "{$ts}({$v['verify_log']['pool_user']}){$symbol} {$v['verify_log']['pool_time']}"; }else{ $ts = "已汇总"; $v["pool"]= "{$ts}({$v['verify_log']['pool_user']}){$symbol}汇总单:{$v['verify_log']['pool_num']}{$symbol} {$v['verify_log']['pool_time']}"; } }else{ $v["pool"] = '--'; } $v['oplist'] = $this->OpAuth($v); } $count = M("company_statement","tab_")->field("count(id) count,IFNULL(SUM(CASE WHEN withdraw_type < 2 THEN platform_amount ELSE 0 END),0) as platform_amount,SUM(statement_money) as statement_money")->where($map)->find(); // dd($count); $params['p'] = $page; $params['row'] = $row; $page = set_pagination($count['count'], $row, $params); if ($page) { $this->assign('_page', $page); } $this->assign('data',$data); $this->assign('count',$count); $this->assign('CompanyType',$this->CompanyType); $this->assign('CompanyBelong',$this->CompanyBelong); $this->assign('VerifyStatus',$this->VerifyStatus); $this->assign('ConfirmStatus',$this->ConfirmStatus); $this->display(); } //查看 public function viewStatement() { if(!isset($_REQUEST['id'])){ $this->error('参数错误'); } $id = $_REQUEST['id']; //获取基本信息 $dbres = M("CompanyStatement","tab_")->where("id='{$id}'")->find(); $first_party_info = json_decode($dbres['first_party_info'],true); $second_party_info = json_decode($dbres['second_party_info'],true); $statement_info = json_decode($dbres['statement_info'],true); foreach ($statement_info as $key => $value) { if ($value['game_name'] == "罚款" ) { $dbres['pay_amount'] = $dbres['pay_amount'] + $statement_info[$key]['pay_amount']; $statement_info[$key]['pay_amount'] = "-"; } if ($value['game_name'] == "奖励") { $dbres['pay_amount'] = $dbres['pay_amount'] - $statement_info[$key]['pay_amount']; $statement_info[$key]['pay_amount'] = "-"; } } if($dbres['pay_type'] == 2){ $company = $second_party_info['partner']; $pyinfo = $second_party_info; $fkf_pyinfo = $first_party_info; }else{ $company = $first_party_info['partner']; $pyinfo = $first_party_info; $fkf_pyinfo = $second_party_info; } $senddata = array( "company"=>$company, "payinfo"=>$pyinfo, "fkf_payinfo"=>$fkf_pyinfo, "first_part_company"=>$first_party_info['partner'], "second_part_company"=>$second_party_info['partner'], "pay_type"=>$dbres['pay_type'], "withdraw_type"=>$dbres['withdraw_type'],//2补丁 "first_party_info"=>$first_party_info, "second_party_info"=>$second_party_info, "statement_info"=>$statement_info, "statement_count"=>array("pay_amount"=>$dbres['pay_amount'],"statement_money"=>$dbres['statement_money'],"big_ratio_money"=>convertAmountToCn($dbres['statement_money'])) ); $this->assign("data",$senddata); if($dbres["company_belong"] == 9){ //上游 $this->display("viewCpStatement"); }else{ if ($dbres["withdraw_type"] == 3) { if($dbres["company_type"] == 1){ $this->display("viewPcStatement"); }else{ if($dbres['company_type'] == 1) { $dbres['company_type_str'] = '公司'; } elseif($dbres['company_type'] == 2){ $dbres['company_type_str'] = '个人'; } if($dbres['company_belong'] == '0') { $dbres['company_belong_str'] = '内团'; } elseif($dbres['company_belong'] == '1') { $dbres['company_belong_str'] = '外团'; }elseif($dbres['company_belong'] == '2') { $dbres['company_belong_str'] = '分发联盟'; }elseif($dbres['company_belong'] == '3') { $dbres['company_belong_str'] = '无'; } $this->assign('dbres',$dbres); $this->display("viewPuComplementStatement"); } } else { if($dbres["company_type"] == 1){ $this->display("viewPcStatement"); }else{ $this->display("viewPuStatement"); } } } } //编辑 public function editStatement() { if ($_POST) { $params = I('post.'); if(!isset($params['id'])){ $this->error('参数错误'); } $params['first_party_info'] = json_encode($params['first_party_info'],JSON_UNESCAPED_UNICODE); $params['second_party_info'] = json_encode($params['second_party_info'],JSON_UNESCAPED_UNICODE); $params['statement_info'] = json_encode($params['statement_info'],JSON_UNESCAPED_UNICODE); $y = M("CompanyStatement", "tab_")->where("id='{$params['id']}'")->find(); if($y['first_party_info'] != $params['first_party_info'] || $y['second_party_info'] != $params['second_party_info'] || $y['statement_info'] != $params['statement_info']){ $params['verify_status'] = 0; $params['verify_log'] = json_encode(["create_user"=>$this->admininfo["username"],"create_time"=>date("Y.m.d H:i:s")]); $params['op_time'] = time(); M("CompanyStatement","tab_")->save($params); } $this->ajaxReturn(["code"=>0,"msg"=>"ok"]); }else{ if (!isset($_REQUEST['id'])) { $this->error('参数错误'); } $id = $_REQUEST['id']; //获取基本信息 $dbres = M("CompanyStatement", "tab_")->where("id='{$id}'")->find(); $dbres['first_party_info'] = json_decode($dbres['first_party_info'], true); $dbres['second_party_info']= json_decode($dbres['second_party_info'], true); $dbres['statement_info'] = json_decode($dbres['statement_info'], true); if(is_array($dbres['statement_info'])) { foreach ($dbres['statement_info'] as $key => $value) { if ($value['game_name'] == "罚款" || $value['game_name'] == "奖励") { $dbres['statement_info'][$key]['pay_amount'] = "-"; } } } $this->assign("data", $dbres); if ($dbres["company_belong"] == 9) { //上游 $this->display("editCpStatement"); } else { if ($dbres["withdraw_type"] == 3) { if($dbres["company_type"] == 1){ $this->display("editPcComplementStatement"); }else{ if($dbres['pay_type'] == 2){ $payinfo = $dbres['second_party_info']; $payinfo['type'] = "second_party_info"; }else{ $payinfo = $dbres['first_party_info']; $payinfo['type'] = "first_party_info"; } $this->assign("payinfo", $payinfo); $this->display("editPuComplementStatement"); } } else { if($dbres["company_type"] == 1){ $this->display("editPcStatement"); }else{ if($dbres['pay_type'] == 2){ $payinfo = $dbres['second_party_info']; $payinfo['type'] = "second_party_info"; }else{ $payinfo = $dbres['first_party_info']; $payinfo['type'] = "first_party_info"; } $this->assign("payinfo", $payinfo); $this->display("editPuStatement"); } } } } } public function delStatement(){ if(!isset($_REQUEST['ids'])) $this->error("参数错误"); $ids = $_REQUEST['ids']; // $dbres = $this->DBModel->where("id in ({$ids}) and verify_status = 0")->delete(); $dbres = $this->DBModel->where("id in ({$ids})")->select(); foreach ($dbres as $key=>$value) { if($value['withdraw_type'] !=3) { $this->DBModel->where("id = {$value['id']} and verify_status = 0")->delete(); } else { $this->DBModel->where("id = {$value['id']} and verify_status != 2")->delete(); } } addOperationLog(['op_type'=>2,'key'=>$ids,"op_name"=>"删除结算单",'url'=>U('lists')]); $this->ajaxReturn(array( 'status' => 1, "info"=>"删除成功" )); } //审批通过 public function adminAgree(){ $this->setVerifyStatus(0,1,"admin"); } public function adminRefuse(){ $this->setVerifyStatus(0,-1,"admin"); } public function launch(){ if(!isset($_REQUEST['ids'])) $this->error("参数错误"); $ids = $_REQUEST['ids']; $dbres = $this->DBModel->field("id,confirm_status,confirm_log")->where("id in ({$ids})")->select(); foreach($dbres as $k=>&$v){ if($v['confirm_status'] != 0) continue; $v['confirm_log'] = json_decode($v['confirm_log'],true); $v['confirm_log']['launch_user']=$this->admininfo["username"]; $v['confirm_log']['launch_time']=date("Y.m.d H:i:s"); $v['confirm_log'] = json_encode($v['confirm_log']); $v['confirm_status']=1; // $v['op_time'] = time(); $this->DBModel->save($v); addOperationLog(['op_type'=>1,'key'=>$v['id'],"op_name"=>"发起确认",'url'=>U('lists')]); } $this->ajaxReturn(array( 'status' => 1, "info"=>"对外发起成功" )); } protected function setVerifyStatus($old_status,$change_status,$op_pre) { if(!isset($_REQUEST['ids'])) $this->error("参数错误"); $ids = $_REQUEST['ids']; $dbres = $this->DBModel->field("id,verify_status,verify_log")->where("id in ({$ids})")->select(); foreach($dbres as $k=>&$v){ if($v['verify_status'] != $old_status) continue; $v['verify_log'] = json_decode($v['verify_log'],true); $v['verify_log'][$op_pre.'_user']=$this->admininfo["username"]; $v['verify_log'][$op_pre.'_time']=date("Y.m.d H:i:s"); $v['verify_log'] = json_encode($v['verify_log']); $v['verify_status']=$change_status; $v['op_time'] = time(); $this->DBModel->save($v); $opname = $this->VerifyStatus[$change_status]; addOperationLog(['op_type'=>1,'key'=>$v['id'],"op_name"=>$opname,'url'=>U('lists')]); } $this->ajaxReturn(array( 'status' => 1, "info"=>$opname."成功" )); } //保存备注 public function saveRemark(){ if(!isset($_REQUEST['id'])) $this->error("参数错误"); $id = $_REQUEST['id']; $remark = $_REQUEST['remark']; $this->DBModel->where("id = '{$id}'")->save(['remark'=>$remark]); $this->ajaxReturn(array( 'status' => 1, 'info' => "操作成功" )); } //重算 public function updateStatement() { if(!isset($_REQUEST['ids'])) $this->error("参数错误"); $ids = $_REQUEST['ids']; $dbres = $this->DBModel->field("id,verify_status,verify_log,withdraw_type")->where("id in ({$ids})")->select(); foreach($dbres as $k=>&$v){ // if(in_array($v['verify_status'],[3,4])) continue; //合作方确认后不进行重算 //重算 $res = A("CompanyStatementSet")->updateCompanyStatementData($v['id'],$this->admininfo["username"]); if($res === false){ $this->ajaxReturn(array( 'status' => 0, "info"=>"重算金额错误" )); } } $this->ajaxReturn(array( 'status' => 1, "info"=>"重算金额成功" )); } //导出 public function export() { if(!isset($_REQUEST['id'])) $this->error("参数错误"); $id = $_REQUEST['id']; $data = M("CompanyStatement","tab_")->where(['id' => $id])->find(); $data['first_party_info'] = json_decode($data['first_party_info'], 1);//甲方 $data['second_party_info'] = json_decode($data['second_party_info'], 1);//乙方 $data['statement_info'] = json_decode($data['statement_info'], 1);//结算记录 if(is_array($data['statement_info'])) { foreach ($data['statement_info'] as $key => $value) { if ($value['game_name'] == "罚款" || $value['game_name'] == "奖励") { $data['statement_info'][$key]['pay_amount'] = "-"; } } } //收款方 $all_sum_money = $data['pay_amount'];//合计平台总额 $all_pay_amount = $data['statement_money'];//合计结算金额 $big_all_sum_money = convertAmountToCn($data['statement_money']);//大写 if($data['pay_type'] == 2){ $data['receive_company'] = $data['second_party_info'];//收款方 $data['pay_company'] = $data['first_party_info']; }else{ $data['receive_company'] = $data['first_party_info']; $data['pay_company'] = $data['second_party_info']; } if($data['receive_company']['invoice_type'] == 0){ $data['receive_company']['invoice_type']="无"; } elseif($data['receive_company']['invoice_type'] == 1){ $data['receive_company']['invoice_type']="专票"; } else{ $data['receive_company']['invoice_type']="普票"; } if($data['company_name'] == $data['first_party_info']['partner']){ $data['my_company'] = $data['second_party_info']['partner']; }else{ $data['my_company'] = $data['first_party_info']['partner']; } if ($data['company_belong'] == 9) {//上游 excelUpStreamTemplate($data, $all_sum_money, $all_pay_amount, $big_all_sum_money); } else { //下游 // if($dbres["company_type"] == 1){ if ($data['withdraw_type'] == 3 && $data['company_type'] == 2) { $dbres = M("CompanyStatement","tab_")->where(['id' => $id])->find(); if($dbres['pay_type'] == 2){ //乙方收款 $dbres['company_info'] = $dbres['second_party_info']; }else{ $dbres['company_info'] = $dbres['first_party_info']; } unset($dbres['second_party_info']); unset($dbres['first_party_info']); $dbres=[$dbres]; $this->assign("title","下游个人特殊补点"); $this->exportSpecialComplement($dbres,1); } else if ($data['withdraw_type'] == 3 && $data['company_type'] != 2){ excelSpecialComplementEmplate($data, $all_sum_money, $all_pay_amount, $big_all_sum_money); } else { excelDownStreamTemplate($data, $all_sum_money, $all_pay_amount, $big_all_sum_money); } // }else{ // $data['statement_begin_time'] = date('Ymd',$data['statement_begin_time']); // $data['statement_end_time'] = date('Ymd',$data['statement_end_time']); // $data['statement_count'] = count($data['statement_info']); // // dd($data); // $this->assign("data",$data); // $this->display("exportPuStatement"); // } } } public function exportSpecialComplement(&$infolist,$is_export) { $line = 1; $count = []; //获取对接人 foreach($infolist as $k=>&$v){ $infolist[$k]['reward'] = 0; $infolist[$k]['fine'] = 0; $v['statement_info'] = json_decode($v['statement_info'],true); $v['company_info'] = json_decode($v['company_info'],true); $v['statement_begin_time'] = date('Y.m.d',$v['statement_begin_time']); $v['statement_end_time'] = date('Y.m.d',$v['statement_end_time']); $v['company_info']['nickname'] = $v['statement_info'][0]['real_name']; if (isset($v['company_info']['company_type'])) { if($v['company_info']['company_type'] == 1) { $v['company_info']['company_type_str'] = '公司'; } elseif($v['company_info']['company_type'] == 2){ $v['company_info']['company_type_str'] = '个人'; } } if (isset($v['company_info']['company_belong'])) { $v['company_info']['company_belong_str'] = getCompanyBlong($v['company_info']['company_belong']); } if (isset($v['company_info']['develop_type'])) { $v['company_info']['company_relation_str'] = getCompanyRelation($v['company_info']['develop_type']); } $cline = $line+1; if($is_export){ $v['statement_money'] = "=ROUND("; } $row = 0; foreach($v['statement_info'] as $ke=>&$va){ $va['row'] = count($va['game_list']); $row += count($va['game_list']); foreach($va['game_list'] as $key=>&$val){ $line ++; if($v['withdraw_type'] != 3) { if(isset($val['ratio'])){ $val['increment_ratio'] = 0; }else{ $val['ratio'] = 0; } } if($is_export){ if($v['withdraw_type'] != 3) { $val['sum_money'] = "=ROUND(K{$line}*(L{$line}+M{$line}),2)"; } else { $val['sum_money'] = "=ROUND(K{$line}*(M{$line}),2)"; } // $val['sum_money'] = "=J{$line}*(K{$line}+L{$line})"; $v['statement_money'] .= "N{$line}+"; }else{ $count['platform_amount'] += $val['pay_amount']; $count['sum_money'] += $val['sum_money']; } } // if($is_export){ // //J3*(K3+L3)+M3-N3 // if($va['statement_type'] > 0){ //罚款服务器费用 // $va['sum_money'] = "=J{$line}"; // }else{ // $va['sum_money'] = "=J{$line}*(K{$line}+L{$line})+M{$line}-N{$line}"; // } // }else{ // $count['platform_amount'] += $va['pay_amount']; // $count['sum_money'] += $va['sum_money']; // } } $v['row'] = $row; if($is_export){ if($v['withdraw_type'] != 3) { $v['statement_money'] .="N{$cline}-O{$cline},2)"; } else { $v['statement_money'] = substr($v['statement_money'],0,strlen($v['statement_money'])-1).",2)"; } // dump($v['statement_money']);die(); } } if($is_export){ $count["platform_amount"] = "=ROUND(SUM(K2:K".$line."),2)"; $count["sum_money"] = "=ROUND(SUM(Q2:Q".$line."),2)"; } $this->assign("data",$infolist); $this->assign("count",$count); $this->assign("is_export",$is_export); $this->display("CompanyStatementPool/viewPuPool"); } //汇总 public function pool() { if(!isset($_REQUEST['ids'])) $this->error("参数错误"); $ids = $_REQUEST['ids']; $dbres = $this->DBModel->field("*")->where("id in ({$ids})")->select(); $check = []; $is_complement = 0; foreach($dbres as $key => $value) { $check[$value['withdraw_type']] = 1; if ($value['withdraw_type'] == 3) { $is_complement = 1; } } if (count($check)>1&&$is_complement) { $this->error("特殊补点不能与其他结算单一起汇总"); } //分单 $basedata = [ "pay_amount"=>0, "statement_money"=>0, "lack_statement_money"=>0, "platform_amount"=>0, "lack_platform_amount"=>0, "create_lack_ids"=>[], "del_lack_ids"=>[], "statement_ids"=>[], "info_ids"=>[], "statement_begin_time"=>0, "statement_end_time"=>0, "fine"=>0, "reward"=>0, "verify_status"=>0, "verify_log"=>json_encode(["create_user"=>$this->admininfo["username"],"create_time"=>date("Y.m.d H:i:s")]), "op_time"=>time(), "company_list"=>[] ]; $datas = ["up","down","complement_down","complement_user"]; //初始化数据 foreach($datas as $k=>$v){ if($v =="up"){ $basedata['company_type']=3; $basedata['is_payment']=1; } if($v =="down"){ $basedata['company_type']=1; $basedata['is_payment']=1; } if($v =="complement_down") { $basedata['company_type']=1; $basedata['is_payment']=1; } if($v =="complement_user") { $basedata['company_type']=2; $basedata['is_payment']=1; } $datas[$v]=$basedata; unset($datas[$k]); } foreach ($dbres as $k=>$v) { if($v['verify_status'] == 1 || $v['verify_status'] == -2){ if($v['company_belong'] == 9){ //上游 $this->setDf($datas['up'],$v); } elseif($v['withdraw_type'] == 3&&$v['company_type']==1){ $this->setDf($datas['complement_down'],$v); } elseif($v['withdraw_type'] == 3&&$v['company_type']==2){ $this->setDf($datas['complement_user'],$v); } else { $this->setDf($datas['down'],$v); } } } $Pool = M("company_statement_pool","tab_"); $Statemen = M("company_statement","tab_"); foreach ($datas as $k => $v) { if(count($v['company_list']) <= 0){continue;} $v['statement_num'] = "PL_".date('Ymd').date('His').sp_random_num(3); //保存公司信息 $company_list = $v['company_list']; foreach ($company_list as $ke => $va) { $this->addStatementInfo($va,$k,$v); } if(empty($v['create_lack_ids']) && empty($v['del_lack_ids']) && empty($v['info_ids'])){ continue;} $v['statement_ids'] = implode(",",$v['statement_ids']); $v['create_lack_ids'] = implode(",",$v['create_lack_ids']); $v['del_lack_ids'] = implode(",",$v['del_lack_ids']); $info = implode(",",$v['info_ids']); unset($v['info_ids']); unset($v['company_list']); if($v['statement_money'] == 0){ $v['verify_status'] = 5; $v['verify_log'] = json_encode(["create_user"=>$this->admininfo["username"],"create_time"=>date("Y.m.d H:i:s"),"verify_user"=>"system","verify_time"=>date("Y.m.d H:i:s"),"payment_user"=>"system","payment_time"=>date("Y.m.d H:i:s")]); } //判断周月结 if(($v["statement_end_time"]-$v['statement_begin_time']) > 7*24*3600){ $v["withdraw_type"] = 1; }else{ $v["withdraw_type"] = 0; } if ($is_complement) { $v["withdraw_type"] = 3; } $pool_id = $Pool->add($v); if($pool_id == false){ $this->ajaxReturn(array('status' => 0,"info"=>"汇总失败")); } if(!empty($info)){ $save["pool_id"]=$pool_id; M("company_statement_info","tab_")->where("id in ({$info})")->save($save); } if(!empty($v['del_lack_ids'])){ M("company_lack_statement_info","tab_")->where("id in ({$v['del_lack_ids']})")->save(["is_pool"=>1]); } //修改结算单规则 $this->updatePoolVerifyStatus($v['statement_ids'],2,"pool",$v['statement_num']); } $this->ajaxReturn(array( 'status' => 1, "info"=>"汇总成功" )); } //结算单规则 protected function updatePoolVerifyStatus($ids,$change_status,$op_pre,$num){ $dbres = $this->DBModel->field("id,verify_status,verify_log")->where("id in ({$ids})")->select(); foreach($dbres as $k=>&$v){ // if($v['verify_status'] != $old_status) continue; $v['verify_log'] = json_decode($v['verify_log'],true); $v['verify_log'][$op_pre.'_user']=$this->admininfo["username"]; $v['verify_log'][$op_pre.'_time']=date("Y.m.d H:i:s"); $v['verify_log'][$op_pre.'_num']=$num; $v['verify_log'] = json_encode($v['verify_log']); $v['verify_status']=$change_status; $v['op_time']=time(); $this->DBModel->save($v); } } //保存 protected function addStatementInfo($va,$k,&$v){ $StatementInfo = M("company_statement_info","tab_"); $company_info = $va['company_info']; $LackStatement = M("company_lack_statement_info","tab_"); $no_pool_money = 300; //统一比例字段 if($k == "up" || $k=="ups"){ $no_pool_money = 500; foreach ($va['statement_info'] as $key => &$value) { if($company_info['pay_type'] == 2){ $value["ratio"] = $value["second_ratio"]; }else{ $value["ratio"] = $value["first_ratio"]; } unset($value["first_ratio"]); unset($value["second_ratio"]); } } if($va['is_payment'] == 1){ $is_payment = 1; $verify_status = 0; }else{ $is_payment = 2; $verify_status = 2; } //创建基础未满基础信息 if($va['platform_amount'] < $no_pool_money && $va['withdraw_type']!=3){ $lackcompany =[ "company_id"=>$company_info['id'], "company_type"=>$v['company_type'], "company_name"=>$company_info['partner'], "company_info"=>json_encode($company_info,JSON_UNESCAPED_UNICODE), "statement_money"=>$va['statement_money'], "pay_amount"=>$va['pay_amount'], "platform_amount"=>$va['platform_amount'], "fine"=>$va['fine'], "reward"=>$va['reward'], "statement_begin_time"=>$v['statement_begin_time'], "statement_end_time"=>$v['statement_end_time'], "is_payment"=>$is_payment, "statement_pool_num"=>$v['statement_num'], "statement_info"=>json_encode($va['statement_info'],JSON_UNESCAPED_UNICODE), ]; } //整合数据 if ($k!='complement_down' && $k != 'complement_user') { $lsres = $LackStatement->where("company_id={$company_info['id']} and is_pool = 0")->select(); } else { $lsres = $LackStatement->where("company_id={$company_info['id']} and is_pool = 0 and withdraw_type = 3")->select(); } $del_lack_ids = []; if(count($lsres) > 0){ //进行聚合 foreach($lsres as $key=>$val){ $del_lack_ids[] = $val['id']; $va['statement_money'] += $val['statement_money']; $va['pay_amount'] += $val['pay_amount']; $va['fine'] += $val['fine']; $va['reward'] += $val['reward']; $va['platform_amount'] += $val['platform_amount']; $va['statement_info'] = array_merge($va['statement_info'],json_decode($val['statement_info'],true)); $last_names = array_column($va['statement_info'],'game_name'); array_multisort($last_names,SORT_DESC,SORT_STRING,$va['statement_info']); } } if($va['platform_amount'] < $no_pool_money&&($k!='complement_down' && $k != 'complement_user')){ //依旧小于不结算金额存旧版 if($lackcompany['pay_amount'] != 0){ $lask_id = $LackStatement->add($lackcompany); $v['create_lack_ids'][] =$lask_id; $v['lack_statement_money'] +=$lackcompany['statement_money']; $v['lack_platform_amount'] +=$lackcompany['platform_amount']; } }else{ if($va['pay_amount'] != 0){ //存成功 $company =[ "pool_id"=>0, "company_id"=>$company_info['id'], "company_type"=>$v['company_type'], "company_name"=>$company_info['partner'], "company_info"=>json_encode($company_info,JSON_UNESCAPED_UNICODE), "fine"=>$va['fine'], "reward"=>$va['reward'], "statement_money"=>$va['statement_money'], "pay_amount"=>$va['pay_amount'], "platform_amount"=>$va['platform_amount'], "statement_begin_time"=>$v['statement_begin_time'], "statement_end_time"=>$v['statement_end_time'], "statement_info"=>json_encode($va['statement_info'],JSON_UNESCAPED_UNICODE), "statement_num"=>$va['statement_num'], "verify_status"=>$verify_status, "withdraw_type"=>$va['withdraw_type'], ]; $companyid = $StatementInfo->add($company); $v['info_ids'][] =$companyid; $v['del_lack_ids'] =array_merge($v['del_lack_ids'],$del_lack_ids); $v['statement_money'] +=$va['statement_money']; $v['pay_amount'] +=$va['pay_amount']; $v['platform_amount'] +=$va['platform_amount']; $v['fine'] +=$va['fine']; $v['reward'] +=$va['reward']; } } } //设定组合的子操作 protected function setDf(&$savedata,$v) { $savedata['statement_ids'][] = $v['id']; unset($v['id']); $v['statement_info'] = json_decode( $v['statement_info'],true); $fine = 0; $reward = 0; foreach($v['statement_info'] as $ka=>$va){ if($va['statement_type'] == 2){ //奖励 // $savedata['reward'] += $va['sum_money']; $reward += $va['sum_money']; unset($v['statement_info'][$ka]); }else if($va['statement_type'] == 1){ // $savedata['fine'] += $va['sum_money']; $fine += $va['sum_money']; unset($v['statement_info'][$ka]); } } if(isset($savedata['company_list'][$v['company_id']])){ //存在游戏合并 $a = &$savedata['company_list'][$v['company_id']]; $a['fine'] += $fine; $a['reward'] += $reward; $a['statement_info'] = array_merge($a['statement_info'],$v['statement_info']); // dump($a['statement_info']); $a['platform_amount'] += $v['platform_amount']; $a['pay_amount'] += $v['pay_amount']; $a['statement_money'] += $v['statement_money']; }else{ if($v['pay_type'] == 2){ //乙方收款 $v['company_info'] =json_decode($v['second_party_info'],true); $v['company_info']['pay_type'] = 2; }else{ $v['company_info'] = json_decode($v['first_party_info'],true); $v['company_info']['pay_type'] = 1; } if (isset($v['company_info']['company_type'])) { if($v['company_info']['company_type'] == 1) { $v['company_info']['company_type_str'] = '公司'; } elseif($v['company_info']['company_type'] == 2){ $v['company_info']['company_type_str'] = '个人'; } } if (isset($v['company_info']['company_belong'])) { $v['company_info']['company_belong_str'] = getCompanyBlong($v['company_info']['company_belong']); } if (isset($v['company_info']['develop_type'])) { $v['company_info']['company_relation_str'] = getCompanyRelation($v['company_info']['develop_type']); } //先分配好订单号,防止重复提交 $tdata = [ "company_info"=>$v['company_info'], "company_name"=>$v['company_name'], "platform_amount"=>$v['platform_amount'], "pay_amount"=>$v['pay_amount'], "statement_money"=>$v['statement_money'], "fine"=>$fine, "reward"=>$reward, "statement_info"=>$v['statement_info'], "statement_num"=>"JS_".date('Ymd').date('His').$v['company_id'].sp_random_string(5), "is_payment"=>$v['is_payment'], "withdraw_type"=>$v['withdraw_type'], ]; $savedata['company_list'][$v['company_id']] = $tdata; } // $savedata['pay_amount'] += $v['pay_amount']; // $savedata['statement_money'] += $v['statement_money']; // $savedata['platform_amount'] += $v['platform_amount']; if($savedata['statement_begin_time'] == 0){ $savedata['statement_begin_time'] = $v['statement_begin_time']; }elseif($v['statement_begin_time'] < $savedata['statement_begin_time']){ $savedata['statement_begin_time'] = $v['statement_begin_time']; } if($savedata['statement_end_time'] == 0){ $savedata['statement_end_time'] = $v['statement_end_time']; }elseif($v['statement_end_time'] > $savedata['statement_end_time']){ $savedata['statement_end_time'] = $v['statement_end_time']; } } //新增结算 public function getNewStatement() { //获取要结算的公司及日期 $senddata = [ "up_company_id"=>[], "dowm_company_id"=>[], ]; $statement = M("company_statement","tab_")->field("count(id) count,company_id,company_belong")->group("company_id,company_belong")->select(); $up_company_id = []; $dowm_company_id= []; foreach( $statement as $k=>$v){ if($v['company_belong'] == 9){ $up_company_id[] = $v['company_id']; }else{ $dowm_company_id[]= $v['company_id']; } }; //获取上游 if(empty($up_company_id)){ $upwhere = "1=1"; }else{ $up_company_id =implode(",",$up_company_id); $upwhere = "(first_company_type = 1 AND first_company_id NOT IN ({$up_company_id}) ) OR ( second_company_type = 1 AND second_company_id NOT IN ({$up_company_id}) )"; } $uprelation = M("company_relation","tab_")->field("first_company_id,first_company_type,second_company_id,second_company_type")->where($upwhere)->select(); foreach($uprelation as $k=>$v){ if($v['first_company_type'] == 0){ $senddata["up_company_id"][] = $v['second_company_id']; }else{ $senddata["up_company_id"][] = $v['first_company_id']; } } //获取下游 if(empty($dowm_company_id)){ $downwhere = "1=1"; }else{ $dowm_company_id =implode(",",$dowm_company_id); $downwhere = "(first_company_type = 2 AND first_company_id NOT IN ({$dowm_company_id}) ) OR ( second_company_type = 2 AND second_company_id NOT IN ({$dowm_company_id}) )"; } $downrelation = M("company_relation","tab_")->field("first_company_id,first_company_type,second_company_id,second_company_type")->where($downwhere)->select(); foreach($downrelation as $k=>$v){ if($v['first_company_type'] == 0){ $senddata["dowm_company_id"][] = $v['second_company_id']; }else{ $senddata["dowm_company_id"][] = $v['first_company_id']; } } if(count($senddata["up_company_id"]) < 1 && count($senddata["dowm_company_id"]) < 1){ $this->ajaxReturn(["error"=>'无新增关系,无需重算']); } $senddata['up_company_id'] = implode(",",$senddata['up_company_id']); $senddata['dowm_company_id'] = implode(",",$senddata['dowm_company_id']); //获取要结算的日期 $start = strtotime('-1 month'); $end = time(); $temp_datelist = get_date_list($start,$end,1); $datelist = []; foreach($temp_datelist as $k=>$v){ $w = (int)date("w",strtotime($v)); $d = (int)date("d",strtotime($v)); if($w == 1 || $d == 1){ $datelist[] = $v; } } $senddata['datelist'] = $datelist; $senddata['count'] = count($datelist); $this->ajaxReturn(["success"=>'ok',"data"=>$senddata]); } public function updateNewStatement() { $up_company_id = $_REQUEST['up_company_id']; $dowm_company_id = $_REQUEST['dowm_company_id']; $date = $_REQUEST['date']; $CompanyStatementSet = A("CompanyStatementSet"); // dd($CompanyStatementSet); $stime = strtotime($date); $w = (int)date("w",strtotime($date)); $d = (int)date("d",strtotime($date)); if($w == 1){ if(!empty($up_company_id)){ $CompanyStatementSet->cpStatement(0,$stime,$up_company_id,false); } if(!empty($dowm_company_id)){ $CompanyStatementSet->promoteCompanyStatement(0,$stime,$dowm_company_id,false); } } if($d == 1){ if(!empty($up_company_id)){ $CompanyStatementSet->cpStatement(1,$stime,$up_company_id,false); $CompanyStatementSet->cpStatement(2,$stime,$up_company_id,false); } if(!empty($dowm_company_id)){ $CompanyStatementSet->promoteCompanyStatement(1,$stime,$dowm_company_id,false); $CompanyStatementSet->promoteCompanyStatement(2,$stime,$dowm_company_id,false); } } $this->ajaxReturn(array("success"=>"ok","data"=>[])); } public function viewSpecialComplement() { $this->display(); } public function addSpecialComplement() { $map = []; $radioMap = []; $relation_game_id = implode(',',$_REQUEST['relation_game_id']); $relation_game_data = $_REQUEST['relation_game_id']; if ($_REQUEST['relation_game_id']) { $relation_game_id = implode(',',$_REQUEST['relation_game_id']); $map['relation_game_id'] = ['in',$relation_game_id]; $radioMap['tab_company_game_ratio.relation_game_id'] = ['in',$relation_game_id]; } if ($_REQUEST['company_id']) { $promote_id = M("promote","tab_") ->field("id") ->where(['company_id'=>$_REQUEST['company_id']]) ->select(); if ($promote_id) { $map['promote_id'] = ['in',array_column($promote_id,'id')]; } else { $map['promote_id'] = '-1'; } $radioMap['company_id'] = $_REQUEST['company_id']; } $start_time = strtotime($_REQUEST['time_start']); $end_time = strtotime($_REQUEST['time_end']) + 86399; $check_add = M("company_statement","tab_")->field("statement_begin_time,statement_end_time,statement_info,company_type")->where(['company_id'=>$_REQUEST['company_id'],'withdraw_type'=>3])->select(); foreach ($check_add as $key => $value) { // if ($value['statement_end_time'] >= $start_time && $value['statement_end_time']<=$end_time // ||$value['statement_begin_time']>=$start_time && $value['statement_begin_time']<=$end_time // ||$value['statement_begin_time']<=$start_time && $value['statement_end_time'] >= $end_time) // { $statementInfo = json_decode($value['statement_info'],true);; if ($value['company_type'] == 2) { foreach ($statementInfo as $sk => $sv) { $statementInfos = $sv['game_list']; foreach ($statementInfos as $k => $v) { if (strtotime(str_replace('.','-',$v['statement_end_time'])) >= $start_time && strtotime(str_replace('.','-',$v['statement_end_time']))<=$end_time ||strtotime(str_replace('.','-',$v['statement_begin_time']))>=$start_time && strtotime(str_replace('.','-',$v['statement_begin_time']))<=$end_time ||strtotime(str_replace('.','-',$v['statement_begin_time']))<=$start_time && strtotime(str_replace('.','-',$v['statement_end_time'])) >= $end_time) { if (in_array($v['relation_game_id'], $relation_game_data)) { $this->ajaxReturn(['status' => 0, 'data' => [], 'msg' => "《{$v['game_name']}》在日期:{$_REQUEST['time_start']}-{$_REQUEST['time_end']}有结算过的部分,请重新选择"]); } } } } } else { foreach ($statementInfo as $k => $v) { if (strtotime(str_replace('.','-',$v['statement_end_time'])) >= $start_time && strtotime(str_replace('.','-',$v['statement_end_time']))<=$end_time ||strtotime(str_replace('.','-',$v['statement_begin_time']))>=$start_time && strtotime(str_replace('.','-',$v['statement_begin_time']))<=$end_time ||strtotime(str_replace('.','-',$v['statement_begin_time']))<=$start_time && strtotime(str_replace('.','-',$v['statement_end_time'])) >= $end_time) { if (in_array($v['relation_game_id'], $relation_game_data)) { $this->ajaxReturn(['status' => 0, 'data' => [], 'msg' => "《{$v['game_name']}》在日期:{$_REQUEST['time_start']}-{$_REQUEST['time_end']}有结算过的部分,请重新选择"]); } } } } // } } if (isset($_REQUEST['time_start']) && isset($_REQUEST['time_end'])) { $map['payed_time'] = ['between', [$start_time, $end_time]]; $radioMap['_string'] = "(begin_time>{$start_time} and begin_time<{$end_time}) or (end_time>{$start_time} and (end_time<{$end_time} and end_time!=0)) or (begin_time<{$start_time} and end_time>{$end_time})"; } elseif (isset($_REQUEST['time_start'])) { $map['payed_time'] = ['GT', $start_time]; $radioMap['_string'] = "end_time > {$start_time}"; } elseif (isset($_REQUEST['time_end'])) { $map['payed_time'] = ['LT', $end_time]; $radioMap['_string'] = "start_time < {$end_time}"; } $map['tab_spend.pay_status'] = 1; // $map['pay_way'] = ['egt',0]; $data = M("spend","tab_") ->field("pay_amount,relation_game_id,relation_game_name,payed_time") ->join("left join tab_game game on tab_spend.game_id=game.id") ->where($map) ->select(false); //默认游戏模板比例 $gameRatioMould = M("game_ratio_mould","tab_") ->field("ratio,turnover_ratio,relation_game_id") ->where(['relation_game_id'=>['in',$relation_game_id],'company_belong'=>$_REQUEST['company_type']]) ->select(); //各个游戏的模板比例 $handleRadioMould = []; foreach($gameRatioMould as $key => $value) { $handleRadioMould[$value['relation_game_id']]['ratio'] = $value['ratio']; $handleRadioMould[$value['relation_game_id']]['turnover_ratio'] = $value['turnover_ratio']; } $game_data = M("game","tab_")->field("relation_game_id,relation_game_name")->group("relation_game_id")->select(false); $radioData = M("company_game_ratio","tab_") ->field("tab_company_game_ratio.*,game.relation_game_name") ->join("left join ({$game_data}) game on tab_company_game_ratio.relation_game_id=game.relation_game_id") ->where($radioMap) ->order("begin_time ASC") ->select(); $handleRadioData = []; foreach($radioData as $key => $value) { $handleRadioData[$value['relation_game_id']] = $value['relation_game_name']; } $companyData = M("promote_company","tab_") ->field("company_name") ->where(['id'=>$_REQUEST['company_id']]) ->find(); $num = 0; $handleData = []; foreach ($relation_game_data as $rkey => $rvalue) { if (!$handleRadioData[$rvalue]) { $game_name = M("game","tab_") ->field("relation_game_id,relation_game_name") ->where(['relation_game_id'=>['in',$rvalue]]) ->find(); $handleData[$_REQUEST['company_id']]['company_id'] = $_REQUEST['company_id']; $handleData[$_REQUEST['company_id']]['company_name'] = $companyData['company_name']; $handleData[$_REQUEST['company_id']]['begin_time'][] = strtotime(I('time_start')); $handleData[$_REQUEST['company_id']]['end_time'][] = strtotime(I('time_end')) + 86399; $handleData[$_REQUEST['company_id']]['relation_game_id'][] = $rvalue; $handleData[$_REQUEST['company_id']]['relation_game_name'][] = $game_name['relation_game_name']; $handleData[$_REQUEST['company_id']]['ratio'][] = $handleRadioMould[$rvalue]['ratio']?$handleRadioMould[$rvalue]['ratio']:0; $handleData[$_REQUEST['company_id']]['turnover_ratio'][] = $handleRadioMould[$rvalue]['turnover_ratio']; } } foreach ($relation_game_data as $rk => $rv) { unset($radioMap['tab_company_game_ratio.relation_game_id']); $radioMap['tab_company_game_ratio.relation_game_id'] = $rv; $radioGameRatios = M("company_game_ratio","tab_") ->field("tab_company_game_ratio.*,game.relation_game_name") ->join("left join ({$game_data}) game on tab_company_game_ratio.relation_game_id=game.relation_game_id") ->where($radioMap) ->order("begin_time ASC") ->select(); foreach ($radioGameRatios as $key => $value) { if (strtotime(I('time_start')) <= $value['begin_time']) { $handleData[$_REQUEST['company_id']]['begin_time'][] = $value['begin_time']; } else { $handleData[$_REQUEST['company_id']]['begin_time'][] = strtotime(I('time_start')); } if (strtotime(I('time_end')) > $value['end_time'] && $value['end_time']!=0) { $handleData[$_REQUEST['company_id']]['end_time'][] = $value['end_time']; } else { $handleData[$_REQUEST['company_id']]['end_time'][] = strtotime(I('time_end')) + 86399; } $handleData[$_REQUEST['company_id']]['company_id'] = $_REQUEST['company_id']; $handleData[$_REQUEST['company_id']]['company_name'] = $companyData['company_name']; $handleData[$_REQUEST['company_id']]['relation_game_id'][] = $value['relation_game_id']; $handleData[$_REQUEST['company_id']]['relation_game_name'][] = $value['relation_game_name']; $handleData[$_REQUEST['company_id']]['ratio'][] = $value['ratio']; $handleData[$_REQUEST['company_id']]['turnover_ratio'][] = $value['turnover_ratio']; $num++; //如果结算时间小于比例开始时间 if ($key == 0) { if (strtotime(I('time_start')) < $value['begin_time']) { $handleData[$_REQUEST['company_id']]['company_id'] = $_REQUEST['company_id']; $handleData[$_REQUEST['company_id']]['company_name'] = $companyData['company_name']; $handleData[$_REQUEST['company_id']]['begin_time'][] = strtotime(I('time_start')); $handleData[$_REQUEST['company_id']]['end_time'][] = $value['begin_time']-1; $handleData[$_REQUEST['company_id']]['relation_game_id'][] = $value['relation_game_id']; $handleData[$_REQUEST['company_id']]['relation_game_name'][] = $value['relation_game_name']; $handleData[$_REQUEST['company_id']]['ratio'][] = $handleRadioMould[$value['relation_game_id']]['ratio']?$handleRadioMould[$value['relation_game_id']]['ratio']:0; $handleData[$_REQUEST['company_id']]['turnover_ratio'][] = $handleRadioMould[$value['relation_game_id']]['turnover_ratio']; } } if(!$radioData[$key+1]) { if (strtotime(I('time_end')) > $value['end_time'] && $value['end_time']!=0) { $handleData[$_REQUEST['company_id']]['company_id'] = $_REQUEST['company_id']; $handleData[$_REQUEST['company_id']]['company_name'] = $companyData['company_name']; $handleData[$_REQUEST['company_id']]['begin_time'][] = $value['end_time'] + 1; $handleData[$_REQUEST['company_id']]['end_time'][] = strtotime(I('time_end'))-86399; $handleData[$_REQUEST['company_id']]['relation_game_id'][] = $value['relation_game_id']; $handleData[$_REQUEST['company_id']]['relation_game_name'][] = $value['relation_game_name']; $handleData[$_REQUEST['company_id']]['ratio'][] = $handleRadioMould[$value['relation_game_id']]['ratio']?$handleRadioMould[$value['relation_game_id']]['ratio']:0; $handleData[$_REQUEST['company_id']]['turnover_ratio'][] = $handleRadioMould[$value['relation_game_id']]['turnover_ratio']; } } //如果结算时间中有时间段间隔 if ($radioData[$key+1]) { if ($radioData[$key+1]['begin_time'] != ($value['end_time']+1)&&$value['end_time']!=0) { $handleData[$_REQUEST['company_id']]['company_id'] = $_REQUEST['company_id']; $handleData[$_REQUEST['company_id']]['company_name'] = $companyData['company_name']; $handleData[$_REQUEST['company_id']]['begin_time'][] = $value['end_time'] + 1; $handleData[$_REQUEST['company_id']]['end_time'][] = $radioData[$key+1]['begin_time'] - 1; $handleData[$_REQUEST['company_id']]['relation_game_id'][] = $value['relation_game_id']; $handleData[$_REQUEST['company_id']]['relation_game_name'][] = $value['relation_game_name']; $handleData[$_REQUEST['company_id']]['ratio'][] = $handleRadioMould[$value['relation_game_id']]['ratio']?$gameRatioMould['ratio']:0; $handleData[$_REQUEST['company_id']]['turnover_ratio'][] = $handleRadioMould[$value['relation_game_id']]['turnover_ratio']; } } } } foreach ($handleData as $key => $value) { $handleData[$key]['row'] = 0; $timeArr = $value['begin_time']; foreach ($timeArr as $k => $v) { $handleData[$key]['row']++; $turnover_ratio = json_decode($value['turnover_ratio'][$k],true); $amount_time['_string'] = "payed_time between {$value['begin_time'][$k]} and {$value['end_time'][$k]} and relation_game_id={$value['relation_game_id'][$k]}"; $pay_amount = M()->table("({$data})a") ->field("sum(pay_amount) pay_amount") ->where($amount_time) ->find(); $handleData[$key]['pay_amount'][$k] = $pay_amount['pay_amount']?$pay_amount['pay_amount']:"0.00"; // $handleData[$key]['withdraw_amount'][$k] = number_format($pay_amount['pay_amount'] * (((int)$value['ratio'][$k])/100),2,'.',''); $handleData[$key]['withdraw_amount'][$k] = "0.00"; foreach($turnover_ratio as $ke=>$va){ if(array_key_exists("instanceof",$va)){ //存在 if($va['instanceof']=='1'&&$pay_amount['pay_amount']>=$va['turnover']){ $handleData[$key]['ratio'] = $va["ratio"]; // $handleData[$key]['withdraw_amount'][$k] = number_format($pay_amount['pay_amount'] * ($va["ratio"]/100),2,'.',''); $handleData[$key]['withdraw_amount'][$k] = "0.00"; }elseif($pay_amount['pay_amount']>$va['turnover']){ $handleData[$key]['ratio'] = $va["ratio"]; // $handleData[$key]['withdraw_amount'][$k] = number_format($pay_amount['pay_amount'] * ($va["ratio"]/100),2,'.',''); $handleData[$key]['withdraw_amount'][$k] = "0.00"; } }else{ if ($pay_amount['pay_amount']>=$va['turnover']) { $handleData[$key]['ratio'] = $va["ratio"]; // $handleData[$key]['withdraw_amount'][$k] = number_format($pay_amount['pay_amount'] * ($va["ratio"]/100),2,'.',''); $handleData[$key]['withdraw_amount'][$k] = "0.00"; } } } $handleData[$key]['begin_time'][$k] = date("Y-m-d",$value['begin_time'][$k]); $handleData[$key]['end_time'][$k] = date("Y-m-d",$value['end_time'][$k]); } } $this->ajaxReturn(['status'=>1,'data'=>$handleData,'msg'=>'']); } public function addSpecialComplementPost( ) { $data = json_decode($_REQUEST['data'],true); $company_ids = implode(',',array_column($data,'company_id')); if ($company_ids) { $inside = M("promote_company",'tab_')->field("company_name")->where(['id'=>['in',$company_ids],'is_inside'=>1])->select(); $inside = implode(',',array_column($inside,'company_name')); $this->ajaxReturn(['status'=>0,'msg'=>$inside.'为内部公司不能添加特殊补点']); } $withdraw_type = 3; $statement_data = []; M()->startTrans(); foreach ($data as $key => $value) { $begin_time = 99999999999; $end_time = 0; $statement_data = []; $company_data = M("promote_company","tab_")->where(['id'=>$value['company_id']])->find(); $company_type = M("company_relation","tab_")->where("first_company_id={$value['company_id']} or second_company_id={$value['company_id']}")->find(); $insert['is_payment'] = $company_type['is_payment']; // $insert['statement_begin_time'] = strtotime($value['statement_begin_time']); // $insert['statement_end_time'] = strtotime($value['statement_end_time']); $insert['withdraw_type'] = $withdraw_type; $insert['company_belong'] = $company_data['company_belong']; $insert['company_name'] = $company_data['company_name']; $insert['company_id'] = $value['company_id']; $insert['company_type'] = $company_data['company_type']; $insert['pay_type'] = $company_type['collection']; $insert['verify_log'] = json_encode(["create_user"=>session('user_auth')['username'],"create_time"=>date("Y-m-d H:i:s")]);; $proCompany_info['id'] = $company_data['id']; $proCompany_info['partner'] =$company_data['company_name']; $proCompany_info['link_man'] = $company_data['settlement_contact']; $proCompany_info['link_phone'] =$company_data['contact_phone']; $proCompany_info['address'] = $company_data['address']; $proCompany_info['payee_name'] =$company_data['company_name']; $proCompany_info['bank_account'] = $company_data['bank_card']; $proCompany_info['opening_bank'] =$company_data['bank_name']; $proCompany_info['fax_ratio'] = $company_data['fax_ratio']; $proCompany_info['taxation_rate'] = $company_data['taxation_rate']; $proCompany_info['company_belong'] = $company_data['company_belong']; $proCompany_info['company_type'] = $company_data['company_type']; $proCompany_info['develop_type'] = $company_data['develop_type']; $proCompany_info['ali_user'] = $company_data['ali_user']; $proCompany_info['ali_account'] =$company_data['ali_account']; $proCompany_info['has_server_fee'] = $company_data['has_server_fee']; $proCompany_info['server_fee'] =$company_data['server_fee']; $proCompany_info['has_ratio'] = $company_data['has_ratio']; $proCompany_info['turnover_ratio'] =$company_data['turnover_ratio']; $proCompany_info['invoice_type'] = $company_type['invoice_type']; $proCompany_info['invoice_content'] = $company_type['invoice_content']; if ($company_type['first_company_id'] == $value['company_id']) { $weCompany = M("company_info","tab_")->where(['id'=>$company_type['second_company_id']])->find(); } elseif ($company_type['second_company_id'] == $value['company_id']) { $weCompany = M("company_info","tab_")->where(['id'=>$company_type['first_company_id']])->find(); } $secord_info['id'] = $weCompany['id']; $secord_info['partner'] =$weCompany['partner']; $secord_info['link_man'] = $weCompany['link_man']; $secord_info['link_phone'] =$weCompany['link_phone']; $secord_info['address'] = $weCompany['address']; $secord_info['company_tax_no'] = $weCompany['company_tax_no']; $secord_info['payee_name'] =$weCompany['payee_name']; $secord_info['bank_account'] = $weCompany['bank_account']; $secord_info['opening_bank'] =$weCompany['opening_bank']; $secord_info['invoice_type'] = $company_type['invoice_type']; $secord_info['invoice_content'] = $company_type['invoice_content']; $statement_info =$value['statement_info']; $pay_amount = 0; $statement_money = 0; foreach($statement_info as $k => $v) { $pay_amount += $v['pay_amount']; $statement_money += $v['sum_money']; } $insert['pay_amount'] = $pay_amount; $insert['platform_amount'] = $pay_amount; $insert['statement_money'] = $statement_money; $insert['op_time'] = time(); foreach($statement_info as $k => $v) { $statement_info[$k]['statement_type'] = 0; $statement_info[$k]['fax_ratio'] = $company_data['fax_ratio']; $statement_info[$k]['statement_begin_time'] = dateFormat($v['statement_begin_time']); $statement_info[$k]['statement_end_time'] = dateFormat($v['statement_end_time']); } if ($company_data['company_type'] == 2) { $statement_insert = []; $promote_id = M("promote","tab_") ->field("id") ->where(['company_id'=>$value['company_id']]) ->select(); if ($promote_id) { $amount_time['promote_id'] = ['in',array_column($promote_id,'id')]; } else { $amount_time['promote_id'] = '-1'; } $amount_time['tab_spend.pay_status'] = 1; // $amount_time['pay_way'] = ['egt',0]; foreach ($statement_info as $k => $v) { $statement_begin_time = strtotime(str_replace('.','-',$v['statement_begin_time'])); $statement_end_time = strtotime(str_replace('.','-',$v['statement_end_time']))+86399; if ($statement_begin_time<$begin_time) { $begin_time = $statement_begin_time; } if ($statement_end_time>$end_time) { $end_time = $statement_end_time; } $amount_time['_string'] = "payed_time between {$statement_begin_time} and {$statement_end_time} and relation_game_id={$v['relation_game_id']}"; $dataAmount = M("spend","tab_") ->field("pay_amount,relation_game_id,relation_game_name,payed_time,game_type_name, CASE WHEN substring_index(substring_index(`chain`,'/',2),'/',-1) !='' THEN substring_index(substring_index(`chain`,'/',2),'/',-1) ELSE promote_id END promote_id,chain,admin_id") ->join("left join tab_promote promote on tab_spend.promote_id=promote.id") ->join("left join tab_game game on tab_spend.game_id=game.id") ->where($amount_time) ->select(false); $dataAmount = M()->table("({$dataAmount})a") ->field("a.*,sum(pay_amount) pay_amount,promote.account,member.real_name") ->join("left join tab_promote promote on promote_id=promote.id") ->join("left join sys_member member on promote.admin_id=member.uid ") ->group("promote_id") ->select(); foreach ($dataAmount as $akey => $aval) { $game_list['pay_amount'] = $aval['pay_amount']; $game_list['relation_game_id'] = $aval['relation_game_id']; $game_list['game_name'] = $aval['relation_game_name']; $game_list['game_type_name'] = $aval['game_type_name']; $game_list['ratio'] = $v['ratio']; $game_list['fax_ratio'] = $company_data['fax_ratio']; $game_list['sum_money'] = ($aval['pay_amount']*($v['increment_ratio']))/100; $game_list['increment_ratio'] = $v['increment_ratio']; $game_list['statement_begin_time'] = $v['statement_begin_time']; $game_list['statement_end_time'] = $v['statement_end_time']; $game_list['statement_type'] = '0'; $statement_data[$aval['account']."-".$aval['real_name']."-".$aval['promote_id']][] = $game_list; // $statement_insert[] = $statement_data; } } foreach ($statement_data as $k => $v) { $strKey = explode('-',$k); $proCompany_info['nickname'] = $strKey[1]; $statement['account'] = $strKey[0]; $statement['real_name'] = $strKey[1]; $statement['promote_id'] = $strKey[2]; $statement['game_list'] = $v; $statement['row'] = count($v); $statement_insert[] = $statement; } $insert['statement_info'] = json_encode($statement_insert); } else { $insert['statement_info'] = json_encode($statement_info); foreach ($statement_info as $k => $v) { $statement_begin_time = strtotime(str_replace('.','-',$v['statement_begin_time'])); $statement_end_time = strtotime(str_replace('.','-',$v['statement_end_time']))+86399; if ($statement_begin_time<$begin_time) { $begin_time = $statement_begin_time; } if ($statement_end_time>$end_time) { $end_time = $statement_end_time; } } } $insert['statement_begin_time'] = $begin_time; $insert['statement_end_time'] = $end_time; if ($company_type['first_company_id'] == $value['company_id']) { $insert['first_party_info'] = json_encode($proCompany_info); $insert['second_party_info'] = json_encode($secord_info); } elseif ($company_type['second_company_id'] == $value['company_id']) { $insert['second_party_info'] = json_encode($proCompany_info); $insert['first_party_info'] = json_encode($secord_info); } $is_save = M('company_statement','tab_')->add($insert); if (!$is_save) { M()->rollback(); $this->ajaxReturn(['status'=>1001]); } } M()->commit(); $this->ajaxReturn(['status'=>1]); } public function OpAuth($info) { $id = $info['id']; $withdraw_type = $info['withdraw_type']; $img = $info['ext_field']; $remark = $info['remark']; //原始列表 $opBtn = [ "viewStatement"=>"查看", "editStatement"=>"编辑", "addRemark"=>"新增备注", "editRemark"=>"修改备注", "viewRemark"=>"查看备注", ]; //操作对应菜单 $optist = []; switch ($info['verify_status']) { case '-2': case '-1': case '0': $optist = ["viewStatement","editStatement","addRemark","viewRemark","editRemark"]; break; case '1': case '2': $optist = ["viewStatement","addRemark","viewRemark","editRemark"]; break; default: break; } if(empty($info['remark'])){ //未上传备注 $optist = array_diff($optist, ["editRemark", "viewRemark"]); }else{ $optist = array_diff($optist, ["addRemark"]); } if ($withdraw_type == 3) { $optist = array_diff($optist, ["editStatement"]); } $resarr = []; foreach ($optist as $k => $v) { if(IS_ROOT){ $resarr[] = $opBtn[$v]; }else{ if(in_array($v,$this->OpAuthList)){ $resarr[] = $opBtn[$v]; } } } return $resarr; } public function menuAuth() { $mentBtn = [ "adminAgree"=>"管理员审核通过", "adminRefuse"=>"管理员审核拒绝", "pool"=>"发起汇总", "updateStatement"=>"重算金额", "export"=>"批量导出", "updateNewStatement"=>"新增结算", "launch"=>"对外发起", "viewSpecialComplement"=>"特殊补点", "delStatement"=>"批量删除" ]; $resarr = []; foreach ($mentBtn as $k => $v) { if(IS_ROOT){ $resarr[] = $v; }else{ if(in_array($k,$this->OpAuthList)){ $resarr[] = $v; } } } return $resarr; } }