<?php

namespace App\Http\Controllers\Web\Recruit;

use App\Http\Controllers\Web\WebBaseController;
use Illuminate\Support\Facades\Validator;
use Illuminate\Support\Facades\DB;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Storage;
use App\Repositories\PmsRepository;
use PhpOffice\PhpWord\TemplateProcessor;
use App\Services\Common\SmsService;
use PhpOffice\PhpSpreadsheet\Spreadsheet;
use PhpOffice\PhpSpreadsheet\IOFactory;
use App\Exceptions\ResponseException;
use PhpOffice\PhpSpreadsheet\Cell\DataType;

class ApiController extends WebBaseController
{
    protected $pmsRepository;
    private $smsService;

    public function __construct(PmsRepository $pmsRepository, SmsService $smsService)
    {
        $this->pmsRepository = $pmsRepository;
        $this->smsService    = $smsService;
        header('Access-Control-Allow-Origin:*');
        header('Access-Control-Allow-Methods:GET,POST,PUT,DELETE');
        header('Access-Control-Allow-Headers:Origin, Content-Type, Cookie, Accept, X-CSRF-TOKEN');
        header('Access-Control-Allow-Credentials:true');

    }

    /**
     * 获得当前登录 的用户对象
     * @return false|mixed|string
     */
    public function getUser()
    {
//        $res['isLogin'] = 1;
//        $res['status'] = 1;
//        $res['user'] = [
//            'name'  => 'test',
//            'pmsNum'    => 1
//        ];
//
//        return response()->json($res);

        $user = parent::getLoginUser();
        $res  = [];
        if (!$user) {
            $res['isLogin'] = 0;
            $res['status']  = 1;
            $res['user']    = null;
        } else {
            $condition4 = [
                'msgtouid' => $user->id,
                'utype'    => $user->utype,
                'new'      => 1,
            ];
            $pms        = $this->pmsRepository->getPmsCount($condition4);
            switch ($user->utype) {
                case '1':
                    $name = $user->companyname;
                    break;
                case '2':
                    $memberService = app('App\Services\Person\MemberService');
                    $name          = $memberService->getName();
                    break;
            }

            $res['isLogin'] = 1;
            $res['status']  = 1;
            $res['user']    = [
                'name'   => $name,
                'pmsNum' => $pms,
            ];

        }
        return json_encode($res);
    }

    public function getSignupUser()
    {
        $user = parent::getLoginUser();
//        $user = new \StdClass();
//        $user->id = 59041;
        if (!$user) {
            return response()->json(['isLogin' => 0, 'status' => 0, 'user' => null, 'msg' => '您尚未登录']);
        }

        return $user;
    }

    public function userCheck()
    {
        $user = parent::getLoginUser();
        if (!$user) {
            $res = ['isLogin' => 0, 'status' => 0, 'user' => $user, 'msg' => '您尚未登录', 'ret' => false];
            return $res;
        }
        $admin = ['59041', '161303', '159761', '148935', '150282'];
        if (!in_array($user->id, $admin)) {
            $res = ['isLogin' => 1, 'status' => 0, 'user' => null, 'msg' => '您没有权限', 'url' => 'http://www.jucai.gov.cn', 'ret' => false];
            return $res;
        }
        return ['ret' => true, 'user' => $user];
    }

    /**
     * 上传文件的方法
     * @param Request $request
     * @return \Illuminate\Http\JsonResponse
     */
    public function upload(Request $request)
    {
        $file = $request->file('file');
        if ($file->isValid()) { //判断文件是否存在
            //获取文件的扩展名
            $ext = $file->getClientOriginalExtension();

            if (!in_array(strtolower($ext), ['jpg', 'jpeg', 'png', 'doc', 'docx', 'pdf'])) {
                $res['status'] = 0;
                $res['msg']    = '文件格式不正确';
            } else {
                //获取文件的绝对路径
                $path = $file->getRealPath();

                $oldname = $file->getClientOriginalName();

                //定义文件名
                $filename = 'storage/recruit/' . uniqid() . mt_rand(10000, 99999) . '.' . $ext;

                //存储文件。disk里面的public。总的来说,就是调用disk模块里的public配置
                Storage::disk('public')->put($filename, file_get_contents($path));

                $res['status']   = 1;
                $res['filename'] = $oldname;
                $res['path']     = "/storage/" . $filename;
                $res['msg']      = '上传成功';
            }
        } else {
            $res['status'] = 0;
            $res['msg']    = '上传失败';
        }
        return response()->json($res);
    }

