我大意了啊,没有闪。我本来以为是真的移动端(Android)开发,结果害tm是网页!!!
我算是看出来了,除了ElementUI这个没有新知识点。。。算了当复习😥
体检预约
用户可以通过如下操作流程进行体检预约:
1、在移动端首页点击体检预约,页面跳转到套餐列表页面
2、在套餐列表页面点击要预约的套餐,页面跳转到套餐详情页面
3、在套餐详情页面点击立即预约,页面跳转到预约页面
4、在预约页面录入体检人信息,包括手机号,点击发送验证码
5、在预约页面录入收到的手机短信验证码,点击提交预约,完成体检预约
1.移动端开发
随着移动互联网的兴起和手机的普及,目前移动端应用变得愈发重要,成为了各个商家的必争之地。例如,我们可以使用手机购物、支付、打车、玩游戏、订酒店、购票等,以前只能通过PC端完成的事情,现在通过手机都能够实现,而且更加方便,而这些都需要移动端开发进行支持,那如何进行移动端开发呢?
移动端开发主要有三种方式:
1、基于手机API开发(原生APP)
2、基于手机浏览器开发(移动web)
3、混合开发(混合APP)
1.1基于手机API开发
手机端使用手机API,例如使用Android、ios 等进行开发,服务端只是一个数据提供者。手机端请求服务端获取数据(json、xml格式)并在界面进行展示。这种方式相当于传统开发中的C/S模式,即需要在手机上安装一个客户端软件。
这种方式需要针对不同的手机系统分别进行开发,目前主要有以下几个平台:
1、苹果ios系统版本,开发语言是Objective-C
2、安卓Android系统版本,开发语言是Java
3、微软Windows phone系统版本,开发语言是C#
4、塞班symbian系统版本,开发语言是C++
此种开发方式举例:手机淘宝、抖音、今日头条、大众点评
1.2基于手机浏览器开发
生存在浏览器中的应用,基本上可以说是触屏版的网页应用。这种开发方式相当于传统开发中的B/S模式,也就是手机上不需要额外安装软件,直接基于手机上的浏览器进行访问。这就需要我们编写的html页面需要根据不同手机的尺寸进行自适应调节,目前比较流行的是html5开发。除了直接通过手机浏览器访问,还可以将页面内嵌到一些应用程序中,例如通过微信公众号访问html5页面。
这种开发方式不需要针对不同的手机系统分别进行开发,只需要开发一个版本,就可以在不同的手机上正常访问。
1.3混合开发
是半原生半Web的混合类App。需要下载安装,看上去类似原生App,访问的内容是Web网页。其实就是把HTML5页面嵌入到一个原生容器里面。
2.套餐详情页面展示
套餐列表页面很好实现,只需要和数据库实现简单交互就可以了。
点击其中任意一个套餐则跳转到对应的套餐详情页面(/pages/setmeal_detail.html),并且会携带此套餐的id作为参数提交。
请求路径格式:http://localhost/pages/setmeal_detail.html?id=10
在套餐详情页面需要展示当前套餐的信息(包括图片、套餐名称、套餐介绍、适用性别、适用年龄)、此套餐包含的检查组信息、检查组包含的检查项信息等。
2.1简单实现
在一开始时调用钩子函数,查询后台绑定到前端数据
1 | mounted(){ |
Controller:
1 |
|
Service:
1 | public Setmeal findById(int id) { |
2.2难点实现
这里面最困难的就是如何多表查询,我们需要通过套餐id去套餐检查组关系表中查询改套餐对应的检查组,再接着把得到的检查组对应的检查项查出来。
此处会使用mybatis提供的关联查询,在根据id查询套餐时,同时将此套餐包含的检查组都查询出来,并且将检查组包含的检查项都查询出来。
SetmealDao.xml文件:
1 | <resultMap id="baseResultMap" type="com.itheima.pojo.Setmeal"> |
CheckGroupDao.xml文件:
1 | <resultMap id="baseResultMap" type="com.itheima.pojo.CheckGroup"> |
CheckItemDao.xml文件:
1 | <!--根据检查组id查询检查项信息--> |
3.短信发送
之前品优购系列也提到过短信服务,具体参见链接
3.1短信服务介绍
短信服务(Short Message Service)是阿里云为用户提供的一种通信服务的能力,支持快速发送短信验证码、短信通知等。 三网合一专属通道,与工信部携号转网平台实时互联。电信级运维保障,实时监控自动切换,到达率高达99%。短信服务API提供短信发送、发送状态查询、短信批量发送等能力,在短信服务控制台上添加签名、模板并通过审核之后,可以调用短信服务API完成短信发送等操作。
本项目短信发送我们选择的是阿里云提供的短信服务。
3.2封装工具类
先导入Maven坐标,再编写代码:
1 | package com.itheima.utils; |
4.预约过程
4.1三十秒倒计时效果
我们发送验证码时先验证发送的手机格式是否正确,如果校验通过,需要显示30秒倒计时效果。
1 | //发送验证码 |
用到的方法在healthmobile.js定义,页面引用即可
1 | /** |
4.2提交预约
先进行身份证号检测,接着发送请求
1 | //提交预约 |
其中checkIdCard方法是在healthmobile.js文件中定义的
1 | /** |
4.3Controller
这里我们需要确认验证码是否正确。
由于验证码具有时效性,我们可以通过redis自带的倒计时完成这个功能。
1 |
|
当用户提交预约时,我们把redis中存的验证码提取出来和前端传过来的进行比较,如果校验成功,调用体检预约服务,完成预约的一系列判断。
1 |
|
4.4服务实现类
体检预约方法处理逻辑比较复杂,需要进行如下业务处理:
1、检查用户所选择的预约日期是否已经提前进行了预约设置,如果没有设置则无法进行预约
2、检查用户所选择的预约日期是否已经约满,如果已经约满则无法预约
3、检查用户是否重复预约(同一个用户在同一天预约了同一个套餐),如果是重复预约则无法完成再次预约
4、检查当前用户是否为会员,如果是会员则直接完成预约,如果不是会员则自动完成注册并进行预约
5、预约成功,更新当日的已预约人数
1 |
|
结语
我奉劝!黑马的人,取标题的时候,给我耗子尾汁。取标题,要讲标德!不要搞,被窝里斗!!