知识目标
-
了解架构,能够说出常用的架构及其优缺点
-
熟悉项目的技术栈,能够说出每个技术栈的用途
-
了解项目的功能结构,能够说出医疗健康项目的功能组成
-
掌握医疗健康项目的环境搭建,能够根据系统模块的划分搭建医疗健康项目中的父工程和子模块
随着生活水平的提高,关注自身健康的人群越来越多,很多健康管理机构通过引入健康管理系统提高健康服务水平,提升体检用户满意度。本书讲解的医疗健康管理系统(后续简称医疗健康)是一款应用于健康管理机构的业务系统,该系统基于Spring+Spring MVC+MyBatis框架(后续简称SSM框架)开发完成。 本模块将针对医疗健康的项目背景、项目功能、项目架构、数据库设计及项目环境搭建等内容进行详细讲解。
1-1 初识项目
随着国民对健康重视程度的逐步提高,预防胜于治疗的健康观念也在逐步加深。健康管理机构迫切需要高质量信息化系统的支持。 医疗健康是一款应用于健康管理机构的业务系统,一方面用于实现健康管理机构工作内容可视化、会员管理专业化,从而提高健康管理师的工作效率,增强管理者对健康管理机构运营情况的了解;另一方面用于实现体检用户的体检预约、健康咨询等服务。
管理端供系统管理员、健康管理师等健康管理机构的内部人员使用。用户端供给体检用户使用。
管理端
预约管理模块-检查项管理
检查项是用户在体检过程中具体要检查的项目,例如身高、体重、收缩压等。检查项管理包括检查项的新增、查询、编辑、删除功能。
预约管理模块-检查组管理
由于检查项数量较多,为了方便、快速地筛选出相同类别的检查项,通常会将相同类别的检查项放到一个组别进行管理。检查组管理包括检查组的新增、查询、编辑、删除功能。
预约管理模块-套餐管理
套餐是健康管理机构根据用户群体需求专门定制的一套体检流程,实质是检查组的集合。套餐管理包括套餐的新增、查询、编辑、删除功能。
预约管理模块-预约设置
预约设置是指健康管理机构对每天体检预约人数的设置。实现预约设置有两种方式,一种是批量导入预约设置信息,另一种是基于日历实现预约设置。
统计分析模块-会员数据量统计
会员数据量统计用于统计最近一年每个月的会员数量,并通过折线图的方式展示出每个月会员数量的变化趋势。
统计分析模块-套餐预约占比统计
套餐预约占比统计是指对健康管理机构各个套餐预约占比情况的统计,统计结果使用饼图展示。
统计分析模块-运营数据统计
运营数据统计是指对会员数据、预约到诊数据、热门套餐等运营相关数据的统计。统计结果默认展示在页面中,运营数据可以选择使用 Excel 或 PDF 格式导出。
用户端
在线预约模块-用户登录
用户登录是指体检用户使用手机号和验证码登录。医疗健康的用户端,其中验证码通过发送手机短信的方式进行获取。
在线预约模块-套餐列表展示
套餐列表页面用于展示系统所有的套餐,套餐列表中每个套餐展示的信息包括图片、套餐名称、套餐介绍、适用性别和适用年龄。
在线预约模块-套餐详情展示
套餐详情页面用于展示某一个套餐的具体信息,包括图片、套餐名称、套餐介绍、适用性别、适用年龄、套餐中的检查组信息和检查组中的检查项信息等。
在线预约模块-体检预约
在体检预约页面中录入体检人信息并进行体检预约。体检人信息包括姓名、性别、手机号、身份证号、预约体检的日期等。为了保证用户输入的手机号是正确的,需要通过短信验证码进行验证。
1-2 项目架构设计
架构,又名软件架构,是有关软件整体结构与组件的抽象描述,用于指导大型软件系统各个方面的设计。 Java企业级的应用根据业务的复杂程度,通常使用的系统架构有单体应用架构、垂直应用架构、面向服务的架构(Service-Oriented Architecture,SOA)、微服务架构等。 项目架构的选择在项目准备过程中占据着重要的位置,除此之外技术架构的选择也是项目准备过程中必不可少的一个环节,接下来将针对项目架构和技术架构的选择进行详细讲解。
单体应用架构开发的进销存系统
优点:项目架构简单,技术结构单一,前期用人成本低,适合小型系统的开发。 缺点:随着业务复杂度的增加,功能越来越多,代码量越来越大,会导致代码可读性、可维护性和可扩展性下降。 由于系统过大且关联较多,任何一个 Bug都有可能导致整个系统宕机。
垂直应用架构开发的进销存系统
优点:通过垂直拆分实现流量分担,减轻服务器压力;可以针对不同的应用进行优化,方便水平扩展,容错率高。 缺点:当垂直应用越多,应用之间可能发生相互调用,不同应用之间可能出现数据、代码、功能冗余。
SOA开发的进销存系统
优点:将公共的功能抽取为服务,提高开发效率;各个服务之间耦合度低,可读性和可维护性比较好。 缺点:抽取服务的粒度较大,服务提供方与调用方接口耦合度较高。
微服务架构开发的进销存系统
优点:开发模式更加灵活;微服务的独立打包、部署和升级,使小团队的交付周期将缩短,运维成本下降。 缺点:对技术要求较高;微服务过多会造成服务管理成本提高,不利于系统维护,服务拆分粒度过细也会导致 系统变得凌乱和笨重。
医疗健康的技术架构
在开发时通常会根据不同的需求将项目拆分为多个层次处理,而不同的需求由其相对应的技术栈提供解决方案。
1-3 数据库设计
在实际开发应用程序时,会根据应用程序的需求及其实现功能来进行数据库设计,数据库设计的合理性将直接影响应用程序的性能和可扩展性。本任务对医疗健康数据库设计中的数据表结构设计和数据表关系设计进行详细讲解。
数据表结构设计
在开发过程中,通常使用实体对象来操作数据,而存储数据时,需要把实体对象中的数据存放到数据表,也就是说实体对象中的每个属性对应数据表中的一个字段。因此可以根据实体对象来设计数据表结构。 医疗健康的实体对象包括检查项实体、检查组实体、套餐实体、用户实体、预约设置实体、菜单实体、权限实体、角色实体、会员实体和体检预约信息实体。
按照检查项实体中的属性设计检查项表的表结构,检查项表用于保存体检检查项信息。
字段名 | 数据类型 | 是否主键 | 描述 |
---|---|---|---|
id | int(11) | 是 | 主键,自动增长 |
code | varchar(16) | 否 | 检查项编码 |
name | varchar(32) | 否 | 检查项名称 |
sex | char(1) | 否 | 适用性别,0表示不限,1表示男,2表示女 |
age | varchar(32) | 否 | 适用年龄(范围),例如:23~35 |
price | float | 否 | 价格 |
type | char(1) | 否 | 检查项类型,1表示检查,2表示检验 |
attention | varchar(128) | 否 | 注意事项 |
remark | varchar(128) | 否 | 检查项说明 |
检查项表(t_checkitem)
按照检查组实体中的属性设计检查组表的表结构。检查组表用于保存与检查组相关的信息。
字段名 | 数据类型 | 是否主键 | 描述 |
---|---|---|---|
id | int(11) | 是 | 主键,自动增长 |
code | varchar(32) | 否 | 检查组编码 |
name | varchar(32) | 否 | 检查组名称 |
helpCode | varchar(32) | 否 | 助记码 |
sex | char(1) | 否 | 适用性别,0表示不限,1表示男,2表示女 |
remark | varchar(128) | 否 | 检查组说明 |
attention | varchar(128) | 否 | 注意事项 |
检查组表(t_checkgroup)
按照套餐实体中的属性设计套餐表的表结构。套餐表用于保存与体检套餐相关的信息。
字段名 | 数据类型 | 是否主键 | 描述 |
---|---|---|---|
id | int(11) | 是 | 主键,自动增长 |
name | varchar(128) | 否 | 套餐名称 |
code | varchar(8) | 否 | 套餐编码 |
helpCode | varchar(16) | 否 | 助记码 |
sex | char(1) | 否 | 适用性别,0表示不限,1表示男,2表示女 |
age | varchar(32) | 否 | 适用年龄范围,例如23~35 |
price | float | 否 | 价格 |
remark | varchar(128) | 否 | 套餐说明 |
attention | varchar(128) | 否 | 注意事项 |
img | varchar(128) | 否 | 套餐对应的图片存储路径 |
套餐表(t_setmeal)
按照预约设置实体中的属性设计预约设置表的表结构。预约设置表用于保存每天的预约人数信息。
字段名 | 数据类型 | 是否主键 | 描述 |
---|---|---|---|
id | int(11) | 是 | 主键,自动增长 |
orderDate | date | 否 | 约预日期 |
number | int(11) | 否 | 可预约人数 |
reservations | int(11) | 否 | 已预约人数 |
预约设置表(t_ordersetting)
按照用户实体中的属性设计用户表的表结构。用户表用于保存管理端的用户信息。
字段名 | 数据类型 | 是否主键 | 描述 |
---|---|---|---|
id | int(11) | 是 | 主键,自动增长 |
birthday | date | 否 | 生日 |
gender | varchar(1) | 否 | 性别,1表示男,2表示女 |
username | varchar(32) | 否 | 用户名 |
password | varchar(256) | 否 | 密码 |
remark | varchar(32) | 否 | 用户说明 |
station | varchar(1) | 否 | 状态 |
telephone | varchar(11) | 否 | 联系电话 |
用户表(t_user)
按照菜单实体中的属性设计菜单表的表结构。菜单表保存系统的菜单信息,菜单在页面导航栏中使用。
字段名 | 数据类型 | 是否主键 | 描述 |
---|---|---|---|
id | int(11) | 是 | 主键,自动增长 |
name | varchar(128) | 否 | 菜单名称 |
linkUrl | varchar(128) | 否 | 访问路径 |
path | varchar(128) | 否 | 菜单项所对应的路由路径 |
priority | int(11) | 否 | 优先级,用于排序 |
icon | varchar(64) | 否 | 菜单的图标样式 |
description | varchar(128) | 否 | 菜单描述 |
parentMenuId | int(11) | 否 | 父菜单id |
level | int(11) | 否 | 菜单级别 |
菜单表(t_menu)
按照权限实体中的属性设计权限表的表结构。权限表用于保存权限控制信息,为系统的所有功能设置访问权限。
字段名 | 数据类型 | 是否主键 | 描述 |
---|---|---|---|
id | int(11) | 是 | 主键,自动增长 |
name | varchar(32) | 否 | 权限名称 |
keyword | varchar(64) | 否 | 权限关键字,用于权限控制 |
description | varchar(128) | 否 | 权限描述 |
权限表(t_permission)
按照角色实体中的属性设计角色表的表结构。角色表用于保存用户角色信息。
字段名 | 数据类型 | 是否主键 | 描述 |
---|---|---|---|
id | int(11) | 是 | 主键,自动增长 |
name | varchar(32) | 否 | 角色名称 |
keyword | varchar(64) | 否 | 角色关键字,用于权限控制 |
description | varchar(128) | 否 | 角色描述 |
角色表(t_role)
按照会员实体中的属性设计会员表的表结构,会员表用于保存注册会员信息。
字段名 | 数据类型 | 是否主键 | 描述 |
---|---|---|---|
id | int(11) | 是 | 主键,自动增长 |
fileNumber | varchar(32) | 否 | 会员档案号 |
name | varchar(32) | 否 | 姓名 |
sex | varchar(8) | 否 | 性别,1表示男,2表示女 |
idCard | varchar(18) | 否 | 身份证号 |
phoneNumber | varchar(11) | 否 | 手机号 |
regTime | date | 否 | 注册时间 |
password | varchar(32) | 否 | 登录密码 |
varchar(32) | 否 | 邮箱 | |
birthday | date | 否 | 出生日期 |
remark | varchar(128) | 否 | 会员信息说明 |
会员表(t_member)
按照体检预约实体中的属性设计体检预约信息表的表结构。体检预约信息表用于保存会员进行体检预约时的预约信息。
字段名 | 数据类型 | 是否主键 | 描述 |
---|---|---|---|
id | int(11) | 是 | 主键,自动增长 |
member_id | int(11) | 否 | 会员id |
orderDate | date | 否 | 预约日期 |
orderType | varchar(8) | 否 | 约预类型,如电话预约、客户端预约 |
orderStatus | varchar(8) | 否 | 预约状态(是否到诊) |
setmeal_id | int(11) | 否 | 套餐id |
体检预约信息表(t_order)
数据表关系设计
1-4 项目环境搭建
现实生活中,建造房屋的第一步是打地基,只有地基夯实,才能建造出稳固的房屋。同样,项目开发前需先将项目环境搭建完善,才能保证后续开发工作顺利展开。本任务将从开发环境介绍、项目结构设计、搭建 Maven 工程和导入准备资源这几方面讲解项目环境的搭建工作。
项目开发环境介绍
项目结构设计
-
health_parent:父工程,统一管理依赖的版本,同时聚合其他子模块便于统一执行Maven命令,打包方式为POM。
-
health_common:用于存放通用组件,例如工具类、实体类、返回结果实体类和常量类等,打包方式为JAR。
-
health_interface:用于存放服务接口,为了便于管理打包方式为JAR。
-
health_service_provider:Dubbo服务提供方,打包方式需要为WAR。
-
health_backend:医疗健康管理端,Dubbo服务消费方,打包方式为WAR。
-
health_mobile:医疗健康用户端,Dubbo服务消费方,打包方式为WAR。
搭建 Maven 工程
1.在IDEA中创建一个名称为health_parent的Maven工程,打包方式为POM,并在工程的pom.xml中引入项目所需的依赖。
2.创建名称为health_common的子模块,打包方式为JAR。 com.itheima.constant包:存放消息类。 com.itheima.entity包:存放查询条件与返回结果实体类。 com.itheima.pojo包:存放实体类。 com.itheima.utils包:存放工具类。
3.创建名称为health_interface的子模块,打包方式为JAR。com.itheima.service:存放项目服务接口文件。
4.创建名称为health_service_provider的子模块,打包方式为WAR。 com.itheima.dao包:存放Dao接口,操作数据库。 com.itheima.service.impl包:存放管理端和用户端服务接口的实现类。 log4j.properties:配置日志输出的信息。 SqlMapConfig.xml:MyBatis的核心配置文件。 spring-tx.xml:配置与事务管理相关的信息。 spring-service.xml:配置与Spring相关 的信息。
5.创建名称为health_backend的子模块,打包方式为WAR。 com.itheima.controller包:存放管理端控制器类。 com.itheima.security包:存放实现权限的类。 log4j.properties:配置日志输出的信息。 springmvc.xml:配置fastjson转换器、指定应用名称、指定服务注册中心地址、设置包扫描等。
6.创建名称为health_mobile的子模块,打包方式为WAR。 com.itheima.controller:存放用户端控制器类。 log4j.properties:配置日志输出的信息。 springmvc.xml:配置FastJson转换器、Dubbo、包扫描等。
导入准备资源
数据库资源数据
/*
SQLyog Ultimate v10.42
MySQL - 5.5.19 : Database - health
*********************************************************************
*/
/*!40101 SET NAMES utf8 */;
/*!40101 SET SQL_MODE=''*/;
/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/`health` /*!40100 DEFAULT CHARACTER SET utf8 COLLATE utf8_bin */;
USE `health`;
/*Table structure for table `t_checkgroup` */
DROP TABLE IF EXISTS `t_checkgroup`;
CREATE TABLE `t_checkgroup` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`code` varchar(32) DEFAULT NULL,
`name` varchar(32) DEFAULT NULL,
`helpCode` varchar(32) DEFAULT NULL,
`sex` char(1) DEFAULT NULL,
`remark` varchar(128) DEFAULT NULL,
`attention` varchar(128) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
/*Data for the table `t_checkgroup` */
/*Table structure for table `t_checkitem` */
DROP TABLE IF EXISTS `t_checkitem`;
CREATE TABLE `t_checkitem` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`code` varchar(16) DEFAULT NULL,
`name` varchar(32) DEFAULT NULL,
`sex` char(1) DEFAULT NULL,
`age` varchar(32) DEFAULT NULL,
`price` float DEFAULT NULL,
`type` char(1) DEFAULT NULL COMMENT '查检项类型,分为检查和检验两种',
`attention` varchar(128) DEFAULT NULL,
`remark` varchar(128) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
/*Data for the table `t_checkitem` */
/*Table structure for table `t_member` */
DROP TABLE IF EXISTS `t_member`;
CREATE TABLE `t_member` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`fileNumber` varchar(32) DEFAULT NULL,
`name` varchar(32) DEFAULT NULL,
`sex` varchar(8) DEFAULT NULL,
`idCard` varchar(18) DEFAULT NULL,
`phoneNumber` varchar(11) DEFAULT NULL,
`regTime` date DEFAULT NULL,
`password` varchar(32) DEFAULT NULL,
`email` varchar(32) DEFAULT NULL,
`birthday` date DEFAULT NULL,
`remark` varchar(128) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=11 DEFAULT CHARSET=utf8;
/*Data for the table `t_member` */
insert into `t_member`(`id`,`fileNumber`,`name`,`sex`,`idCard`,`phoneNumber`,`regTime`,`password`,`email`,`birthday`,`remark`) values (1,NULL,'刘一','1','123456789000999999','18511279942','2021-09-08',NULL,NULL,NULL,NULL),(2,NULL,'陈二','1','132333333333333','13412345678','2021-09-11',NULL,NULL,NULL,NULL),(3,NULL,'张三',NULL,NULL,'18511279943','2019-03-13',NULL,NULL,NULL,NULL),(4,NULL,'李四',NULL,NULL,NULL,'2021-09-06',NULL,NULL,NULL,NULL),(5,NULL,'王五',NULL,NULL,NULL,'2021-09-04',NULL,NULL,NULL,NULL),(6,NULL,'赵六',NULL,NULL,NULL,'2021-09-06',NULL,NULL,NULL,NULL),(7,NULL,'孙七',NULL,NULL,NULL,'2021-09-10',NULL,NULL,NULL,NULL),(8,NULL,'周八',NULL,NULL,NULL,'2021-09-01',NULL,NULL,NULL,NULL),(9,NULL,'吴九',NULL,NULL,NULL,'2021-09-02',NULL,NULL,NULL,NULL),(10,NULL,'郑十',NULL,NULL,NULL,'2021-09-01',NULL,NULL,NULL,NULL);
/*Table structure for table `t_menu` */
DROP TABLE IF EXISTS `t_menu`;
CREATE TABLE `t_menu` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(128) DEFAULT NULL,
`linkUrl` varchar(128) DEFAULT NULL,
`path` varchar(128) DEFAULT NULL,
`priority` int(11) DEFAULT NULL,
`icon` varchar(64) DEFAULT NULL,
`description` varchar(128) DEFAULT NULL,
`parentMenuId` int(11) DEFAULT NULL,
`level` int(11) DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `FK_Reference_13` (`parentMenuId`),
CONSTRAINT `FK_Reference_13` FOREIGN KEY (`parentMenuId`) REFERENCES `t_menu` (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=22 DEFAULT CHARSET=utf8;
/*Data for the table `t_menu` */
insert into `t_menu`(`id`,`name`,`linkUrl`,`path`,`priority`,`icon`,`description`,`parentMenuId`,`level`) values (1,'会员管理',NULL,'2',1,'fa-user-md',NULL,NULL,1),(2,'会员档案','member.html','/2-1',1,NULL,NULL,1,2),(3,'体检上传',NULL,'/2-2',2,NULL,NULL,1,2),(4,'会员统计',NULL,'/2-3',3,NULL,NULL,1,2),(5,'预约管理',NULL,'3',2,'fa-tty',NULL,NULL,1),(6,'预约列表','ordersettinglist.html','/3-1',1,NULL,NULL,5,2),(7,'预约设置','ordersetting.html','/3-2',2,NULL,NULL,5,2),(8,'套餐管理','setmeal.html','/3-3',3,NULL,NULL,5,2),(9,'检查组管理','checkgroup.html','/3-4',4,NULL,NULL,5,2),(10,'检查项管理','checkitem.html','/3-5',5,NULL,NULL,5,2),(11,'健康评估',NULL,'4',3,'fa-stethoscope',NULL,NULL,1),(12,'中医体质辨识',NULL,'/4-1',1,NULL,NULL,11,2),(13,'统计分析',NULL,'5',4,'fa-heartbeat',NULL,NULL,1),(14,'会员数量','report_member.html','/5-1',1,NULL,NULL,13,2),(15,'系统设置',NULL,'6',5,'fa-users',NULL,NULL,1),(16,'菜单管理','menu.html','/6-1',1,NULL,NULL,15,2),(17,'权限管理','permission.html','/6-2',2,NULL,NULL,15,2),(18,'角色管理','role.html','/6-3',3,NULL,NULL,15,2),(19,'用户管理','user.html','/6-4',4,NULL,NULL,15,2),(20,'套餐占比','report_setmeal.html','/5-2',2,NULL,NULL,13,2),(21,'运营数据','report_business.html','/5-3',3,NULL,NULL,13,2);
/*Table structure for table `t_ordersetting` */
DROP TABLE IF EXISTS `t_ordersetting`;
CREATE TABLE `t_ordersetting` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`orderDate` date DEFAULT NULL COMMENT '约预日期',
`number` int(11) DEFAULT NULL COMMENT '可预约人数',
`reservations` int(11) DEFAULT NULL COMMENT '已预约人数',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
/*Data for the table `t_ordersetting` */
/*Table structure for table `t_permission` */
DROP TABLE IF EXISTS `t_permission`;
CREATE TABLE `t_permission` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(32) DEFAULT NULL,
`keyword` varchar(64) DEFAULT NULL,
`description` varchar(128) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=27 DEFAULT CHARSET=utf8;
/*Data for the table `t_permission` */
insert into `t_permission`(`id`,`name`,`keyword`,`description`) values (1,'新增检查项','CHECKITEM_ADD',NULL),(2,'删除检查项','CHECKITEM_DELETE',NULL),(3,'编辑检查项','CHECKITEM_EDIT',NULL),(4,'查询检查项','CHECKITEM_QUERY',NULL),(5,'新增检查组','CHECKGROUP_ADD',NULL),(6,'删除检查组','CHECKGROUP_DELETE',NULL),(7,'编辑检查组','CHECKGROUP_EDIT',NULL),(8,'查询检查组','CHECKGROUP_QUERY',NULL),(9,'新增套餐','SETMEAL_ADD',NULL),(10,'删除套餐','SETMEAL_DELETE',NULL),(11,'编辑套餐','SETMEAL_EDIT',NULL),(12,'查询套餐','SETMEAL_QUERY',NULL),(13,'预约设置','ORDERSETTING',NULL),(14,'查看统计报表','REPORT_VIEW',NULL),(15,'新增菜单','MENU_ADD',NULL),(16,'删除菜单','MENU_DELETE',NULL),(17,'编辑菜单','MENU_EDIT',NULL),(18,'查询菜单','MENU_QUERY',NULL),(19,'新增角色','ROLE_ADD',NULL),(20,'删除角色','ROLE_DELETE',NULL),(21,'编辑角色','ROLE_EDIT',NULL),(22,'查询角色','ROLE_QUERY',NULL),(23,'新增用户','USER_ADD',NULL),(24,'删除用户','USER_DELETE',NULL),(25,'编辑用户','USER_EDIT',NULL),(26,'查询用户','USER_QUERY',NULL);
/*Table structure for table `t_role` */
DROP TABLE IF EXISTS `t_role`;
CREATE TABLE `t_role` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(32) DEFAULT NULL,
`keyword` varchar(64) DEFAULT NULL,
`description` varchar(128) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8;
/*Data for the table `t_role` */
insert into `t_role`(`id`,`name`,`keyword`,`description`) values (1,'系统管理员','ROLE_ADMIN',NULL),(2,'健康管理师','ROLE_HEALTH_MANAGER',NULL);
/*Table structure for table `t_role_menu` */
DROP TABLE IF EXISTS `t_role_menu`;
CREATE TABLE `t_role_menu` (
`role_id` int(11) NOT NULL,
`menu_id` int(11) NOT NULL,
PRIMARY KEY (`role_id`,`menu_id`),
KEY `FK_Reference_10` (`menu_id`),
CONSTRAINT `FK_Reference_10` FOREIGN KEY (`menu_id`) REFERENCES `t_menu` (`id`),
CONSTRAINT `FK_Reference_9` FOREIGN KEY (`role_id`) REFERENCES `t_role` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
/*Data for the table `t_role_menu` */
insert into `t_role_menu`(`role_id`,`menu_id`) values (1,1),(2,1),(1,2),(2,2),(1,3),(2,3),(1,4),(2,4),(1,5),(1,6),(1,7),(1,8),(1,9),(1,10),(1,11),(1,12),(1,13),(1,14),(1,15),(1,16),(1,17),(1,18),(1,19),(1,20),(1,21);
/*Table structure for table `t_role_permission` */
DROP TABLE IF EXISTS `t_role_permission`;
CREATE TABLE `t_role_permission` (
`role_id` int(11) NOT NULL,
`permission_id` int(11) NOT NULL,
PRIMARY KEY (`role_id`,`permission_id`),
KEY `FK_Reference_12` (`permission_id`),
CONSTRAINT `FK_Reference_11` FOREIGN KEY (`role_id`) REFERENCES `t_role` (`id`),
CONSTRAINT `FK_Reference_12` FOREIGN KEY (`permission_id`) REFERENCES `t_permission` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
/*Data for the table `t_role_permission` */
insert into `t_role_permission`(`role_id`,`permission_id`) values (1,1),(2,1),(1,2),(1,3),(2,3),(1,4),(2,4),(1,5),(2,5),(1,6),(2,6),(1,7),(2,7),(1,8),(2,8),(1,9),(2,9),(1,10),(2,10),(1,11),(2,11),(1,12),(2,12),(1,13),(2,13),(1,14),(2,14),(1,15),(1,16),(1,17),(1,18),(1,19),(1,20),(1,21),(1,22),(1,23),(1,24),(1,25),(1,26);
/*Table structure for table `t_setmeal` */
DROP TABLE IF EXISTS `t_setmeal`;
CREATE TABLE `t_setmeal` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(128) DEFAULT NULL,
`code` varchar(8) DEFAULT NULL,
`helpCode` varchar(16) DEFAULT NULL,
`sex` char(1) DEFAULT NULL,
`age` varchar(32) DEFAULT NULL,
`price` float DEFAULT NULL,
`remark` varchar(128) DEFAULT NULL,
`attention` varchar(128) DEFAULT NULL,
`img` varchar(128) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
/*Data for the table `t_setmeal` */
/*Table structure for table `t_setmeal_checkgroup` */
DROP TABLE IF EXISTS `t_setmeal_checkgroup`;
CREATE TABLE `t_setmeal_checkgroup` (
`setmeal_id` int(11) NOT NULL DEFAULT '0',
`checkgroup_id` int(11) NOT NULL DEFAULT '0',
PRIMARY KEY (`setmeal_id`,`checkgroup_id`),
KEY `checkgroup_key` (`checkgroup_id`),
CONSTRAINT `checkgroup_key` FOREIGN KEY (`checkgroup_id`) REFERENCES `t_checkgroup` (`id`),
CONSTRAINT `setmeal_key` FOREIGN KEY (`setmeal_id`) REFERENCES `t_setmeal` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
/*Data for the table `t_setmeal_checkgroup` */
/*Table structure for table `t_user` */
DROP TABLE IF EXISTS `t_user`;
CREATE TABLE `t_user` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`birthday` date DEFAULT NULL,
`gender` varchar(1) DEFAULT NULL,
`username` varchar(32) DEFAULT NULL,
`password` varchar(256) DEFAULT NULL,
`remark` varchar(32) DEFAULT NULL,
`station` varchar(1) DEFAULT NULL,
`telephone` varchar(11) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8;
/*Data for the table `t_user` */
insert into `t_user`(`id`,`birthday`,`gender`,`username`,`password`,`remark`,`station`,`telephone`) values (1,NULL,NULL,'admin','$2a$10$LPbhiutR34wKvjv3Qb8zBu7piw5hG3.IlQMAI3e/D1Y0DJ/mMSkYa',NULL,NULL,NULL),(2,NULL,NULL,'xiaoming','$2a$10$3xW2nBjwBM3rx1LoYprVsemNri5bvxeOd/QfmO7UDFQhW2HRHLi.C',NULL,NULL,NULL);
/*Table structure for table `t_user_role` */
DROP TABLE IF EXISTS `t_user_role`;
CREATE TABLE `t_user_role` (
`user_id` int(11) NOT NULL,
`role_id` int(11) NOT NULL,
PRIMARY KEY (`user_id`,`role_id`),
KEY `FK_Reference_8` (`role_id`),
CONSTRAINT `FK_Reference_7` FOREIGN KEY (`user_id`) REFERENCES `t_user` (`id`),
CONSTRAINT `FK_Reference_8` FOREIGN KEY (`role_id`) REFERENCES `t_role` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
/*Data for the table `t_user_role` */
insert into `t_user_role`(`user_id`,`role_id`) values (1,1),(2,2);
/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
模块小结
本模块主要介绍了医疗健康项目的基本概况。首先介绍了项目背景和项目功能;其次介绍了项目架构设计,包括项目架构选择、架构技术介绍;再次介绍了数据表结构设计与数据表关系设计;最后带领读者进行项目环境搭建,包括开发环境介绍、项目结构设计、搭建 Maven 工程、导入准备资源。希望通过学习本模块的内容,能够对项目框架有一个基础认知,能够独立搭建 Maven 工程,为后面的学习做好准备。