    /**
     * 专用型招考报名保存
     * @param Request $request
     * @return \Illuminate\Http\JsonResponse
     */
    public function save(Request $request)
    {
        $user     = $this->getSignupUser();
        $uid      = $user->id;
        $rules    = [
            'realname'            => 'required',
            'sex'                 => 'required',
            'birthday'            => 'required',
            'native_place'        => 'required',
            'post_id'             => 'required',
            'political_attitudes' => 'required',
            'edu_type'            => 'required',
            'education'           => 'required',
            'school'              => 'required',
            'degree'              => 'required',
            'pro'                 => 'required',
            'address'             => 'required',
            'mobile'              => 'required',
            'email'               => 'required',
            'nation'              => 'required',
            'card'                => 'required',
            'house_register'      => 'required',
            'resume'              => 'required',
            //'family' => 'required',
            'avatar'              => 'required',
            'front_card'          => 'required',
            'back_card'           => 'required',
            'concat_name'         => 'required',
            'concat_mobile'       => 'required',
            //'diploma_img' => 'required',
            //'degree_img' => 'required',
            //'xuexin_img' => 'required'
        ];
        $messages = [
            'realname.required'            => '请填写姓名',
            'sex.required'                 => '请填写性别',
            'birthday.required'            => '请填写出生日期',
            'native_place.required'        => '请填写籍贯',
            'political_attitudes.required' => '请填写政治面貌',
            'edu_type.required'            => '请选择教育类型',
            'education.required'           => '请输入学历',
            'school.required'              => '请输入毕业院校',
            'degree.required'              => '请输入学位',
            'pro.required'                 => '请输入专业',
            'address.required'             => '请填写通信地址',
            'mobile.required'              => '请填写手机号码',
            'email.required'               => '请填写电子邮箱',
            'post_id.required'             => '请选择报名岗位',
            'nation.required'              => '请填写民族',
            'card.required'                => '请填写身份证号码',
            'house_register.required'      => '请填写户籍所在地',
            'resume.required'              => '请填写个人简历',
            //'family.required' => '请填写家庭成员及主要社会关系',
            'avatar.required'              => '请上传彩色免冠照',
            'front_card.required'          => '请上传身份证正面照',
            'back_card.required'           => '请上传身份证反面照',
            'concat_name.required'         => '请填写联系人姓名',
            'concat_mobile.required'       => '请填写联系人手机号码',
            //'diploma_img.required' => '请上传毕业证书照',
            //'degree_img.required' => '请上传学位证书',
            //'xuexin_img.required' => '请上传学信网证书'
        ];
        //根据招聘场次不同验证所需要的材料
        $rid = $request->input('rid');
        switch (intval($rid)) {
            case 6:
                //根据报名岗位判断
                $post = $request->input('post_id');
                if (in_array($post, [14, 15, 16, 17, 18, 20, 21, 23, 24])) {
                    $rules['work_approve']             = 'required';
                    $messages['work_approve.required'] = '您所报名的岗位需要上传工作经历证明';
                }
                if (in_array($post, [14, 18, 20, 21, 25, 29, 30])) {
                    $rules['work_pro_img']             = 'required';
                    $messages['work_pro_img.required'] = '您所报名的岗位需要上传职(执)业资格证书、专业技术资格(职务)证书';
                }
                if ($post == 28) {
                    $rules['join_time']                = 'required';
                    $messages['join_time.required']    = '您所报名的岗位需要填写入党时间,格式为年月';
                    $rules['work_approve']             = 'required';
                    $messages['work_approve.required'] = '您所报名的岗位需要党员证明';
                }
                if (in_array($post, [19, 20, 27])) {
                    $rules['sex']             = 'required|accepted';
                    $messages['sex.accepted'] = '您所报名的岗位限制男性报名';

                }
                break;
        }

        $res         = [
            'status' => 0,
            'data'   => '',
            'msg'    => '',
        ];
        $create_data = $request->all();
        $validator   = Validator::make($create_data, $rules, $messages);

        if ($validator->fails()) {
            $msg        = $validator->errors()->all();
            $res['msg'] = $msg[0];
            echo json_encode($res);
        } else {
            $data   = $request->only('realname', 'sex', 'birthday', 'avatar', 'post_id', 'nation', 'native_place', 'political_attitudes', 'titles', 'work', 'house_register', 'join_time', 'edu_type', 'education', 'school', 'degree', 'pro', 'address', 'card', 'mobile', 'email', 'concat_name', 'concat_mobile', 'resume', 'training', 'rewards_and_punishments', 'introduce', 'front_card', 'back_card', 'diploma_img', 'degree_img', 'xuexin_img', 'work_pro_img', 'work_approve', 'operation', 'rid', 'id');
            $family = $request->input('family');
            //对入库数据处理
            $data['birthday'] = strtotime($data['birthday']);
            switch ($data['edu_type']) {
                case '1':
                case 1:
                case '全日制教育':
                    $data['edu_type'] = 1;
                    break;
                case '2':
                case 2:
                case '在职教育':
                    $data['edu_type'] = 2;
                    break;
            }

            if ($data['operation'] == 2) {
                $data['status'] = 1;
                $data['check']  = 0;
                $msg            = '报名成功,请等待审核';
            } else {
                $data['status'] = 0;
                $data['check']  = 0;
                $msg            = '保存成功';
            }
            unset($data['operation']);

            //处理工作证明
            if (is_array($data['work_approve'])) {
                $imgs = [];
                foreach ($data['work_approve'] as $k => $v) {
                    if (is_array($v)) {
                        array_push($imgs, $v['url']);
                    } else {
                        array_push($imgs, $v);
                    }
                }
                $data['work_approve'] = implode(',', $imgs);
            }

            //处理职业资格或职称证明
            if (is_array($data['work_pro_img'])) {
                $imgs = [];
                foreach ($data['work_pro_img'] as $k => $v) {
                    if (is_array($v)) {
                        array_push($imgs, $v['url']);
                    } else {
                        array_push($imgs, $v);
                    }
                }
                $data['work_pro_img'] = implode(',', $imgs);
            }

            //判断是否已经有存在的报名记录
            if (array_key_exists('id', $data) && $data['id'] > 0) {
                //如果已经存在记录
                $id   = $data['id'];
                $info = DB::table('recruit_entry')->where('id', $id)->where('uid', $uid)->first();
                if (!$info) {
                    return response()->json(['status' => 0, 'msg' => '没有权限修改']);
                }
                unset($data['id']);
                DB::table('recruit_entry')->where('id', $id)->update($data);
                if ($family) {
                    foreach ($family as $v) {
                        if (array_key_exists('id', $v)) {
                            $item = DB::table('recruit_family')->find($v['id']);
                            if ($item) {
                                if ($item->uid == $uid) {
                                    $data = [
                                        'appellation'         => $v['appellation'],
                                        'realname'            => $v['realname'],
                                        'birthday'            => strtotime($v['birthday']),
                                        'political_attitudes' => $v['political_attitudes'],
                                        'work'                => $v['work'],
                                    ];
                                    DB::table('recruit_family')->where('id', $v['id'])->update($data);
                                }
                            }
                        } else {
                            $item                        = [];
                            $item['appellation']         = $v['appellation'];
                            $item['realname']            = $v['realname'];
                            $item['birthday']            = strtotime($v['birthday']);
                            $item['political_attitudes'] = $v['political_attitudes'];
                            $item['work']                = $v['work'];
                            $item['eid']                 = $info->id;
                            $item['uid']                 = $uid;
                            DB::table('recruit_family')->insert($item);
                        }
                    }
                }
            } else {
                //以证件号码进行二次判断
                $info = DB::table('recruit_entry')->where('card', $data['card'])->first();
                if ($info) {
                    if ($info->uid != $uid) {
                        return response()->json(['status' => 0, 'msg' => '该证件已通过其他账号报名,请检查']);
                    }
                    $id = $info->id;
                    DB::table('recruit_entry')->where('id', $info->id)->update($data);
                    if ($family) {
                        foreach ($family as $v) {
                            if (array_key_exists('id', $v)) {
                                $item = DB::table('recruit_family')->find($v['id']);
                                if ($item) {
                                    if ($item->uid == $uid) {
                                        $data = [
                                            'appellation'         => $v['appellation'],
                                            'realname'            => $v['realname'],
                                            'birthday'            => strtotime($v['birthday']),
                                            'political_attitudes' => $v['political_attitudes'],
                                            'work'                => $v['work'],
                                        ];
                                        DB::table('recruit_family')->where('id', $v['id'])->update($data);
                                    }
                                }
                            } else {
                                $item                        = [];
                                $item['appellation']         = $v['appellation'];
                                $item['realname']            = $v['realname'];
                                $item['birthday']            = strtotime($v['birthday']);
                                $item['political_attitudes'] = $v['political_attitudes'];
                                $item['work']                = $v['work'];
                                $item['eid']                 = $info->id;
                                $item['uid']                 = $uid;
                                DB::table('recruit_family')->insert($item);
                            }
                        }
                    }
                } else {
                    $data['uid']        = $uid;
                    $data['createtime'] = time();
                    $id                 = DB::table('recruit_entry')->insertGetId($data);
                    if ($family) {
                        foreach ($family as $v) {
                            $item                        = [];
                            $item['appellation']         = $v['appellation'];
                            $item['realname']            = $v['realname'];
                            $item['birthday']            = strtotime($v['birthday']);
                            $item['political_attitudes'] = $v['political_attitudes'];
                            $item['work']                = $v['work'];
                            $item['eid']                 = $id;
                            $item['uid']                 = $uid;
                            DB::table('recruit_family')->insert($item);
                        }
                    }
                }
            }
            return response()->json($res = ['status' => 1, 'data' => $id, 'msg' => $msg]);
        }
    }

