79 lines
2.8 KiB
Java
79 lines
2.8 KiB
Java
package com.gxwebsoft.common.system.service.impl;
|
|
|
|
import cn.hutool.extra.servlet.ServletUtil;
|
|
import cn.hutool.http.useragent.UserAgent;
|
|
import cn.hutool.http.useragent.UserAgentUtil;
|
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
import com.gxwebsoft.common.core.web.PageParam;
|
|
import com.gxwebsoft.common.core.web.PageResult;
|
|
import com.gxwebsoft.common.system.entity.LoginRecord;
|
|
import com.gxwebsoft.common.system.mapper.LoginRecordMapper;
|
|
import com.gxwebsoft.common.system.param.LoginRecordParam;
|
|
import com.gxwebsoft.common.system.service.LoginRecordService;
|
|
import org.springframework.scheduling.annotation.Async;
|
|
import org.springframework.stereotype.Service;
|
|
|
|
import javax.servlet.http.HttpServletRequest;
|
|
import java.util.List;
|
|
|
|
/**
|
|
* 登录日志Service实现
|
|
*
|
|
* @author WebSoft
|
|
* @since 2018-12-24 16:10:14
|
|
*/
|
|
@Service
|
|
public class LoginRecordServiceImpl extends ServiceImpl<LoginRecordMapper, LoginRecord>
|
|
implements LoginRecordService {
|
|
|
|
@Override
|
|
public PageResult<LoginRecord> pageRel(LoginRecordParam param) {
|
|
PageParam<LoginRecord, LoginRecordParam> page = new PageParam<>(param);
|
|
page.setDefaultOrder("create_time desc");
|
|
return new PageResult<>(baseMapper.selectPageRel(page, param), page.getTotal());
|
|
}
|
|
|
|
@Override
|
|
public List<LoginRecord> listRel(LoginRecordParam param) {
|
|
PageParam<LoginRecord, LoginRecordParam> page = new PageParam<>(param);
|
|
page.setDefaultOrder("create_time desc");
|
|
return page.sortRecords(baseMapper.selectListRel(param));
|
|
}
|
|
|
|
@Override
|
|
public LoginRecord getByIdRel(Integer id) {
|
|
LoginRecordParam param = new LoginRecordParam();
|
|
param.setId(id);
|
|
return param.getOne(baseMapper.selectListRel(param));
|
|
}
|
|
|
|
@Async
|
|
@Override
|
|
public void saveAsync(String username, Integer type, String comments, Integer tenantId,
|
|
HttpServletRequest request) {
|
|
if (username == null) {
|
|
return;
|
|
}
|
|
LoginRecord loginRecord = new LoginRecord();
|
|
loginRecord.setUsername(username);
|
|
loginRecord.setLoginType(type);
|
|
loginRecord.setComments(comments);
|
|
loginRecord.setTenantId(tenantId);
|
|
UserAgent ua = UserAgentUtil.parse(ServletUtil.getHeaderIgnoreCase(request, "User-Agent"));
|
|
if (ua != null) {
|
|
if (ua.getPlatform() != null) {
|
|
loginRecord.setOs(ua.getPlatform().toString());
|
|
}
|
|
if (ua.getOs() != null) {
|
|
loginRecord.setDevice(ua.getOs().toString());
|
|
}
|
|
if (ua.getBrowser() != null) {
|
|
loginRecord.setBrowser(ua.getBrowser().toString());
|
|
}
|
|
}
|
|
loginRecord.setIp(ServletUtil.getClientIP(request));
|
|
baseMapper.insert(loginRecord);
|
|
}
|
|
|
|
}
|