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

news2024/11/19 16:25:27

目录

  • 1 创建数据源
  • 2 订单确认功能
  • 3 提交订单
  • 4 订单成功页面
  • 总结

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

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参数,这个参数用来接收我们在订单提交页面的传入的参数
在这里插入图片描述
数据详情组件要设置筛选条件,让我们订单数据源的数据标识等于我们传入的参数
在这里插入图片描述
然后文本组件绑定我们的订单编号字段即可
在这里插入图片描述
给按钮组件绑定事件,设置返回首页
在这里插入图片描述
经过以上的步骤,一个订单功能就开发好了。

总结

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1081661.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

压缩包过大,如何使用split命令拆分压缩包

split命令介绍 1. 使用案例 将文件rebar_count_datasets.zip拆分为N个大小不超过100M的文件&#xff01; split -b 100M -d rebar_count_datasets.zip datasets.zip.运行效果 2. 常用方式 2.1 压缩 & 文件拆分 # tar -czf - <被压缩的内容> | split -b <目…

【java学习】访问权限修饰符(24)

文章目录 1. 四种访问权限修饰符2. private修饰符3. 无(缺省)修饰符3.1. 什么是父子类 4. protected修饰符5. public修饰符6. 练习题 1. 四种访问权限修饰符 Java 权限修饰符public、protected、private 置于类的成员定义前&#xff0c;用来限定对象对该类成员的访问权限。 修…

【车载开发系列】嵌入式开发之中断向量表

【车载开发系列】嵌入式开发之中断向量表 嵌入式中断向量表 【车载开发系列】嵌入式开发之中断向量表一. 中断向量表的概念1&#xff09;中断向量2&#xff09;中断向量表3&#xff09;中断向量表的存放 二. 中断向量表的特点三. 中断向量表的作用四. 上电后第一条指令五. 芯片…

ardupilot罗盘数据计算航向

目录 文章目录 目录摘要1.数据特点2.数据结论1.结论2.结论摘要 本节主要记录ardupilot 根据罗盘数据计算航向的过程。 如果知道了一组罗盘数据,我们可以粗略估计航向:主要后面我们所说的X和Y都是表示的飞机里面的坐标系,也就是X前Y右边,如果按照罗盘坐标系Y实际在左边。 我…

USB 转串口芯片 CH340

目录 1、概述 2、特点 3、封装 4、引脚 6、参数 6.1 绝对最大值&#xff08;临界或者超过绝对最大值将可能导致芯片工作不正常甚至损坏&#xff09; 6.2 电气参数&#xff08;测试条件&#xff1a;TA25℃&#xff0c;VCC5V&#xff0c;不包括连接 USB 总线的引脚&…

甘特图组件DHTMLX Gantt示例 - 如何有效管理团队工作时间?(一)

如果没有有效的时间管理工具&#xff0c;如工作时间日历&#xff0c;很难想象一个项目如何成功运转。这就是为什么我们的开发团队非常重视项目管理&#xff0c;并提供了多种选择来安排DHTMLX Gantt的工作时间。使用DHTMLX Gantt这个JavaScript库&#xff0c;您可以创建一个强大…

自定义一个简单的操控器类

目录 1. 前言 2. 操控器需求 3. 功能实现 3.1. 预备知识 3.2. 代码实现 3.3. 代码难点说明 1. 前言 osg已经自己实现了很多操控器类&#xff0c;这些操控器类存放在osg源码目录下的src\osgGA目录。感兴趣的童鞋&#xff0c;可以自己去研究源码。下面两篇博文是我研究osg的…

设备管理工具

做了一个代理类,抽象出来后在注册表中&#xff0c;查找已经注册的设备 python 中 dict 和 lua 中的 table 一样高效 先初始化找到的设备通信程序,底层接口准备好C,这个设备调试界面就是可以用的,剩下就是MV了 软件升级已经稳定可用了 包括软件的备份和回滚操作登录时为设备页面…

【工作流引擎】Activiti的使用03

流程定义查询 // 获取部署时的信息ProcessEngine processEngine ProcessEngines.getDefaultProcessEngine();RepositoryService repositoryService processEngine.getRepositoryService();ProcessDefinitionQuery processDefinitionQuery repositoryService.createProcessDe…

