DBModel = M("game_margin","tab_"); parent::_initialize(); } public function lists() { $params = I('get.'); $page = $params['p'] ? intval($params['p']) : 1; $row = $params['row'] ? intval($params['row']) : 10; $where = [ "_string"=>"1=1" ]; if(array_key_exists('count_date',$params)){ $m = explode("-",$params['count_date']); $where['count_year']=$m[0]; $where['count_month']=$m[1]; } $data = $this->DBModel->where($where)->field("margin_info",true)->order("count_year desc,count_month desc")->page($page,$row)->select(); // dd($data); $count = $this->DBModel->where($where)->count(); $page = set_pagination($count,$row); if($page) {$this->assign('_page', $page);} $this->assign("data",$data); $this->assign("isCanRecount",D("CmdTasks")->isCanAddTask("GameMargin")); $this->display(); } //查看毛利表 public function marginView(){ if(!isset($_REQUEST['id'])){ $this->error('参数错误'); } $id = $_REQUEST['id']; $info = $this->DBModel->where("id = '{$id}'")->find(); $this->marginCount($info); $this->assign("year", $info['count_year']); $this->assign("month", $info['count_month']); $this->assign("id", $id); $this->display(); } private function marginCount($info) { $marginInfo = json_decode($info['margin_info'],true); $count = [ "pay_amount"=>$info['pay_amount'], "margin_ratio"=>$info['margin_ratio'], "margin_amount"=>$info['margin_amount'], "cp_statement_amount"=>0, "cp_ratio"=>0, "cp_rebate_amount"=>0, "cp_other_amount"=>0, "pu_pay_amount"=>0, "pu_statement_amount"=>0, "pu_ratio"=>0, "pu_margin_amount"=>0, "pu_margin_ratio"=>0, "pc_pay_amount"=>0, "pc_statement_amount"=>0, "pc_ratio"=>0, "pc_margin_amount"=>0, "pc_margin_ratio"=>0, "platform_margin_ratio"=>0, "jh_pay_amount"=>0, "jh_statement_amount"=>0, "jh_ratio"=>0, "jh_margin_amount"=>0, "jh_margin_ratio"=>0, ]; foreach ($marginInfo as $v) { $count['cp_statement_amount'] += $v['cp_statement_amount']; $count['cp_rebate_amount'] += $v['cp_rebate_amount']; $count['cp_other_amount'] += $v['cp_other_amount']; $count['pu_pay_amount'] += $v['pu_pay_amount']; $count['pu_statement_amount'] += $v['pu_statement_amount']; $count['pu_margin_amount'] += $v['pu_margin_amount']; $count['pc_pay_amount'] += $v['pc_pay_amount']; $count['pc_statement_amount'] += $v['pc_statement_amount']; $count['pc_margin_amount'] += $v['pc_margin_amount']; $count['jh_pay_amount'] += $v['jh_pay_amount']; $count['jh_statement_amount'] += $v['jh_statement_amount']; $count['jh_margin_amount'] += $v['jh_margin_amount']; } $count['cp_ratio'] = round( $count['cp_statement_amount']/$count['pay_amount'] ,4)*100; $count['pu_ratio'] = round( $count['pu_statement_amount']/$count['pu_pay_amount'] ,4)*100; $count['pu_margin_ratio'] = round( $count['pu_margin_amount']/$count['pu_pay_amount'] ,4)*100; $count['pc_ratio'] = round( $count['pc_statement_amount']/$count['pc_pay_amount'] ,4)*100; $count['pc_margin_ratio'] = round( $count['pc_margin_amount']/$count['pc_pay_amount'] ,4)*100; $count['platform_margin_ratio'] = round(($count['pay_amount']-$count['jh_pay_amount']-$count['cp_statement_amount']-$count['cp_rebate_amount']-$count['cp_other_amount']-$count['pc_statement_amount']-$count['pu_statement_amount'])/($count['pay_amount']-$count['jh_pay_amount']),4)*100; $count['jh_ratio'] = round( $count['jh_statement_amount']/$count['jh_pay_amount'] ,4)*100; $count['jh_margin_ratio'] = round( $count['jh_margin_amount']/$count['jh_pay_amount'] ,4)*100; // dd($count); $this->assign("data",$marginInfo); $this->assign("count",$count); } /** * 编辑 */ public function marginEdit(){ ini_set('serialize_precision',14); if(!isset($_REQUEST['id'])){ $this->error('参数错误'); } $params = I("post."); $data = $this->DBModel->where("id='{$params['id']}'")->find(); $marginInfo = json_decode($data['margin_info'],true); $item = &$marginInfo[$params['key']]; $item['cp_rebate_ratio'] = $params['cp_rebate_ratio']; $item['cp_rebate_amount'] = $params['cp_rebate_amount']; $item['cp_other_amount'] = $params['cp_other_amount']; if($item["pc_pay_amount"] > 0){ $item["pc_margin_amount"] = round($item["pc_pay_amount"]*(1-$item['cp_promote_ratio']/100)*(100-$item["cp_ratio"]-$item['cp_rebate_ratio']-$item["pc_ratio"])/100,2); $item["pc_margin_ratio"] = round($item["pc_margin_amount"]/$item['pc_pay_amount'],4)*100; } if ($item["pu_pay_amount"] > 0) { $item["pu_margin_amount"] = round($item["pu_pay_amount"]-$item["pu_pay_amount"]*(1-$item['cp_promote_ratio']/100)*($item["cp_ratio"]+$item['cp_rebate_ratio'])/100-$item["pu_statement_amount"],2); $item["pu_margin_ratio"] = round($item["pu_margin_amount"]/$item['pu_pay_amount'],4)*100; } $item['platform_margin_ratio'] = round(($item['pay_amount']-$item['jh_pay_amount']-$item['cp_statement_amount']-$item['cp_rebate_amount']-$item['cp_other_amount']-$item['pc_statement_amount']-$item['pu_statement_amount'])/($item['pay_amount']-$item['jh_pay_amount']),4)*100; if($item['jh_pay_amount'] > 0){ $item["jh_margin_amount"] = round( $item["jh_statement_amount"]-$item["jh_pay_amount"]*(1-$item['cp_promote_ratio']/100)*($item["cp_ratio"]+$item['cp_rebate_ratio'])/100 ,2); $item["jh_margin_ratio"] = round($item["jh_margin_amount"]/$item['jh_pay_amount'],4)*100; } $item['margin_amount'] = round( ($item['pay_amount']-$item['cp_statement_amount']-$item['cp_rebate_amount']-$item['cp_other_amount']-$item['pc_statement_amount']-$item['pu_statement_amount']+$item['jh_statement_amount']),2); $item['margin_ratio'] = round($item['margin_amount']/$item['pay_amount'],4)*100; $margin_amount = 0; //总计 foreach ($marginInfo as &$v) { $margin_amount += $v['margin_amount']; } $margin_ratio = round( $margin_amount/$data['pay_amount'] ,4)*100; $save = [ "margin_ratio"=>$margin_ratio, "margin_amount"=>$margin_amount, "margin_info"=>json_encode($marginInfo,JSON_UNESCAPED_UNICODE) ]; $this->DBModel->where("id='{$params['id']}'")->save($save); $this->ajaxReturn(['status'=>1,'msg'=>"修改成功,刷新。。。"]); } public function recount() { if(!isset($_REQUEST['type'])) $this->error("参数错误"); $type = $_REQUEST['type']; if($type == "recount"){ if(!isset($_REQUEST['id'])) $this->error("参数错误"); $id = $_REQUEST['id']; $data = $this->DBModel->field("count_year,count_month")->where("id='{$id}'")->find(); $time = $data['count_year']."-".$data['count_month']; $this->DBModel->where("id='{$id}'")->delete(); }elseif($type == "add"){ $time =$_REQUEST['date']; $m = explode("-",$time); $where = []; $where['count_year']=$m[0]; $where['count_month']=$m[1]; $count = $this->DBModel->where($where)->count(); if($count > 0){ $this->ajaxReturn(["status"=>"0","msg"=>"{$time}已经生成报表,请重算即可"]); } } $params = "php ".SUBSITE_INDEX." GameMarginSet/setFreeMonth/recount/1/count_date/{$time}"; $r = D("CmdTasks")->addTask("GameMargin",$params,true); if($r){ $this->ajaxReturn(["status"=>"1",'msg'=>"任务添加成功,大约需等待5分钟后生成"]); }else{ $this->ajaxReturn(["status"=>"0","msg"=>'任务添加失败']); } } }