<?php

namespace Admin\Controller;

use Base\Tool\AggregateClient;
use User\Api\UserApi as UserApi;
use Think\Controller;
use Base\Service\PartnerService;

/**
 * 后台首页控制器
 * @author 麦当苗儿 <zuojiazi@vip.qq.com>
 */
class PartnerController extends ThinkController
{
    private $modelName = 'Partner';
    public $OpAuthList=[];
    public $aggregatePackageName = [];

    public function _initialize()
    {
        $this->admininfo = $_SESSION['onethink_admin']['user_auth'];
        parent::_initialize();
    }
    //列表
    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 (isset($_REQUEST['timestart']) && isset($_REQUEST['timeend'])) {
            $time_start = strtotime($_REQUEST['timestart']);
            $time_end = strtotime($_REQUEST['timeend'])+ 86399;
            $map["_string"] =  "(contract_start_time BETWEEN {$time_start} AND {$time_end}) OR (contract_end_time BETWEEN {$time_start} AND {$time_end}) OR (contract_start_time <= {$time_end} AND  contract_end_time >= {$time_end}) OR (contract_start_time >0 AND contract_end_time = 0)";
        } elseif (isset($_REQUEST['timestart'])) {
            $time_start = strtotime($_REQUEST['timestart']);
            $map["_string"] =  "(contract_start_time >= {$time_start} ) OR (contract_end_time >= {$time_start}) OR  ( contract_start_time >0 AND contract_end_time = 0)";
        } elseif (isset($_REQUEST['timeend'])) {
            $time_end = strtotime($_REQUEST['timeend'])+ 86399;
            $map["_string"] =  "(contract_start_time <= {$time_end} ) OR (contract_end_time <= {$time_end})";
        }

        if($_REQUEST['original_package_name']) {
            $game_map['original_package_name'] = ['like',"%{$_REQUEST['original_package_name']}%"];
        }

        if($_REQUEST['relation_game_name']) {
            $game_map['relation_game_name'] = ['like',"%{$_REQUEST['relation_game_name']}%"];
        }

        $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;
            $this->getAggregatePackage();
        }

        //获取分页数据
        $query = $model->alias('p')
            ->where($map)
            ->order("id desc");
        if($is_export){
            $partners = $query
            ->field("p.*,IFNULL(d.advance_amount,'--') advance_amount")
            ->join("left join tab_partner_divide_warn d ON d.partner_id = p.id AND d.status = 1")
            ->select();
        }else{
            $partners = $query
                ->field("p.*")
//                ->page($page,$row)
                ->select();
        }
//        dump($partners);die();

        //获取公司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,unique_code")
            ->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'];
