首页 > 编程语言 >基于SpringBoot+Vue的论坛管理系统设计与实现毕设(文档+源码)

基于SpringBoot+Vue的论坛管理系统设计与实现毕设(文档+源码)

时间:2024-11-19 19:16:52浏览次数:3  
标签:Vue return SpringBoot liuyan request 帖子 源码 role id

目录

一、项目介绍

二、开发环境

三、功能介绍

四、核心代码

五、效果图

六、源码获取: 


        大家好呀,我是一个混迹在java圈的码农。今天要和大家分享的是 一款基于SpringBoot+Vue的论坛管理系统,项目源码请点击文章末尾联系我哦~目前有各类成品 毕设 JavaWeb  SSM SpringBoot等等项目框架,源码丰富,欢迎咨询。 

一、项目介绍

如今的时代,是有史以来最好的时代,随着计算机的发展到现在的移动终端的发展,国内目前信息技术已经在世界上遥遥领先,让人们感觉到处于信息大爆炸的社会。信息时代的信息处理肯定不能用之前的手工处理这样的解决方法,必须采用计算机来处理这些信息,因为传统方法对应计算机处理的信息效率上真的相差甚远。

本次使用Java技术开发的论坛系统,就是运用计算机来管理论坛帖子信息,该系统是可以实现版主管理,新闻信息管理,论坛帖子管理,用户管理,留言版管理等功能。

论坛系统使用计算机处理相关信息,主要是在数据的传输上能达到即可传递,数据不管是想要获取或者输入,都可以及时反馈,极大的提高了效率,使用的MySQL数据库也能让数据更能安全的存储。

关键词:论坛系统;版主;帖子

二、开发环境

开发系统:Windows
JDK版本:Java JDK1.8(推荐)
开发工具:IDEA/MyEclipse(推荐IDEA)
数据库版本: mysql8.0(推荐)
数据库可视化工具: navicat
服务器:SpringBoot自带 apache tomcat
框架:springboot,vue

三、功能介绍

管理员主要实现版主管理、用户管理、留言板管理。管理员对版主、用户的基本资料进行修改,添加,查询,删除;管理员可以查看用户留言,通过用户姓名或留言标题查询留言,回复留言内容,删除留言等。

版主主要实现论坛管理、新闻信息查看、个人信息管理。版主可以新增论坛帖子,论坛帖子有发帖时间,帖子标题,身份,姓名,手机号,帖子类型等信息,发布帖子之后,版主可以对论坛帖子的回复随时进行查看;查询新闻,对新闻内容,包括新闻标题在内的新闻信息进行查看;主对个人信息,主要是联系方式,头像等进行更改。

用户只要实现留言板、在线论坛和新闻信息。允许用户与管理员交流,主要是需要用户先发布留言,管理员针对留言内容进行回复;用户根据帖子类型筛选帖子,用户对本界面显示的所有帖子都能查看和评论,用户也能在本界面发布帖子;允许用户查询新闻,对新闻具体内容进行查看。

四、核心代码


/**
 * 留言版
 * 后端接口
 * @author
 * @email
*/
@RestController
@Controller
@RequestMapping("/liuyan")
public class LiuyanController {
    private static final Logger logger = LoggerFactory.getLogger(LiuyanController.class);

    @Autowired
    private LiuyanService liuyanService;


    @Autowired
    private TokenService tokenService;
    @Autowired
    private DictionaryService dictionaryService;

    //级联表service
    @Autowired
    private YonghuService yonghuService;

    @Autowired
    private BanzhuService banzhuService;


    /**
    * 后端列表
    */
    @RequestMapping("/page")
    public R page(@RequestParam Map<String, Object> params, HttpServletRequest request){
        logger.debug("page方法:,,Controller:{},,params:{}",this.getClass().getName(),JSONObject.toJSONString(params));
        String role = String.valueOf(request.getSession().getAttribute("role"));
        if(false)
            return R.error(511,"永不会进入");
        else if("用户".equals(role))
            params.put("yonghuId",request.getSession().getAttribute("userId"));
        else if("版主".equals(role))
            params.put("banzhuId",request.getSession().getAttribute("userId"));
        if(params.get("orderBy")==null || params.get("orderBy")==""){
            params.put("orderBy","id");
        }
        PageUtils page = liuyanService.queryPage(params);

        //字典表数据转换
        List<LiuyanView> list =(List<LiuyanView>)page.getList();
        for(LiuyanView c:list){
            //修改对应字典表字段
            dictionaryService.dictionaryConvert(c, request);
        }
        return R.ok().put("data", page);
    }

