diff --git a/CHANGELOG.md b/CHANGELOG.md index e5c1c0ed..0cec2ad5 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,7 @@ - 调整登录限制(邮箱|手机)为注册限制 - 调整订单发货为每一分钟执行一次 - 增强课时安全性,无权限时不返回播放地址或内容 +- 抽离出文章关闭,仅我可见操作 - 增加删除文章和提问接口 - 增加首页推荐教师接口 - 增加微信公众号支付处理 diff --git a/app/Http/Api/Controllers/ArticleController.php b/app/Http/Api/Controllers/ArticleController.php index 10db6ded..0ad2e498 100644 --- a/app/Http/Api/Controllers/ArticleController.php +++ b/app/Http/Api/Controllers/ArticleController.php @@ -7,11 +7,13 @@ namespace App\Http\Api\Controllers; +use App\Services\Logic\Article\ArticleClose as ArticleCloseService; use App\Services\Logic\Article\ArticleDelete as ArticleDeleteService; use App\Services\Logic\Article\ArticleFavorite as ArticleFavoriteService; use App\Services\Logic\Article\ArticleInfo as ArticleInfoService; use App\Services\Logic\Article\ArticleLike as ArticleLikeService; use App\Services\Logic\Article\ArticleList as ArticleListService; +use App\Services\Logic\Article\ArticlePrivate as ArticlePrivateService; use App\Services\Logic\Article\CategoryList as CategoryListService; use App\Services\Logic\Article\CommentList as CommentListService; @@ -81,6 +83,34 @@ class ArticleController extends Controller return $this->jsonSuccess(); } + /** + * @Post("/{id:[0-9]+}/close", name="home.article.close") + */ + public function closeAction($id) + { + $service = new ArticleCloseService(); + + $article = $service->handle($id); + + $msg = $article->closed == 1 ? '关闭评论成功' : '开启评论成功'; + + return $this->jsonSuccess(['msg' => $msg]); + } + + /** + * @Post("/{id:[0-9]+}/private", name="home.article.private") + */ + public function privateAction($id) + { + $service = new ArticlePrivateService(); + + $article = $service->handle($id); + + $msg = $article->private == 1 ? '开启仅我可见成功' : '关闭仅我可见成功'; + + return $this->jsonSuccess(['msg' => $msg]); + } + /** * @Post("/{id:[0-9]+}/favorite", name="api.article.favorite") */ diff --git a/app/Http/Home/Controllers/ArticleController.php b/app/Http/Home/Controllers/ArticleController.php index b43d0278..9f199c3c 100644 --- a/app/Http/Home/Controllers/ArticleController.php +++ b/app/Http/Home/Controllers/ArticleController.php @@ -10,12 +10,14 @@ namespace App\Http\Home\Controllers; use App\Http\Home\Services\Article as ArticleService; use App\Http\Home\Services\ArticleQuery as ArticleQueryService; use App\Models\Article as ArticleModel; +use App\Services\Logic\Article\ArticleClose as ArticleCloseService; use App\Services\Logic\Article\ArticleCreate as ArticleCreateService; use App\Services\Logic\Article\ArticleDelete as ArticleDeleteService; use App\Services\Logic\Article\ArticleFavorite as ArticleFavoriteService; use App\Services\Logic\Article\ArticleInfo as ArticleInfoService; use App\Services\Logic\Article\ArticleLike as ArticleLikeService; use App\Services\Logic\Article\ArticleList as ArticleListService; +use App\Services\Logic\Article\ArticlePrivate as ArticlePrivateService; use App\Services\Logic\Article\ArticleUpdate as ArticleUpdateService; use App\Services\Logic\Article\RelatedArticleList as RelatedArticleListService; use Phalcon\Mvc\View; @@ -107,6 +109,14 @@ class ArticleController extends Controller return $this->notFound(); } + $private = $article['private'] == 1; + + $owned = $this->authUser->id == $article['owner']['id']; + + if ($private && !$owned) { + return $this->forbidden(); + } + $this->seo->prependTitle(['专栏', $article['title']]); $this->seo->setDescription($article['summary']); @@ -195,6 +205,34 @@ class ArticleController extends Controller return $this->jsonSuccess($content); } + /** + * @Post("/{id:[0-9]+}/close", name="home.article.close") + */ + public function closeAction($id) + { + $service = new ArticleCloseService(); + + $article = $service->handle($id); + + $msg = $article->closed == 1 ? '关闭评论成功' : '开启评论成功'; + + return $this->jsonSuccess(['msg' => $msg]); + } + + /** + * @Post("/{id:[0-9]+}/private", name="home.article.private") + */ + public function privateAction($id) + { + $service = new ArticlePrivateService(); + + $article = $service->handle($id); + + $msg = $article->private == 1 ? '开启仅我可见成功' : '关闭仅我可见成功'; + + return $this->jsonSuccess(['msg' => $msg]); + } + /** * @Post("/{id:[0-9]+}/favorite", name="home.article.favorite") */ diff --git a/app/Http/Home/Views/article/show.volt b/app/Http/Home/Views/article/show.volt index 06a57cb1..62fa935f 100644 --- a/app/Http/Home/Views/article/show.volt +++ b/app/Http/Home/Views/article/show.volt @@ -6,6 +6,8 @@ {% set article_edit_url = url({'for':'home.article.edit','id':article.id}) %} {% set article_delete_url = url({'for':'home.article.delete','id':article.id}) %} + {% set article_private_url = url({'for':'home.article.private','id':article.id}) %} + {% set article_close_url = url({'for':'home.article.close','id':article.id}) %} {% set article_owner_url = url({'for':'home.user.show','id':article.owner.id}) %} {% set article_related_url = url({'for':'home.article.related','id':article.id}) %} {% set article_report_url = url({'for':'home.report.add'},{'item_id':article.id,'item_type':106}) %} @@ -44,6 +46,16 @@