【SSM】医疗健康平台-项目开发准备

知识目标

  • 了解架构,能够说出常用的架构及其优缺点

  • 熟悉项目的技术栈,能够说出每个技术栈的用途

  • 了解项目的功能结构,能够说出医疗健康项目的功能组成

  • 掌握医疗健康项目的环境搭建,能够根据系统模块的划分搭建医疗健康项目中的父工程和子模块

随着生活水平的提高,关注自身健康的人群越来越多,很多健康管理机构通过引入健康管理系统提高健康服务水平,提升体检用户满意度。本书讲解的医疗健康管理系统(后续简称医疗健康)是一款应用于健康管理机构的业务系统,该系统基于Spring+Spring MVC+MyBatis框架(后续简称SSM框架)开发完成。 本模块将针对医疗健康的项目背景、项目功能、项目架构、数据库设计及项目环境搭建等内容进行详细讲解。

1-1 初识项目

随着国民对健康重视程度的逐步提高,预防胜于治疗的健康观念也在逐步加深。健康管理机构迫切需要高质量信息化系统的支持。 医疗健康是一款应用于健康管理机构的业务系统,一方面用于实现健康管理机构工作内容可视化、会员管理专业化,从而提高健康管理师的工作效率,增强管理者对健康管理机构运营情况的了解;另一方面用于实现体检用户的体检预约、健康咨询等服务。

管理端供系统管理员、健康管理师等健康管理机构的内部人员使用。用户端供给体检用户使用。

管理端

预约管理模块-检查项管理

检查项是用户在体检过程中具体要检查的项目,例如身高、体重、收缩压等。检查项管理包括检查项的新增、查询、编辑、删除功能。

预约管理模块-检查组管理

由于检查项数量较多,为了方便、快速地筛选出相同类别的检查项,通常会将相同类别的检查项放到一个组别进行管理。检查组管理包括检查组的新增、查询、编辑、删除功能。

预约管理模块-套餐管理

套餐是健康管理机构根据用户群体需求专门定制的一套体检流程,实质是检查组的集合。套餐管理包括套餐的新增、查询、编辑、删除功能。

预约管理模块-预约设置

预约设置是指健康管理机构对每天体检预约人数的设置。实现预约设置有两种方式,一种是批量导入预约设置信息,另一种是基于日历实现预约设置。

统计分析模块-会员数据量统计

会员数据量统计用于统计最近一年每个月的会员数量,并通过折线图的方式展示出每个月会员数量的变化趋势。

统计分析模块-套餐预约占比统计

套餐预约占比统计是指对健康管理机构各个套餐预约占比情况的统计,统计结果使用饼图展示。

统计分析模块-运营数据统计

运营数据统计是指对会员数据、预约到诊数据、热门套餐等运营相关数据的统计。统计结果默认展示在页面中,运营数据可以选择使用 Excel 或 PDF 格式导出。

用户端

在线预约模块-用户登录

用户登录是指体检用户使用手机号和验证码登录。医疗健康的用户端,其中验证码通过发送手机短信的方式进行获取。

在线预约模块-套餐列表展示

套餐列表页面用于展示系统所有的套餐,套餐列表中每个套餐展示的信息包括图片、套餐名称、套餐介绍、适用性别和适用年龄。

在线预约模块-套餐详情展示

套餐详情页面用于展示某一个套餐的具体信息,包括图片、套餐名称、套餐介绍、适用性别、适用年龄、套餐中的检查组信息和检查组中的检查项信息等。

在线预约模块-体检预约

在体检预约页面中录入体检人信息并进行体检预约。体检人信息包括姓名、性别、手机号、身份证号、预约体检的日期等。为了保证用户输入的手机号是正确的,需要通过短信验证码进行验证。

1-2 项目架构设计

架构,又名软件架构,是有关软件整体结构与组件的抽象描述,用于指导大型软件系统各个方面的设计。 Java企业级的应用根据业务的复杂程度,通常使用的系统架构有单体应用架构、垂直应用架构、面向服务的架构(Service-Oriented Architecture,SOA)、微服务架构等。 项目架构的选择在项目准备过程中占据着重要的位置,除此之外技术架构的选择也是项目准备过程中必不可少的一个环节,接下来将针对项目架构和技术架构的选择进行详细讲解。

单体应用架构开发的进销存系统

优点:项目架构简单,技术结构单一,前期用人成本低,适合小型系统的开发。 缺点:随着业务复杂度的增加,功能越来越多,代码量越来越大,会导致代码可读性、可维护性和可扩展性下降。 由于系统过大且关联较多,任何一个 Bug都有可能导致整个系统宕机。

