checkSet(); $_url = getServerUrl() . $_SERVER['REQUEST_URI']; // 用户自定义配置微信公众号 self::$_wxappid = self::$SET['appid']; self::$_wxappsecret = self::$SET['appsecret']; //var_dump(strpos($_SERVER["HTTP_USER_AGENT"], "MicroMessenger"));die; if (!$_SESSION['sqmode']) { if (strpos($_SERVER["HTTP_USER_AGENT"], "MicroMessenger")) { //判断code是否存在 if ($_GET['code']) { if ($_GET['code'] != 'authdeny') { //用户授权 $options['appid'] = self::$_wxappid; $options['appsecret'] = self::$_wxappsecret; $wx = new \Util\Wx\Wechat($options); $re = $wx->getOauthAccessToken($_GET['code']); // $openid = $re['openid']; if ($re) { $_SESSION['sqmode'] = 'wecha'; $_SESSION['openid'] = $openid; } } else { $this->error(0, '本应用需要您的授权才可以使用!'); } } else { $options['appid'] = self::$_wxappid; $options['appsecret'] = self::$_wxappsecret; $wx = new \Util\Wx\Wechat($options); $squrl = $wx->getOauthRedirect($_url, '1', 'snsapi_base'); header("Location:" . $squrl); exit; } } else { $this->error('请使用微信浏览器访问本应用!'); } } $this->getJssdk(); } } //第三方授权功能 //设置全局变量 全局缓存SET public function checkSet() { $set = M('partner_wxconfig')->find(); if (!$set) { $this->error('合伙人未配置公众号!'); exit; } $oldSet = session('SET'); if ($set['appid'] != $oldSet['appid'] || $set['appsecret'] != $oldSet['appsecret']) { session('sqmode', null); } return $set ? $set : $this->error('系统全局设置未定义!'); } //禁止不动的失败提示的信息 public function diemsg($status, $msg) { //成功为1,失败为0 $this->error($msg); $this->display('Base_diemsg'); die(); } //生成微信jssdk 参数 ,用于页面展示图片和分享链接 public function getJssdk() { self::$_wxappid = self::$SET['appid']; self::$_wxappsecret = self::$SET['appsecret']; $jssdk = new Jssdk(self::$_wxappid, self::$_wxappsecret); $signPackage = $jssdk->GetSignPackage(); $this->assign('signPackage', $signPackage); } /* 加载模板 */ public function index() { $openid = session('openid'); if (empty($openid)) { $this->assign('msg', '未获取到用户openid'); } else { $token = I('get.token'); $map['start_time'] = array('lt', time()); $map['end_time'] = array('gt', time()); $map['token'] = $token; $map['openid'] = array('exp', 'IS NULL'); $map['status'] = 0; $info = M('auth_token')->where($map)->find(); if (!empty($info)) { M('auth_token')->where(array('id' => $info['id']))->save(array('openid' => $openid, 'status' => 1)); switch ($info['user_type']) { case '0': //自建用户 $find = M('jurisdiction_user')->where(array('openid' => $openid, 'user_type' => 0))->find(); if ($find) { $this->assign('msg', '该微信已绑定自建用户:' . $find['name']); } else { $userInfo = M('jurisdiction_user')->where(array('id' => $info['user_id']))->find(); $firstUserInfo = M('jurisdiction_user')->where(array('id' => $userInfo['first_pid']))->find(); if ($firstUserInfo['user_type'] == 1) { $userInfo['type'] = '合伙人'; } elseif ($firstUserInfo['user_type'] == 2) { $userInfo['type'] = '代理商'; } elseif ($firstUserInfo['user_type'] == 2) { $userInfo['type'] = '商户'; } elseif ($firstUserInfo['user_type'] == 4) { $userInfo['type'] = '门店'; } elseif ($firstUserInfo['user_type'] == 5) { $userInfo['type'] = '导购员'; } $this->assign('userInfo', $userInfo); } break; case '1': //合伙人 $find = M('jurisdiction_user')->where(array('openid' => $openid, 'user_type' => 1))->find(); if ($find) { $this->assign('msg', '该微信已绑定合伙人:' . $find['name']); } else { $userInfo = M('jurisdiction_user')->where(array('id' => $info['user_id']))->find(); $userInfo['type'] = '合伙人'; $this->assign('userInfo', $userInfo); } break; case '2': //代理商 $find = M('jurisdiction_user')->where(array('openid' => $openid, 'user_type' => 2))->find(); if ($find) { $this->assign('msg', '该微信已绑定代理商:' . $find['name']); } else { $userInfo = M('jurisdiction_user')->where(array('id' => $info['user_id']))->find(); $userInfo['type'] = '代理商'; $this->assign('userInfo', $userInfo); } break; case '3': //商户 $find = M('jurisdiction_user')->where(array('openid' => $openid, 'user_type' => 3))->find(); if ($find) { $this->assign('msg', '该微信已绑定商户:' . $find['name']); } else { $userInfo = M('jurisdiction_user')->where(array('id' => $info['user_id']))->find(); $userInfo['type'] = '商户'; $this->assign('userInfo', $userInfo); } break; case '4': //店长 $find = M('jurisdiction_user')->where(array('openid' => $openid, 'user_type' => 4))->find(); if ($find) { $this->assign('msg', '该微信已绑定店长:' . $find['name']); } else { $userInfo = M('jurisdiction_user')->where(array('id' => $info['user_id']))->find(); $userInfo['type'] = '店长'; $this->assign('userInfo', $userInfo); } break; case '5': //导购 $find = M('jurisdiction_user')->where(array('openid' => $openid, 'user_type' => 5))->find(); if ($find) { $this->assign('msg', '该微信已绑定导购员:' . $find['name']); } else { $userInfo = M('jurisdiction_user')->where(array('id' => $info['user_id']))->field('name')->find(); $userInfo['type'] = '导购员'; $this->assign('userInfo', $userInfo); } break; } $this->assign('token', $token); } else { $this->assign('msg', '授权码已过期'); } } $this->display(); } /* 绑定操作 */ public function checkUser() { $openid = I('session.openid'); $token = I('post.token'); $map['start_time'] = array('lt', time()); $map['end_time'] = array('gt', time()); $map['token'] = $token; $map['openid'] = $openid; $map['status'] = 1; $info = M('auth_token')->where($map)->find(); if (!empty($info)) { $up['openid'] = $openid; $jurChange = D('JurisdictionUser')->updateUser(array('id' => $info['user_id']), $up); $save = M('auth_token')->where(array('id' => $info['id']))->save(array('openid' => $openid, 'status' => 2)); if ($save) { M('auth_token')->where(array('id' => $info['id']))->save(array('openid' => $openid, 'status' => 2)); $res['status'] = 1; $res['msg'] = '绑定成功'; } else { $res['status'] = 0; $res['msg'] = '绑定失败,请重试'; } } else { $res['status'] = 0; $res['msg'] = '授权码过期'; } $this->ajaxReturn($res); } public function cancelAuth() { if (IS_POST) { $openid = session('openid'); $token = I('post.token'); if (!empty($openid) && !empty($token)) { $update = M('auth_token')->where(array('token' => $token, 'openid' => $openid, 'status' => 1))->save(array('status' => 3)); if ($update) { $res['status'] = 1; $res['msg'] = '取消成功'; } else { $res['status'] = 0; $res['msg'] = '取消失败,请重试'; } } else { $res['status'] = 0; $res['msg'] = '缺少参数'; } $this->ajaxReturn($res); } } /* 扫码登陆页 */ public function scan_login($token) { if ($token) { M('login_token')->where(array('token' => $token))->setField('status', 2); $openid = I('session.openid'); $arr = array(); /* ls_jurisdiction_user表所有用户 */ $allUser = M('jurisdiction_user')->where(array('openid' => $openid, 'status' => 1, 'state' => 1, 'user_type' => ['neq', 6]))->select(); foreach ($allUser as $v) { $time = time(); if ($v['user_type'] == 0) { //自建login_name $selfUser = $this->selfUser($v); if ($selfUser['status'] == 1) { array_push($arr, $selfUser['data']); } } elseif ($v['user_type'] == 1) { //合伙人 $data['id'] = $v['id']; $data['name'] = $v['name']; array_push($arr, $data); } elseif ($v['user_type'] == 2) { //代理商 $agent = M('retail_agent')->where(array('id' => $v['system_user_id']))->find(); if ($agent['begin_time'] < $time && $time < $agent['end_time']) { $data['id'] = $v['id']; $data['name'] = $v['name']; array_push($arr, $data); } } elseif ($v['user_type'] == 3) { //商户 $merchant = M('retail_merchant')->where(array('id' => $v['system_user_id']))->find(); if ($merchant['begin_time'] < $time && $time < $merchant['end_time']) { $data['id'] = $v['id']; $data['name'] = $v['name']; array_push($arr, $data); } } elseif ($v['user_type'] == 4) { //门店 $manager = M('retail_manager')->where(array('id' => $v['system_user_id']))->find(); $merchant = M('retail_merchant')->where(array('id' => $manager['merchantid']))->find(); //商户是否过期 if ($merchant['begin_time'] < $time && $time < $merchant['end_time']) { $store = M('retail_store')->where(array('id' => $manager['storeid']))->find(); //门店是否删除 if ($store['state'] == 0) { $data['id'] = $v['id']; $data['name'] = $v['name']; array_push($arr, $data); } } } elseif ($v['user_type'] == 5) { //导购员 $guide = M('retail_guide')->where(array('id' => $v['system_user_id']))->find(); $merchant = M('retail_merchant')->where(array('id' => $guide['merchantid']))->find(); //商户是否过期 if ($merchant['begin_time'] < $time && $time < $merchant['end_time']) { $store = M('retail_store')->where(array('id' => $guide['storeid']))->find(); //门店是否删除 if ($store['state'] == 0) { $data['id'] = $v['id']; $data['name'] = $v['name']; array_push($arr, $data); } } } } $this->assign('userList', json_encode($arr)); $this->assign('canScan', $arr ? 1 : 0); $this->assign('token', $token); }; $this->display(); } /* 自建用户处理 */ public function selfUser($user) { $id = $user['pid']; $parent = M('jurisdiction_user')->where(array('id' => $id))->find(); if ($parent['status'] == 0 || $parent['state'] == 0) { $res['status'] = 0; $res['msg'] = '该系统已被删除或禁用'; return $res; } $time = time(); if ($parent['user_type'] == 1) { //合伙人的内部用户 $res['status'] = 1; $data['id'] = $user['id']; $data['name'] = $user['name']; $res['data'] = $data; return $res; } elseif ($parent['user_type'] == 2) { //代理商的内部用户 $agent = M('retail_agent')->where(array('id' => $parent['system_user_id']))->find(); if ($agent['begin_time'] < $time && $time < $agent['end_time']) { $res['status'] = 1; $data['id'] = $user['id']; $data['name'] = $user['name']; $res['data'] = $data; return $res; } else { $res['status'] = 0; $res['msg'] = '该代理商已过期'; return $res; } } elseif ($parent['user_type'] == 3) { //商户的内部用户 $merchant = M('retail_merchant')->where(array('id' => $parent['system_user_id']))->find(); if ($merchant['begin_time'] < $time && $time < $merchant['end_time']) { $res['status'] = 1; $data['id'] = $user['id']; $data['name'] = $user['name']; $res['data'] = $data; return $res; } else { $res['status'] = 0; $res['msg'] = '该商户已过期'; return $res; } } elseif ($parent['user_type'] == 4) { //门店的内部用户 $manager = M('retail_manager')->where(array('id' => $parent['system_user_id']))->find(); $merchant = M('retail_merchant')->where(array('id' => $manager['merchantid']))->find(); //商户是否过期 $store = M('retail_store')->where(array('id' => $manager['storeid']))->find(); //门店是否正常 if ($merchant['begin_time'] < $time && $time < $merchant['end_time']) { if ($store['state'] == 0) { $res['status'] = 1; $data['id'] = $user['id']; $data['name'] = $user['name']; $res['data'] = $data; return $res; } else { $res['status'] = 0; $res['msg'] = '该门店已不存在'; return $res; } } else { $res['status'] = 0; $res['msg'] = '该商户已过期'; return $res; } } } /* 用户登陆 */ public function userLogin() { $openid = I('session.openid'); $jurId = I('post.jurId'); $token = I('post.token'); if (empty($openid) || empty($jurId) || empty($token)) { $res['status'] = 0; $res['msg'] = '授权超时'; $this->ajaxReturn($res); } $token_find = M('login_token')->where(array('token' => $token))->find(); if (!$token_find) { $res['status'] = 0; $res['msg'] = '验证错误'; $this->ajaxReturn($res); } if ($token_find['status'] == 5) { $res['status'] = 0; $res['msg'] = '验证过期'; $this->ajaxReturn($res); } else if ($token_find['status'] == 2) { $up['user_id'] = $jurId; $up['openid'] = $openid; $up['status'] = 3; $token_up = M('login_token')->where(array('id' => $token_find['id']))->save($up); // 用户登陆 if ($token_up) { $res['status'] = 1; $res['msg'] = '登录成功'; } else { $res['status'] = 0; $res['msg'] = '登录失败'; } } else { $res['status'] = 0; $res['msg'] = '验证错误'; } $this->ajaxReturn($res); } /* 用户取消 */ public function user_call_off() { $token = I('post.token'); if (!$token) { $res['msg'] = '验证失败,网页即将关闭'; $this->ajaxReturn($res); } $token_find = M('login_token')->where(array('token' => $token))->find(); if (!$token_find) { $res['msg'] = '验证失败,网页即将关闭'; $this->ajaxReturn($res); } if ($token_find['status'] == 5) { $res['msg'] = '验证过期,网页即将关闭'; $this->ajaxReturn($res); } else if ($token_find['status'] == 2) { $token_up = M('login_token')->where(array('id' => $token_find['id']))->setField('status', 4); // 用户登陆 if ($token_up) { $res['msg'] = '取消成功,网页即将关闭'; } else { $res['msg'] = '取消失败,网页即将关闭'; } } else { $res['msg'] = '验证失败,网页即将关闭'; } $this->ajaxReturn($res); } /* 用户关闭网页 */ public function userClose() { $token = I('post.token'); if (!$token) { $res['msg'] = '验证失败,网页即将关闭'; $this->ajaxReturn($res); } $token_find = M('login_token')->where(array('token' => $token))->find(); if (!$token_find) { $res['msg'] = '验证失败,网页即将关闭'; $this->ajaxReturn($res); } if ($token_find['status'] == 5) { $res['msg'] = '验证过期,网页即将关闭'; $this->ajaxReturn($res); } else if ($token_find['status'] == 2) { $token_up = M('login_token')->where(array('id' => $token_find['id']))->setField('status', 4); // 用户登陆 if ($token_up) { $res['msg'] = '取消成功,网页即将关闭'; } else { $res['msg'] = '取消失败,网页即将关闭'; } } else { $res['msg'] = '验证失败,网页即将关闭'; } $this->ajaxReturn($res); } /** * 微信扫码获取用户列表 */ public function resetPassword() { $ApiRedis = new CacheHandle(); $token = I('get.token'); $code = $ApiRedis->getSingleCache('wx_reset_password_' . $token); if ($code) { $ApiRedis->addTimeCache('wx_reset_password_' . $token, 300, 2); } $this->display(); } /** * 微信扫码获取对应用户列表 */ public function getWxUserList() { $ApiRedis = new CacheHandle(); $token = I('post.token'); $code = $ApiRedis->getSingleCache('wx_reset_password_' . $token); if (!$code) { $this->ajaxReturn(['status' => 0, 'msg' => '页面异常请刷新重载']); } $param['openId'] = session('openid'); $param['type'] = 2; $CodeLogin = new \Retail\Business\CodeLogin(); $res = $CodeLogin->getLinkUser($param); $this->ajaxReturn($res); } /** * 微信扫码重置密码 */ public function wxResetPassword() { if (IS_GET) { $this->display(); } else { $ApiRedis = new CacheHandle(); $token = I('post.token'); $code = $ApiRedis->getSingleCache('wx_reset_password_' . $token); if (!$code) { $this->ajaxReturn(['status' => 0, 'msg' => '二维码已过期,请刷新重试!']); } else { $param['token'] = $token; $param['newPassWordFir'] = I('post.newPassWordFir'); $param['newPassWordSec'] = I('post.newPassWordSec'); $param['id'] = I('post.id'); $param['openid'] = session('openid'); $param['type'] = 2; $CodeLogin = new \Retail\Business\CodeLogin(); $res = $CodeLogin->setNewPassWord($param); $this->ajaxReturn($res); } } } /** * 重置成功 */ public function wxResetSuccess() { $this->display(); } }