——————————DescriptionStart——————————
运行环境
Java≥8、MySQL≥5.7、Node.js≥14
开发工具
后端:eclipse/idea/myeclipse/sts等均可配置运行
前端:WebStorm/VSCode/HBuilderX等均可
❗没学过node.js的不要搞前后端分离项目
适用
课程设计,大作业,毕业设计,项目练习,学习演示等
功能说明







基于javaweb的SpringBoot小说阅读系统(java+springboot+vue+maven+mysql)
1 2 3 4 5
| 管理员功能:用户管理、小说管理、小说审核、公告等
用户功能:阅读小说、收藏小说、上传小说等
|
环境配置:
Jdk1.8 + Mysql + HBuilderX(Webstorm也行)+ Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。
项目技术:
Spring + SpringBoot+ mybatis + Maven + Vue 等等组成,B/S模式 + Maven管理等等。
——————————CodeStart——————————
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52
| EpubInfoPojo epubInfoPojo = novelChapterService.analysisEpubFile(sysUser, novelFile, file, novel); Novel saveNovel = epubInfoPojo.getNovel(); if(StringUtils.isEmpty(saveNovel.getNovelTitle())){ saveNovel.setNovelTitle(StringUtils.getFileName(file.getFileName())); } return saveNovel; }
private Novel setNovelParam(SysUser sysUser, ReadFile file, NovelUploadDto novelUploadDto) { Novel novel = this.getBaseParam(sysUser,file.getId()); novel.setNovelAuthor(novelUploadDto.getNovelAuthor()); novel.setNovelIntroduce(novelUploadDto.getNovelIntroduce()); novel.setNovelPublicDate(novelUploadDto.getNovelPublicDate()); novel.setNovelTitle(novelUploadDto.getNovelTitle()); novel.setUploadUserId(sysUser.getId()); novel.setNovelType(StringUtils.listToCommaStr(novelUploadDto.getNovelTypes())); if(novelUploadDto.getImgFile()!=null){ novel.setNovelImg(fileService.saveNovelImgToDisk(novelUploadDto.getImgFile(), sysUser, novel)); } return novel; }
@Override public Page<Novel> getNovelList(SysUser sysUser, NovelDto novelDto) { boolean isAdmin=false; if(TypeEnums.PERSON_PAGE_TYPE.getCode().equals(novelDto.getPageType()) &&StringUtils.isNotEmpty(sysUser.getId())){ novelDto.setUploadUserId(sysUser.getId()); }else if(TypeEnums.ADMIN_PAGE_TYPE.getCode().equals(novelDto.getPageType()) &&TypeEnums.ADMIN_ROLE.getCode().equals(sysUser.getRoleType())){ isAdmin=true; } if(StringUtils.isNotEmpty(novelDto.getNovelType())){ List<String> list=novelDto.getNovelTypes(); if(CollectionUtils.isEmpty(list)){ list=Lists.newArrayList(); } list.add(novelDto.getNovelType());
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45
| if(TypeEnums.ADMIN_ROLE.getCode().equals(sysUser.getRoleType())){ novel.setNovelUploadType(TypeEnums.PUBLIC_NOVEL.getCode()); novel.setNovelStatus(TypeEnums.SUCCESS_AUDIT.getCode()); }else{ novel.setNovelUploadType(TypeEnums.PRIVATE_NOVEL.getCode()); if(novelUploadDto.getIsPublic()!=null&&novelUploadDto.getIsPublic()){ novel.setNovelStatus(TypeEnums.WAIT_AUDIT.getCode()); }else{ novel.setNovelStatus(TypeEnums.NOT_AUDIT.getCode()); } } this.save(novel); uploadNovels.add(novel); }
dynamicService.addUploadDynamic(sysUser,uploadNovels);
}
@Override public Novel saveTxtNovel(SysUser sysUser, NovelUploadDto novelUploadDto, ReadFile file, MultipartFile novelFile) { Novel novel = this.setNovelParam(sysUser,file,novelUploadDto); FileInfoPojo fileInfoPojo = novelChapterService.analysisTxtFile(sysUser, novelFile, file, novel); novel.setNovelTotal(fileInfoPojo.getTotal()); novel.setNovelWordNum(fileInfoPojo.getWordNum()); if(StringUtils.isEmpty(novel.getNovelTitle())){ novel.setNovelTitle(StringUtils.getFileName(file.getFileName())); } return novel; }
@Override public Novel saveEpubNovel(SysUser sysUser, NovelUploadDto novelUploadDto, ReadFile file, MultipartFile novelFile) { Novel novel = this.setNovelParam(sysUser,file,novelUploadDto); EpubInfoPojo epubInfoPojo = novelChapterService.analysisEpubFile(sysUser, novelFile, file, novel); Novel saveNovel = epubInfoPojo.getNovel(); if(StringUtils.isEmpty(saveNovel.getNovelTitle())){ saveNovel.setNovelTitle(StringUtils.getFileName(file.getFileName()));
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45
| @Autowired SysUserCacheService sysUserCacheService;
@GetMapping("/list") @SysLogs("获取收藏列表") public ResponseResult list(HttpServletRequest request, CollectionDto collectionDto){ SysUser sysUser = ShiroUtils.getSysUser(request); return ResponseResult.success(userCollectionService.queryPersonCollect(sysUser,collectionDto)); }
@GetMapping("/treeList") @SysLogs("获得带文件的列表") public ResponseResult treeList(HttpServletRequest request, NovelTreePojo novelTreePojo){ SysUser sysUser=ShiroUtils.getSysUser(request); if(TypeEnums.ADMIN_ROLE.getCode().equals(sysUser.getRoleType())&&StringUtils.isNotEmpty(novelTreePojo.getUserId())){ sysUser = sysUserCacheService.getSysUser(novelTreePojo.getUserId()); } return ResponseResult.success(userCollectionService.queryPersonTreeCollect(sysUser,novelTreePojo)); }
@PutMapping("/collection") @SysLogs("收藏小说") public ResponseResult addCollection(HttpServletRequest request,@RequestBody CollectionDto collectionDto){ if(StringUtils.isEmpty(collectionDto.getNovelId())){ throw RequestException.fail(CodeMsgEnums.ID_IS_EMPTY.getMsg()); } SysUser sysUser = ShiroUtils.getSysUser(request); return ResponseResult.success(userCollectionService.addCollection(sysUser,collectionDto.getNovelId())); }
@DeleteMapping("/collection") @SysLogs("取消收藏小说") public ResponseResult cancelCollection(HttpServletRequest request,CollectionDto collectionDto){ SysUser sysUser = ShiroUtils.getSysUser(request); if(StringUtils.isNotEmpty(collectionDto.getNovelId())){ userCollectionService.cancelCollection(sysUser,collectionDto.getNovelId()); }else if(StringUtils.isNotEmpty(collectionDto.getId())){ userCollectionService.removeById(collectionDto.getId()); }else if(!CollectionUtils.isEmpty(collectionDto.getIds())){ userCollectionService.removeByIds(collectionDto.getIds()); }else{ return ResponseResult.error(CodeMsgEnums.ID_IS_EMPTY.getMsg()); } return ResponseResult.success(); }
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49
| log.error(e.getMessage(), e); } try ( InputStream inputStream=new FileInputStream(file); OutputStream out=response.getOutputStream(); ){ int b = 0; byte[] buffer = new byte[1024]; while ((b = inputStream.read(buffer)) != -1) { out.write(buffer, 0, b); } out.flush(); }catch (Exception e){ log.error(e.getMessage()); } }
private Novel saveEpubNovelUpdate(SysUser sysUser, Novel novel, ReadFile file, MultipartFile novelFile) { EpubInfoPojo epubInfoPojo = novelChapterService.analysisEpubFile(sysUser, novelFile, file, novel); Novel saveNovel = epubInfoPojo.getNovel(); if(StringUtils.isEmpty(saveNovel.getNovelTitle())){ saveNovel.setNovelTitle(StringUtils.getFileName(file.getFileName())); } return saveNovel; }
private Novel saveTxtNovelUpdate(SysUser sysUser, Novel novel, ReadFile file, MultipartFile novelFile) { FileInfoPojo fileInfoPojo = novelChapterService.analysisTxtFile(sysUser, novelFile, file, novel); if(StringUtils.isEmpty(novel.getNovelTitle())){
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48
| for (String key : list) { SysDict sysDict = sysDictMap.get(key); typeList.add(sysDict); } List<String> values = list.stream().map(x -> sysDictMap.get(x).getDictValue()).collect(Collectors.toList()); record.setNovelType(StringUtils.listToCommaStr(values)); record.setNovelTypeDict(sysDicts); record.setNovelTypes(typeList); } }
return page.setRecords(novelList); }
@Override public Novel getNovelInfo(SysUser sysUser, String id, Boolean isClick) { Novel novel = this.getById(id);
this.checkNovelStatus(novel,sysUser);
String novelType = novel.getNovelType(); if(StringUtils.isNotEmpty(novelType)){ List<SysDict> sysDicts = sysDictMapper.selectList(new QueryWrapper<SysDict>() .eq(SqlConstant.DICT_CLASS, DictEnums.NOVEL_TYPE.getKey()) .in(SqlConstant.DICT_KEY, StringUtils.commaStrToList(novelType))); List<String> collect = sysDicts.stream().map(SysDict::getDictValue).collect(Collectors.toList()); novel.setNovelType(StringUtils.listToCommaStr(collect)); novel.setNovelTypeDict(sysDicts); } if(isClick){ this.updateNovelHot(novel.getId()); }
List<NovelChapter> novelChapter = this.novelChapterService.getNovelChapter(sysUser, id); novel.setChapterList(novelChapter); return novel; }
@Override public void deleteNovel(List<String> ids) { this.removeByIds(ids); novelChapterService.remove(new QueryWrapper<NovelChapter>().in(SqlConstant.NOVEL_ID,ids)); }
|
——————————PayStart——————————
项目链接:
https://javayms.github.io?id=351023491103200yl
https://javayms.pages.dev?id=351023491103200yl