diff --git a/IDEA/src/main/java/com/example/api/service/impl/LoginLogServiceImpl.java b/IDEA/src/main/java/com/example/api/service/impl/LoginLogServiceImpl.java new file mode 100644 index 00000000..0203eadd --- /dev/null +++ b/IDEA/src/main/java/com/example/api/service/impl/LoginLogServiceImpl.java @@ -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 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删除登录日志 + } +}