当前位置:首页 > 单片机 > 小林coding
[导读]大家好,我是小林。这一周都在带大家免费领取一年阿里云服务器的活动,现在已经超1000人购买了,昨晚我就开始在部分群陆陆续续返现,几万块,刷一秒就没了,场面很壮观。还没返现的群,稍等一下,这周都会一起搞完的。这次阿里云服务器,我和小北组队了,因为我们之前6月份搞过一次阿里云白领活动...

大家好,我是小林。

这一周都在带大家免费领取一年阿里云服务器的活动,现在已经超 1000 人购买了,昨晚我就开始在部分群陆陆续续返现,几万块,刷一秒就没了,场面很壮观。

还没返现的群,稍等一下,这周都会一起搞完的。

这次阿里云服务器,我和小北组队了,因为我们之前 6 月份搞过一次阿里云白领活动,所以担心一个人搞的话,带不到大家白piao,因为当拉新用户到一定数量,阿里云才会给我们奖金,比如 1500 人的奖金是9W,这样我们才可以给 1500 人返现 60 元,也就是把奖金全部返现了。

活动最重要,也是最麻烦的环节就是返现环节,这次我们是通过一个链接收集大家支付宝账号,然后进行支付宝批量转账。

但是这个工作看起来很简单,其实有很多东西需要留意的,因为涉及到钱,最基本的要保证幂等性。

什么是幂等性呢?用户对于同一操作发起的一次请求或者多次请求的结果是一致的,不会因为多次点击而产生了副作用。比如这次返现活动,在收集大家支付宝信息的时候,不管用户提交了几次信息,最终只转账一次。

返现的程序是由小北实现的,他在实现的过程中,差点就因为这个事情差点亏了点钱。

以下是小北对这次返现的复盘:

不是组织了一场新用户免费领取一年阿里云服务器的活动了,现在已经超过1000人购买,750 人收到了返现,不禁发出还得是北哥的感叹!

但是在短时间内给近1000人返现,并且还要保证它们都是符合返现条件的,就不太容易,今年 6.18 我们是写了一个检测工具,自己检测后截图给我们,我们拉群,满100人发红包。

这样会浪费整整周六一天的时间,最近了解到支付宝有批量转账能力,于是我就发了个问卷向大家收集一波阿里云ID、支付宝账号用于返现。

这样直接用阿里云每天导给我的订单数据做校验,看哪些用户购买了,有资格返现。

本来非常简单,所以就让小老弟去帮我写代码,结果怎么着,小老弟的代码一小时就写完了,而且用得很爽!

于是前天晚上我就回去看了下小老弟的代码,结果一看吓一跳,差点让我亏几千上万都有可能!!

简单来说支付宝批量转账,需要生成一个 csv,每一行是:支付宝账号,姓名,转账金额,备注 这样的信息。

小老弟的代码是这样写的:

users = get_user_info_from_file() //  从腾讯问卷下载的大家提交的返现信息 csv文件导入

order_map = get_order_map() // 从阿里云导出的订单数据生成一个 map,key是用户的阿里云ID,value是订单信息

for user in users:

  if user.aliyun_id in order_map:

     csv_file.writeline(xxxxxxxx)  //  有购买记录的读者信息写入csv文件,用于批量转账

然后这个产生的 csv 文件就可以传到支付宝 PC 端的批量转账接口中进行转账。

这代码完全能正常工作,也能完成返现!

但是!!!

小老弟没有考虑到异常场景,以及应对各种羊毛党或者用户的错误操作

比如说,假如一个用户在填问卷的时候填了多次信息,上面的代码是不是就会导致多次转账?

当然,这样的用户不多,但是总有大意的读者多点了一次提交之类,后来我就发现了:

当然,这样的读者比例不多,但是 1000 个用户,十几个还是有的,你就得多返现几百上千。

