说明:
(1)本篇博客内容:开发【撤回文章,接口】、【删除文章,接口】;
(2)声明:在该项目中,删除和撤回的业务意义是这样的;自己在开其他项目的时候,其业务意义可能是其他样子的,即有所变动;
目录
二:开发【撤回文章,接口】、【删除文章,接口】:Controller部分;
1.在【api】接口工程的ArticleControllerApi接口中,定义【撤回文章,接口】、【删除文章,接口】;
2.在【article】文章服务的ArticleController类中,去实现【撤回文章,接口】、【删除文章,接口】;
三:开发【撤回文章,接口】、【删除文章,接口】:Service部分;
1.在【article】文章服务的ArticleService接口中,定义"删除文章"、"撤回文章"的方法;
2.在【article】文章服务的ArticleServiceImpl类中,去实现"删除文章"、"撤回文章"的方法;
(1)删除:把is_delete字段,修改为1:
● 这儿删除的业务意义是:这篇文章用户已经不想要了,想要删除;
● 用户删除文章后,该文章的逻辑状态就是已删除了;
● 我们这儿没有开发回收站;所以,用户删除一篇文章后,这篇文章对于用户来说,就算永久的删除了;
● 但是,其实,用户删除文章后,该文章仅仅是逻辑删除;我们并没有删除该文章在数据库中的那条记录;(PS:这儿,只是简单的演示了一下;在实际开发中,还是要根据自己的具体的项目的需求,去开发的;)
(2)撤回:把article_status字段,修改为5;
● 这儿撤回的业务意义是:这篇文章用户不想对外展示了,想要撤回一下;后续,可能想要重写一篇等;
● 只能是已发布的文章,用户才能撤回;
● 用户撤回一篇文章后,改文章的状态就变更为了已撤回;这也是文章的最终形态;
- /**
- * 前台的,用户删除文章接口;
- * @param userId
- * @param articleId
- * @return
- */
- @PostMapping("/delete")
- @ApiOperation(value = "用户删除文章", notes = "用户删除文章", httpMethod = "POST")
- public GraceJSONResult delete(@RequestParam String userId,
- @RequestParam String articleId);
-
- /**
- * 前台的,用户撤回文章接口;
- * @param userId
- * @param articleId
- * @return
- */
- @PostMapping("/withdraw")
- @ApiOperation(value = "用户撤回文章", notes = "用户撤回文章", httpMethod = "POST")
- public GraceJSONResult withdraw(@RequestParam String userId,
- @RequestParam String articleId);
- /**
- * 前台的,用户删除文章接口;
- * @param userId
- * @param articleId
- * @return
- */
- @Override
- public GraceJSONResult delete(String userId, String articleId) {
- articleService.deleteArticle(userId, articleId);
- return GraceJSONResult.ok();
- }
-
- /**
- * 前台的,用户撤回文章接口;
- * @param userId
- * @param articleId
- * @return
- */
- @Override
- public GraceJSONResult withdraw(String userId, String articleId) {
- articleService.withdrawArticle(userId, articleId);
- return GraceJSONResult.ok();
- }
- /**
- * 删除文章
- */
- public void deleteArticle(String userId, String articleId);
-
- /**
- * 撤回文章
- */
- public void withdrawArticle(String userId, String articleId);
- /**
- * 删除文章:简单粗暴的把is_delete字段,修改为1,仅此而已;
- */
- @Transactional
- @Override
- public void deleteArticle(String userId, String articleId) {
- Example articleExample = makeExampleCriteria(userId, articleId);
-
- Article pending = new Article();
- pending.setIsDelete(YesOrNo.YES.type);
-
- int result = articleMapper.updateByExampleSelective(pending, articleExample);
- if (result != 1) {
- GraceException.display(ResponseStatusEnum.ARTICLE_DELETE_ERROR);
- }
- }
-
- /**
- * 撤回文章:简单粗暴的把article_status字段,修改为5,仅此而已;
- */
- @Transactional
- @Override
- public void withdrawArticle(String userId, String articleId) {
- Example articleExample = makeExampleCriteria(userId, articleId);
-
- Article pending = new Article();
- pending.setArticleStatus(ArticleReviewStatus.WITHDRAW.type);
-
- int result = articleMapper.updateByExampleSelective(pending, articleExample);
- if (result != 1) {
- GraceException.display(ResponseStatusEnum.ARTICLE_WITHDRAW_ERROR);
- }
- }
-
- /**
- * 工具方法:构建Example条件;
- * @param userId
- * @param articleId
- * @return
- */
- private Example makeExampleCriteria(String userId, String articleId) {
- Example articleExample = new Example(Article.class);
- Example.Criteria criteria = articleExample.createCriteria();
- criteria.andEqualTo("publishUserId", userId);
- criteria.andEqualTo("id", articleId);
- return articleExample;
- }
(1)先install一下整个项目;(2)记得使用SwitchHost开启虚拟域名映射;(3)使用Tomcat启动前端项目;(4)然后,启动后端项目;