    /**
     * 查看可以报名的场次
     * @param Request $request
     */
    public function signup_list(Request $request)
    {
        $page  = $request->input('page');
        $title = $request->input('title');
        if ($title) {
            $where[] = ['name', 'like', '%' . $title . '%'];
        }
        $where[] = ['status', '=', 1];
        $where[] = ['step', '=', 1];//仅可查看可以报名的
        $total   = DB::table('recruit')->where($where)->count();
        $result  = DB::table('recruit')->where($where)->offset(10 * ($page - 1))->limit(10 * $page)->get()->toArray();
        $list    = [];
        if ($result) {
            foreach ($result as $k => $v) {
                switch ($v->step) {
                    case '1':
                        $step = '报名';
                        break;
                    case '2':
                        $step = '审核';
                        break;
                    case '3':
                        $step = '笔试';
                        break;
                    case '4':
                        $step = '上机测试';
                        break;
                    case '5':
                        $step = '面试';
                        break;
                    case '6':
                        $step = '复试';
                        break;
                    case '7':
                        $step = '体检';
                        break;
                    case '8':
                        $step = '公示';
                        break;
                    case '9':
                        $step = '结束';
                        break;
                    default:
                        $step = '准备中';
                        break;
                }
                $item = [
                    'id'    => $v->id,
                    'name'  => $v->name,
                    'start' => date("Y-m-d", $v->start),
                    'end'   => date("Y-m-d", $v->end),
                    'step'  => $step,
                ];
                array_push($list, $item);
            }
            $res = [
                'status' => 1,
                'data'   => [
                    'list'  => $list,
                    'total' => $total,
                ],
                'msg'    => '暂无数据',
            ];
            echo json_encode($res);
        } else {
            $res = [
                'status' => 1,
                'data'   => [
                    'list'  => [],
                    'total' => 0,
                ],
                'msg'    => '暂无数据',
            ];
            echo json_encode($res);
        }
    }

    /**
     * 获取招考报名的详细信息
     * @param Request $request
     * @return \Illuminate\Http\JsonResponse
     */
    public function signup_detail(Request $request)
    {
        $user = $this->getSignupUser();
        $uid  = $user->id;

        $id = $request->input('id');
        if (!$id) {
            $res = [
                'status' => 0,
                'data'   => '',
                'msg'    => '请指定招考场次',
            ];
            return response()->json($res);
        } else {
            $info = DB::table('recruit')->find($id);
            if (!$info) {
                $res = [
                    'status' => 0,
                    'data'   => '',
                    'msg'    => '找不到对应的招考场次',
                ];
                return response()->json($res);
            } else {

                switch ($info->type) {
                    case '2':
                        $enterprise      = [];
                        $enterprise_list = DB::table('recruit_enterprise')->where('rid', $info->id)->get()->toArray();
                        foreach ($enterprise_list as $k => $v) {
                            $sub_opt = [];
                            $sub     = DB::table('recruit_enterprise_post')->where('eid', $v->id)->where('rid', $info->id)->get()->toArray();
                            foreach ($sub as $key => $val) {
                                $item = [
                                    'value' => $val->id,
                                    'label' => $val->code . " " . $val->name,
                                ];
                                array_push($sub_opt, $item);
                            }
                            $item = [
                                'value' => $v->id,
                                'label' => $v->label,
                                'post'  => $sub_opt,
                            ];
                            array_push($enterprise, $item);
                        }
                        $info->post = $enterprise;
                        $entry      = DB::table('recruit_internship')->where('rid', $info->id)->where('uid', $uid)->first();

                        if ($entry) {
                            $entry->birthday   = date("Y-m-d", $entry->birthday);
                            $entry->check_time = date("Y-m-d", $entry->check_time);
                            $entry->sex        = (string)$entry->sex;
                            $entry->class      = (string)$entry->class;
                            if ($info->step >= 3) {
                                //TODO  笔试
                            }
                            if ($info->step >= 4) {
                                $interview        = DB::table('recruit_exam_interview')->where('recruit_id', $info->id)->where('entry_id', $entry->id)->first();
                                $entry->interview = $interview;
                            }
                            $info->entry = $entry;
                        } else {
                            if (time() > $info->end) {
                                return response()->json(['status' => 0, 'msg' => '报名已截止']);
                            }
                        }
                        break;
                    default:

                        $post       = DB::table('recruit_post1')->where('rid', $info->id)->get()->toArray();
                        $info->post = $post;
                        $entry      = DB::table('recruit_entry')->where('rid', $info->id)->where('uid', $uid)->first();
                        if (!$entry && time() > $info->end) {
                            return response()->json(['status' => 0, 'msg' => '报名已截止']);
                        }
                        if ($entry) {
                            $entry->birthday   = date("Y-m-d", $entry->birthday);
                            $entry->check_time = date("Y-m-d", $entry->check_time);
                            switch ($entry->edu_type) {
                                case 1:
                                    $entry->edu_type = '全日制教育';
                                    break;
                                case 2:
                                    $entry->edu_type = '在职教育';
                                    break;
                                default:
                                    break;
                            }
                            //处理工作证明
                            if (!empty($entry->work_approve)) {
                                $imgs                = explode(',', $entry->work_approve);
                                $entry->work_approve = [];
                                foreach ($imgs as $v) {
                                    $item['url'] = $v;
                                    array_push($entry->work_approve, $item);
                                }
                            }

                            //处理职业资格和职称
                            if (!empty($entry->work_pro_img)) {
                                $imgs                = explode(',', $entry->work_pro_img);
                                $entry->work_pro_img = [];
                                foreach ($imgs as $v) {
                                    $item['url'] = $v;
                                    array_push($entry->work_pro_img, $item);
                                }
                            }
                            $family = DB::table('recruit_family')->where('eid', $entry->id)->get()->toArray();
                            foreach ($family as $k => $v) {
                                $family[$k]->birthday = date("Y-m-d", $v->birthday);
                            }
                            $entry->family = $family;
                            $entry->sex    = (string)$entry->sex;
                            $info->entry   = $entry;
                        }
                        break;
                }

                $res = [
                    'status' => 1,
                    'data'   => $info,
                    'msg'    => '获取招考信息成功',
                ];
                return response()->json($res);
            }
        }
    }

    /**
     * 报名记录查询
     * @param Request $request
     * @return \Illuminate\Http\JsonResponse
     */
    public function recruit_list(Request $request)
    {

        $res = $this->userCheck();
        if (!$res['ret']) {
            return response()->json($res);
        }
        $page  = $request->input('page');
        $title = $request->input('title');
        $where = [];
        if ($title) {
            $where[] = ['name', '=', $title];
        }
        $where[] = ['status', '>=', 0];
        $total   = DB::table('recruit')->where($where)->count();
        $result  = DB::table('recruit')->where($where)->offset(10 * ($page - 1))->limit(10)->get()->toArray();
        $list    = [];
        if ($result) {
            foreach ($result as $k => $v) {
                $item = [
                    'id'       => $v->id,
                    'name'     => $v->name,
                    'start'    => date("Y-m-d H:i:s", $v->start),
                    'end'      => date("Y-m-d H:i:s", $v->end),
                    'status'   => $v->status,
                    'post_sum' => DB::table('recruit_post1')->where('rid', $v->id)->count(),
                    'type'     => $v->type,
                ];
                array_push($list, $item);
            }
            $res = [
                'status' => 1,
                'data'   => [
                    'list'  => $list,
                    'total' => $total,
                ],
                'msg'    => '暂无数据',
            ];
            echo json_encode($res);
        } else {
            $res = [
                'status' => 1,
                'data'   => [
                    'list'  => [],
                    'total' => 0,
                ],
                'msg'    => '暂无数据',
            ];
            echo json_encode($res);
        }
    }