(PS:让我想起了后端不能相信前端,不能相信用户输入的数据

如果面对更多的读者,或者你读者里有羊毛党,他就是恶意多次提交,你是不是就得亏死?

这个返现,不是一次就搞完的,是分批的,订单数据一天导出一次,每天晚上我都会运行这个脚本进行返现。

那如果是昨天已经返现的同学,今天又来提交一次,这种又该怎么办呢?这个问题实际上是怎么做幂等、去重。

因为这个订单数据不是实时的,一天导出一次,但是读者随时可能去填表单。

那如果读者今天买今天填写返现表单,但是今晚去处理的时候查不到购买记录没法返现怎么办?

难道让读者明天再填一次?

总之就是为了处理这些异常的 case 以及邮件通知等,我前天晚上下班后到家肝了一波,彻底堵死了这些漏洞,毕竟打工人的钱也不是好赚的~

从昨晚开始陆续返现, 中间也发现很多之前考虑到的异常 case,也有些异常场景还没考虑到,及时补上就行。

总之,我觉得工作后很多时候写代码,一半以上的时间都是在为了补偿各自异常场景,比如参数校验、边界值、掉单、网络问题、超时、重入等等。

尤其是涉及到钱,这是一分都不能差的。

跟以前在学校写代码基本只写成功的路径完全不一样。

好了,今天就写到这里吧。具体云服务器能做什么,可以看我这篇介绍:云服务器能做什么?

现在还有一些名额,需要免费领取的可以在公众号后台回复「服务器」

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

LED驱动电源的输入包括高压工频交流(即市电)、低压直流、高压直流、低压高频交流(如电子变压器的输出)等。

关键字: 驱动电源

在工业自动化蓬勃发展的当下,工业电机作为核心动力设备,其驱动电源的性能直接关系到整个系统的稳定性和可靠性。其中,反电动势抑制与过流保护是驱动电源设计中至关重要的两个环节,集成化方案的设计成为提升电机驱动性能的关键。

关键字: 工业电机 驱动电源

LED 驱动电源作为 LED 照明系统的 “心脏”,其稳定性直接决定了整个照明设备的使用寿命。然而,在实际应用中,LED 驱动电源易损坏的问题却十分常见,不仅增加了维护成本,还影响了用户体验。要解决这一问题,需从设计、生...

关键字: 驱动电源 照明系统 散热

根据LED驱动电源的公式,电感内电流波动大小和电感值成反比,输出纹波和输出电容值成反比。所以加大电感值和输出电容值可以减小纹波。

关键字: LED 设计 驱动电源

电动汽车(EV)作为新能源汽车的重要代表,正逐渐成为全球汽车产业的重要发展方向。电动汽车的核心技术之一是电机驱动控制系统,而绝缘栅双极型晶体管(IGBT)作为电机驱动系统中的关键元件,其性能直接影响到电动汽车的动力性能和...

关键字: 电动汽车 新能源 驱动电源

在现代城市建设中,街道及停车场照明作为基础设施的重要组成部分,其质量和效率直接关系到城市的公共安全、居民生活质量和能源利用效率。随着科技的进步,高亮度白光发光二极管(LED)因其独特的优势逐渐取代传统光源,成为大功率区域...

关键字: 发光二极管 驱动电源 LED

LED通用照明设计工程师会遇到许多挑战,如功率密度、功率因数校正(PFC)、空间受限和可靠性等。

关键字: LED 驱动电源 功率因数校正

在LED照明技术日益普及的今天,LED驱动电源的电磁干扰(EMI)问题成为了一个不可忽视的挑战。电磁干扰不仅会影响LED灯具的正常工作,还可能对周围电子设备造成不利影响,甚至引发系统故障。因此,采取有效的硬件措施来解决L...

关键字: LED照明技术 电磁干扰 驱动电源

开关电源具有效率高的特性,而且开关电源的变压器体积比串联稳压型电源的要小得多,电源电路比较整洁,整机重量也有所下降,所以,现在的LED驱动电源

关键字: LED 驱动电源 开关电源

LED驱动电源是把电源供应转换为特定的电压电流以驱动LED发光的电压转换器,通常情况下:LED驱动电源的输入包括高压工频交流(即市电)、低压直流、高压直流、低压高频交流(如电子变压器的输出)等。

关键字: LED 隧道灯 驱动电源
关闭