增加文章资讯接口

This commit is contained in:
TinyAnts 2022-08-31 15:04:53 +08:00
parent 746236e545
commit 15c0cc66b9
6 changed files with 177 additions and 12 deletions

View File

@ -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<ArticleCateVo> 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<ArticleListVo> 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);
}
}

View File

@ -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<ArticleCateVo>
*/
List<ArticleCateVo> category();
Object list();
/**
* 文章分类
*
* @author fzr
* @param pageParam 分页参数
* @param cid 分类ID
* @return PageResult<ArticleListVo>
*/
PageResult<ArticleListVo> list(PageParam pageParam, Integer cid);
Object detail();
/**
* 文章详情
*
* @author fzr
* @param id 文章主键
* @return ArticleDetailVo
*/
ArticleDetailVo detail(Integer id);
}

View File

@ -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<ArticleCateVo>
*/
@Override
public List<ArticleCateVo> category() {
return null;
List<ArticleCategory> articleCateVos = articleCategoryMapper.selectList(
new QueryWrapper<ArticleCategory>()
.select("id,name")
.eq("is_show", 1)
.eq("is_delete", 0)
.orderByDesc(Arrays.asList("sort", "id")));
List<ArticleCateVo> 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<ArticleListVo>
*/
@Override
public Object list() {
return null;
public PageResult<ArticleListVo> list(PageParam pageParam, Integer cid) {
Integer pageNo = pageParam.getPageNo();
Integer pageSize = pageParam.getPageSize();
QueryWrapper<Article> queryWrapper = new QueryWrapper<>();
queryWrapper.select("id,title,image,intro,visit,create_time");
if (cid > 0) {
queryWrapper.eq("cid", cid);
}
IPage<Article> iPage = articleMapper.selectPage(new Page<>(pageNo, pageSize), queryWrapper);
List<ArticleListVo> 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<Article>()
.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;
}
}

View File

@ -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;
}

View File

@ -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;
}

View File

@ -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;
}