admininfo = $_SESSION['onethink_admin']['user_auth']; $this->DBModel = M("game_ratio_mould","tab_"); parent::_initialize(); } public function index() { $params = I('get.'); $page = $params['p'] ? intval($params['p']) : 1; $row = $params['row'] ? intval($params['row']) : 10; //查询数据 //获取游戏id $gamewhere['_string'] = '1 = 1'; $where['_string'] = '1 = 1'; if(isset($params['relation_game_id'])){ $gamewhere['relation_game_id'] = $params['relation_game_id']; $where['m.relation_game_id'] = $params['relation_game_id']; } if(isset($params['game_type_id'])){ $gamewhere['game_type_id'] = $params['game_type_id']; } if(isset($params['company_belong'])){ $where['m.company_belong'] = $params['company_belong']; } $this->checkListOrCountAuthRestMap($where); $gameres = M("game","tab_")->field("tab_game.relation_game_id,tab_game.relation_game_name,IF(tab_game.original_package_name='','未配置',tab_game.original_package_name) original_package_name,tab_game_type.type_name game_type_name")->where($gamewhere)->join("tab_game_type on tab_game.game_type_id = tab_game_type.id")->group("tab_game.relation_game_id")->select(false); $dbres = $this->DBModel->alias('m')->join("INNER JOIN ({$gameres}) g ON m.relation_game_id = g.relation_game_id")->where($where)->order('create_time desc, id desc'); if(isset($params['export'])){ $dbres = $dbres->select(); }else{ $dbres = $dbres->page($page, $row)->select(); } foreach($dbres as $k=>&$v){ $v['create_time'] = date("Y-m-d H:i:s",$v['create_time']); $v['company_belong'] ="下游".getCompanyBlong($v['company_belong']); $this->readTurnoverRatio($v); } $this->assign('data', $dbres); //判断导出 if(isset($_REQUEST['export'])){ $GetData = $_GET; unset($GetData['export']); addOperationLog(['op_type'=>3,'key'=>getNowDate(),'url'=>U(CONTROLLER_NAME.'/'.ACTION_NAME,$GetData),'menu'=>"推广员-推广员管理-游戏分成比例模板-导出"]); $this->display("export"); exit(); } $count = $this->DBModel->alias('m')->field("count(id) count")->join("INNER JOIN ({$gameres}) g ON m.relation_game_id = g.relation_game_id")->where($where)->find()['count']; $page = set_pagination($count, $row,$params); if($page) { $this->assign('_page', $page); } $this->assign('gameList', getAllGameList(true)); $this->assign('gameTypeList', getGameTypes()); $this->assign("company_belong",getCompanyBlong()); $this->display(); } public function add() { if ($_POST) { $params = I('post.'); if (!isset($params['ratio']) || $params['ratio'] === '') { $this->error('默认分成比例不能为空'); } $save['turnover_ratio'] = $this->setTurnoverRatio($params); $save['ratio'] = $params['ratio'] ?? 0; $save['relation_game_id'] = $params['relation_game_id'] ?? 0; $save['company_belong'] = $params['company_belong'] ?? 3; $save["admin_name"]=$this->admininfo["username"]; $save["admin_id"]=$this->admininfo["uid"]; $save["create_time"]=time(); //判断是否存在 $where = [ "relation_game_id"=>$save['relation_game_id'], "company_belong"=>$save['company_belong'] ]; $hasdb = $this->DBModel->field("count(id) count")->where($where)->find()['count']; if($hasdb > 0){ $this->error('该游戏与该公司类型的模板已经存在,请搜索后编辑'); } //保存 $id = $this->DBModel->add($save); addOperationLog(['op_type'=>0,'key'=>$id,'op_name'=>'新增游戏分成比例模板','url'=>U('GameRatioMould/index')]); $this->ajaxReturn(["msg"=>"添加成功","code"=>1,"url"=>U("index")]); } else { $game_type = M("game_type","tab_")->field("id,type_name")->where("status=1")->select(); $this->assign("game_type",$game_type); //渠道类型 $this->assign("company_belong",getCompanyBlong()); $this->display(); } } public function edit() { if ($_POST) { $params = I('post.'); if(!isset($params['id'])){ $this->error('参数错误'); } $save['ratio'] = $params['ratio'] ?? 0; $save['id'] = $params['id']; $save["create_time"]=time(); $save['turnover_ratio'] = $this->setTurnoverRatio($params); $this->DBModel->save($save); addOperationLog(['op_type'=>1,'key'=>$save['id'],'op_name'=>'修改游戏分成比例模板','url'=>U('PromoteGameRatio/index')]); $this->ajaxReturn(["msg"=>"修改成功","code"=>1,"url"=>U("index")]); } else { $params = I('get.'); $id = $params['id'] ?? 0; $id = intval($id); $map['id'] = $id; $gameres = M("game","tab_")->field("tab_game.relation_game_id,tab_game.relation_game_name,IF(tab_game.original_package_name='','未配置',tab_game.original_package_name) original_package_name,tab_game_type.type_name game_type_name")->join("tab_game_type on tab_game.game_type_id = tab_game_type.id")->group("tab_game.relation_game_id")->select(false); $dbres = $this->DBModel->alias('m')->join("INNER JOIN ({$gameres}) g ON m.relation_game_id = g.relation_game_id")->where($map)->find(); $dbres['turnover_ratio'] = $dbres['turnover_ratio'] ? json_decode($dbres['turnover_ratio'], true) : $dbres['turnover_ratio']; $dbres['company_belong'] = getCompanyBlong($dbres['company_belong']); $this->assign('data', $dbres); $this->display(); } } public function del() { if(!isset($_REQUEST['id'])){ $this->error('参数错误'); } $id = $_REQUEST['id']; $res = $this->DBModel->where("id='{$id}'")->delete(); if($res !== false){ addOperationLog(['op_type'=>2,'key'=>$id,'op_name'=>'删除游戏分成模板','url'=>U('PromoteGameRatio/index')]); $this->ajaxReturn(["msg"=>"删除成功","code"=>1,"url"=>U("index")]); }else{ $this->error('删除错误'); } } //基础信息获取 public function getGames() { $gameTypeId = intval(I('game_type_id', 0)); $games = M("game","tab_")->field("relation_game_id,relation_game_name,original_package_name")->where("game_type_id = '{$gameTypeId}'")->group("relation_game_name")->select(); $this->ajaxReturn($games); } public function error($data) { header('Content-Type:application/json; charset=utf-8'); $data =json_encode(['msg'=>$data,"code"=>4000],JSON_UNESCAPED_UNICODE); exit($data); } public function setTurnoverRatio($params) { $save['turnover_ratio'] = []; if (!empty(array_filter($params['turnover'])) || !empty(array_filter($params['turnover_ratio'])) ) { if (is_array($params['turnover']) && is_array($params['turnover_ratio']) && is_array($params['instanceof'])) { foreach ($params['turnover'] as $turnover) { if (empty($turnover)) { $this->error('月流水不能为空'); } } foreach ($params['turnover_ratio'] as $turnoverRatio) { if (empty($turnoverRatio)) { $this->error('月流水分成比例不能为空'); } } foreach ($params['instanceof'] as $intervalClosedStatus) { if (!in_array($intervalClosedStatus, [1, 2])) { $this->error('月流水分符号不能为空'); } } $turnoverCount = count($params['turnover']); $sortTurnover = $params['turnover']; sort($sortTurnover); if ($params['turnover'] != $sortTurnover || $turnoverCount != count(array_unique($params['turnover']))) { $this->error('月流水必须以正序的方式填写,且必须大于上一个月流水'); } $ratio = $params['ratio'] ?? 0; // if ($params['turnover_ratio'][0] <= $ratio) { // $this->error('月流水分成比例必须大于默认分成比例'); // } $turnoverRatioCount = count($params['turnover_ratio']); $sortTurnoverRatio = $params['turnover_ratio']; sort($sortTurnoverRatio); // if ($params['turnover_ratio'] != $sortTurnoverRatio || $turnoverRatioCount != count(array_unique($params['turnover_ratio']))) { // $this->error('月流水分成比例必须以正序的方式填写,且必须大于上一个月流水分成比例'); // } foreach ($params['turnover'] as $key => $turnover) { $save['turnover_ratio'][] = [ 'turnover' => bcdiv($turnover, 1, 2), 'ratio' => bcdiv($params['turnover_ratio'][$key], 1, 2), 'instanceof' => (isset($params['instanceof'][$key]) ? $params['instanceof'][$key] : 1), ]; } $save['turnover_ratio'] = json_encode($save['turnover_ratio']); } } return $save['turnover_ratio']; } //设置比例阶梯 protected function readTurnoverRatio(&$v){ $turnover_ratio = json_decode($v['turnover_ratio'],true); $v['turnover_ratio'] = array( array("ratio"=>floatval($v['ratio'])."%","name"=>"默认比例") ); foreach($turnover_ratio as $ke=>$va){ $t=array("ratio"=>floatval($va["ratio"])."%"); if(array_key_exists("instanceof",$va)){ //存在 if($va['instanceof']=='1'){ $t['name']="月流水≥".$va['turnover']; }else{ $t['name']="月流水>".$va['turnover']; } }else{ $t['name']="月流水≥".$va['turnover']; } $v['turnover_ratio'][]=$t; } $v['row'] = count($v['turnover_ratio']); } }