小傅哥星球项目拆解,如何设计复杂的抽奖流程

作者:小傅哥
博客:https://bugstack.cn

沉淀、分享、成长,让自己和他人都能有所收获!😄

大家好,我是技术UP主小傅哥。

我想做一个抽奖,但想让用户合理的别中奖。现在各个互联网产品场景中,都有抽奖模块来拉新促活,如;平台签到积分抽奖、商城支付完成抽奖、打车优惠发券抽奖,你以为的是抽奖,但大部分都是借着抽奖的外壳消耗你的积分和定向发放消费券。

你以为你玩的是抽奖,但其实玩的是你对人性的理解!这也是营销中最复杂的产品运营设定,既要让用户玩的开心,又有让平台有的赚。所以纵横交错逻辑功能实现的营销组也是各个互联网公司中代码实现度最复杂的组。

接下来,就带着兄弟们做一款复杂的抽奖场景领域和库表设计!—— 所以,兄弟们👬🏻不是某个系统烂大街,烂大街的是写不出好工程代码的CRUD!

一、产品场景

积分,积累积分兑换商品,是各个互联网中场景都有的一个产品系统用于沉淀用户。你的积分积累可以在系统内循环完成抽奖、兑换、抵扣,但随着产品运营的时间越长,就会发现越来越多的人攒积分,导致通货膨胀。这就有点像我们很多人攒钱不花不消费一样,导致越少攒钱的人,钱越来越不值钱。所以也要发一些消费券,让我们的钱流动起来。

那么,这样的情况在互联网场景中,则会通过抽奖活动的方式,来消耗你的积分积累。普通的抽奖当然很难消耗鬼精的用户积分,所以要设定一些规则玩法通过你不断的抽奖来消耗积分。【如图】

展示给你的是抽奖,没展示给你的全是手段!

  • 首次,免费抽奖,可设定抽奖范围。让你第一次抽奖超过62.9%,甚至达到99%全是随机积分,而这个随机的积分有时候恰好够你消耗所剩积分完成一次抽奖。
  • 而后,随机积分,也是远小于所需抽奖的积分,目的就是为了消耗你的积分值。100积分,最后得到20积分。类似斗地主每把都有入场费。
  • 再有,增加的大奖抽奖,必须用户抽奖n次后解锁。都抽奖1次了,再来2次就解锁了。这个时候你就忘记了自己要赞积分,指向点下10连抽。
  • 最后,再有一个6000积分消耗必中奖策略,让用户知道反正最后会得到一次非积分的奖品,赶紧梭哈!

这些,还只是你表面能看见了的,看不见的还有一些配置的手段。比如你是个老羊毛用户,那么你的抽奖根本就是个摆设,你能得到的奖品都是风控兜底,比如100积分,抽到1积分。

这还只是大营销中的一个抽奖场景,就已经这么复杂,可想而知整个营销下的;券、裂变、分销、活动、返利、人群、灌券、出资、结算有多复杂。产品玩的花,研发苦哈哈。就这种场景如果你都是 if···else 那你每天就别下班了,半夜都的被电话打起来改bug!

二、领域模型

这样的复杂系统非常适合使用 DDD 进行领域建模设计,通过领域的拆解分析得到所需开发的各项功能领域。通过这样的手段,也能更好的管理后续需求的迭代。

  • 首先,以用户所在营销场景的生命旅程为链路,分析出所需的核心领域模型。
  • 之后,拆解的模型包含;活动领域、活动库存、用户参与领域、抽奖策略领域、子领域规则、活动账户、奖品领域和积分账户领域。
  • 最后,依照于领域模型来设计具体功能。这里我们先聚焦到抽奖策略模型中,通过对产品功能的分析,完成领域功能理解和库表的设计。

三、流程设计

复杂的抽奖产品,也会对应着复杂的设计。而这些设计的细节才是研发的核心知识,无论你是在做此类功能还是说面试,都是希望能思考到这些场景对应的实现手段。与之相比纯CRUD是啥设计呢,我来给兄弟们对比看下。

