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

news2024/11/26 18:36:54

知识目标

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

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

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

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

随着生活水平的提高,关注自身健康的人群越来越多,很多健康管理机构通过引入健康管理系统提高健康服务水平,提升体检用户满意度。本书讲解的医疗健康管理系统(后续简称医疗健康)是一款应用于健康管理机构的业务系统,该系统基于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 工程,为后面的学习做好准备。

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

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

相关文章

Java基础面试重点-2

21. JVM是如何处理异常(大概流程)? 如果发生异常,方法会创建一个异常对象(包括:异常名称、异常描述以及异常发生时应用程序的状态),并转交给JVM。创建异常对象,并转交给…

推荐系统三十六式学习笔记:原理篇.近邻推荐09|协同过滤中的相似度计算方法有哪些?

目录 相似度的本质相似度的计算方法:1、欧式距离2、余弦相似度3、皮尔逊相关度4 、杰卡德(Jaccard)相似度 总结 相似度的本质 推荐系统中,推荐算法分为两个门派,一个是机器学习派,一个是相似度门派。机器学…

pytorch版本与torchvision版本不匹配问题处理

pytorch版本与torchvision版本不匹配问题处理 问题问题复现解决方法两点注意内容其一:pytorch版本与torchvision版本对应关系其二:CPU版本或GPU版本问题 问题 在新环境中,利用yolov8训练模型的时候报错,错误内容如下:…

探囊取物之渐变背景登录页面(基于ElementUI)

低配置云服务器,首次加载速度较慢,请耐心等候 预览页面:http://www.daelui.com/#/tigerlair/saas/preview/lxbupnc9dg5q 演练页面:http://www.daelui.com/#/tigerlair/saas/practice/lxbupnc9dg5q

ansible-Role角色批量按照node_export节点,并追加信息到Prometheus文件中

文章目录 剧本功能 inventory.yaml文件定义deploy.yaml角色定义node_exporter_lock角色定义任务角色main.yamlnode_exporter_tasks.yml角色触发任务notifyextra_tasks.yml角色prometheus_node_config.j2模板文件 执行命令查看变量 剧本功能 功能1: 批量执行node_ex…

【电子通识】焊接常见的不良有哪些?

在焊接完成后的调试阶段,有时总会发生一些奇怪的异常。也许是因为在焊接过程中出现了一些莫名其妙的焊接缺陷, 这些焊接缺陷产生的原因各不相同。 在实际的SMT贴片加工或插件焊接中,我们一般会采取一些方法来避免这些焊接不良的现象。那么常见…

PyCharm2018图文安装教程、附录软件下载

软件简介 PyCharm 2018是一款IDE集成开发环境,主要功能包括代码调试、语法高亮、智能提示、单元测试、版本控制等,支持Python 3.7,改进search everywhere功能等,可以让用户快速的开发程序。 软件下载 复制链接浏览器打开 https…

HTML静态网页成品作业(HTML+CSS)—— 电影泰坦尼克号介绍网页(4个页面)

🎉不定期分享源码,关注不丢失哦 文章目录 一、作品介绍二、作品演示三、代码目录四、网站代码HTML部分代码 五、源码获取 一、作品介绍 🏷️本套采用HTMLCSS,未使用Javacsript代码,共有4个页面。 二、作品演示 三、代…

译译交友项目介绍

一、 项目背景 随着社会的进步,英语作为一种国际语言,很多人都在学习英语,然而现在很多人都会因为学习英语而烦恼,有时还会因为是一个人学习而感到枯燥。面对情绪的低落,往往会使学习更困难。因此,我打造了…

Protected and unprotected Meilisearch projects(/health)

Elasticsearch 做为老牌搜索引擎,功能基本满足,但复杂,重量级,适合大数据量。 MeiliSearch 设计目标针对数据在 500GB 左右的搜索需求,极快,单文件,超轻量。 所以,对于中小型项目来说…

Qt 实战(4)信号与槽 | 4.1、信号与槽机制

文章目录 一、信号与槽机制1、基本概念2、信号与槽函数连接2.1、connect宏实现信号与槽连接2.2、Qt5新connect函数2.3、使用函数指针2.4、使用lambda表达式2.5、使用Qt Creator添加信号的槽函数 3、结论 前言: Qt信号与槽机制是一种用于处理对象间通信的强大机制&am…

2003远程桌面端口修改,Windows Server 2003远程桌面端口修改的专业操作指南

在网络安全日益受到重视的今天,修改Windows Server 2003远程桌面的默认端口已成为提高服务器安全性的常规操作。默认情况下,远程桌面使用的端口为3389,这一广为人知的端口号常常成为黑客攻击的目标。因此,通过修改远程桌面端口&am…

代码随想录-二叉树 | 111 二叉树的最小深度

代码随想录-二叉树 | 111 二叉树的最小深度 LeetCode 111 二叉树的最小深度解题思路代码难点总结 LeetCode 111 二叉树的最小深度 题目链接 代码随想录 题目描述 给定一个二叉树,找出其最小深度。 最小深度是从根节点到最近叶子节点的最短路径上的节点数量。 说…

地推数据不再迷茫,Xinstall助你一臂之力!

在移动互联网时代,地推作为一种传统的推广方式,仍然占据着举足轻重的地位。然而,地推过程中产生的数据却常常让推广者感到头疼。数据分散、难以追踪、分析困难……这些问题不仅耗费了推广者大量的时间和精力,更可能导致决策失误&a…

vue30:v-model语法糖的本质

在Vue.js框架中,v-model 是一个指令,用于在表单输入和应用状态之间创建双向数据绑定。它本质上是语法糖,意味着它提供了一种更简洁的方式来编写代码,而不需要显式地编写额外的代码。 具体来说,v-model 背后实际上是由…

LeetCode | 20.有效的括号

这道题就是栈这种数据结构的应用,当我们遇到左括号的时候,比如{,(,[,就压栈,当遇到右括号的时候,比如},),],就把栈顶元素弹出,如果不匹配,则返回False,当遍历完所有元素后…

技术要转管理吗?PMP证书有用吗?

作为一名80后的IT项目经理,我从大学计算机专业毕业后就一直在.NET开发领域工作,直到获得PMP证书后转型成为项目经理。我的经历或许能为还在犹豫是否要从技术转型到管理岗位的学弟学妹们提供一些参考。 大多数人认为,计算机专业的大学毕业生通…

8.11 矢量图层线要素单一符号使用七(爆炸线)

文章目录 前言爆炸线(Lineburst)QGis设置线符号为爆炸线(Lineburst)二次开发代码实现爆炸线(Lineburst) 总结 前言 本章介绍矢量图层线要素单一符号中爆炸线(Lineburst)的使用说明&…

【大分享02】数字化转型下政务服务电子文件的规范归档与保存

关注我们 - 数字罗塞塔计划 - 本篇是参加由电子文件管理推进联盟联合数字罗塞塔计划发起的“大分享”活动投稿文章,由北京华电园信息技术有限公司和华迪计算机集团有限公司联合完成,作者:董艳会、高鹏、汪艳。 PART 01 国家政策从机制和流程…

Attention与轻量级ResNet融合,低资源消耗下实现效率和性能完美平衡

注意力机制通过让模型关注图像关键区域提升了识别精度,而轻量级残差网络通过减少参数和计算量,实现了在低资源消耗下的优秀性能。 结合注意力机制与轻量级残差网络,既能让模型能够更高效地关注输入数据中的关键信息,提升模型处理…