开发工具:IDEA
服务器:Tomcat9.0, jdk1.8
项目构建:maven
数据库:mysql5.7
系统分前后台,项目采用前后端分离
前端技术:vue+elementUI
服务端技术:springboot+mybatis-plus
本项目分为管理员与普通用户两种角色
一、用户功能:
1.登录、注册、退出登录
2.首页、搜索、阅读小说,添加书签、添加收藏、取消收藏
3.我的书架:新建文件夹、下载全部、我要上传、搜素小说
4.我的上传:查看、编辑、删除、下载、发布小说
5.我的书签:查询、编辑、删除
6.阅读历史:查询、删除
7.个人信息:修改个人信息
8.个人动态:显示所有个人发布的动态信息
9.安全管理:修改邮箱和修改密码
二、管理员功能:
1.用户管理:查询、删除、详情、禁用
2.动态管理:查询、删除
3.小说管理:上传小说、查看详情、下载小说、编辑、删除
4.小说审核:通过、驳回、禁用
5.书签管理:查询、按进度查看,编辑、删除
6.收藏管理:查询、删除
7.管理员设置:修改密码,添加管理员
8.公告管理:发布公告、编辑、查询、删除
用户截图:
管理员截图:
package com.wpy.controller;
import com.wpy.annotation.SysLogs;
import com.wpy.dto.SysNoticeDto;
import com.wpy.entity.SysNotice;
import com.wpy.entity.SysUser;
import com.wpy.enums.CodeMsgEnums;
import com.wpy.exception.RequestException;
import com.wpy.service.SysNoticeService;
import com.wpy.utils.RequestUtils;
import com.wpy.utils.ResponseResult;
import com.wpy.utils.ShiroUtils;
import com.wpy.utils.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletRequest;
import java.util.List;
/**
* <p>
* 前端控制器
* </p>
*/
@RestController
@RequestMapping("/sysNotice")
public class SysNoticeController {
@Autowired
private SysNoticeService sysNoticeService;
@PostMapping("/notice")
@SysLogs("新增或修改公告")
public ResponseResult addOrEditNotice(HttpServletRequest request, @RequestBody SysNotice sysNotice){
SysUser sysUser = ShiroUtils.getSysUser(request);
if(StringUtils.isEmpty(sysNotice.getId())){
//为空是新增
sysNoticeService.addNotice(sysUser,sysNotice);
}else {
//不为空是修改
sysNoticeService.editNotice(sysUser,sysNotice);
}
return ResponseResult.success();
}
@GetMapping("/list")
@SysLogs("公告列表")
public ResponseResult getList(HttpServletRequest request,SysNoticeDto sysNoticeDto){
SysUser sysUser = RequestUtils.getSysUser(request);
return ResponseResult.success(this.sysNoticeService.getList(sysNoticeDto));
}
@DeleteMapping("/notice")
@SysLogs("删除公告")
public ResponseResult deleteNotice(@RequestParam("ids") List<String> ids){
this.sysNoticeService.deleteNotice(ids);
return ResponseResult.success();
}
@PostMapping("/openOrClose")
@SysLogs("打开公告")
public ResponseResult openOrClose(@RequestBody SysNoticeDto sysNoticeDto){
if(StringUtils.isEmpty(sysNoticeDto.getId())){
throw RequestException.fail(CodeMsgEnums.ID_IS_EMPTY.getMsg());
}
if(StringUtils.isBlank(sysNoticeDto.getIsOpen())){
throw RequestException.fail("状态不能为空");
}
if(sysNoticeDto.getIsOpen()){
sysNoticeService.openNotice(sysNoticeDto.getId());
}else{
sysNoticeService.closeNotice(sysNoticeDto.getId());
}
return ResponseResult.success();
}
}