重复插入问题修复
This commit is contained in:
@@ -176,7 +176,7 @@ public class ApiAccessLimitUtil {
|
|||||||
boolean lock = Boolean.TRUE.equals(redisUtils.setIfAbsent(lockKey, clientId, seconds));
|
boolean lock = Boolean.TRUE.equals(redisUtils.setIfAbsent(lockKey, clientId, seconds));
|
||||||
int count = 0;
|
int count = 0;
|
||||||
while (!lock) {
|
while (!lock) {
|
||||||
if (count++ > 100) {
|
if (count++ > 1000) {
|
||||||
throw new RuntimeException("系统繁忙, 稍后再试");
|
throw new RuntimeException("系统繁忙, 稍后再试");
|
||||||
}
|
}
|
||||||
Thread.sleep(20);
|
Thread.sleep(20);
|
||||||
|
|||||||
@@ -9,7 +9,9 @@ import cn.hutool.json.JSONUtil;
|
|||||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||||
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
||||||
|
import com.sqx.common.utils.ApiAccessLimitUtil;
|
||||||
import com.sqx.common.utils.DateUtils;
|
import com.sqx.common.utils.DateUtils;
|
||||||
|
import com.sqx.common.utils.RedisKeys;
|
||||||
import com.sqx.modules.app.entity.*;
|
import com.sqx.modules.app.entity.*;
|
||||||
import com.sqx.modules.app.service.*;
|
import com.sqx.modules.app.service.*;
|
||||||
import com.sqx.modules.common.service.CommonInfoService;
|
import com.sqx.modules.common.service.CommonInfoService;
|
||||||
@@ -173,18 +175,23 @@ public class TempOrdersTask {
|
|||||||
}
|
}
|
||||||
// UserEntity byUser = userService.queryByInvitationCode(user.getInviterCode());
|
// UserEntity byUser = userService.queryByInvitationCode(user.getInviterCode());
|
||||||
if (byUser != null) {
|
if (byUser != null) {
|
||||||
InviteAchievement inviteAchievement = inviteAchievementService.getByUserId(user.getUserId());
|
ApiAccessLimitUtil.runFunAndCheckKey(() -> {
|
||||||
if (inviteAchievement == null) {
|
InviteAchievement inviteAchievement = inviteAchievementService.getByUserId(user.getUserId());
|
||||||
inviteAchievement = new InviteAchievement();
|
if (inviteAchievement == null) {
|
||||||
inviteAchievement.setState(0);
|
|
||||||
inviteAchievement.setCount(1);
|
inviteAchievement = new InviteAchievement();
|
||||||
inviteAchievement.setCreateTime(DateUtil.date());
|
inviteAchievement.setState(0);
|
||||||
inviteAchievement.setTargetUserId(user.getUserId());
|
inviteAchievement.setCount(1);
|
||||||
inviteAchievement.setUserId(byUser.getUserId());
|
inviteAchievement.setCreateTime(DateUtil.date());
|
||||||
inviteAchievementService.save(inviteAchievement);
|
inviteAchievement.setTargetUserId(user.getUserId());
|
||||||
} else {
|
inviteAchievement.setUserId(byUser.getUserId());
|
||||||
inviteAchievementService.incrCount(inviteAchievement.getId(), inviteAchievement.getUserId(), 1);
|
inviteAchievementService.save(inviteAchievement);
|
||||||
}
|
} else {
|
||||||
|
inviteAchievementService.incrCount(inviteAchievement.getId(), inviteAchievement.getUserId(), 1);
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}, RedisKeys.getLockKey("insert_invite_achievement_lock", user.getUserId()), 30);
|
||||||
|
|
||||||
}
|
}
|
||||||
if (byUser != null && !byUser.getUserId().equals(1L)) {
|
if (byUser != null && !byUser.getUserId().equals(1L)) {
|
||||||
if (user.getUserId().equals(14244L)) {
|
if (user.getUserId().equals(14244L)) {
|
||||||
|
|||||||
Reference in New Issue
Block a user