点餐小程序实战教程09-订单功能开发

简介: 点餐小程序实战教程09-订单功能开发



我们上一篇已经将商品加入了购物车,如果购买完毕,点击选好了按钮就进入到订单确认页面,确认无误后就写入到订单表。为了实现上述的业务逻辑,我们需要先创建数据源来保存数据。

1 创建数据源

订单的话我们需要创建两个数据源,包括订单数据源及订单明细数据源。这两个数据源是一个一对多的关系。

什么是一对多呢?我们目前这个场景,你下单的时候订单是只有一条记录,而订单里又包含你选购的多个商品,这样就形成了一对多的关系。

在数据源中,一的一方我们叫主表,记录唯一。而多的一方叫子表,它引用的主表的数据标识可以重复。

对基本概念了解之后,我们来实操一下。打开控制台,点击数据源的新建按钮,创建一个数据源,输入名称订单信息。

第一个字段我们添加订单编号,类型是自动编号

第二个字段添加openid,用来记录是谁下的单,类型选择文本

第三个字段添加订单状态,类型选择枚举,枚举值分别是待支付、已支付、待配送、已配送、待评价、已评价、已完成

第四个字段添加支付时间,类型选择日期时间

第五个字段添加配送地址,类型选择文本

第六个字段添加总价,类型选择数字

最后添加一个字段备注,类型选择文本

订单信息数据源创建好之后,我们创建一个订单明细数据源,记录用户购买的菜品详情

字段分别添加菜品名称,单价,购买数量

因为订单明细是子表还需要添加一个关联关系字段,关联到主表的数据标识

2 订单确认功能

点击选好了按钮,我们要跳转到订单确认页面,因此需要先新建一个页面

在页面中先添加一个文本组件,修改为订单明细

然后添加一个数据列表组件,模板选择商品列表,数据源可以保持默认

选择循环展示组件,我们绑定变量,绑定为cartList

修改图片的地址,绑定为所在行的图片字段

第一个文本字段绑定为菜品的名称

第三个文本字段绑定为价格

将原来的图标组件替换成文本组件,绑定数量字段

在数据列表组件再添加一个文本字段,显示总价

`共计:${$w.app.dataset.state.cartList.reduce((total,current)=>{
    return total+current.cpjg*current.count
},0).toFixed(2)}元`

3 提交订单

订单确认之后我们就需要将数据写入到订单表里,先在页面添加一个按钮,改为提交订单

在代码区点击新建,创建一个自定义方法

输入如下代码

export default async function ({ event, data }) {
  try {
    const total = $w.app.dataset.state.cartList.reduce((total, current) => {
      return total + current.cpjg * current.count
    }, 0).toFixed(2)
    const data = await $w.cloud.callDataSource({
      dataSourceName: "ddxx_h6bpo7o",
      methodName: "wedaCreateV2",
      params: {
        data: {
          openid: $w.auth.currentUser.openId,
          ddzt: "1",
          zj: total
        },
      },
    });
    const id = data.id
    const list = $w.app.dataset.state.cartList.map(item => ({ cpmc: item.cpmc, dj: item.cpjg, gmsl: item.count, ddxx: id }))
    const ddmx = await $w.cloud.callDataSource({
      dataSourceName: "ddmx_fk27cb3",
      methodName: "wedaBatchCreateV2",
      params: {
        data: list,
      },
    });
    $w.utils.navigateTo({
      pageId: 'u_ding_dan_cheng_gong', // 页面 Id
      params: { id: id },
    });
  } catch (e) {
    console.log("错误代码", e.code, "错误信息", e.message);
  }
}

代码的逻辑是先写入主表信息,我们调用的数据源方法新增单条,写入后会返回记录的数据标识,然后我们构造一下子表的记录,这里是订单明细。构造的时候需要写入主表的数据标识,构造好之后我们调用了批量新增的方法。

记录写入完毕后我们调用了跳转到新页面的api,传入了页面的标识和入参

4 订单成功页面

订单成功页面我们放一个图标显示提交成功,用数据详情组件查询一下订单的编号,然后放一个按钮用来返回首页

选中页面组件,设置一下URL参数,这个参数用来接收我们在订单提交页面的传入的参数

数据详情组件要设置筛选条件,让我们订单数据源的数据标识等于我们传入的参数

然后文本组件绑定我们的订单编号字段即可

给按钮组件绑定事件,设置返回首页

经过以上的步骤,一个订单功能就开发好了。

总结

本篇我们介绍了订单功能的开发,主要是需要构造主子表的数据,然后写入对应的数据源。初学者因为技术基础薄弱,尤其操作数据源这块就比较困扰了,这个主要需要熟读文档,然后按照你自己的需求多练习一下才可以掌握。

