Java点餐系统和点餐小程序新加排号等位功能

一,小程序端代码


1,排号相关代码

我们先来讲讲排号相关的代码,从上图可以看出,我们排号的wxml文件里可以显示两种状态,未排号和已排号。上图展示的是未排号的状态,用户点击完取号以后,就可以展示已排号状态了。

其实排号的小程序端代码很简单。下面再把paihao.js的代码贴出来给到大家。


let app = getApp()

Page({

  data: {

    num: 1111, //当前排号

    type: 1,

    currentSmall: -1,

    currentBig: -1

  },

  onShow: function () {

    this.getNum()

  },

  //取号

  quhao(event) {

    let type = event.currentTarget.dataset.type

    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/quhao',

      method: "POST",

      header: {

        "Content-Type": "application/x-www-form-urlencoded"

      },

      data: {

        openid: openid,

        type: type,

      },

      success(res) {

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

          wx.showToast({

            title: '排号成功',

          })

          console.log(res)

          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()

[video(video-8PGqMbZO-1716354551447)(type-bilibili)(url-https://player.bilibili.com/player.html?aid=1804892953)(image-https://img-blog.csdnimg.cn/img_convert/d03a705143646f4f3f6ea879d59b2788.png)(title-必看视频!获取2024年最新Java开发全套学习资料 备注Java)]

;

        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());



### 最后

小编在这里分享些我自己平时的学习资料,由于篇幅限制,pdf文档的详解资料太全面,细节内容实在太多啦,所以只把部分知识点截图出来粗略的介绍,每个小节点里面都有更细化的内容!

**程序员代码面试指南 IT名企算法与数据结构题目最优解**

这是” 本程序员面试宝典!书中对IT名企代码面试各类题目的最优解进行了总结,并提供了相关代码实现。针对当前程序员面试缺乏权威题目汇总这一-痛点, 本书选取将近200道真实出现过的经典代码面试题,帮助广“大程序员的面试准备做到万无一失。 “刷”完本书后,你就是“题王”!

![image.png](https://img-blog.csdnimg.cn/img_convert/9f4b88f9096535c6490cd2a677e030d0.webp?x-oss-process=image/format,png)

**《TCP-IP协议组(第4版)》**

本书是介绍TCP/IP协议族的经典图书的最新版本。本书自第1版出版以来,就广受读者欢迎。

本书最新版进行」护元,以体境计算机网络技不的最新发展,全书古有七大部分共30草和7个附录:第一部分介绍一些基本概念和基础底层技术:第二部分介绍网络层协议:第三部分介绍运输层协议;第四部分介绍应用层协议:第五部分介绍下一代协议,即IPv6协议:第六部分介绍网络安全问题:第七部分给出了7个附录。

![image.png](https://img-blog.csdnimg.cn/img_convert/34132f6a392dcc1721cda35fafc85043.webp?x-oss-process=image/format,png)


**Java开发手册(嵩山版)**

这个不用多说了,阿里的开发手册,每次更新我都会看,这是8月初最新更新的**(嵩山版)**

![image.png](https://img-blog.csdnimg.cn/img_convert/638644d83d1ed01af6542d4071254ee1.webp?x-oss-process=image/format,png)

**MySQL 8从入门到精通**

本书主要内容包括MySQL的安装与配置、数据库的创建、数据表的创建、数据类型和运算符、MySQL 函数、查询数据、数据表的操作(插入、更新与删除数据)、索引、存储过程和函数、视图、触发器、用户管理、数据备份与还原、MySQL 日志、性能优化、MySQL Repl ication、MySQL Workbench、 MySQL Utilities、 MySQL Proxy、PHP操作MySQL数据库和PDO数据库抽象类库等。最后通过3个综合案例的数据库设计,进步讲述 MySQL在实际工作中的应用。

![image.png](https://img-blog.csdnimg.cn/img_convert/083cf28eee56f3c7b2a72ea566d50983.webp?x-oss-process=image/format,png)


**Spring5高级编程(第5版)**

本书涵盖Spring 5的所有内容,如果想要充分利用这一领先的企业级 Java应用程序开发框架的强大功能,本书是最全面的Spring参考和实用指南。

本书第5版涵盖核心的Spring及其与其他领先的Java技术(比如Hibemate JPA 2.Tls、Thymeleaf和WebSocket)的集成。本书的重点是介绍如何使用Java配置类、lambda 表达式、Spring Boot以及反应式编程。同时,将与企业级应用程序开发人员分享一些见解和实际经验,包括远程处理、事务、Web 和表示层,等等。

![image.png](https://img-blog.csdnimg.cn/img_convert/745dafeab9367505f3dc54c7c0fa8c37.webp?x-oss-process=image/format,png)


**JAVA核心知识点+1000道 互联网Java工程师面试题**

![image.png](https://img-blog.csdnimg.cn/img_convert/94263896e6bd409c9848b6c41267272d.webp?x-oss-process=image/format,png)


![image.png](https://img-blog.csdnimg.cn/img_convert/bb6c471b190b495cb7263d209c7d83d2.webp?x-oss-process=image/format,png)


**企业IT架构转型之道 阿里巴巴中台战略思想与架构实战**

本书讲述了阿里巴巴的技术发展史,同时也是-部互联网技 术架构的实践与发展史。

![image.png](https://img-blog.csdnimg.cn/img_convert/c92858a4bc488e4d037bf9bd87687ae4.webp?x-oss-process=image/format,png)
先的企业级 Java应用程序开发框架的强大功能,本书是最全面的Spring参考和实用指南。

本书第5版涵盖核心的Spring及其与其他领先的Java技术(比如Hibemate JPA 2.Tls、Thymeleaf和WebSocket)的集成。本书的重点是介绍如何使用Java配置类、lambda 表达式、Spring Boot以及反应式编程。同时,将与企业级应用程序开发人员分享一些见解和实际经验,包括远程处理、事务、Web 和表示层,等等。

[外链图片转存中...(img-iCWcnjsT-1716463216370)]


**JAVA核心知识点+1000道 互联网Java工程师面试题**

[外链图片转存中...(img-NXdDVrCw-1716463216371)]


[外链图片转存中...(img-XapXjqP8-1716463216371)]


**企业IT架构转型之道 阿里巴巴中台战略思想与架构实战**

本书讲述了阿里巴巴的技术发展史,同时也是-部互联网技 术架构的实践与发展史。

[外链图片转存中...(img-eaZmqUcA-1716463216371)]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值