技术栈

Appgallery connect

开发准备

上一节我们已经实现了优惠券的选择,并且成功的把券后的价格也展示给用户,不能使用的优惠券我们也用友好的方式告知用户,这一节我们来实现优惠券内容的下一步,优惠券内容结合订单进行结算提交

功能分析

因为我们之前的订单列表是订单相关商品相关是分开的,所以在这里我们同样要把优惠券的内容分开,只存储id进去后续再查询出对应的券金额,我们首先就是要修改订单表,然后在券选择的同时拿到优惠券的相关内容,提交订单时把优惠券内容一起提交,方便我们后续的订单详情内查询券后价

代码实现

首先修改orderlist的表内容

{"CloudDBZoneName": "default","objectTypeName": "order_list","fields": [{"fieldName": "id", "fieldType": "Integer", "notNull": true, "belongPrimaryKey": true},{"fieldName": "user_id", "fieldType": "Integer", "notNull": true, "defaultValue": 0},{"fieldName": "order_code", "fieldType": "String"},{"fieldName": "order_status", "fieldType": "Integer"},{"fieldName": "order_product_id", "fieldType": "String"},{"fieldName": "coupon_id", "fieldType": "Integer"},{"fieldName": "address", "fieldType": "String"},{"fieldName": "nickname", "fieldType": "String"},{"fieldName": "phone", "fieldType": "String"},{"fieldName": "order_remark", "fieldType": "String"},{"fieldName": "pay_type", "fieldType": "String"},{"fieldName": "order_create_time", "fieldType": "String"},{"fieldName": "order_pay_time", "fieldType": "String"},{"fieldName": "order_delivery_time", "fieldType": "String"},{"fieldName": "order_over_time", "fieldType": "String"}],"indexes": [{"indexName": "field1Index", "indexList": [{"fieldName":"id","sortType":"ASC"}]}],"permissions": [{"role": "World", "rights": ["Read", "Upsert", "Delete"]},{"role": "Authenticated", "rights": ["Read", "Upsert", "Delete"]},{"role": "Creator", "rights": ["Read", "Upsert", "Delete"]},{"role": "Administrator", "rights": ["Read", "Upsert", "Delete"]}]
}

然后我们在选择券的时候拿到券的id,这里我们用回调的方式实现

//自定义弹窗页面onItemSelected: (coupon_id:number) => void= () => {};//结算页@State coupon_id:number=0couponController: CustomDialogController| null = new CustomDialogController({builder: CouponCheckDialog({couponPrice:this.couponPrice,price:this.price(),onItemSelected:(coupon_id:number)=>{this.coupon_id=coupon_id}}),alignment: DialogAlignment.Bottom,customStyle:true});

结算订单时合并信息提交

 Text("提交订单").fontColor(Color.White).padding(10).borderRadius(10).backgroundColor("#d81e06").fontSize(14).onClick(async ()=>{if (this.addressInfo!=null) {let databaseZone = cloudDatabase.zone('default');try {for (let i = 0; i < this.productList.length; i++) {let productPush = new order_product_list();productPush.id=this.codeId+iproductPush.order_product_id=this.codeIdproductPush.img=this.productList[i].productImgAddressproductPush.price=this.productList[i].productPriceproductPush.name=this.productList[i].productNameproductPush.originalPrice=this.productList[i].productOriginalPriceproductPush.spec=this.productList[i].productSpecNameproductPush.buyAmount=this.productList[i].buyAmountlet num = await databaseZone.upsert(productPush);hilog.info(0x0000, 'testTag', `Succeeded in upserting data, result: ${num}`);}}catch (e) {hilog.info(0x0000, 'testTag', `Succeeded in upserting data, result: ${e}`);}let orderPush = new order_list();orderPush.id=Math.floor(Math.random() * 1000000)orderPush.user_id=this.user!.user_idorderPush.order_product_id=String(this.codeId)orderPush.order_code=this.generateOrderNo(10)orderPush.order_status=0if (this.remark!='') {orderPush.order_remark=this.remark}orderPush.coupon_id=this.coupon_idorderPush.address=this.addressInfo.addressorderPush.nickname=this.addressInfo.nikeNameorderPush.phone=this.addressInfo.phoneorderPush.order_create_time=this.formatCurrentDate()orderPush.order_pay_time=this.formatCurrentDate()let num = await databaseZone.upsert(orderPush);hilog.info(0x0000, 'testTag', `Succeeded in upserting data, result: ${num}`);if (num>0) {for (let i = 0; i < this.productList.length; i++) {if (this.productList[i].isNeedPay) {let item = new cart_product_list();item.id=this.productList[i].idlet listData = await databaseZone.delete(item);hilog.info(0x0000, 'testTag', `Succeeded in upserting data, result: ${listData}`);}}let eventData: emitter.EventData = {data: {}};let innerEvent: emitter.InnerEvent = {eventId: 1012,priority: emitter.EventPriority.HIGH};emitter.emit(innerEvent, eventData);router.replaceUrl({url:'pages/view/OrderSuccessPage',params:orderPush})}} else {showToast("请先选择地址")}})