    /**
     * 添加招考报名场次
     * @param Request $request
     */
    public function add_recruit(Request $request)
    {
        $type = $request->input('type');
        switch ($type) {
            case '1':
                $rules    = [
                    'name'      => 'required',
                    'start'     => 'required',
                    'end'       => 'required',
                    'status'    => 'required',
                    'post_data' => 'required',
                ];
                $messages = [
                    'name.required'      => '请填写招考名称',
                    'start.required'     => '请填写招考开始时间',
                    'end.required'       => '请填写招考结束时间',
                    'status.required'    => '请填写招考状态',
                    'post_data.required' => '请填写招聘岗位',
                ];
                break;
            case '2':
                $rules    = [
                    'name'            => 'required',
                    'start'           => 'required',
                    'end'             => 'required',
                    'status'          => 'required',
                    'enterprise_post' => 'required',
                ];
                $messages = [
                    'name.required'            => '请填写招考名称',
                    'start.required'           => '请填写招考开始时间',
                    'end.required'             => '请填写招考结束时间',
                    'status.required'          => '请填写招考状态',
                    'enterprise_post.required' => '请填写招聘岗位',
                ];
                break;
            default:
                $rules    = [];
                $messages = [];
                break;
        }

        $res         = [
            'status' => 0,
            'data'   => '',
            'msg'    => '',
        ];
        $create_data = $request->all();
        $validator   = Validator::make($create_data, $rules, $messages);

        if ($validator->fails()) {
            $msg        = $validator->errors()->all();
            $res['msg'] = $msg[0];
            echo json_encode($res);
        } else {
            $data['name']   = $request->input('name');
            $data['start']  = strtotime($request->input('start'));
            $data['end']    = strtotime($request->input('end'));
            $data['status'] = $request->input('status');
            $data['type']   = $type;
            if ($data['name']) {
                $id = DB::table('recruit')->insertGetId($data);
                switch ($type) {
                    case '1':
                        $post_data = $request->input('post_data');
                        $post      = [];
                        foreach ($post_data as $k => $v) {
                            $item = [
                                'name' => $v['name'],
                                'code' => $v['code'],
                                'rid'  => $id,
                            ];
                            array_push($post, $item);
                        }
                        DB::table('recruit_post1')->insert($post);
                        break;
                    case '2':
                        $enterprise = $request->input('enterprise_post');
                        foreach ($enterprise as $k => $v) {
                            $enterprise_data      = [];
                            $enterprise_data      = [
                                'rid'   => $id,
                                'label' => $v['label'],
                            ];
                            $eid                  = DB::table('recruit_enterprise')->insertGetId($enterprise_data);
                            $enterprise_post_data = [];
                            foreach ($v['children'] as $key => $value) {
                                $item = [];
                                $item = [
                                    'eid'  => $eid,
                                    'rid'  => $id,
                                    'code' => $value['code'],
                                    'name' => $value['name'],
                                ];
                                array_push($enterprise_post_data, $item);
                            }
                            DB::table('recruit_enterprise_post')->insert($enterprise_post_data);
                        }
                        break;
                }

                if ($id) {
                    $res['status'] = 1;
                    $res['msg']    = '新增成功';
                    $res['data']   = $id;
                    echo json_encode($res);
                } else {
                    $res['msg'] = '新增失败!';
                    echo json_encode($res);
                }
            }
        }

    }

    /**修改招考报名场次
     * @param Request $request
     */
    public function edit_recruit(Request $request)
    {
        if ($request->method() == "POST") {
            $input = $request->all();
            if (!array_key_exists('id', $input)) {
                $res['status'] = 0;
                $res['msg']    = '请指定要修改的招考数据';
                $res['data']   = '';
                echo json_encode($res);
            } else {
                $rules    = [
                    'name'      => 'required',
                    'start'     => 'required',
                    'end'       => 'required',
                    'status'    => 'required',
                    'post_data' => 'required',
                ];
                $messages = [
                    'name.required'      => '请填写招考名称',
                    'start.required'     => '请填写招考开始时间',
                    'end.required'       => '请填写招考结束时间',
                    'status.required'    => '请填写招考状态',
                    'post_data.required' => '请填写招聘岗位',
                ];

                $res       = [
                    'status' => 0,
                    'data'   => '',
                    'msg'    => '',
                ];
                $validator = Validator::make($input, $rules, $messages);
                if ($validator->fails()) {
                    $msg        = $validator->errors()->all();
                    $res['msg'] = $msg[0];
                    echo json_encode($res);
                } else {
                    $id   = $input['id'];
                    $data = [
                        'name'   => $input['name'],
                        'start'  => strtotime($input['start']),
                        'end'    => strtotime($input['end']),
                        'status' => $input['status'],
                    ];
                    DB::table('recruit')->where('id', $id)->update($data);
                    $post_data = $input['post_data'];
                    foreach ($post_data as $item) {
                        if (array_key_exists('id', $item)) {
                            DB::table('recruit_post1')->where('id', $item['id'])->update(['name' => $item['name'], 'code' => $item['code']]);
                        } else {
                            $item['rid'] = $id;
                            DB::table('recruit_post1')->insert($item);
                        }
                    }
                    $res = [
                        'status' => 1,
                        'data'   => '',
                        'msg'    => '更新招考数据成功',
                    ];
                    echo json_encode($res);
                }
            }
        } else {
            $id   = $request->input('id');
            $info = DB::table('recruit')->find($id);
            if (!$info) {
                $res = [
                    'status' => 0,
                    'data'   => '',
                    'msg'    => '找不到该记录,请刷新页面',
                ];
                echo json_encode($res);
            } else {
                $post = DB::table('recruit_post1')->where('rid', '=', $info->id)->get()->toArray();
                $item = [
                    'id'        => $info->id,
                    'name'      => $info->name,
                    'type'      => (string)$info->type,
                    'start'     => date("Y-m-d H:i:s", $info->start),
                    'end'       => date("Y-m-d H:i:s", $info->end),
                    'status'    => (string)$info->status,
                    'post_data' => $post,
                ];
                $res  = [
                    'status' => 1,
                    'data'   => $item,
                    'msg'    => '',
                ];
                echo json_encode($res);
            }
        }
    }

    /**
     * 获取招考的详细信息
     * @param Request $request
     * @return \Illuminate\Http\JsonResponse
     */
    public function get_recruit_detail(Request $request)
    {
        $res = $this->userCheck();
        if (!$res['ret']) {
            return response()->json($res);
        }
        $id     = $request->input('id');
        $title  = $request->input('title');
        $status = $request->input('status', 99);
        $page   = $request->input('page', 1);
        if (!$id) {
            $res = [
                'status' => 0,
                'data'   => [],
                'msg'    => '参数错误',
            ];
            return response()->json($res);
        }
        $where = [
            ['rid', $id],
        ];
        if (!empty($title)) {
            $where[] = ['realname', 'like', "%{$title}%"];
        }
        switch ($status) {
            case '0':
                $where[] = ['status', '=', 1];
                $where[] = ['check', '=', 0];
                break;
            case '1':
            case '2':
                $where[] = ['status', '=', 1];
                $where[] = ['check', '=', 1];
                break;
            default:
                $where[] = ['status', '=', 1];
                break;
        }

        $total = DB::table('recruit_entry')->where($where)->count();
        $list  = DB::table('recruit_entry')->where($where)->offset(10 * ($page - 1))->limit(10)->get()->toArray();
        $data  = [];
        if ($list) {
            foreach ($list as $k => $v) {
                $post = DB::table('recruit_post1')->find($v->post_id);
                $item = [
                    'id'       => $v->id,
                    'avatar'   => $v->avatar,
                    'realname' => $v->realname,
                    'sex'      => $v->sex == 1 ? '男' : '女',
                    'birthday' => date("Y-m-d", $v->birthday),
                    'phone'    => $v->mobile,
                    'email'    => $v->email,
                    'post'     => $post->code . ' ' . $post->name,
                    'word_url' => $v->word_url,
                ];
                array_push($data, $item);
            }
        }
        $res = [
            'status' => 1,
            'data'   => [
                'list'  => $data,
                'total' => $total,
            ],
            'msg'    => '',
        ];
        return response()->json($res);
    }

