【云岚到家】-day07-4-实战项目-优惠券活动-项目准备

embedded/2024/10/18 9:28:44/

【云岚到家-即刻体检】-day07-4-实战项目-优惠券活动-活动管理

  • 1 模块需求分析
    • 1.1 业务流程
    • 1.2 界面原型
    • 1.3 业务模块
  • 2 模块设计
    • 2.1 数据流
    • 2.2 表结构设计
      • 2.2.1 优惠券活动表设计
      • 2.2.2 优惠券表设计
      • 2.2.3 优惠券核销表
      • 2.2.4 优惠券退回表
    • 2.3 创建数据库
    • 2.4 创建工程


1 模块需求分析

1.1 业务流程

优惠券是最常用的一种营销活动,优惠券模块涉及到优惠券活动管理、抢券、优惠券核销三部分,涉及到的用户角色有运营人员和用户,下图是优惠券模块的整体业务流程。

优惠券活动管理:

运营人员在后台添加优惠券活动,包括:新增优惠券活动、修改优惠券活动、撤销优惠券活动等操作。

抢券:

优惠券到达发放时间用户领取优惠券,因为优惠券的数量有限,当到达发放时间后平台所有用户都可以抢券,先到先得。

优惠券核销:

用户抢到优惠券即可在下单时使用优惠券,享受优惠,如果取消订单将退回优惠券,优惠券退回后可用于其它订单。

在这里插入图片描述

1.2 界面原型

查询优惠券活动信息:

在这里插入图片描述

在这里插入图片描述

新增优惠券活动:

在这里插入图片描述

抢券:

到达优惠券发放时间用户开始抢券,在抢券界面列出了进行中的活动和即将开始的活动。

在这里插入图片描述

用券:

在下单时选择优惠券:

在这里插入图片描述

在这里插入图片描述

支付金额减去优惠金额:

在这里插入图片描述

1.3 业务模块

根据流程分析,优惠券模块可分为三个小模块,如下:

在这里插入图片描述

优惠券活动管理

对优惠券活动进行管理,运营人员新增优惠券活动、修改优惠券活动、撤销优惠券活动及优惠券统计等。

抢券

到了优惠券发放时间用户进行抢券,抢券过程对优惠券库存、对用户领取优惠券数量等进行校验,抢券成功记录用户领取优惠券的记录。

核销

用户在下单时使用优惠券得到优惠金额,实付金额等于订单金额减去优惠金额,下单成功优惠券核销成功。

优惠券核销是指:顾客在购买商品使用优惠券,当此次消费符合优惠券的条件时提交订单后将优惠券的折扣应用到顾客的订单中,最后将优惠券标记为已使用或作废。

优惠券核销后还可以取消核销,如果用户取消订单会将优惠券取消核销即退回优惠券,退回优惠券后可以继续使用。

2 模块设计

2.1 数据流

根据需求分析优惠券模块的数据流如下:

在这里插入图片描述

优惠券活动表

优惠券活动管理模块主要操作优惠券活动表。

优惠券活动记录优惠券活动信息,运营人员新增优惠券活动将写入此表,此表是优惠券管理主要维护的表。

关键字段:活动id、活动名称、优惠券类型、折扣、发放时间等。

优惠券表

抢券模块主要操作优惠券表。

优惠券表记录用户领取的优惠券,用户抢券存在限制,每种优惠券一个用户只允许领取一张,优惠券的总数有限制。

关键字段:用户id、活动id、折扣、优惠券类型、有效期等。

举例:一个优惠券活动发放100张优惠券最多有100个用户去领取,每人领取一张,每个用户领取的一张优惠券会记录在优惠券表中,即该优惠券活动对应优惠券表最多100条记录。

优惠券核销表:

在使用优惠券模块当用户成功使用一张优惠券会在优惠券核销表记录一条记录,记录是哪个用户的哪个订单使用了哪个优惠券。

关键字段 :用户id、优惠券id、订单id,核销时间。

优惠券退回表

如果用户取消订单,则会退回优惠券,具体操作是向优惠券退回表添加一条记录(记录用户退回优惠券的信息),并向优惠券核销表删除一条对应的记录,表示取消优惠券的核销。

关键字段:用户id、优惠券id、退回时间。

2.2 表结构设计

