<?php
namespace Admin\Event;

use Think\Controller;

/**
 * 后台事件控制器
 * @author 王贺
 */
class SendEvent extends Controller
{
    /*
    *自选
    */
    public function add1()
    {
        $account = trim($_POST['account']);
        $amount = $_POST['amount'];
        if ($account == "") {
            $this->error("玩家账号不能为空", U('Deposit/send_lists'));
        }
        if(!is_check_account($account)){
            $this->error("账号不存在", U('Deposit/send_lists'));
        }
				
        if (!is_numeric($amount) || $amount <= 0 || !preg_match('/^[1-9](\d+)?$/',$amount)) {
            $this->error("请输入大于0的整数", U("Deposit/send_lists"));
            return false;
        }
        $add['order_number'] = "ZF_" . build_order_no();
        $add['pay_order_number'] = build_order_no();
        $add['user_id'] = get_user_id($account);
        $add['user_account'] = $account;
        $add['amount'] = $amount;
        $add['status'] = 0;
        $add['op_id'] = UID;
        $add['op_account'] = session("user_auth.username");
        $add['create_time'] = NOW_TIME;
        $prov = M("provide_user", "tab_")->add($add);
        $this->success("提交成功", U("Deposit/lists_sen",['type'=>2]));

    }


    /**
     * 多用户
     */
    public function add2()
    {
        $account = $_POST['pay_names'];
        $amount = $_POST['amountt'];
        if (empty($account)) {
            $this->error("充值人员不能为空");
        }
				
        if ($amount <= 0 || !preg_match('/^[1-9](\d+)?$/',$amount)) {
            $this->error("请输入大于0的整数");
        }
        $namearr = explode("\n", $account);
        static $a = 0;
        for ($i = 0; $i < count($namearr); $i++) {															
				
				$uid = check_account_is_existence(str_replace(array("\r\n", "\r", "\n"), "", $namearr[$i]));
				
				
            if($uid>0){
                $add['pay_order_number'] = build_order_no();
                $add['order_number'] = "ZF_" . build_order_no();
                $add['user_account'] = $namearr[$i];
                $add['user_id'] = $uid;
                $add['amount'] = $amount;
                $add['status'] = 0;
                $add['op_id'] = UID;
                $add['op_account'] = session("user_auth.username");
                $add['create_time'] = NOW_TIME;
                $prov = M("provide_user", "tab_")->add($add);
                if ($prov) {
                    $a++;
                }
            }
        }
        $b = count($namearr) - $a;
        $this->success("成功"."{$a}"."失败"."{$b}",U("Deposit/lists_sen/type/2"));
    }


    /**
     * 内充管理---导入Excel
     * @author 顽皮蛋 <shf_l@163.com>
     */
    public function add3()
    {
        header("Content-Type:text/html;charset=utf-8");
        $upload = new \Think\Upload();// 实例化上传类
        $upload->maxSize = 3145728;// 设置附件上传大小
        $upload->exts = array('xls', 'xlsx');// 设置附件上传类
        $upload->rootPath = './Uploads/'; // 设置附件上传目录
        $upload->savePath = 'excel/'; // 设置附件上传目录
        // 上传文件
        $info = $upload->uploadOne($_FILES['excelData']);
        $filename = './Uploads/' . $info['savepath'] . $info['savename'];
        $exts = $info['ext'];
        if (!$info) {// 上传错误提示错误信息
            if ($upload->getError() != "非法上传文件!"){
                $this->error($upload->getError());
            }
        } else {// 上传成功
            $this->charge_import($filename, $exts);
        }
    }




    //导入数据方法
    protected function charge_import($filename, $exts = 'xls')
    {
        //导入PHPExcel类库,因为PHPExcel没有用命名空间,只能inport导入
        //import("Org.Util.PHPExcel");
        vendor("PHPExcel.PHPExcel");
        //创建PHPExcel对象,注意,不能少了\
        $PHPExcel = new \PHPExcel();
        //如果excel文件后缀名为.xls,导入这个类
        if ($exts == 'xls') {
            //import("Org.Util.PHPExcel.Reader.Excel5");
            $PHPReader = new \PHPExcel_Reader_Excel5();
        } else if ($exts == 'xlsx') {
            //import("Org.Util.PHPExcel.Reader.Excel2007");
            $PHPReader = new \PHPExcel_Reader_Excel2007();
        }
        //载入文件
        $PHPExcel = $PHPReader->load($filename);
        //获取表中的第一个工作表,如果要获取第二个,把0改为1,依次类推
        $currentSheet = $PHPExcel->getSheet(0);
        //获取总列数
        $allColumn = $currentSheet->getHighestColumn();
        //获取总行数
        $allRow = $currentSheet->getHighestRow();
        //循环获取表中的数据,$currentRow表示当前行,从哪行开始读取数据,索引值从0开始
        for ($currentRow = 1; $currentRow <= $allRow; $currentRow++) {
            //从哪列开始,A表示第一列
            for ($currentColumn = 'A'; $currentColumn <= $allColumn; $currentColumn++) {
                //数据坐标
                $address = $currentColumn . $currentRow;
                //读取到的数据,保存到数组$arr中
                $data[$currentRow][$currentColumn] = $currentSheet->getCell($address)->getValue();
            }

        }
        $this->save_import($data);
    }

    //保存导入数据并返回错误信息
    public function save_import($data)
    {
        unset($data[1]);
        $errorNum = 0;
        $succNum = 0;
        $errorList = array();//存储错误数据;
        foreach ($data as $k => $v) {
            $errorList[$errorNum]['A'] = $v['A'];
            
            $errorList[$errorNum]['B'] = $v['B'];
            if (!is_check_account($v['A'])) {//用户名不存在
                $errorList[$errorNum]['D'] = '用户名不存在';
                $errorNum++;
                continue;
            }
						
            if ($v['B'] <= 0 || !preg_match('/^[1-9](\d+)?$/',$v['B'])) {//金额有问题
                $errorList[$errorNum]['D'] = '金额必须是大于0的整数';
                $errorNum++;
                continue;
            }
            $succNum++;
            $arr['user_account'] = $v['A'];
            $arr['op_id'] = UID;
            $arr['op_account'] = session("user_auth.username");
            $arr['user_nickname'] = get_user_nickname($v['A']);
            $arr['user_id'] = get_user_id($v['A']);
            $arr['pay_order_number'] = build_order_no();
            $arr['order_number'] = "ZF_" . build_order_no();
            $arr['amount'] = $v['B'];
            $arr['create_time'] = NOW_TIME;
            M('provide_user','tab_')->add($arr);
        }
        $a = json_encode($errorList);
        $json = urlencode(json_encode($errorList));
        $this->assign('errorNum', $errorNum);
        $this->assign('succNum', $succNum);
        $this->assign('status', 1);
        $this->assign('json', $json);
        $this->success('成功:' . $succNum . ';失败:' . $errorNum, U('Deposit/lists_sen/type/2'));
    }
}