    /**
     * 查看某个报名的详细信息
     * @param Request $request
     * @return \Illuminate\Http\JsonResponse
     */
    public function get_user_recruit(Request $request)
    {
        $res = $this->userCheck();
        if (!$res['ret']) {
            return response()->json($res);
        }
        $id = $request->input('id');
        if (!$id) {
            $res = [
                'status' => 0,
                'data'   => '',
                'msg'    => '请指定报名数据',
            ];
            return response()->json($res);
        } else {
            $entry = DB::table('recruit_entry')->find($id);
            if (!$entry) {
                $res = [
                    'status' => 0,
                    'data'   => '',
                    'msg'    => '找不到对应的报名数据',
                ];
                return response()->json($res);
            } else {
                $entry->birthday   = date("Y-m-d", $entry->birthday);
                $entry->check_time = date("Y-m-d", $entry->check_time);
                switch ($entry->edu_type) {
                    case 1:
                        $entry->edu_type = '全日制教育';
                        break;
                    case 2:
                        $entry->edu_type = '在职教育';
                        break;
                    default:
                        break;
                }
                if (!empty($entry->work_approve)) {
                    $entry->work_approve = explode(',', $entry->work_approve);
                }
                if (!empty($entry->work_pro_img)) {
                    $entry->work_pro_img = explode(',', $entry->work_pro_img);
                }
                $family = DB::table('recruit_family')->where('eid', $entry->id)->get()->toArray();
                foreach ($family as $k => $v) {
                    $family[$k]->birthday = date("Y-m-d", $v->birthday);
                }
                $entry->family = $family;
                $entry->sex    = $entry->sex == 1 ? '男' : '女';
                $post          = DB::table('recruit_post1')->where('rid', $entry->rid)->selectRaw('id, CONCAT(code," ",name) as post')->pluck('post', 'id');
                $entry->post   = $post[$entry->post_id];

                $res = [
                    'status' => 1,
                    'data'   => $entry,
                    'msg'    => '获取招考信息成功',
                ];
                return response()->json($res);
            }
        }
    }

    /**
     * 查看某个报名的详细信息(大学生实习专场)
     * @param Request $request
     * @return \Illuminate\Http\JsonResponse
     */
    public function get_user_internship(Request $request)
    {
        $user = parent::getLoginUser();
        if (!$user) {
            return response()->json(['isLogin' => 0, 'status' => 0, 'user' => null, 'msg' => '您尚未登录']);
        }

        $admin = ['59041', '164809', '164189', '164601'];
        if (!in_array($user->id, $admin)) {
            return response()->json(['isLogin' => 1, 'status' => 0, 'user' => null, 'msg' => '您没有权限', 'url' => 'http://www.jucai.gov.cn']);
        }
        $id = $request->input('id');
        if (!$id) {
            $res = [
                'status' => 0,
                'data'   => '',
                'msg'    => '请指定报名数据',
            ];
            return response()->json($res);
        } else {
            $entry = DB::table('recruit_internship')->find($id);
            if (!$entry) {
                $res = [
                    'status' => 0,
                    'data'   => '',
                    'msg'    => '找不到对应的报名数据',
                ];
                return response()->json($res);
            } else {
                $entry->birthday   = date("Y-m-d", $entry->birthday);
                $entry->check_time = date("Y-m-d", $entry->check_time);
                $entry->sex        = $entry->sex == 1 ? '男' : '女';
                $entry->adjust     = $entry->adjust == 1 ? '接受' : '不接受';
                switch ($entry->class) {
                    case '1':
                        $entry->class = '大三在校生';
                        break;
                    case '2':
                        $entry->class = '大四在校生';
                        break;
                    case '3':
                        $entry->class = '硕士在校生';
                        break;
                    case '4':
                        $entry->class = '博士在校生';
                        break;
                    default:
                        $entry->class = '';
                        break;
                }
//                $enterprise = DB::table('recruit_enterprise')->pluck('label','id');
//                $enterprise_post = DB::table('recruit_enterprise_post')->where('rid',$entry->rid)->selectRaw('id, CONCAT(code," ",name) as post')->pluck('post', 'id');
//                $entry->enterprise = $enterprise[$entry->enterprise];
//                $entry->post = $enterprise_post[$entry->post];

                //$post = DB::table('recruit_post1')->where('rid',$entry->rid)->selectRaw('id, CONCAT(code," ",name) as post')->pluck('post', 'id');
                //$entry->post = $post[$entry->post];


                $res = [
                    'status' => 1,
                    'data'   => $entry,
                    'msg'    => '获取招考信息成功',
                ];
                return response()->json($res);
            }
        }
    }

    /**
     * 报名信息的审核
     * @param Request $request
     * @return \Illuminate\Http\JsonResponse
     */
    public function check_user_recruit(Request $request)
    {

        $res = $this->userCheck();
        if (!$res['ret']) {
            return response()->json($res);
        }
        $id = $request->input('id');
        if (!$id) {
            $res = [
                'status' => 0,
                'data'   => '',
                'msg'    => '请指定审核数据',
            ];
            return response()->json($res);
        }
        $info = DB::table('recruit_entry')->where('id', $id)->first();
        if (!$info) {
            $res = [
                'status' => 0,
                'data'   => '',
                'msg'    => '指定审核的数据不存在',
            ];
            return response()->json($res);
        }

        $status = $request->input('status');
        if ($status) {
            //审核通过,生成word版简历
            $post    = DB::table('recruit_post1')->where('rid', $info->rid)->selectRaw('id, CONCAT(code," ",name) as post')->pluck('post', 'id');
            $post    = $post[$info->post_id];
            $word    = [
                'data' => [
                    'realname'                => $info->realname,
                    'sex'                     => $info->sex == 1 ? '男' : '女',
                    'birthday'                => date("Y-m-d", $info->birthday),
                    'nation'                  => $info->nation,
                    'native_place'            => $info->native_place,
                    'post'                    => $post,
                    'political_attitudes'     => $info->political_attitudes,
                    'join_time'               => $info->join_time,
                    'titles'                  => $info->titles,
                    'work'                    => $info->work,
                    'house_register'          => $info->house_register,
                    'edu_type'                => $info->edu_type == 1 ? '全日制教育' : '在职教育',
                    'education'               => $info->education,
                    'school'                  => $info->school,
                    'degree'                  => $info->degree,
                    'pro'                     => $info->pro,
                    'address'                 => $info->address,
                    'card'                    => $info->card,
                    'mobile'                  => $info->mobile,
                    'email'                   => $info->email,
                    'concat_name'             => $info->concat_name,
                    'concat_mobile'           => $info->concat_mobile,
                    'resume'                  => $info->resume,
                    'training'                => $info->training,
                    'rewards_and_punishments' => $info->rewards_and_punishments,
                    'introduce'               => $info->introduce,
                ],
                'id'   => $info->id,
            ];
            $recruit = DB::table('recruit')->where('id', $info->rid)->first();
            $this->fetch_word($word, $info->avatar, $recruit->name);
            $data['status'] = 1;
            $data['check']  = 2;
            $this->smsService->sendSms($info->mobile, 'sms_register_success', []);
        } else {
            $data['status'] = 0;
            $data['check']  = 1;
            $this->smsService->sendSms($info->mobile, 'sms_register_fail', ['msg' => $request->input('remark')]);
        }
        $data['check_time'] = time();
        $data['remark']     = $request->input('remark');
        $data['ticket']     = $request->input('ticket', '');
        $data['seat']       = $request->input('seat', '');
        $data['ex_area']    = $request->input('ex_area', '');
        $data['ex_name']    = $request->input('ex_name', '');
        $data['ex_address'] = $request->input('ex_address', '');
        $data['ex_time']    = $request->input('ex_time', '');
        $data['ex_subject'] = $request->input('ex_subject', '');

        DB::table('recruit_entry')->where('id', $id)->update($data);
        $res = [
            'status' => 1,
            'data'   => [
                'id' => $info->rid,
            ],
            'msg'    => '审核成功',
        ];
        return response()->json($res);
    }

