java后端项目:视积分抽奖平台

一、项目背景:

本次抽奖系统实现是在视频中内置一个线上活动抽奖系统,奖品是在一个时间段区间内均匀发布,用户可以在这个时间段内参与抽奖。

二、项目架构

活动抽奖平台采用微服务架构来完成,在功能上实现拆分为用户、网关、以及抽奖微服务,其中用户、网关是后台项目通用,活动抽奖的业务逻辑主要在抽奖服务完成。

网关:处理前端请求,聚合后台各个微服务的处理结构,JWT鉴权、router路由

用户服务:管理用户信息,比如登录、注册

抽奖服务:处理抽奖逻辑、条件校验、中奖、发奖等

三、设计环节

1.需求整理与分析:

1.1业务需求

需要两个方面的功能:奖品信息的后台管理、抽奖逻辑的是实现

1.1.1奖品后台管理

实现奖品的增删改查、满足奖品上传、开放时间、数量以及中奖概率是指

1.1.2抽奖逻辑

抽奖逻辑有三个核心:准入校验、中奖匹配、奖品发放

对于可以参加抽奖的用户有一个严格的校验,满足一定的条件才可以进行抽奖,其中主要校验逻辑需要有用户黑名单,ip黑名单校验,其次对于用户每日参与抽奖次数以及ip每日参与抽奖次数也要有一个限制,不能用一个用户或者同一个ip每天能无限次参与抽奖。对于中奖匹配(其过程就是随机数的区间匹配),通过一定概率来匹配奖品,对于每种不同的奖品的中奖率要不一样,而对于每个人的中奖率是要相同的。最后对奖品的发放,满足能够成功的发放,既能够扣减库存成功,这里就要求库存足够。对于成功获奖的用户需要记录一条获奖记录,方便后面获奖统计。对于中大奖的用户,还需要考虑将其加入到黑名单一段时间,为了中奖的公平性,防止同一个用户频繁中奖。

1.2非功能需求

1.2.1性能:

要求系统能够对抗高并发请求,面对大量用户的抽奖请求能够即时处理

1.2.2幂等性:

对于同一个用户由于网络原因在同一时间内的多次抽奖请求要能够有幂等性保证,保证同一时间同一用户只能发起一次抽奖

1.2.3安全性

对于奖品的发放,要保证库存正确扣减,不能出现“超发”

2.系统架构设计

2.1整体架构:

2.2整体业务:

业务逻辑简单来看就是完成一个奖品的匹配和发放,整体业务分为:网关微服务、用户微服务、抽奖系统微服务

抽奖流程:

2.2.1网关微服务

网关主要是提供后台系统对外的流量统一入口,所有的外部请求先打到网关,由网关做请求转发,同时也提供鉴权,限流等

2.2.2用户微服务

用户微服务是一个相对独立的功能,首先并不是所有的用户都有资格参与抽奖,只有系统内部人员才有资格,所以需要对内部系统人员进行管理和维护(包括登录的账户密码、年龄邮箱等信息)。

2.2.3抽奖微服务

抽奖微服务是整个抽奖系统的核心,主要负责抽奖核心逻辑的实现,包括准入校验,奖品匹配和发放。除此之外,还包括奖品后台的管理系统

3.数据库设计

3.1用户表

字段

类型

idint(10)
user_namevarchar(255)
pwdvarchar(255)
sexint(10)
ageint(10)
emailvarchar(255)
contactvarchar(255)
mobilevarchar(255)
id_cardvarchar(255)
create_timedatetime
modify_timedatetime

3.2奖品表

字段类型
idint(10)
titlevarchar(255)
prize_numint(11)
prize_codevarchar(255)
left_numint(11)

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

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

相关文章

三. TensorRT基础入门-TensorRT内部的优化模块

目录 前言0. 简述1.TensorRT的优化策略2. Layer Fusion3. Kernel Auto-Tuning4. Quantization总结参考 前言 自动驾驶之心推出的 《CUDA与TensorRT部署实战课程》,链接。记录下个人学习笔记,仅供自己参考 本次课程我们来学习课程第三章—TensorRT 基础入…