垂直应用架构开发的进销存系统

优点:通过垂直拆分实现流量分担,减轻服务器压力;可以针对不同的应用进行优化,方便水平扩展,容错率高。 缺点:当垂直应用越多,应用之间可能发生相互调用,不同应用之间可能出现数据、代码、功能冗余。

SOA开发的进销存系统

优点:将公共的功能抽取为服务,提高开发效率;各个服务之间耦合度低,可读性和可维护性比较好。 缺点:抽取服务的粒度较大,服务提供方与调用方接口耦合度较高。

微服务架构开发的进销存系统

优点:开发模式更加灵活;微服务的独立打包、部署和升级,使小团队的交付周期将缩短,运维成本下降。 缺点:对技术要求较高;微服务过多会造成服务管理成本提高,不利于系统维护,服务拆分粒度过细也会导致 系统变得凌乱和笨重。

医疗健康的技术架构

在开发时通常会根据不同的需求将项目拆分为多个层次处理,而不同的需求由其相对应的技术栈提供解决方案。

1-3 数据库设计

在实际开发应用程序时,会根据应用程序的需求及其实现功能来进行数据库设计,数据库设计的合理性将直接影响应用程序的性能和可扩展性。本任务对医疗健康数据库设计中的数据表结构设计和数据表关系设计进行详细讲解。

数据表结构设计

在开发过程中,通常使用实体对象来操作数据,而存储数据时,需要把实体对象中的数据存放到数据表,也就是说实体对象中的每个属性对应数据表中的一个字段。因此可以根据实体对象来设计数据表结构。 医疗健康的实体对象包括检查项实体、检查组实体、套餐实体、用户实体、预约设置实体、菜单实体、权限实体、角色实体、会员实体和体检预约信息实体。

按照检查项实体中的属性设计检查项表的表结构,检查项表用于保存体检检查项信息。

字段名数据类型是否主键描述
idint(11)主键,自动增长
codevarchar(16)检查项编码
namevarchar(32)检查项名称
sexchar(1)适用性别,0表示不限,1表示男,2表示女
agevarchar(32)适用年龄(范围),例如:23~35
pricefloat价格
typechar(1)检查项类型,1表示检查,2表示检验
attentionvarchar(128)注意事项
remarkvarchar(128)检查项说明

检查项表(t_checkitem)

按照检查组实体中的属性设计检查组表的表结构。检查组表用于保存与检查组相关的信息。

字段名数据类型是否主键描述
idint(11)主键,自动增长
codevarchar(32)检查组编码
namevarchar(32)检查组名称
helpCodevarchar(32)助记码
sexchar(1)适用性别,0表示不限,1表示男,2表示女
remarkvarchar(128)检查组说明
attentionvarchar(128)注意事项

检查组表(t_checkgroup)

按照套餐实体中的属性设计套餐表的表结构。套餐表用于保存与体检套餐相关的信息。

字段名数据类型是否主键描述
idint(11)主键,自动增长
namevarchar(128)套餐名称
codevarchar(8)套餐编码
helpCodevarchar(16)助记码
sexchar(1)适用性别,0表示不限,1表示男,2表示女
agevarchar(32)适用年龄范围,例如23~35
pricefloat价格
remarkvarchar(128)套餐说明
attentionvarchar(128)注意事项
imgvarchar(128)套餐对应的图片存储路径

套餐表(t_setmeal)

按照预约设置实体中的属性设计预约设置表的表结构。预约设置表用于保存每天的预约人数信息。

字段名数据类型是否主键描述
idint(11)主键,自动增长
orderDatedate约预日期
numberint(11)可预约人数
reservationsint(11)已预约人数

预约设置表(t_ordersetting)

按照用户实体中的属性设计用户表的表结构。用户表用于保存管理端的用户信息。

字段名数据类型是否主键描述
idint(11)主键,自动增长
birthdaydate生日
gendervarchar(1)性别,1表示男,2表示女
usernamevarchar(32)用户名
passwordvarchar(256)密码
remarkvarchar(32)用户说明
stationvarchar(1)状态
telephonevarchar(11)联系电话

用户表(t_user)

按照菜单实体中的属性设计菜单表的表结构。菜单表保存系统的菜单信息,菜单在页面导航栏中使用。

字段名数据类型是否主键描述
idint(11)主键,自动增长
namevarchar(128)菜单名称
linkUrlvarchar(128)访问路径
pathvarchar(128)菜单项所对应的路由路径
priorityint(11)优先级,用于排序
iconvarchar(64)菜单的图标样式
descriptionvarchar(128)菜单描述
parentMenuIdint(11)父菜单id
levelint(11)菜单级别