    /**
     * 大学生专用报名保存
     * @param Request $request
     * @return \Illuminate\Http\JsonResponse
     */
    public function internship_save(Request $request)
    {
        $user = parent::getLoginUser();
        if (!$user) {
            return response()->json(['isLogin' => 0, 'status' => 0, 'user' => null]);
        } else {
            $uid = $user->id;
        }
        if (time() > 1592904600) {
            return response()->json(['status' => 0, 'msg' => '报名已截止']);
        }
        //$uid = 1;
        $rules    = [
            'realname'            => 'required',
            'sex'                 => 'required',
            'birthday'            => 'required',
            'nation'              => 'required',
            'native_place'        => 'required',
            'political_attitudes' => 'required',
            'healthy'             => 'required',
            'mobile'              => 'required',
            'card'                => 'required',
            'school'              => 'required',
            'department'          => 'required',
            'pro'                 => 'required',
            'class'               => 'required',
            'concat_name'         => 'required',
            'concat_relationship' => 'required',
            'concat_mobile'       => 'required',
            'enterprise'          => 'required',
            'post'                => 'required',
            'code'                => 'required',
            'adjust'              => 'required',
            'edu'                 => 'required',
            'resume'              => 'required',
            'self_evaluation'     => 'required',
            'avatar'              => 'required',
            'front_card'          => 'required',
            'back_card'           => 'required',
            'student_img'         => 'required',
        ];
        $messages = [
            'realname.required'            => '请填写姓名',
            'sex.required'                 => '请填写性别',
            'birthday.required'            => '请填写出生日期',
            'nation.required'              => '请填写民族',
            'native_place.required'        => '请填写籍贯',
            'political_attitudes.required' => '请填写政治面貌',
            'healthy.required'             => '请输入健康状况',
            'mobile.required'              => '请填写手机号码',
            'card.required'                => '请填写身份证号码',
            'school.required'              => '请输入毕业院校',
            'department.required'          => '请输入院系',
            'pro.required'                 => '请输入专业',
            'class.required'               => '请选择年级',
            'concat_name.required'         => '请填写联系人姓名',
            'concat_relationship.required' => '请填写联系人关系',
            'concat_mobile.required'       => '请填写联系人手机号码',
            'enterprise'                   => '请填写报名单位',
            'post.required'                => '请填写报名岗位',
            'code'                         => '请填写岗位编号',
            'adjust.required'              => '请选择是否接受调剂',
            'edu.required'                 => '请填写学习经历',
            'resume.required'              => '请填写个人简历',
            'self_evaluation.required'     => '请简单做下自我评价',
            'avatar.required'              => '请上传1寸彩色免冠照',
            'front_card.required'          => '请上传身份证正面照',
            'back_card.required'           => '请上传身份证反面照',
            'student_img'                  => '请上传学生证',
        ];

        $res         = [
            'status' => 0,
            'data'   => '',
            'msg'    => '',
        ];
        $create_data = $request->all();
        $validator   = Validator::make($create_data, $rules, $messages);

        if ($validator->fails()) {
            $msg        = $validator->errors()->all();
            $res['msg'] = $msg[0];
            echo json_encode($res);
        } else {
            $data = $request->only('realname', 'sex', 'birthday', 'avatar', 'nation', 'native_place', 'political_attitudes', 'titles', 'healthy', 'school', 'department', 'pro', 'class', 'card', 'mobile', 'concat_name', 'concat_relationship', 'concat_mobile', 'adjust', 'resume', 'edu', 'self_evaluation', 'front_card', 'back_card', 'student_img', 'operation', 'rid', 'id', 'enterprise', 'post', 'code');
            //对入库数据处理
            $data['birthday'] = strtotime($data['birthday']);
            if ($data['operation'] == 2) {
                $data['status'] = 1;
                $data['check']  = 0;
                $msg            = '报名成功,请等待审核';
            } else {
                $data['status'] = 0;
                $msg            = '保存成功';
            }
            unset($data['operation']);
            if (array_key_exists('id', $data) && $data['id'] > 0) {
                //如果已经存在记录
                $id   = $data['id'];
                $info = DB::table('recruit_internship')->where('id', $id)->where('uid', $uid)->first();
                if (!$info) {
                    return response()->json(['status' => 0, 'msg' => '没有权限修改']);
                }
                unset($data['id']);
                DB::table('recruit_internship')->where('id', $id)->update($data);

            } else {
                $data['uid'] = $uid;
                $id          = DB::table('recruit_internship')->insertGetId($data);
            }

            $res = [
                'status' => 1,
                'data'   => $id,
                'msg'    => $msg,
            ];
            echo json_encode($res);
        }
    }

    /**
     * 报名信息的审核(大学生实习)
     * @param Request $request
     * @return \Illuminate\Http\JsonResponse
     */
    public function check_user_internship(Request $request)
    {
        $user = parent::getLoginUser();
        if (!$user) {
            return response()->json(['isLogin' => 0, 'status' => 0, 'user' => null, 'msg' => '您尚未登录']);
        }

        $admin = ['59041', '164809', '164189', '164601'];
        if (!in_array($user->id, $admin)) {
            return response()->json(['isLogin' => 1, 'status' => 0, 'user' => null, 'msg' => '您没有权限', 'url' => 'http://www.jucai.gov.cn']);
        }
        $id = $request->input('id');
        if (!$id) {
            $res = [
                'status' => 0,
                'data'   => '',
                'msg'    => '请指定审核数据',
            ];
            return response()->json($res);
        }
        $info = DB::table('recruit_internship')->where('id', $id)->first();
        if (!$info) {
            $res = [
                'status' => 0,
                'data'   => '',
                'msg'    => '指定审核的数据不存在',
            ];
            return response()->json($res);
        }

        $status = $request->input('status');
        if ($status) {
            $data['status'] = 1;
            $data['check']  = 2;
        } else {
            $data['status'] = 0;
            $data['check']  = 1;
        }
        $data['check_time'] = time();
        $data['remark']     = $request->input('remark', '');
        $data['ticket']     = $request->input('ticket', '');
        $data['seat']       = $request->input('seat', '');
        $data['ex_area']    = $request->input('ex_area', '');
        $data['ex_name']    = $request->input('ex_name', '');
        $data['ex_address'] = $request->input('ex_address', '');
        $data['ex_time']    = $request->input('ex_time', '');
        $data['ex_subject'] = $request->input('ex_subject', '');

        DB::table('recruit_internship')->where('id', $id)->update($data);
        $res = [
            'status' => 1,
            'data'   => [
                'id' => $info->rid,
            ],
            'msg'    => '审核成功',
        ];
        return response()->json($res);
    }

