业务题第7天

本文详细介绍了项目中的优惠券功能,包括新建、发放(即时与定时)、领取(手动与指定发放)以及使用规则。同时讨论了防止优惠券超领的方法,以及事务失效的多种场景及其解决方案,特别关注了Spring框架中的事务管理机制和传播行为。
摘要由CSDN通过智能技术生成

7-1 介绍一下你们项目中的优惠券功能

在我们的项目中优惠券的功能大体上可以分为,新建优惠券、发放优惠券、领取优惠券、使用优惠券。

1、新建优惠券:主要就是对优惠券数据表进行一个新增的操作。

2、发放优惠券:有立即发放:优惠券立刻生效,直接出现在用户端页面供用户领取。
      定时发放:定一个发放开始时间,时间到期后才会进入出现在用户端页面。

3、领取优惠券:手动领取:就是展示在用户端页面,由用户自己手动点击领取。
      指定发放:就是兑换码模式,后台给优惠券生成N张兑换码,由管理员发放给指定用户。

4、使用优惠券:根据优惠券指定的课程,在下单时可以抵扣金额。


7-2 你们项目中是如何防止优惠券超领的 

在我们的项目中优惠券超领分为,多人超买、单人超领

多人超领时,可以使用乐观锁解决,每次提交前只要判断当前数量是否小于总计数量即可。

单人超领时,可以使用悲观锁解决,可以通过在领取优惠券代码块上加锁,锁用户id来解决此问题。


7-3 事务失效的场景有哪些

事务方法不是public修饰。 Spring中声明式事务是基于AOP结合动态代理实现的,spring要求被代理方法必须是public的。

非事务方法调用事务方法:非事务方法调用事务方法导致事务失效的原因与Spring框架的事务管理机制有关。Spring通过代理对象实现事务管理,但是非事务方法不会触发代理对象的创建,导致事务失效。

事务方法的异常被捕获:非事务方法调用事务方法时,由于异常被捕获而不会向外抛出,导致Spring无法感知事务异常,从而无法回滚事务,导致事务失效。

事务异常类型不对:Spring事务管理默认只感知RuntimeException异常,对于其他异常如IOException,Spring无法捕获并回滚事务,导致事务失效。

事务传播行为不对:事务传播行为定义了事务方法与其他事务方法的关系,包括如何处理事务的传播和边界。如果事务传播行为设置不正确,可能会导致事务失效或产生意外的结果。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值