咨询热线:18076568990、0755-25823180

电商商城系统开发常见技术性问题

2020-9-10 23:12| 发布者: shopwt| 查看: 1090| 评论: 0

简介: 随着用户群积聚,社区的强大,另有来自投资人对变现渴望的压力,好像最容易想到的变现途径就是“我们也卖点东西吧”

随着用户群积聚,社区的强大,另有来自投资人对变现渴望的压力,好像最容易想到的变现途径就是“我们也卖点东西吧”,如果直接给淘宝链接,会显得逼格太低,购买别人的体系,钱不少花,末了为了顺应本身的需求,也要做相当多的工作,以是,越来越多差别的App里有了商城。固然根据差别的业务需求,复杂度也大相径庭。

这里还没有本领“谎话电商体系”,只是把现实开辟过程中碰到过的逻辑陷阱论述一下,并逐级优化,给出一个这里以为的比力稳妥的方案,电商体系,博大博识,我提出的标题都比力小,而且很大概属于新手的坑。也欢迎读文章读你提出更多标题,大概更优方案。

标题1. 一个小包管,确保订单不会被恶意修改

看了笔墨,标题肯定以为懵逼了。举个例子吧,比方用户A的订单已付出,用户B却大概将它变成申请退款。

怎么大概?

如果这个体系存在毛病,而且B是一个乐意实行的步伐员!

之前Review过一些团队小同伴的代码,简朴来说,修改订单状态被形貌成如下游程:

  1. 登岸验证等

  2. 通过POST继承到Client传过来的OrderID

  3. 修改订单

那么标题出现了,如果用户B利用技能本领发送了A订单的ID,会怎么样?如果体系没有做充实的校验工作,那么对不起,一个登任命户可以实行全部数字,把全部订单都搞乱。

固然这是一件很简朴的例子,固然优化的方案有许多,最简朴的方案应该就是先获取订单

Order order = orderService.getOrderByIdAnOwner(orderId, ownerId)
这里获取订单同时增长了订单全部者的束缚,以防止恶意更改别人的订单。

如果不涉及到其他的关于订单操纵,也可以简简朴单在更新的时间,确保订单全部者

Order order = orderService.updateOrderByIdAnOwner(orderId, ownerId)

  1. 扣库溢出标题(超卖标题)

之前有个朋侪碰到过这个标题,他说他们贩卖的某些商品比力热销,导致许多人去哄抢,在制止哄抢的时间,却发现商品库存是负数。这应该是范例的超卖了吧。

如果没有过多的思考,扣库存的过程很容易写成如下这个样子:

Product product = findProductById(productId)
//库存富足
if(product.availableAmount > 0){
//做一些订单组装等工作
}
deduceProductAvailableAmount(product.id, buyAmount)
如果用户量很小,这段代码应该没有标题,如果用户变多,同一时候有2个Tread同时运行这段代码,那么情况就很糟糕了,由于这段代码并不是线程安全的。

最简朴的优化大概是

public synchronized void createOrder(userId, productId, buyAmount){

Product product = findProductById(productId)
//库存富足
if(product.availableAmount > 0){
    //做一些订单组装等工作
}
deduceProductAvailableAmount(product.id, buyAmount) 

}
如许的做法捐躯服从,而且更严峻的是,如果服务器分布式摆设,那么照旧不能管理标题。两台服务器也会并发碰到同样的标题。

方案一,一种比力通例的管理方案是利用数据库的行级锁,这里我们可以用

Select for update
语法得到数据条目,固然两个条件要包管:

  1. Service方法是Transactional

  2. 获取数据的方式是SelectByPrimaryKey,如果不是,会导致整个表被锁住。

@Transaction(readOnly=false)
public void createOrder(userId, productId, buyAmount){

Product product = findOrderByPrimaryKeyForUpdate(productId)
//库存富足
if(product.availableAmount > 0){
    //做一些订单组装等工作
}
deduceProductAvailableAmount(product.id, buyAmount) 

}


ShopWT(www.shopwt.com)是国内知名商城系统及商城网站建设提供商,其中销客多小程序系统为商家提供小程序商城开发、小程序分销系统、微分销系统、商城系统、电商网站建设、微信分销系统、小程序商城等多端商城及电子商务行业解决方案>
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
收藏 分享 邀请

鲜花

握手

雷人

路过

鸡蛋

精彩阅读

更多+

最新活动

联系我们

产品及方案咨询:18076568990、0755-25823180

电子邮箱:web@shopwt.com、客服微信:shopwtcom

公司地址:深圳市罗湖区人民南路3002号国贸大厦B座1608楼

  • 官方公众号

  • 微信客服