十大排序算法之——桶排序算法(Java实现)及思路讲解

桶排序(Bucket Sort)是计数排序的升级版。它利用了函数的映射关系,高效与否的关键就在于这个映射函数的确定。为了使桶排序更加高效,我们需要做到这两点: 首先要使得数据分散得尽可能均匀;对于桶中元素的排…

计算机网络 2.4差错检验与校正

第四节 差错检验与校正 一、认识检验与校正 1.差错形成原因 内部因素(随机错):噪声脉冲、脉动噪声、衰减、延迟失真等。 外部因素(突发错):电磁干扰、太阳噪声、工业噪声等。 2.差错控制编码分类&#…

C++ | 类和对象(上)

目录 什么是类 类的介绍 struct在两种语言中的有何区别 私有变量命名注意点 类的作用域 类的声明定义分离 类的访问限定符 封装 类的实例化 类对象的存储 this指针 一道this指针相关的王炸题: 结语 什么是类 类的介绍 我们举一个日常生活中的例子&…

罗宾斯《管理学》第15版笔记/课后习题/考研真题答案

第Ⅰ篇 管理导论 第1章 工作场所中的管理者和你 1.1 知识结构导图 1.2 考点难点归纳 1.3 课后习题详解 1.4 考研真题详解 附加模块一 管理史 知识结构导图 考点难点归纳 课后习题详解 考研真题详解 第2章 决 策 2.1 知识结构导图 2.2 考点难点归纳 2.3 课后习题详解…

C之·标准库<string.h>

系列文章目录 文章目录 前言一、字符串分割函数1.strtok()2. 总结 前言 <stdlib.h> 是C语言中的一个头文件&#xff0c;提供了一系列用于操作字符串的函数。例如查找子字符串、拼接字符串、比较字符串等等。为了方便开发者进行字符串操作&#xff0c;C语言提供了一个标准…

python爬虫学习-------scrapy的第一部分(二十九天)

&#x1f388;&#x1f388;作者主页&#xff1a; 喔的嘛呀&#x1f388;&#x1f388; &#x1f388;&#x1f388;所属专栏&#xff1a;python爬虫学习&#x1f388;&#x1f388; ✨✨谢谢大家捧场&#xff0c;祝屏幕前的小伙伴们每天都有好运相伴左右&#xff0c;一定要天天…

做App小程序h5的软件 校园小程序有哪些小程序源码平台 微信小程序里发表的展示圈子 怎么将小程序分享到朋友圈小程序社区 小程序在大学校

最近几年&#xff0c;校园外卖跑腿服务市场迅速兴起。由于学生每天课程繁忙&#xff0c;很多人没有时间去食堂或外面的餐厅用餐&#xff0c;校园外卖跑腿平台提供了便捷和快速的解决方案&#xff0c;满足了学生的饮食跑腿需求&#xff0c;并受到越来越多学生的喜爱。 那么&…

C语言程序设计(二)

1、算法、数据结构、程序 为解决一个问题而采取的方法和步骤&#xff0c;就称为“算法”。 2、算法的5大特征 3、判断n是否为素数&#xff1a;只需要从2循环到根号n。 优化原理&#xff1a;素数是因子为1和本身&#xff0c; 如果num不是素数&#xff0c;则还有其他因子&…

stm32单片机开发三、DMA

DMA其实就是一种将ADC的数据寄存器、串口的数据寄存器等等一些数据放到sram中特定位置&#xff0c;方便CPU去读取 比如ADC转换&#xff0c;DMA直接转换的ADC的值放在内存中的特定位置&#xff0c;CPU可以直接去读取 uint16_t AD_Value[4]; //定义用于存放AD转换结果的全局…

Lua中的数据类型:table