    /**
     * 大学生实习专场的详情
     * @param Request $request
     * @return \Illuminate\Http\JsonResponse
     */
    public function get_internship_detail(Request $request)
    {
        $user = parent::getLoginUser();
        if (!$user) {
            return response()->json(['isLogin' => 0, 'status' => 0, 'user' => null, 'msg' => '您尚未登录']);
        }

        $admin = ['59041', '164809', '164189', '164601'];
        if (!in_array($user->id, $admin)) {
            return response()->json(['isLogin' => 1, 'status' => 0, 'user' => null, 'msg' => '您没有权限', 'url' => 'http://www.jucai.gov.cn']);
        }

        $id     = $request->input('id');
        $title  = $request->input('title');
        $status = $request->input('status', 99);
        $page   = $request->input('page', 1);
        if (!$id) {
            $res = [
                'status' => 0,
                'data'   => [],
                'msg'    => '参数错误',
            ];
            return response()->json($res);
        }
        $where = [
            ['rid', $id],
        ];
        if (!empty($title)) {
            $where[] = ['realname', 'like', "%{$title}%"];
        }
        if ($status != "99") {
            if ($status) {
                $where[] = ['check', '>', 0];
            } else {
                $where[] = ['check', '=', 0];
            }
        }

        $total = DB::table('recruit_internship')->where($where)->count();
        $list  = DB::table('recruit_internship')->where($where)->offset(10 * ($page - 1))->limit(10)->get()->toArray();
        $data  = [];
        if ($list) {
//            $enterprise = DB::table('recruit_enterprise')->pluck('label', 'id');
//            $enterprise_post = DB::table('recruit_enterprise_post')->where('rid',$id)->selectRaw('id, CONCAT(code," ",name) as post')->pluck('post', 'id');
            foreach ($list as $k => $v) {
                $item = [
                    'id'         => $v->id,
                    'avatar'     => $v->avatar,
                    'realname'   => $v->realname,
                    'sex'        => $v->sex == 1 ? '男' : '女',
                    'birthday'   => date("Y-m-d", $v->birthday),
                    'phone'      => $v->mobile,
                    'school'     => $v->school,
                    'department' => $v->department,
                    'pro'        => $v->pro,
                    'enterprise' => $v->enterprise,
                    'post'       => $v->post,
                ];
                switch ($v->class) {
                    case '1':
                        $item['class'] = '大三在校生';
                        break;
                    case '2':
                        $item['class'] = '大四在校生';
                        break;
                    case '3':
                        $item['class'] = '硕士在校生';
                        break;
                    case '4':
                        $item['class'] = '博士在校生';
                        break;
                    default:
                        $item['class'] = '';
                        break;
                }
//                $item['enterprise'] = $enterprise[$v->enterprise];
//                $item['post'] = $enterprise_post[$v->post];
                array_push($data, $item);
            }
        }
        $res = [
            'status' => 1,
            'data'   => [
                'list'  => $data,
                'total' => $total,
            ],
            'msg'    => '',
        ];
        exit(json_encode($res));
    }

    public function get_sign_form(Request $request)
    {
        $id = $request->input('id');
        if (!$id) {
            $res = [
                'status' => 0,
                'data'   => '',
                'msg'    => '请指定考场',
            ];
            return response()->json($res);
        }
        $info = DB::table('recruit')->find($id);
        if (!$info) {
            $res = [
                'status' => 0,
                'data'   => '',
                'msg'    => '找不到该记录,请刷新页面',
            ];
            return response()->json($res);
        } else {
            $alias = $info->alias;
            $list  = DB::table('recruit_' . $alias)->where('rid', $id)->where('ticket', '!=', '')->orderByRaw('seat+0 asc')->get();

            $res = [
                'status' => 1,
                'data'   => $list,
                'msg'    => '查询成功',
            ];
            return response()->json($res);
        }
    }

    public function fetch_word($data = null, $avatar = '', $title = '')
    {
        if ($data != null) {
            //指定模板文件
            $templateProcessor = new TemplateProcessor(base_path() . '/public/word/example.docx');
            //通过setValue 方法给模板赋值
            $templateProcessor->setValue('title', $title);
            $data['data']['resume']                  = str_replace("\r\n", '<w:br/>', $data['data']['resume']);
            $data['data']['training']                = str_replace("\r\n", '<w:br/>', $data['data']['training']);
            $data['data']['rewards_and_punishments'] = str_replace("\r\n", '<w:br/>', $data['data']['rewards_and_punishments']);
            $data['data']['introduce']               = str_replace("\r\n", '<w:br/>', $data['data']['introduce']);
            foreach ($data['data'] as $k => $v) {
                $templateProcessor->setValue($k, $v);
            }
            $family = DB::table('recruit_family')->where('eid', $data['id'])->get()->toArray();
            if ($family) {
                $count = count($family);
                $templateProcessor->cloneRow('family_appellation', $count);
                $i = 1;
                foreach ($family as $k => &$v) {
                    $templateProcessor->setValue('family_appellation#' . $i, $v->appellation);
                    $templateProcessor->setValue('family_realname#' . $i, $v->realname);
                    $templateProcessor->setValue('family_birthday#' . $i, date("Y-m-d", $v->birthday));
                    $templateProcessor->setValue('family_political_attitudes#' . $i, $v->political_attitudes);
                    $templateProcessor->setValue('family_work#' . $i, $v->work);
                    $i++;
                }
            }
            $templateProcessor->setImageValue('avatar', ['src' => $avatar]);
            $filename = uniqid();
            $word_url = "/word/{$filename}.docx";
            DB::table('recruit_entry')->where('id', $data['id'])->update(['word_url' => $word_url]);
            $templateProcessor->saveAs(base_path() . '/public' . $word_url);//另存为
        }
    }

    public function word_to_zip()
    {

    }

    public function strtotime($time)
    {
        $result = strtotime($time);
        if (empty($result)) {
            $date   = new \DateTime($time);
            $result = $date->format('U');
        }
        return $result;
    }

    public function date($utc_time)
    {
        $mydate2 = new \DateTime('@' . $utc_time);
        return $mydate2->format('Y-m-d');
    }

