|
|
@ -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删除登录日志
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|