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

移动端体检预约:

验证码:

上传日期

前端数据

数据存储到 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);
相关推荐
Listen·Rain14 分钟前
Springboot整合Ollama实现调用本地多模型
java·spring boot·后端
霸道流氓气质14 分钟前
Java 工程师 AI 智能体(Agent)完整学习路线
java·人工智能·学习
天天进步201527 分钟前
Python全栈项目--校园食堂点餐与推荐系统
开发语言·python
aaPIXa62229 分钟前
C++模板元编程:编译期计算Fibonacci数列
java·开发语言·c++
SunnyDays101136 分钟前
Java 编辑 PDF:从增删改查到加密保护
java·修改 pdf·编辑 pdf
eybk44 分钟前
写一个可以编制pdf文件的python程序
开发语言·python·pdf
球king1 小时前
CC GUI 插件:在 IDEA 中使用 CodeX
java·ide·intellij-idea
cui_ruicheng1 小时前
Python从入门到实战(八):封装、多态与抽象类
开发语言·python
apihz1 小时前
台风实时与历史详情查询免费 API 接口完整教程
android·开发语言·tcp/ip·dubbo·台风·天气预报
知无不研1 小时前
c语言和c++中的静态关键字
开发语言·c++·静态关键字