到这里我们就实现了结算订单跟优惠券的关联

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

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Python+Selenium+Pytest+POM自动化测试框架封装

&#x1f345; 点击文末小卡片 &#xff0c;免费获取软件测试全套资料&#xff0c;资料在手&#xff0c;涨薪更快 1、测试框架简介 1&#xff09;测试框架的优点 代码复用率高&#xff0c;如果不使用框架的话&#xff0c;代码会显得很冗余。可以组装日志、报告、邮件等一些…

宋代大模型:智能重构下的文明再发现

引言&#xff1a;当汴京城遇见生成式AI 一幅动态的《清明上河图》正通过全息投影技术演绎汴京城的市井百态。这个虚实交融的场景&#xff0c;恰似宋代大模型技术的隐喻——以人工智能为纽带&#xff0c;连接起东京梦华的繁盛图景与数字时代的文明重构。作为人工智能与历史学交…

K-means++:让K-means“聪明”地选择初始中心点

大家好&#xff01;欢迎来到我的技术分享博客~ &#x1f44b; 在前两篇博客中&#xff0c;我们深入探讨了经典的 K-means 算法 以及它的优化方案 Canopy K-means。如果你还没有看过&#xff0c;强烈建议先回顾一下&#xff0c;因为今天的主题 K-means 和它们有着千丝万缕的联系…

Langchain学习笔记(1)——如何调用Huggingface的模型并实现实时返回生成结果

Langchain支持很方便的OpenAI模型的调用&#xff0c;可以做到快速开发大模型应用。但是要使用Huggingface上的开源模型就没有那么方便了&#xff0c;本文就详细阐述如何用Langchain开发基于Huggingface上的模型&#xff0c;并实时返回生成结果。 实时返回生成结果是LLM很关键的…

Java安全-常规漏洞问题(SQL注入,XXE,SSRF,RCE)

靶场搭建 靶场下载 &#xff1a; https://github.com/whgojp/JavaSecLab这个靶场是使用Springboot搭建的所以不要下载 jar 文件运行&#xff0c;要使用IDEA运行他的文件夹 先打开pom 然后进行maven一下 改一下端口 配置完成之后修改一下 运行的模式 使用phpstudy搞一个sql数…

基于视频的 AI 内存库,极速语义检索

简介 在大模型应用里&#xff0c;将文本数据分块嵌入存储在向量数据库已经是标准做法。然而&#xff0c;传统向量数据库虽然功能强大&#xff0c;但其高昂的RAM和存储需求&#xff0c;以及复杂的部署运维&#xff0c;常常让开发者望而却步。今天&#xff0c;介绍一个名为 Memv…

接口适配器模式实现令牌桶算法和漏桶算法

以下是令牌桶算法、漏桶算法和雪花算法的清晰对比解析。它们属于完全不同的技术领域&#xff0c;前两者用于流量控制&#xff0c;后者用于分布式ID生成&#xff1a; 1. 令牌桶算法&#xff08;Token Bucket&#xff09; 领域&#xff1a;流量整形 / 速率限制核心目标&#xff…

618背后的电商逻辑重构:从价格血战到价值共生

“今年终于没做数学题。” 618进行到一半&#xff0c;行云已经买了很多&#xff0c;大件的有iPad、iWatch&#xff0c;小件的有运动鞋、面膜、纸巾。往年她要凑凑减减&#xff0c;经常要找个店铺凑单&#xff0c;下完单再马上退掉&#xff0c;今年她没废太多脑细胞&#xff0c…

解决 PyTorch 与 Python 3.12 的兼容性问题:`operator torchvision::nms does not exist` 深度解析

解决 PyTorch 与 Python 3.12 的兼容性问题 问题现象错误根源分析终极解决方案🚀 推荐方案:创建 Python 3.11 虚拟环境⚡ 备选方案:使用 PyTorch 夜间构建版(Python 3.12)验证修复技术深度解析最佳实践建议问题现象 当在 Python 3.12 环境中运行以下代码时: from tran…