    /**
    * 后端详情
    */
    @RequestMapping("/info/{id}")
    public R info(@PathVariable("id") Long id, HttpServletRequest request){
        logger.debug("info方法:,,Controller:{},,id:{}",this.getClass().getName(),id);
        LiuyanEntity liuyan = liuyanService.selectById(id);
        if(liuyan !=null){
            //entity转view
            LiuyanView view = new LiuyanView();
            BeanUtils.copyProperties( liuyan , view );//把实体数据重构到view中

                //级联表
                YonghuEntity yonghu = yonghuService.selectById(liuyan.getYonghuId());
                if(yonghu != null){
                    BeanUtils.copyProperties( yonghu , view ,new String[]{ "id", "createTime", "insertTime", "updateTime"});//把级联的数据添加到view中,并排除id和创建时间字段
                    view.setYonghuId(yonghu.getId());
                }
            //修改对应字典表字段
            dictionaryService.dictionaryConvert(view, request);
            return R.ok().put("data", view);
        }else {
            return R.error(511,"查不到数据");
        }

    }

    /**
    * 后端保存
    */
    @RequestMapping("/save")
    public R save(@RequestBody LiuyanEntity liuyan, HttpServletRequest request){
        logger.debug("save方法:,,Controller:{},,liuyan:{}",this.getClass().getName(),liuyan.toString());

        String role = String.valueOf(request.getSession().getAttribute("role"));
        if(false)
            return R.error(511,"永远不会进入");
        else if("用户".equals(role))
            liuyan.setYonghuId(Integer.valueOf(String.valueOf(request.getSession().getAttribute("userId"))));

        Wrapper<LiuyanEntity> queryWrapper = new EntityWrapper<LiuyanEntity>()
            .eq("yonghu_id", liuyan.getYonghuId())
            .eq("liuyan_name", liuyan.getLiuyanName())
            .eq("liuyan_text", liuyan.getLiuyanText())
            .eq("reply_text", liuyan.getReplyText())
            ;

        logger.info("sql语句:"+queryWrapper.getSqlSegment());
        LiuyanEntity liuyanEntity = liuyanService.selectOne(queryWrapper);
        if(liuyanEntity==null){
            liuyan.setInsertTime(new Date());
            liuyan.setCreateTime(new Date());
            liuyanService.insert(liuyan);
            return R.ok();
        }else {
            return R.error(511,"表中有相同数据");
        }
    }

    /**
    * 后端修改
    */
    @RequestMapping("/update")
    public R update(@RequestBody LiuyanEntity liuyan, HttpServletRequest request){
        logger.debug("update方法:,,Controller:{},,liuyan:{}",this.getClass().getName(),liuyan.toString());

        String role = String.valueOf(request.getSession().getAttribute("role"));
//        if(false)
//            return R.error(511,"永远不会进入");
//        else if("用户".equals(role))
//            liuyan.setYonghuId(Integer.valueOf(String.valueOf(request.getSession().getAttribute("userId"))));
        //根据字段查询是否有相同数据
        Wrapper<LiuyanEntity> queryWrapper = new EntityWrapper<LiuyanEntity>()
            .notIn("id",liuyan.getId())
            .andNew()
            .eq("yonghu_id", liuyan.getYonghuId())
            .eq("liuyan_name", liuyan.getLiuyanName())
            .eq("liuyan_text", liuyan.getLiuyanText())
            .eq("reply_text", liuyan.getReplyText())
            ;

        logger.info("sql语句:"+queryWrapper.getSqlSegment());
        LiuyanEntity liuyanEntity = liuyanService.selectOne(queryWrapper);
        liuyan.setUpdateTime(new Date());
        if(liuyanEntity==null){
            liuyanService.updateById(liuyan);//根据id更新
            return R.ok();
        }else {
            return R.error(511,"表中有相同数据");
        }
    }

    /**
    * 删除
    */
    @RequestMapping("/delete")
    public R delete(@RequestBody Integer[] ids){
        logger.debug("delete:,,Controller:{},,ids:{}",this.getClass().getName(),ids.toString());
        liuyanService.deleteBatchIds(Arrays.asList(ids));
        return R.ok();
    }

}

五、效果图

六、源码获取: 

同系统在主页搜索资源可下载~

标签:Vue,return,SpringBoot,liuyan,request,帖子,源码,role,id
From: https://blog.csdn.net/m0_48205251/article/details/143608195

相关文章

  • 计算机毕设源码 python-基于flask在线考试系统
    标题:python-基于flask在线考试系统设计一个基于Flask框架的在线考试系统,需要考虑考生、教师和管理员的不同需求,确保系统的易用性、公平性和安全性。以下是一个典型的在线考试系统的主要功能模块:1.用户注册与登录•注册:用户可以通过手机号码、邮箱或社交账号注册。•登录:用......
  • 【前端开发】新建一个vue项目
    一、创建项目(前提:安装node,安装VisualStudioCode)Node官网VSCode1.选择一个空文件夹2.Shift+右击,打开Powershell【Vite官网指导:ViteGuide】3.命令行创建项目npmcreatevite@latest(1)创建项目名字选框架(2)选语言开发(3)下载脚手架运行Ctrl点击链接就ok了......
  • SpringBoot:SpringBoot集成E-mail邮件发送功能
    前言  今天做项目时有个需求是:用公司邮箱给客户发送邮件通知,然后上网冲浪找到一些不错的文章,通过优化并实现功能后,写这篇文章记录一下,也提供给大家做参考。前期准备在编写代码前,我们需要获取到一些信息用于后续邮件发送功能,需要获取的信息为:协议服务器地址、邮件发送协议、客......
  • vue2-基础核心
    vue简介动态构建用户界面的渐进式JavaScript框架vue的特点:遵循MVVM模式采用组件化模式,提高代码复用率,让代码更好维护声明式编码,无需直接操作DOM,提高开发效率,编码简洁、体积小,运行效率高本身只关注UI,也可以引入其他三方库开发项目使用虚拟DOM+优秀的Diff算法,尽......
  • 【Vue2】计算属性computed究竟有什么魅力?
    前言        在Vue2的体系中,计算属性computed可谓是一个十分重要的工具,不仅能够帮助我们简化计算逻辑,而且能够优化应用的性能,相关问题在面试中也经常被问到。那么computed计算属性究竟有什么魅力呢,接下来随作者一起进入computed相关知识的分享吧!概念规则定义  ......
  • vite4+vue2+vant2+less构建项目,按需加载定制主题配置说明
    步骤1:安装vant2、consola、less、vite-plugin-style-import说明:因为vant2需要consola,所以必装;安装加载vant组件样式,必装:vite-plugin-style-import,版本注意是2.0以上 步骤2:vite.config.js配置://vite.config.jsimportfsfrom'node:fs';importpathfrom'path';i......
  • vue2 验证码
    StaticVerify.vue<template><canvasref="canvasRef"class="verify":width="width":height="height"@click="drawCode"></canvas></template><script>exportdefault{......
  • 【Python】30个Python爬虫的实战项目!!!(附源码)
    Python爬虫是数据采集自动化的利器。本文精选了30个实用的Python爬虫项目,从基础到进阶,每个项目都配有完整源码和详细讲解。通过这些项目的实战,可以全面掌握网页数据抓取、反爬处理、并发下载等核心技能。一、环境准备在开始爬虫项目前,需要安装以下Python库:......
  • Vue之调用组件返回对象
    需求:调用通讯录子组件选人,选完人后返回数据到父组件进一步处理。1.引用子组件<org-pickerref="orgPicker"title="请选择人员"multiple:selected="orgPickerSelected"@handleSelected="selected"type="user"/>2.点击按钮显示子组件constor......
  • nano框架源码笔记
    nano是开源游戏服务器框架,TODO介绍。从examples/demo/chat/main.go开始看起。group.goGrouprepresentsasessiongroupwhichusedtomanageanumberofsessions,datasendtothegroupwillsendtoallsessioninit.包含四个字段:mu互斥量,status表示当前chennel......