在 Lua 编程语言中&#xff0c;table 是一种非常灵活和强大的数据结构&#xff0c;用于实现数组、字典&#xff08;键值对&#xff09;、对象等多种数据组织形式。table 是 Lua 中唯一的数据结构机制&#xff0c;因此它的用途非常广泛。 特点和功能 动态创建&#xff1a;在 Lu…

上市企业数字赋能指数数据集-2001到2022年(TF-IDF)

01、数据简介 上市公司数字赋能指数是一个用来衡量上市公司利用数字技术提高业务能力和效率的指标。这个指数反映了上市公司利用大数据、云计算和人工智能等数字技术&#xff0c;高效地利用商业资源和信息&#xff0c;并扩展供应关系的能力。市公司数字赋能指数是一种综合性的…

支持向量机——pytorch与paddle实现支持向量机

支持向量机——pytorch与paddle实现支持向量机 本文将深入探讨支持向量机的理论基础&#xff0c;并通过PyTorch和PaddlePaddle两个深度学习框架来展示如何实现支持向量机模型。我们将首先介绍支持向量机、优化的基本概念&#xff0c;这些数学工具是理解和实现支持向量机的基础…

数据结构-二叉树的遍历

二叉树的遍历广义上是指下面我们说的七种遍历 广度优先搜索 : 递归完成 前序 中序 后序 的遍历 深度优先搜索 : 层序遍历(借助队列) 非递归的迭代法完成前中后遍历(借助栈) 代码合集如下 package TreeDemo; import java.util.*; public class BinaryTreeTest {public static c…

怎么给字符串字段加索引?

怎么给字符串字段加索引&#xff1f; 现在&#xff0c;几乎所有的系统都支持邮箱登录&#xff0c;如何在邮箱这样的字段上建立合理的索引&#xff0c;是我们今天要讨论的问题。 假设&#xff0c;你现在维护一个支持邮箱登录的系统&#xff0c;用户表是这么定义的&#xff1a; …

美富特 | 邀您参加2024全国水科技大会暨技术装备成果展览会

王涛 四川美源环能科技有限公司 技术总监 报告题目&#xff1a;绿色智慧水岛如何助力工业园区污水及再生水资源化利用降碳增效 拥有十余年的环保行业从业经验&#xff0c;对各类前沿物化、生化及膜技术均有丰富的研发、设计及应用经验&#xff0c;先后参与多项重点核心技术…

日本宇宙航空研究“Int-Ball2”自由飞行相机机器人采用的Epson IMU

IMU有助于飞行的稳定控制和电池充电的自动对接- 精工爱普生公司&#xff08;TSE:6724&#xff0c;“Epson”&#xff09;很高兴地宣布&#xff0c;日本宇宙航空研究开发机构&#xff08;JAXA&#xff09;选择了爱普生M-G370系列的惯性测量单元&#xff08;IMU&#xff09;&…

开源相机管理库Aravis例程学习(五)——camera-api

开源相机管理库Aravis例程学习&#xff08;五&#xff09;——camera-api 简介例程代码函数说明arv_camera_get_regionarv_camera_get_pixel_format_as_stringarv_camera_get_pixel_formatARV_PIXEL_FORMAT_BIT_PER_PIXEL 简介 本文针对官方例程中的&#xff1a;03-camera-api…

揭密 scaling laws

Scaling laws OpenAI 在其早期的关于 scaling laws 的论文 [1] 中提出了基础理论&#xff0c;但该文缺乏一些具体的求解过程&#xff0c;且未能在更大规模的模型上进行验证。与此同时&#xff0c;后续研究&#xff0c;例如 DeepMind 的 ChinChilla [2] 还提出了不同的结论。 论…

Swift - 可选项(Optional)

文章目录 Swift - 可选项&#xff08;Optional&#xff09;1. 可选项&#xff08;Optional&#xff09;2. 强制解包&#xff08;Forced Unwrapping&#xff09;3. 判断可选项是否包含值4. 可选项绑定&#xff08;Optional Binding&#xff09;5. 等价写法6. while循环中使用可选…