123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201 |
- <?php
- namespace App\Http\Controllers\Home;
- use App\Models\Article;
- use App\Models\ArticleTag;
- use App\Models\Chat;
- use App\Models\Comment;
- use App\Models\OauthUser;
- use App\Models\Tag;
- use Illuminate\Http\Request;
- use App\Http\Controllers\Controller;
- class IndexController extends Controller
- {
- /**
- * 首页
- *
- * @param Article $articleModel
- * @return mixed
- */
- public function index(Article $articleModel)
- {
- $article = $articleModel->getHomeList();
- $assign = [
- 'category_id' => 'index',
- 'article' => $article,
- 'tagName' => ''
- ];
- return view('home/index/index', $assign);
- }
- /**
- * 文章详情
- *
- * @param $id
- * @param Article $article
- * @param Comment $commentModel
- * @return mixed
- */
- public function article($id, Article $article, Comment $commentModel)
- {
- // 获取文章数据
- $data = $article->getDataById($id);
- echo $data->markdown;die;
- // 获取上一篇
- $prev = $article
- ->select('id', 'title')
- ->orderBy('created_at', 'asc')
- ->where('id', '>', $id)
- ->limit(1)
- ->first();
- // 获取下一篇
- $next = $article
- ->select('id', 'title')
- ->orderBy('created_at', 'desc')
- ->where('id', '<', $id)
- ->limit(1)
- ->first();
- // 获取评论
- $comment = $commentModel->getDataByArticleId($id);
- $assign = [
- 'category_id' => $data->category_id,
- 'data' => $data,
- 'prev' => $prev,
- 'next' => $next,
- 'comment' => $comment
- ];
- return view('home/index/article', $assign);
- }
- /**
- * 获取栏目下的文章
- *
- * @param Article $articleModel
- * @param $id
- * @return mixed
- */
- public function category(Article $articleModel, $id)
- {
- $map = [
- 'articles.category_id' => $id
- ];
- $article = $articleModel->getHomeList($map);
- $assign = [
- 'category_id' => $id,
- 'article' => $article,
- 'tagName' => ''
- ];
- return view('home/index/index', $assign);
- }
- /**
- * 获取标签下的文章
- *
- * @param $id
- * @param Article $articleModel
- * @return mixed
- */
- public function tag($id, Article $articleModel)
- {
- // 获取标签名
- $tagName = Tag::where('id', $id)->value('name');
- // 获取此标签下的文章id
- $articleIds = ArticleTag::where('tag_id', $id)
- ->pluck('article_id')
- ->toArray();
- // 获取文章数据
- $map = [
- 'articles.id' => ['in', $articleIds]
- ];
- $article = $articleModel->getHomeList($map);
- $assign = [
- 'category_id' => 'index',
- 'article' => $article,
- 'tagName' => $tagName
- ];
- return view('home/index/index', $assign);
- }
- /**
- * 随言碎语
- *
- * @return mixed
- */
- public function chat()
- {
- $chat = Chat::orderBy('created_at', 'desc')->get();
- $assign =[
- 'category_id' => 'chat',
- 'chat' => $chat
- ];
- return view('home/index/chat', $assign);
- }
- /**
- * 开源项目
- *
- * @return mixed
- */
- public function git()
- {
- $assign = [
- 'category_id' => 'git'
- ];
- return view('home/index/git', $assign);
- }
- /**
- * 文章评论
- *
- * @param Comment $commentModel
- */
- public function comment(Comment $commentModel, OauthUser $oauthUserModel)
- {
- $data = request()->all();
- if (empty($data['content'])) {
- die('内容不能为空');
- }
- if (empty(session('user.id'))) {
- die('未登录');
- }
- // 如果用户输入邮箱;则将邮箱记录入oauth_user表中
- $pattern = "/^([0-9A-Za-z\\-_\\.]+)@([0-9a-z]+\\.[a-z]{2,3}(\\.[a-z]{2})?)$/i";
- if (preg_match($pattern, $data['email'])) {
- // 获取用户id
- $user_id = session('user.id');
- // 修改邮箱
- $oauthUserMap = [
- 'id' => $user_id
- ];
- $oauthUserData = [
- 'email' => $data['email']
- ];
- $oauthUserModel->editData($oauthUserMap, $oauthUserData);
- session(['user.email' => $data['email']]);
- unset($data['email']);
- }
- // 存储评论
- $id = $commentModel->addData($data);
- echo $id;
- }
- /**
- * 检测是否登录
- */
- public function checkLogin()
- {
- if (empty(session('user.id'))) {
- return 0;
- } else {
- return 1;
- }
- }
- }
|