Git 实战场景

四、标签管理 4.1、标签的理解 在使用 Git 进行版本管理时&#xff0c;**标签&#xff08;Tag&#xff09;**扮演着非常重要的角色。它其实就是对某次提交&#xff08;commit&#xff09;的一个简洁标识&#xff0c;相当于给这次提交起了一个可读、易记的“别名”。比如&…

在同态加密系统中,参与角色以及各角色的功能作用流程图,私钥和公钥分发流程,可能遇到的攻击

一、角色划分与职责 角色身份核心任务密钥权限客户端数据所有者 &#xff08;如医院、用户&#xff09;1. 加密原始数据 2. 上传密文至服务器 3. 接收并解密结果&#xff08;可选&#xff09;持有公钥服务器计算服务提供方 &#xff08;如云平台&#xff09;1. 接收客户端密文…

langchain从入门到精通(六)——LCEL 表达式与 Runnable 可运行协议

1. 多组件 invoke 嵌套的缺点 prompt ChatPromptTemplate.from_template("{query}") llm ChatOpenAI(model"gpt-3.5-turbo-16k") parser StrOutputParser() # 获取输出内容 content parser.invoke( llm.invoke( prompt.invoke( {"query": r…

ArcGIS中批量获取输入面图层A中各要素的四至点的实现方法

一、背景及意义 在日常工作中&#xff0c;我们经常会需要获取面图层的四至点&#xff0c;我们能否在ArcGIS中直接获取面图层的四至点呢&#xff1f;答案是肯定的&#xff0c;请继续往下看。 二、大体思路 使用字段计算器计算输入面图层A中各面要素的XY的最大值和最小值&…

大IPD之——华为的战略本质与实践(二)

华为战略执行的能力如此强&#xff0c;有两个核心原因&#xff1a;一是管理体系起了非常重大的作用&#xff1b;二是企业文化导致华为的执行力特别强。华为在战略方面&#xff0c;为什么每次都能转型成功&#xff1f;背后是有很多实质性的内容支撑的。而华为如何做战略&#xf…

『大模型笔记』第3篇:多长的 Prompt 会阻塞其他请求?优化策略解析

『大模型笔记』多长的 Prompt 会阻塞其他请求?优化策略解析 文章目录 一、更简单的问题:长 Prompt 阻塞请求队列1. 请求并行预填方案(Request-Parallel Prefills)二、根本的问题(Fundamental Flaw):Token 生成被并行预填拖慢1. 解耦预填(Disaggregated Prefill):以延迟优…

21 - GAM模块

论文《Global Attention Mechanism: Retain Information to Enhance Channel-Spatial Interactions》 1、作用 这篇论文提出了全局注意力机制&#xff08;Global Attention Mechanism, GAM&#xff09;&#xff0c;旨在通过保留通道和空间方面的信息来增强跨维度交互&#xf…

Java01--使用IDEA编写运行第一个Java程序HelloWorld

一.先新建一个文件夹存放项目(后续可以推送到Gitee) 二.创建项目 1.打开IDEA&#xff0c;点击首页的新建项目 2.新建空项目并命名&#xff0c;存放路径为步骤一创建的文件夹&#xff1a; 3.在新项目中新建一个src文件夹&#xff08;用于集中管理文件&#xff09; 4.在src文件夹…

目标检测相关【清晰易懂】

目标检测相关 &#xff08;b&#xff09;是语义分割&#xff0c;&#xff08;c&#xff09;是实例分割 目标检测 每个目标一个框标签 实例分割 语义分割 识别每一个目标个体 目标检测基础上进一步提升模型能力有两个方向&#xff1a;实例分割、旋转目标检测。 实例分割 …

强化学习 A2C算法

3.actor-critic方法 3.1 Reinforce 算法&#xff0c;也称为蒙特卡洛策略梯度。蒙特卡洛方差 第一节介绍了DQN 在上一节基于策略的方法中&#xff0c;我们的目标是直接优化策略&#xff0c;而无需使用价值函数。更准确地说&#xff0c;Reinforce 是 基于策略的方法 的一个子类…

关于MCU、MPU、SoC、DSP四大类型芯片

目录 MCU、MPU、SoC、DSP四大类型芯片分析 一、MCU 1、概念 2、特点 3、常见芯片 4、应用场景 二、MPU 1、概念 2、特点 3、常见芯片 4、应用场景 三、SoC 1、概念 2、特点 3、常见芯片 4、应用场景 四、DSP 1、概念 2、特点 3、常见芯片 4、应用场景 MCU、…