|
@@ -32,6 +32,7 @@ import org.springframework.util.Assert;
|
|
|
import java.math.BigDecimal;
|
|
|
import java.time.LocalDateTime;
|
|
|
import java.time.LocalTime;
|
|
|
+import java.util.HashMap;
|
|
|
import java.util.List;
|
|
|
import java.util.Map;
|
|
|
import java.util.Objects;
|
|
@@ -108,23 +109,28 @@ public class GameGiftPackCodeLogServiceImpl extends ServiceImpl<GameGiftPackCode
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
- public Tuple2<Boolean, String> getGiftPackCode(Long linkId, String userPhone, String randomCode) {
|
|
|
+ public Map<String, Object> getGiftPackCode(Long linkLogId, String userPhone, String randomCode) {
|
|
|
//线程锁key
|
|
|
String lockKey = RedisKeyConstant.GAME_GIFT_PACK_LOCK + userPhone;
|
|
|
//线程锁 5 分钟, 防止同一用户重复请求
|
|
|
if (!distributedLockComponent.doLock(lockKey, 0L, 5L, TimeUnit.MINUTES)) {
|
|
|
throw new BaseException("操作频繁, 请稍后重试");
|
|
|
}
|
|
|
- GameGiftPackLinkLog gameGiftPackLinkLog = gameGiftPackLinkLogService.getById(linkId);
|
|
|
- Assert.notNull(gameGiftPackLinkLog, "参数错误, 链接访问日志信息不存在");
|
|
|
- //判断验证是通过的
|
|
|
- Long userId = gameGiftPackLinkLog.getUserId();
|
|
|
- Assert.state(StringUtils.isNoneBlank(userId == null ? null : userId.toString(), gameGiftPackLinkLog.getServerId(),
|
|
|
- gameGiftPackLinkLog.getRoleId(), gameGiftPackLinkLog.getRoleName()), "参数错误, 链接访问记录信息缺失");
|
|
|
- //获取礼包码, 且执行释放锁动作
|
|
|
try {
|
|
|
- return this.getRandomCode(randomCode, userPhone, gameGiftPackLinkLog);
|
|
|
+ GameGiftPackLinkLog gameGiftPackLinkLog = gameGiftPackLinkLogService.getById(linkLogId);
|
|
|
+ Assert.notNull(gameGiftPackLinkLog, "参数错误, 链接访问日志信息不存在");
|
|
|
+ //判断验证是通过的
|
|
|
+ Long userId = gameGiftPackLinkLog.getUserId();
|
|
|
+ Assert.state(StringUtils.isNoneBlank(userId == null ? null : userId.toString(), gameGiftPackLinkLog.getServerId(),
|
|
|
+ gameGiftPackLinkLog.getRoleId(), gameGiftPackLinkLog.getRoleName()), "参数错误, 链接访问记录信息缺失");
|
|
|
+ //返回礼包码
|
|
|
+ Map<String, Object> resuktMap = new HashMap<>(2);
|
|
|
+ Tuple2<Boolean, String> tuple2 = this.getRandomCode(randomCode, userPhone, gameGiftPackLinkLog);
|
|
|
+ resuktMap.put("result", tuple2.first);
|
|
|
+ resuktMap.put("msg", tuple2.second);
|
|
|
+ return resuktMap;
|
|
|
} finally {
|
|
|
+ //执行释放锁动作
|
|
|
distributedLockComponent.unlock(lockKey);
|
|
|
}
|
|
|
}
|