Springboot+Vue项目-基于Java+MySQL的个人云盘管理系统(附源码+演示视频+LW)

news2024/12/25 10:18:00

大家好!我是程序猿老A,感谢您阅读本文,欢迎一键三连哦。

💞当前专栏:Java毕业设计

精彩专栏推荐👇🏻👇🏻👇🏻

🎀 Python毕业设计
🌎微信小程序毕业设计

开发环境

开发语言:Java
框架:Springboot+Vue
JDK版本:JDK1.8
服务器:tomcat7
数据库:mysql 5.7
数据库工具:Navicat12
开发软件:eclipse/myeclipse/idea
Maven包:Maven3.3.9
浏览器:谷歌浏览器

演示视频

springboot276个人云盘管理系统的设计与实现录像

原版高清演示视频-编号:276
https://pan.quark.cn/s/5cda95b17ee0

源码下载地址:

https://download.csdn.net/download/2301_76953549/89099734

LW目录

【如需全文请按文末获取联系】
在这里插入图片描述
在这里插入图片描述

目录

  • 开发环境
  • 演示视频
  • 源码下载地址:
  • LW目录
  • 一、项目简介
  • 二、系统设计
    • 2.1软件功能模块设计
    • 2.2数据库设计
  • 三、系统项目部分截图
    • 3.1用户信息管理
    • 3.2 博客信息管理
    • 3.3视频信息管理
    • 3.4论坛信息管理
  • 四、部分核心代码
    • 4.1 用户部分
  • 获取源码或论文

一、项目简介

个人云盘管理系统在对开发工具的选择上也很慎重,为了便于开发实现,选择的开发工具为Eclipse,选择的数据库工具为Mysql。以此搭建开发环境实现个人云盘管理系统的功能。

二、系统设计

2.1软件功能模块设计

为了让系统的编码可以顺利进行,特意对本系统功能进行细分设计,设计的系统功能结构见下图。
在这里插入图片描述

2.2数据库设计

(1)下图是论坛实体和其具备的属性。
在这里插入图片描述
(2)下图是用户实体和其具备的属性。
在这里插入图片描述

(3)下图是博客信息实体和其具备的属性。
在这里插入图片描述
(4)下图是博客信息收藏实体和其具备的属性。
在这里插入图片描述
(7)下图是书籍信息实体和其具备的属性。
在这里插入图片描述
(9)下图是视频信息实体和其具备的属性。
在这里插入图片描述

三、系统项目部分截图

3.1用户信息管理

如图5.1显示的就是用户信息管理页面,此页面提供给管理员的功能有:用户信息的查询管理,可以删除用户信息、修改用户信息、新增用户信息,
还进行了对用户名称的模糊查询的条件
在这里插入图片描述

3.2 博客信息管理

如图5.2显示的就是博客信息管理页面,此页面提供给管理员的功能有:查看已发布的博客信息数据,修改博客信息,博客信息作废,即可删除,还进行了对博客信息名称的模糊查询 博客信息信息的类型查询等等一些条件。
在这里插入图片描述

3.3视频信息管理

如图5.3显示的就是视频信息管理页面,此页面提供给管理员的功能有:根据视频信息进行条件查询,还可以对视频信息进行新增、修改、查询操作等等。
在这里插入图片描述

3.4论坛信息管理

如图5.4显示的就是论坛信息管理页面,此页面提供给管理员的功能有:根据论坛信息进行新增、修改、查询操作等等。
在这里插入图片描述

四、部分核心代码

4.1 用户部分


package com.controller;

import java.io.File;
import java.math.BigDecimal;
import java.net.URL;
import java.text.SimpleDateFormat;
import com.alibaba.fastjson.JSONObject;
import java.util.*;
import org.springframework.beans.BeanUtils;
import javax.servlet.http.HttpServletRequest;
import org.springframework.web.context.ContextLoader;
import javax.servlet.ServletContext;
import com.service.TokenService;
import com.utils.*;
import java.lang.reflect.InvocationTargetException;

