<?php

namespace Admin\Controller;

use User\Api\UserApi as UserApi;
use OSS\OssClient;
use OSS\Core\OSsException;
use Think\Controller;

/**
 * 后台首页控制器
 * @author 麦当苗儿 <zuojiazi@vip.qq.com>
 */
class PromoteCompanyController extends ThinkController
{
    private $modelName = 'PromoteCompany';

    //列表
    public function lists()
    {
        $model = M($this->modelName, 'tab_');
        $is_export= false;
        if (isset($_REQUEST['export']) && $_REQUEST['export']==1){
            $is_export = true;
        }
        $map = [];
        $promotemap=[];
        $company_name = trim(I('company_name'));
        if($company_name) $map['tab_promote_company.company_name'] = array('like',"%{$company_name}%");
        if (isset($_REQUEST['status']) && $_REQUEST['status'] !== '') {
            $status = intval($_REQUEST['status']);
            $map['tab_promote_company.status'] = $status;
            $parameter['status'] = $status;
        }
        if (isset($_REQUEST['promote_id'])) {
            $map['id'] =  M("Promote","tab_")->field("company_id")->where("id={$_REQUEST['promote_id']}")->find()['company_id'];
            $promotemap['id']=$_REQUEST['promote_id'];
        }
        if (isset($_REQUEST['company_type'])) {
            $map['company_type'] = $_REQUEST['company_type'];
        }
        

        $page = intval(I('get.p', 0));
        $page = $page ? $page : 1; //默认显示第一页数据
        $row = intval(I('row', 0));
        $row = empty($row) ? 10 : $row;//每页条数

        //获取分页公司数据
        $companyres = $model->field("*")
                    ->where($map)
                    ->order("last_up_time desc");
        if($is_export){
            $companyres = $companyres->select();
        }else{
            $companyres = $companyres->page($page,$row)->select();
        }
        //获取公司id
        $companyids = implode(',', array_column($companyres, 'id'));
        //获取所属会长及其游戏分成
        $promotemap['company_id']=["in",$companyids];
        $promotemap['level'] = 1;
        
        $promoteres = M("Promote","tab_")
                    ->field("id,company_id,account,settlement_type")
                    ->where($promotemap)
                    ->select();
        //获取会长id
        $promoteids = implode(',', array_column($promoteres, 'id'));
        //获取游戏比例
        $gameradiores = M("PromoteGameRatio","tab_")
                        ->alias("pg")
                        ->field("pg.ratio,pg.relation_game_id,pg.turnover_ratio,pg.game_id,pg.promote_id,ga.relation_game_name,ga.game_type_name")
                        ->join("tab_game ga ON pg.game_id = ga.id")
                        ->where(array(
                            "status"=>1,
                            "promote_id"=>["in",$promoteids]
                        ))
                        ->group("relation_game_id,promote_id")
                        ->select();
        //比例数据处理
        $gameradiotemp = array();
        foreach($gameradiores as $k=>$v){
            $turnover_ratio = json_decode($v['turnover_ratio'],true);
            $v['turnover_ratio'] = array(
                array("ratio"=>$v['ratio']."%","name"=>"默认比例")
            );
            
            foreach($turnover_ratio as $ke=>$va){
                $t=array("ratio"=>$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']);
            unset($v["ratio"]);
            unset($v["relation_game_id"]);
            unset($v["game_id"]);
            $gameradiotemp[$v['promote_id']][]=$v;
        }
        unset($gameradiores);
        //会长数据处理
        $promoterestemp=[];
        foreach($promoteres as $k=>$v){
            if(array_key_exists($v['id'],$gameradiotemp)){
                //存在
                $v['list'] = $gameradiotemp[$v['id']];
                foreach($gameradiotemp[$v['id']] as $ke=>$va){
                    $v['row'] += $va['row'];
                }
            }else{
                $v['list']=[
                    ["relation_game_name"=>"--","game_type_name"=>"--",
                        "turnover_ratio"=>[
                            ["name"=>"--","ratio"=>"--"]
                        ],
                        "row"=>1
                    ]
                ];
                $v["row"]=1;
            }
            if($v['settlement_type'] == 1){
                $v['settlement_type']="周结";
            }else{
                $v['settlement_type']="月结";
            }
            $promoterestemp[$v['company_id']]["list"][]=$v;
        }
        unset($promoteres);
        //处理公司数据
        foreach($companyres as $k=>&$v){
            if(array_key_exists($v['id'],$promoterestemp)){
                //存在
                $v['list'] = $promoterestemp[$v['id']]['list'];
                foreach($promoterestemp[$v['id']] as $ke=>$va){
                    foreach($va as $key=>$val){
                        $v['row'] += $val['row'];
                    }
                    
                }
            }else{
                //空值
                $v['list']=[
                    [
                        "account"=>"--",
                        "settlement_type"=>"--",
                        'list'=>[
                            [
                                "relation_game_name"=>"--",
                                "game_type_name"=>"--",
                                "turnover_ratio"=>[
                                    ["name"=>"--","ratio"=>"--"]
                                ],
                                "row"=>1
                            ]
                        ]
                    ]
                ];
                $v['row'] += 1;
            }
            if( $v["contact_begin"] >0 ){
                $v["contact_begin"] = date('Y/m/d', $v["contact_begin"]);
            }else{
                $v["contact_begin"] = "--";
            }
            if( $v["contact_end"] > 0){
                $v["contact_end"] = date('Y/m/d', $v["contact_end"]);
            }else{
                $v["contact_end"] = "--";
            }
            if($v['platform_name'] == '' || $v['platform_name'] == "0"){
                $v['platform_name'] = "--";
            }
            
            $v["is_sign_contact"] = ($v["is_sign_contact"]=="1" ? "是" :'否');
            $v["company_type"] = ($v["company_type"]=="1" ? "公司" :'个人');
            $v["company_belong"] = ($v["company_belong"]=="0" ? "内团" : ($v["company_belong"]=="1" ? "外团" : ($v["company_belong"]=="2" ? "外团分发" : '无')));
        }
        // dd($companyres);
        
     
        //公司及会长数量统计
        $companycount = $model->field("id")->where($map)->select();
        $count = count($companycount);
        $companyallids = implode(',', array_column($companycount, 'id'));
        $promotemap['company_id']=["in",$companyallids];
        $promotecount = M("Promote","tab_")->where($promotemap)->count();

        $this->assign('listData', $companyres);
        $this->assign('count', $count);
        $this->assign('promotecount', $promotecount);
        if($is_export){

            $getData = $_GET;
            unset($getData['export']);

            addOperationLog(['op_type'=>3,'key'=>getNowDate(),'op_name'=>'导出推广公司','url'=>U('PromoteCompany/lists'),'menu'=>'推广员-推广员管理-推广公司管理-导出推广公司']);

            //导出
            $this->display("export");
            die();
        }
        //分页
        $parameter['p'] = $page;
        $parameter['row'] = $row;
        $page = set_pagination($count, $row, $parameter);
        if ($page) {
            $this->assign('_page', $page);
        }
        //分配其他页面需要参数
        $this->assign('promoteList', getPromoteByLevel(1));
        $this->assign('commonset', M('Kuaijieicon')->where(['url' => 'Partner/lists'])->find());
        $this->meta_title = '推广公司';
        $this->display();
    }

    //添加
    public function add()
    {
        if ($_POST) {
            $company_name = I('post.company_name', '');
            $model = M($this->modelName, 'tab_');
            $map['company_name'] = $company_name;
            $res = $model->where($map)->getField('id');
            if ($res) {
                $this->ajaxReturn(array(
                    'status' => 0, 
                    'info' => "推广公司已经存在"
                ));
            }
            $time = time();
            $save = I('post.');//前端已经验证
            $save['create_time'] = $time;
            $save['last_up_time'] = $time;
            $save['contact_begin']=strtotime($save['contact_begin']);
            $save['contact_end']=strtotime($save['contact_end']);
            
            if(isset($save['resources'])){
                $save['resources'] = json_encode($save['resources'],JSON_UNESCAPED_UNICODE);
            }
            $res = $model->add($save);
            if ($res) {

                addOperationLog(['op_type'=>0,'key'=>$company_name,'op_name'=>'新增推广公司','url'=>U('PromoteCompany/lists'),'menu'=>'推广员-推广员管理-推广公司管理-新增推广公司']);

                \Think\Log::actionLog('PromoteCompany/add', 'partner', $res);
                $array=array(
                    "info"=>"添加成功",
                    "status"=>1
                );
                $this->ajaxReturn($array);
            } else {
                $this->ajaxReturn(array(
                    'status' => 0, 
                    'info' => "保存失败"
                ));
            }
        } else {
            $this->assign('commonset', M('Kuaijieicon')->where(['url' => 'PromoteCompany/add'])->find());
            $this->meta_title = '新增推广公司';
            $this->display();
        }
    }
    //查看
    public function view()
    {
        $model = M($this->modelName, 'tab_');
        $id = $_REQUEST['id'] ?: 0;
        $map['id'] = $id;
        $data = $model->field('*')->find($id);
        if (empty($data)) {
            $this->error('数据异常', U('lists'));
        }
        if($data['contact_begin'] >0){
            $data['contact_begin']=date("Y-m-d",$data['contact_begin']);
        }else{
            $data['contact_begin']='';
        }
        if($data['contact_end'] >0){
            $data['contact_end']=date("Y-m-d",$data['contact_end']);
        }else{
            $data['contact_end']='';
        }
        if($data['resources'] == ''){
            $data['resources'] ="[]";
        }
        $this->assign('data', $data);
        $this->display();
    }
    

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

        if ($_POST) {
            $time = time();
            $save = I('post.');//前端已经验证
            $save['create_time'] = $time;
            $save['last_up_time'] = $time;
            $save['contact_begin']=strtotime($save['contact_begin']);
            $save['contact_end']=strtotime($save['contact_end']);
            
            if(isset($save['resources'])){
                $save['resources'] = json_encode($save['resources'],JSON_UNESCAPED_UNICODE);
            }
            $res = $model->save($save);
            if ($res) {
                \Think\Log::actionLog('PromoteCompany/edit', 'partner', $res);

                addOperationLog(['op_type'=>1,'key'=>$_POST['company_name'],'op_name'=>'编辑推广公司','url'=>U('PromoteCompany/lists'),'menu'=>'推广员-推广员管理-推广公司管理-编辑推广公司']);

                $array=array(
                    "info"=>"修改成功",
                    "status"=>1
                );
                $this->ajaxReturn($array);
            } else {
                $this->ajaxReturn(array(
                    'status' => 0, 
                    'info' => "修改失败"
                ));
            }
        } else {
            $id = $_REQUEST['id'] ?: 0;
            $map['id'] = $id;
            $data = $model->field('*')->find($id);
            if (empty($data)) {
                $this->error('数据异常', U('lists'));
            }
            if($data['contact_begin'] >0){
                $data['contact_begin']=date("Y-m-d",$data['contact_begin']);
            }else{
                $data['contact_begin']='';
            }
            if($data['contact_end'] >0){
                $data['contact_end']=date("Y-m-d",$data['contact_end']);
            }else{
                $data['contact_end']='';
            }
            if($data['resources'] == ''){
                $data['resources'] ="[]";
            }
            
            $this->assign('data', $data);
            $this->display();
        }
    }

    //删除
    public function del()
    {
        $model = M($this->modelName, 'tab_');
        if (!empty($_POST['id'])) {
            if (!is_array($_POST['id'])) {
                $this->error('参数异常');
            }

            $id = $_POST['id'];
        } else {
            $id = intval(I('get.id', 0));
            if ($id == 0) {
                $this->error('参数异常');
            }
        }
        //删除所有资源
        $data = $model->field('resources')->find($id)['resources'];
        $data = json_encode($data,true);
        if(is_array($data) && count($data) >0){
            foreach($data as $k=>$v){
                unlink("./".$v['file_path']);
            }
        }

        $companyData = M('promote_company','tab_')->field('company_name')->where(['id'=>$_REQUEST['id']])->find();

        $res = $model->delete($id);
        //删除对应的推广员
        if ($res === false) {
            $this->error('删除失败');
        }

//        echo M()->_sql();die();

        addOperationLog(['op_type'=>2,'key'=>$companyData['company_name'],'op_name'=>'删除推广公司','url'=>U('PromoteCompany/lists'),'menu'=>'推广员-推广员管理-推广公司管理-删除推广公司']);

        $this->success('删除成功', U('lists'));
    }
    //处理上传图片
    public function saveFile()
    {
        $path = '/Uploads/';
        $upload = new \Think\Upload();// 实例化上传类
        $upload->maxSize   =     0 ;// 设置附件上传大小
        $upload->exts      =    '';// 设置附件上传类型
        $upload->rootPath  =     '.'.$path; // 设置附件上传根目录
        $upload->savePath  =     ''; // 设置附件上传(子)目录
        // 上传文件 
        $info   =   $upload->upload();
        // dump($info);
        if(!$info) {// 上传错误提示错误信息
            $msg = $upload->getError();
            $array= array('status' => 0, 'info' => $msg);
        }else{// 上传成功
            $array=array(
                "info"=>"上传成功",
                "status"=>1,
                "file_path"=>$path.$info['file']['savepath'].$info['file']['savename'],
                "file_name"=>$_POST['file_name'],
                "file_type"=>$_FILES['file']['type'],
                "file_size"=>$_FILES['file']['size'],
                "upload_time"=>date("Y-m-d H:i:s",time())
            );
        }
        $this->ajaxReturn($array);
    }
    //删除图片
    public function delFile()
    {
        $id = $_REQUEST['id'];
        $file_path = $_REQUEST['file_path'] ?: false;
        unlink("./".$file_path);
        if($id == 0){
            $this->ajaxReturn(array(
                'status' => 1,
                 'info' => "删除成功"
            ));
        }else{
            //需要修改
            $array = array(
                "resources"=>json_encode($_REQUEST['resources'],JSON_UNESCAPED_UNICODE)
            );
            $res = M($this->modelName, 'tab_')->where("id='{$id}'")->save($array);
            if($res === false){
                $this->ajaxReturn(array(
                    'status' => 0,
                     'info' => "删除保存失败"
                ));
            }else{
                $this->ajaxReturn(array(
                    'status' => 1,
                     'info' => "删除成功"
                ));
            }
        }
        # code...
    }
}