博客系统发表文章接口进行微调
- 文章保存的时候,应该先查询分类id是否存在
- 分类id存在的情况下,判断分类是否可用状态
- 修改文章的时候,同理
- 字段移除两边空格
- 更新文章?限制文章草稿和发布的时候,才能更新
保存文章,或者草稿处理
@Override
public ResponseResult postArticle(Article article) {
//检查是否登录了
SobUser sobUser = mUserService.checkSobUser();
if (sobUser == null) {
return ResponseResult.FAILED("请登录");
}
//分类id,文章,依赖分类,必须有分类id,才能关联起来.
String categoryId = article.getCategoryId();
//检查文章的,字段,是否空的.
if (TextUtils.isEmpty(categoryId)) {
return ResponseResult.FAILED("分类id不能为空");
}
Category dbCategory = mCategoryDao.findOneById(categoryId.trim());
if (dbCategory == null) {
return ResponseResult.FAILED("分类不存在");
}
if ("0".equals(dbCategory.getStatus())) {
return ResponseResult.FAILED("分类被禁用");
}
String state = article.getState();
if (TextUtils.isEmpty(state)) {
return ResponseResult.FAILED("状态不能为空");
}
//草稿,发布2各种状态的文章
if (!Constants.Article.STATE_PUBLISH.equals(state)
&& !Constants.Article.STATE_DRAFT.equals(state)) {
return ResponseResult.FAILED("你的状态不对哦");
}
//格式分类
String type = article.getType();
if (TextUtils.isEmpty(type)) {
return ResponseResult.FAILED("文章格式不能是空,0富文本,1 md");
}
if (!Constants.Article.TYPE_MU.equals(type) && !Constants.Article.TYPE_MD.equals(type)) {
return ResponseResult.FAILED("文章格式,0富文本,1 md");
}
//发布文章的时候,需要检查数据
if (Constants.Article.STATE_PUBLISH.equals(state)) {
//标题
String title = article.getTitle();
if (TextUtils.isEmpty(title)) {
return ResponseResult.FAILED("标题不能为空");
}
if (title.trim().length() > Constants.Article.MAX_TITLE_LEN) {
return ResponseResult.FAILED("标题最大" + Constants.Article.MAX_TITLE_LEN);
}
//摘要
String summary = article.getSummary();
if (TextUtils.isEmpty(summary)) {
return ResponseResult.FAILED("摘要不能为空");
}
if (summary.trim().length() > Constants.Article.MAX_SUM_LEN) {
return ResponseResult.FAILED("摘要最大" + Constants.Article.MAX_SUM_LEN);
}
//内容
String content = article.getContent();
if (TextUtils.isEmpty(content)) {
return ResponseResult.FAILED("内容不能为空");
}
//标签
String labels = article.getLabels();
if (TextUtils.isEmpty(labels)) {
return ResponseResult.FAILED("文章标签不能为空");
}
//封面
String cover = article.getCover();
if (TextUtils.isEmpty(cover)) {
return ResponseResult.FAILED("封面必须配置");
}
}
String articleId = article.getId();
if (TextUtils.isEmpty(articleId)) {
//如果当前不附带id,就是新创建的文章,或者草稿
article.setId(String.valueOf(mIdWorker.nextId()));
article.setCreateTime(new Date());
} else {
//更新内容,检查状态。如果已经发布了。就不能保存草稿了。
Article dbArt = mArticleAdminDao.findOneById(article.getId());
if (dbArt == null) {
return ResponseResult.FAILED("无法查询到文章,无法修改");
}
//用户提交的草稿。但是库内,已经是发布了。是不允许存草稿的。
if (Constants.Article.STATE_PUBLISH.equals(dbArt.getState())
&& Constants.Article.STATE_DRAFT.equals(state)) {
return ResponseResult.FAILED("文章已经发布了,不能存草稿");
}
}
//补充数据
article.setUpdateTime(new Date());
article.setCategoryId(categoryId.trim());
article.setUser_id(sobUser.getId());
//移除空格
article.setTitle(article.getTitle().trim());
article.setSummary(article.getSummary().trim());
article.setContent(article.getContent().trim());
article.setType(type.trim());
article.setLabels(article.getLabels().trim());
article.setCover(article.getContent().trim());
//save to db
mArticleAdminDao.save(article);
if (Constants.Article.STATE_DRAFT.equals(state)) {
return ResponseResult.SUCCESS("草稿保存成功");
}
return ResponseResult.SUCCESS("文章发布成功");
}
更新文章的时候,也需要处理分类id的问题。
@Override
public ResponseResult updateArticle(String articleId, Article article) {
//更新?需要校验那些数据是不能为空的。
//检查id对应的文章是否存在。
Article dbArticle = mArticleAdminDao.findOneById(articleId);
if (dbArticle == null) {
return ResponseResult.FAILED("文章不存在");
}
//什么状态下的文章,可以更新?
if (!Constants.Article.STATE_PUBLISH.equals(dbArticle.getState())
&& !Constants.Article.STATE_DRAFT.equals(dbArticle.getState())) {
return ResponseResult.FAILED("文章不是发布/草稿状态,不能更新");
}
String categoryId = article.getCategoryId();
if (TextUtils.isEmpty(categoryId)) {
return ResponseResult.FAILED("分类id不能为空");
}
//检查分类是否存在
Category dbCategory = mCategoryDao.findOneById(categoryId);
if (dbCategory == null) {
return ResponseResult.FAILED("分类不存在");
}
if (Constants.CategoryKey.STATE_DEPRECATED.equals(dbCategory.getStatus())) {
return ResponseResult.FAILED("分类已经废弃了");
}
String title = article.getTitle();
if (!TextUtils.isEmpty(title)) {
dbArticle.setTitle(title.trim());
}
String summary = article.getSummary();
if (!TextUtils.isEmpty(summary)) {
dbArticle.setSummary(summary.trim());
}
String labels = article.getLabels();
if (!TextUtils.isEmpty(labels)) {
dbArticle.setLabels(labels.trim());
}
String content = article.getContent();
if (!TextUtils.isEmpty(content)) {
dbArticle.setContent(content.trim());
}
dbArticle.setCategoryId(categoryId);
//修改更新时间
dbArticle.setUpdateTime(new Date());
return ResponseResult.SUCCESS("文章更新成功");
}
注意的地方都写在代码注释中了
这是我自己写测试接口的时候,发现需要补救的地方。因为我平时调人家的接口也是乱传东西,所以成了习惯。 很多问题都可以在不断测试中发现。 同时也希望同学们在过程中,发现了需要修正的地方,也欢迎发文章做记录。