<?php

namespace Admin\Controller;


class AmericaIpForbitController extends ThinkController
{

    public function index($p = 1) {

        $page = intval($p);
        $page = $page ? $page : 1; //默认显示第一页数据

        if (isset($_REQUEST['row'])) {
            $row = $_REQUEST['row'];
        } else {
            $row = 10;
        }

        $map = [];

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

        $data = M('forbit_ip','tab_')
            ->where($map)
            ->page($page,$row)
            ->order('create_time DESC')
            ->select();

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

            $data[$key]['create_time'] = date('Y-m-d H:i:s',$value['create_time']);

        }

        $count = M('forbit_ip','tab_')
            ->where($map)
            ->count();

        $appleInteriorBuyStatus = M('tool','tab_')->where(['name'=>'apple_interior_buy'])->getField('status');

        $setAppleInteriorBuyStatus = $appleInteriorBuyStatus?1:0;

        $this->checkListOrCountAuthRestMap($map,[]);

        $page = set_pagination($count, $row);

        $this->assign('_page', $page);

        $this->assign('apple_interior_buy',$appleInteriorBuyStatus);
        $this->assign('set_apple_interior_buy',$setAppleInteriorBuyStatus);

        $this->assign('data',$data);

        $this->display();

    }

    public function export() {

        $xlsName = 'ip限制白名单';

        $xlsCell = array(
            "玩家账号", "区域", '状态', '添加人', '添加时间'
        );

        $map = [];

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

        $csvFileName = $xlsName.'.csv';
        //设置好告诉浏览器要下载excel文件的headers
        header('Content-Description: File Transfer');
        header('Content-Type: application/vnd.ms-excel');
        header('Content-Disposition: attachment; filename="'. $csvFileName .'"');
        header('Expires: 0');
        header('Cache-Control: must-revalidate');
        header('Pragma: public');
        $fp = fopen('php://output', 'a');//打开output流
        mb_convert_variables('GBK', 'UTF-8', $xlsCell);
        fputcsv($fp, $xlsCell);//将数据格式化为CSV格式并写入到output流中

        $accessNum = M('forbit_ip','tab_')
            ->where($map)
            ->count();

        $accessNum =$accessNum['count'];

        $perSize = 2000;//每次查询的条数
        $pages   = ceil($accessNum / $perSize);

        for($i = 1; $i <= $pages; $i++) {
            $xlsData = M('forbit_ip','tab_')
                ->field('user_account,area,status,admin_account,create_time')
                ->where($map)
                ->limit(($i-1)*$perSize  ,$perSize)
                ->order('create_time DESC')
                ->select();

            foreach($xlsData as $value) {
                $value['create_time'] = date("Y-m-d H:i:s",$value['create_time']);

                if ($value['status'] == 0) {
                    $value['status'] = '限制';
                } else {
                    $value['status'] = '不限制';
                }

                mb_convert_variables('GBK', 'UTF-8', $value);
                fputcsv($fp, $value);
            }
            unset($xlsData);//释放变量的内存
            //刷新输出缓冲到浏览器
            ob_flush();
            flush();//必须同时使用 ob_flush() 和flush() 函数来刷新输出缓冲。
        }
        fclose($fp);

        $getData = $_GET;
        unset($getData['id']);
        unset($getData['xlsname']);

    }

    public function operateIp() {

        if (!I('id')) {
            $this->ajaxReturn(['code'=>1,'msg'=>'ID未选择']);
        } else {
            $id = I('id');
        }

        if (I('status')) {
            $status = I('status');
        } else {
            $status = 0;
        }


        $map['id'] = ['in',$id];


        $is_change = M('forbit_ip','tab_')->where(['id'=>['in',$id]])->save(['status'=>$status]);

        if ($is_change) {
            $this->ajaxReturn(['code'=>1]);
        } else {
            $this->ajaxReturn(['code'=>0]);
        }

    }

    public function del() {

        if (!I('id')) {
            $this->ajaxReturn(['code'=>1,'msg'=>'ID未选择']);
        } else {
            $id = I('id');
        }

        $is_del = $is_change = M('forbit_ip','tab_')->where(['id'=>['in',$id]])->delete();

        if ($is_del) {
            $this->ajaxReturn(['code'=>1]);
        } else {
            $this->ajaxReturn(['code'=>0]);
        }

    }

    public function add() {

        $this->display();

    }

    public function addUser() {

        $insert = [];

        $hav_user = M('user','tab_')->where(['account'=>I('account')])->find();

        $auth = $_SESSION['onethink_admin']['user_auth'];

        if (!$hav_user) {
            $this->error('用户不存在');
        }

        $hav_firbit = M('forbit_ip','tab_')->where(['user_account'=>I('account')])->find();

        if ($hav_firbit) {
            $this->error('该用户已添加封禁');
        }

        $insert['user_id'] = $hav_user['id'];
        $insert['user_account'] = I('account');
        $insert['area'] = I('area');
        $insert['status'] = I('status');
        $insert['admin_id'] = $auth['uid'];
        $insert['admin_account'] = $auth['username'];
        $insert['create_time'] = time();
        $insert['remarks'] = '';

        $is_insert = M('forbit_ip','tab_')->add($insert);

        if ($is_insert) {
            $this->success('添加成功',U('AmericaIpForbit/index'));
        } else {
            $this->error('添加失败');
        }


    }

    public function setAppleInteriorBuyStatus() {

        $status = I('status');

        if (!$status && $status!='0') {
            $this->ajaxReturn(['code'=>0]);
        }

        $is_success = M('tool','tab_')->where(['name'=>'apple_interior_buy'])->save(['status'=>$status]);

        if ($is_success) {
            $this->ajaxReturn(['code'=>1]);
        } else {
            $this->ajaxReturn(['code'=>0]);
        }

    }


}