2.2.1 优惠券活动表设计

记录优惠券活动信息,运营人员新增优惠券活动将写入此表,此表是优惠券管理主要维护的表。

结构如下:

sql">create table `jzo2o-market`.activity
(id                    bigint                                 not null comment '活动id'constraint `PRIMARY`primary key,name                  varchar(100) default '0'               not null comment '活动名称',type                  int                                    not null comment '优惠券类型,1:满减,2:折扣',amount_condition      decimal(10, 2)                         not null comment '使用条件,0:表示无门槛,其他值:最低消费金额',discount_rate         int          default 0                 not null comment '折扣率,折扣类型的折扣率,8折就是存80',discount_amount       decimal(10, 2)                         null comment '优惠金额,满减或无门槛的优惠金额',validity_days         int          default 0                 not null comment '优惠券有效期天数,0:表示有效期是指定有效期的',distribute_start_time datetime                               not null comment '发放开始时间',distribute_end_time   datetime                               not null comment '发放结束时间',status                int                                    not null comment '活动状态,1:待生效,2:进行中,3:已失效 4:作废',total_num             int          default 0                 not null comment '发放数量,0:表示无限量,其他正数表示最大发放量',stock_num             int          default 0                 not null comment '库存',create_time           datetime     default CURRENT_TIMESTAMP not null comment '创建时间',update_time           datetime     default CURRENT_TIMESTAMP not null on update CURRENT_TIMESTAMP comment '更新时间',create_by             bigint                                 null comment '创建人',update_by             bigint                                 null comment '更新人',is_deleted            tinyint      default 0                 not null comment '逻辑删除'
)charset = utf8mb4;

说明:

amount_condition:0表示无门槛,其它值表示最低消费金额。

discount_rate:当优惠券类型为2折扣时在此字段中存储折扣率。

discount_amount:当优惠券类型为1满减时在此字段中存储优惠券金额。

status:活动状态字段值包括:1:待生效,2:进行中,3:已失效 4:作废 几种,优惠券活动的初始状态是待生效,当到达优惠券发放时间时状态将改为进行中,当到达结束时间时状态改为已失效,当撤销活动后状态为作废。

2.2.2 优惠券表设计

记录用户领取的优惠券,结构如下:

sql">create table `jzo2o-market`.coupon
(id               bigint                             not null comment '优惠券id'constraint `PRIMARY`primary key,name             varchar(255)                       not null comment '优惠券名称',user_id          bigint                             not null comment '优惠券的拥有者',user_name        varchar(50)                        null comment '用户姓名',user_phone       varchar(20)                        null comment '用户手机号',activity_id      bigint                             not null comment '活动id',type             int                                not null comment '使用类型,1:满减,2:折扣',discount_rate    int      default 0                 null comment '折扣',discount_amount  decimal(10, 2)                     null comment '优惠金额',amount_condition decimal(10, 2)                     not null comment '满减金额',validity_time    datetime                           null comment '有效期',use_time         datetime                           null comment '使用时间',status           tinyint                            not null comment '优惠券状态,1:未使用,2:已使用,3:已失效',orders_id        varchar(50)                        null comment '订单id',create_time      datetime default CURRENT_TIMESTAMP not null comment '创建时间',update_time      datetime default CURRENT_TIMESTAMP not null on update CURRENT_TIMESTAMP comment '更新时间',is_deleted       tinyint  default 0                 not null comment '逻辑删除'
)charset = utf8mb4;create index user_my_query_indexon `jzo2o-market`.coupon (user_id, status)comment '用户查询我的优惠券快捷索引';

2.2.3 优惠券核销表

用户成功使用优惠券的记录,记录是哪个用户的哪个订单使用了哪个优惠券。

结构如下:

sql">create table `jzo2o-market`.coupon_write_off
(id                  bigint      not nullconstraint `PRIMARY`primary key,coupon_id           bigint      not null comment '优惠券id',user_id             bigint      not null comment '用户id',orders_id           bigint      not null comment '核销时使用的订单号',activity_id         bigint      not null comment '活动id',write_off_time      datetime    not null comment '核销时间',write_off_man_phone varchar(20) not null comment '核销人手机号',write_off_man_name  varchar(50) not null comment '核销人姓名'
)comment '优惠券核销表' charset = utf8mb4;

