整合LoginHistoryRepository 到 HistoryLoginService

This commit is contained in:
shimingxy
2024-12-17 09:48:54 +08:00
parent 9e20e02ead
commit f19e92e2dc
12 changed files with 61 additions and 174 deletions

View File

@@ -1,136 +0,0 @@
/*
* Copyright [2020] [MaxKey of copyright http://www.maxkey.top]
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.dromara.maxkey.persistence.repository;
import java.sql.Types;
import org.apache.commons.lang3.StringUtils;
import org.dromara.maxkey.entity.history.HistoryLogin;
import org.dromara.maxkey.web.WebContext;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.jdbc.core.JdbcTemplate;
public class LoginHistoryRepository {
private static Logger logger = LoggerFactory.getLogger(LoginHistoryRepository.class);
private static final String HISTORY_LOGIN_INSERT_STATEMENT = """
insert into mxk_history_login
( id ,
sessionid ,
category ,
userid ,
username ,
displayname ,
logintype ,
message ,
code ,
provider ,
sourceip ,
country ,
province ,
city ,
location ,
browser ,
platform ,
application ,
sessionstatus ,
instid)
values( ? , ? , ? , ? , ? , ? , ? , ?, ? , ? , ? , ?, ?, ? , ? , ?, ? , ? , ? , ?)
""";
protected JdbcTemplate jdbcTemplate;
public LoginHistoryRepository(JdbcTemplate jdbcTemplate) {
this.jdbcTemplate = jdbcTemplate;
}
public void login(HistoryLogin historyLogin) {
historyLogin.setId(WebContext.genId());
if(StringUtils.isBlank(historyLogin.getInstId())) {
historyLogin.setInstId("1");
}
//Thread insert
new Thread(new HistoryLoginRunnable(jdbcTemplate,historyLogin)).start();
}
public class HistoryLoginRunnable implements Runnable{
JdbcTemplate jdbcTemplate;
HistoryLogin historyLogin;
public HistoryLoginRunnable(JdbcTemplate jdbcTemplate, HistoryLogin historyLogin) {
super();
this.jdbcTemplate = jdbcTemplate;
this.historyLogin = historyLogin;
}
@Override
public void run() {
logger.debug("History Login {}" , historyLogin);
jdbcTemplate.update(HISTORY_LOGIN_INSERT_STATEMENT,
new Object[] {
historyLogin.getId(),
historyLogin.getSessionId(),
historyLogin.getCategory(),
historyLogin.getUserId(),
historyLogin.getUsername(),
historyLogin.getDisplayName(),
historyLogin.getLoginType(),
historyLogin.getMessage(),
historyLogin.getCode(),
historyLogin.getProvider(),
historyLogin.getSourceIp(),
historyLogin.getCountry(),
historyLogin.getProvince(),
historyLogin.getCity(),
historyLogin.getLocation(),
historyLogin.getBrowser(),
historyLogin.getPlatform(),
"Browser",
historyLogin.getSessionStatus(),
historyLogin.getInstId()
},
new int[] {
Types.VARCHAR,
Types.VARCHAR,
Types.INTEGER,
Types.VARCHAR,
Types.VARCHAR,
Types.VARCHAR,
Types.VARCHAR,
Types.VARCHAR,
Types.VARCHAR,
Types.VARCHAR,
Types.VARCHAR,
Types.VARCHAR,
Types.VARCHAR,
Types.VARCHAR,
Types.VARCHAR,
Types.VARCHAR,
Types.VARCHAR,
Types.VARCHAR,
Types.INTEGER,
Types.VARCHAR
});
}
}
}

View File

@@ -24,4 +24,6 @@ import org.dromara.mybatis.jpa.entity.JpaPageResults;
public interface HistoryLoginService extends IJpaService<HistoryLogin>{
public JpaPageResults<HistoryLogin> queryOnlineSession(HistoryLogin historyLogin);
public void login(HistoryLogin historyLogin);
}

View File

@@ -17,17 +17,50 @@
package org.dromara.maxkey.persistence.service.impl;
import org.apache.commons.lang3.StringUtils;
import org.dromara.maxkey.entity.history.HistoryLogin;
import org.dromara.maxkey.persistence.mapper.HistoryLoginMapper;
import org.dromara.maxkey.persistence.service.HistoryLoginService;
import org.dromara.maxkey.web.WebContext;
import org.dromara.mybatis.jpa.entity.JpaPageResults;
import org.dromara.mybatis.jpa.service.impl.JpaServiceImpl;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Repository;
@Repository
public class HistoryLoginServiceImpl extends JpaServiceImpl<HistoryLoginMapper,HistoryLogin> implements HistoryLoginService{
private static Logger logger = LoggerFactory.getLogger(HistoryLoginServiceImpl.class);
public JpaPageResults<HistoryLogin> queryOnlineSession(HistoryLogin historyLogin) {
return this.fetchPageResults("queryOnlineSession",historyLogin);
}
public void login(HistoryLogin historyLogin) {
historyLogin.setId(WebContext.genId());
if(StringUtils.isBlank(historyLogin.getInstId())) {
historyLogin.setInstId("1");
}
//Thread insert
new Thread(new HistoryLoginRunnable(this,historyLogin)).start();
}
public class HistoryLoginRunnable implements Runnable{
HistoryLoginService historyLoginService;
HistoryLogin historyLogin;
public HistoryLoginRunnable(HistoryLoginService historyLoginService, HistoryLogin historyLogin) {
super();
this.historyLoginService = historyLoginService;
this.historyLogin = historyLogin;
}
@Override
public void run() {
logger.debug("History Login {}" , historyLogin);
this.historyLoginService.insert(historyLogin);
}
}
}