博主介绍:✌全网粉丝30W+,csdn特邀作者、博客专家、CSDN新星计划导师、Java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌
🍅文末获取源码联系🍅
👇🏻 精彩专栏推荐订阅👇🏻 不然下次找不到哟
2022-2024年最全的计算机软件毕业设计选题大全:1000个热门选题推荐✅
Java项目精品实战案例《100套》
Java微信小程序项目实战《100套》
大家在毕设选题,项目升级,论文写作,就业毕业等相关问题都可以给我留言咨询,非常乐意帮助更多的人。
目录
一、 前言介绍:
二 、功能设计:
三、功能实现:
四、库表设计:
五、登录代码:
六、其他案例:
七、源码获取:
一、 前言介绍:
信息数据从传统到当代,是一直在变革当中,突如其来的互联网让传统的信息管理看到了革命性的曙光,因为传统信息管理从时效性,还是安全性,还是可操作性等各个方面来讲,遇到了互联网时代才发现能补上自古以来的短板,有效的提升管理的效率和业务水平。传统的管理模式,时间越久管理的内容越多,也需要更多的人来对数据进行整理,并且数据的汇总查询方面效率也是极其的低下,并且数据安全方面永远不会保证安全性能。结合数据内容管理的种种缺点,在互联网时代都可以得到有效的补充。结合先进的互联网技术,开发符合需求的软件,让数据内容管理不管是从录入的及时性,查看的及时性还是汇总分析的及时性,都能让正确率达到最高,管理更加的科学和便捷。本次开发的大学生心理健康管理系统实现了登录注册、修改密码、健康公告、心理健康测试、答题、专家预约、心理测试报名、评论、收藏、点赞。通知公告等功能。系统用到了关系型数据库中王者MySQL作为系统的数据库,有效的对数据进行安全的存储,有效的备份,对数据可靠性方面得到了保证。并且程序也具备程序需求的所有功能,使得操作性还是安全性都大大提高,让大学生心理健康管理系统更能从理念走到现实,确确实实的让人们提升信息处理效率。
二 、功能设计:
该系统具备多种角色(管理员、普通用户、心理老师、专家用户),
核心功能包含:登录注册、修改密码、健康公告、心理健康测试、答题、专家预约、心理测试报名、评论、收藏、点赞。通知公告等。
三、功能实现:
用户可以登录注册、忘记密码以及登录的时候加了轮播图验证
进入系统首页后查看系统的主要功能,可以根据关键字全局搜索
健康问卷-管理员设计题库等信息。用户可以答题、系统自动评分、可以马上查看分数和答案等
答题详情页面
健康知识宣传页面
经典实验列表页面、可以根据关键字模糊搜索和各种下拉条件搜索
进入详情页面可以报名、对心理专家进行预约、对心理实验进行报名,这几个模块都支持点赞 收藏、评论回复以及查看当前业务的用户点击量等功能。
专家列表-点击详情可以报名预约心理健康专家
对个人资料进行维护,修改密码登操作
后台管理页面的功能比较多,包含4个角色的权限控制以及所有功能的维护、添加、修改。删除以及审核等操作。这里就不一一截图介绍了。截图几个详细的。
四、库表设计:
数据库采用MySQL设计,编码UTF-8
/*
Navicat MySQL Data Transfer
Source Server : localhost
Source Server Version : 50727
Source Host : localhost:3306
Source Database : cs_48328
Target Server Type : MYSQL
Target Server Version : 50727
File Encoding : 65001
Date: 2023-08-14 15:11:35
*/
SET FOREIGN_KEY_CHECKS=0;
-- ----------------------------
-- Table structure for access_token
-- ----------------------------
DROP TABLE IF EXISTS `access_token`;
CREATE TABLE `access_token` (
`token_id` int(11) unsigned NOT NULL AUTO_INCREMENT COMMENT '临时访问牌ID',
`token` varchar(64) DEFAULT NULL COMMENT '临时访问牌',
`info` text,
`maxage` int(2) NOT NULL DEFAULT '2' COMMENT '最大寿命:默认2小时',
`create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间:',
`update_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间:',
`user_id` int(11) unsigned NOT NULL DEFAULT '0' COMMENT '用户编号:',
PRIMARY KEY (`token_id`) USING BTREE
) ENGINE=MyISAM AUTO_INCREMENT=133 DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC COMMENT='登陆访问时长';
-- ----------------------------
-- Table structure for article
-- ----------------------------
DROP TABLE IF EXISTS `article`;
CREATE TABLE `article` (
`article_id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT COMMENT '文章id:[0,8388607]',
`title` varchar(125) NOT NULL DEFAULT '' COMMENT '标题:[0,125]用于文章和html的title标签中',
`type` varchar(64) NOT NULL DEFAULT '0' COMMENT '文章分类:[0,1000]用来搜索指定类型的文章',
`hits` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '点击数:[0,1000000000]访问这篇文章的人次',
`praise_len` int(11) NOT NULL DEFAULT '0' COMMENT '点赞数',
`create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间:',
`update_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间:',
`source` varchar(255) DEFAULT NULL COMMENT '来源:[0,255]文章的出处',
`url` varchar(255) DEFAULT NULL COMMENT '来源地址:[0,255]用于跳转到发布该文章的网站',
`tag` varchar(255) DEFAULT NULL COMMENT '标签:[0,255]用于标注文章所属相关内容,多个标签用空格隔开',
`content` longtext COMMENT '正文:文章的主体内容',
`img` varchar(255) DEFAULT NULL COMMENT '封面图',
`description` text COMMENT '文章描述',
PRIMARY KEY (`article_id`,`title`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC COMMENT='文章:用于内容管理系统的文章';
-- ----------------------------
-- Table structure for article_type
-- ----------------------------
DROP TABLE IF EXISTS `article_type`;
CREATE TABLE `article_type` (
`type_id` smallint(5) unsigned NOT NULL AUTO_INCREMENT COMMENT '分类ID:[0,10000]',
`display` smallint(4) unsigned NOT NULL DEFAULT '100' COMMENT '显示顺序:[0,1000]决定分类显示的先后顺序',
`name` varchar(16) NOT NULL DEFAULT '' COMMENT '分类名称:[2,16]',
`father_id` smallint(5) unsigned NOT NULL DEFAULT '0' COMMENT '上级分类ID:[0,32767]',
`description` varchar(255) DEFAULT NULL COMMENT '描述:[0,255]描述该分类的作用',
`icon` text COMMENT '分类图标:',
`url` varchar(255) DEFAULT NULL COMMENT '外链地址:[0,255]如果该分类是跳转到其他网站的情况下,就在该URL上设置',
`create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间:',
`update_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间:',
PRIMARY KEY (`type_id`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC COMMENT='文章分类';
-- ----------------------------
-- Table structure for auth
-- ----------------------------
DROP TABLE IF EXISTS `auth`;
CREATE TABLE `auth` (
`auth_id` int(11) unsigned NOT NULL AUTO_INCREMENT COMMENT '授权ID:',
`user_group` varchar(64) DEFAULT NULL COMMENT '用户组:',
`mod_name` varchar(64) DEFAULT NULL COMMENT '模块名:',
`table_name` varchar(64) DEFAULT NULL COMMENT '表名:',
`page_title` varchar(255) DEFAULT NULL COMMENT '页面标题:',
`path` varchar(255) DEFAULT NULL COMMENT '路由路径:',
`position` varchar(32) DEFAULT NULL COMMENT '位置:',
`mode` varchar(32) NOT NULL DEFAULT '_blank' COMMENT '跳转方式:',
`add` tinyint(1) unsigned NOT NULL DEFAULT '1' COMMENT '是否可增加:',
`del` tinyint(1) unsigned NOT NULL DEFAULT '1' COMMENT '是否可删除:',
`set` tinyint(1) unsigned NOT NULL DEFAULT '1' COMMENT '是否可修改:',
`get` tinyint(1) unsigned NOT NULL DEFAULT '1' COMMENT '是否可查看:',
`field_add` text COMMENT '添加字段:',
`field_set` text COMMENT '修改字段:',
`field_get` text COMMENT '查询字段:',
`table_nav_name` varchar(500) DEFAULT NULL COMMENT '跨表导航名称:',
`table_nav` varchar(500) DEFAULT NULL COMMENT '跨表导航:',
`option` text COMMENT '配置:',
`create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间:',
`update_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间:',
PRIMARY KEY (`auth_id`) USING BTREE
) ENGINE=MyISAM AUTO_INCREMENT=246 DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC COMMENT='用户权限管理';
-- ----------------------------
-- Table structure for booking_management
-- ----------------------------
DROP TABLE IF EXISTS `booking_management`;
CREATE TABLE `booking_management` (
`booking_management_id` int(11) NOT NULL AUTO_INCREMENT COMMENT '预约管理ID',
`expert_users` int(11) DEFAULT '0' COMMENT '专家用户',
`expert_name` varchar(64) DEFAULT NULL COMMENT '专家姓名',
`appointment_users` int(11) DEFAULT '0' COMMENT '预约用户',
`student_name` varchar(64) DEFAULT NULL COMMENT '学生姓名',
`time_of_appointment` datetime DEFAULT NULL COMMENT '预约时间',
`appointment_notes` text COMMENT '预约备注',
`examine_state` varchar(16) NOT NULL DEFAULT '未审核' COMMENT '审核状态',
`recommend` int(11) NOT NULL DEFAULT '0' COMMENT '智能推荐',
`create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`update_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
PRIMARY KEY (`booking_management_id`)
) ENGINE=InnoDB AUTO_INCREMENT=11 DEFAULT CHARSET=utf8 COMMENT='预约管理';
-- ----------------------------
-- Table structure for classic_experiments
-- ----------------------------
DROP TABLE IF EXISTS `classic_experiments`;
CREATE TABLE `classic_experiments` (
`classic_experiments_id` int(11) NOT NULL AUTO_INCREMENT COMMENT '经典实验ID',
`experiment_name` varchar(64) DEFAULT NULL COMMENT '实验名称',
`experiment_type` varchar(64) DEFAULT NULL COMMENT '实验类型',
`cover_photo` varchar(255) DEFAULT NULL COMMENT '封面图片',
`experimental_video` varchar(255) DEFAULT NULL COMMENT '实验视频',
`release_date` date DEFAULT NULL COMMENT '发布日期',
`notes_details` text COMMENT '备注详情',
`hits` int(11) NOT NULL DEFAULT '0' COMMENT '点击数',
`praise_len` int(11) NOT NULL DEFAULT '0' COMMENT '点赞数',
`recommend` int(11) NOT NULL DEFAULT '0' COMMENT '智能推荐',
`create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`update_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
PRIMARY KEY (`classic_experiments_id`)
) ENGINE=InnoDB AUTO_INCREMENT=9 DEFAULT CHARSET=utf8 COMMENT='经典实验';
-- ----------------------------
-- Table structure for collect
-- ----------------------------
DROP TABLE IF EXISTS `collect`;
CREATE TABLE `collect` (
`collect_id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT '收藏ID:',
`user_id` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '收藏人ID:',
`source_table` varchar(255) DEFAULT NULL COMMENT '来源表:',
`source_field` varchar(255) DEFAULT NULL COMMENT '来源字段:',
`source_id` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '来源ID:',
`title` varchar(255) DEFAULT NULL COMMENT '标题:',
`img` varchar(255) DEFAULT NULL COMMENT '封面:',
`create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间:',
`update_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间:',
PRIMARY KEY (`collect_id`) USING BTREE
) ENGINE=MyISAM DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC COMMENT='收藏';
-- ----------------------------
-- Table structure for comment
-- ----------------------------
DROP TABLE IF EXISTS `comment`;
CREATE TABLE `comment` (
`comment_id` int(11) unsigned NOT NULL AUTO_INCREMENT COMMENT '评论ID:',
`user_id` int(11) unsigned NOT NULL DEFAULT '0' COMMENT '评论人ID:',
`reply_to_id` int(11) unsigned NOT NULL DEFAULT '0' COMMENT '回复评论ID:空为0',
`content` longtext COMMENT '内容:',
`nickname` varchar(255) DEFAULT NULL COMMENT '昵称:',
`avatar` varchar(255) DEFAULT NULL COMMENT '头像地址:[0,255]',
`create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间:',
`update_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间:',
`source_table` varchar(255) DEFAULT NULL COMMENT '来源表:',
`source_field` varchar(255) DEFAULT NULL COMMENT '来源字段:',
`source_id` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '来源ID:',
PRIMARY KEY (`comment_id`) USING BTREE
) ENGINE=MyISAM DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC COMMENT='评论';
-- ----------------------------
-- Table structure for exam
-- ----------------------------
DROP TABLE IF EXISTS `exam`;
CREATE TABLE `exam` (
`exam_id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT COMMENT '考试id',
`name` varchar(32) CHARACTER SET utf8mb4 NOT NULL DEFAULT '' COMMENT '考试名称:[2,32]',
`duration` int(11) DEFAULT NULL COMMENT '答题时长',
`score` double(8,2) DEFAULT NULL COMMENT '总分',
`status` varchar(10) CHARACTER SET utf8mb4 DEFAULT NULL COMMENT '状态:启用、禁用',
`create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间:',
`update_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间:',
PRIMARY KEY (`exam_id`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=latin1 ROW_FORMAT=DYNAMIC COMMENT='考试';
-- ----------------------------
-- Table structure for exam_question
-- ----------------------------
DROP TABLE IF EXISTS `exam_question`;
CREATE TABLE `exam_question` (
`exam_question_id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT,
`type` varchar(20) CHARACTER SET utf8mb4 DEFAULT NULL COMMENT '类型',
`title` varchar(255) CHARACTER SET utf8mb4 DEFAULT NULL COMMENT '题目',
`question_item` varchar(500) CHARACTER SET utf8mb4 DEFAULT NULL COMMENT '选项',
`answer` varchar(500) CHARACTER SET utf8mb4 DEFAULT NULL COMMENT '参考答案',
`score` double(8,2) DEFAULT NULL COMMENT '总分',
`question_order` int(11) DEFAULT NULL COMMENT '排序',
`exam_id` mediumint(8) DEFAULT NULL COMMENT '所属试卷',
`create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间:',
`update_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间:',
PRIMARY KEY (`exam_question_id`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=51 DEFAULT CHARSET=latin1 ROW_FORMAT=DYNAMIC COMMENT='试题';
-- ----------------------------
-- Table structure for expert_information
-- ----------------------------
DROP TABLE IF EXISTS `expert_information`;
CREATE TABLE `expert_information` (
`expert_information_id` int(11) NOT NULL AUTO_INCREMENT COMMENT '专家信息ID',
`expert_users` int(11) DEFAULT '0' COMMENT '专家用户',
`expert_name` varchar(64) DEFAULT NULL COMMENT '专家姓名',
`expert_gender` varchar(64) DEFAULT NULL COMMENT '专家性别',
`expert_age` varchar(64) DEFAULT NULL COMMENT '专家年龄',
`cover_avatar` varchar(255) DEFAULT NULL COMMENT '封面头像',
`areas_of_expertise` varchar(64) DEFAULT NULL COMMENT '擅长领域',
`expert_introduction` text COMMENT '专家简介',
`hits` int(11) NOT NULL DEFAULT '0' COMMENT '点击数',
`praise_len` int(11) NOT NULL DEFAULT '0' COMMENT '点赞数',
`recommend` int(11) NOT NULL DEFAULT '0' COMMENT '智能推荐',
`create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`update_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
PRIMARY KEY (`expert_information_id`)
) ENGINE=InnoDB AUTO_INCREMENT=9 DEFAULT CHARSET=utf8 COMMENT='专家信息';
-- ----------------------------
-- Table structure for expert_users
-- ----------------------------
DROP TABLE IF EXISTS `expert_users`;
CREATE TABLE `expert_users` (
`expert_users_id` int(11) NOT NULL AUTO_INCREMENT COMMENT '专家用户ID',
`expert_name` varchar(64) DEFAULT NULL COMMENT '专家姓名',
`expert_gender` varchar(64) DEFAULT NULL COMMENT '专家性别',
`expert_age` varchar(64) DEFAULT NULL COMMENT '专家年龄',
`examine_state` varchar(16) NOT NULL DEFAULT '已通过' COMMENT '审核状态',
`recommend` int(11) NOT NULL DEFAULT '0' COMMENT '智能推荐',
`user_id` int(11) NOT NULL DEFAULT '0' COMMENT '用户ID',
`create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`update_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
PRIMARY KEY (`expert_users_id`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8 COMMENT='专家用户';
-- ----------------------------
-- Table structure for forum
-- ----------------------------
DROP TABLE IF EXISTS `forum`;
CREATE TABLE `forum` (
`forum_id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT COMMENT '论坛id',
`display` smallint(5) unsigned NOT NULL DEFAULT '100' COMMENT '排序',
`user_id` mediumint(8) unsigned NOT NULL DEFAULT '0' COMMENT '用户ID',
`nickname` varchar(16) DEFAULT '' COMMENT '昵称:[0,16]',
`praise_len` int(10) DEFAULT '0' COMMENT '点赞数',
`hits` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '访问数',
`title` varchar(125) NOT NULL DEFAULT '' COMMENT '标题',
`keywords` varchar(125) DEFAULT NULL COMMENT '关键词',
`description` varchar(255) DEFAULT NULL COMMENT '描述',
`url` varchar(255) DEFAULT NULL COMMENT '来源地址',
`tag` varchar(255) DEFAULT NULL COMMENT '标签',
`img` text COMMENT '封面图',
`content` longtext COMMENT '正文',
`create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间:',
`update_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间:',
`avatar` varchar(255) DEFAULT NULL COMMENT '发帖人头像:',
`type` varchar(64) CHARACTER SET utf8mb4 NOT NULL DEFAULT '0' COMMENT '论坛分类:[0,1000]用来搜索指定类型的论坛帖',
PRIMARY KEY (`forum_id`) USING BTREE
) ENGINE=MyISAM AUTO_INCREMENT=5 DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC COMMENT='论坛';
-- ----------------------------
-- Table structure for forum_type
-- ----------------------------
DROP TABLE IF EXISTS `forum_type`;
CREATE TABLE `forum_type` (
`type_id` smallint(5) unsigned NOT NULL AUTO_INCREMENT COMMENT '分类ID:[0,10000]',
`name` varchar(16) NOT NULL DEFAULT '' COMMENT '分类名称:[2,16]',
`description` varchar(255) DEFAULT NULL COMMENT '描述:[0,255]描述该分类的作用',
`url` varchar(255) DEFAULT NULL COMMENT '外链地址:[0,255]如果该分类是跳转到其他网站的情况下,就在该URL上设置',
`father_id` smallint(5) unsigned NOT NULL DEFAULT '0' COMMENT '上级分类ID:[0,32767]',
`icon` varchar(255) CHARACTER SET utf8 DEFAULT NULL COMMENT '分类图标:',
`create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间:',
`update_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间:',
PRIMARY KEY (`type_id`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC COMMENT='论坛分类';
-- ----------------------------
-- Table structure for hits
-- ----------------------------
DROP TABLE IF EXISTS `hits`;
CREATE TABLE `hits` (
`hits_id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT '点赞ID:',
`user_id` int(11) unsigned NOT NULL DEFAULT '0' COMMENT '点赞人:',
`create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间:',
`update_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间:',
`source_table` varchar(255) CHARACTER SET utf8 DEFAULT NULL COMMENT '来源表:',
`source_field` varchar(255) CHARACTER SET utf8 DEFAULT NULL COMMENT '来源字段:',
`source_id` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '来源ID:',
PRIMARY KEY (`hits_id`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=21 DEFAULT CHARSET=latin1 ROW_FORMAT=DYNAMIC COMMENT='用户点击';
-- ----------------------------
-- Table structure for notice
-- ----------------------------
DROP TABLE IF EXISTS `notice`;
CREATE TABLE `notice` (
`notice_id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT COMMENT '公告id:',
`title` varchar(125) NOT NULL DEFAULT '' COMMENT '标题:',
`content` longtext COMMENT '正文:',
`create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间:',
`update_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间:',
PRIMARY KEY (`notice_id`) USING BTREE
) ENGINE=MyISAM AUTO_INCREMENT=5 DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC COMMENT='公告';
-- ----------------------------
-- Table structure for praise
-- ----------------------------
DROP TABLE IF EXISTS `praise`;
CREATE TABLE `praise` (
`praise_id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT '点赞ID:',
`user_id` int(11) unsigned NOT NULL DEFAULT '0' COMMENT '点赞人:',
`create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间:',
`update_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间:',
`source_table` varchar(255) DEFAULT NULL COMMENT '来源表:',
`source_field` varchar(255) DEFAULT NULL COMMENT '来源字段:',
`source_id` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '来源ID:',
`status` tinyint(1) NOT NULL DEFAULT '1' COMMENT '点赞状态:1为点赞,0已取消',
PRIMARY KEY (`praise_id`) USING BTREE
) ENGINE=MyISAM DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC COMMENT='点赞';
-- ----------------------------
-- Table structure for psychological_experiment
-- ----------------------------
DROP TABLE IF EXISTS `psychological_experiment`;
CREATE TABLE `psychological_experiment` (
`psychological_experiment_id` int(11) NOT NULL AUTO_INCREMENT COMMENT '心理实验ID',
`experiment_name` varchar(64) DEFAULT NULL COMMENT '实验名称',
`experiment_type` varchar(64) DEFAULT NULL COMMENT '实验类型',
`cover_photo` varchar(255) DEFAULT NULL COMMENT '封面图片',
`publish_users` int(11) DEFAULT '0' COMMENT '发布用户',
`teachers_name` varchar(64) DEFAULT NULL COMMENT '老师姓名',
`release_date` date DEFAULT NULL COMMENT '发布日期',
`experimental_details` text COMMENT '实验详情',
`hits` int(11) NOT NULL DEFAULT '0' COMMENT '点击数',
`praise_len` int(11) NOT NULL DEFAULT '0' COMMENT '点赞数',
`recommend` int(11) NOT NULL DEFAULT '0' COMMENT '智能推荐',
`create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`update_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
PRIMARY KEY (`psychological_experiment_id`)
) ENGINE=InnoDB AUTO_INCREMENT=10 DEFAULT CHARSET=utf8 COMMENT='心理实验';
-- ----------------------------
-- Table structure for psychology_teacher
-- ----------------------------
DROP TABLE IF EXISTS `psychology_teacher`;
CREATE TABLE `psychology_teacher` (
`psychology_teacher_id` int(11) NOT NULL AUTO_INCREMENT COMMENT '心理老师ID',
`teachers_name` varchar(64) DEFAULT NULL COMMENT '老师姓名',
`teacher_gender` varchar(64) DEFAULT NULL COMMENT '老师性别',
`teachers_teaching_experience` varchar(64) DEFAULT NULL COMMENT '老师教龄',
`examine_state` varchar(16) NOT NULL DEFAULT '已通过' COMMENT '审核状态',
`recommend` int(11) NOT NULL DEFAULT '0' COMMENT '智能推荐',
`user_id` int(11) NOT NULL DEFAULT '0' COMMENT '用户ID',
`create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`update_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
PRIMARY KEY (`psychology_teacher_id`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8 COMMENT='心理老师';
-- ----------------------------
-- Table structure for registration_management
-- ----------------------------
DROP TABLE IF EXISTS `registration_management`;
CREATE TABLE `registration_management` (
`registration_management_id` int(11) NOT NULL AUTO_INCREMENT COMMENT '报名管理ID',
`experiment_name` varchar(64) DEFAULT NULL COMMENT '实验名称',
`experiment_type` varchar(64) DEFAULT NULL COMMENT '实验类型',
`publish_users` int(11) DEFAULT '0' COMMENT '发布用户',
`teachers_name` varchar(64) DEFAULT NULL COMMENT '老师姓名',
`registered_users` int(11) DEFAULT '0' COMMENT '报名用户',
`student_name` varchar(64) DEFAULT NULL COMMENT '学生姓名',
`registration_date` date DEFAULT NULL COMMENT '报名日期',
`registration_notes` text COMMENT '报名备注',
`recommend` int(11) NOT NULL DEFAULT '0' COMMENT '智能推荐',
`create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`update_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
PRIMARY KEY (`registration_management_id`)
) ENGINE=InnoDB AUTO_INCREMENT=11 DEFAULT CHARSET=utf8 COMMENT='报名管理';
-- ----------------------------
-- Table structure for slides
-- ----------------------------
DROP TABLE IF EXISTS `slides`;
CREATE TABLE `slides` (
`slides_id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT '轮播图ID:',
`title` varchar(64) DEFAULT NULL COMMENT '标题:',
`content` varchar(255) DEFAULT NULL COMMENT '内容:',
`url` varchar(255) DEFAULT NULL COMMENT '链接:',
`img` varchar(255) DEFAULT NULL COMMENT '轮播图:',
`hits` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '点击量:',
`create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间:',
`update_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间:',
PRIMARY KEY (`slides_id`) USING BTREE
) ENGINE=MyISAM AUTO_INCREMENT=4 DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC COMMENT='轮播图';
-- ----------------------------
-- Table structure for student_users
-- ----------------------------
DROP TABLE IF EXISTS `student_users`;
CREATE TABLE `student_users` (
`student_users_id` int(11) NOT NULL AUTO_INCREMENT COMMENT '学生用户ID',
`student_name` varchar(64) DEFAULT NULL COMMENT '学生姓名',
`student_gender` varchar(64) DEFAULT NULL COMMENT '学生性别',
`student_age` varchar(64) DEFAULT NULL COMMENT '学生年龄',
`examine_state` varchar(16) NOT NULL DEFAULT '已通过' COMMENT '审核状态',
`recommend` int(11) NOT NULL DEFAULT '0' COMMENT '智能推荐',
`user_id` int(11) NOT NULL DEFAULT '0' COMMENT '用户ID',
`create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`update_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
PRIMARY KEY (`student_users_id`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8 COMMENT='学生用户';
-- ----------------------------
-- Table structure for upload
-- ----------------------------
DROP TABLE IF EXISTS `upload`;
CREATE TABLE `upload` (
`upload_id` int(11) NOT NULL AUTO_INCREMENT COMMENT '上传ID',
`name` varchar(64) DEFAULT NULL COMMENT '文件名',
`path` varchar(255) DEFAULT NULL COMMENT '访问路径',
`file` varchar(255) DEFAULT NULL COMMENT '文件路径',
`display` varchar(255) DEFAULT NULL COMMENT '显示顺序',
`father_id` int(11) DEFAULT '0' COMMENT '父级ID',
`dir` varchar(255) DEFAULT NULL COMMENT '文件夹',
`type` varchar(32) DEFAULT NULL COMMENT '文件类型',
PRIMARY KEY (`upload_id`) USING BTREE
) ENGINE=MyISAM AUTO_INCREMENT=2 DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC COMMENT='文件上传';
-- ----------------------------
-- Table structure for user
-- ----------------------------
DROP TABLE IF EXISTS `user`;
CREATE TABLE `user` (
`user_id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT COMMENT '用户ID:[0,8388607]用户获取其他与用户相关的数据',
`state` smallint(1) unsigned NOT NULL DEFAULT '1' COMMENT '账户状态:[0,10](1可用|2异常|3已冻结|4已注销)',
`user_group` varchar(32) DEFAULT NULL COMMENT '所在用户组:[0,32767]决定用户身份和权限',
`login_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '上次登录时间:',
`phone` varchar(11) DEFAULT NULL COMMENT '手机号码:[0,11]用户的手机号码,用于找回密码时或登录时',
`phone_state` smallint(1) unsigned NOT NULL DEFAULT '0' COMMENT '手机认证:[0,1](0未认证|1审核中|2已认证)',
`username` varchar(16) NOT NULL DEFAULT '' COMMENT '用户名:[0,16]用户登录时所用的账户名称',
`nickname` varchar(16) DEFAULT '' COMMENT '昵称:[0,16]',
`password` varchar(64) NOT NULL DEFAULT '' COMMENT '密码:[0,32]用户登录所需的密码,由6-16位数字或英文组成',
`email` varchar(64) DEFAULT '' COMMENT '邮箱:[0,64]用户的邮箱,用于找回密码时或登录时',
`email_state` smallint(1) unsigned NOT NULL DEFAULT '0' COMMENT '邮箱认证:[0,1](0未认证|1审核中|2已认证)',
`avatar` varchar(255) DEFAULT NULL COMMENT '头像地址:[0,255]',
`create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间:',
PRIMARY KEY (`user_id`) USING BTREE
) ENGINE=MyISAM AUTO_INCREMENT=5 DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC COMMENT='用户账户:用于保存用户登录信息';
-- ----------------------------
-- Table structure for user_answer
-- ----------------------------
DROP TABLE IF EXISTS `user_answer`;
CREATE TABLE `user_answer` (
`user_answer_id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT,
`user_id` mediumint(8) NOT NULL COMMENT '用户ID:[0,8388607]用户获取其他与用户相关的数据',
`exam_id` mediumint(8) NOT NULL DEFAULT '0' COMMENT '考试id',
`score` double(8,2) DEFAULT '0.00' COMMENT '分数',
`answers` text CHARACTER SET utf8mb4 COMMENT '答案',
`score_detail` text CHARACTER SET utf8mb4 COMMENT '评分详情',
`objective_score` double(8,2) DEFAULT '0.00' COMMENT '客观题得分',
`subjective_score` double(8,2) DEFAULT '0.00' COMMENT '主观题得分',
`score_state` tinyint(2) DEFAULT '0' COMMENT '评分状态',
`nickname` varchar(255) CHARACTER SET utf8mb4 DEFAULT NULL COMMENT '提交人',
`create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间:',
`update_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间:',
PRIMARY KEY (`user_answer_id`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=latin1 ROW_FORMAT=DYNAMIC COMMENT='用户答题';
-- ----------------------------
-- Table structure for user_group
-- ----------------------------
DROP TABLE IF EXISTS `user_group`;
CREATE TABLE `user_group` (
`group_id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT COMMENT '用户组ID:[0,8388607]',
`display` smallint(4) unsigned NOT NULL DEFAULT '100' COMMENT '显示顺序:[0,1000]',
`name` varchar(16) NOT NULL DEFAULT '' COMMENT '名称:[0,16]',
`description` varchar(255) DEFAULT NULL COMMENT '描述:[0,255]描述该用户组的特点或权限范围',
`source_table` varchar(255) DEFAULT NULL COMMENT '来源表:',
`source_field` varchar(255) DEFAULT NULL COMMENT '来源字段:',
`source_id` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '来源ID:',
`register` smallint(1) unsigned DEFAULT '0' COMMENT '注册位置:',
`create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间:',
`update_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间:',
PRIMARY KEY (`group_id`) USING BTREE
) ENGINE=MyISAM AUTO_INCREMENT=6 DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC COMMENT='用户组:用于用户前端身份和鉴权';
五、登录代码:
/**
* 用户账户:用于保存用户登录信息(User)表控制层
*/
@Slf4j
@RestController
@RequestMapping("user")
public class UserController extends BaseController<User, UserService> {
/**
* 服务对象
*/
@Autowired
public UserController(UserService service) {
setService(service);
}
/**
* Token服务
*/
@Autowired
private AccessTokenService tokenService;
@Autowired
private UserGroupService userGroupService;
/**
* 注册
* @param user
* @return
*/
@PostMapping("register")
public Map<String, Object> signUp(@RequestBody User user) {
// 查询用户
Map<String, String> query = new HashMap<>();
query.put("username",user.getUsername());
List list = service.select(query, new HashMap<>()).getResultList();
if (list.size()>0){
return error(30000, "用户已存在");
}
user.setUserId(null);
user.setPassword(service.encryption(user.getPassword()));
service.save(user);
return success(1);
}
/**
* 找回密码
* @param form
* @return
*/
@PostMapping("forget_password")
public Map<String, Object> forgetPassword(@RequestBody User form,HttpServletRequest request) {
JSONObject ret = new JSONObject();
String username = form.getUsername();
String code = form.getCode();
String password = form.getPassword();
// 判断条件
if(code == null || code.length() == 0){
return error(30000, "验证码不能为空");
}
if(username == null || username.length() == 0){
return error(30000, "用户名不能为空");
}
if(password == null || password.length() == 0){
return error(30000, "密码不能为空");
}
// 查询用户
Map<String, String> query = new HashMap<>();
query.put("username",username);
Query select = service.select(query, service.readConfig(request));
List list = select.getResultList();
if (list.size() > 0) {
User o = (User) list.get(0);
JSONObject query2 = new JSONObject();
JSONObject form2 = new JSONObject();
// 修改用户密码
query2.put("user_id",o.getUserId());
form2.put("password",service.encryption(password));
service.update(query, service.readConfig(request), form2);
return success(1);
}
return error(70000,"用户不存在");
}
/**
* 登录
* @param data
* @param httpServletRequest
* @return
*/
@PostMapping("login")
public Map<String, Object> login(@RequestBody Map<String, String> data, HttpServletRequest httpServletRequest) {
log.info("[执行登录接口]");
String username = data.get("username");
String email = data.get("email");
String phone = data.get("phone");
String password = data.get("password");
List resultList = null;
Map<String, String> map = new HashMap<>();
if(username != null && "".equals(username) == false){
map.put("username", username);
resultList = service.select(map, new HashMap<>()).getResultList();
}
else if(email != null && "".equals(email) == false){
map.put("email", email);
resultList = service.select(map, new HashMap<>()).getResultList();
}
else if(phone != null && "".equals(phone) == false){
map.put("phone", phone);
resultList = service.select(map, new HashMap<>()).getResultList();
}else{
return error(30000, "账号或密码不能为空");
}
if (resultList == null || password == null) {
return error(30000, "账号或密码不能为空");
}
//判断是否有这个用户
if (resultList.size()<=0){
return error(30000,"用户不存在");
}
User byUsername = (User) resultList.get(0);
Map<String, String> groupMap = new HashMap<>();
groupMap.put("name",byUsername.getUserGroup());
List groupList = userGroupService.select(groupMap, new HashMap<>()).getResultList();
if (groupList.size()<1){
return error(30000,"用户组不存在");
}
UserGroup userGroup = (UserGroup) groupList.get(0);
//查询用户审核状态
if (!StringUtils.isEmpty(userGroup.getSourceTable())){
String sql = "select examine_state from "+ userGroup.getSourceTable() +" WHERE user_id = " + byUsername.getUserId();
String res = String.valueOf(service.runCountSql(sql).getSingleResult());
if (res==null){
return error(30000,"用户不存在");
}
if (!res.equals("已通过")){
return error(30000,"该用户审核未通过");
}
}
//查询用户状态
if (byUsername.getState()!=1){
return error(30000,"用户非可用状态,不能登录");
}
String md5password = service.encryption(password);
if (byUsername.getPassword().equals(md5password)) {
// 存储Token到数据库
AccessToken accessToken = new AccessToken();
accessToken.setToken(UUID.randomUUID().toString().replaceAll("-", ""));
accessToken.setUser_id(byUsername.getUserId());
tokenService.save(accessToken);
// 返回用户信息
JSONObject user = JSONObject.parseObject(JSONObject.toJSONString(byUsername));
user.put("token", accessToken.getToken());
JSONObject ret = new JSONObject();
ret.put("obj",user);
return success(ret);
} else {
return error(30000, "账号或密码不正确");
}
}
/**
* 修改密码
* @param data
* @param request
* @return
*/
@PostMapping("change_password")
public Map<String, Object> change_password(@RequestBody Map<String, String> data, HttpServletRequest request){
// 根据Token获取UserId
String token = request.getHeader("x-auth-token");
Integer userId = tokenGetUserId(token);
// 根据UserId和旧密码获取用户
Map<String, String> query = new HashMap<>();
String o_password = data.get("o_password");
query.put("user_id" ,String.valueOf(userId));
query.put("password" ,service.encryption(o_password));
Query ret = service.count(query, service.readConfig(request));
List list = ret.getResultList();
Object s = list.get(0);
int count = Integer.parseInt(list.get(0).toString());
if(count > 0){
// 修改密码
Map<String,Object> form = new HashMap<>();
form.put("password",service.encryption(data.get("password")));
service.update(query,service.readConfig(request),form);
return success(1);
}
return error(10000,"密码修改失败!");
}
/**
* 登录态
* @param request
* @return
*/
@GetMapping("state")
public Map<String, Object> state(HttpServletRequest request) {
JSONObject ret = new JSONObject();
// 获取状态
String token = request.getHeader("x-auth-token");
// 根据登录态获取用户ID
Integer userId = tokenGetUserId(token);
log.info("[返回userId] {}",userId);
if(userId == null || userId == 0){
return error(10000,"用户未登录!");
}
// 根据用户ID获取用户
Map<String,String> query = new HashMap<>();
query.put("user_id" ,String.valueOf(userId));
// 根据用户ID获取
Query select = service.select(query,service.readConfig(request));
List resultList = select.getResultList();
if (resultList.size() > 0) {
JSONObject user = JSONObject.parseObject(JSONObject.toJSONString(resultList.get(0)));
user.put("token",token);
ret.put("obj",user);
return success(ret);
} else {
return error(10000,"用户未登录!");
}
}
/**
* 登录态
* @param request
* @return
*/
@GetMapping("quit")
public Map<String, Object> quit(HttpServletRequest request) {
String token = request.getHeader("x-auth-token");
JSONObject ret = new JSONObject();
Map<String, String> query = new HashMap<>(16);
query.put("token", token);
try{
tokenService.delete(query,service.readConfig(request));
}catch (Exception e){
e.printStackTrace();
}
return success("退出登录成功!");
}
/**
* 获取登录用户ID
* @param token
* @return
*/
public Integer tokenGetUserId(String token) {
log.info("[获取的token] {}",token);
// 根据登录态获取用户ID
if(token == null || "".equals(token)){
return 0;
}
Map<String, String> query = new HashMap<>(16);
query.put("token", token);
AccessToken byToken = tokenService.findOne(query);
if(byToken == null){
return 0;
}
return byToken.getUser_id();
}
/**
* 重写add
* @return
*/
@PostMapping("/add")
@Transactional
public Map<String, Object> add(HttpServletRequest request) throws IOException {
Map<String,Object> map = service.readBody(request.getReader());
map.put("password",service.encryption(String.valueOf(map.get("password"))));
service.insert(map);
return success(1);
}
}
六、其他案例:
七、源码获取:
大家点赞、收藏、关注、评论啦 、查看👇🏻获取联系方式👇🏻
精彩专栏推荐订阅:在下方专栏👇🏻
2022-2024年最全的计算机软件毕业设计选题大全:1000个热门选题推荐✅
Java项目精品实战案例《100套》
Java微信小程序项目实战《100套》