//                }
//            }
//            $val['ratio'] = floatval($val['ratio']);
//            $parseGameRadiores[$val['game_id']][] = $val;
//        }

        foreach ($gameradiores as $key =>$val) {
            $val['row'] = 1;
            $val['my_ratio'] = 100 - $val['ratio'];
            if ($val['begin_total_amount'] == 0) {
                if ($gameradiores[$key+1]['begin_total_amount']==0) {
                    $val['name'] = "0.00≤月流水≤∞";
                } else {
                    $val['name']=$val['begin_total_amount']."≤月流水<".$gameradiores[$key+1]['begin_total_amount'];
                }


                if (isset($parseGameRadiores[$val['game_id']])) {
                    $parseGameRadiores[$val['game_id']] = [];
                }
            } else {
                if($val['instanceof']=='1'){

                    if ($gameradiores[$key+1]['begin_total_amount']!=0) {
                        $val['name']=$val['begin_total_amount']."≤月流水<".$gameradiores[$key+1]['begin_total_amount'];
                    } else {
                        $val['name']=$val['begin_total_amount']."≤月流水≤∞";
                    }

//                    $val['name']="月流水≥".$val['begin_total_amount'];
                }else{

                    if($gameradiores[$key+1]['begin_total_amount']!=0) {

                        if ($gameradiores[$key+1]['instanceof'] == '1') {
                            $val['name']=$val['begin_total_amount']."<月流水<".$gameradiores[$key+1]['begin_total_amount'];
                        } else {
                            $val['name']=$val['begin_total_amount']."≤月流水<".$gameradiores[$key+1]['begin_total_amount'];
                        }


                    } else {
                        if ($gameradiores[$key+1]['instanceof'] == '1') {
                            $val['name']=$val['begin_total_amount']."<月流水≤∞";
                        } else {
                            $val['name']=$val['begin_total_amount']."≤月流水≤∞";
                        }

                    }

//                    $val['name']="月流水>".$val['begin_total_amount'];
                }
            }
            $val['ratio'] = floatval($val['ratio']);
            $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'] ?: '-';
            $val['aggregate_gamename'] = $this->aggregatePackageName[$val['unique_code']];

            $parseGames[$val['partner_id']][] = $val;
        }


        $parseData = array();
        foreach ($partners as $key =>$value) {
            $tmpr = D("CompanyRelation")->getCompanyRelation(1,$value['id']);

            $value['is_collection'] = $tmpr['collection'];
            $value['settlement_type'] =  $tmpr['settlement_type'];
            $value['invoice_type'] = $tmpr['invoice_type'];
            $value['invoice_content'] = $tmpr['invoice_content'];

            $value['game'] = $parseGames[$value['id']];
            $value['has_advance_charge'] = $value['has_advance_charge'] ? '是' : '否';
            $value['is_sign_contract'] = $value['is_sign_contract'] ? '是' : '否';
            if(empty($value['has_server_fee'])){
                $value['server_fee'] = 0;
            }
            $value['has_server_fee'] = $value['has_server_fee'] ? '是' : '否';
            $value['cooperation_status'] = $value['cooperation_status'] ? '合作中' : '暂停合作';
            $value['company_type'] = $value['company_type'] == 2 ? '个人' : '公司';

            $value['has_game_evidence'] = $value['has_game_evidence'] ? '是' : '否';

            $contract_start_time = $value['contract_start_time'] ? time_format($value['contract_start_time'], 'Y/m/d') : '-';
            if($value['contract_start_time']){
                $contract_end_time = $value['contract_end_time'] ? date('Y/m/d', $value['contract_end_time']) : '永久';
            }else{
                $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;

            $validity_start_time = $value['validity_start_time'] ? time_format($value['validity_start_time'], 'Y/m/d') : '-';
            if($value['validity_start_time']){
                $validity_end_time = $value['validity_end_time'] ? date('Y/m/d', $value['validity_end_time']) : '永久';
            }else{
                $validity_end_time = $value['validity_end_time'] ? time_format($value['validity_end_time'], 'Y/m/d') : '-';
            }
            $value['validity_time'] = $validity_start_time . '-' . $validity_end_time;
            
            $row2 = array_sum(array_column($value['game'], 'row')) ;
            $value['row'] = empty($row2) ? 1: $row2;
            $parseData[] = $value;
        }

        if ($_REQUEST['original_package_name'] || $_REQUEST['relation_game_name']) {

            foreach ( $parseData as $key => $value ) {

                if (!$value['game']) {
                    unset($parseData[$key]);
                }

            }
        }

        if($is_export){
            $this->assign('listData', $parseData);
            $GetData = $_GET;
            unset($GetData['export']);
            addOperationLog(['op_type'=>3,'key'=>getNowDate(),'url'=>U(CONTROLLER_NAME.'/'.ACTION_NAME,$GetData),'menu'=>"游戏-游戏管理-合作方管理-导出"]);
            $this->display("export");
            die();
        }

        $count = count($parseData);
        /* 查询记录总数 */
//        $count = $model
//            ->where($map)
//            ->count();
        //分页
        $parameter['p'] = $page;
        $parameter['row'] = $row;
        $page = set_pagination($count, $row, $parameter);
        if ($page) {
            $this->assign('_page', $page);
        }

        $arraypage = $page;
        $size = $row;//每页显示的记录数
        $parseData = array_slice($parseData, ($arraypage - 1) * $size, $size);
//        $page = set_pagination($count, $row, $parameter);
//        if ($page) {
//            $this->assign('_page', $page);
//        }
//        dump($arraypage);
//        dump($size);die();

        $this->checkListOrCountAuthRestMap($map,[]);
        $this->assign('listData', $parseData);
        $this->assign('count', $count);
        $this->assign('commonset', M('Kuaijieicon')->where(['url' => 'Partner/lists'])->find());
        $this->meta_title = '上游CP公司列表';
        $this->display();
    }
    //审核列表
    public function index()
    {
        $page = intval(I('get.p', 0));
        $page = $page ? $page : 1; //默认显示第一页数据
        $row = intval(I('row', 0));
        $row = empty($row) ? 10 : $row;//每页条数
        $p = $_REQUEST;

        if(!IS_ROOT){
            $this->OpAuthList= getModuleControllerAuth();
        }

        $map = [];
        if (!empty(I('partner_name'))) {
            $map['partner_name'] = ['like', '%' . I('partner_name') . '%'];
        }
        if (!empty($p['verify_type'])) {
            if($p['verify_type'] == 1){
                $map['partner_id'] = 0;
            }else{
                $map['partner_id'] = ["neq",0];
            }
        }
        if (isset($p['verify_status'])) {
            $map['verify_status'] = $p['verify_status'];
        }

        if (isset($_REQUEST['timestart']) && isset($_REQUEST['timeend'])) {
            $time_start = strtotime($_REQUEST['timestart']);
            $time_end = strtotime($_REQUEST['timeend'])+ 86399;
            $map["create_time"] =['BETWEEN',[$time_start, $time_end]];
        } elseif (isset($_REQUEST['timestart'])) {
            $time_start = strtotime($_REQUEST['timestart']);
            $map["create_time"] =['EGT',$time_start];
        } elseif (isset($_REQUEST['timeend'])) {
            $time_end = strtotime($_REQUEST['timeend'])+ 86399;
            $map["create_time"] =  ['ELT',$time_end];
        }
        $model = M("partner_verify", 'tab_');
        $data =  $model->where($map)->page($page,$row)->order("FIELD(verify_status,0,1,-1),create_time desc")->select();
        foreach ($data as $k => &$v) {
            $v['partner_info'] = json_decode($v['partner_info'],true);
            if($v['partner_id'] == 0){
                $v['verify_type'] = "新增";
            }else{
                $v['verify_type'] = "修改";
            }
            $v['partner_info']['company_type'] = $v['partner_info']['company_type'] == 2 ? '个人' : '公司';


            $contract_start_time = $v['partner_info']['contract_start_time'] ? time_format($v['partner_info']['contract_start_time'], 'Y/m/d') : '-';
            if($v['partner_info']['contract_start_time']){
                $contract_end_time = $v['partner_info']['contract_end_time'] ? date('Y/m/d', $v['partner_info']['contract_end_time']) : '永久';
            }else{
                $contract_end_time = $v['partner_info']['contract_end_time'] ? time_format($v['partner_info']['contract_end_time'], 'Y/m/d') : '-';
            }
            $v['contract_time'] = $contract_start_time . '-' . $contract_end_time;

            $validity_start_time = $v['partner_info']['validity_start_time'] ?
                time_format($v['partner_info']['validity_start_time'], 'Y/m/d') : '-';

            if($v['partner_info']['validity_start_time']){
                $validity_end_time = $v['partner_info']['validity_end_time'] ? date('Y/m/d', $v['partner_info']['validity_end_time']) : '永久';
            }else{
                $validity_end_time = $v['partner_info']['validity_end_time'] ? time_format($v['partner_info']['validity_end_time'], 'Y/m/d') : '-';
            }
            $v['validity_time'] = $validity_start_time . '-' . $validity_end_time;

            $create_time = date("Y-m-d H:i:s",$v["create_time"]);

            $v['verify_log'] = json_decode($v['verify_log'], true);
            $v["create"]= "{$v['verify_log']['create_user']} <br> {$v['verify_log']['create_time']}";
            if(isset($v['verify_log']['verify_user'])){
                if($v['verify_status'] == -1){
                    $ts = "审核拒绝";
                }else{
                    $ts = "审核通过";
                }
                $v["verify"]= "{$ts}({$v['verify_log']['verify_user']}) <br> {$v['verify_log']['verify_time']}";
            }else{
                $v["verify"] = '--';
            }

        }
        $count =  $model->where($map)->count();
        $page = set_pagination($count, $row);
        if ($page) {
            $this->assign('_page', $page);
        }
        $this->assign('menubtn',$this->menuAuth());
        $this->assign('listData', $data);
        $this->assign('count', $count);
        $this->assign('VerifyStatus', D("PartnerVerify")->VerifyStatus);
        $this->meta_title = '上游CP审核列表';
        $this->display();
    }

    //添加
    public function add()
    {
        $model = M("partner_verify", 'tab_');
        if ($_POST) {
            $save = I("post.");

            $save['relation']['collaborate_way'] = $save['part_a_type'];
            if ($save['part_a_type'] == 1) {
                $save['relation']['self_company_id'] = $save['part_b'];
            }
            if ($save['part_a_type'] == 2) {
                $save['relation']['self_company_id'] = $save['part_a'];
            }

            $this->checkData($save);

            try {
                $partnerService = new PartnerService();
                $partnerService->checkRelation($save['relation'] ?? []);
            } catch (\Exception $e) {
                $this->ajaxReturn(array(
                    'status' => 0, 
                    'info' => $e->getMessage()
                ));
            }

            $save['uid'] = UID;
            $save['create_time'] = time();

            $has_check = M("partner_verify","tab_")->where(["partner_name"=>$save['partner'],"verify_status"=>0])->field("id")->find();
            if ($has_check) {
                $this->error('已存在同名未审核的cp,请勿重复添加');
            }

            $has_check = M("partner","tab_")->where(["partner"=>$save['partner']])->field("id")->find();
            if ($has_check) {
                $this->error('已存在同名cp,请勿重复添加');
            }

            $res =D("PartnerVerify")->add_db($save);
            if ($res) {
                //操作日志
                addOperationLog(array(
                    "op_type"=>0,
                    "key"=>$save['partner'],
                    "url"=>U("Partner/lists",array("partner"=>$save['partner']))
                ));
                $this->success('保存成功,请联系管理尽快审核', U('index'));
            } else {
                $this->error('保存失败');
            }
        } else {
            $selfCompanies = M('company_info', 'tab_')->field('id,partner company_name,link_man,link_phone')->where(['status' => 1])->select();
            
            $this->assign('selfCompanies', $selfCompanies);
            $this->assign('commonset', M('Kuaijieicon')->where(['url' => 'Partner/add'])->find());
            $this->meta_title = '新增上游CP公司';
            $this->display();
        }
    }

    //编辑
    public function edit()
    {
        $model = M($this->modelName, 'tab_');

        if ($_POST) {
            $save = I("post.");
            $this->checkData($save);
            $save['relation']['collaborate_way'] = $save['part_a_type'];
            if ($save['part_a_type'] == 1) {
                $save['relation']['self_company_id'] = $save['part_b'];
            }
            if ($save['part_a_type'] == 2) {
                $save['relation']['self_company_id'] = $save['part_a'];
            }

            $res =D("PartnerVerify")->edit_db($save);
            if ($res === false) {
                $this->error('保存失败');
            } else {
                \Think\Log::actionLog('Partner/edit', 'partner', $id);
                addOperationLog(array(
                    "op_type"=>1,
                    "key"=>$save['partner'],
                    "url"=>U("Partner/lists",array("partner"=>$save['partner']))
                ));
                $this->success('保存成功,请联系管理尽快审核', U('index'));
            }
        } 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']='';
            }

            if ($data['validity_start_time']) {
                $data['validity_start_time'] = date('Y-m-d', $data['validity_start_time']);
            }else{
                $data['validity_start_time']='';
            }

            if ($data['validity_end_time']) {
                $data['validity_end_time'] = date('Y-m-d', $data['validity_end_time']);
            }else{
                $data['validity_end_time']='';
            }

            $relationWhere = '(first_company_type=1 and first_company_id=' . $data['id'] .
            ') or (second_company_type=1 and second_company_id=' . $data['id'] . ')';
            $relation =  M('company_relation', 'tab_')->where($relationWhere)->find();
            
            if ($relation) {
                if ($relation['first_company_type'] == 1 && $relation['first_company_id'] == $data['id']) {
                    $relation['collaborate_way'] = 1;
                    $relation['self_company_id'] = $relation['second_company_id'];
                } else {
                    $relation['collaborate_way'] = 2;
                    $relation['self_company_id'] = $relation['first_company_id'];
                }
            }

            $selfCompanies = M('company_info', 'tab_')->field('id,partner company_name,link_man,link_phone')->where(['status' => 1])->select();

            $this->assign('selfCompanies', $selfCompanies);
            $this->assign('relation', $relation);
            $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'));
    }
    public function verifyView()
    {
        if(!isset($_REQUEST['id'])) $this->error('数据异常', U('index'));
        $id = $_REQUEST['id'];
        $map['id'] = $id;
        $dbres = M("partner_verify", 'tab_')->find($id);
        $data = json_decode($dbres['partner_info'],true);
        

        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']='';
        }

        if ($data['validity_start_time']) {
            $data['validity_start_time'] = date('Y-m-d', $data['validity_start_time']);
        }else{
            $data['validity_start_time']='';
        }

        if ($data['validity_end_time']) {
            $data['validity_end_time'] = date('Y-m-d', $data['validity_end_time']);
        }else{
            $data['validity_end_time']='';
        }

        $selfCompanies = M('company_info', 'tab_')->field('id,partner company_name,link_man,link_phone')->where(['status' => 1])->select();

        $this->assign('selfCompanies', $selfCompanies);
        $this->assign('relation', $data['relation'] ?? null);

        $this->assign('data', $data);
        $this->assign('action', $action);
        $this->assign('commonset', M('Kuaijieicon')->where(['url' => 'Partner/edit'])->find());
        $this->meta_title ='审核信息查看';
        $this->display("show");
    }

    public function adminRefuse(){
        if(!isset($_REQUEST['ids'])) $this->error("参数错误");
        $ids = $_REQUEST['ids'];
        $dbres = M("partner_verify", 'tab_')->field("id,verify_status,verify_log")->where("id in ({$ids})")->select();
        foreach($dbres as $k=>&$v){
            if($v['verify_status'] != 0) continue;
            $v['verify_log'] = json_decode($v['verify_log'],true);
            $v['verify_log']['verify_user']=$this->admininfo["username"];
            $v['verify_log']['verify_time']=date("Y-m-d H:i:s");
            $v['verify_log'] = json_encode($v['verify_log']);
            $v['verify_status']=-1;
            $v["create_time"]=time();
            M("partner_verify", 'tab_')->save($v);
            addOperationLog(['op_type'=>1,'key'=>$v['id'],"op_name"=>"管理员审核",'url'=>U('index')]);
        }
        $this->ajaxReturn(array(
            'status' => 1,
            "info"=>"管理员审核拒绝成功"
        ));
    }

    //管理员成功
    public function adminAgree(){
        if(!isset($_REQUEST['ids'])) $this->error("参数错误");
        $ids = $_REQUEST['ids'];
        
        $records = M('partner_verify', 'tab_')->field("*")->where("id in ({$ids})")->select();

        $service = new PartnerService();
        foreach($records as $record) {
            $service->adminAgree($record);
        }
        
        $this->ajaxReturn(array(
            'status' => 1,
            "info"=>"管理员审核通过成功"
        ));
    }

    protected function checkData(&$save)
    {
        $partner = trim($save['partner']);
        $status = intval($save['status']);

        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)->field("id")->find();
        
        if ($res) {
            if(isset($save['id'])){
                if($save['id'] !=$res['id']){
                    $this->error('合作方已存在');
                }
            }else{
                $this->error('合作方已存在');
            }
        }

        // if(!empty(I('link_phone')) && !checkPhone(I('link_phone'))) {
        //     $this->error('联系电话格式不正确');
        // }
        // if(!empty(I('reg_phone')) && !checkPhone(I('reg_phone'))) {
        //     $this->error('注册电话格式不正确');
        // }
        if(!empty(I('taxation_rate')) && I('taxation_rate') > 0) {
            if(!checkNumber(I('taxation_rate'))){
                $this->error('税费费率格式错误');
            }else{
                $save['taxation_rate'] = ($save['taxation_rate'] ?: 0);
            }
        }else{
            $save['taxation_rate']=0;
        }
        if(!empty(I('channel_rate')) && I('channel_rate') > 0) {
            if(!checkNumber(I('channel_rate'))){
                $this->error('渠道费率格式不对');
            }else{
                $save['channel_rate'] = ($save['channel_rate'] ?: 0);
            }
        }else{
            $save['channel_rate']=0;
        }
        if(!empty(I('invoice_rate')) && I('invoice_rate') > 0) {
            if(!checkNumber(I('invoice_rate'))){
                $this->error('开票税点格式不对');
            }else{
                $save['invoice_rate'] = ($save['invoice_rate'] ?: 0);
            }
        }else{
            $save['invoice_rate']=0;
        }
        if(!empty(I('server_fee')) && !checkNumber(I('server_fee')) && I("has_server_fee") == 1) {
            $this->error('服务器费用格式不对');
        }else{
            if(empty(I('server_fee'))){
                $save['server_fee']=0;
            }else{
                $save['server_fee']=I('server_fee');
            }
        }
        $time = time();
        $save['contract_start_time'] = strtotime($save['contract_start_time']);
        $save['contract_end_time'] = strtotime($save['contract_end_time']);
        $save['validity_start_time'] = strtotime($save['validity_start_time']);
        $save['validity_end_time'] = strtotime($save['validity_end_time']);
        $save['last_up_time'] = $time;
    }

    public function menuAuth()
    {
        $addurl = U("addRelation");
        $mentBtn = [
            "adminAgree"=>"<a class='butn' id='adminAgree'>管理员审核通过</a>",
            "adminRefuse"=>"<a class='butn' id='adminRefuse' style='background-color: red;'>管理员审核拒绝</a>"
        ];
        $resarr = [];
        foreach ($mentBtn as $k => $v) {
            if(IS_ROOT){
                $resarr[] = $v;
            }else{
                if(in_array($k,$this->OpAuthList)){
                    $resarr[] = $v;
                }
            }
        }
        return $resarr;
    }

    protected function getAggregatePackage() {

        $client = new AggregateClient();

        $result = $client->api('aggregate-gamename', []);

        $this->aggregatePackageName = $result['data'];

    }

}