diff --git a/app/Http/Home/Controllers/CommentController.php b/app/Http/Home/Controllers/CommentController.php new file mode 100644 index 00000000..4d11ee38 --- /dev/null +++ b/app/Http/Home/Controllers/CommentController.php @@ -0,0 +1,144 @@ +handle(); + + $pager->target = 'comment-list'; + + $this->view->setRenderLevel(View::LEVEL_ACTION_VIEW); + + $this->view->setVar('pager', $pager); + } + + /** + * @Get("/{id:[0-9]+}/replies", name="home.comment.replies") + */ + public function repliesAction($id) + { + $service = new ReplyListService(); + + $pager = $service->handle($id); + + $pager->target = "reply-list-{$id}"; + + $this->view->setRenderLevel(View::LEVEL_ACTION_VIEW); + + $this->view->setVar('pager', $pager); + } + + /** + * @Get("/{id:[0-9]+}/info", name="home.comment.info") + */ + public function infoAction($id) + { + $service = new CommentInfoService(); + + $comment = $service->handle($id); + + $this->view->setRenderLevel(View::LEVEL_ACTION_VIEW); + + $this->view->setVar('comment', $comment); + } + + /** + * @Get("/add", name="home.comment.add") + */ + public function addAction() + { + + } + + /** + * @Get("/{id:[0-9]+}/reply", name="home.comment.reply") + */ + public function replyAction($id) + { + $service = new CommentInfoService(); + + $comment = $service->handle($id); + + $this->view->setVar('comment', $comment); + } + + /** + * @Post("/create", name="home.comment.create") + */ + public function createAction() + { + $service = new CommentCreateService(); + + $comment = $service->handle(); + + $service = new CommentInfoService(); + + $comment = $service->handle($comment->id); + + return $this->jsonSuccess(['comment' => $comment]); + } + + /** + * @Post("/{id:[0-9]+}/reply", name="home.comment.create_reply") + */ + public function createReplyAction($id) + { + $service = new CommentReplyService(); + + $comment = $service->handle($id); + + $service = new CommentInfoService(); + + $comment = $service->handle($comment->id); + + return $this->jsonSuccess(['comment' => $comment]); + } + + /** + * @Post("/{id:[0-9]+}/like", name="home.comment.like") + */ + public function likeAction($id) + { + $service = new CommentLikeService(); + + $data = $service->handle($id); + + $msg = $data['action'] == 'do' ? '点赞成功' : '取消点赞成功'; + + return $this->jsonSuccess(['data' => $data, 'msg' => $msg]); + } + + /** + * @Post("/{id:[0-9]+}/delete", name="home.comment.delete") + */ + public function deleteAction($id) + { + $service = new CommentDeleteService(); + + $service->handle($id); + + return $this->jsonSuccess(['msg' => '删除评论成功']); + } + +} diff --git a/app/Http/Home/Controllers/PackageController.php b/app/Http/Home/Controllers/PackageController.php index 12a7f513..a879cde6 100644 --- a/app/Http/Home/Controllers/PackageController.php +++ b/app/Http/Home/Controllers/PackageController.php @@ -12,6 +12,20 @@ use Phalcon\Mvc\View; class PackageController extends Controller { + /** + * @Get("/{id:[0-9]+}", name="home.package.show") + */ + public function showAction($id) + { + $service = new PackageInfoService(); + + $package = $service->handle($id); + + $this->seo->prependTitle(['套餐', $package['title']]); + + $this->view->setVar('package', $package); + } + /** * @Get("/{id:[0-9]+}/info", name="home.package.info") */ diff --git a/app/Http/Home/Controllers/PublicController.php b/app/Http/Home/Controllers/PublicController.php index c37faf2f..e1363c8e 100644 --- a/app/Http/Home/Controllers/PublicController.php +++ b/app/Http/Home/Controllers/PublicController.php @@ -2,6 +2,7 @@ namespace App\Http\Home\Controllers; +use App\Http\Home\Services\ShareUrl as ShareUrlService; use App\Library\CsrfToken as CsrfTokenService; use App\Repos\Upload as UploadRepo; use App\Services\LiveNotify as LiveNotifyService; @@ -43,6 +44,22 @@ class PublicController extends \Phalcon\Mvc\Controller } } + /** + * @Get("/share", name="home.share") + */ + public function shareAction() + { + $id = $this->request->getQuery('id', 'int', 0); + $type = $this->request->getQuery('type', 'string', 'course'); + $referer = $this->request->getQuery('referer', 'int', 0); + + $service = new ShareUrlService(); + + $location = $service->handle($id, $type, $referer); + + return $this->response->redirect($location, true); + } + /** * @Get("/qrcode", name="home.qrcode") */ diff --git a/app/Http/Home/Services/ShareUrl.php b/app/Http/Home/Services/ShareUrl.php new file mode 100644 index 00000000..4c5dd0c5 --- /dev/null +++ b/app/Http/Home/Services/ShareUrl.php @@ -0,0 +1,159 @@ +webBaseUrl = $this->getWebBaseUrl(); + $this->h5BaseUrl = $this->getH5BaseUrl(); + } + + public function handle($id, $type, $referer = 0) + { + if ($type == 'article') { + $result = $this->getArticleUrl($id, $referer); + } elseif ($type == 'course') { + $result = $this->getCourseUrl($id, $referer); + } elseif ($type == 'chapter') { + $result = $this->getChapterUrl($id, $referer); + } elseif ($type == 'package') { + $result = $this->getPackageUrl($id, $referer); + } elseif ($type == 'vip') { + $result = $this->getVipUrl($id, $referer); + } elseif ($type == 'user') { + $result = $this->getUserUrl($id, $referer); + } else { + $result = $this->getHomeUrl($referer); + } + + return $this->h5Enabled() ? $result['h5'] : $result['web']; + } + + public function getHomeUrl($referer = 0) + { + $webUrl = sprintf('%s?referer=%s', $this->webBaseUrl, $referer); + + $h5Url = sprintf('%s?referer=%s', $this->h5BaseUrl, $referer); + + return ['web' => $webUrl, 'h5' => $h5Url]; + } + + public function getArticleUrl($id, $referer = 0) + { + $route = $this->url->get( + ['for' => 'home.article.show', 'id' => $id], + ['referer' => $referer] + ); + + $webUrl = $this->webBaseUrl . $route; + + $h5Url = sprintf('%s/article/info?id=%s&referer=%s', $this->h5BaseUrl, $id, $referer); + + return ['web' => $webUrl, 'h5' => $h5Url]; + } + + public function getCourseUrl($id, $referer = 0) + { + $route = $this->url->get( + ['for' => 'home.course.show', 'id' => $id], + ['referer' => $referer] + ); + + $webUrl = $this->webBaseUrl . $route; + + $h5Url = sprintf('%s/course/info?id=%s&referer=%s', $this->h5BaseUrl, $id, $referer); + + return ['web' => $webUrl, 'h5' => $h5Url]; + } + + public function getChapterUrl($id, $referer = 0) + { + $route = $this->url->get( + ['for' => 'home.chapter.show', 'id' => $id], + ['referer' => $referer] + ); + + $webUrl = $this->webBaseUrl . $route; + + $h5Url = sprintf('%s/chapter/info?id=%s&referer=%s', $this->h5BaseUrl, $id, $referer); + + return ['web' => $webUrl, 'h5' => $h5Url]; + } + + public function getPackageUrl($id, $referer = 0) + { + $route = $this->url->get( + ['for' => 'home.package.show', 'id' => $id], + ['referer' => $referer] + ); + + $webUrl = $this->webBaseUrl . $route; + + $h5Url = sprintf('%s/package/info?id=%s&referer=%s', $this->h5BaseUrl, $id, $referer); + + return ['web' => $webUrl, 'h5' => $h5Url]; + } + + public function getUserUrl($id, $referer = 0) + { + $route = $this->url->get( + ['for' => 'home.user.show', 'id' => $id], + ['referer' => $referer] + ); + + $webUrl = $this->webBaseUrl . $route; + + $h5Url = sprintf('%s/user/info?id=%s&referer=%s', $this->h5BaseUrl, $id, $referer); + + return ['web' => $webUrl, 'h5' => $h5Url]; + } + + public function getVipUrl($id, $referer = 0) + { + $route = $this->url->get( + ['for' => 'home.vip.index'], + ['id' => $id, 'referer' => $referer] + ); + + $webUrl = $this->webBaseUrl . $route; + + $h5Url = sprintf('%s/vip/index?id=%s&referer=%s', $this->h5BaseUrl, $id, $referer); + + return ['web' => $webUrl, 'h5' => $h5Url]; + } + + protected function h5Enabled() + { + $file = public_path('h5/index.html'); + + return file_exists($file); + } + + protected function getWebBaseUrl() + { + return kg_site_url(); + } + + protected function getH5BaseUrl() + { + return sprintf('%s/h5/#/pages', kg_site_url()); + } + +} diff --git a/app/Http/Home/Views/article/comment.volt b/app/Http/Home/Views/article/comment.volt new file mode 100644 index 00000000..91731085 --- /dev/null +++ b/app/Http/Home/Views/article/comment.volt @@ -0,0 +1,21 @@ +{% set item_type = 2 %} +{% set comment_list_url = url({'for':'home.comment.list'},{'item_id':article.id,'item_type':item_type}) %} +{% set comment_create_url = url({'for':'home.comment.create'}) %} +{% set submit_class = auth_user.id > 0 ? 'layui-btn layui-btn-sm' : 'layui-btn layui-btn-sm layui-btn-disabled' %} + +