手机体检预约系统开发解析

移动端体检预约:

验证码:

上传日期

前端数据

数据存储到 orderInfo ..........

1,发送验证码 :

随机验证码

封装一个生产随机数的类,生产随机数 上传到redis数据库当中

java 复制代码
  try {
            Integer code = ValidateCodeUtils.generateValidateCode(4);
            System.out.println("生成验证码:" + code);
            redisClient.set(RedisMessageConstant.SENDTYPE_ORDER+telephone,code);
            redisClient.expire(RedisMessageConstant.SENDTYPE_ORDER+telephone,5*60);
            return new Result(true, MessageConstant.SEND_VALIDATECODE_SUCCESS);
        } catch (Exception e) {
            e.printStackTrace();
            return new Result(false, MessageConstant.SEND_VALIDATECODE_FAIL);
        }

验证验证码

判断验证码是否过期判断,填写验证码是否正确

获取前端验证码 取得redis 数据库当中的验证码 比较

java 复制代码
 @Override
    public Result submit(Map map) {
        //获取前端收到的验证码
        String validateCodeStr = (String) map.get("validateCode");
        if (validateCodeStr == null || validateCodeStr.isEmpty()) {
            return new Result(false, "验证码不能为空");
        }
        //获取验证码
        Integer validateCode = Integer.valueOf(validateCodeStr);

        //获取前端的手机号
        String telephone = (String) map.get("telephone");
        //获取redis验证码 key = telephone
        Integer redisCode = (Integer)redisClient.get(RedisMessageConstant.SENDTYPE_ORDER+telephone);

        //判断验证码是否过期
        if (redisCode == null) {
            return new Result(false, MessageConstant.VALIDATECODE_EXPIRE);
        }
        //判断验证码是正确
        if(!validateCode.equals(redisCode)){
          return new Result(false, MessageConstant.VALIDATECODE_ERROR);
        }
}

2,提交表单

2.1查询预约日期是否符合要求 预约已满 重复预约

获取前端传送的日期 日期格式化

查询当前日期可以预约,人数是否已满

查询预约表当中的预约人数和可预约人数

java 复制代码
 //获取预约日期 日期转换格式
        String orderDate1 = (String) map.get("orderDate");
        Date orderDate = DateUtil.OrderListDate(orderDate1, "yyyy-MM-dd");

        //查询预约日期对象
        OrderSetting orderSetting =  orderSettingMapper.selsectByOrderDate(orderDate);

        //判断当前选择日期是否可以预约
        if (orderSetting == null) {
            return new Result(false, MessageConstant.SELECTED_DATE_CANNOT_ORDER);
        }

        //判断当前日期是否预约已满
        if (orderSetting.getNumber() == orderSetting.getReservations()) {
            return new Result(false, MessageConstant.ORDER_FULL);
        }

2.2,查询当前用户是否是会员 ,不是自动注册

查询会员表当中是否存在不存在

java 复制代码
      //查询当前用户是不是会员
        Member members = memberMapper.selectByTelephone(telephone);

        //获取套餐ID
        String setmealIdString = (String)map.get("setmealId");
        Integer setmealId = Integer.valueOf(setmealIdString);
        String name = (String) map.get("name");// 姓名
        String sex = (String) map.get("sex");// 性别
        String idCard = (String) map.get("idCard");// 身份证号

        // 当前用户不是会员,自动完成注册
        if (members == null) {
            members = new Member();
            members.setName(name);
            members.setSex(sex);
            members.setIdCard(idCard);
            members.setPhoneNumber(telephone);
            members.setRegTime(new Date());
            memberMapper.addMember( members);
        }

2.3, 预约成功,预约人数加一

查询该用户是否多次预约

如果查询为空 预约预约人数 +1

java 复制代码
 //预约设置 禁止重复预约
        Order orderBook = orderMapper.selectOrder(members.getId(), orderDate, setmealId);
        if (orderBook == null) {
            Order order = new Order(members.getId(),
                    orderDate,
                    Order.ORDERTYPE_WEIXIN,
                    Order.ORDERSTATUS_NO,
                    setmealId);
            //添加预约设置
            orderMapper.addOrder(order);

            //添加预约设置 预约人数加一
            orderSettingMapper.UpdateOrderSetting( orderDate);
相关推荐
豆瓣鸡7 分钟前
算法日记 - Day3
java·开发语言·算法
萧瑟余晖23 分钟前
Java深入解析篇九之NIO详解
java·网络·nio
韭菜炒鸡肝天43 分钟前
VTK开发笔记(一):VTK介绍,Qt..+VSx+VTK.编译
开发语言·笔记·qt
The Chosen One98543 分钟前
高进度算法模板速记(待完善)
java·前端·算法
Aaron - Wistron1 小时前
Web API C# (Furion版)带 单元测试
开发语言·后端·c#
Dxy12393102162 小时前
Python项目打包成EXE完整教程(PyInstaller实战避坑)
开发语言·python
0566463 小时前
Python康复训练——常用标准库
开发语言·python·学习
极光代码工作室3 小时前
基于SpringBoot的课程预约系统
java·springboot·web开发·后端开发
骊城英雄3 小时前
基于C#+avalonia ui实现的跨平台点胶机灌胶监控控制上位机软件
开发语言·ui·c#
吾儿良辰3 小时前
一个被BCL遗忘的高性能集合:C# CircularBuffer<T>深度解析
开发语言·windows·c#