小程序业务逻辑回忆2

1.用户下单购票业务

购票业务中可购选4中票,普通票、学生票、vip贵宾票、指定日票。购票类型用ticket_id

进行区分,每种类型票用户都可以购买 n张,但是用户只能激活一张,其他票可用于转增。

用户下单购票时首先以user_id创建order表,然后用工具类生成订单号,更新购买时间purchase_time为当前时间、付款状态payment_status初始状态为默认状态"未付款",总价mount为该订单id下的Order_item所有discount相加,生成的订单号作为order_item的order_number进行存储,更新orginal_user_id和current_owner_id为当前user_d

其中original_user_id原始购买人的用户ID,current_owner_id当前拥有者的用户ID,这两个字段主要用于判断票劵激活业务,和转赠业务.

生成票劵代码activation_code,更新票劵状态code_status为"未付款"

根据ticket_id的is_discount状态判断是否参加折扣,discount折后金额按照打折规则进行计算.

提交订单后调用微信支付功能,然后回传付款状态判断付款状态,15分钟未付款更新order表payment_status为"已关闭",15分钟已付款更新order表中付款状态payment_status为已付款,更新order表当前未退款金额current_mount为订单总金额mount(用于最后计算用户积分)

更新该订单id下order_item表中票劵状态code_status为"未激活"

更新该订单id下order_item表中退款状态refund为"未退款"

综上功能逻辑,设计数据库

ticket表,通用主键id,字段is_discount表示是否打折,name会议票种类名称,price价格

order订单表,通用主键id,user_id用户id(已激活票劵业务查询中可根据此id查询用户的个人信息),

order_number订单号,purchase_time购买时间,payment_status付款状态(已付款\未付款),mount订单总金额(各个票劵折后累加总金额),current_mount(当前未退款金额)

order_items门票订单表,通用主键id,order_id订单id,ticket_id门票信息id,正常情况下订单与门票属于1对多情况order表中设置一个ticket_id就行,不应设置中间表,表拆开后,积分运算更为简单(current_mount当前未退款金额是个实时更新的字段),而且就UI设计界面来说查询信息更为直观

original_user_id原始购买人的用户ID,current_owner_id当前拥有者的用户id

activation_code票劵代码,code_status票劵状态(激活\未激活\已作废,用于未激活票劵列表查询展示)

registration number 注册登记号,仅限已激活的会议门票,激活时生成并保持唯一

activated_time 激活时间,未激活票此字段为空

refund票据退款状态(未退款\已退款\退款中)

discount折后金额   code_url二维码URL

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

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

相关文章

k8s_服务发现专题

在 Kubernetes 中,服务发现(Service Discovery)是指如何在集群内不同的应用程序或服务之间找到并与其他服务通信。Kubernetes 提供了内置的服务发现机制,通过服务(Service)和 DNS 解析来实现。这使得在集群内部署和管理应用程序变得更加方便和高效。 我们带着以下问题开…

css恢复默认样式

重置样式为浏览器默认样式&#xff1b; .element-reset {all: revert;outline-style: revert !important;-webkit-appearance: revert !important; }<input type"button" value"跳转" class"element-reset" />

java构建一个OA审批系统

构建一个完整的OA审批系统涉及多个模块&#xff0c;包括用户管理、权限控制、审批流程设计以及前端界面等。以下是一个综合性的示例&#xff0c;展示了如何整合这些模块并实现基本功能。 ### 数据库设计 首先&#xff0c;定义一些基本的数据库表结构&#xff0c;用于存储用户…

芜湖市各地企业技术中心补助指南 附镜湖鸠江技术中心申报奖励+认定条件周期+流程

芜湖市各地企业技术中心申报周期 省企业技术中心的认定&#xff0c;原则上每年进行一次。各市经济和信息化主管部门根据省经济和信息化厅通知要求报送申请材料&#xff0c;受理截止日期以当年工作通知为准。 芜湖市各地企业技术中心补助汇编 市级&#xff08;2023年兑现政策…

电商项目测试实战之购物车页面用例设计

&#x1f345; 视频学习&#xff1a;文末有免费的配套视频可观看 &#x1f345; 点击文末小卡片&#xff0c;免费获取软件测试全套资料&#xff0c;资料在手&#xff0c;涨薪更快 一、购物车页面 二、购物车页面测试范围列表 三、购物车页面功能点需求分析 四、部分功能点的测试…

vscode CMAKE 配置调试

概述 记录使用VSCODE中的CMAKE拓展构建项目时出现的报错 CMakePresets.json&#xff1a; {"version": 6,"configurePresets": [{"name": "x64-debug","displayName": "x64-debug","cmakeExecutable":…

Hi3861 OpenHarmony嵌入式应用入门--中断按键

本篇讲解gpio的中断使用方式。 硬件原理图如下&#xff0c;与上一篇一样的电路 GPIO API API名称 说明 hi_u32 hi_gpio_init(hi_void); GPIO模块初始化 hi_u32 hi_io_set_pull(hi_io_name id, hi_io_pull val); 设置某个IO上下拉功能。 hi_u32 hi_gpio_set_dir(hi_gpio_…

cefsharp 修改请求头request.Headers,以实现某种请求验证(v100+已测试)含主要源码和注释