相关文章
ly~
|
6天前
|
存储 供应链 小程序
除了微信小程序,PHP 还可以用于开发哪些类型的小程序?
除了微信小程序,PHP 还可用于开发多种类型的小程序,包括支付宝小程序、百度智能小程序、抖音小程序、企业内部小程序及行业特定小程序。在电商、生活服务、资讯、工具、娱乐、营销等领域,PHP 能有效管理商品信息、订单处理、支付接口、内容抓取、复杂计算、游戏数据、活动规则等多种业务。同时,在企业内部,PHP 可提升工作效率,实现审批流程、文件共享、生产计划等功能;在医疗和教育等行业,PHP 能管理患者信息、在线问诊、课程资源、成绩查询等重要数据。
ly~
38 6
|
6天前
|
JSON 小程序 前端开发
创建一个属于自己的小程序(注册开发账号)
介绍如何创建微信小程序账号,包括注册流程、下载安装微信开发者工具、创建项目以及项目结构介绍。
创建一个属于自己的小程序(注册开发账号)
ly~
|
6天前
|
开发框架 小程序 前端开发
抖音小程序的开发难度大吗?
抖音小程序的开发难度因人而异,主要取决于开发者经验、技能及功能需求。技术上需掌握前端技术及抖音开发框架,了解平台生态与规则;设计上需符合用户审美和习惯,具备创新性和实用性。此外,严格的审核标准和激烈的市场竞争增加了开发难度,开发者需制定有效推广策略并持续优化小程序以保持竞争力。
ly~
39 4
|
6天前
|
小程序 JavaScript API
微信小程序开发学习之页面导航(声明式导航和编程式导航)
这篇文章介绍了微信小程序中页面导航的两种方式:声明式导航和编程式导航,包括如何导航到tabBar页面、非tabBar页面、后退导航,以及如何在导航过程中传递参数和获取传递的参数。
微信小程序开发学习之页面导航(声明式导航和编程式导航)
|
27天前
|
移动开发 小程序 JavaScript
uni-app开发微信小程序
本文详细介绍如何使用 uni-app 开发微信小程序,涵盖需求分析、架构思路及实施方案。主要功能包括用户登录、商品列表展示、商品详情、购物车及订单管理。技术栈采用 uni-app、uView UI 和 RESTful API。文章通过具体示例代码展示了从初始化项目、配置全局样式到实现各页面组件及 API 接口的全过程,并提供了完整的文件结构和配置文件示例。此外,还介绍了微信授权登录及后端接口模拟方法,确保项目的稳定性和安全性。通过本教程,读者可快速掌握使用 uni-app 开发微信小程序的方法。
57 3
|
15天前
|
小程序 前端开发 JavaScript
Java开发工程师转小程序开发的前景如何?
Java开发工程师转小程序开发的前景如何?
26 0
|
25天前
|
小程序 前端开发 JavaScript
开发支付宝小程序的思路
【9月更文挑战第7天】本文介绍了一种在支付宝小程序中实现网页抓取的方法,通过云函数或自建后端服务来解析外部网页的标题、描述和图片。具体步骤包括:用户输入链接,小程序调用云函数抓取并解析网页内容,最后将结果返回并在前端展示。文中详细介绍了使用 Node.js 的云函数实现过程,包括代码示例和小程序前端页面的实现方法。通过这种方式,可以显著提升链接分享的用户体验。
32 0
|
2月前
|
小程序 前端开发 Java
SpringBoot+uniapp+uview打造H5+小程序+APP入门学习的聊天小项目
JavaDog Chat v1.0.0 是一款基于 SpringBoot、MybatisPlus 和 uniapp 的简易聊天软件,兼容 H5、小程序和 APP,提供丰富的注释和简洁代码,适合初学者。主要功能包括登录注册、消息发送、好友管理及群组交流。
60 0
SpringBoot+uniapp+uview打造H5+小程序+APP入门学习的聊天小项目
|
2月前
|
小程序 前端开发 JavaScript
【项目实战】SpringBoot+uniapp+uview2打造一个企业黑红名单吐槽小程序
【避坑宝】是一款企业黑红名单吐槽小程序,旨在帮助打工人群体辨别企业优劣。该平台采用SpringBoot+MybatisPlus+uniapp+uview2等技术栈构建,具备丰富的注释与简洁的代码结构,非常适合实战练习与学习。通过小程序搜索“避坑宝”即可体验。
61 0
【项目实战】SpringBoot+uniapp+uview2打造一个企业黑红名单吐槽小程序
|
2月前
|
存储 小程序 JavaScript
下一篇
无影云桌面