import com.service.DictionaryService;
import org.apache.commons.lang3.StringUtils;
import com.annotation.IgnoreAuth;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.baomidou.mybatisplus.mapper.Wrapper;
import com.entity.*;
import com.entity.view.*;
import com.service.*;
import com.utils.PageUtils;
import com.utils.R;
import com.alibaba.fastjson.*;

/**
 * 博客信息
 * 后端接口
 * @author
 * @email
*/
@RestController
@Controller
@RequestMapping("/boke")
public class BokeController {
    private static final Logger logger = LoggerFactory.getLogger(BokeController.class);

    @Autowired
    private BokeService bokeService;


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

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



    /**
    * 后端列表
    */
    @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"));
        if(params.get("orderBy")==null || params.get("orderBy")==""){
            params.put("orderBy","id");
        }
        PageUtils page = bokeService.queryPage(params);

        //字典表数据转换
        List<BokeView> list =(List<BokeView>)page.getList();
        for(BokeView 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);
        BokeEntity boke = bokeService.selectById(id);
        if(boke !=null){
            //entity转view
            BokeView view = new BokeView();
            BeanUtils.copyProperties( boke , view );//把实体数据重构到view中

                //级联表
                YonghuEntity yonghu = yonghuService.selectById(boke.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 BokeEntity boke, HttpServletRequest request){
        logger.debug("save方法:,,Controller:{},,boke:{}",this.getClass().getName(),boke.toString());

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

        Wrapper<BokeEntity> queryWrapper = new EntityWrapper<BokeEntity>()
            .eq("boke_name", boke.getBokeName())
            .eq("boke_types", boke.getBokeTypes())
            .eq("yonghu_id", boke.getYonghuId())
            .eq("zan_number", boke.getZanNumber())
            .eq("cai_number", boke.getCaiNumber())
            .eq("clicknum", boke.getClicknum())
            .eq("insert_time", new SimpleDateFormat("yyyy-MM-dd").format(new Date()))
            ;

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

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

        String role = String.valueOf(request.getSession().getAttribute("role"));
//        if(false)
//            return R.error(511,"永远不会进入");
//        else if("用户".equals(role))
//            boke.setYonghuId(Integer.valueOf(String.valueOf(request.getSession().getAttribute("userId"))));
        //根据字段查询是否有相同数据
        Wrapper<BokeEntity> queryWrapper = new EntityWrapper<BokeEntity>()
            .notIn("id",boke.getId())
            .andNew()
            .eq("boke_name", boke.getBokeName())
            .eq("boke_types", boke.getBokeTypes())
            .eq("yonghu_id", boke.getYonghuId())
            .eq("zan_number", boke.getZanNumber())
            .eq("cai_number", boke.getCaiNumber())
            .eq("clicknum", boke.getClicknum())
            .eq("insert_time", new SimpleDateFormat("yyyy-MM-dd").format(boke.getInsertTime()))
            ;

        logger.info("sql语句:"+queryWrapper.getSqlSegment());
        BokeEntity bokeEntity = bokeService.selectOne(queryWrapper);
        if("".equals(boke.getBokePhoto()) || "null".equals(boke.getBokePhoto())){
                boke.setBokePhoto(null);
        }
        if(bokeEntity==null){
            bokeService.updateById(boke);//根据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());
        bokeService.deleteBatchIds(Arrays.asList(ids));
        return R.ok();
    }


    /**
     * 批量上传
     */
    @RequestMapping("/batchInsert")
    public R save( String fileName){
        logger.debug("batchInsert方法:,,Controller:{},,fileName:{}",this.getClass().getName(),fileName);
        try {
            List<BokeEntity> bokeList = new ArrayList<>();//上传的东西
            Map<String, List<String>> seachFields= new HashMap<>();//要查询的字段
            Date date = new Date();
            int lastIndexOf = fileName.lastIndexOf(".");
            if(lastIndexOf == -1){
                return R.error(511,"该文件没有后缀");
            }else{
                String suffix = fileName.substring(lastIndexOf);
                if(!".xls".equals(suffix)){
                    return R.error(511,"只支持后缀为xls的excel文件");
                }else{
                    URL resource = this.getClass().getClassLoader().getResource("static/upload/" + fileName);//获取文件路径
                    File file = new File(resource.getFile());
                    if(!file.exists()){
                        return R.error(511,"找不到上传文件,请联系管理员");
                    }else{
                        List<List<String>> dataList = PoiUtil.poiImport(file.getPath());//读取xls文件
                        dataList.remove(0);//删除第一行,因为第一行是提示
                        for(List<String> data:dataList){
                            //循环
                            BokeEntity bokeEntity = new BokeEntity();
//                            bokeEntity.setBokeName(data.get(0));                    //博客标题 要改的
//                            bokeEntity.setBokeTypes(Integer.valueOf(data.get(0)));   //博客类型 要改的
//                            bokeEntity.setBokePhoto("");//照片
//                            bokeEntity.setYonghuId(Integer.valueOf(data.get(0)));   //用户 要改的
//                            bokeEntity.setZanNumber(Integer.valueOf(data.get(0)));   //赞 要改的
//                            bokeEntity.setCaiNumber(Integer.valueOf(data.get(0)));   //踩 要改的
//                            bokeEntity.setClicknum(Integer.valueOf(data.get(0)));   //点击次数 要改的
//                            bokeEntity.setInsertTime(date);//时间
//                            bokeEntity.setBokeContent("");//照片
//                            bokeEntity.setCreateTime(date);//时间
                            bokeList.add(bokeEntity);


                            //把要查询是否重复的字段放入map中
                        }

                        //查询是否重复
                        bokeService.insertBatch(bokeList);
                        return R.ok();
                    }
                }
            }
        }catch (Exception e){
            return R.error(511,"批量插入数据异常,请联系管理员");
        }
    }





    /**
    * 前端列表
    */
    @IgnoreAuth
    @RequestMapping("/list")
    public R list(@RequestParam Map<String, Object> params, HttpServletRequest request){
        logger.debug("list方法:,,Controller:{},,params:{}",this.getClass().getName(),JSONObject.toJSONString(params));

        // 没有指定排序字段就默认id倒序
        if(StringUtil.isEmpty(String.valueOf(params.get("orderBy")))){
            params.put("orderBy","id");
        }
        PageUtils page = bokeService.queryPage(params);

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

    /**
    * 前端详情
    */
    @RequestMapping("/detail/{id}")
    public R detail(@PathVariable("id") Long id, HttpServletRequest request){
        logger.debug("detail方法:,,Controller:{},,id:{}",this.getClass().getName(),id);
        BokeEntity boke = bokeService.selectById(id);
            if(boke !=null){


                //entity转view
                BokeView view = new BokeView();
                BeanUtils.copyProperties( boke , view );//把实体数据重构到view中

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


    /**
    * 前端保存
    */
    @RequestMapping("/add")
    public R add(@RequestBody BokeEntity boke, HttpServletRequest request){
        logger.debug("add方法:,,Controller:{},,boke:{}",this.getClass().getName(),boke.toString());
        Wrapper<BokeEntity> queryWrapper = new EntityWrapper<BokeEntity>()
            .eq("boke_name", boke.getBokeName())
            .eq("boke_types", boke.getBokeTypes())
            .eq("yonghu_id", boke.getYonghuId())
            .eq("zan_number", boke.getZanNumber())
            .eq("cai_number", boke.getCaiNumber())
            .eq("clicknum", boke.getClicknum())
            ;
        logger.info("sql语句:"+queryWrapper.getSqlSegment());
        BokeEntity bokeEntity = bokeService.selectOne(queryWrapper);
        if(bokeEntity==null){
            boke.setInsertTime(new Date());
            boke.setCreateTime(new Date());
        bokeService.insert(boke);
            return R.ok();
        }else {
            return R.error(511,"表中有相同数据");
        }
    }


}

获取源码或论文

如需对应的LW或源码,以及其他定制需求,也可以点我头像查看个人简介联系。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1655397.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

连接docker中的MySQL出现2058错误

出错场景&#xff1a;在虚拟机中用docker技术下载最新版本的MySQL&#xff0c;在本地电脑上连接发现出现2058错误。 解决方法&#xff1a; 按照以下步骤 1. 2. ALTER USER root% IDENTIFIED WITH mysql_native_password BY 自己MySQL的密码; 3.成功

如何查看公网IP开放端口?

在计算机网络中&#xff0c;公网IP是指能够直接访问互联网的IP地址&#xff0c;而开放端口则是指外部网络可以访问的服务端口。查看公网IP开放端口可以帮助我们了解当前网络环境中哪些服务可以被外部网络访问&#xff0c;对于网络安全和远程连接非常重要。 天联组网 天联组网是…

延迟加载过多对性能的影响

延迟加载是一种将资源下载操作推迟到需要时再下载的技术&#xff0c;可以节省流量并减少关键资源的网络争用。它于2019年成为 Web 标准&#xff0c;今天大多数主流浏览器支持图片的 loading"lazy"。 听起来不错&#xff0c;但是否存在延迟加载过多的情况&#xff1f;…

Sarcasm detection论文解析 |使用 BERT 进行中间任务迁移学习的刺检测

论文地址 论文地址&#xff1a;https://www.mdpi.com/2227-7390/10/5/844#/ github&#xff1a;edosavini/TransferBertSarcasm (github.com) 论文首页 笔记框架 使用 BERT 进行中间任务迁移学习的讽刺检测 &#x1f4c5;出版年份:2022 &#x1f4d6;出版期刊:Mathematics &…

您可以使用WordPress创建的19种网站类型

当人们决定为什么他们应该使用WordPress时&#xff0c;我们经常会被问到“WordPress可以做[空白]吗&#xff1f;答案大多是肯定的。在本文中&#xff0c;我们将向您展示您可以使用WordPress创建的19种不同类型的网站&#xff0c;而无需学习任何编程技巧。 目录 隐藏 1 开始使用…

什么是Facebook付费广告营销?

Facebook作为全球最大的社交平台之一&#xff0c;成为了跨境卖家不可或缺的营销阵地。它不仅拥有庞大的用户基数&#xff0c;还提供了丰富的广告工具和社群互动功能&#xff0c;让商家能够精准触达目标市场&#xff0c;提升品牌影响力。云衔科技通过Facebook付费广告营销的专业…

开源免费的发票识别OCR应用:Invoice

Invoice&#xff1a;轻松识别&#xff0c;发票电子化扫描烦恼消- 精选真开源&#xff0c;释放新价值。 概览 Invoice 是github社区上一个采用开源许可协议发布的增值税发票光学字符识别&#xff08;OCR&#xff09;解决方案项目。该项目不仅集成了预训练的高级模型&#xff0c…

ansible批量运维管理

Ansible是一种自动化运维工具&#xff0c;基于Python开发&#xff0c;主要用于自动化IT任务&#xff0c;如配置管理、应用程序部署、软件升级和系统管理等。它集合了众多运维工具&#xff08;如puppet、cfengine、chef、func、fabric&#xff09;的优点&#xff0c;实现了批量系…

CopyClip for Mac - 高效复制粘贴,轻松管理剪贴板

CopyClip for Mac&#xff0c;一款专为Mac用户打造的剪贴板管理工具&#xff0c;让你在复制粘贴的日常任务中&#xff0c;享受到前所未有的高效与便捷。 它常驻在菜单栏中&#xff0c;时刻准备为你服务。一旦你复制了内容&#xff0c;CopyClip就会自动将其保存至历史记录中&…

软件杯 深度学习花卉识别 - python 机器视觉 opencv

文章目录 0 前言1 项目背景2 花卉识别的基本原理3 算法实现3.1 预处理3.2 特征提取和选择3.3 分类器设计和决策3.4 卷积神经网络基本原理 4 算法实现4.1 花卉图像数据4.2 模块组成 5 项目执行结果6 最后 0 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 &a…

为软件教学文档增加实践能力

为了更方便软件教学&#xff0c;我们在凌鲨(OpenLinkSaas)上增加了公共资源引用的功能。 目前可以被引用的公共资源: 微应用常用软件公共知识库Docker模板 引用公共资源 引用微应用 目前微应用包含了主流数据库&#xff0c;终端等工具&#xff0c;可以方便的进行各种相关实…

词袋法TFIDF

Tf-idf⽂本特征提取 TF-IDF的主要思想是&#xff1a;如果某个词或短语在⼀篇⽂章中出现的概率⾼&#xff0c;并且在其他⽂章中很少出现&#xff0c;则认为此词或者短语具有很好的类别区分能⼒&#xff0c;适合⽤来分类。TF-IDF作⽤&#xff1a;⽤以评估⼀字词对于⼀个⽂件集或…

制冷机组喷液冷却与经济器的介绍

在制冷机组中&#xff0c;喷液冷却与经济器两者虽同可以为提升制冷系统效率与性能&#xff0c;经济器是一种特殊的换热器&#xff0c;主要用于制冷系统中&#xff0c;以提高系统的效率和性能。通常安装在制冷机组的冷凝器之后、膨胀阀之前的位置&#xff0c;确保在制冷剂流向蒸…

自动驾驶主流芯片及平台架构(五)选择自动驾驶平台考虑因素

自动驾驶域控制器基本架构 域控制其中最核心的是主芯片&#xff0c;一般会采用一颗或多颗高性能的SOC。SOC是System on Chip的缩写&#xff0c;就是在单块芯片上集成多个微处理器、模拟IP核、数字IP核和存储器等部件&#xff0c;比如CPU、GPU、DSP、ISP、Codec、NPU、Modem等模…

等保测评二级有哪些标准

等级保护测评&#xff08;等保测评&#xff09;是中国的一项网络安全标准&#xff0c;旨在评估和确保关键信息基础设施的安全。二级等保测评是适用于一般级别的信息系统&#xff0c;这些系统一旦受损&#xff0c;可能会对社会秩序、公共利益和公民权利造成一定程度的影响。 二级…

Flask-HTTP请求、响应、上下文、进阶实验

本节主要目录如下&#xff1a; 一、请求响应循环 二、HTTP请求 2.1、请求报文 2.2、Request对象 2.3、在Flask中处理请求 2.4、请求钩子 三、HTTP响应 3.1、响应报文 3.2、在Flask中生成响应 3.3、响应格式 3.4、Cookie 3.5、session&#xff1a;安全的Cookie 四、…

使用.NET8实现Web API

目录 1、环境准备1.1、从官网下载及安装VS2022社区版1.2、下载及安装asp.net core的运行时及IIS Module 2、WebAPI工程创建2.2 推荐的库2.2.1 数据库篇2.2.1.1、 SQLSugar2.2.1.2、 OracleAccess 2.2.2、IOC篇2.2.2.1、autofac2.2.2.2、 2.2.3、日志记录篇2.2.3.1 log4net2.2.3…

考情管理之签到和签退

前端 菜单权限 只给超级管理员分配签到管理菜单&#xff0c;一般员工无法查看 查找首页页面 观察到首页有个“使用率”汉字 在项目中查找“使用率”这三个字 增加签到和签退按钮 页面代码 <div class"info-box"><span class"info-box-icon bg-a…

梦幻西游12门派复古怀旧 单机版 安装简单,云盘下载哦

做游戏开发的朋友&#xff0c;可以多参考里面的设计思想&#xff0c;真的不错。 梦幻西游12门派复古怀旧 单机版 安装简单&#xff0c;云盘下载哦 游戏大小&#xff1a; 支持系统&#xff1a;win7、win10 64位 特色&#xff1a;简化安装&#xff0c;非常容易。 重新整盒高…

【数据结构】-- 链表专题

链表的分类 前面我们实现了单链表&#xff0c;单链表只是链表的一种。可以根据以下几个标准来判断链表的类型&#xff1a; 1.单向或者双向 如图所示&#xff0c;单向链表中一个节点的指针域只储存了下一个节点的指针&#xff0c;能通过前一个节点访问后一个节点&#xff0c;无…