(一)目的:cefsharp实现修改请求头 Tip:网上搜的很多代码都无法实现(要么版本较低,方法有变,要么就行不通),较多的错误是:集合属性只读。其中一个bili网友的测试方法注解一张图,但没有具体代码。参考一下。 (二)实现方法 2.1 创建对象 ChromiumWebBrowser home…

数据库精选题(二)(引言+关系代数)

&#x1f308; 个人主页&#xff1a;十二月的猫-CSDN博客 &#x1f525; 系列专栏&#xff1a; &#x1f3c0;数据库 &#x1f4aa;&#x1f3fb; 十二月的寒冬阻挡不了春天的脚步&#xff0c;十二点的黑夜遮蔽不住黎明的曙光 目录 前言 常见概念 一、什么是数据库&#xf…

axi4 总线之 axi-full 学习记录

ARSIZE&#xff1a;读突发大小&#xff0c;给出每次突发传输的字节数支持 1、2、4、8、16、32、64、128 ARSIZE 字节数3b00013b00123b01043b01183b100163b101323b110643b111128 ARLEN&#xff1a;8 位&#xff0c;读传输的突发长度。 AXI3 只支持1~16次的突发传输&#xff08;B…

【Git】撤销远程仓库的提交(push)

参考&#xff1a;Git 撤销远程仓库的提交&#xff08;push&#xff09;和本地仓库的提交&#xff08;commit&#xff09;_git 撤销远程提交-CSDN博客 git reset --soft 想要撤销后的版本号 git push origin master -f soft 要撤销的本地代码不会变化&#xff0c;只是git仓库指…

神舟电脑怎么清理缓存文件?介绍几种简单有效方法

随着日常使用神舟电脑的时间增长&#xff0c;各种缓存文件、临时文件以及无用的数据会逐渐堆积&#xff0c;这不仅占据了宝贵的磁盘空间&#xff0c;还可能拖慢系统的运行速度&#xff0c;影响我们的使用体验。因此&#xff0c;定期清理神舟电脑中的缓存文件变得至关重要。本文…

Vue3插件安装

一、volar插件安装 volar&#xff1a;Vue文件的语法提示和高亮提醒。volar已经更名为Vue - Official&#xff0c;其安装步骤如下。 (1)打开vscode&#xff0c;点击扩展面板&#xff0c;在搜索窗口中输入volar&#xff0c;选择Vue - Official进行安装。 &#xff08;2&#xff0…

hpcpack指定节点计算

HPCPack是微软的高性能计算(HPC)解决方案之一&#xff0c;它可以用于在指定的集群节点上进行计算任务。在使用HPCPack时&#xff0c;你可以通过指定节点名称来限制任务运行的位置。 以下是一个示例&#xff0c;展示了如何在HPCPack作业脚本中指定节点计算&#xff1a; <?…

AJAX中get和post的区别

在AJAX&#xff08;Asynchronous JavaScript and XML&#xff09;中&#xff0c;GET 和 POST 是两种常用的HTTP请求方法&#xff0c;它们之间存在一些关键的区别。以下是这些区别的主要点&#xff1a; 请求的目的&#xff1a; GET&#xff1a;通常用于从服务器检索&#xff08;…

如何使用gprof对程序进行性能分析

如何使用gprof对程序进行性能分析 目录 1 gprof概述 2 gprof原理简述 3 gprof使用 3.1 gprof使用简述 3.2 gprof使用示例 4 小结 1 gprof概述 gprof 是 一个 GNU 的程序性能分析工具&#xff0c;可以用于分析C\C程序的执行性能。gprof工具可以统计出各个函数的调用次数、执…

【React篇】useMemo和useCallback的区别

useMemo 和 useCallback 是 React Hooks 中的两个常用函数&#xff0c;它们主要用于优化性能。尽管它们有一些相似之处&#xff0c;但它们的用途和行为有所不同。 useMemo: useMemo 用于在组件渲染时根据提供的依赖项“记忆”一个值。这意味着如果依赖项没有改变&#xff0c;u…

什么是 vCPU?有什么作用

vCPU 是物理 CPU 的虚拟化版本&#xff0c;是云计算的基本组成部分。这些虚拟化计算单元的一大优势是其良好的可扩展性&#xff0c;这也是它们在云托管中发挥重要作用的原因。 vCPU 有什么作用? vCPU(虚拟中央处理器)是物理CPU的虚拟化变体。换句话说&#xff0c;vCPU 是虚拟机…

慎用 np.vstack 和 np.hstack

连接2个array&#xff0c;如果是1维数组&#xff0c;要用 np.hstack&#xff0c;2维数组&#xff0c;要用 np.vstack。 但可以统一用 np.concatenate(, axis0)。 >>> import numpy as np >>> anp.random.randn(3) >>> a array([-0.38378444, 0.…

邀请函 | 桥田智能出席AMTS展会 家族新成员正式发布

作为国际汽车制造技术与装备及材料专业展览会&#xff0c;AMTS将于2024年7月3-5日在上海新国际博览中心举行。本届展会以【向“新”而行 “智”领未来】为主题&#xff0c;聚焦汽车及新能源全产业链&#xff0c;围绕“车身工程、部件工程、新能源三电工程及未来汽车开发”等技…