[N-133]基于springboot,vue小说网站

开发工具: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.公告管理:发布公告、编辑、查询、删除

用户截图:

管理员截图:

java 复制代码
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();
    }
}
相关推荐
半夏陌离15 分钟前
SQL 拓展指南:不同数据库差异对比(MySQL/Oracle/SQL Server 基础区别)
大数据·数据库·sql·mysql·oracle·数据库架构
叫我阿柒啊16 分钟前
从Java全栈到前端框架:一次真实面试的深度复盘
java·spring boot·typescript·vue·database·testing·microservices
敬业小码哥1 小时前
记一次:mysql的json及json数组使用组合使用
数据库·mysql·json
练小杰2 小时前
【Mysql-installer-community-8.0.26.0】Mysql 社区版(8.0.26.0) 在Window 系统的默认安装配置
数据库·sql·mysql·adb·配置文件·mysql安装·关系型数据库
借你耳朵说爱你2 小时前
浅拷贝和深拷贝两种不同的对象复制
vue·web
感哥4 小时前
MySQL多表查询
mysql
F2E_Zhangmo5 小时前
基于cornerstone3D的dicom影像浏览器 第四章 鼠标实现翻页、放大、移动、窗宽窗位调节
vue·cornerstone·cornerstone3d·cornerstonejs
十八旬5 小时前
苍穹外卖项目实战(day-5完整版)-记录实战教程及问题的解决方法
java·开发语言·spring boot·redis·mysql
青鱼入云6 小时前
java面试中经常会问到的mysql问题有哪些(基础版)
java·mysql·面试
送秋三十五6 小时前
MySQL DBA需要掌握的 7 个问题
数据库·mysql·dba