Java点餐系统和点餐小程序新加排号等位功能(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();

    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)  

这

[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)]

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

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

对应的后台接口。



分享

这次面试我也做了一些总结,确实还有很多要学的东西。相关面试题也做了整理,可以分享给大家,了解一下面试真题,想进大厂的或者想跳槽的小伙伴不妨好好利用时间来学习。学习的脚步一定不能停止!

薪酬缩水,“裸辞”奋战25天三面美团,交叉面却被吊打,我太难了

Spring Cloud实战

薪酬缩水,“裸辞”奋战25天三面美团,交叉面却被吊打,我太难了

Spring Boot实战

薪酬缩水,“裸辞”奋战25天三面美团,交叉面却被吊打,我太难了

面试题整理(性能优化+微服务+并发编程+开源框架+分布式)
convert.csdnimg.cn/aHR0cHM6Ly91cGxvYWQtaW1hZ2VzLmppYW5zaHUuaW8vdXBsb2FkX2ltYWdlcy82MjczNzEzLWQyMTk0NmI1ZDhhOTg1NDgucG5n?x-oss-process=image/format,png)

对应的后台接口。



# 分享

这次面试我也做了一些总结,确实还有很多要学的东西。相关面试题也做了整理,可以分享给大家,了解一下面试真题,想进大厂的或者想跳槽的小伙伴不妨好好利用时间来学习。学习的脚步一定不能停止!

[外链图片转存中...(img-Q9NSZSKR-1716463172927)]

Spring Cloud实战

[外链图片转存中...(img-zfAlsk0s-1716463172928)]

Spring Boot实战

[外链图片转存中...(img-8OV8Bm9F-1716463172929)]

面试题整理(性能优化+微服务+并发编程+开源框架+分布式)
  • 5
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
一个java编程问题,关于点菜 浏览次数:629次悬赏分:15 | 解决时间:2010-1-14 13:10 | 提问者:aimiaozi 现在有一份菜单给客人察看,并要计算他们的消费。 要求:客人菜时要打印出菜单,而且只需输入菜即点菜,并要打印出客人所点的菜,最后计算客人应付的菜钱。 编 菜名 价钱 01 扬州炒饭 5.0 02 辣子鸡丁 9.0 03 羊肉串 5.0 04 鸡汤 15.0 各位高手帮帮忙吧~~~~~能做得了全部最好,谢谢!!!问题补充: 程序是要输入菜就能知道菜名、菜价,我就是不会这点。。。 如果可以,希望能用一维数组做出来。我是初学者!!!!! 答得好能加分哦,谢谢!! 麻烦各位了,请多包涵! 最佳答案 package ddd; public class Dish { private String name; private String id; private double unit; private int number; private String text; public Dish(String id,String name,double unit,int number){ this.id=id; this.name=name; this.unit=unit; this.number=number; } public Dish(){ } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getId() { return id; } public void setId(String id) { this.id = id; } public double getUnit() { return unit; } public void setUnit(double unit) { this.unit = unit; } public int getNumber() { return number; } public void setNumber(int number) { this.number = number; } public String getText() { return text; } public void setText(String text) { this.text = text; } public Dish clone(){ Dish d=new Dish(); d.setId(id); d.setName(name); d.setUnit(unit); d.setNumber(number); return d; } } ----------------------------------------- package ddd; import java.sql.Date; import java.text.SimpleDateFormat; import java.util.LinkedList; import java.util.List; public class Order { private String user; public List list; private double sumMoney; private String date; public Order(String user){ this.user=user; SimpleDateFormat format=new SimpleDateFormat("yyyy-MM-dd hh:mm:ss"); Date date=new Date(System.currentTimeMillis()); this.date=format.format(date); list=new LinkedList(); } public List getList() { return list; } public void setList(List list) { this.list = list; } public double getSumMoney() { return sumMoney; } public void setSumMoney(double sumMoney) { this.sumMoney = sumMoney; } public String getDate() { return date; } public void setDate(String date) { this.date = date; } public String getUser() { return user; } public void setUser(String user) { this.user = user; } public void printOrder(){ System.out.println("--------------------------------------------------------------"); System.out.println("+用户名:"+user+"+"); System.out.println("+消费日期:"+date+"+"); System.out.println("--------------------------------------------------------------"); System.out.println("编 \t 名称 \t 价格(元) \t数量 \t 合计(元)"); for(Dish dish:list){ System.out.printf("%-5s \t %-12s \t %-5s \t %-2s \t %-5s\n",dish.getId(),dish.getName(),dish.getUnit(),dish.getNumber(),dish.getUnit()*dish.getNumber()); } System.out.println("--------------------------------------------------------------"); System.out.println("+消费合计:"+sumMoney+"+"); } } -------------------------------------------- package ddd; import java.io.IOException; import java.util.LinkedHashMap; import java.util.Map; import java.util.Scanner; public class Main { private Map map; private Order order; public Main(String username){ map=new LinkedHashMap(); map.put("01",new Dish("01","扬州炒饭",5.0,10)); map.put("02",new Dish("02","辣子鸡丁",9.0,10)); map.put("03",new Dish("03","羊肉串 ",5.0,10)); map.put("04",new Dish("04","鸡汤 ",15.0,10)); map.put("05",new Dish("05","红烧排骨",25.0,10)); map.put("06",new Dish("06","清蒸鲤鱼 ",35.0,10)); map.put("07",new Dish("07","杂酱面 ",8.0,10)); map.put("08",new Dish("08","绿豆粥 ",2.0,10)); order=new Order(username); } public void printDishList(){ System.out.println("-------------------菜 谱-------------------"); System.out.println("编 \t 名称 \t 价格(元) \t数量"); System.out.println("--------------------------------------------"); for(Dish dish:map.values()){ System.out.printf("%-5s \t %-12s \t %-5s \t %-2s\n",dish.getId(),dish.getName(),dish.getUnit(),dish.getNumber()); } System.out.println("--------------------------------------------"); } public static void main(String[] str) throws IOException{ Main main=new Main("佚名"); Scanner s=new Scanner(System.in); main.printDishList(); while(true){ String id=""; System.out.print("请输入菜单编:"); id=s.nextLine(); if(!main.map.containsKey(id)) {System.out.println("没有该菜名编!");continue;} Dish dish=main.map.get(id).clone(); System.out.println(dish.getName()); System.out.print("请输入所要菜名【"+dish.getName()+"】的数量(0表示全部都要;必须小于等于"+dish.getNumber()+"):"); int number=Integer.parseInt(s.nextLine()); if(numberdish.getNumber()){System.out.println("数量输入错误!");continue;} else if(number==0) ; else dish.setNumber(number); main.order.setSumMoney(main.order.getSumMoney()+dish.getNumber()*dish.getUnit()); main.order.list.add(dish); System.out.println("一种菜品添加成功!继续直接any key;结束输入exit并回车"); String tag=s.nextLine(); if("exit".equalsIgnoreCase(tag)) break; } main.order.printOrder(); } }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值