直观全面解释Transformer模型;上海人工智能实验室推出首个图文混合创作大模型浦语灵笔

&#x1f989; AI新闻 &#x1f680; 上海人工智能实验室推出首个图文混合创作大模型浦语灵笔 摘要&#xff1a;上海人工智能实验室推出了一款名为浦语灵笔的图文混合创作大模型&#xff0c;并宣布其开源。浦语灵笔基于书生・浦语大语言模型&#xff0c;具备强大的多模态性能…

LabVIEW开发卫星测试平台

LabVIEW开发卫星测试平台 已经有不少的大学和研究机构经常使用立方体卫星。它们的广泛使用通常归因于使用廉价零件、无偿学生劳动和简单的设计。科学、技术、工程和数学学生已被证明可以通过参与实际工作宇宙飞船系统的规划、开发和测试而从中受益。通过鼓励来自不同学术领域的…

Kubernetes----基于kubeadm工具在CentOS7.9虚拟机上部署一主两从类型的1.26版本的Kubernetes集群环境

【原文链接】Kubernetes----基于kubeadm工具在CentOS7.9虚拟机上部署一主两从类型的1.26版本的Kubernetes集群环境 文章目录 一、虚拟机环境准备1.1 准备三台CentOS操作系统的虚拟机1.2 修改主机名1.3 确认CentOS的版本符合要求1.4 配置地址解析1.5 配置时间同步1.6 关闭防火墙…

【jmeter的使用】【性能测试1】

jmeter的使用笔记2 线程并发的设置定时器1&#xff09;同步定时器2&#xff09;准确的吞吐量定时器3&#xff09;常数吞吐量定时器 用户自定义变量设置响应断言聚合报告查看聚合报告参数详解&#xff1a; 前言&#xff1a;使用jmeter进行简单性能测试实践&#xff0c;以百度搜索…

Java中的错误和异常有什么区别和联系?

​ 概述 错误 该错误表示大多数情况是由于系统资源不足而发生的。系统崩溃和内存错误就是错误的例子。它主要发生在运行时。 错误是用户执行意外操作时产生的严重情况&#xff1b;错误大多发生在编译时&#xff0c;如语法错误&#xff0c;但它也可能发生在运行时&#xff1…

UE5:如何解决背景图片被拉伸的问题?

1.在图片外围包裹一个Scale Box组件 2.将图片的尺寸修改为原始尺寸就可解决问题

北美”闲鱼”Poshmark,如何销售提高成单率?附防封养号攻略

Poshmark 是一款美国的社交商务应用程序&#xff0c;被称为北美的”咸鱼“。该平台提供女性、男性、儿童时尚和家居装饰品。目前在美国、加拿大、澳洲、印度均可开通&#xff0c;其余地区暂不支持。 在平台上&#xff0c;用户可以自由上传和销售产品。Poshmark提供安全的支付解…

【Zookeeper专题】Zookeeper选举Leader源码解析

目录 前言阅读建议课程内容一、ZK Leader选举流程回顾二、源码流程图三、Leader选举模型图 学习总结 前言 为什么要看源码&#xff1f;说实在博主之前看Spring源码之前没想过这个问题。因为我在看之前就曾听闻大佬们说过【JavaCoder三板斧&#xff1a;Java&#xff0c;Mysql&a…

设计模式_责任链

责任链模式 介绍 设计模式定义案例责任链模式问题 传给 多个可处理人 这多个处理人做成一个链表学生请假条审核 上课老师&#xff08;3天权限&#xff09; 班主任 &#xff08;5天权限&#xff09; 校长 &#xff08;30天权限&#xff09; 问题堆积在哪里解决办法进一步优…

目标检测新思路:DETR

Transformer是一种基于自注意力机制的神经网络架构&#xff0c;它能够从序列中提取重要信息&#xff0c;已被广泛应用于自然语言处理和语音识别等领域。随着Transformer的提出和发展&#xff0c;目标检测领域也开始使用Transformer来提高性能。 DETR是第一篇将Transformer应用于…

点击弹窗页面右侧缩小问题

主页面是由header和下面的tabel&#xff0c;2个组件构成&#xff0c;需要在css里使用flex布局&#xff0c; 就解决了弹窗导致的页面右侧缩小问题。 display: flex; flex-direction: column; <template><div class"main"><div class"header"…