|
@@ -1,5 +1,6 @@
|
|
|
package org.dromara.system.service.impl;
|
|
|
|
|
|
+import cn.hutool.core.util.ObjectUtil;
|
|
|
import cn.hutool.http.useragent.UserAgent;
|
|
|
import cn.hutool.http.useragent.UserAgentUtil;
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
@@ -12,10 +13,14 @@ import org.dromara.common.mybatis.core.page.TableDataInfo;
|
|
|
import org.dromara.common.core.utils.ServletUtils;
|
|
|
import org.dromara.common.core.utils.StringUtils;
|
|
|
import org.dromara.common.core.utils.ip.AddressUtils;
|
|
|
+import org.dromara.common.satoken.utils.LoginHelper;
|
|
|
+import org.dromara.system.domain.SysClient;
|
|
|
import org.dromara.system.domain.SysLogininfor;
|
|
|
import org.dromara.system.domain.bo.SysLogininforBo;
|
|
|
import org.dromara.system.domain.vo.SysLogininforVo;
|
|
|
+import org.dromara.system.mapper.SysClientMapper;
|
|
|
import org.dromara.system.mapper.SysLogininforMapper;
|
|
|
+import org.dromara.system.service.ISysClientService;
|
|
|
import org.dromara.system.service.ISysLogininforService;
|
|
|
import lombok.RequiredArgsConstructor;
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
@@ -41,6 +46,8 @@ public class SysLogininforServiceImpl implements ISysLogininforService {
|
|
|
|
|
|
private final SysLogininforMapper baseMapper;
|
|
|
|
|
|
+ private final ISysClientService clientService;
|
|
|
+
|
|
|
/**
|
|
|
* 记录登录信息
|
|
|
*
|
|
@@ -52,6 +59,12 @@ public class SysLogininforServiceImpl implements ISysLogininforService {
|
|
|
HttpServletRequest request = logininforEvent.getRequest();
|
|
|
final UserAgent userAgent = UserAgentUtil.parse(request.getHeader("User-Agent"));
|
|
|
final String ip = ServletUtils.getClientIP(request);
|
|
|
+ // 客户端信息
|
|
|
+ String clientid = request.getHeader(LoginHelper.CLIENT_KEY);
|
|
|
+ SysClient client = null;
|
|
|
+ if (StringUtils.isNotBlank(clientid)) {
|
|
|
+ client = clientService.queryByClientId(clientid);
|
|
|
+ }
|
|
|
|
|
|
String address = AddressUtils.getRealAddressByIP(ip);
|
|
|
StringBuilder s = new StringBuilder();
|
|
@@ -70,6 +83,10 @@ public class SysLogininforServiceImpl implements ISysLogininforService {
|
|
|
SysLogininforBo logininfor = new SysLogininforBo();
|
|
|
logininfor.setTenantId(logininforEvent.getTenantId());
|
|
|
logininfor.setUserName(logininforEvent.getUsername());
|
|
|
+ if (ObjectUtil.isNotNull(client)) {
|
|
|
+ logininfor.setClientKey(client.getClientKey());
|
|
|
+ logininfor.setDeviceType(client.getDeviceType());
|
|
|
+ }
|
|
|
logininfor.setIpaddr(ip);
|
|
|
logininfor.setLoginLocation(address);
|
|
|
logininfor.setBrowser(browser);
|