*/ class PartnerController extends ThinkController { private $modelName = 'Partner'; //列表 public function lists() { $model = M($this->modelName, 'tab_'); $map = []; $id = intval(I('id', 0)); if (!empty($id)) { $map['tab_partner.id'] = $id; $parameter['id'] = $id; } if (isset($_REQUEST['status']) && $_REQUEST['status'] !== '') { $status = intval($_REQUEST['status']); $map['tab_partner.status'] = $status; $parameter['status'] = $status; } if (!empty(I('company_type'))) { $map['company_type'] = I('company_type'); } if (!empty(I('partner'))) { $map['partner'] = ['like', '%' . I('partner') . '%']; } if (!empty(I('timestart'))) { $timestart = strtotime(I('timestart')); $map['_string'] = "contract_start_time >= {$timestart}"; } if (!empty(I('timeend'))) { $timeend = strtotime(I('timeend') . ' 23:59:59'); if (!empty($map['_string'])) { $map['_string'] .= " and "; } $map['_string'] .= " contract_end_time < {$timeend}"; } $page = intval(I('get.p', 0)); $page = $page ? $page : 1; //默认显示第一页数据 $row = intval(I('row', 0)); $row = empty($row) ? 10 : $row;//每页条数 $is_export= false; if (isset($_REQUEST['export']) && $_REQUEST['export']==1){ $is_export = true; } //获取分页数据 $query = $model->alias('p') ->field("p.partner,p.matche_platform,p.invoice_rate,p.settlement_type,p.bank_account, p.opening_bank,p.id,p.contract_start_time,p.contract_end_time,p.remark,p.company_type,p.has_game_evidence,p.is_sign_contract") ->where($map) ->order("id desc"); if($is_export){ $partners = $query ->select(); }else{ $partners = $query ->page($page,$row) ->select(); } //获取公司id $partner_ids = array_column($partners, 'id'); $partner_ids = $partner_ids ? $partner_ids : [0]; $game_map['partner_id'] = ["in",$partner_ids]; $games = M("game","tab_")->alias('g') ->field("g.game_type_name,g.relation_game_name,g.original_package_name,g.partner_id,g.relation_game_id as id") ->where($game_map) ->group('relation_game_id') ->select(); $game_ids = array_column($games, 'id'); $game_ids = $game_ids ? $game_ids : [0]; $cp_game_ratio_map['game_id'] = ["in", $game_ids]; $cp_game_ratio_map['is_del'] = '0'; //获取游戏比例 $gameradiores = M("cp_game_ratio","tab_") ->alias("cg") ->join("tab_game ga ON cg.game_id = ga.id") ->field("cg.ratio,cg.instanceof,cg.game_id,cg.begin_total_amount") ->where($cp_game_ratio_map) ->group('relation_game_id,begin_total_amount') ->select(); // dd($cp_game_ratio_map); $parseGameRadiores = array();//合作方分成比例 foreach ($gameradiores as $key =>$val) { $val['row'] = 1; $val['my_ratio'] = 100 - $val['ratio']; if ($val['begin_total_amount'] == 0) { $val['name'] = '默认比例'; if (isset($parseGameRadiores[$val['game_id']])) { $parseGameRadiores[$val['game_id']] = []; } } else { if($val['instanceof']=='1'){ $val['name']="月流水≥".$val['begin_total_amount']; }else{ $val['name']="月流水>".$val['begin_total_amount']; } } $parseGameRadiores[$val['game_id']][] = $val; } $myGameRadiores = $parseGameRadiores;//我方分成比例 foreach ($myGameRadiores as $key => &$val) { foreach ($val as $k => &$v) { $v['ratio'] = 100 - $v['ratio']; } } $parseGames = array(); foreach ($games as $key =>$val) { $val['game_ratio'] = $parseGameRadiores[$val['id']]; $val['my_game_ratio'] = $myGameRadiores[$val['id']]; if(array_key_exists($val['id'],$parseGameRadiores)){//游戏有比例 $row2 = array_sum(array_column($val['game_ratio'], 'row')) ; $val['row'] = empty($row2) ? 1: $row2; } else { $val["row"] = 1; } $val['original_package_name'] = $val['original_package_name'] ?: '-'; $parseGames[$val['partner_id']][] = $val; } $parseData = array(); foreach ($partners as $key =>$value) { $value['game'] = $parseGames[$value['id']]; $value['has_game_evidence'] = $value['has_game_evidence'] ? '有' : '没有'; $value['is_sign_contract'] = $value['is_sign_contract'] ? '是' : '否'; $value['channel_rate'] *= 100; $value['invoice_rate'] *= 100; if ($value['settlement_type'] == 0) { $value['settlement_type'] = '未配置'; } elseif ($value['settlement_type'] == 1) { $value['settlement_type'] = '周结'; } elseif ($value['settlement_type'] == 2) { $value['settlement_type'] = '月结'; } $value['company_type'] = $value['company_type'] == 2 ? '个人' : '公司'; $contract_start_time = $value['contract_start_time'] ? time_format($value['contract_start_time'], 'Y/m/d') : '-'; $contract_end_time = $value['contract_end_time'] ? time_format($value['contract_end_time'], 'Y/m/d') : '-'; $value['contract_time'] = $contract_start_time . '-' . $contract_end_time; $row2 = array_sum(array_column($value['game'], 'row')) ; $value['row'] = empty($row2) ? 1: $row2; $parseData[$value['partner_id']][] = $value; } $parseData = array_values($parseData); if($is_export){ $this->assign('listData', $parseData[0]); $GetData = $_GET; unset($GetData['export']); addOperationLog(['op_type'=>3,'key'=>getNowDate(),'url'=>U(CONTROLLER_NAME.'/'.ACTION_NAME,$GetData),'menu'=>"游戏-游戏管理-合作方管理-导出"]); $this->display("export"); die(); } /* 查询记录总数 */ $count = $model ->where($map) ->count(); //分页 $parameter['p'] = $page; $parameter['row'] = $row; $page = set_pagination($count, $row, $parameter); if ($page) { $this->assign('_page', $page); } $this->checkListOrCountAuthRestMap($map,[]); // dd($parseData[0]); $this->assign('listData', $parseData[0]); $this->assign('count', $count); $this->assign('commonset', M('Kuaijieicon')->where(['url' => 'Partner/lists'])->find()); $this->meta_title = '合作方管理'; $this->display(); } //添加 public function add() { if ($_POST) { $partner = trim(I('post.partner', '')); $status = intval(I('post.status', 1)); if (empty($partner)) { $this->error('请输入合作方名称'); } if (!strlen(I('is_sign_contract'))) { $this->error('请选择是否签署合同'); } if (empty(I('company_type'))) { $this->error('请输入公司性质'); } if (!strlen(I('has_game_evidence'))) { $this->error('请选择是否有游戏资质'); } $model = M($this->modelName, 'tab_'); $map['partner'] = $partner; $res = $model->where($map)->getField('id'); if ($res) { $this->error('合作方已存在'); } if(!empty(I('link_phone')) && !checkPhone(I('link_phone'))) { $this->error('联系电话格式不正确'); } if(!empty(I('link_phone'))){ $res2 = $model->where(['link_phone' => I('link_phone')])->getField('id'); if ($res2) { $this->error('已存在此联系电话'); } } $time = time(); $save['partner'] = $partner; $save['status'] = $status; $save['link_man'] = I('link_man'); $save['link_phone'] = I('link_phone'); $save['address'] = I('address'); $save['company_tax_no'] = I('company_tax_no'); $save['payee_name'] = I('payee_name'); $save['bank_account'] = I('bank_account'); $save['opening_bank'] = I('opening_bank'); $save['matche_platform'] = I('matche_platform'); $save['contract_start_time'] = strtotime(I('contract_start_time')); $save['contract_end_time'] = strtotime(I('contract_end_time')); $save['channel_rate'] = I('channel_rate')/100; $save['invoice_rate'] = (I('invoice_rate') ?: 0)/100; $save['is_sign_contract'] = I('is_sign_contract'); $save['settlement_type'] = I('settlement_type'); $save['has_game_evidence'] = I('has_game_evidence'); $save['company_type'] = I('company_type'); $save['remark'] = I('remark'); if (!empty(I('file_info'))) { $save['file_info'] = I('file_info'); } $save['uid'] = UID; $save['create_time'] = $time; $save['last_up_time'] = $time; $res = $model->add($save); if ($res) { \Think\Log::actionLog('Partner/add', 'partner', $res); //操作日志 addOperationLog(array( "op_type"=>0, "key"=>$partner, "url"=>U("Partner/lists",array("partner"=>$partner)) )); $this->success('保存成功', U('lists')); } else { $this->error('保存失败'); } } else { $this->assign('commonset', M('Kuaijieicon')->where(['url' => 'Partner/add'])->find()); $this->meta_title = '新增合作方'; $this->display(); } } //编辑 public function edit() { $model = M($this->modelName, 'tab_'); if ($_POST) { $partner = trim(I('post.partner', '')); $status = intval(I('post.status', 1)); $id = intval(I('post.id', 0)); if (empty($partner)) { $this->error('请输入合作方名称'); } if (!strlen(I('is_sign_contract'))) { $this->error('请选择是否签署合同'); } if (empty(I('company_type'))) { $this->error('请输入公司性质'); } if (!strlen(I('has_game_evidence'))) { $this->error('请选择是否有游戏资质'); } $data = $model ->field('id,partner,link_man,link_phone,address,company_tax_no,payee_name,bank_account,opening_bank') ->find($id); if (empty($data)) { $this->error('数据异常'); } $map['partner'] = $partner; $res = $model->where($map)->getField('id'); if ($res && $res != $id) { $this->error('合作方已存在'); } if(!empty(I('link_phone')) && !checkPhone(I('link_phone'))) { $this->error('联系电话格式不正确'); } if(!empty(I('link_phone'))){ $res2 = $model->where([ 'link_phone' => I('link_phone'), 'id' => ['neq', $id] ])->getField('id'); if ($res2) { $this->error('已存在此联系电话'); } } $time = time(); $save['id'] = $id; $save['partner'] = $partner; $save['link_man'] = I('link_man'); $save['link_phone'] = I('link_phone'); $save['address'] = I('address'); $save['company_tax_no'] = I('company_tax_no'); $save['payee_name'] = I('payee_name'); $save['bank_account'] = I('bank_account'); $save['opening_bank'] = I('opening_bank'); $save['matche_platform'] = I('matche_platform'); $save['contract_start_time'] = strtotime(I('contract_start_time')); $save['contract_end_time'] = strtotime(I('contract_end_time')); $save['channel_rate'] = I('channel_rate')/100; $save['invoice_rate'] = (I('invoice_rate') ?: 0)/100; $save['is_sign_contract'] = I('is_sign_contract'); $save['settlement_type'] = I('settlement_type'); $save['has_game_evidence'] = I('has_game_evidence'); $save['company_type'] = I('company_type'); $save['remark'] = I('remark'); $save['file_info'] = I('file_info'); $save['status'] = $status; $save['last_up_time'] = $time; $res = $model->save($save); if ($res === false) { $this->error('保存失败'); } else { \Think\Log::actionLog('Partner/edit', 'partner', $id); addOperationLog(array( "op_type"=>1, "key"=>$partner, "url"=>U("Partner/lists",array("partner"=>$partner)) )); $this->success('保存成功', U('lists')); } } else { $id = intval(I('get.id', 0)); $map['id'] = $id; $data = $model ->find($id); if (empty($data)) { $this->error('数据异常', U('lists')); } if ($data['contract_start_time']) { $data['contract_start_time'] = date('Y-m-d', $data['contract_start_time']); }else{ $data['contract_start_time']=''; } if ($data['contract_end_time']) { $data['contract_end_time'] = date('Y-m-d', $data['contract_end_time']); }else{ $data['contract_end_time']=''; } $data['channel_rate'] *= 100;//存的是小数,显示百分比 $data['invoice_rate'] *= 100;//存的是小数,显示百分比 // dd($data); $this->assign('data', $data); $action = I('action'); $this->assign('action', $action); $this->assign('commonset', M('Kuaijieicon')->where(['url' => 'Partner/edit'])->find()); $this->meta_title = $action ? '查看合作方' : '编辑合作方'; $this->display($action); } } //删除 public function del() { if (!empty($_POST['ids'])) { if (!is_array($_POST['ids'])) { $this->error('参数异常'); } $id = implode(',', $_POST['ids']); } else { $id = intval(I('get.id', 0)); if ($id == 0) { $this->error('参数异常'); } } @$yres = M($this->modelName, 'tab_')->field("partner")->find($id)['partner']; $res = M($this->modelName, 'tab_')->delete($id); if ($res === false) { $this->error('删除失败'); } addOperationLog(array( "op_type"=>2, "key"=>$yres, "url"=>U("Partner/lists") )); $this->success('删除成功', U('lists')); } }