菜单表(t_menu)

按照权限实体中的属性设计权限表的表结构。权限表用于保存权限控制信息,为系统的所有功能设置访问权限。

字段名数据类型是否主键描述
idint(11)主键,自动增长
namevarchar(32)权限名称
keywordvarchar(64)权限关键字,用于权限控制
descriptionvarchar(128)权限描述

权限表(t_permission)

按照角色实体中的属性设计角色表的表结构。角色表用于保存用户角色信息。

字段名数据类型是否主键描述
idint(11)主键,自动增长
namevarchar(32)角色名称
keywordvarchar(64)角色关键字,用于权限控制
descriptionvarchar(128)角色描述

角色表(t_role)

按照会员实体中的属性设计会员表的表结构,会员表用于保存注册会员信息。

字段名数据类型是否主键描述
idint(11)主键,自动增长
fileNumbervarchar(32)会员档案号
namevarchar(32)姓名
sexvarchar(8)性别,1表示男,2表示女
idCardvarchar(18)身份证号
phoneNumbervarchar(11)手机号
regTimedate注册时间
passwordvarchar(32)登录密码
emailvarchar(32)邮箱
birthdaydate出生日期
remarkvarchar(128)会员信息说明

会员表(t_member)

按照体检预约实体中的属性设计体检预约信息表的表结构。体检预约信息表用于保存会员进行体检预约时的预约信息。

