auth = $auth; $this->userRepository = $userRepository; $this->captchaService = $captchaService; $this->user = $user; $this->userData = $userData; } // public function __construct(User $user, UserData $userData) // { // $this->user = $user; // $this->userData = $userData; // } public function index() { session_start(); if(isset($_SESSION['login_time'])){ $time = time()- $_SESSION['login_time']; if($time > 7200){ setcookie("token",0,time()-7200,"/",".nxjiewei.com"); unset($_SESSION['login_time']); $this->auth->logout(); return redirect()->to(route('website.index')); } } if(isset($_COOKIE['token'])){// && Auth()->guest()==true 加上切换账号问答系统不更换账号 $_COOKIE['token'] = base64_decode($_COOKIE['token']); $data['email'] = explode(',',$_COOKIE['token'])[0]; $data['_token'] = csrf_token(); $data['password_confirmation'] = explode(',',$_COOKIE['token'])[1]; $data['password'] = explode(',',$_COOKIE['token'])[1]; $data['visit_ip'] = explode(',',$_COOKIE['token'])[2]; $data['name'] = DB::select('select * from admins where staff_num = "'.$data['email'].'"')[0]->name; $user = DB::table('users')->where('email','=',$data['email'])->first(); if($user == null){ $this->zhuce($data); }else{ //换密码了修改一下密码 if(!Hash::check($data['password'],$user->password)){ $res['password'] = Hash::make($data['password']); DB::table('users')->where('email',$data['email'])->update($res); } $this->denglu($data); } } /*热门话题*/ $hotTags = Taggable::globalHotTags(); /*推荐内容*/ $recommendItems= Cache::remember('recommend_items',Setting()->get('website_cache_time',1),function() { return Recommendation::where('status','>',0)->orderBy('sort','asc')->orderBy('updated_at','desc')->take(11)->get(); }); /*热门专家*/ $hotExperts = Cache::remember('index_hot_experts',Setting()->get('website_cache_time',1),function(){ return Authentication::hottest(8); }); $hotUsers = Cache::remember('index_hot_users',30,function() { return UserData::hottest(20); }); /*热门问题*/ $newestQuestions = Cache::remember('index_newest_questions',Setting()->get('website_cache_time',1),function() { return Question::newest(0,5); }); /*悬赏问题*/ $rewardQuestions = Cache::remember('index_reward_questions',Setting()->get('website_cache_time',1),function() { return Question::reward(0,5); }); /*热门文章*/ $hotArticles = Cache::remember('index_hot_articles',Setting()->get('website_cache_time',1),function() { return Article::hottest(0,12); }); /*最新文章*/ $newestArticles = Cache::remember('index_newest_articles',Setting()->get('website_cache_time',1),function() { return Article::newest(0,12); }); /*最新公告*/ $newestNotices = Cache::remember('newest_notices',Setting()->get('website_cache_time',1),function() { return Notice::where('status','>','0')->orderBy('updated_at','DESC')->take(6)->get(); }); /*财富榜*/ $topCoinUsers = Cache::remember('index_top_coin_users',Setting()->get('website_cache_time',1),function() { return UserData::top('coins',8); }); /*友情链接*/ $friendshipLinks = Cache::remember('friendship_links',Setting()->get('website_cache_time',1),function() { return FriendshipLink::where('status','=',1)->orderBy('sort','asc')->orderBy('created_at','asc')->take(50)->get(); }); $signDate = Carbon::today(); return view('theme::home.index')->with(compact('hotUsers','recommendItems','hotExperts','newestQuestions','rewardQuestions','hotArticles','newestArticles','newestNotices','hotTags','topCoinUsers','friendshipLinks','signDate')); } public function zhuce($data){ $data['status'] = 1; $data['password'] = Hash::make($data['password']); $data['site_notifications'] = implode(',', array_keys(config('tipask.notification_types'))); $data['email_notifications'] = 'adopt_answer,invite_answer'; $data['qrcode'] = '/static/images/default_avatar.jpg'; $user = $this->user->create($data); if ($user) { $userData = [ 'user_id' => $user->id, 'coins' => 0, 'credits' => 0, 'registered_at' => Carbon::now(), 'last_visit' => Carbon::now(), 'last_login_ip' => $data['visit_ip'], ]; if ($user->mobile) { $userData['mobile_status'] = 1; } $this->userData->create($userData); } $user->attachRole(2); //默认注册为普通用户角色 $this->auth->login($user); $_SESSION['login_time'] = time(); $message = '注册成功!'; if($this->credit($user->id,'register',Setting()->get('coins_register'),Setting()->get('credits_register'))){ $message .= get_credit_message(Setting()->get('credits_register'),Setting()->get('coins_register')); } if(Setting()->get('register_type')=='email'){ /*发送邮箱验证邮件*/ $emailToken = EmailToken::create([ 'email' => $user->email, 'token' => EmailToken::createToken(), 'action'=> 'register' ]); if($emailToken){ $subject = '欢迎注册'.Setting()->get('website_name').',请激活您注册的邮箱!'; $content = "「".$data['name']."」您好,请激活您在 ".Setting()->get('website_name')." 的注册邮箱!
请在1小时内点击该链接激活注册账号 → ".route('auth.email.verifyToken',['action'=>$emailToken->action,'token'=>$emailToken->token])."
如非本人操作,请忽略此邮件!"; $this->sendEmail($emailToken->email,$subject,$content); } } /*记录注册ip*/ $this->counter('register_number_'.md5($data['visit_ip']) , 1,86400 ); } public function denglu($data){ $credentials = [ 'password' => $data['password'] ]; $credentials['email'] = $data['email']; /*根据邮箱地址和密码进行认证*/ if ($this->auth->attempt($credentials, true)) { $id = DB::table('users')->where('email','=',$data['email'])->first()->id; if($this->credit($id,'login',Setting()->get('coins_login'),Setting()->get('credits_login'))){ $message = '登陆成功! '.get_credit_message(Setting()->get('credits_login'),Setting()->get('coins_login')); return $this->success(route('website.index'),$message,true); } $_SESSION['login_time'] = time(); /*认证成功后跳转到首页*/ return $this->success(route('auth.doing.index'),'登陆成功!',true); } } /*问答模块*/ public function ask($categorySlug='all',$filter='newest') { $question = new Question(); if(!method_exists($question,$filter)){ abort(404); } $parentId=$currentCategoryId = 0; $currentCategory = null; if( $categorySlug != 'all' ){ $category = Category::where("slug","=",$categorySlug)->first(); if(!$category){ abort(404); } $currentCategoryId = $category->id; $parentId = $category->parent_id; $currentCategory = $category; if($category->hasChild()){ $parentId = $category->id; } } $questions = call_user_func([$question,$filter] , $currentCategoryId ); /*热门话题*/ $hotTags = Taggable::globalHotTags('questions'); $categories = load_categories('questions'); $parentCategories = Category::getParentCategories($parentId); $hotUsers = Cache::remember('ask_hot_users',Setting()->get('website_cache_time',1),function() { return UserData::activities(8); }); return view('theme::home.ask')->with(compact('currentCategory','questions','hotUsers','hotTags','filter','categories','currentCategoryId','parentId','parentCategories','categorySlug')); } public function blog($categorySlug='all', $filter='newest') { $article = new Article(); if(!method_exists($article,$filter)){ abort(404); } $parentId=$currentCategoryId = 0; $currentCategory = null; if( $categorySlug != 'all' ){ $category = Category::where("slug","=",$categorySlug)->first(); if(!$category){ abort(404); } $currentCategoryId = $category->id; $parentId = $category->parent_id; $currentCategory = $category; if($category->hasChild()){ $parentId = $category->id; } } $articles = call_user_func([$article,$filter],$currentCategoryId); /*热门文章*/ $hotArticles = Cache::remember('hot_articles',Setting()->get('website_cache_time',1),function() { return Article::recommended(0,8); }); $hotUsers = UserData::activeInArticles(); /*热门话题*/ $hotTags = Taggable::globalHotTags('articles'); $tabData = get_category_tab_data("articles",7); $parentCategories = Category::getParentCategories($parentId); return view('theme::home.blog')->with(compact('tabData','currentCategory','articles','hotUsers','hotTags','filter','currentCategoryId','parentId','parentCategories','categorySlug','hotArticles')); } public function topic( $categorySlug='all') { $parentId=$currentCategoryId = 0; $query = Tag::query(); if( $categorySlug != 'all' ){ $category = Category::where("slug","=",$categorySlug)->first(); if(!$category){ abort(404); } $currentCategoryId = $category->id; $parentId = $category->parent_id; if($category->hasChild()){ $parentId = $category->id; } $query->whereIn('category_id',$category->getSubIds()); } $categories = load_categories('tags'); $parentCategories = Category::getParentCategories($parentId); $topics = $query->orderBy('followers','DESC')->paginate(20); return view('theme::home.topic')->with(compact('topics','categories','currentCategoryId','categorySlug','currentCategoryId','parentId','parentCategories')); } public function user() { $hotUsers = Cache::remember('index_user_hot_users',30,function() { return UserData::hottest(50); }); $newUsers = Cache::remember('index_new_users',10,function() { return User::where("status",">",0)->orderBy("created_at","desc")->take(50)->get(); }); return view('theme::home.user')->with(compact('hotUsers','newUsers')); } public function experts(Request $request,$categorySlug='all',$provinceId='all'){ $categories = load_categories('experts'); $hotProvinces = Cache::remember('hot_expert_cities',Setting()->get('website_cache_time',1),function() { return Authentication::select('province', DB::raw('COUNT(user_id) as total'))->groupBy('province')->orderBy('total','desc')->get(); }); $query = Authentication::leftJoin('user_data', 'user_data.user_id', '=', 'authentications.user_id')->where('user_data.authentication_status','=',1); $categoryId = 0; if( $categorySlug != 'all' ){ $category = Category::where("slug","=",$categorySlug)->first(); if($category){ $categoryId = $category->id; $query->where("authentications.category_id","=",$categoryId); } } if($provinceId != 'all'){ $query->where("authentications.province","=",$provinceId); } $word = $request->input('word',''); if($word){ $query->where("authentications.real_name",'like',"$word%"); } $experts = $query->orderBy('user_data.answers','DESC') ->orderBy('user_data.articles','DESC') ->orderBy('authentications.updated_at','DESC') ->select('authentications.user_id','authentications.real_name','authentications.description','authentications.title','user_data.coins','user_data.credits','user_data.followers','user_data.supports','user_data.answers','user_data.articles','user_data.authentication_status') ->paginate(16); return view('theme::home.expert')->with(compact('experts','categories','hotProvinces','categorySlug','categoryId','provinceId','word')); } public function shop($categorySlug='all') { $parentId=$currentCategoryId = 0; $query = Goods::query(); if( $categorySlug != 'all' ){ $category = Category::where("slug","=",$categorySlug)->first(); if(!$category){ abort(404); } $currentCategoryId = $category->id; $parentId = $category->parent_id; if($category->hasChild()){ $parentId = $category->id; } $query->whereIn('category_id',$category->getSubIds()); } $categories = load_categories('goods'); $parentCategories = Category::getParentCategories($parentId); $goods = $query->where('status','>',0)->where('remnants','>',0)->orderBy('coins','asc')->paginate(16); $exchanges = Exchange::newest(); return view('theme::home.shop')->with(compact('goods','exchanges','categories','currentCategoryId','categorySlug','currentCategoryId','parentId','parentCategories')); } }