| // +------------------------------------------------+ namespace app\mobile\controller; use app\common\service\MemberInfo; use app\common\service\Score as ScoreService; use cjango\Wechat\Token; use think\Cache; use think\Config; use tools\Initialize; use tools\Str; class _Init extends Initialize { public function _initialize() { define('UID', self::isLogin()); if (!UID) { //判断跳转。文章、每日分享、事业介绍详情页,个人资料页面不跳转 self::T(); // $this->redirect('login/wxLogin', 'callback=' . base64_encode(__SELF__)); } $uid = $this->request->get('uid'); if ($uid) { $this->shareUser = MemberInfo::show($uid); } //分享初始化 self::fenxiang(); } /** * 跳转 */ public function T() { $data = [ 'Login/index', 'Login/reg', 'Login/autoLogin', 'Login/info', 'Cause/detail', 'Share/detail', 'Article/show', 'Index/info', 'Index/index', 'Help/directdetail', 'Help/detail', 'Invite/index', 'Qrcode/index', ]; $url = CONTROLLER_NAME . '/' . ACTION_NAME; if (!in_array($url, $data) || (!UID && !$this->request->get('uid'))) { if (IS_AJAX) { return $this->error('操作失败', url('login/index')); } else { $this->redirect('login/index'); } } } /** * 分享文章获取积分 */ public function ShareArticle() { if (!empty($this->shareUser->uid) && $this->shareUser->uid != UID) { ScoreService::share($this->shareUser->uid); } } /** * 操作成功跳转的快捷方法 * @access protected * @param mixed $msg 提示信息 * @param string $url 跳转的URL地址 * @param mixed $data 返回的数据 * @param integer $wait 跳转等待时间 * @param array $header 发送的Header信息 * @return void */ protected function success($msg = '', $url = null, $data = '', $wait = 3, array $header = []) { $msg = $msg ?: '操作成功'; return parent::success($msg, $url, $data, $wait, $header); } /** * 操作错误跳转的快捷方法 * @access protected * @param mixed $msg 提示信息 * @param string $url 跳转的URL地址 * @param mixed $data 返回的数据 * @param integer $wait 跳转等待时间 * @param array $header 发送的Header信息 * @return void */ protected function error($msg = '', $url = null, $data = '', $wait = 3, array $header = []) { $msg = $msg ?: '未知错误'; return parent::error($msg, $url, $data, $wait, $header); } protected function back($result) { if ($result === true) { return $this->success(); } else { return $this->error($result); } } /** * 微信分享 * @return [type] [description] */ public function fenxiang() { parent::initWechat(); // 微信分享 $ticket = Cache::get('Wechat_ticket'); $config = Config::get('wechat'); if (!$ticket) { $ticket = Token::ticket(); Cache::set('Wechat_ticket', $ticket, 7000); } $wx['appid'] = $config['appid']; $wx['timestamp'] = time(); $wx['noncestr'] = $noncestr = Str::random(32); $sign = array( 'noncestr' => $noncestr, 'jsapi_ticket' => $ticket, 'timestamp' => time(), 'url' => __SELF__, ); ksort($sign); $signStr = sha1(urldecode(http_build_query($sign))); $wx['signature'] = $signStr; $this->assign('wx', $wx); } }