基于Java+SpringBoot+Vue+Element的OA系统的设计和实现
- 源码传送入口
- 前言
- 主要技术
- 系统设计
- 功能截图
- 数据库设计
- 代码
- 论文目录
- 订阅经典源码专栏
- Java项目精品实战案例《500套》
- 源码获取
源码传送入口
前言
在Internet高速发展的今天,我们生活的各个领域都涉及到计算机的应用,其中包括小型OA系统设计与实现的网络应用,在国外小型OA系统设计与实现已经是很普遍的方式,不过国内的小型OA系统设计与实现可能还处于起步阶段。小型OA系统设计与实现具有部门公告、通知中心等功能。小型OA系统设计与实现采用Java语言,Springboot框架,基于mysql开发,实现了部门、用户、部门公告、通知中心、代办消息、个人日程、完成代办等内容进行管理,本系统具有良好的兼容性和适应性,为用户提供更多的信息,也提供了良好的平台,从而提高系统的核心竞争力。
本文首先介绍了设计的背景与研究目的,其次介绍系统相关技术,重点叙述了系统功能分析以及详细设计,最后总结了系统的开发心得。
关键词:小型OA系统设计与实现;Springboot框架; Java语言;mysql数据库。
主要技术
2.1 Java语言简介
Java语言是一个完全的面向对象的程序设计语言。面向对象编程语言的思想是把客观存在的事物看成是具有状态和行为的一类对象,然后通过抽象的方法找出相同一类对象的共同状态和行为,从而构成模型——类。类是Java程序设计语言的核心,是Java语言的基本抽象单元。世间上的各种事物都是对象,都可以把它抽象成具有状态和行为的类。Java语言的主要特点有:
Java语言是典型的面向对象的。它提供了类,类又提供了对象的模型,通过使用继承和多态的方法,可以实现代码的重用。
Java语言是安全的。当代网络环境要解决的最大的问题就是安全问题。Java具有内部的安全措施,可以确保程序的安全与完整。
Java语言的操作无关平台。Java程序可以在任何的系统中运行,只要安装了Java的运行系统。
Java语言是多线程的。
Java语言具有内存管理。Java可以自动地对内存进行管理,很好地利用了系统的资源,减少浪费。
2.2 mysql数据库介绍
利用MYSQL的数据独立性、安全性等特点,在软件项目中对数据进行操作,可以保证数据准确无误,并降低了程序员的应用开发时间。
MYSQL的特点是支持多线程,能方便的对系统资源充分利用,有效提高速度,还提供多种方式途径来对数据库进行连接;MYSQL的功能相对弱小、规模也小,但本系统要求不高,MYSQL完全可以满足本网站使用。
利用MYSQL建立系统数据库,不仅有利于数据处理业务的早期整合,还能利于发展后两种数据扩展的操作。
2.3 MySQL环境配置
(1)本系统的数据使用的是MySQL,所以要将MySQL安装到指定目录,如果下载的是非安装的MySQL压缩包,直接解压到指定目录就可以了。然后点击C:\Program Files\MySQL\bin\winMySQLadmin.exe这个文件其中C:\Program Files\MySQL是MySQL安装目录。输入winMySQLadmin的初始用户、密码(注:这不是MySQL里的用户、密码)随便填不必在意,确定之后右下角任务的启动栏会出现一个红绿灯的图标,红灯亮代表服务停止,绿灯亮代表服务正常,左击这个图标->winnt->install the service 安装此服务,再左击这个图标->winnt->start the service 启动MySQL服务。
(2)修改MySQL数据库的root密码。用cmd进入命令行模式输入如下命令:
cd C:\Program Files\MySQL\bin
MySQLadmin -u root -p password 123
回车出现Enter password: ,这是要输入原密码. 刚安装时密码为空,所以直接回车,此时MySQL 中账号 root 的密码被改为 123 安装完毕。
2.4 B/S架构
B/S的系统是通过能上网的电脑就可以使用,它最大的优点是不需要安装专门的软件,首先浏览器向服务器发出请求,然后服务器处理请求把信息再返回给浏览器。不需要再次对数据进行存取与计算数据,只要负责显示数据来降低要求,如果说客户端像个“瘦子”,而服务器会越来越“胖”。B/S体系结构与C/S体系结构相比,最大的不同是:B/S体系的应用软件使用网络浏览器作为与用户交互的平台,而C/S则需要开发专用的应用程序。
当前MIS系统结构目前存在两种较为流行的结构:C/S和B/S两种。
C/S结构的系统:C/S结构就是客户机服务器结构,它可以法派任务到Client端和Server端来进行,充分利用两端硬件环境的优势,来降低系统的通讯的花费。客户端主要作用是处理人机交互,执行客户端应用程序,收集数据以及向服务器发送任务请求。服务器基本作用是执行后台程序,它主要对客户机的请求申请进行反馈,除此之外,它的作用还包括:数据服务预约储系统的共享管理、通讯管理、文件管理等等。
B/S结构的系统:这种网络结构简化了客户端,并把系统功能实现的中心集中到服务器上,在这种模式中,只需要一个浏览器就可以了。这种结构将很多的工作交于WEB服务器,只通过浏览器请求WEB服务,随后根据请求返回信息。
通常在企业网内部使用,采用C/S。而使用不仅限于内网的情况下使用B/S。考虑到本管理系统的一系列需求,所以,该系统开发使用B/S结构开发。
2.5 Springboot框架
本技术是Java平台的开源应用框架,其目的是简化Sping的初始搭建和开发过程。默认配置了很多框架的使用方式,自动加载Jar包,为了让读者尽可能快的跑起来spring应用程序。
SpinrgBoot的主要优点有:
1、为所有spring开发提供了一个更快、更广泛的入门体验;
2、零配置;
3、集成了大量常用的第三方库的配置;
4、提供准备好的特性。当今,Java领域的开发者机会都在使用SpinrgBoot,在开发领域逐渐成为领导者。
系统设计
功能截图
5.1管理员功能模块
管理员登录系统,管理员登录页面通过输入用户名、密码,选择角色并点击登录进行系统登录操作,如图5-1所示。
图5-1管理员登录界面图
管理员登录系统后,可以对首页、个人中心、部门管理、用户管理、部门公告管理、通知中心管理、代办消息管理、个人日程管理、完成代办管理等功能模块进行相应操作,如图5-2所示。
图5-2管理员功能界面图
部门管理,在部门管理页面可以对部门、部门领导、部门电话、部门邮箱等内容进行详情、修改或删除,如图5-3所示。
图5-3部门管理界面图
用户管理,在用户管理页面可以对用户账号、用户姓名、手机号码、头像、性别、邮箱、部门、职位、审核回复、审核状态、审核等内容进行详情、修改或删除等操作,如图5-4所示。
图5-4用户管理界面图
5.2用户功能模块
用户注册,在注册页面填写用户账号、用户姓名、密码、确认密码、手机号码、邮箱等详细信息进行注册,如图5-5所示。
图5-5用户注册界面图
用户登录,用户在登录页面通过填写账号、密码、选择角色信息完成登录,如图5-6所示。
图5-6用户登录界面图
用户登录进入系统后,可以对首页、个人中心、部门公告管理、通知中心管理、代办消息管理、个人日程管理、完成代办管理等功能模块进行相应操作,如图5-7所示。
图5-7用户功能界面图
部门公告管理,在部门公告管理页面可以对公告名称、发布时间、部门、部门领导等内容进行详情操作,如图5-8所示。
图5-8部门公告管理界面图
通知中心管理,在通知中心管理页面可以对文件编号、文件标题、文件、上传时间等内容进行详情操作,如图5-9所示。
图5-9通知中心管理界面图
代办消息管理,在代办消息管理页面可以对用户账号、用户姓名、部门、职位、部门领导、文件、发放时间、消息备注等内容进行详情、完成代办操作,如图5-10所示。
图5-10代办消息管理界面图
完成代办管理,在完成代办管理页面可以对用户账号、用户姓名、职位、部门、部门领导、完成文件、消息备注、发放时间、提交时间、审核回复、审核状态、等内容进行详情操作,如图5-11所示。
图5-11完成代办管理界面图
5.3部门(销售部门)功能模块
部门登录,部门在登录页面通过填写账号、密码、选择角色信息完成登录,如图5-12所示。
图5-12部门登录界面图
部门登录进入系统后,可以对首页、个人中心、用户管理、部门公告管理、通知中心管理、代办消息管理、个人日程管理、完成代办管理等功能模块进行相应操作,如图5-13所示。
图5-13部门功能界面图
用户管理,在用户管理页面可以对用户账号、用户姓名、手机号码、头像、性别、邮箱、部门、职位、审核回复、审核状态、审核等内容进行详情、发送代办消息等操作,如图5-14所示。
图5-14用户管理界面图
部门公告管理,在部门公告管理页面可以对公告名称、发布时间、部门、部门领导等内容进行详情、修改、删除操作,如图5-15所示。
图5-15部门公告管理界面图
通知中心管理,在通知中心管理页面可以对用户账号、用户姓名、部门、职位、通知人、通知时间等内容进行详情操作,如图5-16所示。
图5-16通知中心管理界面图
代办消息管理,在代办消息管理页面可以对用户账号、用户姓名、部门、职位、部门领导、文件、发放时间、消息备注等内容进行详情操作,如图5-17所示。
图5-17代办消息管理界面图
个人日程管理,在个人日程管理页面可以对用户账号、部门、用户姓名、职位、编辑时间、审核回复、审核状态等内容进行详情操作,如图5-18所示。
图5-18个人日程管理界面图
数据库设计
部门信息实体图如图4-1所示:
图4-1部门信息实体图
部门公告信息实体图如图4-2所示:
图4-2部门公告信息实体图
通知中心信息实体图如图4-3所示:
图4-3通知中心信息实体图
代办消息实体图如图4-4所示:
图4-4代办消息实体图
DROP TABLE IF EXISTS `bumengonggao`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `bumengonggao` (
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键',
`addtime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`gonggaomingcheng` varchar(200) DEFAULT NULL COMMENT '公告名称',
`gonggaoneirong` longtext COMMENT '公告内容',
`fabushijian` datetime DEFAULT NULL COMMENT '发布时间',
`bumen` varchar(200) DEFAULT NULL COMMENT '部门',
`bumenlingdao` varchar(200) DEFAULT NULL COMMENT '部门领导',
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=1646011296520 DEFAULT CHARSET=utf8 COMMENT='部门公告';
/*!40101 SET character_set_client = @saved_cs_client */;
--
-- Dumping data for table `bumengonggao`
--
LOCK TABLES `bumengonggao` WRITE;
/*!40000 ALTER TABLE `bumengonggao` DISABLE KEYS */;
INSERT INTO `bumengonggao` VALUES (31,'2022-02-28 01:08:14','公告名称1','公告内容1','2022-02-28 09:08:14','部门1','部门领导1'),(32,'2022-02-28 01:08:14','公告名称2','公告内容2','2022-02-28 09:08:14','部门2','部门领导2'),(33,'2022-02-28 01:08:14','公告名称3','公告内容3','2022-02-28 09:08:14','部门3','部门领导3'),(34,'2022-02-28 01:08:14','公告名称4','公告内容4','2022-02-28 09:08:14','部门4','部门领导4'),(35,'2022-02-28 01:08:14','公告名称5','公告内容5','2022-02-28 09:08:14','部门5','部门领导5'),(36,'2022-02-28 01:08:14','公告名称6','公告内容6','2022-02-28 09:08:14','部门6','部门领导6'),(1646011296519,'2022-02-28 01:21:35','销售部门公告','<p>阿道夫噶啥发啥的法撒旦法撒旦发是的<img src=\"http://localhost:8080/springbootm2yt0/upload/1646011295157.jpg\"></p>','2022-02-28 09:21:14','销售部门','王五');
/*!40000 ALTER TABLE `bumengonggao` ENABLE KEYS */;
UNLOCK TABLES;
--
-- Table structure for table `config`
--
DROP TABLE IF EXISTS `config`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `config` (
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键',
`name` varchar(100) NOT NULL COMMENT '配置参数名称',
`value` varchar(100) DEFAULT NULL COMMENT '配置参数值',
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8 COMMENT='配置文件';
/*!40101 SET character_set_client = @saved_cs_client */;
--
-- Dumping data for table `config`
--
LOCK TABLES `config` WRITE;
/*!40000 ALTER TABLE `config` DISABLE KEYS */;
INSERT INTO `config` VALUES (1,'picture1','upload/picture1.jpg'),(2,'picture2','upload/picture2.jpg'),(3,'picture3','upload/picture3.jpg');
/*!40000 ALTER TABLE `config` ENABLE KEYS */;
UNLOCK TABLES;
--
-- Table structure for table `daibanxiaoxi`
--
DROP TABLE IF EXISTS `daibanxiaoxi`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `daibanxiaoxi` (
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键',
`addtime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`yonghuzhanghao` varchar(200) DEFAULT NULL COMMENT '用户账号',
`yonghuxingming` varchar(200) DEFAULT NULL COMMENT '用户姓名',
`zhiwei` varchar(200) DEFAULT NULL COMMENT '职位',
`bumen` varchar(200) DEFAULT NULL COMMENT '部门',
`bumenlingdao` varchar(200) DEFAULT NULL COMMENT '部门领导',
`wenjian` varchar(200) DEFAULT NULL COMMENT '文件',
`fafangshijian` datetime DEFAULT NULL COMMENT '发放时间',
`xiaoxibeizhu` varchar(200) DEFAULT NULL COMMENT '消息备注',
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=1646011271144 DEFAULT CHARSET=utf8 COMMENT='代办消息';
/*!40101 SET character_set_client = @saved_cs_client */;
--
-- Dumping data for table `daibanxiaoxi`
--
LOCK TABLES `daibanxiaoxi` WRITE;
/*!40000 ALTER TABLE `daibanxiaoxi` DISABLE KEYS */;
INSERT INTO `daibanxiaoxi` VALUES (51,'2022-02-28 01:08:14','用户账号1','用户姓名1','职位1','部门1','部门领导1','','2022-02-28 09:08:14','消息备注1'),(52,'2022-02-28 01:08:14','用户账号2','用户姓名2','职位2','部门2','部门领导2','','2022-02-28 09:08:14','消息备注2'),(53,'2022-02-28 01:08:14','用户账号3','用户姓名3','职位3','部门3','部门领导3','','2022-02-28 09:08:14','消息备注3'),(54,'2022-02-28 01:08:14','用户账号4','用户姓名4','职位4','部门4','部门领导4','','2022-02-28 09:08:14','消息备注4'),(55,'2022-02-28 01:08:14','用户账号5','用户姓名5','职位5','部门5','部门领导5','','2022-02-28 09:08:14','消息备注5'),(56,'2022-02-28 01:08:14','用户账号6','用户姓名6','职位6','部门6','部门领导6','','2022-02-28 09:08:14','消息备注6'),(1646011271143,'2022-02-28 01:21:10','001','张三','普通员工','销售部门','王五','upload/1646011267811.doc','2022-02-28 09:20:47','分公司发给水电费干啥地方噶水电费嘎是');
/*!40000 ALTER TABLE `daibanxiaoxi` ENABLE KEYS */;
UNLOCK TABLES;
--
-- Table structure for table `gerenricheng`
--
DROP TABLE IF EXISTS `gerenricheng`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `gerenricheng` (
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键',
`addtime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`yonghuzhanghao` varchar(200) DEFAULT NULL COMMENT '用户账号',
`bumen` varchar(200) DEFAULT NULL COMMENT '部门',
`yonghuxingming` varchar(200) DEFAULT NULL COMMENT '用户姓名',
`zhiwei` varchar(200) DEFAULT NULL COMMENT '职位',
`richengneirong` longtext COMMENT '日程内容',
`bianjishijian` datetime DEFAULT NULL COMMENT '编辑时间',
`sfsh` varchar(200) DEFAULT '否' COMMENT '是否审核',
`shhf` longtext COMMENT '审核回复',
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=1646011224706 DEFAULT CHARSET=utf8 COMMENT='个人日程';
/*!40101 SET character_set_client = @saved_cs_client */;
--
-- Dumping data for table `gerenricheng`
--
LOCK TABLES `gerenricheng` WRITE;
/*!40000 ALTER TABLE `gerenricheng` DISABLE KEYS */;
INSERT INTO `gerenricheng` VALUES (61,'2022-02-28 01:08:14','用户账号1','部门1','用户姓名1','职位1','日程内容1','2022-02-28 09:08:14','是',''),(62,'2022-02-28 01:08:14','用户账号2','部门2','用户姓名2','职位2','日程内容2','2022-02-28 09:08:14','是',''),(63,'2022-02-28 01:08:14','用户账号3','部门3','用户姓名3','职位3','日程内容3','2022-02-28 09:08:14','是',''),(64,'2022-02-28 01:08:14','用户账号4','部门4','用户姓名4','职位4','日程内容4','2022-02-28 09:08:14','是',''),(65,'2022-02-28 01:08:14','用户账号5','部门5','用户姓名5','职位5','日程内容5','2022-02-28 09:08:14','是',''),(66,'2022-02-28 01:08:14','用户账号6','部门6','用户姓名6','职位6','日程内容6','2022-02-28 09:08:14','是',''),(1646011224705,'2022-02-28 01:20:23','001','销售部门','张三','普通员工','<p>是地方高等师范公司的公司地方高等师范个第三方感受到分公司的分公司答复<img src=\"http://localhost:8080/springbootm2yt0/upload/1646011223221.jpg\"></p>','2022-02-28 09:20:14','是','工作不错');
/*!40000 ALTER TABLE `gerenricheng` ENABLE KEYS */;
UNLOCK TABLES;
--
-- Table structure for table `token`
--
DROP TABLE IF EXISTS `token`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `token` (
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键',
`userid` bigint(20) NOT NULL COMMENT '用户id',
`username` varchar(100) NOT NULL COMMENT '用户名',
`tablename` varchar(100) DEFAULT NULL COMMENT '表名',
`role` varchar(100) DEFAULT NULL COMMENT '角色',
`token` varchar(200) NOT NULL COMMENT '密码',
`addtime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '新增时间',
`expiratedtime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '过期时间',
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8 COMMENT='token表';
/*!40101 SET character_set_client = @saved_cs_client */;
--
-- Dumping data for table `token`
--
LOCK TABLES `token` WRITE;
/*!40000 ALTER TABLE `token` DISABLE KEYS */;
INSERT INTO `token` VALUES (1,1,'abo','users','管理员','3z9l9yidcrzjprbg5fnhi09atsyz7b3x','2022-02-28 01:16:32','2022-02-28 02:22:41'),(2,1646011055525,'销售部门','bumen','部门','osxmvl37fu9vtx644y2mn1xfyrz679wh','2022-02-28 01:19:25','2022-02-28 02:25:11'),(3,1646011110727,'001','yonghu','用户','1lohudgzsr0ghxewfva9129876a44yq3','2022-02-28 01:19:41','2022-02-28 02:25:57'),(4,22,'用户账号2','yonghu','用户','msf4hwhhw9j44sg6wvotcwe6mi303scl','2022-02-28 01:22:58','2022-02-28 02:22:58');
/*!40000 ALTER TABLE `token` ENABLE KEYS */;
UNLOCK TABLES;
--
-- Table structure for table `tongzhizhongxin`
--
DROP TABLE IF EXISTS `tongzhizhongxin`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `tongzhizhongxin` (
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键',
`addtime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`yonghuzhanghao` varchar(200) DEFAULT NULL COMMENT '用户账号',
`yonghuxingming` varchar(200) DEFAULT NULL COMMENT '用户姓名',
`bumen` varchar(200) DEFAULT NULL COMMENT '部门',
`zhiwei` varchar(200) DEFAULT NULL COMMENT '职位',
`tongzhineirong` longtext COMMENT '通知内容',
`tongzhiren` varchar(200) DEFAULT NULL COMMENT '通知人',
`tongzhishijian` datetime DEFAULT NULL COMMENT '通知时间',
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=1646011415831 DEFAULT CHARSET=utf8 COMMENT='通知中心';
/*!40101 SET character_set_client = @saved_cs_client */;
--
-- Dumping data for table `tongzhizhongxin`
--
LOCK TABLES `tongzhizhongxin` WRITE;
/*!40000 ALTER TABLE `tongzhizhongxin` DISABLE KEYS */;
INSERT INTO `tongzhizhongxin` VALUES (41,'2022-02-28 01:08:14','用户账号1','用户姓名1','部门1','职位1','通知内容1','通知人1','2022-02-28 09:08:14'),(42,'2022-02-28 01:08:14','用户账号2','用户姓名2','部门2','职位2','通知内容2','通知人2','2022-02-28 09:08:14'),(43,'2022-02-28 01:08:14','用户账号3','用户姓名3','部门3','职位3','通知内容3','通知人3','2022-02-28 09:08:14'),(44,'2022-02-28 01:08:14','用户账号4','用户姓名4','部门4','职位4','通知内容4','通知人4','2022-02-28 09:08:14'),(45,'2022-02-28 01:08:14','用户账号5','用户姓名5','部门5','职位5','通知内容5','通知人5','2022-02-28 09:08:14'),(46,'2022-02-28 01:08:14','用户账号6','用户姓名6','部门6','职位6','通知内容6','通知人6','2022-02-28 09:08:14'),(1646011208932,'2022-02-28 01:20:08','用户账号2','用户姓名2','部门2','职位2','<p>宿管宿管的分公司答复干撒地方感受得分g<img src=\"http://localhost:8080/springbootm2yt0/upload/1646011207853.jpg\"></p>','张三','2022-02-28 09:19:52'),(1646011326259,'2022-02-28 01:22:06','001','张三','销售部门','普通员工','<p>法撒旦法撒旦发啥的法撒旦法撒旦发<img src=\"http://localhost:8080/springbootm2yt0/upload/1646011325057.jpg\"></p>','王五 部门经理asd','2022-02-28 09:21:44'),(1646011415830,'2022-02-28 01:23:35','001','张三','销售部门','普通员工','<p>色任务而台湾儿童为儿童为儿童沃尔<img src=\"http://localhost:8080/springbootm2yt0/upload/1646011412811.jpg\"></p>','用户姓名2','2022-02-28 09:23:07');
/*!40000 ALTER TABLE `tongzhizhongxin` ENABLE KEYS */;
UNLOCK TABLES;
--
-- Table structure for table `users`
--
DROP TABLE IF EXISTS `users`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `users` (
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键',
`username` varchar(100) NOT NULL COMMENT '用户名',
`password` varchar(100) NOT NULL COMMENT '密码',
`role` varchar(100) DEFAULT '管理员' COMMENT '角色',
`addtime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '新增时间',
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8 COMMENT='用户表';
/*!40101 SET character_set_client = @saved_cs_client */;
代码
package com.controller;
import java.util.Arrays;
import java.util.Calendar;
import java.util.Date;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;
import com.annotation.IgnoreAuth;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.entity.TokenEntity;
import com.entity.UserEntity;
import com.service.TokenService;
import com.service.UserService;
import com.utils.CommonUtil;
import com.utils.MPUtil;
import com.utils.PageUtils;
import com.utils.R;
import com.utils.ValidatorUtils;
/**
* 登录相关
*/
@RequestMapping("users")
@RestController
public class UserController{
@Autowired
private UserService userService;
@Autowired
private TokenService tokenService;
/**
* 登录
*/
@IgnoreAuth
@PostMapping(value = "/login")
public R login(String username, String password, String captcha, HttpServletRequest request) {
UserEntity user = userService.selectOne(new EntityWrapper<UserEntity>().eq("username", username));
if(user==null || !user.getPassword().equals(password)) {
return R.error("账号或密码不正确");
}
String token = tokenService.generateToken(user.getId(),username, "users", user.getRole());
return R.ok().put("token", token);
}
/**
* 注册
*/
@IgnoreAuth
@PostMapping(value = "/register")
public R register(@RequestBody UserEntity user){
// ValidatorUtils.validateEntity(user);
if(userService.selectOne(new EntityWrapper<UserEntity>().eq("username", user.getUsername())) !=null) {
return R.error("用户已存在");
}
userService.insert(user);
return R.ok();
}
/**
* 退出
*/
@GetMapping(value = "logout")
public R logout(HttpServletRequest request) {
request.getSession().invalidate();
return R.ok("退出成功");
}
/**
* 密码重置
*/
@IgnoreAuth
@RequestMapping(value = "/resetPass")
public R resetPass(String username, HttpServletRequest request){
UserEntity user = userService.selectOne(new EntityWrapper<UserEntity>().eq("username", username));
if(user==null) {
return R.error("账号不存在");
}
user.setPassword("123456");
userService.update(user,null);
return R.ok("密码已重置为:123456");
}
/**
* 列表
*/
@RequestMapping("/page")
public R page(@RequestParam Map<String, Object> params,UserEntity user){
EntityWrapper<UserEntity> ew = new EntityWrapper<UserEntity>();
PageUtils page = userService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.allLike(ew, user), params), params));
return R.ok().put("data", page);
}
/**
* 列表
*/
@RequestMapping("/list")
public R list( UserEntity user){
EntityWrapper<UserEntity> ew = new EntityWrapper<UserEntity>();
ew.allEq(MPUtil.allEQMapPre( user, "user"));
return R.ok().put("data", userService.selectListView(ew));
}
/**
* 信息
*/
@RequestMapping("/info/{id}")
public R info(@PathVariable("id") String id){
UserEntity user = userService.selectById(id);
return R.ok().put("data", user);
}
/**
* 获取用户的session用户信息
*/
@RequestMapping("/session")
public R getCurrUser(HttpServletRequest request){
Long id = (Long)request.getSession().getAttribute("userId");
UserEntity user = userService.selectById(id);
return R.ok().put("data", user);
}
/**
* 保存
*/
@PostMapping("/save")
public R save(@RequestBody UserEntity user){
// ValidatorUtils.validateEntity(user);
if(userService.selectOne(new EntityWrapper<UserEntity>().eq("username", user.getUsername())) !=null) {
return R.error("用户已存在");
}
userService.insert(user);
return R.ok();
}
/**
* 修改
*/
@RequestMapping("/update")
public R update(@RequestBody UserEntity user){
// ValidatorUtils.validateEntity(user);
UserEntity u = userService.selectOne(new EntityWrapper<UserEntity>().eq("username", user.getUsername()));
if(u!=null && u.getId()!=user.getId() && u.getUsername().equals(user.getUsername())) {
return R.error("用户名已存在。");
}
userService.updateById(user);//全部更新
return R.ok();
}
/**
* 删除
*/
@RequestMapping("/delete")
public R delete(@RequestBody Long[] ids){
userService.deleteBatchIds(Arrays.asList(ids));
return R.ok();
}
}
论文目录
1 绪 论 1
1.1 课题背景 2
1.2 课题研究的意义 3
1.3 系统实现的功能 4
1.4 课题研究现状 5
2系统相关技术 6
2.1 Java语言简介 7
2.2 mysql数据库介绍 8
2.3 MySQL环境配置 9
2.4 B/S架构 10
2.5 Springboot框架 11
3系统需求分析 12
3.1系统功能 13
3.2可行性研究 14
3.2.1 经济可行性 15
3.2.2 技术可行性 16
3.2.3 运行可行性 17
3.2.4 时间可行性 18
3.3系统业务过程分析 19
3.4系统用例图 20
4系统设计 21
4.1数据库设计 22
4.2系统整体设计 23
4.2.1 系统设计思想 24
4.2.2系统流程图 25
5系统详细设计 26
5.1管理员功能模块 27
5.2用户功能模块 29
5.3部门(销售部门)功能模块 29
6系统测试 30
7总结与心得体会 31
7.1 总结 32
7.2 心得体会 33
参考文献 34
致谢 35
订阅经典源码专栏
Java项目精品实战案例《500套》
源码获取
欢迎大家点赞、收藏、关注、评论啦 、查看👇🏻获取联系方式👇🏻