5交互
5.1 前后端交互时序
(1)绑定银行卡
(2)收发群手气红包
① 发起红包操作
② 银行扣款逻辑,不成功则返回,成功则进行下一步
③ 请求将红包写入数据库某个set,并获取红包ID返回客户端
④ 长连接通知客户端成功
⑤ 其他用户接收到红包消息,点开,拆。由于用户操作的速度远远低于计算机处理速度,所以这打开和拆开的分离,相当于设置了一道缓冲。另外,点开之后,不直接 获取金额,而是先读取红包是否领完的缓存,如果没领完则显示【拆】的按钮。点击【拆】之后再次访问缓存看红包是否领完,如果没领完,则请求服务器内存计算 随机金额并返回客户端,然后异步写入数据库。
⑥ 红包结果会写入LIstView(安卓的UI控件名称,ios也有类似的控件)中,用户可以马上看到
⑦ 当用户再次打开红包结果页面时,会从数据库读取最新的结果列表并更新结果列表。
(3)收发普通红包
① 发起红包操作
② 银行扣款逻辑,不成功则返回,成功则进行下一步
③ 选择发送对象(若在聊天窗口中发起着跳过这一步)
④ 计算红包均值(总额/个数),将红包个数和均值写入数据库,返回红包ID到客户端
⑤ 其他用户点开红包,拆,访问红包个数判断是否大于0,若为TRUE,则个数减1;若为FALSE则通知客户端显示【已领完】样式。
5.2 界面交互
5.2.1 基本流程
5.2.2 拆红包页面显示逻辑
对群手气红包、群普通红包、普通红包(其实就是红包个数为1的群普通红包)和是否领到和是否领完做3×3×3的交叉分析之后,归纳出以下结论:
5.2.3 红包结果页面显示逻辑
说明:
1 代表有出现该项
“字样”代表下图所示区域的文字内容:
“按钮”代表蓝色文字链接,如下图所示:
金额是指自己拿到的金额
抢到的人是指一个列表:
绿色格子代表没有这种逻辑,可能是不出现该页面或者其他原因。
对上表的数据进行挖掘,我们可以发现以下规则集:
(1)当领到红包的时候,会显示按钮“已存入零钱,可用于发红包“、”已存入零钱,可用于消费“、”已存入零钱,可用于转账“、”已存入零钱,可用于提现”的其中一个,顺序或随机出现;并显示自己所获得的红包金额。
(2)当自己发的红包没被领完,会显示按钮“继续发送此红包”;
(3)领到别人发的红包时,会显示按钮“查看我的红包记录“;
(4)对于群手气红包被领完时,如果红包是自己发的会显示字样“n个红包共n元,n秒被抢光”;如果是被人发的红包则会显示字样“n个红包,n秒被抢光”;对于(群)普通红包被领完时,会显示字样“n个红包共n元”;
(5)对于红包(个数大于1)没被领完,自己的红包会显示字样“已领取x/y个,共x/y元”;别人发的红包字样“领取x/y个”;
(6)对于红包(个数等于1)没领完时,会显示字样“红包金额n元,等待对方领取”;
(7)对于群手气红包和自己发的普通红包都会显示抢到红包的人的列表;
(8)已经被领完的群手气红包才会显示“最佳手气”的标识;
从(4)-(6)的规则我们可以看出,微信做到为什么是一个优秀的产品而不仅仅是一个及格的产品。自己发的红包会显示出总金额,自己发了多少钱自己心里有 数,却不希望别人看到总的金额(虽然可以根据列表算出来,但是大部分人不会去计算每一个别人红包的总金额),避免发红包的用户还要承受“面子问题”挫伤用 户发红包的积极性。这样去营造一种无分贵贱贫富,人人都可以发红包的氛围,间接提高发红包的人数和整个平台的活跃度。
5.2.4摇一摇红包
这一部分因为写文章的时候摇一摇红包活动已经下线了,所以只能从网上找来截图,简略地说明一下流程。如下图: