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

移动端体检预约:

验证码:

上传日期

前端数据

数据存储到 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);
相关推荐
朝朝辞暮i7 小时前
C++ 第 23 课:class —— 开始真正进入面向对象
开发语言·c++·算法
leikooo8 小时前
用餐厅和盘子理解栈和堆
java·数据结构·链表·rust
小师兄吃牛肉8 小时前
C语言篇:宏
c语言·开发语言
郑同学的笔记8 小时前
【c++随笔28】strcmp 和 memcmp对比
开发语言·c++
言乐68 小时前
Python根据无法识别搜索词找出可能输入内容模型
开发语言·python·django·virtualenv·pygame
weixin_307779139 小时前
有限产能智能排产与动态重排智能体:从需求解构到技术实现
开发语言·人工智能·算法·架构
Ivanqhz9 小时前
激活函数在 Transformer 中的作用及各种变体简述
java·linux·数据库·人工智能·深度学习
kakakahahahaha9 小时前
Windows C盘临时文件清理:%temp%、Windows Temp、Prefetch、Windows.old与hiberfil.sys处理指南
c语言·开发语言·windows
朝朝辞暮i9 小时前
C++ 第 27 课:智能指针 shared_ptr
开发语言·c++·算法
沙漠之主9 小时前
C++编程教学设计资料:从入门到实战的完整课程方案
java·前端·c++