[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();
    }
}
相关推荐
码不停蹄的玄黓1 小时前
MySQL分布式ID冲突详解:场景、原因与解决方案
数据库·分布式·mysql·id冲突
帧栈2 小时前
mysql基础(一)快速上手篇
mysql
海天胜景5 小时前
vue3 el-table 行筛选 设置为单选
javascript·vue.js·elementui
百锦再5 小时前
Vue中对象赋值问题:对象引用被保留,仅部分属性被覆盖
前端·javascript·vue.js·vue·web·reactive·ref
戒不掉的伤怀5 小时前
【Navicat 连接MySQL时出现错误1251:客户端不支持服务器请求的身份验证协议;请考虑升级MySQL客户端】
服务器·数据库·mysql
wuxinyan1236 小时前
Java面试题033:一文深入了解MySQL(5)
java·数据库·mysql·面试
笑衬人心。6 小时前
Ubuntu 22.04 + MySQL 8 无密码登录问题与 root 密码重置指南
linux·mysql·ubuntu
坤坤不爱吃鱼7 小时前
【MySQL\Oracle\PostgreSQL】迁移到openGauss数据出现的问题解决方案
mysql·postgresql·oracle
欧阳有财7 小时前
[java八股文][Mysql面试篇]日志
java·mysql·面试
叁沐7 小时前
MySQL 03 事务隔离:为什么你改了我还看不见?
mysql