短视频app源码,如何实现一人只许买一单的需求?
一般来说秒杀的商品都是优惠力度很大的,所以可能存在一种需求——平台只允许一个用户购买一个商品。
对于短视频app源码秒杀场景下的这种需求,我们应该怎么去设计呢?
很明显,我们需要在执行扣除库存的操作之前,先去查查数据库是否已经有了该用户的订单了;如果有了,说明该用户已经下单过了,不能再购买;如果没有,则执行扣除操作并生成订单。
// 查询订单
int count = query().eq("user_id", userId).eq("voucher_id", voucherId).count();
// 判断是否存在
if (count > 0) {
// 用户已经购买过了
return Result.fail("用户已经购买过一次!");
}
// 扣减库存
boolean success = seckillVoucherService.update()
.setSql("stock = stock - 1") // set stock = stock - 1
.eq("voucher_id", voucherId).gt("stock", 0) // where id = ? and stock > 0
.update();
以上就是短视频app源码,如何实现一人只许买一单的需求?, 更多内容欢迎关注之后的文章