随着用户群积聚,社区的强大,另有来自投资人对变现渴望的压力,好像最容易想到的变现途径就是“我们也卖点东西吧”,如果直接给淘宝链接,会显得逼格太低,购买别人的体系,钱不少花,末了为了顺应本身的需求,也要做相当多的工作,以是,越来越多差别的App里有了商城。固然根据差别的业务需求,复杂度也大相径庭。 这里还没有本领“谎话电商体系”,只是把现实开辟过程中碰到过的逻辑陷阱论述一下,并逐级优化,给出一个这里以为的比力稳妥的方案,电商体系,博大博识,我提出的标题都比力小,而且很大概属于新手的坑。也欢迎读文章读你提出更多标题,大概更优方案。 标题1. 一个小包管,确保订单不会被恶意修改 看了笔墨,标题肯定以为懵逼了。举个例子吧,比方用户A的订单已付出,用户B却大概将它变成申请退款。 怎么大概? 如果这个体系存在毛病,而且B是一个乐意实行的步伐员! 之前Review过一些团队小同伴的代码,简朴来说,修改订单状态被形貌成如下游程:
那么标题出现了,如果用户B利用技能本领发送了A订单的ID,会怎么样?如果体系没有做充实的校验工作,那么对不起,一个登任命户可以实行全部数字,把全部订单都搞乱。 固然这是一件很简朴的例子,固然优化的方案有许多,最简朴的方案应该就是先获取订单 Order order = orderService.getOrderByIdAnOwner(orderId, ownerId) 如果不涉及到其他的关于订单操纵,也可以简简朴单在更新的时间,确保订单全部者 Order order = orderService.updateOrderByIdAnOwner(orderId, ownerId)
之前有个朋侪碰到过这个标题,他说他们贩卖的某些商品比力热销,导致许多人去哄抢,在制止哄抢的时间,却发现商品库存是负数。这应该是范例的超卖了吧。 如果没有过多的思考,扣库存的过程很容易写成如下这个样子: Product product = findProductById(productId) 最简朴的优化大概是 public synchronized void createOrder(userId, productId, buyAmount){
} 方案一,一种比力通例的管理方案是利用数据库的行级锁,这里我们可以用 Select for update
@Transaction(readOnly=false)
} ShopWT(www.shopwt.com)是国内知名商城系统及商城网站建设提供商,其中销客多小程序系统为商家提供小程序商城开发、小程序分销系统、微分销系统、商城系统、电商网站建设、微信分销系统、小程序商城等多端商城及电子商务行业解决方案> 免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作! |