package sqgxy.xxydz.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import sqgxy.xxydz.dto.*;
import sqgxy.xxydz.entity.News;
import sqgxy.xxydz.entity.NewsCategory;
import sqgxy.xxydz.enums.DisplayContent;
import sqgxy.xxydz.exception.HintException;
import sqgxy.xxydz.mapper.NewsCategoryMapper;
import sqgxy.xxydz.mapper.NewsMapper;
import sqgxy.xxydz.module.HeaderImgUpload;
import sqgxy.xxydz.service.NewsCategoryService;
import sqgxy.xxydz.service.NewsService;
import org.modelmapper.ModelMapper;
import org.modelmapper.TypeToken;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.io.IOException;
import java.util.List;
/**
* @author xmp
* @date 2022-11-19 13:32
*/
@Service
public class NewsServiceImpl extends ServiceImpl<NewsMapper, News> implements NewsService {
@Autowired
ModelMapper modelMapper;
@Autowired
NewsCategoryMapper newsCategoryMapper;
@Override
public boolean saveNews(NewsAddDTO dto) throws IOException {
if (nonentityNewsCategory(dto.getNewsCategoryId())) {
throw new HintException("此新闻类别不存在");
}
Integer newCategoryId = dto.getNewsCategoryId();
NewsCategory newsCategory = newsCategoryMapper.selectOne(new QueryWrapper<NewsCategory>().select(NewsCategoryService.DISPLAY_CONTENT).eq(NewsCategoryService.ID, newCategoryId));
// 小标题为新闻类型时,该标题下只能存储一篇新闻
if (newsCategory.getDisplayContent() == DisplayContent.NEWS) {
// 检查该标题下是否存在新闻
int count = count(new QueryWrapper<News>().eq(NEWS_CATEGORY_ID, newCategoryId));
if (count >= 10) {//todo
throw new HintException("该类别下只能存在一篇新闻");
}
}
// 判断图片是否为空
if (dto.getPictureFile() != null) {
String s = HeaderImgUpload.headPortraitUpload(dto.getPictureFile());
dto.setPicturePath(s);
}
return save(modelMapper.map(dto, News.class));
}
@Override
public boolean removeNews(Integer id) {
return removeById(id);
}
@Override
public boolean updateNews(NewsUpdateDTO dto) throws IOException {
// 查看新闻是否存在
int count1 = count(new QueryWrapper<News>().eq(ID, dto.getId()));
if (count1 < 1) {
throw new HintException("id为" + dto.getId() + "的新闻不存在");
}
if (dto.getNewsCategoryId() != null && nonentityNewsCategory(dto.getNewsCategoryId())) {
throw new HintException("此新闻类别不存在");
}
// dto.getNewsCategoryId() 不为null 说明新闻类别可能会更改,需要判断更改后的类别是否是只能存储一篇新闻的展示新闻类型
if (dto.getNewsCategoryId() != null) {
Integer newCategoryId = dto.getNewsCategoryId();
NewsCategory newsCategory = newsCategoryMapper.selectOne(new QueryWrapper<NewsCategory>().select(NewsCategoryService.DISPLAY_CONTENT).eq(NewsCategoryService.ID, newCategoryId));
if (newsCategory.getDisplayContent() == DisplayContent.NEWS) {
// 检查该标题下是否存在新闻
int count = count(new QueryWrapper<News>().eq(NEWS_CATEGORY_ID, newCategoryId));
if (count >= 1) {
throw new HintException("该类别下只能存在一篇新闻");
}
}
}
// 需要修改图片
if (dto.getPictureFile() != null) {
String s = HeaderImgUpload.headPortraitUpload(dto.getPictureFile());
dto.setPicturePath(s);
}
return updateById(modelMapper.map(dto, News.class));
}
@Override
public NewsPaging getNewsListByNewsCategoryId(Integer newsCategoryId, Integer current, Integer size) {
Page<News> page = page(new Page<>(current, size), new QueryWrapper<News>().select(ID, TITLE, RELEASE_TIME, PICTURE_PATH).eq(NEWS_CATEGORY_ID, newsCategoryId).orderByDesc(RELEASE_TIME));
NewsPaging newsPaging = modelMapper.map(page, NewsPaging.class);
List<News> records = page.getRecords();
newsPaging.setRecords(modelMapper.map(records, new TypeToken<List<NewsQueryListDTO>>(){}.getType()));
return newsPaging;
}
@Override
public NewsQueryDTO getNewsById(Integer id) {
// 新闻点击率加一
News one = getOne(new QueryWrapper<News>().select(HITS).eq(ID, id));
if (one == null) {
return null;
}
update(new UpdateWrapper<News>().set(HITS, one.getHits() + 1).eq(ID, id));
return modelMapper.map(getById(id), NewsQueryDTO.class);
}
@Override
public NewsPaging fuzzyQueryListByTitle(String title, Integer current, Integer size) {
Page<News> page = page(new Page<>(current, size), new QueryWrapper<News>().select(ID, TITLE, RELEASE_TIME, PICTURE_PATH).like(TITLE, title).orderByDesc(RELEASE_TIME));
NewsPaging newsPaging = modelMapper.map(page, NewsPaging.class);
List<News> records = page.getRecords();
newsPaging.setRecords(modelMapper.map(records, new TypeToken<List<NewsQueryListDTO>>(){}.getType()));
return newsPaging;
}
/**
* 不存在 NewsCategory
*/
private boolean nonentityNewsCategory(Integer newsCategoryId) {
Integer count = newsCategoryMapper.selectCount(new QueryWrapper<NewsCategory>().eq(NewsCategoryService.ID, newsCategoryId));
return count < 1;
}
}
没有合适的资源?快使用搜索试试~ 我知道了~
基于SpringBoot+Vue的新闻网项目源码.zip
共298个文件
java:81个
xml:81个
png:51个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 137 浏览量
2022-12-01
11:54:24
上传
评论 1
收藏 13.13MB ZIP 举报
温馨提示
基于SpringBoot+Vue的新闻网项目源码.zip
资源推荐
资源详情
资源评论
收起资源包目录
基于SpringBoot+Vue的新闻网项目源码.zip (298个子文件)
.browserslistrc 33B
demo.css 6KB
iconfont.css 4KB
my_style.css 1KB
global.css 86B
.editorconfig 121B
iconfont.eot 4KB
404.gif 186KB
notfound.gif 162KB
.gitignore 395B
.gitignore 214B
.gitignore 176B
demo_symbol.html 6KB
demo_unicode.html 6KB
demo_fontclass.html 4KB
index.html 1KB
favicon.ico 17KB
Gitee.iml 336B
NewsServiceImpl.java 6KB
AdminInformationServiceImpl.java 3KB
NewsCategoryServiceImpl.java 3KB
EchartsController.java 3KB
NewsController.java 3KB
AdminInformationController.java 3KB
XdStarController.java 3KB
MyRealm.java 3KB
AdminAspect.java 2KB
NewsCategoryController.java 2KB
InformationController.java 2KB
HeaderImgUpload.java 2KB
XdStarServiceImpl.java 2KB
NewsTypeServiceImpl.java 2KB
ShiroConfig.java 2KB
NewsTypeController.java 2KB
SwaggerConfig.java 2KB
Result.java 1KB
LoginController.java 1KB
NewsService.java 1KB
AdminInformationService.java 1KB
CorsConfig.java 1KB
ZeusExceptionHandler.java 1KB
NewsCategoryService.java 1KB
MybatisPlusConfig.java 1KB
News.java 1003B
MyConfig.java 917B
NewsCategory.java 908B
XdStar.java 901B
Information.java 889B
AdminInformation.java 853B
OperationController.java 851B
NewsTypeService.java 787B
ModelMapperConfig.java 747B
NewsType.java 731B
NewsPaging.java 715B
SqgxyXxydzNewsApplication.java 617B
NewsUpdateDTO.java 584B
NewsUpdateVO.java 564B
DisplayContent.java 550B
NewsTypeDTO.java 542B
NewsAddDTO.java 532B
AdminRole.java 527B
AdminInformationDTO.java 511B
NewsAddVO.java 508B
HashUtils.java 468B
InformationServiceImpl.java 463B
ResultCode.java 461B
AdminInformationVO.java 457B
AdminInformationUpdateVO.java 445B
PagingFuzzyQueryListByTitleVO.java 436B
NewsCategoryUpdateVO.java 428B
NewsQueryDTO.java 426B
NewsQueryListDTO.java 425B
PagingQueryListByNewsCategoryIdVO.java 420B
NewsCategoryQueryAllDTO.java 419B
NewsCategoryDTO.java 410B
XdStarService.java 400B
NewsCategoryAddVO.java 400B
SuperAdmin.java 394B
NewsCategoryListVO.java 393B
Principal.java 392B
NewsCategorySaveDTO.java 389B
AdminInformationAddVO.java 375B
AdminInformationSaveDTO.java 372B
AdminInformationUpdateDTO.java 369B
SqgxyXxydzNewsApplicationTests.java 368B
XdstarPageDto.java 353B
InformationMapper.java 332B
AdminInformationMapper.java 322B
NewsCategoryMapper.java 310B
ShiroUtils.java 308B
Permission.java 306B
GeneralAdmin.java 303B
NewsTypeMapper.java 298B
NewsTypeVO.java 296B
NewsMapper.java 286B
XdStarMapper.java 285B
HintException.java 263B
InformationService.java 249B
PermissionException.java 217B
admin-logo.jpg 178KB
共 298 条
- 1
- 2
- 3
资源评论
Java程序员-张凯
- 粉丝: 1w+
- 资源: 6649
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- tensorflow-gpu-2.7.3-cp39-cp39-manylinux2010-x86-64.whl
- tensorflow-2.8.0-cp37-cp37m-manylinux2010-x86-64.whl
- tensorflow-2.7.4-cp39-cp39-manylinux2010-x86-64.whl
- 个人资料-1111相关内容
- # C 语言介绍与使用技巧 ## C 语言简介:
- 3、高质量汽车租赁系统+layui)
- 介绍 Python 的一些基本信息,并分享一些使用技巧
- Qt的tcp网络编程(客户端和服务器)
- 当谈到 Linux 常用命令时,有很多命令可以提及 以下是一些常见的 Linux 命令及其功能:
- Sora AI Video Preview Case Sora AI 视频模版项目,React全栈快速部署.zip
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功