当前位置: 首页 > news >正文

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

【云岚到家-即刻体检】-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 优惠券活动表设计

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

结构如下:

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 优惠券表设计

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

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 优惠券核销表

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

结构如下:

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 优惠券退回表

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

结构如下:

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.lryc.cn/news/462233.html

相关文章:

  • axios的使用
  • Ubuntu 使用命令克隆和恢复SD卡
  • Java 小游戏《超级马里奥》
  • go语言defer详解
  • 【C语言】循环中断break
  • centos ping能通但是wget超时-解决
  • SDIO - DWC MSHC 电压切换和频率切换
  • EI-CLIP 深度理解 PPT
  • leetcode力扣刷题系列——【最小元素和最大元素的最小平均值】
  • 【线性回归分析】:基于实验数据的模型构建与可视化
  • CountUp.js 实现数字增长动画 Vue
  • 设计模式大全
  • redis IO多路复用机制
  • Oracle漏洞修复 19.3 补丁包 升级为19.22
  • Q2=10 and Q2=1--PLB(Fig.4)
  • sd卡挂载返回FR_NOT_READY等错误
  • 推荐一款超级实用的浏览器扩展程序!实时翻译网页,支持多种语言(带私活源码)
  • manjaro kde 24 应该如何设置才能上网(2024-10-13亲测)
  • 2024软件测试面试大全(答案+文档)
  • unity动态批处理
  • faust,一个神奇的 Python 库!
  • electron本地OCR实现
  • RK3588的demo板学习
  • 基于springboot驾校管理系统
  • 关于Vue脚手架
  • MySQL 指定字段排序
  • Mysql—高可用集群MHA
  • MeshGS: Adaptive Mesh-Aligned GaussianSplatting for High-Quality Rendering 论文解读
  • JDK-23与JavaFX的安装
  • LeetCode讲解篇之2266. 统计打字方案数