"上游cp公司", "2"=>"联运下游渠道公司" ]; public $CompanyBelong = [ "0"=>"下游内团", "1"=>"下游外团", "2"=>"下游分发", "3"=>"下游无", "9"=>"上游" ]; public $VerifyStatus=[ "-3"=>"撤销汇总", "-2"=>"审核拒绝", "-1"=>"管理员审批拒绝", "0"=>"未审批", "1"=>"管理员审核通过", "2"=>"审核通过", "3"=>"已汇总" ]; 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 (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(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']; } // $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("FIELD(verify_status,0,1,-1,2,3,-2,-3),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_2'] = ($v['withdraw_type'] == 2 ? "补点" :"正常结算"); $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['verify_log']['verify_user'])){ if($v['verify_status'] == -2){ $ts = "审核拒绝"; }else{ $ts = "审核通过"; } $v["verify"]= "{$ts}({$v['verify_log']['verify_user']}) {$symbol} {$v['verify_log']['verify_time']}"; }else{ $v["verify"] = '--'; } 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'] == -3){ $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); 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["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); $this->assign("data", $dbres); if ($dbres["company_belong"] == 9) { //上游 $this->display("editCpStatement"); } 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 adminAgree(){ $this->setVerifyStatus(0,1,"admin"); } public function adminRefuse(){ $this->setVerifyStatus(0,-1,"admin"); } public function verifyAgree(){ $this->setVerifyStatus(1,2,"verify"); } public function verifyRefuse(){ $this->setVerifyStatus(1,-2,"verify"); } 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")->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);//结算记录 //收款方 $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_belong'] == 9) {//上游 excelUpStreamTemplate($data, $all_sum_money, $all_pay_amount, $big_all_sum_money); } else { //下游 // if($dbres["company_type"] == 1){ 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 pool() { if(!isset($_REQUEST['ids'])) $this->error("参数错误"); $ids = $_REQUEST['ids']; $dbres = $this->DBModel->field("*")->where("id in ({$ids})")->select(); //分单 $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 = ["ups","up","downs","down"]; //初始化数据 foreach($datas as $k=>$v){ if($v =="ups"){ $basedata['company_type']=3; $basedata['is_payment']=1; } if($v =="up"){ $basedata['company_type']=3; $basedata['is_payment']=2; } if($v =="downs"){ $basedata['company_type']=1; $basedata['is_payment']=1; } if($v =="down"){ $basedata['company_type']=1; $basedata['is_payment']=2; } $datas[$v]=$basedata; unset($datas[$k]); } foreach ($dbres as $k=>$v) { if($v['verify_status'] != 2) continue; if($v['company_belong'] == 9){ //上游 if($v['is_payment'] == 1){ $this->setDf($datas['ups'],$v); }else{ $this->setDf($datas['up'],$v); } }else{ if($v['is_payment'] == 1){ $this->setDf($datas['downs'],$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; } $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,3,"pool",$v['statement_num']); } $this->ajaxReturn(array( 'status' => 1, "info"=>"汇总成功" )); } //结算单规则 protected function updatePoolVerifyStatus($ids,$old_status,$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($k=="ups" || $k=='downs'){ $is_payment = 1; $verify_status = 0; }else{ $is_payment = 2; $verify_status = 2; } //创建基础未满基础信息 if($va['pay_amount'] < $no_pool_money){ $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), ]; } //整合数据 $lsres = $LackStatement->where("company_id={$company_info['id']} and is_pool = 0")->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['pay_amount'] < $no_pool_money){ //依旧小于不结算金额存旧版 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_money"=>$va['statement_money'], "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 ]; $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'],ture); $v['company_info']['pay_type'] = 2; }else{ $v['company_info'] = json_decode($v['first_party_info'],ture); $v['company_info']['pay_type'] = 1; } //先分配好订单号,防止重复提交 $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) ]; $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 OpAuth($info) { $id = $info['id']; $img = $info['ext_field']; $remark = $info['remark']; //原始列表 $opBtn = [ "viewStatement"=>"查看", "editStatement"=>"编辑", "addRemark"=>"新增备注", "editRemark"=>"修改备注", "viewRemark"=>"查看备注", ]; //操作对应菜单 $optist = []; switch ($info['verify_status']) { case '-2': case '-1': case '0': case '1': case '2': $optist = ["viewStatement","editStatement","addRemark","viewRemark","editRemark"]; break; case '3': $optist = ["viewStatement","addRemark","viewRemark","editRemark"]; break; default: break; } if(empty($info['remark'])){ //未上传备注 $optist = array_diff($optist, ["editRemark", "viewRemark"]); }else{ $optist = array_diff($optist, ["addRemark"]); } // $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"=>"管理员审核拒绝", "verifyAgree"=>"审批通过", "verifyRefuse"=>"审核拒绝", "pool"=>"发起汇总", "updateStatement"=>"重算金额", "export"=>"批量导出", "updateNewStatement"=>"新增结算", "launch"=>"对外发起", ]; $resarr = []; foreach ($mentBtn as $k => $v) { if(IS_ROOT){ $resarr[] = $v; }else{ if(in_array($k,$this->OpAuthList)){ $resarr[] = $v; } } } return $resarr; } }