From 15c0cc66b9ac0f6cc1a46359773817669274ffc9 Mon Sep 17 00:00:00 2001 From: TinyAnts Date: Wed, 31 Aug 2022 15:04:53 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E6=96=87=E7=AB=A0=E8=B5=84?= =?UTF-8?q?=E8=AE=AF=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../front/controller/ArticleController.java | 20 +++- .../mdd/front/service/IArticleService.java | 29 +++++- .../service/impl/ArticleServiceImpl.java | 96 ++++++++++++++++++- .../com/mdd/front/validate/PageParam.java | 28 ++++++ .../mdd/front/vo/article/ArticleDetailVo.java | 8 ++ .../mdd/front/vo/article/ArticleListVo.java | 8 ++ 6 files changed, 177 insertions(+), 12 deletions(-) create mode 100644 server/like-front/src/main/java/com/mdd/front/validate/PageParam.java 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 d7cdad6f..01fc07f5 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 @@ -1,10 +1,17 @@ package com.mdd.front.controller; import com.mdd.common.core.AjaxResult; +import com.mdd.common.core.PageResult; +import com.mdd.common.validator.annotation.IDMust; import com.mdd.front.service.IArticleService; +import com.mdd.front.validate.PageParam; import com.mdd.front.vo.article.ArticleCateVo; +import com.mdd.front.vo.article.ArticleDetailVo; +import com.mdd.front.vo.article.ArticleListVo; +import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; import javax.annotation.Resource; @@ -26,7 +33,7 @@ public class ArticleController { @GetMapping("/category") public Object category() { List list = iArticleService.category(); - return AjaxResult.success(list); + return AjaxResult.success(list); } /** @@ -36,8 +43,10 @@ public class ArticleController { * @return Object */ @GetMapping("/list") - public Object list() { - return AjaxResult.success(); + public Object list(@Validated PageParam pageParam, + @RequestParam(value = "cid", defaultValue = "0") Integer cid) { + PageResult list = iArticleService.list(pageParam, cid); + return AjaxResult.success(list); } /** @@ -47,8 +56,9 @@ public class ArticleController { * @return Object */ @GetMapping("/detail") - public Object detail() { - return AjaxResult.success(); + public Object detail(@Validated @IDMust() @RequestParam("id") Integer id) { + ArticleDetailVo vo = iArticleService.detail(id); + return AjaxResult.success(vo); } } 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 6b608d0c..64e2846d 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,10 @@ package com.mdd.front.service; +import com.mdd.common.core.PageResult; +import com.mdd.front.validate.PageParam; import com.mdd.front.vo.article.ArticleCateVo; +import com.mdd.front.vo.article.ArticleDetailVo; +import com.mdd.front.vo.article.ArticleListVo; import java.util.List; @@ -9,10 +13,31 @@ import java.util.List; */ public interface IArticleService { + /** + * 文章分类 + * + * @author fzr + * @return List + */ List category(); - Object list(); + /** + * 文章分类 + * + * @author fzr + * @param pageParam 分页参数 + * @param cid 分类ID + * @return PageResult + */ + PageResult list(PageParam pageParam, Integer cid); - Object detail(); + /** + * 文章详情 + * + * @author fzr + * @param id 文章主键 + * @return ArticleDetailVo + */ + ArticleDetailVo detail(Integer id); } 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 705177ed..d5a3bcd6 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 @@ -1,14 +1,32 @@ package com.mdd.front.service.impl; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.core.toolkit.Assert; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.mdd.common.core.PageResult; +import com.mdd.common.entity.article.Article; +import com.mdd.common.entity.article.ArticleCategory; import com.mdd.common.mapper.article.ArticleCategoryMapper; import com.mdd.common.mapper.article.ArticleMapper; +import com.mdd.common.utils.TimeUtil; +import com.mdd.common.utils.UrlUtil; import com.mdd.front.service.IArticleService; +import com.mdd.front.validate.PageParam; import com.mdd.front.vo.article.ArticleCateVo; +import com.mdd.front.vo.article.ArticleDetailVo; +import com.mdd.front.vo.article.ArticleListVo; +import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; import javax.annotation.Resource; +import java.util.Arrays; +import java.util.LinkedList; import java.util.List; +/** + * 文章服务实现类 + */ @Service public class ArticleServiceImpl implements IArticleService { @@ -18,19 +36,87 @@ public class ArticleServiceImpl implements IArticleService { @Resource ArticleCategoryMapper articleCategoryMapper; + /** + * 文章分类 + * + * @author fzr + * @return List + */ @Override public List category() { - return null; + List articleCateVos = articleCategoryMapper.selectList( + new QueryWrapper() + .select("id,name") + .eq("is_show", 1) + .eq("is_delete", 0) + .orderByDesc(Arrays.asList("sort", "id"))); + + List list = new LinkedList<>(); + for (ArticleCategory category: articleCateVos) { + ArticleCateVo vo = new ArticleCateVo(); + BeanUtils.copyProperties(category, vo); + list.add(vo); + } + + return list; } + /** + * 文章列表 + * + * @author fzr + * @param pageParam 分页参数 + * @param cid 分类ID + * @return PageResult + */ @Override - public Object list() { - return null; + public PageResult list(PageParam pageParam, Integer cid) { + Integer pageNo = pageParam.getPageNo(); + Integer pageSize = pageParam.getPageSize(); + + QueryWrapper
queryWrapper = new QueryWrapper<>(); + queryWrapper.select("id,title,image,intro,visit,create_time"); + if (cid > 0) { + queryWrapper.eq("cid", cid); + } + + IPage
iPage = articleMapper.selectPage(new Page<>(pageNo, pageSize), queryWrapper); + + List list = new LinkedList<>(); + for (Article article : iPage.getRecords()) { + ArticleListVo vo = new ArticleListVo(); + BeanUtils.copyProperties(article, vo); + vo.setImage(UrlUtil.toAbsoluteUrl(article.getImage())); + vo.setCreateTime(TimeUtil.timestampToDate(article.getCreateTime())); + list.add(vo); + } + + return PageResult.iPageHandle(iPage.getTotal(), iPage.getCurrent(), iPage.getSize(), list); } + /** + * 文章详情 + * + * @author fzr + * @param id 文章主键 + * @return ArticleDetailVo + */ @Override - public Object detail() { - return null; + public ArticleDetailVo detail(Integer id) { + Article article = articleMapper.selectOne(new QueryWrapper
() + .select("id,title,image,intro,visit,author,content,create_time") + .eq("id", id) + .eq("is_show", 1) + .eq("is_delete", 0) + .last("limit 1")); + + Assert.notNull(article, "数据不存在!"); + + ArticleDetailVo vo = new ArticleDetailVo(); + BeanUtils.copyProperties(article, vo); + vo.setImage(UrlUtil.toAbsoluteUrl(article.getImage())); + vo.setCreateTime(TimeUtil.timestampToDate(article.getCreateTime())); + return vo; } } diff --git a/server/like-front/src/main/java/com/mdd/front/validate/PageParam.java b/server/like-front/src/main/java/com/mdd/front/validate/PageParam.java new file mode 100644 index 00000000..433408c3 --- /dev/null +++ b/server/like-front/src/main/java/com/mdd/front/validate/PageParam.java @@ -0,0 +1,28 @@ +package com.mdd.front.validate; + +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import javax.validation.constraints.DecimalMax; +import javax.validation.constraints.DecimalMin; +import java.io.Serializable; + +/** + * 分页参数 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +public class PageParam implements Serializable { + + // 当前分页 + @DecimalMin(value = "1", message = "pageNo参数必须大于0的数字") + public Integer pageNo = 1; + + // 每页条数 + @DecimalMin(value = "1", message = "pageSize参数必须是大于0的数字") + @DecimalMax(value = "60", message = "pageSize参数必须是小于60的数字") + private Integer pageSize = 20; + +} diff --git a/server/like-front/src/main/java/com/mdd/front/vo/article/ArticleDetailVo.java b/server/like-front/src/main/java/com/mdd/front/vo/article/ArticleDetailVo.java index 82c13a9d..ceaa73fd 100644 --- a/server/like-front/src/main/java/com/mdd/front/vo/article/ArticleDetailVo.java +++ b/server/like-front/src/main/java/com/mdd/front/vo/article/ArticleDetailVo.java @@ -9,5 +9,13 @@ public class ArticleDetailVo implements Serializable { private static final long serialVersionUID = 1L; + private Integer id; + private String title; + private String image; + private String intro; + private Integer visit; + private String author; + private String content; + private String createTime; } diff --git a/server/like-front/src/main/java/com/mdd/front/vo/article/ArticleListVo.java b/server/like-front/src/main/java/com/mdd/front/vo/article/ArticleListVo.java index 82affba0..6d3d5190 100644 --- a/server/like-front/src/main/java/com/mdd/front/vo/article/ArticleListVo.java +++ b/server/like-front/src/main/java/com/mdd/front/vo/article/ArticleListVo.java @@ -8,4 +8,12 @@ import java.io.Serializable; public class ArticleListVo implements Serializable { private static final long serialVersionUID = 1L; + + private Integer id; + private String title; + private String image; + private String intro; + private Integer visit; + private String createTime; + }