关于校验与确认两步操作时,新增,修改需要考虑的问题

业务场景

1.有这样兑奖的活动,【活动1】小票满指定金额换奖品,【活动2】买饮料,瓶盖暗码兑奖

第一步,【校验按钮】拍身份证图片,获取身份证信息;输入小票号或输入暗码,校验是否被使用过(查询是否存在记录);暗码是否有效(提前初始化到暗码表)

第二步,【确认按钮】第一步校验通过,新增兑奖记录,更新暗码状态。

风险点是小票号或暗码是否会被重复使用,类似并发问题

异常场景

同一个小票或者暗码,两个人同时操作,第一步都校验通过了(无记录),再去确认操作,可能导致,小票或暗码被重复使用,正常新增了记录,更新了暗码状态

解决方案

新增时记录表加唯一索引(小票号),更新状态加乐观锁(暗码)

这样就算第一步校验都通过了,新增小票记录时,可捕获唯一索引异常,抛异常,提示小票已被使用,更新暗码状态条件是原始状态是0有效才更新,判断返回值是否为1,是更新成功,否,暗码已被更新,提示暗码已被使用。

拓展方案:加redis分布式锁

疑问

1.新增或者修改,有必要判断返回值是否为1,说明是否成功吗?

新增:什么场景下会不等1,失败的情况,新增时如果加了唯一索引,直接抛异常,判断是否为1没意义,不知道是否存在其他场景新增失败

修改:加了乐观锁,必须要判断是否等于1,来给出提示。

2.大数量新增或批量更新怎么处理

新增:分批操作,捕获异常,打印ERROR日志,或者写入错误日志表

修改:打印ERROR日志,或者写入错误日志表

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值