字段名数据类型是否主键描述
idint(11)主键,自动增长
member_idint(11)会员id
orderDatedate预约日期
orderTypevarchar(8)约预类型,如电话预约、客户端预约
orderStatusvarchar(8)预约状态(是否到诊)
setmeal_idint(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 工程,为后面的学习做好准备。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

五、LVS原理

目录 5.1 LVS 相关原理 5.1.1 LVS集群的体系结构以及特点 5.1.1.1 LVS简介 5.1.1.2 LVS体系结构 5.1.1.3 LVS相关术语 5.1.1.4 LVS工作模式 5.1.1.5 LVS调度算法 5.1.2 LVS-DR集群介绍 5.1.2.1 LVS-DR模式工作原理 5.1.2.2 LVS-DR模式应用特点 5.1.2.3 LVS-DR模式ARP抑制 5.1…

解决layui框架自带的excel导出长数据变科学计数法(使用\t和不使用\t的方法)

前言:项目中需要导出excel时,如果是大项目、要求高,当然使用第三方插件,或者后台导出是必要的,但是如果是一些小型项目,并且对导出excel样式要求不是很严格的,而且前端框架用的是layui的,layui框架自带的excel导出就成了我们最方便快捷的选择,但是在导出数据时会遇到一…

[CUDA编程] cuda graph优化心得

CUDA Graph 1. cuda graph的使用场景 cuda graph在一个kernel要多次执行,且每次只更改kernel 参数或者不更改参数时使用效果更加;但是如果将graph替换已有的kernel组合,且没有重复执行,感觉效率不是很高反而低于原始的kernel调用…

2024年6月份实时获取地图边界数据方法,省市区县街道多级联动【附实时geoJson数据下载】

首先,来看下效果图 在线体验地址:https://geojson.hxkj.vip,并提供实时geoJson数据文件下载 可下载的数据包含省级geojson行政边界数据、市级geojson行政边界数据、区/县级geojson行政边界数据、省市区县街道行政编码四级联动数据&#xff0…

根据mooc 数据库旧代码 实现剥离数据库链接单独成类,并进行测试

数据源详情链接,SQLserver 2019 代码复制粘贴可产生数据 数据库JDBC 查询sqlserver 2019 利用模板实现输入查询-CSDN博客 效果如下 剥离的链接模块 Slinkv2.java package SQLadd;import java.sql.Connection; import java.sql.DriverManager; import java.sql.Re…

在ensp上配置动态路由协议实验设计

动态路由协议是用来在网络中自动更新路由信息的一种技术,它可以让网络设备(如路由器)根据当前网络的状态调整数据的传输路径。这种协议特别适用于大型复杂的网络环境,可以有效地处理网络配置的变化,如链接的添加、删除…

flutter报错You are currently using Java 1.8

flutter报错Could not run phased build action using connection to Gradle distribution ‘https://services.gradle.org/distributions/gradle-7.6.3-all.zip’.\r\norg.gradle.api.ProjectConfigurationException: A problem occurred configuring root project ‘android’…

Android RelativeLayout Rtl布局下的bug:paddingStart会同时作用于左右内边距

问题现象 如上图,只是设置了paddingStart,在RTL布局下,左右都产生了10dp的间距。其他布局如LinearLayout,FrameLayout则没有这个问题。 private void positionAtEdge(View child, LayoutParams params, int myWidth) {if (isLayou…

问题:一般在管理工作复杂、面广且管理分工比较细致的单位,常采用()组织形式。 #媒体#媒体

问题:一般在管理工作复杂、面广且管理分工比较细致的单位,常采用()组织形式。 A.直线式 B.职能式 C.矩阵式 D.团队式 参考答案如图所示

使用易备数据备份软件,简单快速地备份 Oracle 数据库

易备数据备份软件能够以简单高效的方式,实现对 Oracle 数据库的保护。 易备数据备份软件数据库备份功能的关键特性 自动保护网站数据库及应用程序实时备份,不需要任何中断或数据库锁定基于日期和时间的备份任务计划可恢复到一个已存在的数据库或创建一…

Web前端大作业:基于html+css+js的仿淘宝首页前端项目(内附源码)

文章目录 一、项目介绍二、项目展示三、源码展示四、源码获取 一、项目介绍 这个项目是一个Web前端大作业,目的是让学生们通过实践仿设计淘宝官网的前端页面,来全面锻炼他们的HTML、CSS和JavaScript编程能力,以及产品需求分析、界面设计、交互设计等软实力。 淘宝作为国内最大…

TMCM-BB1是单轴板驱动器

TMCM-BB4 简介 TMCM-BB1和TMCM-BB4是Trinamic插槽式模块的基板。TMCM-BB1是单轴板,提供对一个MCU模块和一个驱动器模块的访问。TMCM-BB4是一个4轴板,提供对41模块插槽的访问。TMCM-0930模块采用单36针PCI插座,整个系统采用主MCU(…

【精品方案推荐】大数据治理平台建设解决方案(66页PPT)

随着企业数据量的迅速增长和复杂化,如何有效管理、分析和利用这些数据成为企业面临的重要挑战。大数据治理平台作为解决这一问题的关键工具,旨在为企业提供全面、高效的数据管理、安全保障和业务支持。 问题1:上大数据平台要废弃已上线的传统…

BitMEX 联合创始人 Arthur Hayes 加入 Covalent 担任战略顾问

Arthur Hayes 加入 Covalent Network(CQT),成为其战略顾问。 Hayes 认为 Covalent 与其竞争对手如 The Graph 相比,Covalent Network 的 CQT 代币一直被相对低估,他希望帮助 Covalent Network(CQT&#x…

【深度学习】数竹签演示软件系统

往期文章列表: 【YOLO深度学习系列】图像分类、物体检测、实例分割、物体追踪、姿态估计、定向边框检测演示系统【含源码】 【深度学习】物体检测/实例分割/物体追踪/姿态估计/定向边框/图像分类检测演示系统【含源码】 【深度学习】YOLOV8数据标注及模型训练方法整…

Playwright+Python+Pytest:基础方法二次封装简化及链式调用

引言 随着Web应用的日益复杂化,自动化测试成为了确保软件质量的关键环节。Playwright 是一个强大的自动化库,它支持在 Chromium、Firefox 和 WebKit 中运行自动化脚本。本文将介绍如何使用 Playwright 的 Python 同步 API 来简化点击和填充操作&#xf…

UnityAPI学习之Animator的基本使用

动画与动画控制器 示例1: 创建Animator对动画控制器进行统一管理,在Gris中创建Animator组件,并对其中的Controller属性进行赋值 在进行动画创作前,需先将图片的Texture Type属性改为Sprite(2D and UI) 再将一系列图片拖入Gris物…

【java计算机毕设】图书商城管理系统MySQL springboot vue html maven送文档

1项目功能介绍 【java计算机毕设】图书商城管理系统 Java Spring Boot vue HTML MySQL 赠送文档 PPT 2项目简介 系统功能: 图书商城管理系统包括管理员和用户两种角色。 管理员的功能包括在个人中心修改个人信息,以及在基础数据管理中管理会员等级类型和…

idea安装步骤 激活码分享2024 最新版本 ,附激活码,亲测到2099

1.下载安装IDEA 略 一步一步确定安装,然后打开 这里提示输入激活码,先关闭应用!!! 2.下载工具 打开下载好的工具(下载后记得不要删除和移动,然后安装的路径尽量不要带中文路径、删掉就会失效…

Maven认识与学习

1. Maven介绍 1.2 初识Maven 1.2.1 什么是Maven Maven是Apache旗下的一个开源项目,是一款用于管理和构建java项目的工具。 官网:Maven – Welcome to Apache Maven Apache 软件基金会,成立于1999年7月,是目前世界上最大的最受…