| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012 | <?phpnamespace App\Admin\Controllers\Person;use App\Admin\Exports\Person\MemberExport;use App\Http\Controllers\Controller;use App\Models\CategoryMajor;use App\Models\CompanyInterView;use App\Models\Member;use App\Models\MemberInfo;use App\Models\MembersHandsel;use App\Models\MembersLog;use App\Models\Order;use App\Models\PersonalJobsApply;use App\Models\PersonalServiceStickLog;use App\Models\Resume;use App\Models\ResumeImg;use App\Models\SmsRule;use App\Models\Subsite;use App\Models\SubsiteResume;use App\Models\Category;use App\Models\CategoryDistrict;use App\Services\Common\SmsService;use Encore\Admin\Auth\Permission;use Encore\Admin\Controllers\HasResourceActions;use Encore\Admin\Facades\Admin;use Encore\Admin\Form;use Encore\Admin\Grid;use Encore\Admin\Layout\Content;use Encore\Admin\Show;use Encore\Admin\Widgets\Tab;use Illuminate\Http\Request;use Illuminate\Support\Facades\Cache;use Illuminate\Validation\Rule;use App\Admin\Extensions\Form\ValidateForm;use Illuminate\Support\Facades\DB;class MemberController extends Controller{    use HasResourceActions;    protected $smsService;    public function __construct(SmsService $smsService)    {        $this->smsService = $smsService;    }    /**     * Index interface.     *     * @param Content $content     * @return Content     */    public function index(Content $content)    {        Permission::check('person_member');        $grid=$this->grid()->render();        return $content            ->header('个人会员')            ->description('列表')            ->body(view('admin.members.index')->with('grid', $grid));    }    /**     * Show interface.     *     * @param mixed $id     * @param Content $content     * @return Content     */    public function show($id, Content $content)    {        return $content            ->header('个人会员')            ->description('详情')            ->body($this->detail($id));    }    /**     * Edit interface.     *     * @param mixed $id     * @param Content $content     * @return Content     */    public function edit($id, Content $content)    {        Permission::check('person_member_edit');        return $content            ->header('个人会员')            ->description('编辑')            ->body($this->editForm($id)->edit($id));    }    /**     * Create interface.     *     * @param Content $content     * @return Content     */    public function create(Content $content)    {        Permission::check('person_member_add');        return $content            ->header('个人会员')            ->description('新增')            ->body($this->form());    }    /**     * Make a grid builder.     *     * @return Grid     */    protected function grid()    {        $grid = new Grid(new Member);        $grid->model()            /*->when(get_subsite_id()>0, function ($query) {            $query->where('subsite_id', get_subsite_id());            $query->whereHas('subsite',function ($query){                $query->where('effective', 1);            });        })*/            ->orderBy('id', 'desc');        $grid->id('ID');        $grid->username('用户名')->width(200);;        $grid->mobile('手机')->width(100);        $grid->email('Email')->width(150);        if(get_subsite_open()){            $grid->subsite_id('所属分站')->display(function ($subsite_id) {                if ($subsite_id) {                    $Subsite = Subsite::find($subsite_id);                    return isset($Subsite->sitename) ? $Subsite->sitename : '未知';                }                return '总站';            })->width(150);        }        $grid->reg_time('注册时间')->display(function ($reg_time) {            return date('Y-m-d H:i:s', $reg_time);        })->sortable();        $grid->last_login_time('最后登录时间')->display(function ($last_login_time) {            return $last_login_time ? date('Y-m-d H:i:s', $last_login_time) : '';        })->sortable();        if (Admin::user()->can('person_member_add')) {            $grid->disableCreateButton(false);        }        $grid->actions(function ($actions) {            if (Admin::user()->can('perosn_business')) {                $actions->append(" <button class='btn btn-primary btn-xs business' id=".$actions->row['id'].">业务</button>");            }            if (Admin::user()->can('person_member_delete')) {                $actions->disableDelete(false);            }            if (Admin::user()->can('person_member_edit')) {                $actions->disableEdit(false);            }        });        $grid->tools(function ($tools) {            if (Admin::user()->can('person_member_reset_password')) {                $but = <<<EOT<div class="btn-group" data-toggle="buttons">    <label class="btn btn-google btn-sm" id="update_password" title="重置密码">        <i class="fa fa-audio-description"></i>        <input type="radio" class="user-gender">重置密码    </label></div>EOT;                $tools->append($but);            }        });        if (Admin::user()->can('person_member_export')) {            $grid->disableExport(false); //显示导出按钮            $grid->exporter(new MemberExport()); //传入自己在第1步创建的导出类        }        $grid->filter(function ($filter) {            $filter->column(1/2, function ($filter) {                $filter->equal('id', '会员ID');                $filter->like('username', '用户名');                $filter->like('memberInfo.id_card', '身份证');                $filter->between('created_at', '注册时间')->datetime();            });            $filter->column(1/2, function ($filter) {                $filter->like('email', 'Email');                $filter->like('mobile', '手机号码');                if(get_subsite_id()==0 && get_subsite_open()){                    $filter->equal('subsite_id', '所属分站')->select(array_column(get_all_subsite(), 'sitename', 'id'));                }            });        });        return $grid;    }    /**     * Make a show builder.     *     * @param mixed $id     * @return Show     */    protected function detail($id)    {        $show = new Show(Member::findOrFail($id));        $show->username('用户名');        $show->mobile('mobile', '手机号');        $show->email('email', '邮箱');        $show->image('avatars', '用户头像');        $show->reg_address('注册地址');        $show->subsite_id('分站')->as(function ($subsite_id) {            if ($subsite_id) {                $Subsite = Subsite::find($subsite_id);                return isset($Subsite->sitename) ? $Subsite->sitename : '未知';            }            return '总站';        });        $show->created_at('创建时间');        return $show;    }    /**     * Make a form builder.     *     * @return Form     */    protected function form()    {        $form = new ValidateForm(new Member);        $form->tab('账号资料',function ($form) {            $form->text('username', '用户名')->rules('required|between:6,16|regex:/^[a-zA-Z][a-zA-Z0-9]{6,16}+$/|unique:members', [                'required' => '会员名为必填信息',                'between' => '会员名长度为6~16个字符',                'regex' => '会员名为字母或字母+数字',                'unique' => '会员名已存在'            ])->setWidth(3)->setMustMark();            $form->mobile('mobile', '手机号')->rules('required|unique:members', [                'required' => '手机号为必填信息',                'unique' => '手机号已存在',            ])->setWidth(3)->setMustMark();            $form->radio('mobile_audit', '手机认证')->options([1 => '认证通过', 0 => '未认证'])->default(0);            $form->email('email', 'Email')->rules('required|unique:members', [                'required' => 'Email为必填信息',                'unique' => 'Email已存在'            ])->setWidth(3)->setMustMark();            $form->radio('email_audit', '邮箱认证')->options([1 => '认证通过', 0 => '未认证'])->default(0);            $form->password('password', '密码')->rules('required|confirmed|between:6,16', [                'required' => '密码为必填信息',                'between' => '密码长度要求为6~16'            ])->setWidth(3)->setMustMark();            $form->password('password_confirmation', '确认密码')->rules('required|between:6,16')->setWidth(3)->setMustMark();            $form->radio('display_images', '是否显示头像')->options([1 => '显示', 2 => '隐藏'])->default(1);            $form->image('avatars', '用户头像')->setWidth(4);        })->tab('基本资料',function ($form) {            $form->radio('display_name', '是否公开姓名')->setWidth(3)->options([1 => '公开', 3 => '隐藏'])->default(config('aix.personal_set.per_set.per_set.resume_display_default'))->setMustMark();            $form->text('realname', '姓名')->setWidth(3)->rules('required', [                'required' => '姓名为必填信息'            ])->setMustMark();            $form->radio('sex', '性别')->setWidth(3)->options([1 => '男', 2 => '女'])->default(1)->setMustMark();            $birthday = [];            $year = date('Y')-16;            for($i=1950;$i<$year;$i++){                $birthday[$i] = $i;            }            $form->select('birthday', '出生年份')->setWidth(3)->options($birthday)->default(1990)->setMustMark();//            $form->select('card_t_cn', '证件类型')->setWidth(3)->options(Category::where('alias','AIX_card_type')->pluck('demand','id'))->rules('required',[//                'required'=>'请选择证件类型'//            ])->setMustMark();            $form->text('id_card', '证件号')->setWidth(3)->rules('required|unique:member_infos', [                'required' => '证件号为必填信息',                'unique' => '该证件号已存在'            ])->setMustMark();            $form->select('province', '居住地省份')->options(CategoryDistrict::List()->pluck('name', 'id'))->setWidth(3)->load('city',  admin_base_path("/sys/category/categoryDis"))->rules('required', [                'required'=>'请选择居住地省份'            ])->setMustMark();            $form->select('city', '居住地城市')->setWidth(3)->load('area',  admin_base_path("/sys/category/categoryDis"))->rules('required', [                'required'=>'请选择居住地城市'            ])->setMustMark();//            $form->select('area', '居住地县区')->setWidth(3)->rules('required', [//                'required'=>'请选择居住地县区'//            ])->setMustMark();            $form->select('education', '最高学历')->setWidth(3)->options(Category::where('alias','AIX_education')->pluck('demand','id'))->rules('required', [                'required'=>'请选择最高学历'            ])->setMustMark();            $form->select('major1', '专业方向')->options(CategoryMajor::where('parent_id',0)->pluck('name', 'id'))->setWidth(3)->load('major2',  admin_base_path("/sys/category/categoryMaj"));//            $form->select('major2', '详细专业')->setWidth(3);            $form->select('experience', '工作经验')->options(Category::where('alias','AIX_experience')->pluck('demand','id'))->setWidth(3)->rules('required', [                'required'=>'请选择工作经验'            ])->setMustMark();        })->tab('联系方式',function ($form) {            $form->select('province1', '籍贯所属省份')->options(CategoryDistrict::List()->pluck('name', 'id'))->setWidth(3)->load('city1',  admin_base_path("/sys/category/categoryDis"))->rules('required', [                'required'=>'请选择籍贯所属省份'            ])->setMustMark();            $form->select('city1', '籍贯所属城市')->setWidth(3)->load('area1',  admin_base_path("/sys/category/categoryDis"))->rules('required', [                'required'=>'请选择籍贯所属城市'            ])->setMustMark();//            $form->select('area1', '籍贯所属县区')->setWidth(3)->rules('required', [//                'required'=>'请选择相籍贯所属县区'//            ])->setMustMark();            $form->number('height', '身高')->setWidth(3);            $form->select('marriage', '婚姻状况')->options(['1'=>'未婚','2'=>'已婚','3'=>'保密'])->setWidth(3);            $form->number('qq', 'QQ')->setWidth(3);            $form->text('weixin', '微信')->setWidth(3);            $form->hidden('subsite_id', '所属分站')->default(get_subsite_id());        });        return $form;    }    public function store(Request $request)    {        $data = $this->form()->getValidateInput();//这个方法会调用Form自带的验证和表单处理(文件上传等)验证错误会直接返回错误.不需要判断;        if($data['password'] != $data['password_confirmation']) {            admin_toastr('两次密码输入不同', 'error');            return back();        }        $member_data = [            'username' => $data['username'],            'password' => bcrypt($data['password']),            'mobile' => $data['mobile'],            'mobile_audit' => $data['mobile_audit'],            'email' => $data['email'],            'email_audit' => $data['email_audit'],            'avatars' => $data['avatars'],            'subsite_id' => $data['subsite_id'],            'reg_time' => time(),            'reg_ip' => ip2long('127.0.0.1'),            'last_login_ip' => ip2long('127.0.0.1'),            'reg_address' => '本机地址',            'last_login_time' => time(),            'status' => 1,        ];        $member_info_data = [            'display_name'=>$data['display_name'],            'realname'=>$data['realname'],            'sex'=>$data['sex'],            'sex_cn'=>$data['sex']==1?'男':'女',            'birthday'=>$data['birthday'],            'card_t_cn'=>306,            'id_card'=>$data['id_card'],            'residence'=>$data['province'].'.'.$data['city'].'.0',            'education'=>$data['education'],            'education_cn'=>get_category($data['education']),            'experience'=>$data['experience'],            'experience_cn'=>get_category($data['experience']),            'phone'=>$data['mobile'],            'email'=>$data['email'],            'height'=>$data['height'],            'qq'=>$data['qq'],            'weixin'=>$data['weixin'],            'marriage'=>$data['marriage'],            'images'=>$data['avatars'],            'marriage_cn'=>$data['marriage']==1?'未婚':($data['marriage']==2?'已婚':'保密'),            'householdaddress'=>$data['province1'].'.'.$data['city1'].'.0',        ];        $member_info_data['residence_cn'] =get_district_cn($member_info_data['residence']);        $member_info_data['householdaddress_cn'] =get_district_cn($member_info_data['householdaddress']);        DB::beginTransaction();        try {            $member = Member::create($member_data);            if(!$member){                throw new \Exception('新增失败');            }            $member_info_data['uid'] = $member->id;            if(!MemberInfo::create($member_info_data)){                throw new \Exception('新增失败');            }            $this->memberSms('sms_quick_register', $data['mobile'],$data['username'], $data['password']);            DB::commit();            admin_toastr('新增成功', 'success');        } catch (\Exception $e) {            DB::rollback();            admin_toastr($e->getMessage(), 'error');            return back();        }        return redirect(route("members.index"));    }    protected function editForm($id)    {        $subsiteArr = [];        $form = new ValidateForm(new Member);        $user = Member::findOrFail($id);        $userinfo = MemberInfo::where('uid',$id)->first();        if(get_subsite_open()){            $subsiteArr = array_column(get_all_subsite(), 'sitename', 'id');        }        $form->tab('账号资料',function ($form) use($user,$id ,$subsiteArr){            $form->display('reg_time', '注册时间')->setWidth(2)->with(function ($reg_time) {                return date('Y-m-d H:i:s', $reg_time);            });            $form->display('reg_ip', '注册IP')->setWidth(2)->with(function ($reg_ip) {                return long2ip($reg_ip);            });            $form->display('last_login_time', '最后登录时间')->setWidth(2)->with(function ($last_login_time) {                return $last_login_time ? date('Y-m-d H:i:s', $last_login_time) : '';            });            $form->display('last_login_ip', '最后登录IP')->setWidth(2)->with(function ($last_login_ip) {                return long2ip($last_login_ip);            });            $form->display('reg_address', '注册地址')->setWidth(4);            $form->html('基本信息');            $form->text('username', '用户名')->rules(                [                    'required',                    'between:6,16|regex:/^[a-zA-Z][a-zA-Z0-9]{6,16}+$/',                    Rule::unique('members')->ignore($id),                ],                [                    'required' => '会员名为必填信息',                    'between' => '会员名长度为6~16个字符',                    'regex' => '会员名为字母或字母+数字',                    'unique' => '会员名已存在'                ]            )->setWidth(3)->setMustMark();            $form->mobile('mobile', '手机号')->rules(                [                    'required',                    Rule::unique('members')->ignore($id),                ],                [                    'required' => '手机号码为必填信息',                    'unique' => '手机号已存在',                ]            )->setWidth(4)->setMustMark();            $form->radio('mobile_audit','手机认证')->options([1=>'认证通过',0=>'未认证'])->default($user->mobile_audit);            $form->email('email', 'Email')->rules(                [                    'required',                    'regex:/^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/',                    Rule::unique('members')->ignore($id),                ],                [                    'required' => 'email为必填信息',                    'regex' => 'email格式不正确',                    'unique' => 'email已存在',                ]            )->setWidth(3)->setMustMark();            $form->radio('email_audit','邮箱认证')->options([1=>'认证通过',0=>'未认证'])->default($user->email_audit);            $form->switch('status', '用户状态');            if (get_subsite_id()==0 && get_subsite_open()) {                $form->radio('subsite_id', '分站')->options($subsiteArr)->default($user->subsite_id);            } else {                $form->hidden('subsite_id');            }        })->tab('基本资料',function ($form) use ($id,$userinfo){            $form->radio('display_name', '是否公开姓名')->setWidth(3)->options([1 => '公开', 3 => '隐藏'])->default(isset($userinfo->display_name) ? $userinfo->display_name : '')->rules('required', [                'required' => '请选择是否公开姓名'            ])->setMustMark();            $form->text('realname', '姓名')->setWidth(3)->default(isset($userinfo->realname) ? $userinfo->realname : '')->rules('required', [                'required' => '姓名为必填信息'            ])->setMustMark();            $form->radio('sex', '性别')->setWidth(3)->options([1 => '男', 2 => '女'])->default(isset($userinfo->sex) ? $userinfo->sex : '')->rules('required', [                'required' => '请选择性别'            ])->setMustMark();            $birthday = [];            $year = date('Y')-16;            for($i=1950;$i<$year;$i++){                $birthday[$i] = $i;            }            $form->select('birthday', '出生年份')->setWidth(3)->options($birthday)->default(isset($userinfo->birthday) ? $userinfo->birthday : '')->setMustMark();//            $form->select('card_t_cn', '证件类型')->setWidth(3)->options(Category::where('alias','AIX_card_type')->pluck('demand','id'))->rules('required',[//                'required'=>'请选择证件类型'//            ])->default(isset($userinfo->card_t_cn) ? $userinfo->card_t_cn : '')->setMustMark();            $form->text('id_card', '证件号')->setWidth(3)->rules(                [                    'required',                    Rule::unique('member_infos')->ignore($id,'uid'),                ],                [                    'required' => '证件号为必填信息',                    'unique' => '证件号已存在',                ]            )->default(isset($userinfo->id_card) ? $userinfo->id_card : '')->setMustMark();            if (isset($userinfo->residence)) {                $residenceArr = string_to_array('.', $userinfo->residence);            }            if(isset($residenceArr)) {                $form->select('province', '居住地省份')->setWidth(3)->options(CategoryDistrict::List()->pluck('name', 'id'))->setWidth(3)->load('city',  admin_base_path("/sys/category/categoryDis"))->rules('required', [                    'required'=>'请选择居住地省份'                ])->default(isset($residenceArr[0])?$residenceArr[0]:0)->setMustMark();                $form->select('city', '居住地城市')->setWidth(3)->options(CategoryDistrict::categoryDis(isset($residenceArr[0])?$residenceArr[0]:0))->load('area',  admin_base_path("/sys/category/categoryDis"))->rules('required', [                    'required'=>'请选择居住地城市'                ])->default(isset($residenceArr[1])?$residenceArr[1]:0)->setMustMark();//                $form->select('area', '居住地县区')->setWidth(3)->options(CategoryDistrict::categoryDis(isset($residenceArr[1])?$residenceArr[1]:0))->rules('required', [//                    'required'=>'请选择居住地县区'//                ])->default(isset($residenceArr[2])?$residenceArr[2]:0)->setMustMark();            } else {                $form->select('province', '居住地省份')->options(CategoryDistrict::List()->pluck('name', 'id'))->setWidth(3)->load('city',  admin_base_path("/sys/category/categoryDis"))->rules('required', [                    'required'=>'请选择居住地省份'                ])->setMustMark();                $form->select('city', '居住地城市')->setWidth(3)->load('area',  admin_base_path("/sys/category/categoryDis"))->rules('required', [                    'required'=>'请选择居住地城市'                ])->setMustMark();//                $form->select('area', '居住地县区')->setWidth(3)->rules('required', [//                    'required'=>'请选择居住地县区'//                ])->setMustMark();            }            $form->select('education', '最高学历')->setWidth(3)->options(Category::where('alias','AIX_education')->pluck('demand','id'))->rules('required', [                'required'=>'请选择最高学历'            ])->default(isset($userinfo->education) ? $userinfo->education : '')->setMustMark();            if(isset($userinfo->major)){                $parent_id = CategoryMajor::where('id',$userinfo->major)->value('parent_id');                $form->select('major1', '专业方向')->options(CategoryMajor::where('parent_id',0)->pluck('name', 'id'))->setWidth(3)->load('major2',  admin_base_path("/sys/category/categoryMaj"))->default($parent_id);                //$form->select('major2', '详细专业')->setWidth(3)->options(CategoryMajor::where('parent_id',$parent_id)->pluck('name', 'id'))->default($userinfo->major);            } else {                $form->select('major1', '专业方向')->options(CategoryMajor::where('parent_id',0)->pluck('name', 'id'))->setWidth(3)->load('major2',  admin_base_path("/sys/category/categoryMaj"));                //$form->select('major2', '详细专业')->setWidth(3);            }            $form->select('experience', '工作经验')->options(Category::where('alias','AIX_experience')->pluck('demand','id'))->setWidth(3)->rules('required', [                'required'=>'请选择工作经验'            ])->default(isset($userinfo->experience) ? $userinfo->experience : '')->setMustMark();        })->tab('联系方式',function ($form) use ($userinfo){            if(isset($userinfo->householdaddress)) {                $householdaddressArr = string_to_array('.', $userinfo->householdaddress);            }            if(isset($householdaddressArr)) {                $form->select('province1', '籍贯所属省份')->setWidth(3)->options(CategoryDistrict::List()->pluck('name', 'id'))->setWidth(3)->load('city1',  admin_base_path("/sys/category/categoryDis"))->rules('required', [                    'required'=>'请选择籍贯所属省份'                ])->default(isset($householdaddressArr[0])?$householdaddressArr[0]:0)->setMustMark();                $form->select('city1', '籍贯所属城市')->setWidth(3)->options(CategoryDistrict::categoryDis(isset($householdaddressArr[0])?$householdaddressArr[0]:0))->load('area1',  admin_base_path("/sys/category/categoryDis"))->rules('required', [                    'required'=>'请选择籍贯所属城市'                ])->default(isset($householdaddressArr[1])?$householdaddressArr[1]:0)->setMustMark();//                $form->select('area1', '籍贯所属县区')->setWidth(3)->options(CategoryDistrict::categoryDis(isset($householdaddressArr[1])?$householdaddressArr[1]:0))->rules('required', [//                    'required'=>'请选择相籍贯所属县区'//                ])->default(isset($householdaddressArr[2])?$householdaddressArr[2]:0)->setMustMark();            }else {                $form->select('province1', '籍贯所属省份')->options(CategoryDistrict::List()->pluck('name', 'id'))->setWidth(3)->load('city1',  admin_base_path("/sys/category/categoryDis"))->rules('required', [                    'required'=>'请选择籍贯所属省份'                ])->setMustMark();                $form->select('city1', '籍贯所属城市')->setWidth(3)->load('area1',  admin_base_path("/sys/category/categoryDis"))->rules('required', [                    'required'=>'请选择籍贯所属城市'                ])->setMustMark();//                $form->select('area1', '籍贯所属县区')->setWidth(3)->rules('required', [//                    'required'=>'请选择相籍贯所属县区'//                ])->setMustMark();            }            $form->number('height', '身高')->setWidth(3)->default(isset($userinfo->height) ? $userinfo->height : '');            $form->select('marriage', '婚姻状况')->options(['1'=>'未婚','2'=>'已婚','3'=>'保密'])->setWidth(3)->default(isset($userinfo->marriage) ? $userinfo->marriage : '');            $form->number('qq', 'QQ')->setWidth(3)->default(isset($userinfo->qq) ? $userinfo->qq : '');            $form->text('weixin', '微信')->setWidth(3)->default(isset($userinfo->weixin) ? $userinfo->weixin : '');        });        return $form;    }    public function update($id)    {        $data = $this->editForm($id)->getValidateInput();//这个方法会调用Form自带的验证和表单处理(文件上传等)验证错误会直接返回错误.不需要判断;        $member_data = [            'username' => $data['username'],            'mobile' => $data['mobile'],            'mobile_audit' => $data['mobile_audit'],            'email' => $data['email'],            'email_audit' => $data['email_audit'],            'subsite_id' => $data['subsite_id'],            'reg_time' => time(),            'reg_ip' => ip2long('127.0.0.1'),            'last_login_ip' => ip2long('127.0.0.1'),            'reg_address' => '本机地址',            'last_login_time' => time(),            'status' => 1,        ];        $member_info_data = [            'display_name'=>$data['display_name'],            'realname'=>$data['realname'],            'sex'=>$data['sex'],            'sex_cn'=>$data['sex']==1?'男':'女',            'birthday'=>$data['birthday'],            'card_t_cn'=>306,            'id_card'=>$data['id_card'],            'residence'=>$data['province'].'.'.$data['city'].'.0',            'education'=>$data['education'],            'education_cn'=>get_category($data['education']),            'experience'=>$data['experience'],            'experience_cn'=>get_category($data['experience']),            'phone'=>$data['mobile'],            'email'=>$data['email'],            'height'=>$data['height'],            'qq'=>$data['qq'],            'weixin'=>$data['weixin'],            'marriage'=>$data['marriage'],            'marriage_cn'=>$data['marriage']==1?'未婚':($data['marriage']==2?'已婚':'保密'),            'householdaddress'=>$data['province1'].'.'.$data['city1'].'.0',        ];        DB::beginTransaction();        try {            if (!Member::where('id', $id)->update($member_data)) {                throw new \Exception('编辑失败');            }            if(MemberInfo::where('uid', $id)->first()) {                if (!MemberInfo::where('uid', $id)->update($member_info_data)) {                    throw new \Exception('编辑失败');                }            }else {                $member_info_data['uid'] = $id;                if (!MemberInfo::create($member_info_data)) {                    throw new \Exception('编辑失败');                }            }            $subsite_id =$data['subsite_id'];            if ($subsite_id!==null) {                $resume = Resume::where('uid', $id)->select('id', 'subsite_id')->get()->toArray();                if (!empty($resume)) {                    $resume_id = array_column($resume, 'id');                    $subsite_id_arr = array_unique(array_column($resume, 'subsite_id'));                    Resume::whereIn('id', $resume_id)->update(['subsite_id'=>$subsite_id]);                    event_search_update(Resume::class, implode(',', $resume_id), 'update');                    $SubsiteResume = SubsiteResume::whereIn('resume_id', $resume_id)->where('subsite_id', $subsite_id)->select('id')->get()->toArray();                    if ($SubsiteResume) {                        SubsiteResume::destroy(array_column($SubsiteResume, 'id'));                    }                    SubsiteResume::whereIn('subsite_id', $subsite_id_arr)->whereIn('resume_id', $resume_id)->update(['subsite_id'=>$subsite_id]);                }                event_search_update(Resume::class, [['where','uid', $id]], 'update');            }            DB::commit();            admin_toastr('编辑成功', 'success');        } catch (\Exception $e) {            DB::rollback();            admin_toastr($e->getMessage(), 'error');            return back();        }        return redirect(route("members.index"));    }    public function destroy($id)    {        if (!$id) {            $data = [                'status'  => false,                'message' => '会员信息不存在!!',            ];            return response()->json($data);        }        $id_arr =  explode(',', $id);        \DB::beginTransaction();        try {            Member::destroy($id_arr);            MemberInfo::whereIn('uid', $id_arr)->delete();            Resume::whereIn('uid', $id_arr)->delete();            ResumeImg::whereIn('uid', $id_arr)->delete();            $data = [                'status'  => true,                'message' => '删除成功!',            ];            $condition = [['whereIn','uid', $id_arr]];            event_search_update(Resume::class, $condition, 'delete');            \DB::commit();            return response()->json($data);        } catch (\Exception $e) {            \DB::rollback();            $data = [                'status'  => false,                'message' => '删除失败!',            ];            return response()->json($data);        }    }    public function manager($id)    {        $member = Member::findOrFail($id);        if (!$member) {            return false;        }        return redirect()->route('person.resume');    }    public function managerInto($id)    {        $member = Member::findOrFail($id);        if (!$member) {            return false;        }        $key=uniqid();        Cache::put($key, $member, 1);        $url=route('auth.thirdlogin.background', ['ticket' => $key])."?redirect_url=".urlencode(route('person.index'));        return redirect($url);    }    /**     *  return json     */    public function auditPassword(Request $request)    {        $id = $request->id;        $form = new \Encore\Admin\Widgets\Form();        $form->action(route('admin.personal.auditPass'));        $form->disableReset();        $form->hidden('id', 'ID')->default($id);        $form->html('<div>重置的新密码为Aa12345678,是否重置?</div>');        return json_encode(['html'=>$form->render(),'detail'=>'重置密码']);    }    public function auditPass(Request $request)    {        $id = $request->id;        $arr = array_filter(explode(',', $id));        if (empty($arr)) {            admin_toastr('数据异常', 'error');            return back();        }        $result = Member::whereIn('id', $arr)->update(['password'=>\Hash::make('Aa12345678')]);        if ($result) {            admin_toastr('重置成功', 'success');        } else {            admin_toastr('重置失败', 'error');        }        return back();    }    public function userInfoTab(Content $content, Request $request)    {        $uid = $request->uid;        $utype = 2;        $type = $request->type;        if (empty($uid) ) {            admin_toastr('数据异常', 'error');            return back();        }        $tab = new Tab();        $title = [            'points'=>'积分管理',            'order'=>'充值/订单',            'subscribe'=>'简历推广',            'apply'=>'申请的职位',            'interview'=>'面试邀请',            'log'=>'会员日志',        ];        foreach ($title as $key => $val) {            switch ($key) {                case 'points':                    $grid = new Grid(new MembersHandsel);                    $grid->model()->when(get_subsite_id()>0, function ($query) {                        $query->whereHas('members',function ($query){                            $query->where('subsite_id', get_subsite_id());                        });                    })->where(['uid'=>$uid,'utype'=>$utype])->orderBy('id', 'desc');                    $grid->id('ID');                    $grid->uid('会员ID');                    $grid->utype('会员类型')->display(function ($utype) {                        if ($utype==1) {                            return '企业';                        } else {                            return '个人';                        }                    })->width(100);                    $grid->points('操作积分')->display(function ($points) {                        if ($this->operate==1) {                            return "<span style='color:green;'>+".$points."</span>";                        } else {                            return "<span style='color:red;'>-".$points."</span>";                        }                    })->width(100);                    $grid->htype_cn('操作说明')->width(150);                    $grid->created_at('添加时间')->sortable();                    $grid->updated_at('更新时间')->sortable();                    $grid->disableTools();                    $grid->disableActions();                    $grid->setName($key);                    $grid->disableRowSelector();                    $grid->setPaginatorBaseUrl($key);                    break;                case 'order':                    $grid = new Grid(new Order);                    $grid ->model()->where(['uid'=>$uid,'utype'=>$utype])                        ->when(get_subsite_id()>0, function ($querys) use ($utype) {                            if ($utype ==1) {                                $relations = 'companys';                            } else {                                $relations = 'members';                            }                            $querys->whereHas($relations, function ($query) {                                $query->where('subsite_id', get_subsite_id());                            });                        })->orderBy('created_at', 'desc')->orderBy("is_pay", 'asc');                    $grid->id('ID');                    $grid->is_pay('支付状态')->display(function ($is_pay) {                        if ($is_pay == 1) {                            return '待付款';                        } elseif ($is_pay == 2) {                            return "已付款";                        } else {                            return '已取消';                        }                    });                    $grid->amount('金额')->width(150);                    if ($utype == 1) {                        $grid->column('companys.companyname', '企业名称')->width(200);                    } else {                        $grid->column('members.username', '会员名称')->width(200);                    }                    $grid->service_name('说明')->width(150);;                    if ($utype == 1) {                        $grid->column('companys.username', '企业会员')->width(200);                    } else {                        $grid->column('members.username', '个人会员')->width(200);                    }                    $grid->oid('订单号')->width(200);                    $grid->payment_cn('支付方式')->width(150);                    $grid->created_at('申请时间')->sortable();                    $grid->disableTools();                    $grid->disableActions();                    $grid->setName($key);                    $grid->disableRowSelector();                    $grid->setPaginatorBaseUrl($key);                    break;                case 'subscribe':                    $grid = new Grid(new PersonalServiceStickLog);                    $grid->model()->where('resume_uid',$uid)->when(get_subsite_id()>0, function ($query) {                        $query->whereHas('resume', function ($query) {                            $query->where('subsite_id', get_subsite_id());                        });                    })->orderBy('created_at', 'DESC');                    $grid->column('resume.fullname', '姓名')->width(200);;                    $grid->resume_uid('会员ID');                    $grid->days('推广天数')->width(100);                    $grid->addtime('开始时间')->display(function ($addtime) {                        return date('Y-m-d H:i:s', $addtime);                    })->sortable();                    $grid->endtime('结束时间')->display(function ($endtime) {                        return date('Y-m-d H:i:s', $endtime);                    })->sortable();                    $grid->disableTools();                    $grid->disableActions();                    $grid->setName($key);                    $grid->disableRowSelector();                    $grid->setPaginatorBaseUrl($key);                    break;                case 'apply':                    $grid = new Grid(new PersonalJobsApply);                    $grid->model()->where('personal_uid',$uid)->when(get_subsite_id()>0, function ($query) {                        $query->whereHas('resumes', function ($query) {                            $query->where('subsite_id', get_subsite_id());                        });                    })->orderBy('id', 'desc');                    $grid->id('ID');                    $grid->jobs_name('职位名称')->width(200);                    $grid->company_name('公司名称')->width(200);                    $grid->resume_name('简历名称')->width(150);                    $grid->is_reply('反馈状态')->display(function ($is_reply) {                        switch ($is_reply) {                            case 1:                                $is_reply = '企业未查看';                                break;                            case 2:                                $is_reply = '待反馈';                                break;                            case 3:                                $is_reply = '合适';                                break;                            case 4:                                $is_reply = '不合适';                                break;                            case 5:                                $is_reply = '待定';                                break;                            case 6:                                $is_reply = '未接通';                                break;                            default:                                $is_reply = '企业未查看';                                break;                        }                        return $is_reply;                    });                    $grid->column('members.subsite_id', '所属分站')->display(function ($subsite_id) {                        if ($subsite_id) {                            $Subsite = Subsite::find($subsite_id);                            return isset($Subsite->sitename) ? $Subsite->sitename : '未知';                        }                        return '总站';                    })->width(150);                    $grid->created_at('申请时间')->sortable();                    $grid->updated_at('更新时间')->sortable();                    $grid->disableTools();                    $grid->disableActions();                    $grid->setName($key);                    $grid->disableRowSelector();                    $grid->setPaginatorBaseUrl($key);                    break;                case 'interview':                    $grid = new Grid(new CompanyInterView);                    $grid->model()->where('resume_uid',$uid)->when(get_subsite_id()>0, function ($query) {                        $query->whereHas('resumes', function ($query) {                            $query->where('subsite_id', get_subsite_id());                        });                    })->orderBy('id', 'desc');                    $grid->id('ID');                    $grid->jobs_name('职位名称')->width(200);                    $grid->company_name('公司名称')->width(200);                    $grid->resume_name('简历名称')->width(150);                    $grid->personal_look('查看状态')->display(function ($personal_look) {                        switch ($personal_look) {                            case 1:                                $personal_look = '未查看';                                break;                            case 2:                                $personal_look = '已查看';                                break;                            default:                                $personal_look = '未查看';                                break;                        }                        return $personal_look;                    });                    $grid->interview_time('邀请时间')->display(function ($interview_time) {                        return date('Y-m-d H:i:s', $interview_time);                    })->sortable();                    $grid->column('members.subsite_id', '所属分站')->display(function ($subsite_id) {                        if ($subsite_id) {                            $Subsite = Subsite::find($subsite_id);                            return isset($Subsite->sitename) ? $Subsite->sitename : '未知';                        }                        return '总站';                    })->width(150);                    $grid->created_at('申请时间')->sortable();                    $grid->updated_at('更新时间')->sortable();                    $grid->disableTools();                    $grid->disableActions();                    $grid->setName($key);                    $grid->disableRowSelector();                    $grid->setPaginatorBaseUrl($key);                    break;                case 'log':                    $grid = new Grid(new MembersLog);                    $grid->model()->where(['log_uid'=>$uid,'log_utype'=>$utype])->when(get_subsite_id()>0, function ($query) {                        $query->whereHas('members', function ($query) {                            $query->where('subsite_id', get_subsite_id());                        });                    })->orderBy('id', 'desc');                    $grid->id('ID');                    $grid->log_username('用户名')->width(200);                    $grid->log_value('日志说明')->width(300);                    $grid->log_ip('ip')->display(function ($log_ip){                        return long2ip($log_ip);                    })->width(150);                    $grid->log_address('登录地址')->width(150);                    $grid->log_utype('会员类型')->display(function ($log_utype) {                        if($log_utype==1){                            return '企业';                        }else{                            return '个人';                        }                    });                    $grid->log_source('操作途径')->width(150);                    $grid->created_at('申请时间')->sortable();                    $grid->updated_at('更新时间')->sortable();                    $grid->disableTools();                    $grid->disableActions();                    $grid->setName($key);                    $grid->disableRowSelector();                    $grid->setPaginatorBaseUrl($key);                    break;            }            $tab->add($val, view('admin.company.content')->with('contents', $grid), $type == $key);        }        return $content            ->header('会员信息')            ->description('列表')            ->body($tab);    }    protected function memberSms($sms_id, $mobile, $username, $password)    {        $SmsRule = SmsRule::where('alias', $sms_id)->first();        if (isset($SmsRule->status) && !empty($SmsRule->status)) {            if ($mobile) {                $this->smsService->sendSms($mobile, $sms_id, ['username'=>$username,'password'=>$password]);            }        }    }}
 |