写在前面
最近在开发的一个项目里,客户要求加入一个“锁库存”的功能。一开始还没太在意,觉得就是锁定和解锁,但当做起来后,对流程的检查时发现这里面还是有不少的漏洞。然后也去网上找了关于库存的一些设计的文章,发现这里面确实大有学问,自己还是too young。
背景
这是一个出行类的项目,主要是让用户根据自己的出行需求订大巴服务,这有些类似于小猪巴士,嗒嗒巴士之类的。但是这里面除了普通的用户外,还有一个角色:业务员。业务员去洽谈业务的时候,希望在之前能够将需要的大巴库存进行锁住,然后在谈完业务的时候进行下单或是解锁。
为什么需要这个功能?
因为客户反馈他们的业务问题是有时候业务员在谈业务之前是看到有车的,但当谈完后发现车辆已经没有了,所以就希望能有这么一个功能。
早前已经开发好的设计
用户在下单页面先选择出行时间,然后选择自己需要的车型和数量(因为这里的库存跟时间挂钩,所以要先选择),在添加数量的时候还会跟获取到的库存进行比较,避免超过库存的数量,然后用户下单,完成库存在该时间段里的减少。
那么这里我们有几个点
1.每次进入图1-3的时候都是一次新的车辆库存列表的请求。
2.在图1-3里增加车辆的时候,如果超过了库存,那么就会提示已达到库存最大量了。
3.选择完车辆后回到图1-4,然后觉得需要修改,再重新进入图1-3的时候,会保存上一次已选的车型的数量,方便用户修改。
4.后来加了“锁库存”的功能后,我们在点击保存的时候,将选好的车辆列表提交进行锁定
5.在下单页面里点击关闭按钮和删除某一车型时对库存进行全部解锁或单个解锁。
就是在这让我看似没问题的修改后,仔细思考才发现还是有漏洞的。如下:
当我们开始测试库存很少的时候(假设为1),发现了一个问题,就是当我第二次进入车型选择页面的时候,“五层大巴”已经消失了,因为库存为0就不返回数据了。所以我的“五层大巴”的记录就在这个页面没有展现,然后当我选择其它车型并保存的时候,虽然我没对“五层大巴”进行操作,但还是由于原先的关系,会被清掉,而替换成新的车辆选择列表。
待续。。。