锁写在包含事务的方法里,如果在事务结束之前,提前释放锁,如果释放锁之后的代码抛出异常,则会出现数据不一致的情况。
应该
try{}
catch{}
finally{
//释放锁
}
场景:业务员快速扫码获取成长值,如果没有正确处理事务与锁的关系,最后会导致成长值总和和成长值明细不一致的情况。
成长值升级
1.查询是否存在成长值任务 taskId
不能taskeventid不能重复(该会员成长任务值已添加,重复提交请求)
2.判断周期内最多可以执行多少次任务
3.查询会员信息、会员体系
4.计算成长值(固定成长值和非固定成长值)
5.插入成长值流水
6.根据成长值去Grade表查询等级
7.如果新的成长值和成长等级和老的成长值和成长等级不同,则
失效原来成长值流水记录
插入新的成长值流水记录
否则:只更新members表的成长值
07-25
2568