package cc.mrbird.febs.server.system.service.impl; import cc.mrbird.febs.common.core.entity.QueryRequest; import cc.mrbird.febs.common.core.entity.constant.FebsConstant; import cc.mrbird.febs.common.core.entity.system.LoginLog; import cc.mrbird.febs.common.core.entity.system.SystemUser; import cc.mrbird.febs.common.core.utils.FebsUtil; import cc.mrbird.febs.common.core.utils.SortUtil; import cc.mrbird.febs.server.system.mapper.LoginLogMapper; import cc.mrbird.febs.server.system.service.ILoginLogService; import cc.mrbird.febs.server.system.utils.AddressUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.apache.commons.lang3.StringUtils; import org.springframework.stereotype.Service; import java.util.Arrays; import java.util.Date; import java.util.List; import java.util.Map; /** * @author MrBird */ @Service("loginLogService") public class LoginLogServiceImpl extends ServiceImpl implements ILoginLogService { @Override public IPage findLoginLogs(LoginLog loginLog, QueryRequest request) { QueryWrapper queryWrapper = new QueryWrapper<>(); if (StringUtils.isNotBlank(loginLog.getUsername())) { queryWrapper.lambda().eq(LoginLog::getUsername, loginLog.getUsername().toLowerCase()); } if (StringUtils.isNotBlank(loginLog.getLoginTimeFrom()) && StringUtils.isNotBlank(loginLog.getLoginTimeTo())) { queryWrapper.lambda() .ge(LoginLog::getLoginTime, loginLog.getLoginTimeFrom()) .le(LoginLog::getLoginTime, loginLog.getLoginTimeTo()); } Page page = new Page<>(request.getPageNum(), request.getPageSize()); SortUtil.handlePageSort(request, page, "LOGIN_TIME", FebsConstant.ORDER_DESC, true); return this.page(page, queryWrapper); } @Override public void saveLoginLog(LoginLog loginLog) { loginLog.setLoginTime(new Date()); String ip = FebsUtil.getHttpServletRequestIpAddress(); loginLog.setIp(ip); loginLog.setLocation(AddressUtil.getCityInfo(ip)); this.save(loginLog); } @Override public void deleteLoginLogs(String[] ids) { List list = Arrays.asList(ids); baseMapper.deleteBatchIds(list); } @Override public Long findTotalVisitCount() { return this.baseMapper.findTotalVisitCount(); } @Override public Long findTodayVisitCount() { return this.baseMapper.findTodayVisitCount(); } @Override public Long findTodayIp() { return this.baseMapper.findTodayIp(); } @Override public List> findLastTenDaysVisitCount(SystemUser user) { return this.baseMapper.findLastTenDaysVisitCount(user); } @Override public List findUserLastSevenLoginLogs(String username) { LoginLog loginLog = new LoginLog(); loginLog.setUsername(username); QueryRequest request = new QueryRequest(); request.setPageNum(1); // 近7日记录 request.setPageSize(7); IPage loginLogs = this.findLoginLogs(loginLog, request); return loginLogs.getRecords(); } }