2019.5.22
1.当我们遍历出数据库中菜单的菜品时,需要为其单个产品添加数量的问题。
解决:在表中加入 购买数量(buycount)的字段
然后,在js文件中,控制当前对象中的buycount 属性。
当我们,完成了添加、减少的数量的操作时候,需要为其保存值在前台,
及 更新 我们遍历list集合 中的 某些 属性。
由于,之前一直在想一个问题:到底是在点餐的 页面 加入数量 还是,将其加入到购物车里面再添加数量的问题。后来还是选择了后者,如图
当我们将菜品一一列在了一个页面中,该图将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中,当然,还有其他的生命周期函数,可以查查百度。
接下来就是我们,对其数量的增减了。
…之前,写完了只会,就每怎么更新了。不过,后面有时间的话,再补补吧。
完成后的样子: