最全Java点餐系统和点餐小程序新加排号等位功能,2024大厂Java面试最火问题

读者福利

由于篇幅过长,就不展示所有面试题了,感兴趣的小伙伴

35K成功入职:蚂蚁金服面试Java后端经历!「含面试题+答案」

35K成功入职:蚂蚁金服面试Java后端经历!「含面试题+答案」

35K成功入职:蚂蚁金服面试Java后端经历!「含面试题+答案」

更多笔记分享

35K成功入职:蚂蚁金服面试Java后端经历!「含面试题+答案」

本文已被CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】收录

需要这份系统化的资料的朋友,可以点击这里获取

      that.setData({

        type: res.data.data.type,

        num: res.data.data.num

      })

    }

  },

  fail(res) {

    console.log("排号失败", res)

  }

})

},

//查询我的排号

getNum() {

let that = this;

//如果openid不存在,就重新请求接口获取openid

var openid = app.globalData.openid;

if (openid === null || openid === undefined) {

  app.getOpenid();

  wx.showToast({ //这里提示失败原因

    title: 'openid为空!',

    duration: 1500

  })

  return;

}

wx.request({

  url: app.globalData.baseUrl + '/paihao/getNum',

  data: {

    openid: openid

  },

  success: function (res) {

    if (res && res.data && res.data.data) {

      let dataList = res.data.data;

      console.log("请求到的排号情况", dataList)

      that.setData({

        type: dataList.type,

        num: dataList.num,

        smallOkNum: dataList.smallOkNum,

        bigOkNum: dataList.bigOkNum,

      })

    } else {

      that.setData({

        num: -1

      })

    }

  },

  fail(res) {

    console.log("查询排号失败", res)

  }

})

}

})




这里需要注意一点,就是一定要先获取用户的openid,因为openid是用户的唯一标识。每人每天只能排一次号。买我点餐系统这门课的同学,都知道如何获取openid,我课程配套的视频也有讲。



[]( )二,Java后台代码讲解

--------------------------------------------------------------------------



如果有仔细看上面第一步小程序端代码,应该可以看到wx.request网络请求部分,其实这个网络请求就是请求的我们Java后台。下面先把Java后台源码贴出来。



/**

  • 小程序端排号相关接口

*/

@RestController

@RequestMapping(“/paihao”)

@Slf4j

public class WxPaihaoController {

@Autowired

PaihaoRepository repository;



/*

 * 取号

 * */

@PostMapping("/quhao")

public ResultVO quhao(@RequestParam(value = "type") Integer type,

                      @RequestParam("openid") String openid) {

    int size = repository.findByDayAndType(TimeUtils.getYMD(), type).size();

    log.info("当前排号数={}", size);

    Paihao paihao = new Paihao();

    paihao.setDay(TimeUtils.getYMD());

    paihao.setNum(size + 1);

    paihao.setType(type);

    paihao.setOpenid(openid);

    paihao.setRuzuo(false);

    return ApiUtil.success(repository.save(paihao));

}

/*

 * 查询当前排号

 * */

@GetMapping("/getNum")

public ResultVO getNum(@RequestParam("openid") String openid) {

    //获取当前小桌入座情况

    List<Paihao> listSmall = repository.findByDayAndRuzuoAndTypeOrderByNum(TimeUtils.getYMD(), true, 0);

    //获取当前大桌入座情况

    List<Paihao> listBig = repository.findByDayAndRuzuoAndTypeOrderByNum(TimeUtils.getYMD(), true, 1);

    //查询当前客户的排号情况

    List<Paihao> listKeHu = repository.findByOpenidAndDay(openid,TimeUtils.getYMD());

    //组装数据返回给小程序端

    PaihaoVO paihao = new PaihaoVO();

    if (listSmall != null && listSmall.size() > 0) {

        paihao.setSmallOkNum(listSmall.get(listSmall.size() - 1).getNum());

    } else {

        paihao.setSmallOkNum(0);

    }

    if (listBig != null && listBig.size() > 0) {

        paihao.setBigOkNum(listBig.get(listBig.size() - 1).getNum());

    } else {

        paihao.setBigOkNum(0);

    }

    if (listKeHu != null && listKeHu.size() > 0) {

        paihao.setNum(listKeHu.get(listKeHu.size() - 1).getNum());

        paihao.setType(listKeHu.get(listKeHu.size() - 1).getType());

    } else {

        paihao.setNum(0);

        paihao.setType(0);

    }

    return ApiUtil.success(paihao);

}

}




可以看到我们一共给小程序前端提供两个接口,一个是取号,一个是查询当前排号状态。



