记得上下班打卡 | git大法好,push需谨慎

Commit bfefa70a authored by jiangxiulong's avatar jiangxiulong

Lock

parent a97f895e
...@@ -67,25 +67,14 @@ public class SweetIntegralActivityDrawServiceImpl extends ServiceImpl<SweetInteg ...@@ -67,25 +67,14 @@ public class SweetIntegralActivityDrawServiceImpl extends ServiceImpl<SweetInteg
@Override @Override
public ResponseDto<SweetIntegralActivityPrizeVo> create(String integralActivityId) { public ResponseDto<SweetIntegralActivityPrizeVo> create(String integralActivityId) {
// TODO: 2021/10/26 看情况是否加锁 一个用户整个逻辑单进程 Map tokenClaims = CurrentUtil.getTokenClaims();
boolean isLock = redisDataUtils.setIntegralDrawLock("1111"); String userId = StringUtils.defaultString((String.valueOf(tokenClaims.get("sub"))), "");
// 加锁
boolean isLock = redisDataUtils.setIntegralDrawLock(userId);
if (!isLock) { if (!isLock) {
return ResponseDto.failure("太快了"); return ResponseDto.failure("您的手速太快啦~");
} else { } else {
try { try {
System.out.println("获取锁成功,开始执行逻辑");
Thread.sleep(2000);
return ResponseDto.success();
} catch (Exception e) {
System.out.println("程序执行异常{}");
return ResponseDto.failure("异常了");
} finally {
redisDataUtils.delIntegralDrawLock("1111");
System.out.println("执行完毕。释放锁完成;");
}
}
/*Map tokenClaims = CurrentUtil.getTokenClaims();
String userId = StringUtils.defaultString((String.valueOf(tokenClaims.get("sub"))), "");
String nickname = StringUtils.defaultString((String.valueOf(tokenClaims.get("nickname"))), ""); String nickname = StringUtils.defaultString((String.valueOf(tokenClaims.get("nickname"))), "");
IntegralActivityVo integralActivity = redisDataUtils.getIntegralActivityInfo(integralActivityId); IntegralActivityVo integralActivity = redisDataUtils.getIntegralActivityInfo(integralActivityId);
...@@ -137,7 +126,7 @@ public class SweetIntegralActivityDrawServiceImpl extends ServiceImpl<SweetInteg ...@@ -137,7 +126,7 @@ public class SweetIntegralActivityDrawServiceImpl extends ServiceImpl<SweetInteg
SweetIntegralActivityPrizeVo sweetIntegralActivityPrizeVo = SweetIntegralActivityPrizeVo.getNew().copy(sweetIntegralActivityPrize); SweetIntegralActivityPrizeVo sweetIntegralActivityPrizeVo = SweetIntegralActivityPrizeVo.getNew().copy(sweetIntegralActivityPrize);
// 减库存 顺便判断库存是否够 todo 这块可能不能这么判断 后台增加库存的时候如果是-1会丢库存 实际-1这个并没有发出 // 减库存 顺便判断库存是否够 -1的时候回滚回去
long activityPrizeNum = redisDataUtils.decrIntegralActivityPrizeNum(integralActivityId, sweetIntegralActivityPrizeVo.getPrizeId(), 1); long activityPrizeNum = redisDataUtils.decrIntegralActivityPrizeNum(integralActivityId, sweetIntegralActivityPrizeVo.getPrizeId(), 1);
long activityPrizeWinnersNum = redisDataUtils.decrIntegralActivityPrizeWinnersNum(integralActivityId, sweetIntegralActivityPrizeVo.getPrizeId(), 1); long activityPrizeWinnersNum = redisDataUtils.decrIntegralActivityPrizeWinnersNum(integralActivityId, sweetIntegralActivityPrizeVo.getPrizeId(), 1);
if (activityPrizeNum < 0) {// 库存不够了 if (activityPrizeNum < 0) {// 库存不够了
...@@ -196,7 +185,15 @@ public class SweetIntegralActivityDrawServiceImpl extends ServiceImpl<SweetInteg ...@@ -196,7 +185,15 @@ public class SweetIntegralActivityDrawServiceImpl extends ServiceImpl<SweetInteg
queueUtils.sendMsgByRedis(MQConst.SweetQueue.SWEET_INTEGRAL_ACTIVITY_DRAW.getKey(), queueUtils.sendMsgByRedis(MQConst.SweetQueue.SWEET_INTEGRAL_ACTIVITY_DRAW.getKey(),
SqlMapping.gets(sqls, sqlsDataA)); SqlMapping.gets(sqls, sqlsDataA));
return ResponseDto.success(sweetIntegralActivityPrizeVo);*/ return ResponseDto.success(sweetIntegralActivityPrizeVo);
} catch (Exception e) {
log.error("积分抽奖异常 e:{}", e);
return ResponseDto.failure("操作失败,请稍后重试!");
} finally {
// 执行完毕。释放锁
redisDataUtils.delIntegralDrawLock(userId);
}
}
} }
@Override @Override
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment