This commit is contained in:
张良(004796)
2024-01-31 17:25:44 +08:00
parent 00be3b8844
commit 46cada598e
9 changed files with 104 additions and 13 deletions

View File

@@ -6,6 +6,7 @@ import cn.dev33.satoken.stp.StpUtil;
import cn.hutool.core.util.IdUtil;
import cn.hutool.extra.spring.SpringUtil;
import com.alibaba.fastjson2.JSON;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.ruoyi.cai.domain.*;
import com.ruoyi.cai.dto.commom.ignoredata.InviteIgnoreData;
import com.ruoyi.cai.enums.CodeEnum;
@@ -135,14 +136,14 @@ public class CaiLoginManager {
awardManager.giveRegisterAsync(user.getId());
if(user.getInviteId() != null){
User finalUser = user;
ExecutorConstant.COMMON_EXECUTOR.execute(() -> dealInviteId(finalUser));
ExecutorConstant.COMMON_EXECUTOR.execute(() -> dealInviteId(finalUser,true));
}
return login(user);
}
public void dealInviteId(User user){
public void dealInviteId(User user, boolean openIgnore){
Long inviteId = user.getInviteId();
if(inviteId == null){
return;
@@ -151,7 +152,7 @@ public class CaiLoginManager {
if(inviteUser == null){
return;
}
String key = LockManager.getDealInviteLockKey(inviteId);
String key = LockManager.getDealInviteLockKey(user.getId());
RLock lock = redissonClient.getLock(key);
if(lock.isLocked()){
log.warn("点击太快了等一等dealInviteId");
@@ -159,14 +160,16 @@ public class CaiLoginManager {
}
lock.lock(5,TimeUnit.SECONDS);
try {
Integer inviteBindRate = systemConfigManager.getSystemConfigOfInt(SystemConfigEnum.INVITE_BIND_RATE);
boolean sj = RandomSjUtil.rateSj(inviteBindRate);
if(!sj){
InviteIgnoreData data = new InviteIgnoreData();
data.setUserId(user.getId());
data.setInviteId(inviteId);
ignoreDataService.saveIgnoreData(IgnoreDataTypeEnum.INVITE,inviteUser.getId(),data);
return;
if(openIgnore){
Integer inviteBindRate = systemConfigManager.getSystemConfigOfInt(SystemConfigEnum.INVITE_BIND_RATE);
boolean sj = RandomSjUtil.rateSj(inviteBindRate);
if(!sj){
InviteIgnoreData data = new InviteIgnoreData();
data.setUserId(user.getId());
data.setInviteId(inviteId);
ignoreDataService.saveIgnoreData(IgnoreDataTypeEnum.INVITE,inviteUser.getId(),data);
return;
}
}
UserInvite check = userInviteService.getByUserId(user.getId());
if(check == null){
@@ -174,6 +177,11 @@ public class CaiLoginManager {
userInvite.setUserId(user.getId());
userInvite.setInviteId(user.getInviteId());
userInviteService.save(userInvite);
}else{
userInviteService.update(Wrappers.lambdaUpdate(UserInvite.class)
.eq(UserInvite::getId,check.getId())
.set(UserInvite::getInviteId,user.getInviteId())
.set(UserInvite::getRewardCoinTotal,0L));
}
// 处理工会
Union union = null; //