新闻微服务开发完成,首页微服务开发中

This commit is contained in:
xiongxiaoyang
2020-05-28 18:53:35 +08:00
parent 387d5e862c
commit 7edd79a5f2
23 changed files with 629 additions and 15 deletions

View File

@ -0,0 +1,26 @@
package com.java2nb.novel.news.api;
import com.java2nb.novel.news.entity.News;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import java.util.List;
/**
* 新闻微服务API接口定义内部
* @author xiongxiaoyang
* @version 1.0
* @since 2020/5/28
*/
public interface NewsApi {
/**
* 查询最新新闻集合
* @param limit 查询条数
* @return 新闻集合
* */
@GetMapping("api/news/listLastIndexNews")
List<News> listLastIndexNews(@RequestParam("limit") int limit);
}

View File

@ -3,9 +3,10 @@ package com.java2nb.novel.news.entity;
import io.swagger.annotations.ApiModelProperty;
import javax.annotation.Generated;
import java.io.Serializable;
import java.util.Date;
public class News {
public class News implements Serializable {
@ApiModelProperty(value = "主键")
@Generated("org.mybatis.generator.api.MyBatisGenerator")
private Long id;

View File

@ -0,0 +1,19 @@
package com.java2nb.novel.news.vo;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.java2nb.novel.news.entity.News;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.Date;
/**
* @author Administrator
*/
@Data
public class NewsVO extends News {
@ApiModelProperty(value = "新闻发布时间")
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd")
private Date createTime;
}

View File

@ -0,0 +1,56 @@
package com.java2nb.novel.news.controller;
import com.github.pagehelper.PageInfo;
import com.java2nb.novel.common.bean.ResultBean;
import com.java2nb.novel.news.entity.News;
import com.java2nb.novel.news.service.NewsService;
import com.java2nb.novel.news.vo.NewsVO;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.BeanUtils;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.*;
import java.util.List;
/**
* @author 11797
*/
@RestController
@RequestMapping("news")
@RequiredArgsConstructor
@Slf4j
@Api(tags = "新闻相关接口")
public class NewsController {
private final NewsService newsService;
/**
* 分页查询新闻列表接口
* */
@ApiOperation("分页查询新闻列表接口")
@GetMapping("listByPage")
public ResultBean<List<NewsVO>> listByPage(@ApiParam("当前页码") @RequestParam(value = "curr", defaultValue = "1") int page, @ApiParam("每页大小") @RequestParam(value = "limit", defaultValue = "5") int pageSize){
return ResultBean.ok(new PageInfo<>(newsService.listByPage(page,pageSize)));
}
/**
* 新闻内容查询接口
* */
@ApiOperation("新闻内容查询接口")
@GetMapping("{newsId}")
public ResultBean<NewsVO> newsInfo(@ApiParam("新闻ID") @PathVariable("newsId") Long newsId) {
News news = newsService.queryNewsInfo(newsId);
NewsVO newsVO = new NewsVO();
BeanUtils.copyProperties(news,newsVO);
return ResultBean.ok(newsVO);
}
}

View File

@ -0,0 +1,41 @@
package com.java2nb.novel.news.controller.api;
import com.java2nb.novel.news.entity.News;
import com.java2nb.novel.news.service.NewsService;
import com.java2nb.novel.news.vo.NewsVO;
import lombok.RequiredArgsConstructor;
import org.springframework.web.bind.annotation.*;
import springfox.documentation.annotations.ApiIgnore;
import java.util.Date;
import java.util.List;
/**
* 新闻微服务API接口内部调用
* @author xiongxiaoyang
* @version 1.0
* @since 2020/5/27
*/
@RestController
@RequestMapping(("api/news"))
@ApiIgnore
@RequiredArgsConstructor
public class NewsApi {
private final NewsService newsService;
/**
* 查询最新新闻集合
* @param limit 查询条数
* @return 新闻集合
* */
@GetMapping("listLastIndexNews")
List<News> listLastIndexNews(@RequestParam("limit") int limit){
return newsService.listLastIndexNews(limit);
}
}

View File

@ -0,0 +1,38 @@
package com.java2nb.novel.news.service;
import com.java2nb.novel.news.entity.News;
import com.java2nb.novel.news.vo.NewsVO;
import java.util.List;
/**
* 新闻服务接口
* @author xiongxiaoyang
* @version 1.0
* @since 2020/5/28
*/
public interface NewsService {
/**
* 分页查询新闻列表接口
* @param page 查询页码
* @param pageSize 分页大小
* @return 新闻列表集合
* */
List<NewsVO> listByPage(int page, int pageSize);
/**
* 查询最新新闻集合
* @param limit 查询条数
* @return 新闻集合
* */
List<News> listLastIndexNews(int limit);
/**
* 查询新闻
* @param newsId 新闻id
* @return 新闻
* */
News queryNewsInfo(Long newsId);
}

View File

@ -0,0 +1,70 @@
package com.java2nb.novel.news.service.impl;
import com.github.pagehelper.PageHelper;
import com.java2nb.novel.common.utils.BeanUtil;
import com.java2nb.novel.news.entity.News;
import com.java2nb.novel.news.mapper.NewsDynamicSqlSupport;
import com.java2nb.novel.news.mapper.NewsMapper;
import com.java2nb.novel.news.service.NewsService;
import com.java2nb.novel.news.vo.NewsVO;
import lombok.RequiredArgsConstructor;
import org.mybatis.dynamic.sql.render.RenderingStrategies;
import org.mybatis.dynamic.sql.select.render.SelectStatementProvider;
import org.springframework.stereotype.Service;
import java.util.List;
import static org.mybatis.dynamic.sql.SqlBuilder.isEqualTo;
import static org.mybatis.dynamic.sql.select.SelectDSL.select;
/**
* 新闻服务接口实现
* @author xiongxiaoyang
* @version 1.0
* @since 2020/5/28
*/
@Service
@RequiredArgsConstructor
public class NewsServiceImpl implements NewsService {
private final NewsMapper newsMapper;
@Override
public List<NewsVO> listByPage(int page, int pageSize) {
PageHelper.startPage(page,pageSize);
SelectStatementProvider selectStatement =
select(NewsDynamicSqlSupport.id, NewsDynamicSqlSupport.catName,
NewsDynamicSqlSupport.catId, NewsDynamicSqlSupport.title,NewsDynamicSqlSupport.createTime)
.from(NewsDynamicSqlSupport.news)
.orderBy(NewsDynamicSqlSupport.createTime.descending())
.build()
.render(RenderingStrategies.MYBATIS3);
return BeanUtil.copyList(newsMapper.selectMany(selectStatement), NewsVO.class);
}
@Override
public List<News> listLastIndexNews(int limit) {
SelectStatementProvider selectStatement =
select(NewsDynamicSqlSupport.id, NewsDynamicSqlSupport.catName,
NewsDynamicSqlSupport.catId, NewsDynamicSqlSupport.title)
.from(NewsDynamicSqlSupport.news)
.orderBy(NewsDynamicSqlSupport.createTime.descending())
.limit(limit)
.build()
.render(RenderingStrategies.MYBATIS3);
return newsMapper.selectMany(selectStatement);
}
@Override
public News queryNewsInfo(Long newsId) {
SelectStatementProvider selectStatement = select(NewsDynamicSqlSupport.news.allColumns())
.from(NewsDynamicSqlSupport.news)
.where(NewsDynamicSqlSupport.id,isEqualTo(newsId))
.build()
.render(RenderingStrategies.MYBATIS3);
return newsMapper.selectMany(selectStatement).get(0);
}
}