| package com.xcong.excoin.monitor.service.impl; | 
|   | 
| import com.xcong.excoin.common.entity.FebsConstant; | 
| import com.xcong.excoin.common.entity.QueryRequest; | 
| import com.xcong.excoin.common.utils.AddressUtil; | 
| import com.xcong.excoin.common.utils.HttpContextUtil; | 
| import com.xcong.excoin.common.utils.IpUtil; | 
| import com.xcong.excoin.common.utils.SortUtil; | 
| import com.xcong.excoin.monitor.entity.LoginLog; | 
| import com.xcong.excoin.monitor.mapper.LoginLogMapper; | 
| import com.xcong.excoin.monitor.service.ILoginLogService; | 
| import com.xcong.excoin.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<LoginLogMapper, LoginLog> implements ILoginLogService { | 
|   | 
|     @Override | 
|     public IPage<LoginLog> findLoginLogs(LoginLog loginLog, QueryRequest request) { | 
|         QueryWrapper<LoginLog> 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<LoginLog> 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<String> 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<Map<String, Object>> findLastSevenDaysVisitCount(User user) { | 
|         return this.baseMapper.findLastSevenDaysVisitCount(user); | 
|     } | 
| } |