diff --git a/server/like-front/src/main/java/com/mdd/front/controller/ArticleController.java b/server/like-front/src/main/java/com/mdd/front/controller/ArticleController.java index 31e8224a..ce0b4c53 100644 --- a/server/like-front/src/main/java/com/mdd/front/controller/ArticleController.java +++ b/server/like-front/src/main/java/com/mdd/front/controller/ArticleController.java @@ -48,10 +48,9 @@ public class ArticleController { */ @GetMapping("/list") public AjaxResult> list(@Validated PageValidate pageValidate, - @Validated ArticleSearchValidate searchValidate, - @RequestParam(value = "cid", defaultValue = "0") Integer cid) { + @Validated ArticleSearchValidate searchValidate) { Integer userId = LikeFrontThreadLocal.getUserId(); - PageResult list = iArticleService.list(pageValidate, cid, userId); + PageResult list = iArticleService.list(userId, pageValidate, searchValidate); return AjaxResult.success(list); } diff --git a/server/like-front/src/main/java/com/mdd/front/service/IArticleService.java b/server/like-front/src/main/java/com/mdd/front/service/IArticleService.java index 108a3edb..62dbeed3 100644 --- a/server/like-front/src/main/java/com/mdd/front/service/IArticleService.java +++ b/server/like-front/src/main/java/com/mdd/front/service/IArticleService.java @@ -1,6 +1,7 @@ package com.mdd.front.service; import com.mdd.common.core.PageResult; +import com.mdd.front.validate.ArticleSearchValidate; import com.mdd.front.validate.commons.PageValidate; import com.mdd.front.vo.article.ArticleCateVo; import com.mdd.front.vo.article.ArticleCollectVo; @@ -26,12 +27,12 @@ public interface IArticleService { * 文章分类 * * @author fzr - * @param pageValidate 分页参数 - * @param cid 分类ID * @param userId 用户ID + * @param pageValidate 分页参数 + * @param searchValidate 搜索参数 * @return PageResult */ - PageResult list(PageValidate pageValidate, Integer cid, Integer userId); + PageResult list(Integer userId, PageValidate pageValidate, ArticleSearchValidate searchValidate); /** * 文章详情 diff --git a/server/like-front/src/main/java/com/mdd/front/service/impl/ArticleServiceImpl.java b/server/like-front/src/main/java/com/mdd/front/service/impl/ArticleServiceImpl.java index 7b715f0c..e4eb940f 100644 --- a/server/like-front/src/main/java/com/mdd/front/service/impl/ArticleServiceImpl.java +++ b/server/like-front/src/main/java/com/mdd/front/service/impl/ArticleServiceImpl.java @@ -17,6 +17,7 @@ import com.mdd.common.util.StringUtils; import com.mdd.common.util.TimeUtils; import com.mdd.common.util.UrlUtils; import com.mdd.front.service.IArticleService; +import com.mdd.front.validate.ArticleSearchValidate; import com.mdd.front.validate.commons.PageValidate; import com.mdd.front.vo.article.ArticleCateVo; import com.mdd.front.vo.article.ArticleCollectVo; @@ -74,13 +75,13 @@ public class ArticleServiceImpl implements IArticleService { * 文章列表 * * @author fzr - * @param pageValidate 分页参数 - * @param cid 分类ID * @param userId 用户ID + * @param pageValidate 分页参数 + * @param searchValidate 搜索参数 * @return PageResult */ @Override - public PageResult list(PageValidate pageValidate, Integer cid, Integer userId) { + public PageResult list( Integer userId, PageValidate pageValidate, ArticleSearchValidate searchValidate) { Integer pageNo = pageValidate.getPageNo(); Integer pageSize = pageValidate.getPageSize(); @@ -88,9 +89,23 @@ public class ArticleServiceImpl implements IArticleService { queryWrapper.select("id,title,image,intro,visit,create_time"); queryWrapper.eq("is_delete", 0); queryWrapper.eq("is_show", 1); - queryWrapper.orderByDesc(Arrays.asList("sort", "id")); - if (cid > 0) { - queryWrapper.eq("cid", cid); + + articleMapper.setSearch(queryWrapper, searchValidate, new String[]{ + "=:cid:int", + "like:keyword@title:str" + }); + + if (StringUtils.isNotNull(searchValidate.getSort())) { + switch (searchValidate.getSort()) { + case "hot": // 最热 + queryWrapper.orderByDesc(Arrays.asList("visit", "id")); + break; + case "new": // 最新 + queryWrapper.orderByDesc("id"); + break; + default: // 默认 + queryWrapper.orderByDesc(Arrays.asList("sort", "id")); + } } IPage
iPage = articleMapper.selectPage(new Page<>(pageNo, pageSize), queryWrapper); diff --git a/server/like-front/src/main/java/com/mdd/front/validate/ArticleSearchValidate.java b/server/like-front/src/main/java/com/mdd/front/validate/ArticleSearchValidate.java index 3192a356..df6bc065 100644 --- a/server/like-front/src/main/java/com/mdd/front/validate/ArticleSearchValidate.java +++ b/server/like-front/src/main/java/com/mdd/front/validate/ArticleSearchValidate.java @@ -1,6 +1,8 @@ package com.mdd.front.validate; +import com.mdd.common.validator.annotation.StringContains; import lombok.Data; +import org.hibernate.validator.constraints.Length; import java.io.Serializable; @@ -12,8 +14,12 @@ public class ArticleSearchValidate implements Serializable { private static final long serialVersionUID = 1L; + private Integer cid; + + @Length(max = 100, message = "关键词过长了") private String keyword; + @StringContains(values = {"hot", "new"}) private String sort; }