基于javaweb和mysql的springboot在线小说阅读系统(前后端分离+java+vue+springboot+ssm+mysql+maven)
·
基于javaweb和mysql的springboot在线小说阅读系统(前后端分离+java+vue+springboot+ssm+mysql+maven)
私信源码获取及调试交流
私信源码获取及调试交流
运行环境
Java≥8、MySQL≥5.7、Node.js≥14
开发工具
后端:eclipse/idea/myeclipse/sts等均可配置运行
前端:WebStorm/VSCode/HBuilderX等均可
适用
课程设计,大作业,毕业设计,项目练习,学习演示等
功能说明
基于javaweb的SpringBoot在线小说阅读系统(前后端分离+java+vue+springboot+ssm+mysql+maven)
一、项目简述
本系统功能包括: 普通用户端登录注册,小说的分类,日榜,月榜,年榜, 小说的阅读,分章节,小说的评论,收藏,推荐等等,以 及后台小说的维护,上架,编辑等等。
二、项目运行
环境配置: Jdk1.8 + Mysql + HBuilderX (Webstorm也 行)+ Eclispe (IntelliJ IDEA,Eclispe,MyEclispe,Sts都支 持)。
项目技术: Springboot + Maven + Mybatis + Vue , B/S 模式+ Maven等等
@RestController
@RequestMapping("/api/chapter")
@Api(tags = "共同前缀:/api/chapter", description = "ChapterController")
@Slf4j
public class ChapterController {
@Autowired
ChapterService chapterService;
@PostMapping
@ApiOperation("新增Chapter")
@PreAuthorize("isAuthenticated()")
public ResponseObject post(@RequestBody HashMap<String, String> data) {
log.info("新增Chapter");
if (data.get("title") == null || data.get("title").equals("")) {
throw new ControllerException("volume_id不可为null");
} else if (data.get("volume_id") == null || data.get("volume_id").equals("")) {
throw new ControllerException("title不可为null,也不可为空字符串");
} else if (data.get("chapterContent") == null || data.get("chapterContent").equals("")) {
throw new ControllerException("chapterContent不可为null,也不可为空字符串");
} else {
try {
// 文件夹
File directory = new File(ResourceUtils.getURL("src").getPath() + "main/resources/static/txt/");
if (!directory.exists()) {
directory.mkdirs();
}
// 文件
String content = new Date().getTime() + ".txt";
if (id != null) {
return new ResponseObject("200", "操作成功", novelService.selectById(id));
} else {
throw new ControllerException("id不可为null");
}
}
@PatchMapping("/{id:[0-9]+}")
@ApiOperation("修改Novel")
@PreAuthorize("isAuthenticated()")
public ResponseObject patchById(@PathVariable Integer id, @RequestBody Novel novel) {
log.info("修改Novel");
if (id == null) {
throw new ControllerException("id不可为null");
} else {
Novel novel2 = novelService.selectById(id);
if (novel2 == null) {
throw new ControllerException("不存在为该id的novel");
} else {
User user = userService.selectByUsername(
(String) SecurityContextHolder.getContext().getAuthentication().getPrincipal());
if (user.getId() == novel2.getUser_id() || user.getRole().equals("ADMIN")) {
if (novel.getName() != null && !novel.getName().equals("")) {
novel2.setName(novel.getName());
} else if (novel.getSummary() != null && !novel.getSummary().equals("")) {
novel2.setSummary(novel.getSummary());
} else if (novel.getCategory_id() != null) {
novel2.setCategory_id(novel.getCategory_id());
} else if (novel.getMultiplier() != null) {
novel2.setMultiplier(novel.getMultiplier());
} else if (novel.getAddend() != null) {
novel2.setAddend(novel.getAddend());
} else {
throw new ControllerException("请传入需要修改的数据,如name,summary,category_id,multiplier,addend");
}
return new ResponseObject("200", "操作成功", novelService.update(novel2));
} else {
throw new ControllerException("该用户无权限修改该小说");
}
}
}
}
@ApiOperation("查询上一章的Chapter")
public ResponseObject getLast(@PathVariable Integer id) {
log.info("查询上一章的Chapter");
if (id == null) {
throw new ControllerException("id不可为null");
} else {
Chapter chapter = chapterService.selectById(id);
if (chapter == null) {
throw new ControllerException("该id无法查找到chapter");
} else {
return new ResponseObject("200", "操作成功",
chapterService.selectLastByVolume_idId(chapter.getVolume_id(), chapter.getId()));
}
}
}
@GetMapping("/{id:[0-9]+}/next")
@ApiOperation("查询下一章的Chapter")
public ResponseObject getNext(@PathVariable Integer id) {
log.info("查询下一章的Chapter");
if (id == null) {
throw new ControllerException("id不可为null");
} else {
Chapter chapter = chapterService.selectById(id);
if (chapter == null) {
throw new ControllerException("该id无法查找到chapter");
} else {
return new ResponseObject("200", "操作成功",
chapterService.selectNextByVolume_idId(chapter.getVolume_id(), chapter.getId()));
}
}
}
@GetMapping("/{id:[0-9]+}")
@ApiOperation("查询Chapter")
public ResponseObject getById(@PathVariable Integer id) {
log.info("查询Chapter");
if (id == null) {
throw new ControllerException("id不可为null");
} else {
return new ResponseObject("200", "操作成功", chapterService.selectById(id));
}
}
@GetMapping("/content")
@ApiOperation("查询Chapter的content")
}
}
@GetMapping
@ApiOperation("查询Chapter")
public ResponseObject get(Integer volume_id) {
log.info("查询Chapter");
if (volume_id == null) {
throw new ControllerException("volume_id不可为null");
} else {
return new ResponseObject("200", "操作成功", chapterService.selectByVolume_id(volume_id));
}
}
@GetMapping("/{id:[0-9]+}/last")
@ApiOperation("查询上一章的Chapter")
public ResponseObject getLast(@PathVariable Integer id) {
log.info("查询上一章的Chapter");
if (id == null) {
throw new ControllerException("id不可为null");
} else {
Chapter chapter = chapterService.selectById(id);
if (chapter == null) {
throw new ControllerException("该id无法查找到chapter");
} else {
return new ResponseObject("200", "操作成功",
chapterService.selectLastByVolume_idId(chapter.getVolume_id(), chapter.getId()));
}
}
}
@GetMapping("/{id:[0-9]+}/next")
@ApiOperation("查询下一章的Chapter")
public ResponseObject getNext(@PathVariable Integer id) {
log.info("查询下一章的Chapter");
if (id == null) {
throw new ControllerException("id不可为null");
} else {
Chapter chapter = chapterService.selectById(id);
if (chapter == null) {
throw new ControllerException("该id无法查找到chapter");
} else {
//未认证异常处理器
@Component
@Slf4j
public class MyAuthenticationEntryPoint implements AuthenticationEntryPoint {
@Autowired
ObjectMapper objectMapper;
@Override
public void commence(HttpServletRequest request, HttpServletResponse response,
AuthenticationException authException) throws IOException, ServletException {
log.info("未认证,返回JSON格式的异常信息");
response.setStatus(401);
response.setCharacterEncoding("utf-8");
response.setContentType("application/json; charset=utf-8");
PrintWriter writer = response.getWriter();
writer.write(objectMapper.writeValueAsString(new ResponseObject("401", "未认证", null)));
writer.flush();
writer.close();
}
}
UserService userService;
@PostMapping
@ApiOperation("新增User")
public ResponseObject post(String username, String password) {
log.info("新增User");
if (username == null || username.equals("")) {
throw new ControllerException("username不可为null,也不可为空字符串");
} else if (password == null || password.equals("")) {
throw new ControllerException("password不可为null,也不可为空字符串");
} else if (userService.selectByUsername(username) != null) {
throw new ControllerException("该username已被使用");
} else {
User user = new User();
user.setUsername(username);
user.setPassword(password);
user.setRole("VIP1");
user.setNickname(new Date().getTime() + "");
user.setImage("default_user_image.png");
user.setEmail("该用户没有填写邮箱");
user.setPhone("该用户没有填写手机号码");
user.setProfile("该用户没有填写个人简介");
return new ResponseObject("200", "操作成功", userService.insert(user));
}
}
@GetMapping("/{id:[0-9]+}")
@ApiOperation("查询User")
public ResponseObject getById(@PathVariable Integer id) {
log.info("查询User");
return new ResponseObject("200", "操作成功", userService.selectById(id));
}
@PutMapping
@ApiOperation("修改User")
@PreAuthorize("isAuthenticated()")
public ResponseObject put(User user) {
log.info("修改User");
if (user.getNickname() == null || user.getNickname().equals("")) {
throw new ControllerException("nickname不可为null,也不可为空字符串");
} else if (user.getProfile() == null || user.getProfile().equals("")) {
throw new ControllerException("profile不可为null,也不可为空字符串");
} else if (user.getPhone() == null || user.getPhone().equals("")) {
throw new ControllerException("phone不可为null,也不可为空字符串");
} else if (user.getEmail() == null || user.getEmail().equals("")) {
throw new ControllerException("email不可为null,也不可为空字符串");
} else {
User user2 = userService
.selectByUsername((String) SecurityContextHolder.getContext().getAuthentication().getPrincipal());
user2.setNickname(user.getNickname());
user2.setProfile(user.getProfile());
user2.setPhone(user.getPhone());
user2.setEmail(user.getEmail());
return new ResponseObject("200", "操作成功", userService.update(user2));
@RestController
@RequestMapping("/api/follow")
@Api(tags = "共同前缀:/api/follow", description = "FollowController")
@Slf4j
public class FollowController {
@Autowired
UserService userService;
@Autowired
FollowService followService;
@PostMapping
@ApiOperation("新增Follow")
@PreAuthorize("isAuthenticated()")
public ResponseObject post(@RequestBody Follow follow) {
log.info("新增Follow");
System.out.println(follow);
if (follow.getId() != null) {
throw new ControllerException("id必须为null");
} else if (follow.getFollower_id() != null) {
throw new ControllerException("follower_id必须为null");
} else if (follow.getFollowing_id() == null) {
throw new ControllerException("following_id不可为null");
} else {
follow.setFollower_id(userService
.selectByUsername((String) SecurityContextHolder.getContext().getAuthentication().getPrincipal())
.getId());
if (follow.getFollower_id() == follow.getFollowing_id()) {
throw new ControllerException("不可自己关注自己");
} else if (followService.selectByFollower_idFollowing_id(follow.getFollower_id(),
follow.getFollowing_id()) != null) {
throw new ControllerException("该用户已经关注过了,不可重复关注");
} else {
}
@RestController
@RequestMapping("/api/follow")
@Api(tags = "共同前缀:/api/follow", description = "FollowController")
@Slf4j
public class FollowController {
@Autowired
UserService userService;
@Autowired
FollowService followService;
@PostMapping
@ApiOperation("新增Follow")
@PreAuthorize("isAuthenticated()")
public ResponseObject post(@RequestBody Follow follow) {
log.info("新增Follow");
System.out.println(follow);
if (follow.getId() != null) {
throw new ControllerException("id必须为null");
} else if (follow.getFollower_id() != null) {
throw new ControllerException("follower_id必须为null");
} else if (follow.getFollowing_id() == null) {
throw new ControllerException("following_id不可为null");
} else {
follow.setFollower_id(userService
.selectByUsername((String) SecurityContextHolder.getContext().getAuthentication().getPrincipal())
.getId());
if (follow.getFollower_id() == follow.getFollowing_id()) {
throw new ControllerException("不可自己关注自己");
} else if (followService.selectByFollower_idFollowing_id(follow.getFollower_id(),
follow.getFollowing_id()) != null) {
throw new ControllerException("该用户已经关注过了,不可重复关注");
return new ResponseObject("200", "操作成功", collectionService.selectByUser_idNovel_id(user_id, novel_id));
} else if (novel_id != null && user_id == null) {
return new ResponseObject("200", "操作成功", collectionService.selectByNovel_id(novel_id));
} else if (novel_id == null && user_id != null) {
return new ResponseObject("200", "操作成功", collectionService.selectByUser_id(user_id));
} else {
throw new ControllerException("novel_id与user_id不可同时为null");
}
}
@GetMapping("/novel")
@ApiOperation("查询Collection的Novel")
public ResponseObject getNovel(Integer user_id) {
log.info("查询Collection的Novel");
if (user_id == null) {
throw new ControllerException("user_id不可为null");
} else {
return new ResponseObject("200", "操作成功", novelService.selectByUser_idOfCollection(user_id));
}
}
@DeleteMapping
@ApiOperation("删除Collection")
@PreAuthorize("isAuthenticated()")
public ResponseObject delete(Integer novel_id, Integer user_id) {
log.info("删除Collection");
if (novel_id == null) {
throw new ControllerException("novel_id不可为null");
} else if (user_id == null) {
throw new ControllerException("user_id不可为null");
} else {
Collection collection = collectionService.selectByUser_idNovel_id(user_id, novel_id);
if (collection == null) {
throw new ControllerException("该用户还未收藏该小说,无法取消收藏");
} else {
User user = userService.selectByUsername(
(String) SecurityContextHolder.getContext().getAuthentication().getPrincipal());
if (user.getId() == user_id || user.getRole().equals("ADMIN")) {
collectionService.deleteById(collection.getId());
return new ResponseObject("200", "操作成功", null);
} else {
throw new ControllerException("该用户无权限取消收藏");
}
}
}
}
@GetMapping("/count")
@ApiOperation("查询Collection")
public ResponseObject getCount(Integer novel_id) {
log.info("查询Collection");
if (novel_id == null) {
throw new ControllerException("novel_id不可为null");
} else {
@RestController
@RequestMapping("/api/comment")
@Api(tags = "共同前缀:/api/comment", description = "CommentController")
@Slf4j
public class CommentController {
@Autowired
CommentService commentService;
@Autowired
UserService userService;
@PostMapping
@ApiOperation("新增Comment")
@PreAuthorize("isAuthenticated()")
public ResponseObject post(@RequestBody Comment comment) {
log.info("新增Comment");
if (comment.getId() != null) {
throw new ControllerException("id必须为null");
} else if (comment.getNovel_id() == null) {
throw new ControllerException("novel_id不可为null");
} else if (comment.getContent() == null || comment.getContent().equals("")) {
throw new ControllerException("content不可为null,也不可为空字符串");
} else {
comment.setUser_id(userService
.selectByUsername((String) SecurityContextHolder.getContext().getAuthentication().getPrincipal())
.getId());
return new ResponseObject("200", "操作成功", commentService.insert(comment));
}
}
@GetMapping
@ApiOperation("查询Comment")
public ResponseObject get(Integer novel_id, Integer user_id) {
log.info("查询Comment");
if (novel_id != null && user_id != null) {
return new ResponseObject("200", "操作成功", commentService.selectByUser_idNovel_id(user_id, novel_id));
} else if (novel_id != null && user_id == null) {
return new ResponseObject("200", "操作成功", commentService.selectByNovel_id(novel_id));
} else if (novel_id == null && user_id != null) {
return new ResponseObject("200", "操作成功", commentService.selectByUser_id(user_id));
} else {
throw new ControllerException("novel_id和user_id不可同时为null");
}
@RestController
@RequestMapping("/api/category")
@Api(tags = "共同前缀:/api/category", description = "CategoryController")
@Slf4j
public class CategoryController {
@Autowired
CategoryService categoryService;
@PostMapping
@ApiOperation("新增Category")
@PreAuthorize("hasAnyAuthority('ROLE_ADMIN')")
public ResponseObject post(@RequestBody Category category) {
log.info("新增Category");
if (category.getId() != null) {
throw new ControllerException("id必须为null");
} else if (category.getRank() == null) {
throw new ControllerException("rank不可为null");
} else if (category.getName() == null || category.getName().equals("")) {
throw new ControllerException("name不可为null,也不可为空字符串");
} else if (category.getParent_id() == null) {
throw new ControllerException("parent_id不可为null");
} else if (categoryService.selectByParent_idName(category.getParent_id(), category.getName()) != null) {
throw new ControllerException("name不可重复");
} else {
return new ResponseObject("200", "操作成功", categoryService.insert(category));
}
}
@PutMapping("/{id:[0-9]+}")
@ApiOperation("修改Category")
@PreAuthorize("hasAnyAuthority('ROLE_ADMIN')")
public ResponseObject putById(@PathVariable Integer id, @RequestBody HashMap<String, String> data) {
log.info("修改Category");
Category category = categoryService.selectById(id);
if (category == null) {
throw new ControllerException("使用该id的Category不存在");
public ResponseObject getById(@PathVariable Integer id) {
log.info("查询Category");
if (id != null) {
return new ResponseObject("200", "操作成功", categoryService.selectById(id));
} else {
throw new ControllerException("id不可为null");
}
}
}
@RestController
@RequestMapping("/api/user")
@Api(tags = "共同前缀:/api/user", description = "UserController")
@Slf4j
public class UserController {
@Autowired
UserService userService;
@PostMapping
@ApiOperation("新增User")
public ResponseObject post(String username, String password) {
log.info("新增User");
if (username == null || username.equals("")) {
throw new ControllerException("username不可为null,也不可为空字符串");
} else if (password == null || password.equals("")) {
throw new ControllerException("password不可为null,也不可为空字符串");
} else if (userService.selectByUsername(username) != null) {
throw new ControllerException("该username已被使用");
} else {
throw new ControllerException("该用户已经关注过了,不可重复关注");
} else {
return new ResponseObject("200", "操作成功", followService.insert(follow));
}
}
}
@GetMapping
@ApiOperation("查询Follow")
public ResponseObject get(Integer follower_id, Integer following_id) {
log.info("查询Follow");
if (follower_id != null && following_id != null) {
return new ResponseObject("200", "操作成功",
followService.selectByFollower_idFollowing_id(follower_id, following_id));
} else if (follower_id != null && following_id == null) {
return new ResponseObject("200", "操作成功", userService.selectByFollower_id(follower_id));
} else if (follower_id == null && following_id != null) {
return new ResponseObject("200", "操作成功", userService.selectByFollowing_id(following_id));
} else {
throw new ControllerException("follower_id与following_id不可同时为null");
}
}
@DeleteMapping
@ApiOperation("删除Follow")
@PreAuthorize("isAuthenticated()")
public ResponseObject delete(Integer following_id) {
log.info("删除Follow");
if (following_id == null) {
throw new ControllerException("following_id不可为null");
} else {
Integer follower_id = userService
.selectByUsername((String) SecurityContextHolder.getContext().getAuthentication().getPrincipal())
.getId();
Follow follow = followService.selectByFollower_idFollowing_id(follower_id, following_id);
if (follow == null) {
throw new ControllerException("该用户未关注,无法取消关注");
} else {
followService.deleteById(follow.getId());
return new ResponseObject("200", "操作成功", null);
}
}
}
}
if (novel.getId() != null) {
throw new ControllerException("id必须为null");
} else if (novel.getUser_id() == null) {
throw new ControllerException("user_id不可为null");
} else if (novel.getCategory_id() == null) {
throw new ControllerException("category_id不可为null");
} else if (novel.getName() == null || novel.getName().equals("")) {
throw new ControllerException("name不可为null,也不可为空字符串");
} else if (novel.getSummary() == null || novel.getSummary().equals("")) {
throw new ControllerException("summary不可为null,也不可为空字符串");
} else if (novel.getImage() == null || novel.getImage().equals("")) {
throw new ControllerException("image不可为null,也不可为空字符串");
} else if (novel.getIs_complete() == null) {
throw new ControllerException("is_complete不可为null");
} else {
novel.setMultiplier(10000);
novel.setAddend(0);
return new ResponseObject("200", "操作成功", novelService.insert(novel));
}
}
@GetMapping
@ApiOperation("查询Novel")
public ResponseObject get(Integer category_id, Integer user_id, String searchName) {
log.info("查询Novel");
if (category_id != null) {
return new ResponseObject("200", "操作成功", novelService.selectByCategory_id(category_id));
} else if (user_id != null) {
return new ResponseObject("200", "操作成功", novelService.selectByUser_id(user_id));
} else if (searchName != null && !searchName.equals("")) {
return new ResponseObject("200", "操作成功", novelService.selectByLikeName(searchName));
} else {
throw new ControllerException("category_id或user_id或searchName不可为null");
}
}
@GetMapping("/{id:[0-9]+}")
@ApiOperation("查询Novel")
public ResponseObject getById(@PathVariable Integer id) {
log.info("查询Novel");
if (id != null) {
return new ResponseObject("200", "操作成功", novelService.selectById(id));
} else {
throw new ControllerException("id不可为null");
}
}
@PatchMapping("/{id:[0-9]+}")
@ApiOperation("修改Novel")
@PreAuthorize("isAuthenticated()")
public ResponseObject patchById(@PathVariable Integer id, @RequestBody Novel novel) {
log.info("修改Novel");
if (id == null) {
user2.setNickname(user.getNickname());
user2.setProfile(user.getProfile());
user2.setPhone(user.getPhone());
user2.setEmail(user.getEmail());
return new ResponseObject("200", "操作成功", userService.update(user2));
}
}
}
@RestController
@RequestMapping("/api/comment")
@Api(tags = "共同前缀:/api/comment", description = "CommentController")
@Slf4j
public class CommentController {
@Autowired
CommentService commentService;
@Autowired
UserService userService;
@PostMapping
@ApiOperation("新增Comment")
@PreAuthorize("isAuthenticated()")
file2.createNewFile();
}
// 保存文件
file.transferTo(file2);
return new ResponseObject("200", "操作成功", newFileName);
}
}
}
@PatchMapping("/image")
@ApiOperation("修改image")
@PreAuthorize("isAuthenticated()")
public ResponseObject patchImage(@RequestBody HashMap<String, String> data) {
log.info("修改image");
String image = data.get("image");
String novel_idString = data.get("novel_id");
if (image == null || image.equals("")) {
throw new ControllerException("image不可为null,也不可为空字符串");
} else if (novel_idString == null || novel_idString.equals("")) {
throw new ControllerException("novel_id不可为null");
} else {
Integer novel_id = Integer.parseInt(novel_idString);
Novel novel = novelService.selectById(novel_id);
if (novel == null) {
throw new ControllerException("根据novel_id查询出来的novel为null");
} else {
User user = userService.selectByUsername(
(String) SecurityContextHolder.getContext().getAuthentication().getPrincipal());
if (user.getId() == novel.getUser_id() || user.getRole().equals("ADMIN")) {
novel.setImage(image);
return new ResponseObject("200", "操作成功", novelService.update(novel));
} else {
throw new ControllerException("该用户无权限修改小说头像");
}
}
}
}
}
@RestController
@RequestMapping("/api/volume")
@Api(tags = "共同前缀:/api/volume", description = "VolumeController")
@Slf4j
public class VolumeController {
@Autowired
VolumeService volumeService;
@Autowired
NovelService novelService;
@Autowired
UserService userService;
@PostMapping
@ApiOperation("新增Volume")
@PreAuthorize("isAuthenticated()")
public ResponseObject post(@RequestBody Volume volume) {
log.info("新增Volume");
if (volume.getId() != null) {
throw new ControllerException("id必须为null");
} else if (volume.getNovel_id() == null) {
throw new ControllerException("novel_id不可为null");
} else if (volume.getName() == null || volume.getName().equals("")) {
throw new ControllerException("name不可为null,也不可为空字符串");




更多推荐
所有评论(0)