| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159 | <?phpnamespace app\h5\controller;use app\hander\HelpHander;use EasyWeChat\Factory;use think\Controller;use think\Db;use think\Exception;class WxHome extends Controller{    public function index(){        $code = input('code','');        if(!$code){            $code = decodecookie('sn');        }        if(!$code){            return $this->fetch('h5/msg_error',['msg'=>'请扫码二维码']);        }        $data = get_qrcode_arr($code);        if(!$data || $data['ucode'] != config('app.ucode') || $data['type'] != 'dinner_address'){            return $this->fetch('h5/msg_error',['msg'=>'二维码错误']);        }//        session('sn',$code);        encodecookie('sn',$code,100*365*24*60*60);        $info = Db::name('dinner_address')->where('id',$data['id'])->where('del',0)->where('enable',1)->find();        if(!$info || !$info['org_id']){            return $this->fetch('h5/msg_error',['msg'=>'二维码错误']);        }        $HospitalId = $info['org_id'];//        session('HospitalId',$HospitalId);        encodecookie('HospitalId',$HospitalId,100*365*24*60*60);//        $user = Db::name('wxuser')->where('id',206)->find();//        $user['HospitalName'] = "北京国天健宇物业管理发展有限公司";//        session('userinfo',$user);        $userId = dinner_is_login();//        $userId = 205;        if(!$userId){            $this->redirect(url('WxHome/login'));        }        $user = Db::name('wxuser')->where('id',$userId)->find();        if (empty($user)||empty($user['id'])) {           $this->redirect(url('WxHome/login'));        }        if($user['curr_org_id'] != $HospitalId){            Db::name('wxuser')->where('id',$user['id'])->update(['curr_org_id'=>$HospitalId]);        }        $org = Db::name('org')->where('id',$HospitalId)->where('del',0)->where('enable',1)->find();        if(!$org){            return $this->fetch('h5/msg_error',['msg'=>'二维码错误或已失效']);        }        $this->redirect(url('WxBookDinner/index'));    }    public function login() {        $sn = decodecookie('sn');        $orgId = decodecookie('HospitalId');        if(!$sn||!$orgId){            return $this->fetch('h5/msg_error',['msg'=>'请扫码二维码']);        }        session('user_auth',null);        session('user_auth_sign',null);        $currUrl = url("oauth",[],false,true).'?w='.$sn;        $config = get_pay_wechat($orgId);        $app = \EasyWeChat\Factory::officialAccount($config);        $response = $app->oauth->scopes(['snsapi_userinfo'])->redirect($currUrl);        $response->send();        exit();    }    public function oauth() {        $parameter = input('w');        $data = get_qrcode_arr($parameter);        if(!$data || $data['ucode'] != config('app.ucode') || $data['type'] != 'dinner_address'){            return $this->fetch('h5/msg_error',['msg'=>'二维码错误']);        }        $info = Db::name('dinner_address')->where('id',$data['id'])->where('del',0)->where('enable',1)->find();        if(!$info || !$info['org_id']){            return $this->fetch('h5/msg_error',['msg'=>'二维码错误']);        }        $orgId = $info['org_id'];        try {            $config =get_pay_wechat($orgId);            $userType = $config['user_type'];            $app = \EasyWeChat\Factory::officialAccount($config);            $user = $app->oauth->user();            $openid = $user->id;            $_data['curr_org_id'] = $orgId;            $_data['img'] = $user->avatar;            $_data['nickname'] = $user->nickname;            $userId = 0;            //查找数据库            $user = Db::name('wxuser')                ->where('openid', $openid)                ->where('type', $userType)                ->where('del',0)                ->find();            //不存在此用户            if (empty($user)) {                $_data['create_time'] = date('Y-m-d H:i:s');                $_data['enable'] = 1;                $_data['type'] = $userType;                $_data['openid'] = $openid;                $userId = Db::name('wxuser')->insertGetId($_data);                if(!$userId){                    \exception('登录失败');                }            }            else { //存在此用户则更新信息                $userId = $user['id'];                if (trim($_data['img']) == trim($user['img'])) {                    unset($_data['img']);                }                if (trim($_data['nickname']) == trim($user['nickname'])) {                    unset($_data['nickname']);                }                if (!empty($_data)) {                    Db::name('wxuser')->where('id', $user['id'])->update($_data);                }            }            //查找用户信息            $user = Db::name('wxuser')                ->where('id', $userId)                ->where('del',0)                ->find();            if (empty($user)) {                return $this->fetch('h5/msg_error', ['msg' => '不存在此用户']);            }            /* 记录登录SESSION和COOKIES */            $auth = array(                'id'                => $user['id'],                'nickname'           => $user['nickname'],            );            session('user_auth',$auth);            session('user_auth_sign',data_auth_sign($auth));            Db::name('dinner_cart')->where('user_id', $user['id'])->delete();            $this->redirect(url('WxHome/index').'?code='.$parameter);        } catch (Exception $e) {            return $this->fetch('h5/msg_error', ['msg' => '登录失败' . $e->getMessage()]);        }    }}
 |