首页 > 编程知识 正文

微信小程序线上点餐问题及解决办法,小程序 点餐

时间:2023-05-04 16:26:25 阅读:233200 作者:2614

2019.5.22
1.当我们遍历出数据库中菜单的菜品时,需要为其单个产品添加数量的问题。

解决:在表中加入 购买数量(buycount)的字段

然后,在js文件中,控制当前对象中的buycount 属性。

注意:在控制当前对象的属性是,必须传递一个index标志性的值到js中,因为,我们遍 历的是一个对象数组,因为,当我们更改其中一个对象时候,需要找到其下标。因此 在+、-号操作的时候,传值data-index到js中。 如图:

当我们,完成了添加、减少的数量的操作时候,需要为其保存值在前台,
更新 我们遍历list集合 中的 某些 属性。

5.29更新(小程序订餐 订单之点餐 构思)

由于,之前一直在想一个问题:到底是在点餐的 页面 加入数量 还是,将其加入到购物车里面再添加数量的问题。后来还是选择了后者,如图

当我们将菜品一一列在了一个页面中,该图将2个商品 加入了我的订单中。那么,这个订单如何来的呢?
我一直思考,最终我的解决办法是:
当我们扫描二维码或者通过链接 进入了小程序,那么在app.js中,我会向后台 申请 一个 字符串(改字符串由一个封装好了的类的方法得到的),该方法会返回一个字符串(基本不可能重复)作为订单编号,同时,将其保存wx.setstorageSync域中,同时可以在任何tab里面通过getstorageSync(“key”) 获得订单编号。 那么,当我们进入小程序后,当前用户(我们)相当于 就 拥有 一个专属于本次 从进入 小程序 到 结束小程序 的一个订单编号了。

接下来,就可以,将商品添加 到该订单中了,然后再 对订单的 添加 和 修改(数量和金额)的操作了。

针对对 订单的 添加 和 修改 做下 笔记(只要是理解其思想)
往往在做 商城购物 这类的项目时,往往 会有2个订单。一个为总订单、一个为详情订单(往往记录 总订单 中的 商品)
如:总订单
详情订单:

那么,当我们 开始 点餐的时候,会将改产品的所有信息(订单编号、名字、价格···)传入到后台,在后台将 所有 信息 封装 在一个 类 中。传入到service层,在service 中,对其进行逻辑处理(该部分比较重要):
由于我们的订单中没有任何数据,所以,我们需要通过判断 order表中是否 有该订单编号,如果没有该订单编号(我们传来的订单编号),我们就 创建 该Order,并将product数据添加进去,同时,我们还需要添加在orderDetail(详情订单表)中,
注意**):
当我们,将product添加到了order中,
我们必须得到刚才添加的那条数据 中的 id,作为OrderDetail(详情表单。如上上图)中的orderid。然后再product添加到orderDetail表中

因此,我们点的第一份餐 已经成功添加 到了 订单 和 详情订单中。
当我们点第二份product 时候,通过判断 该订单已经存在,因为我们只需要修改Order中的 数量 和 价格 就ok了(但是,我们还是需要通过订单的id 作为条件),同时再添加详情表单。
如图:这样,我们就完成了简单的添加 product 了。

下次的任务:删除product 和 对购物车中 Product数量的改变。

2019-6-10 终于更新了 哈哈

虽然,有10多天没有更新了,但是,还是有一直在写的,这次写了好多好多的内容了。下面是我这些天写的内容的清单
1.在我们的商城里面取消订单(同时修改数据库的内容)
2.将我们点餐的菜品提交 到购物车里面,为了在购物车中可以增加商品的数量
3.对菜品的删除操作(这个有一点点的复杂)

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

一.在我们的商城里面取消订单(同时修改数据库的内容)


在我们添加了商品后,我们如果不小心点错了或者不想要了,可以删除该商品,那我们就需要将该商品的部分信息传到后台。


在接收了前台的信息后,我们就需要在Service层来进行业务逻辑的处理了。
首先,判断是否存在该订单号(肯定存在的),因为是删除订单详情订单里面的数据,我们需要得到订单里面的TotalCount,判断其数量是否<=1,如果是,就将该订单删除,如果不是,就修改订单的数量和金额,同时删除详情订单里面菜品。

之后,就修改一下显示在前端的金额跟数量就Ok了

二.将我们点餐的菜品提交 到购物车里面,为了在购物车中可以增加商品的数量

今天突然发现,以前写的这个步骤时候有一点点 小bug ,但目前不影响我们的正常操作,可以放心的阅读。后面,会更改的。

接下来,就该将我们点的菜品,提交给我们的购物车,然后显示出来了
目前是这个状态

当我们提交订单后,


如果,我们需要将咱们点的餐显示在购物车的话,这里就需要用到wx.setstoragesync(同步)或者 wx.setstorage(异步)来操作了。它们之间的区别可以百度一下啦。

因为我们,点了一下提交订单按钮,于是,我们就向后台请求了一个方法,将我们的订单号传入到后台,通过订单号找到orderId,再通过orderId,找到我们点的菜品。将详情订单 中,属于订单的id给查找出来,然后返回给前台,存在wx.setstoragesync缓存中,它就相当于JavaWeb中的Session域差不多咯。

订单表详情订单表


这样取出来后,就存入wx.setStoragesync中。

然后,我们再购物车界面中,wx.getStorageSync取出数据,然后进行数据的渲染,就会显示出我们点的菜品,

当然,这里我们就需要了解一下页面的生命周期了。onShow(每进入一次页面都会调用)、onLoad(只执行第一次加载页面)这2个方法的区别了。

所有在我们,要加载数据的时候,最好考虑一下,数据是否被频繁的使用,用的少的话,我们就写进onload中,用的多的话,就写进onshow中,当然,还有其他的生命周期函数,可以查查百度。

接下来就是我们,对其数量的增减了。

…之前,写完了只会,就每怎么更新了。不过,后面有时间的话,再补补吧。

完成后的样子:

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。