1. 简单设计 - 市面上的开源抽奖

2. 复杂设计 - 小傅哥设计的抽奖

可以这么说,小傅哥给你做的场景设定、领域建模、流程设计,以及对应的代码开发,都是以互联网应用级项目所做的。所以你学习到这类细节贼多的知识,面试的时候是非常有的讲的,而且你还能把一些算法结合进去。那么这么整不是嘎嘎强,嘎嘎乱杀吗!https://gaga.plus

四、库表设计

关于抽奖策略这部分会涉及到4张表,包括;策略表、策略规则表、策略奖品、奖品表,【如图】

DDD 开发会通过领域建模驱动着功能的设计实现,但实现的细节思考会有对应数据结构的使用。而这些数据结构则会体现到库表中,所有好的库表设计,可以让领域功能的实现更加细腻灵活。那么你看到这里的库表字段则会涉及这对应的流程的设计实现,尤其是多种类型的设计,更是编码中设计原则、设计模式的体现。


项目地址:https://gaga.plus

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

算法 - 二分搜索法 / 二分法(704)

原理: 利用数组的有序性,每次取查找范围的中间点,缩窄一半的查找空间。比较中间值和目标值的大小,直到找到目标值或者查找区间为空时返回。 力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台 题目&…

图解transformer中的自注意力机制(备忘)

注意力机制 在整个注意力过程中,模型会学习了三个权重:查询、键和值。查询、键和值的思想来源于信息检索系统。所以我们先理解数据库查询的思想。 假设有一个数据库,里面有所有一些作家和他们的书籍信息。现在我想读一些Rabindranath写的书&#xff1a…

2. 如何通过公网IP端口映射访问到设备的vmware虚拟机的ubuntu服务器

文章目录 1. 主机设备是Windows 11系统2. 安装vmware虚拟机3. 创建ubuntu虚拟机(据说CentOS 7 明年就不维护了,就不用这个版本的linux了)4. 安装nginx服务:默认端口805. 安装ssh服务:默认端口226. 设置主机 -> ubuntu的端口映射7. 设置路由…

ReentrantLock详解

介绍 它是可重入锁的互斥锁,又被称为“独占锁”。它在同一时间点只能被一个线程锁持有;可重入表示,ReentrantLock锁可被同一个线程多次获取。它是通过一个FIFO的等待队列来管理获取该锁所有线程的。在“公平锁”的机制下,线程依次…

MySQL笔记-第08章_聚合函数

视频链接:【MySQL数据库入门到大牛,mysql安装到优化,百科全书级,全网天花板】 文章目录 第08章_聚合函数1. 聚合函数介绍1.1 AVG和SUM函数1.2 MIN和MAX函数1.3 COUNT函数 2. GROUP BY2.1 基本使用2.2 使用多个列分组2.3 GROUP BY中…

理解排序算法:冒泡排序、选择排序与归并排序

简介: 在计算机科学中,排序算法是基础且重要的概念。本文将介绍三种常见的排序方法:冒泡排序、选择排序和归并排序。我们将探讨它们的工作原理、特点和适用场景,以帮助读者更好地理解和选择合适的排序方法。 冒泡排序 冒泡排序是…

cs环境部署

配置搭建cs工具 两种方式 cs工具 》狐狸工具箱,微信上搜索 或者cs - OneDrive (sharepoint.com)提取密码www.ddosi.org 需要云服务器(个人猜测如果是靶场的话,可以采用一台所有主机都能访问的主机作为服务端配置) 非docker方式搭建 将c…

ue5材质预览界面ue 变黑

