This commit is contained in:
张良(004796)
2024-02-05 15:46:29 +08:00
parent 144c5d1335
commit caac9f5cc1
14 changed files with 176 additions and 80 deletions

View File

@@ -18,5 +18,5 @@ public interface UserOnlineService extends IService<UserOnline> {
void activeUpdate();
void updateOnlineByYunxin(String eventType, Long userId, Long timestamp);
}

View File

@@ -4,10 +4,13 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.cai.domain.UserOnline;
import com.ruoyi.cai.dto.app.vo.user.OnlineStatusVo;
import com.ruoyi.cai.enums.SystemConfigEnum;
import com.ruoyi.cai.manager.SystemConfigManager;
import com.ruoyi.cai.mapper.UserOnlineMapper;
import com.ruoyi.cai.service.UserOnlineService;
import com.ruoyi.common.helper.LoginHelper;
import lombok.RequiredArgsConstructor;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.time.LocalDateTime;
@@ -22,6 +25,9 @@ import java.time.LocalDateTime;
@Service
public class UserOnlineServiceImpl extends ServiceImpl<UserOnlineMapper, UserOnline> implements UserOnlineService {
@Autowired
private SystemConfigManager systemConfigManager;
@Override
public UserOnline getByUserId(Long userId){
return this.getOne(Wrappers.lambdaQuery(UserOnline.class).eq(UserOnline::getUserId,userId).last("limit 1"));
@@ -72,4 +78,34 @@ public class UserOnlineServiceImpl extends ServiceImpl<UserOnlineMapper, UserOnl
.set(UserOnline::getLastLiveTime, LocalDateTime.now()));
}
@Override
public void updateOnlineByYunxin(String eventType, Long userId, Long timestamp) {
if(userId == null || timestamp == null || eventType == null){
log.error("参数异常");
return;
}
UserOnline userOnline = this.getByUserId(userId);
if(userOnline == null){
return;
}
boolean yunxinOnlineEnable = systemConfigManager.getSystemConfigOfBool(SystemConfigEnum.YUNXIN_ONLINE_ENABLE);
if(!yunxinOnlineEnable){
return;
}
if("2".equals(eventType)){ // 登陆事件
this.update(Wrappers.lambdaUpdate(UserOnline.class)
.eq(UserOnline::getUserId,userId)
.le(UserOnline::getReceiveTime, timestamp)
.set(UserOnline::getReceiveTime, timestamp)
.set(UserOnline::getStatus, 1));
}else if("3".equals(eventType)){ // 登出事件
this.update(Wrappers.lambdaUpdate(UserOnline.class)
.eq(UserOnline::getUserId,userId)
.le(UserOnline::getReceiveTime, timestamp)
.set(UserOnline::getReceiveTime, timestamp)
.set(UserOnline::getStatus, 0));
}
}
}