    public function export(Request $request)
    {
        $res = $this->userCheck();
        if (!$res['ret']) {
            return response()->json($res);
        }
        $rid     = $request->input('rid');
        $recruit = DB::table('recruit')->find($rid);
        if (!$recruit) {
            throw new ResponseException('指定的招聘场次不存在!', [], 404);
        }
        $post = DB::table('recruit_post1')->where('rid', $rid)->selectRaw('id, CONCAT(code," ",name) as post')->pluck('post', 'id');
        if (!$post) {
            throw new ResponseException('招聘岗位丢失,请检查!', [], 404);
        }
        $list = DB::table('recruit_entry')->where('rid', $rid)->orderBy('id', 'desc')->get()->toArray();
        if (!$list) {
            throw new ResponseException('太遗憾了,还没有人报名!', [], 404);
        }
        foreach ($list as &$item) {
            $item->post = $post[$item->post_id];
            $family     = DB::table('recruit_family')->where('eid', $item->id)->get()->toArray();
            $family_arr = [];
            foreach ($family as $k => $v) {
                $birthday = date("Y-m-d", $v->birthday);
                $str      = "{$v->appellation} {$v->realname} {$birthday} {$v->political_attitudes} {$v->work}";
                array_push($family_arr, $str);
            }
            $item->family = implode("\r\n", $family_arr);
        }
        $spreadsheet = new Spreadsheet();
        $sheet       = $spreadsheet->getActiveSheet();
        $header      = ['姓名', '性别', '生日', '头像', '民族', '籍贯', '参加工作时间', '政治面貌', '入党时间', '职称或职业资格', '现工作单位及职务', '户籍所在地', '教育类型', '学历', '学校', '学位', '所学专业', '通信地址', '身份证号码', '联系电话', '电子邮箱', '紧急联系人', '紧急联系电话', '个人简历', '培训学习经历', '奖惩情况', '个人介绍', '家庭成员及其社会关系', '身份证正面', '身份证反面', '毕业证书', '学位证书', '学信网《教育部学历证书电子注册备案表》', '职(执)业资格证书、专业技术资格(职务)证书扫描件', '工作经历证明', '状态', '审核意见', 'word简历的下载地址', '准考证是否打印'];
        foreach ($header as $key => $value) {
            $sheet->setCellValueByColumnAndRow($key + 1, 1, $value);
        }
        $row = 2;
        $sheet->getStyle('S')->getNumberFormat()->setFormatCode('0');

        $length = count($list);//算出该数组的长度
        $last   = $list[$length - 1];//取出最后一个数组的值,复制给新变量,-1是因为第一个数组元素下表为0
        unset($list[$length - 1]);//将最后一个数组注销
        $list[] = $last;//再将新变量加入到数组里

        foreach ($list as $item) {
            $sheet->setCellValueByColumnAndRow(1, $row, $item->realname);
            $sheet->setCellValueByColumnAndRow(2, $row, $item->sex == 0 ? '女' : '男');
            $sheet->setCellValueByColumnAndRow(3, $row, date("Y-m-d", $item->birthday));
            $sheet->setCellValueByColumnAndRow(4, $row, $item->avatar);
            $sheet->setCellValueByColumnAndRow(5, $row, $item->nation);
            $sheet->setCellValueByColumnAndRow(6, $row, $item->native_place);
            $sheet->setCellValueByColumnAndRow(7, $row, $item->post);
            $sheet->setCellValueByColumnAndRow(8, $row, $item->political_attitudes);
            $sheet->setCellValueByColumnAndRow(9, $row, $item->join_time);
            $sheet->setCellValueByColumnAndRow(10, $row, $item->titles);
            $sheet->setCellValueByColumnAndRow(11, $row, $item->work);
            $sheet->setCellValueByColumnAndRow(12, $row, $item->house_register);
            $sheet->setCellValueByColumnAndRow(13, $row, $item->edu_type == 1 ? '全日制教育' : '在职教育');
            $sheet->setCellValueByColumnAndRow(14, $row, $item->education);
            $sheet->setCellValueByColumnAndRow(15, $row, $item->school);
            $sheet->setCellValueByColumnAndRow(16, $row, $item->degree);
            $sheet->setCellValueByColumnAndRow(17, $row, $item->pro);
            $sheet->setCellValueByColumnAndRow(18, $row, $item->address);
            $sheet->setCellValueExplicitByColumnAndRow(19, $row, $item->card, DataType::TYPE_STRING);
            $sheet->setCellValueExplicitByColumnAndRow(20, $row, $item->mobile, DataType::TYPE_STRING);
            $sheet->setCellValueByColumnAndRow(21, $row, $item->email);
            $sheet->setCellValueByColumnAndRow(22, $row, $item->concat_name);
            $sheet->setCellValueExplicitByColumnAndRow(23, $row, $item->concat_mobile, DataType::TYPE_STRING);
            $sheet->setCellValueByColumnAndRow(24, $row, $item->resume);
            $sheet->setCellValueByColumnAndRow(25, $row, $item->training);
            $sheet->setCellValueByColumnAndRow(26, $row, $item->rewards_and_punishments);
            $sheet->setCellValueByColumnAndRow(27, $row, $item->introduce);
            $sheet->setCellValueByColumnAndRow(28, $row, $item->family);
            $sheet->setCellValueByColumnAndRow(29, $row, $item->front_card);
            $sheet->setCellValueByColumnAndRow(30, $row, $item->back_card);
            $sheet->setCellValueByColumnAndRow(31, $row, $item->diploma_img);
            $sheet->setCellValueByColumnAndRow(32, $row, $item->degree_img);
            $sheet->setCellValueByColumnAndRow(33, $row, $item->xuexin_img);
            $sheet->setCellValueByColumnAndRow(34, $row, $item->work_pro_img);
            $sheet->setCellValueByColumnAndRow(35, $row, $item->work_approve);
            if ($item->status == 0) {
                if ($item->check == 0) {
                    $status = '只是暂存,尚未提交';
                } else {
                    $status = '审核未通过';
                }
            } else {
                if ($item->check == 0) {
                    $status = '待审核';
                } else {
                    $status = '审核通过';
                }

            }
            $sheet->setCellValueByColumnAndRow(36, $row, $status);
            $sheet->setCellValueByColumnAndRow(37, $row, $item->remark);
            $sheet->setCellValueByColumnAndRow(38, $row, empty($item->word_url) ? '' : "http://www.jucai.gov.cn/" . $item->word_url);
            $sheet->setCellValueByColumnAndRow(38, $row, $item->ticket_status == 0 ? '未打印' : "已打印");
            $row++;
        }
        $file_name = $recruit->name . date("Y-m-d", time());
        header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
        header('Content-Disposition: attachment;filename="' . $file_name . '.xlsx"');
        header('Cache-Control: max-age=0');
        // If you're serving to IE 9, then the following may be needed
        header('Cache-Control: max-age=1');

        // If you're serving to IE over SSL, then the following may be needed
        header('Expires: Mon, 26 Jul 1997 05:00:00 GMT'); // Date in the past
        header('Last-Modified: ' . gmdate('D, d M Y H:i:s') . ' GMT'); // always modified
        header('Cache-Control: cache, must-revalidate'); // HTTP/1.1
        header('Pragma: public'); // HTTP/1.0

        $writer = IOFactory::createWriter($spreadsheet, 'Xlsx');
        $writer->save('php://output');


    }

    public function look_ticket(Request $request)
    {
        $user = $this->getSignupUser();
        $uid  = $user->id;
        DB::table('recruit_entry')->where('uid', $uid)->update(['ticket_status' => 1]);
    }

    public function ticket_download(Request $request)
    {
        $user = $this->getSignupUser();
        $uid  = $user->id;
        $info = DB::table('recruit_entry')->where('uid',$uid)->where('rid',6)->first();
        $ticket = DB::table('wy_face')->where('card',$info->card)->first();
        if($ticket){
            $res = [
                'status' => 1,
                'data'   => '/pdf/wyticket_' . $ticket->realname . '_' . $ticket->card.'_' . $ticket->post . '.pdf',
                'msg'    => '查询成功',
            ];
            return response()->json($res);
        }else{
            $res = [
                'status' => 0,
                'data'   => '',
                'msg'    => '暂无面试准考证需打印',
            ];
            return response()->json($res);
        }
    }
}