移动端购物车的实现

1,一般会在商品详情页里提供一个加购物车的按钮,这是购物车里内容的来源。但是现在很多应用里商品详情里不再提供直接购买按钮,而是直接都先扔到购物车里。这像极了我们在超市里的购物体验,不管你买多少商品,必须先放购物车了,然后到出口处结账。那么问题就来了,如何进入购物车。

2,进入购物车的按钮一般都放在首页,列表页。。。任何用户可能需要进入购物车进行结账的地方。也就是说,购物车是非常重要的结账通道。如果在没有一键购买的应用中,那么它就成了支付的关键路径。参考多个APP的设计,首先购物车按钮放在了所有商品浏览相关的页面,比方商品列表,电商首页,商品详情。其次,进入购物车的按钮要小,不能影响用户浏览商品啊。最后,按钮又要醒目,常用的房间就是加显眼的角标了。

3,什么时候将商品从购物车里移除。只有当形成订单时,我们才把商品从购物车里移除。

4,关于购物车的数据保存问题。将商品添加到购物车时还不需要用户登录,如果用户登录了,那么购物车内容就要算给该用户;也就是说用户及时登录到了其他手机上,也能看到他的购物车内容。这里就存在一个购物车内容认领的问题,没有登录时的购物车内容只有在当前手机才能看到。一旦用户登录,该用户就相当于认领了购物车内容,全部归属于当前用户。

5,价格的计算问题:加入购物里的商品价格可能随时变化,甚至商品会被下架。我是这么考虑这个问题,商品的价格需要通过类似价格中心去实时获取,也就是说购物车里商品的总结会实时在变。库存在变,加购物车时可能库存充足,你买了10件,但在之后进入购物车开始结账时,可能商品库存不足了,只能动态调整可以购买的商品数量。关于无效的商品,比方已下架或者已删除,库存不足,这样的商品仍然不能直接从购物车里的悄悄删除,而是将该商品标示为已无效状态,让用户自行处理。这里把握的一个通用的原则,类似用户收藏的,关注的帖子等等,这就属于用户的私有数据,不能因为帖子删除了,就将其从用户收藏里悄悄删除,用户必须有个知情权。

6,如何退出购物车,回到商品页面也是非常有讲究。各位产品细细琢磨:)

再来说说开发设计,这里有产品会忽略的点,当然也有产品不会去考虑的点如性能问题: 1,其实我最担心的是,调整购物车里某个商品的购买个数的操作,这个操作的成本很低,用户只要拼命的点+或-按钮就可以调整数量;我们知道如果要将每次操作的结果都更新到服务器端的话,很有可能你上次的更新请求还没响应,你就又按下了+操作。通过抓包分析淘宝里的实现原理,发现你在不断按+按钮时淘宝没有发出更新请求,当你停下不再按+按钮时,淘宝客户端才发出更新请求。可想而知,请求类似这样 setCount。

2,重复商品的合并,思考这样一种情况:如果你购买的一个商品已经在购物车里,你又选择加入了购物车,那么这时你要做的只要将商品数量累计上就可以了。

3,开发了最麻烦的事就是数据保存在多处,如何解决数据之间同步的问题。你会说你们没有用分布式数据库,也没有用数据缓存,哪里来的的数据同步。其实数据同步的问题存在于所有的B/S和C/S系统中。想象一个这样的情况,你打开了一个商品详情页面,一直保持页面打开,就是不操作;这时即时商品被下架了,你这边看到还是显示在页面上。这就是一个数据同步的问题,你打开了页面相当于获取了数据的拷贝,同时数据库里还保存了一份。这时所有APP开发,特别是服务器端开发都需要考虑的问题。希望这个概念能让大家脑洞大开 哈哈。

4,说问题3,是为了引出问题4。如果同一个用户同时登录在两台手机上,都在购物车里对某个商品做+-操作会产生什么反应。体验淘宝APP的结果,操作都是基于对本地数据为基础的推导。比方,当前手机上,商品A库存是10件,那么+操作,相当于会让服务器更新为 setCount 11。而不会管这时其实数据库该用户购车内本商品的个数是多少。

说了这么多,给出我的答案(并不存在标准答案,只有适不适合自己的业务需要): cat.getGoodsList 返回:购物车商品列表
cat.setGoodsCount, (1)传入参数 goodsId, count,返回:该购物车内商品信息;处理逻辑:如果该商品不存在,则添加该商品;如商品已存在,则将数量设置为传入的count值。(2)如果传入的count=0,则代表删除该商品。
cat.addGoodsWithCount, 传入添加的goodsId,count 返回:该购物车内商品信息;处理逻辑,如果该商品存在,则数量为当前数量+count。如果不存在,则添加该商品,并将数量设置为count。

最后对比一下购物车和订单在业务需求上的区别:订单一旦形成,相当于平台和用户之间形成的一个契约,是不能在改变的,尤其是订单总价,送货地址,还有用户 的额外要求(一般作为留言)。且会导致商品减库存。此外防止用户恶意拍下,一般会在拍下后一直不付款的订单进行超时取消订单。相当于用户不履行合同,平台 将合同取消,再归还库存。对于秒杀商品一般15分钟不支付就会取消。购物车不同于订单,算不上是一个契约,仅仅是提供给用户的一个便捷功能。用户完成选品 后,可以一次性付款。

转载地址:
http://blog.csdn.net/smallhorse87/article/details/48038779

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,189评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,577评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,857评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,703评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,705评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,620评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,995评论 3 396
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,656评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,898评论 1 298
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,639评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,720评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,395评论 4 319
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,982评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,953评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,195评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,907评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,472评论 2 342

推荐阅读更多精彩内容