### []( )1,先给大家讲讲取号



/*

 * 取号

 * */

@PostMapping("/quhao")

public ResultVO quhao(@RequestParam(value = "type") Integer type,

                      @RequestParam("openid") String openid) {

    int size = repository.findByDayAndType(TimeUtils.getYMD(), type).size();

    log.info("当前排号数={}", size);

    Paihao paihao = new Paihao();

    paihao.setDay(TimeUtils.getYMD());

    paihao.setNum(size + 1);

    paihao.setType(type);

    paihao.setOpenid(openid);

    paihao.setRuzuo(false);

    return ApiUtil.success(repository.save(paihao));

}



取号其实很简单,就是先查询当前已经排到第几号,然后新排号的客户号码再前面排号的基础上加一。然后数据入库就可以了。



### []( )2,再给大家讲下排号状态查询。



@GetMapping("/getNum")

public ResultVO getNum(@RequestParam("openid") String openid) {

    //获取当前小桌入座情况

    List<Paihao> listSmall = repository.findByDayAndRuzuoAndTypeOrderByNum(TimeUtils.getYMD(), true, 0);

    //获取当前大桌入座情况

    List<Paihao> listBig = repository.findByDayAndRuzuoAndTypeOrderByNum(TimeUtils.getYMD(), true, 1);

    //查询当前客户的排号情况

    List<Paihao> listKeHu = repository.findByOpenidAndDay(openid,TimeUtils.getYMD());

    //组装数据返回给小程序端

    PaihaoVO paihao = new PaihaoVO();

    if (listSmall != null && listSmall.size() > 0) {

        paihao.setSmallOkNum(listSmall.get(listSmall.size() - 1).getNum());

    } else {

        paihao.setSmallOkNum(0);

    }

    if (listBig != null && listBig.size() > 0) {

        paihao.setBigOkNum(listBig.get(listBig.size() - 1).getNum());

    } else {

        paihao.setBigOkNum(0);

    }

    if (listKeHu != null && listKeHu.size() > 0) {

        paihao.setNum(listKeHu.get(listKeHu.size() - 1).getNum());

        paihao.setType(listKeHu.get(listKeHu.size() - 1).getType());

    } else {

        paihao.setNum(0);

        paihao.setType(0);

    }

    return ApiUtil.success(paihao);

}



这一步稍微复杂一点。这一步的主要就是给小程序端返回所需的数据,比如当前大桌排到了第几号,小桌排到了第几号,当前用户的排号,当前用户是否被叫到。代码里注释都很清楚了,感兴趣的同学仔细看下上面代码即可。



### []( )3,管理员端



管理员就是用来操作谁可以入座的。  

![](https://imgconvert.csdnimg.cn/aHR0cHM6Ly91cGxvYWQtaW1hZ2VzLmppYW5zaHUuaW8vdXBsb2FkX2ltYWdlcy82MjczNzEzLWJkN2E2NmIwOWM4MGE5N2YucG5n?x-oss-process=image/format,png)  

这个页面主要是用freemarker写的前端页面。代码如下图。  

![](https://imgconvert.csdnimg.cn/aHR0cHM6Ly91cGxvYWQtaW1hZ2VzLmppYW5zaHUuaW8vdXBsb2FkX2ltYWdlcy82MjczNzEzLWQyMTk0NmI1ZDhhOTg1NDgucG5n?x-oss-process=image/format,png)  

对应的后台接口。



/**

最后

这份文档从构建一个键值数据库的关键架构入手,不仅带你建立起全局观,还帮你迅速抓住核心主线。除此之外,还会具体讲解数据结构、线程模型、网络框架、持久化、主从同步和切片集群等,帮你搞懂底层原理。相信这对于所有层次的Redis使用者都是一份非常完美的教程了。

image

整理不易,觉得有帮助的朋友可以帮忙点赞分享支持一下小编~

你的支持,我的动力;祝各位前程似锦,offer不断!!!

本文已被CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】收录

需要这份系统化的资料的朋友,可以点击这里获取

速抓住核心主线。除此之外,还会具体讲解数据结构、线程模型、网络框架、持久化、主从同步和切片集群等,帮你搞懂底层原理。相信这对于所有层次的Redis使用者都是一份非常完美的教程了。

[外链图片转存中…(img-9Z8AXBX2-1715570917250)]

整理不易,觉得有帮助的朋友可以帮忙点赞分享支持一下小编~

你的支持,我的动力;祝各位前程似锦,offer不断!!!

本文已被CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】收录

需要这份系统化的资料的朋友,可以点击这里获取

  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值