2.2.4 优惠券退回表

用户取消订单后成功退回优惠券的记录,记录哪个用户退回了哪个优惠券。

结构如下:

sql">create table `jzo2o-market`.coupon_use_back
(id             bigint   not null comment '回退记录id'constraint `PRIMARY`primary key,coupon_id      bigint   not null comment '优惠券id',user_id        bigint   not null comment '用户id',use_back_time  datetime not null comment '回退时间',write_off_time datetime null comment '核销时间'
)comment '优惠券使用回退记录' charset = utf8mb4;

2.3 创建数据库

创建数据库:jzo2o-market

导入:jzo2o-market-init.sql

在这里插入图片描述

2.4 创建工程

在git 远程仓库创建 jzo2o-market工程,创建分支dev_01并切换到该分支。

从资料中获取源码:jzo2o-market-01-0.zip,解压源码到jzo2o-market目录。

在这里插入图片描述

在这里插入图片描述

下边在nacos创建配置jzo2o-market.yaml文件

进入nacos创建jzo2o-market.yaml

在这里插入图片描述

配置文件内容如下:

rabbit-mq:enable: true
xxl-job:executor:port: 11610

http://www.ppmy.cn/embedded/128416.html

相关文章

mac 录屏(视频+内外部声音)

mac 的 QuickTime Player 快捷键 cmd shift 5 自带录屏功能 但 QuickTime 本身只支持录制来自麦克风的声音,而不支持直接录制系统内部的音频。 为了实现 QuickTime Player 同时录制系统声音和麦克风声音,你可以通过安装第三方音频插件来达到目的。以…

HarmonyOS NEXT 应用开发实战(六、组件导航Navigation使用详解)

在鸿蒙应用开发中,Navigation 组件是实现界面间导航的重要工具。本文将介绍如何使用 Navigation 组件实现页面跳转及参数传递,确保你能轻松构建具有良好用户体验的应用。 当前HarmonyOS支持两套路由机制(Navigation和Router)&…

【Java】集合中单列集合详解(一):Collection与List

目录 引言 一、Collection接口 1.1 主要方法 1.1.1 添加元素 1.1.2 删除元素 1.1.3 清空元素 1.1.4 判断元素是否存在 1.1.5 判断是否为空 1.1.6 求取元素个数 1.2 遍历方法 1.2.1 迭代器遍历 1.2.2 增强for遍历 1.2.3 Lambda表达式遍历 1.2.4 应用场景 二、…

python项目实战——下载美女图片

python项目实战——下载美女图片 文章目录 python项目实战——下载美女图片完整代码思路整理实现过程使用xpath语法找图片的链接检查链接是否正确下载图片创建文件夹获取一组图片的链接获取页数 获取目录页的链接 完善代码注意事项 完整代码 import requests import re import…

【GaussDB】GaussDB 200介绍

简介 GaussDB 200是一个分布式并行关系型数据库系统。提供了以下功能: 标准SQL支持 支持标准的SQL-92/SQL:1999/SQL:2003规范,支持GBK和UTF-8字符集,支持SQL标准函数与分析函数,支持存储过程。 数据库存储管理功能 支持表空间&a…

【C#生态园】提升数据处理效率:C#中多款数据清洗库全面解析

数据清洗利器:探索C#中的多款数据处理库 前言 在现代软件开发中,数据清洗和处理是非常常见的任务。特别是在C#开发中,处理各种数据文件如CSV、Excel等是一个必不可少的环节。为了更高效地完成这些任务,我们需要依赖一些优秀的数…

碳钎维:无人机轻量化关键材料!

一、碳纤维材料特性 轻质高强: 碳纤维是一种含碳量在95%以上的高强度新型纤维材料,具有极高的比强度和比刚度。 在同等重量下,其拉伸强度可达到钢、铝合金、钛合金的9倍以上,弹性模量可以达到钢、铝合金、钛合金的4倍以上。 耐…

M1 Mac打开Jupyter notebook

当我成功安装了Jupyter之后,发现无法通过 jupyter notebook 开始工作。 最初的问题是 zsh command not found 该问题是个路径问题,通过添加PATH环境变量就行了,设置环境变量时需要注意,zshrc和bash_profile中都可以设置&…