发现在5.2和5.1上都有这个bug 原因是开了ray tracing引起的,这个bug真是长时间存在,类似的bug还包括草地上奇怪的影子和地形上的影子等等 解决方法也很简单,就是关闭光追(不是…… 就是关闭预览,在材质界面preview sc…

10基于matlab的悬臂梁四节点/八节点四边形单元有限元编程(平面单元)

悬臂梁,有限元编程。基于matlab的悬臂梁四节点/八节点四边形单元有限元编程(平面单元),程序有详细注解,可根据需要更改参数,包括长度、截面宽度和高度、密度、泊松比、均布力、集中力、单元数量等。需要就拍…

【算法】递归、搜索与回溯算法

文章目录 一. 名词解释1. 递归1.1 什么是递归?1.2 为什么会用到递归?1.3 如何理解递归?1.4 如何写好一个递归? 2. 遍历和搜索3. 回溯和剪枝 二. 递归系列专题1. 汉诺塔问题2. 合并两个有序链表3. 反转链表4. 两两交换链表中的节点…

关于Anaconda的安装和环境部署(此章专为新手制定)

目录 Anaconda简介 一、软件下载(地址👇) 2:点击下载 3:版本选择: 4:Anaconda的安装包就下载完成了 2:恭喜你,看到这里已经完成安装了 三、部署环境 1&#xff1…

什么是 AWS IAM?如何使用 IAM 数据库身份验证连接到 Amazon RDS(上)

驾驭云服务的安全环境可能很复杂,但 AWS IAM 为安全访问管理提供了强大的框架。在本文中,我们将探讨什么是 AWS Identity and Access Management (IAM) 以及它如何增强安全性。我们还将提供有关使用 IAM 连接到 Amazon Relational Database Service (RDS…

C++类模板分文件编写

问题: 类模板中成员函数创建时机是在调用阶段,导致分文件编写时链接不到 解决: 解决方式最常用的:将声明和实现写到同一个文件,并更改后缀名为.hpp,hpp是约定的名称,并不是强制的

Windows/Linux混合刻录后,Windows显示空白盘解决思路

概述 因为工作环境问题,需要在Windows和Linux之间来回光盘刻录,没有多余光盘的时候经常多次使用,同一光盘在Windows刻录文件到Linux,然后从Linux刻录文件到Windows,Windows用“类似U盘”格式化的光盘,在Wi…

洛谷 P8802 [蓝桥杯 2022 国 B] 出差

文章目录 [蓝桥杯 2022 国 B] 出差题目链接题目描述输入格式输出格式样例 #1样例输入 #1样例输出 #1 提示 思路解析CODE [蓝桥杯 2022 国 B] 出差 题目链接 https://www.luogu.com.cn/problem/P8802 题目描述 A \mathrm{A} A 国有 N N N 个城市,编号为 1 … N …

三天精通Selenium Web 自动化 - Selenium(Java)环境搭建

1 下载JDK JDK下载地址:http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html 2 安装和配置JDK 安装目录尽量不要有空格 D:\Java\jdk1.8.0_91; D:\Java\jre8设置环境变量: “我的电脑”->右键->“属性”->…

LeetCode刷题日志-73矩阵置零

思路一: 用一个同样大小的矩阵记录0的位置,然后遍历矩阵置0, 空间复杂度为O(mn) class Solution {public void setZeroes(int[][] matrix) {int [][] matrix_new new int[matrix.length][matrix[0].length];for(int …

postgresql自带指令命令系列三

目录 简介 bin目录 28.pg_verifybackup 29.pg_waldump 30.postgres 31.postmaster -> postgres 32.psql 33.reindexdb 34.vacuumdb 35.vacuumlo 总结: 简介 在安装postgresql数据库的时候会需要设置一个关于postgresql数据库的PATH变量 export PATH/…

1845_emacs中一个中文乱码问题分析解决

Grey 全部学习内容汇总:GitHub - GreyZhang/editors_skills: Summary for some common editor skills I used. 1845_emacs中一个中文乱码问题分析解决 曾经有一次放弃过我自己的emacs配置,一个原因就是中文的支持。感觉我的配置跟其他人的配置显得有些…

优雅玩转实验室服务器(一)登录服务器

这篇文章更加偏向于使用python程序进行研究的朋友们 原料 Windows主机实验室Linux服务器(可以访问互联网)一点点耐心 step.0 windows terminal is all you need 别跟我说什么putty,什么winscp,我就是单推Win11自带的软件——win…