前言
为大家提供更好的设计思路,一起看透助力拉人头,坑多多砍一刀等等功能~~
2020-11-10晚9点再看浙江卫视直播,某宝APP手机摇一摇抽红包。进去活动以后发现,这功能我去年在某公司设计过类似的功能。所以今天拿来分享给大家~~~
某宝图片
一个人头1块钱,某宝成本价真的低哦,那坑多多岂不是更低?
某宝功能逻辑
大佬勿喷,肉眼可见能想到的逻辑简单的描述一下。
- 每个用户只能帮一位好友助力
- 每拉一位用户,则助力一次
- 1人、3人、再邀3人、50人为目标,引导客户去拉活跃用户(有机会赢取清空购物车活动)
- 参与用户淘气值在401分及叭上,被邀请助力者淘气值501分及上。
- 参与次数:用户每场仅可参与1沉,6场启计可参与6次。(让你在短时间内,拉取50名好友,还是有难度的、套路也挺深的。)
- 直接点取领取时,会提示是否放弃膨胀机会(套路)
功能需求背景
好友助力需求来源于下定金送优惠券功能
拉人助力是一种拉新活动,使活动来曝光公司产品,提高知名度
比如支付1元定金送一个10元优惠券,然后通过助理让一个10元的优惠券金额扩展到20、30甚至更多。
助力结束后,助力者也会获得等额的优惠券,所以说这样会促进更多的用户来参加活动,
助力规则
由于助力没有要求小数点金额,所以需求就会简单很多。
好友助力随机规则:上限-基本 / 人数 = 均值(直接取整,舍弃小数,保留整数)
随机:(均值,均值 X 2),最后一个人直接获取剩余的钱
可以助力1位好友不同课程发起的膨胀,但是只能为同一好友
人数是后台设置的需要几个人助力
生成助力记录的话,会有一个基本金额和一个上限金额,还会设定助力人数
需要考虑的因素:
- 发起助力记录是否存在
- 判断是否 是自己给自己助力
- 查询是否有助力过的记录(只能帮一个好友助力)
- 查询是帮哪位好友助力的
- 如果不是同一个人,则提示:只能帮一个好友助力
- 好友的一个课程只能助力一次
- 最后一个人直接获取剩余的钱
切记:一定要开事物,不然当多个人同时助力的时候会出现问题。
SQL数据表设计
结合自己需求设计就好了,大同小异。
部分代码实现
/**
* $limit_amount 上限金额
* $start_amount 基本金额
* $assist_num 设定的助力人数
* $sale_amount 券的总金额
* $help_amount 好友助力的金额
* $mean_value 随机金额的左区间
* $mean_value_max 随机金额的右区间
*/
// count_help_users需要结合自己的场景去获取是第几个人助力
$count_help_users = 0;
// 最后一个人直接获取剩余的钱
if ($diff == 1) {
$help_amount = $limit_amount - $amount;
$sale_amount = $limit_amount;
} else {
//上限-基本 / 人数 = 均值(直接取整,舍弃小数,保留整数)
$mean_value = intval(($limit_amount - $start_amount) / $assist_num);
$mean_value_max = intval($mean_value) * 2;
// 第一个人
if ($count_help_users == 0) {
$help_amount = mt_rand($mean_value, $mean_value_max);
$sale_amount = $info['amount'] + $help_amount;
} else {
$help_amount = mt_rand(1, $mean_value - 1);
$sale_amount = $info['amount'] + $help_amount;
}
}
// 数据都知道了,下面就把助力的金额之类的信息存入数据表吧
结束语
如果功能设计有什么漏洞,欢迎大家提供更好的建议,希望本文可以帮助你们实现”好友助力”功能👍