登录日志实现类

master
Eterlaze 8 months ago
parent a30ed12583
commit 7d546715ba

@ -0,0 +1,68 @@
package com.example.api.service.impl;
import com.example.api.model.dto.LoginDto; // 导入LoginDto数据传输对象封装登录信息
import com.example.api.model.entity.Admin; // 导入Admin实体类代表管理员信息
import com.example.api.model.entity.LoginLog; // 导入LoginLog实体类代表登录日志信息
import com.example.api.repository.LoginLogRepository; // 导入LoginLogRepository接口用于访问登录日志数据
import com.example.api.service.LoginLogService; // 导入LoginLogService接口定义登录日志服务
import com.example.api.utils.BrowserUtil; // 导入BrowserUtil工具类用于获取浏览器信息
import com.example.api.utils.IpUtil; // 导入IpUtil工具类用于获取IP地址
import org.springframework.stereotype.Service; // 导入Service注解标识服务组件
import javax.annotation.Resource; // 注解用于注入Spring管理的Bean
import javax.servlet.http.HttpServletRequest; // 导入HttpServletRequest接口用于获取HTTP请求信息
import java.time.LocalDateTime; // 导入LocalDateTime类用于处理日期和时间
import java.util.Date; // 导入Date类用于处理日期
import java.util.List; // 导入List类用于处理列表数据
/**
*
*/
@Service
public class LoginLogServiceImpl implements LoginLogService {
@Resource
private LoginLogRepository loginLogRepository; // 使用@Resource注解注入LoginLogRepository
/**
*
* @return
*/
@Override
public List<LoginLog> getAll() {
return loginLogRepository.findAll(); // 调用仓库层方法查询所有登录日志
}
/**
*
* @param loginDto
* @param admin
* @param request HTTP
*/
@Override
public void recordLog(LoginDto loginDto, Admin admin, HttpServletRequest request) {
// 创建日志对象
LoginLog loginLog = new LoginLog();
loginLog.setDate(new Date()); // 设置登录时间为当前时间
loginLog.setEmail(loginDto.getEmail()); // 设置登录邮箱
// 获取浏览器版本
loginLog.setBrowser(BrowserUtil.getBrower(request));
loginLog.setIp(IpUtil.getIpAddr(request)); // 获取登录IP地址
// 设置登录状态null为0表示登录失败非null为1表示登录成功
if (admin == null){
loginLog.setStatus(0);
} else {
loginLog.setStatus(1);
}
// 将日志记录写入数据库
loginLogRepository.save(loginLog);
}
/**
*
* @param id ID
*/
@Override
public void delLoginLog(String id) {
loginLogRepository.deleteById(id); // 调用仓库层方法根据ID删除登录日志
}
}
Loading…
Cancel
Save