黑马传智健康项目讲义第二章预约管理-检查项管理一

1. 需求分析
传智健康管理系统是一款应用于健康管理机构的业务系统,实现健康管理机构工作内容可视化、患者管理专业化、健康评估数字化、健康干预流程化、知识库集成化,从而提高健康管理师的工作效率,加强与患者间的互动,增强管理者对健康管理机构运营情况的了解。
系统分为传智健康后台管理系统和移动端应用两部分。其中后台系统提供给健康管理机构内部人员(包括系统管理员、健康管理师等)使用,微信端应用提供给健康管理机构的用户(体检用户)使用。
本项目功能架构图:


通过上面的功能架构图可以看到,传智健康后台管理系统有会员管理、预约管理、健康评估、健康干预等功能。移动端有会员管理、体检预约、体检报告等功能。后台系统和移动端应用都会通过Dubbo调用服务层发布的服务来完成具体的操作。本项目属于典型SOA架构形式。本章节完成的功能开发是预约管理功能,包括检查项管理、检查组管理、体检套餐管理、预约设置等(参见产品原型)。预约管理属于系统的基础功能,主要就是管理一些体检的基础数据。

2. 基础环境搭建
2.1 导入预约管理模块数据表
操作步骤:
1)根据资料中提供的itcasthealth.pdm文件导出SQL脚本



2)创建本项目使用的数据库itcast_health
3)将PowerDesigner导出的SQL脚本导入itcast_health数据库进行建表

2.2 导入预约管理模块实体类
将资料中提供的POJO实体类复制到health_common工程中。
2.3 导入项目所需公共资源
项目开发过程中一般会提供一些公共资源,供多个模块或者系统来使用。
本章节我们导入的公共资源有:
1)返回消息常量类MessageConstant,放到health_common工程中

