升级magic-api 2.0 增加操作日志、登录日志

This commit is contained in:
吕金泽
2022-03-05 22:30:18 +08:00
parent b630ed3828
commit d743d7c95b
99 changed files with 1483 additions and 420 deletions
+1 -1
View File
@@ -14,7 +14,7 @@
<description>magic-boot</description>
<properties>
<java.version>1.8</java.version>
<magic-api.version>1.7.5</magic-api.version>
<magic-api.version>2.0.0-beta.2</magic-api.version>
<druid.version>1.2.1</druid.version>
<hutool-all.version>5.7.13</hutool-all.version>
<sa-token.version>1.26.0</sa-token.version>
@@ -1,7 +1,7 @@
package org.ssssssss.magicboot.extension;
import org.springframework.stereotype.Component;
import org.ssssssss.magicapi.modules.table.NamedTable;
import org.ssssssss.magicapi.modules.db.table.NamedTable;
import org.ssssssss.magicboot.model.MagicBootConstants;
import org.ssssssss.script.annotation.Comment;
import org.ssssssss.script.functions.ExtensionMethod;
@@ -4,10 +4,11 @@ import org.springframework.stereotype.Component;
import org.springframework.web.context.request.RequestAttributes;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;
import org.ssssssss.magicapi.context.RequestContext;
import org.ssssssss.magicapi.modules.ResponseModule;
import org.ssssssss.magicapi.core.context.RequestContext;
import org.ssssssss.magicapi.modules.servlet.ResponseModule;
import org.ssssssss.script.annotation.Comment;
import org.ssssssss.script.functions.ExtensionMethod;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@@ -36,4 +37,4 @@ public class ResponseFunctionExtension implements ExtensionMethod {
return responseModule.end();
}
}
}
@@ -3,13 +3,14 @@ package org.ssssssss.magicboot.interceptor;
import cn.dev33.satoken.stp.StpUtil;
import cn.hutool.core.util.IdUtil;
import org.springframework.stereotype.Component;
import org.ssssssss.magicapi.interceptor.NamedTableInterceptor;
import org.ssssssss.magicapi.model.SqlMode;
import org.ssssssss.magicapi.modules.table.NamedTable;
import static org.ssssssss.magicboot.model.MagicBootConstants.*;
import org.ssssssss.magicapi.modules.db.inteceptor.NamedTableInterceptor;
import org.ssssssss.magicapi.modules.db.model.SqlMode;
import org.ssssssss.magicapi.modules.db.table.NamedTable;
import java.util.Date;
import static org.ssssssss.magicboot.model.MagicBootConstants.*;
@Component
public class NamedTableHandlerInterceptor implements NamedTableInterceptor {
@@ -1,29 +1,42 @@
package org.ssssssss.magicboot.interceptor;
import cn.dev33.satoken.stp.StpUtil;
import cn.hutool.extra.servlet.ServletUtil;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.core.annotation.Order;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Component;
import org.ssssssss.magicapi.interceptor.RequestInterceptor;
import org.ssssssss.magicapi.model.ApiInfo;
import org.ssssssss.magicapi.model.Options;
import org.ssssssss.magicapi.provider.MagicAPIService;
import org.springframework.web.servlet.HandlerInterceptor;
import org.ssssssss.magicapi.core.context.RequestEntity;
import org.ssssssss.magicapi.core.interceptor.RequestInterceptor;
import org.ssssssss.magicapi.core.model.ApiInfo;
import org.ssssssss.magicapi.core.model.Options;
import org.ssssssss.magicapi.core.service.MagicAPIService;
import org.ssssssss.magicapi.core.service.MagicResourceService;
import org.ssssssss.magicapi.utils.PathUtils;
import org.ssssssss.magicboot.model.StatusCode;
import org.ssssssss.script.MagicScriptContext;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.Date;
import java.util.List;
import java.util.Objects;
@Component
@Order(1)
public class PermissionInterceptor implements RequestInterceptor {
public class PermissionInterceptor implements RequestInterceptor, HandlerInterceptor {
@Autowired
MagicAPIService magicAPIService;
@Autowired
MagicResourceService magicResourceService;
@Autowired
private JdbcTemplate template;
/*
* 当返回对象时,直接将此对象返回到页面,返回null时,继续执行后续操作
*/
@@ -46,4 +59,25 @@ public class PermissionInterceptor implements RequestInterceptor {
return null;
}
@Override
public Object postHandle(RequestEntity requestEntity, Object returnValue) throws Exception {
try {
HttpServletRequest request = requestEntity.getRequest();
ApiInfo info = requestEntity.getApiInfo();
template.update("insert into sys_oper_log(api_name, api_path, api_method, cost_time, create_by, create_date, user_agent, user_ip) values(?,?,?,?,?,?,?,?)",
// PathUtils.replaceSlash(groupServiceProvider.getFullName(info.getGroupId()) + "/" + info.getName()).replace("/","-"),
PathUtils.replaceSlash(String.format("/%s/%s", magicResourceService.getGroupName(info.getGroupId()), info.getName())),
request.getRequestURI(),
request.getMethod(),
System.currentTimeMillis() - requestEntity.getRequestTime(),
StpUtil.getLoginId(),
new Date(requestEntity.getRequestTime()),
request.getHeader("User-Agent"),
ServletUtil.getClientIP(request));
} catch (Exception ignored){
ignored.printStackTrace();
}
return null;
}
}
@@ -1,6 +1,6 @@
package org.ssssssss.magicboot.model;
import org.ssssssss.magicapi.model.JsonBean;
import org.ssssssss.magicapi.core.model.JsonBean;
public enum StatusCode {
@@ -37,19 +37,19 @@ magic-api:
web: /magic/web
show-sql: true #配置打印SQL
sql-column-case: camel
page-config:
page: current
size: size
cache-config:
enable: true #开启缓存,默认是不开启的
ttl: 3600000 #有效期1小时,默认-1 即永不过期
resource:
location: data/magic-api
response-code-config:
page:
page: current
size: size
cache:
enable: true #开启缓存,默认是不开启的
ttl: 3600000 #有效期1小时,默认-1 即永不过期
response-code:
success: 200 #执行成功的code值
invalid: 400 #参数验证未通过的code值
exception: 500 #执行出现异常的code值
crud-config: # CRUD相关配置
crud: # CRUD相关配置
logic-delete-column: is_del #逻辑删除列
logic-delete-value: 1 #逻辑删除值
# security-config: