(4).预约管理
①. 当前台需要的数据格式和对象不一致时,我们可以用Map来接收。
②.在Service中传入map作为参数,在dao中parameterType可以使用其子类hashmap 来接收
③. 如果想要传入两个或更多的参数去mapper,我们可以使用map进行传入
①. 批量导入预约设置信息
为什么在service根据日期进行判断是修改还是新增?
如果我们导入两个一样的数据,如果不进行判断,相同的数据会插入两次
思路: 1.点击模板下载按钮下载Excel模板文件 2.将预约设置信息录入到模板文件中 3.点击上传文件按钮将录入完信息的模板文件上传到服务器 4.通过POI读取上传文件的数据并保存到数据库
后台: 1.controller 1.1 利用POI将文件导入,返回一个List<String[]> 1.2 创建一个List<OrderSetting> 1.3 将List<String[]>数据存入List<OrderSetting>集合中 1.4 将List<OrderSetting>传入service 2.service 2.1 对List<OrderSetting> 集合进行判断并循环 2.2 通过日期查询数据库是否有这条记录 如果有,则进行修改操作 如果没有,则进行新增操作 3.dao
后台代码实现:
1.controller
2.service
3.dao
②.日历展示预约设置
后台:前台需要传入一个data=2019-6 1.controller:将data数据传入service中,返回一个List<Map> 2.service: 2.1 将传入参数data 分别加上 begin="-01" | end="-31" 将bengin|end 封装到map传入dao 2.2 返回一个List<对象> 2.3 拿到前台想要的数据类型List<Map> 3.dao
步骤:
1.controller
2.service
3.dao
③. 基于日历实现预约设置
- 为什么要在service进行判断?
前台:需要传入orderDate和num(预约人数) 1.controller: 将OrderSetting对象作为参数传入service 2.service:(根据日期查看数据库中是否有这条记录) 如果有,进行修改操作 如果没有,进行新增操作
后台代码实现:
1.controller
2.service
3.dao
(5).体检预约
- ①. 怎么获取参数url中参数的id?
//获取指定的URL参数值 http://localhost/pages/setmeal_detail.html?id=3&name=jack function getUrlParam(paraName) { var url = document.location.toString(); alert(url);//http://localhost/pages/setmeal_detail.html?id=3&name=jack var arrObj = url.split("?");//id=3&name=jack if (arrObj.length > 1) { var arrPara = arrObj[1].split("&"); var arr; for (var i = 0; i < arrPara.length; i++) { arr = arrPara[i].split("="); if (arr != null && arr[0] == paraName) { return arr[1]; } } return ""; } else { return ""; } }
①. 套餐列表页面动态展示
思路:查询所有的套餐列表
②. 套餐详情页面动态展示
- ①. 套餐Mapper
<resultMap id="baseResultMap" type="com.itheima.pojo.Setmeal"> <id column="id" property="id"/> <result column="name" property="name"/> <result column="code" property="code"/> <result column="helpCode" property="helpCode"/> <result column="sex" property="sex"/> <result column="age" property="age"/> <result column="price" property="price"/> <result column="remark" property="remark"/> <result column="attention" property="attention"/> <result column="img" property="img"/> </resultMap> <resultMap id="findByIdResultMap" type="com.itheima.pojo.Setmeal" extends="baseResultMap"> <!--套餐和检查组之间多对多--> <!-- select * from t_setmeal where id=#{id} column="id" 这个id就是select*from t...查询出来的id字段名--> <collection property="checkGroups" ofType="com.itheima.pojo.CheckGroup" select="com.itheima.dao.CheckGroupDao.findCheckGroupById" column="id"> </collection> </resultMap> <!--根据套餐id查询套餐详情、检查组、检查项信息--> <select id="findById" resultMap="findByIdResultMap" parameterType="int"> select * from t_setmeal where id=#{id} </select>
- ③.检查项
<!--关联查询 根据检查组id来查询关联的检查项 --> <select id="findCheckItemById" parameterType="int" resultType="com.itheima.pojo.CheckItem"> select * from t_checkitem where id in (select checkitem_id from t_checkgroup_checkitem where checkgroup_id=#{id}) </select>
day07 体检预约 重点
知识点小结: 集合: CollectionUtils.isNotEmpty() 字符串:StringUtils.equals(validateCodeInRedis,validateCode)
①. 发送短信验证
1>.
手机号校验
- ①. 手机校验前台代码
1.检查手机号是否合法 2.倒计时30s倒计时 3.发送ajax请求,为用发送手机验证码
//发送验证码 sendValidateCode(){ //获取用户输入的手机号this.orderInfo.telephone //1.调用checkTelephone()看手机号是否合法 /** * 手机号校验 1--以1为开头; 2--第二位可为3,4,5,7,8,中的任意一位; 3--最后以0-9的9个整数结尾。 */ var reg=/^[1][3,4,5,7,8][0-9]{9}$/; if (!reg.test(this.orderInfo.telephone)) { return false; } //2.倒计时 var num1=30; var clock1;//定时器变量 var validateCodeButton1=document.getElementById("validateCodeButton"); function doLoop1(){ num1--; if(num1>0){ validateCodeButton1.disabled=true; validateCodeButton1.value=num1+"秒后重新获取"; }else{ validateCodeButton1.disabled=false; validateCodeButton1.value="重新获取验证码"; window.clearInterval(clock1); num1=30; } } //校验通过,30s倒计时 clock1= window.setInterval(doLoop1,1000);//定时器方法,每隔指定时间,调用指定方法 //3.发送ajax请求,为用发送手机验证码 axios.post("/validateCode/send4Order.do?telephone="+this.orderInfo.telephone) .then((res)=>{ if(!res.data.flag){ //短信验证码发送失败 this.$message.error(res.data.message); } }); },
- ②. 发送短信后台代码
思想: 1.通过阿里短信服务发送短信 2.如果失败,则给出相对应的错误信息 3.如果成功,则将短信存入redis
//用户在线体检预约发送验证码 @RequestMapping("/send4Order") public Result send4Order(String telephone){ //随机生成4位数字验证码 Integer validateCode = ValidateCodeUtils.generateValidateCode(4); try { //给我们用户发送验证码 SMSUtils.sendShortMessage(SMSUtils.VALIDATE_CODE,telephone,validateCode+""); } catch (ClientException e) { e.printStackTrace(); return new Result(false, MessageConstant.SEND_VALIDATECODE_FAIL); } //将验证码保存到redis(5分钟) 18774149736001 jedisPool.getResource().setex(telephone+ RedisMessageConstant.SENDTYPE_ORDER,300,validateCode.toString()); return new Result(true, MessageConstant.SEND_VALIDATECODE_SUCCESS); }