package com.itheima.constant;
/**
* 消息常量
*/
public class MessageConstant {
public static final String DELETE_CHECKITEM_FAIL = "删除检查项失败";
public static final String DELETE_CHECKITEM_SUCCESS = "删除检查项成功";
public static final String ADD_CHECKITEM_SUCCESS = "新增检查项成功";
public static final String ADD_CHECKITEM_FAIL = "新增检查项失败";
public static final String EDIT_CHECKITEM_FAIL = "编辑检查项失败";
public static final String EDIT_CHECKITEM_SUCCESS = "编辑检查项成功";
public static final String QUERY_CHECKITEM_SUCCESS = "查询检查项成功";
public static final String QUERY_CHECKITEM_FAIL = "查询检查项失败";
public static final String UPLOAD_SUCCESS = "上传成功";
public static final String ADD_CHECKGROUP_FAIL = "新增检查组失败";
public static final String ADD_CHECKGROUP_SUCCESS = "新增检查组成功";
public static final String DELETE_CHECKGROUP_FAIL = "删除检查组失败";
public static final String DELETE_CHECKGROUP_SUCCESS = "删除检查组成
功";
public static final String QUERY_CHECKGROUP_SUCCESS = "查询检查组成功";
public static final String QUERY_CHECKGROUP_FAIL = "查询检查组失败";
public static final String EDIT_CHECKGROUP_FAIL = "编辑检查组失败";
public static final String EDIT_CHECKGROUP_SUCCESS = "编辑检查组成功";
public static final String PIC_UPLOAD_SUCCESS = "图片上传成功";
public static final String PIC_UPLOAD_FAIL = "图片上传失败";
public static final String ADD_SETMEAL_FAIL = "新增套餐失败";
public static final String ADD_SETMEAL_SUCCESS = "新增套餐成功";
public static final String IMPORT_ORDERSETTING_FAIL = "批量导入预约设置
数据失败";
public static final String IMPORT_ORDERSETTING_SUCCESS = "批量导入预约
设置数据成功";
public static final String GET_ORDERSETTING_SUCCESS = "获取预约设置数据
成功";
public static final String GET_ORDERSETTING_FAIL = "获取预约设置数据失
败";
public static final String ORDERSETTING_SUCCESS = "预约设置成功";
public static final String ORDERSETTING_FAIL = "预约设置失败";
public static final String ADD_MEMBER_FAIL = "新增会员失败";
public static final String ADD_MEMBER_SUCCESS = "新增会员成功";public static final String DELETE_MEMBER_FAIL = "删除会员失败";
public static final String DELETE_MEMBER_SUCCESS = "删除会员成功";
public static final String EDIT_MEMBER_FAIL = "编辑会员失败";
public static final String EDIT_MEMBER_SUCCESS = "编辑会员成功";
public static final String TELEPHONE_VALIDATECODE_NOTNULL = "手机号和
验证码都不能为空";
public static final String LOGIN_SUCCESS = "登录成功";
public static final String VALIDATECODE_ERROR = "验证码输入错误";
public static final String QUERY_ORDER_SUCCESS = "查询预约信息成功";
public static final String QUERY_ORDER_FAIL = "查询预约信息失败";
public static final String QUERY_SETMEALLIST_SUCCESS = "查询套餐列表数
据成功";
public static final String QUERY_SETMEALLIST_FAIL = "查询套餐列表数据失
败";
public static final String QUERY_SETMEAL_SUCCESS = "查询套餐数据成功";
public static final String QUERY_SETMEAL_FAIL = "查询套餐数据失败";
public static final String SEND_VALIDATECODE_FAIL = "验证码发送失败";
public static final String SEND_VALIDATECODE_SUCCESS = "验证码发送成
功";
public static final String SELECTED_DATE_CANNOT_ORDER = "所选日期不能进
行体检预约";
public static final String ORDER_FULL = "预约已满";
public static final String HAS_ORDERED = "已经完成预约,不能重复预约";
public static final String ORDER_SUCCESS = "预约成功";
public static final String GET_USERNAME_SUCCESS = "获取当前登录用户名称
成功";
public static final String GET_USERNAME_FAIL = "获取当前登录用户名称失
败";
public static final String GET_MENU_SUCCESS = "获取当前登录用户菜单成
功";
public static final String GET_MENU_FAIL = "获取当前登录用户菜单失败";
public static final String GET_MEMBER_NUMBER_REPORT_SUCCESS = "获取会
员统计数据成功";
public static final String GET_MEMBER_NUMBER_REPORT_FAIL = "获取会员统
计数据失败";
public static final String GET_SETMEAL_COUNT_REPORT_SUCCESS = "获取套
餐统计数据成功";
public static final String GET_SETMEAL_COUNT_REPORT_FAIL = "获取套餐统
计数据失败";
public static final String GET_BUSINESS_REPORT_SUCCESS = "获取运营统计数据成功";
public static final String GET_BUSINESS_REPORT_FAIL = "获取运营统计数据
失败";
public static final String GET_SETMEAL_LIST_SUCCESS = "查询套餐列表数据
成功";
public static final String GET_SETMEAL_LIST_FAIL = "查询套餐列表数据失
败";
}

2)返回结果ResultPageResult类,放到health_common工程中

package com.itheima.entity;
import java.io.Serializable;
/**
* 封装返回结果
*/
public class Result implements Serializable{
private boolean flag;//执行结果,true为执行成功 false为执行失败
private String message;//返回提示信息,主要用于页面提示信息
private Object data;//返回数据
public Result(boolean flag, String message) {
super();
this.flag = flag;
this.message = message;
}
public Result(boolean flag, String message, Object data) {
this.flag = flag;
this.message = message;
this.data = data;
}
public boolean isFlag() {
return flag;
}
public void setFlag(boolean flag) {
this.flag = flag;
}
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
public Object getData() {
return data;
}
public void setData(Object data) {
this.data = data;
}
}package com.itheima.entity;
import java.io.Serializable;
import java.util.List;
/**
* 分页结果封装对象
*/
public class PageResult implements Serializable{
private Long total;//总记录数
private List rows;//当前页结果
public PageResult(Long total, List rows) {
super();
this.total = total;
this.rows = rows;
}
public Long getTotal() {
return total;
}
public void setTotal(Long total) {
this.total = total;
}
public List getRows() {
return rows;
}
public void setRows(List rows) {
this.rows = rows;
}
}

3)封装查询条件的QueryPageBean类,放到health_common工程中

package com.itheima.entity;
import java.io.Serializable;
/**
* 封装查询条件
*/
public class QueryPageBean implements Serializable{
private Integer currentPage;//页码
private Integer pageSize;//每页记录数
private String queryString;//查询条件
public Integer getCurrentPage() {
return currentPage;
}
public void setCurrentPage(Integer currentPage) {
this.currentPage = currentPage;
}
public Integer getPageSize() {
return pageSize;
}
public void setPageSize(Integer pageSize) {
this.pageSize = pageSize;
}
public String getQueryString() {
return queryString;
}
public void setQueryString(String queryString) {
this.queryString = queryString;
}
}

4htmljscss、图片等静态资源,放到health_backend工程中
注意:后续随着项目开发还会陆续导入其他一些公共资源。

3. 新增检查项
3.1 完善页面
检查项管理页面对应的是checkitem.html页面,根据产品设计的原型已经完成了页面基本结构的编写,现在需要完善页面动态效果。
3.1.1 弹出新增窗口
页面中已经提供了新增窗口,只是处于隐藏状态。只需要将控制展示状态的属性dialogFormVisible改为true就可以显示出新增窗口。
新建按钮绑定的方法为handleCreate,所以在handleCreate方法中修改dialogFormVisible属性的值为true即可。同时为了增加用户体验度,需要每次点击新建按钮时清空表单输入项。

// 重置表单
resetForm() {
this.formData = {};
},
// 弹出添加窗口
handleCreate() {
this.resetForm();
this.dialogFormVisible = true;
}

3.1.2 输入校验

3.1.3 提交表单数据
点击新增窗口中的确定按钮时,触发handleAdd方法,所以需要在handleAdd方法中进行完善。

handleAdd () {
//校验表单输入项是否合法
this.$refs['dataAddForm'].validate((valid) => {
if (valid) {
//表单数据校验通过,发送ajax请求将表单数据提交到后台
axios.post("/checkitem/add.do",this.formData).then((response)=> {
//隐藏新增窗口
this.dialogFormVisible = false;
//判断后台返回的flag值,true表示添加操作成功,false为添加操作失败
if(response.data.flag){
this.$message({
message: response.data.message,
type: 'success'
});
}else{
this.$message.error(response.data.message);
}
}).finally(()=> {
this.findPage();
});
} else {
this.$message.error("表单数据校验失败");
return false;
}
});
}
3.2 后台代码
3.2.1 Controller
health_backend工程中创建CheckItemController
package com.itheima.controller;[/size][/font][/align]
[font=微软雅黑][size=3][align=left]import com.alibaba.dubbo.config.annotation.Reference;[/align]
[align=left]import com.itheima.constant.MessageConstant;[/align]
[align=left]import com.itheima.entity.PageResult;[/align]
[align=left]import com.itheima.entity.QueryPageBean;[/align]
[align=left]import com.itheima.entity.Result;[/align]
[align=left]import com.itheima.pojo.CheckItem;[/align]
[align=left]import com.itheima.service.CheckItemService;[/align]
[align=left]import org.springframework.web.bind.annotation.RequestBody;[/align]
[align=left]import org.springframework.web.bind.annotation.RequestMapping;[/align]
[align=left]import org.springframework.web.bind.annotation.RequestParam;[/align]
[align=left]import org.springframework.web.bind.annotation.RestController;[/align]
[align=left]import java.util.List;[/align]
[align=left]/**[/align]
[align=left]* 体检检查项管理[/align]
[align=left]*/[/align]
[align=left]@RestController[/align]
[align=left]@RequestMapping("/checkitem")[/align]
[align=left]public class CheckItemController {[/align]
[align=left]@Reference[/align]
[align=left]private CheckItemService checkItemService;[/align]
[align=left]//新增[/align]
[align=left]@RequestMapping("/add")[/align]
[align=left]public Result add(@RequestBody CheckItem checkItem){[/align]
[align=left]try {[/align]
[align=left]checkItemService.add(checkItem);[/align]
[align=left]}catch (Exception e){[/align]
[align=left]return new Result(false,MessageConstant.ADD_CHECKITEM_FAIL);[/align]
[align=left]}[/align]
[align=left]return new Result(true,MessageConstant.ADD_CHECKITEM_SUCCESS);[/align]
[align=left]}[/align]
[align=left]}
3.2.2 服务接口
health_interface工程中创建CheckItemService接口
package com.itheima.service;[/size][/font][/align]
[font=微软雅黑][size=3][align=left]import com.itheima.pojo.CheckItem;[/align]
[align=left]import java.util.List;[/align]
[align=left]/**[/align]
[align=left]* 检查项服务接口[/align]
[align=left]*/[/align]
[align=left]public interface CheckItemService {[/align]
[align=left]public void add(CheckItem checkItem);[/align]
[align=left]}
3.2.3 服务实现类
health_service_provider工程中创建CheckItemServiceImpl实现类
package com.itheima.service;[/size][/font][/align]
[font=微软雅黑][size=3][align=left]import com.alibaba.dubbo.config.annotation.Service;[/align]
[align=left]import com.itheima.dao.CheckItemDao;[/align]
[align=left]import com.itheima.pojo.CheckItem;[/align]
[align=left]import org.springframework.beans.factory.annotation.Autowired;[/align]
[align=left]import org.springframework.transaction.annotation.Transactional;[/align]
[align=left]/**[/align]
[align=left]* 检查项服务[/align]
[align=left]*/[/align]
[align=left]@Service(interfaceClass = CheckItemService.class)[/align]
[align=left]@Transactional[/align]
[align=left]public class CheckItemServiceImpl implements CheckItemService {[/align]
[align=left]@Autowired[/align]
[align=left]private CheckItemDao checkItemDao;[/align]
[align=left]//新增[/align]
[align=left]public void add(CheckItem checkItem) {[/align]
[align=left]checkItemDao.add(checkItem);[/align]
[align=left]}[/align]
[align=left]}
3.2.4 Dao接口
health_service_provider工程中创建CheckItemDao接口,本项目是基于MybatisMapper代理技术实现持久层操作,故只需要提供接口和Mapper映射文件,无须提供实现类
package com.itheima.dao;[/size][/font][/align]
[font=微软雅黑][size=3][align=left]import com.itheima.pojo.CheckItem;[/align]
[align=left]/**[/align]
[align=left]* 持久层Dao接口[/align]
[align=left]*/[/align]
[align=left]public interface CheckItemDao {[/align]
[align=left]public void add(CheckItem checkItem);[/align]
[align=left]}
3.2.5 Mapper映射文件
health_service_provider工程中创建CheckItemDao.xml映射文件,需要和CheckItemDao接口在同一目录下
< xml version="1.0" encoding="UTF‐8" ?>[/size][/font][/align]
[font=微软雅黑][size=3][align=left]<!DOCTYPE mapper PUBLIC "‐//mybatis.org//DTD Mapper 3.0//EN"[/align]
[align=left]"http://mybatis.org/dtd/mybatis‐3‐mapper.dtd" >[/align]
[align=left]<mapper namespace="com.itheima.dao.CheckItemDao">[/align]
[align=left]<!‐‐新增‐‐>[/align]
[align=left]<insert id="add" parameterType="com.itheima.pojo.CheckItem">[/align]
[align=left]insert into[/align]
[align=left]t_checkitem(code,name,sex,age,price,type,remark,attention)[/align]
[align=left]values[/align]
[align=left](#{code},#{name},#{sex},#{age},#{price},#{type},#{remark},#[/align]
[align=left]{attention})[/align]
[align=left]</insert>[/align]
[align=left]</mapper>

推荐学习java项目:

20天企业开发实战品优购电商系统开发上(1-10天) 

视频链接:http://yun.itheima.com/course/295.html?stt 
提取码:epxm 


20天企业开发实战品优购电商系统开发下(11-20天+配置资料源码)
视频链接:https://pan.baidu.com/s/1RJK9jumxt9MARAWohy1E3Q 
提取码:5b74
 

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值