39 lines
1.5 KiB
Java
39 lines
1.5 KiB
Java
package com.ruoyi.cai.service;
|
|
|
|
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
import com.ruoyi.cai.domain.LoginMinLog;
|
|
import com.ruoyi.cai.mapper.LoginMinLogMapper;
|
|
import com.ruoyi.cai.mq.handle.dto.LoginNotifyDTO;
|
|
import com.ruoyi.cai.util.IdLockManager;
|
|
import org.springframework.stereotype.Service;
|
|
|
|
import java.time.LocalDate;
|
|
|
|
@Service
|
|
public class LoginMinLogServiceImpl extends ServiceImpl<LoginMinLogMapper, LoginMinLog> implements LoginMinLogService {
|
|
@Override
|
|
public void saveData(LoginNotifyDTO loginNotify) {
|
|
LocalDate now = loginNotify.getHappenTime().toLocalDate();
|
|
boolean exists = this.exists(Wrappers.lambdaQuery(LoginMinLog.class)
|
|
.eq(LoginMinLog::getLoginDate, now)
|
|
.eq(LoginMinLog::getUserId, loginNotify.getUserId()));
|
|
if(exists){
|
|
return;
|
|
}
|
|
String lockKey = String.format("loginMinLog:%s", loginNotify.getUserId());
|
|
IdLockManager.executeWithLock(lockKey, () -> {
|
|
boolean existsF = this.exists(Wrappers.lambdaQuery(LoginMinLog.class)
|
|
.eq(LoginMinLog::getLoginDate, now)
|
|
.eq(LoginMinLog::getUserId, loginNotify.getUserId()));
|
|
if(existsF){
|
|
return;
|
|
}
|
|
LoginMinLog log = new LoginMinLog();
|
|
log.setLoginDate(now);
|
|
log.setUserId(loginNotify.getUserId());
|
|
this.save(log);
|
|
});
|
|
}
|
|
}
|