package com.iplatform.base.service; import com.iplatform.model.po.S_login_info; import com.iplatform.model.po.S_oper_log; import com.walker.db.page.GenericPager; import com.walker.db.page.ListPageContext; import com.walker.db.page.PageSearch; import com.walker.infrastructure.utils.DateUtils; import com.walker.infrastructure.utils.NumberGenerator; import com.walker.infrastructure.utils.StringUtils; import com.walker.jdbc.service.BaseServiceImpl; import org.springframework.stereotype.Service; import java.util.HashMap; import java.util.Map; @Service public class LogServiceImpl extends BaseServiceImpl { private static final String SQL_PAGE_LOGIN_LOG = "select * from s_login_info where 1=1"; private static final String SQL_PAGE_OPERATE_LOG = "select * from s_oper_log where 1=1"; /** * 分页查询操作日志。 * @param operateName * @param businessType * @param status * @param title * @return * @date 2023-01-09 */ public GenericPager queryPageOperateLogList(String operateName , Integer businessType, Integer status, String title){ Map parameters = new HashMap<>(); StringBuilder sql = new StringBuilder(SQL_PAGE_OPERATE_LOG); if(StringUtils.isNotEmpty(operateName)){ sql.append(" and oper_name = :operateName"); parameters.put("operateName", operateName); } if(businessType != null){ sql.append(" and business_type = :businessType"); parameters.put("businessType", businessType.intValue()); } if(status != null && (status.intValue() == 1 || status.intValue() == 0)){ sql.append(" and status = :status"); parameters.put("status", status.intValue()); } if(StringUtils.isNotEmpty(title)){ sql.append(" and title = :title"); parameters.put("title", title); } PageSearch pageSearch = ListPageContext.getPageSearch(); return this.selectSplit(sql.toString(), parameters, pageSearch.getPageIndex(), pageSearch.getPageSize(), new S_oper_log()); } /** * 分页查询登录日志 * @param ip * @param userName * @param status * @return * @date 2023-01-05 */ public GenericPager queryPageLoginLogList(String ip, String userName, String status){ Map parameters = new HashMap<>(); StringBuilder sql = new StringBuilder(SQL_PAGE_LOGIN_LOG); if(StringUtils.isNotEmpty(ip)){ sql.append(" and ipaddr = :ipaddr"); parameters.put("ipaddr", ip); } if(StringUtils.isNotEmpty(userName)){ sql.append(" and user_name = :userName"); parameters.put("userName", userName); } if(StringUtils.isNotEmpty(status)){ sql.append(" and status = :status"); parameters.put("status", status); } PageSearch pageSearch = ListPageContext.getPageSearch(); return this.selectSplit(sql.toString(), parameters, pageSearch.getPageIndex(), pageSearch.getPageSize(), new S_login_info()); } public void execClearOperateLog(){ this.execute("truncate table s_oper_log", new Object[]{}); } public void execClearLoginLog(){ this.execute("truncate table s_login_info", new Object[]{}); } public void execInsertOperateLog(S_oper_log s_oper_log){ s_oper_log.setOper_time(DateUtils.getDateTimeNumber(System.currentTimeMillis())); s_oper_log.setOper_id(NumberGenerator.getLongSequenceNumber()); this.insert(s_oper_log); } /** * 写入一条登录日志,目前修改为:只有登录失败才会调用该方法。

* 请参考:{@linkplain LoginServiceImpl#execUpdateUserLogin(long, String, String, String, S_login_info)} * @param s_login_info * @param userId * @date 2023-03-23 */ public void execInsertLoginLog(S_login_info s_login_info, Long userId){ if(s_login_info != null){ this.insert(s_login_info); } } }