package cc.mrbird.febs.monitor.service.impl; import cc.mrbird.febs.common.entity.FebsConstant; import cc.mrbird.febs.common.entity.QueryRequest; import cc.mrbird.febs.common.utils.AddressUtil; import cc.mrbird.febs.common.utils.HttpContextUtil; import cc.mrbird.febs.common.utils.IpUtil; import cc.mrbird.febs.common.utils.SortUtil; import cc.mrbird.febs.monitor.entity.LoginLog; import cc.mrbird.febs.monitor.mapper.LoginLogMapper; import cc.mrbird.febs.monitor.service.ILoginLogService; import cc.mrbird.febs.system.entity.User; 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 javax.servlet.http.HttpServletRequest; 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.getLoginTimeFrom()) && StringUtils.equals(loginLog.getLoginTimeFrom(), loginLog.getLoginTimeTo())) { loginLog.setLoginTimeFrom(loginLog.getLoginTimeFrom() + " 00:00:00"); loginLog.setLoginTimeTo(loginLog.getLoginTimeTo() + " 23:59:59"); } 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, "loginTime", FebsConstant.ORDER_DESC, true); return this.page(page, queryWrapper); } @Override public void saveLoginLog(LoginLog loginLog) { loginLog.setLoginTime(new Date()); HttpServletRequest request = HttpContextUtil.getHttpServletRequest(); String ip = IpUtil.getIpAddr(request); 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> findLastSevenDaysVisitCount(User user) { return this.baseMapper.findLastSevenDaysVisitCount(user); } }