From 19135908721264e4027d2b262a33b0fc1ee41da2 Mon Sep 17 00:00:00 2001
From: zhongrj <646384940@qq.com>
Date: Fri, 29 Mar 2024 18:24:03 +0800
Subject: [PATCH] 日志接口数据设置查询修改
---
src/main/java/org/springblade/modules/system/mapper/LogApiMapper.java | 15 +++
src/main/java/org/springblade/modules/system/service/impl/LogServiceImpl.java | 91 ++++++++++++++++++++++
src/main/java/org/springblade/modules/system/service/ILogApiService.java | 12 ++
src/main/java/org/springblade/modules/system/service/impl/LogApiServiceImpl.java | 16 +++
src/main/java/org/springblade/modules/system/controller/LogApiController.java | 19 ++++
src/main/java/org/springblade/modules/system/entity/LogApiExt.java | 19 ++++
src/main/java/org/springblade/modules/system/mapper/LogApiMapper.xml | 37 ++++-----
src/main/java/org/springblade/common/constant/CommonConstant.java | 2
8 files changed, 178 insertions(+), 33 deletions(-)
diff --git a/src/main/java/org/springblade/common/constant/CommonConstant.java b/src/main/java/org/springblade/common/constant/CommonConstant.java
index 98a67e0..dd00a00 100644
--- a/src/main/java/org/springblade/common/constant/CommonConstant.java
+++ b/src/main/java/org/springblade/common/constant/CommonConstant.java
@@ -28,7 +28,7 @@
/**
* app name
*/
- String APPLICATION_NAME = AppConstant.APPLICATION_NAME_PREFIX + "api";
+ String APPLICATION_NAME = "jczz-" + "api";
/**
* sword 系统名
diff --git a/src/main/java/org/springblade/modules/system/controller/LogApiController.java b/src/main/java/org/springblade/modules/system/controller/LogApiController.java
index b675f20..4f73838 100644
--- a/src/main/java/org/springblade/modules/system/controller/LogApiController.java
+++ b/src/main/java/org/springblade/modules/system/controller/LogApiController.java
@@ -26,6 +26,7 @@
import org.springblade.core.tenant.annotation.NonDS;
import org.springblade.core.tool.api.R;
import org.springblade.modules.system.service.ILogApiService;
+import org.springblade.modules.system.entity.LogApiExt;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
@@ -52,7 +53,7 @@
* 查询单条
*/
@GetMapping("/detail")
- public R<LogApi> detail(LogApi log) {
+ public R<LogApi> detail(LogApiExt log) {
return R.data(logService.getOne(Condition.getQueryWrapper(log)));
}
@@ -60,8 +61,20 @@
* 查询多条(分页)
*/
@GetMapping("/list")
- public R<IPage<LogApi>> list(@ApiIgnore @RequestParam Map<String, Object> log, Query query) {
- IPage<LogApi> pages = logService.page(Condition.getPage(query.setDescs("create_time")), Condition.getQueryWrapper(log, LogApi.class));
+ public R<IPage<LogApiExt>> list(@ApiIgnore @RequestParam Map<String, Object> log, Query query) {
+ IPage<LogApiExt> pages = logService.page(Condition.getPage(query.setDescs("create_time")), Condition.getQueryWrapper(log, LogApiExt.class));
+ return R.data(pages);
+ }
+
+ /**
+ * 查询多条(自定义分页)
+ * @param logApi
+ * @param query
+ * @return
+ */
+ @GetMapping("/page")
+ public R<IPage<LogApiExt>> selectLogApiExtPage(LogApiExt logApi, Query query) {
+ IPage<LogApiExt> pages = logService.selectLogApiExtPage(Condition.getPage(query), logApi);
return R.data(pages);
}
diff --git a/src/main/java/org/springblade/modules/system/entity/LogApiExt.java b/src/main/java/org/springblade/modules/system/entity/LogApiExt.java
new file mode 100644
index 0000000..81cfecd
--- /dev/null
+++ b/src/main/java/org/springblade/modules/system/entity/LogApiExt.java
@@ -0,0 +1,19 @@
+package org.springblade.modules.system.entity;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import org.springblade.core.log.model.LogApi;
+
+@Data
+@TableName("blade_log_api")
+public class LogApiExt extends LogApi {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 应用id
+ */
+ @ApiModelProperty(value = "应用id")
+ private String applicationId;
+}
diff --git a/src/main/java/org/springblade/modules/system/mapper/LogApiMapper.java b/src/main/java/org/springblade/modules/system/mapper/LogApiMapper.java
index 7010a9e..f6d0ed0 100644
--- a/src/main/java/org/springblade/modules/system/mapper/LogApiMapper.java
+++ b/src/main/java/org/springblade/modules/system/mapper/LogApiMapper.java
@@ -17,13 +17,24 @@
package org.springblade.modules.system.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
-import org.springblade.core.log.model.LogApi;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import org.apache.ibatis.annotations.Param;
+import org.springblade.modules.system.entity.LogApiExt;
+
+import java.util.List;
/**
* Mapper 接口
*
* @author Chill
*/
-public interface LogApiMapper extends BaseMapper<LogApi> {
+public interface LogApiMapper extends BaseMapper<LogApiExt> {
+ /**
+ * 查询多条(自定义分页)
+ * @param logApi
+ * @param logApi
+ * @return
+ */
+ List<LogApiExt> selectLogApiExtPage(IPage<LogApiExt> page,@Param("logApi") LogApiExt logApi);
}
diff --git a/src/main/java/org/springblade/modules/system/mapper/LogApiMapper.xml b/src/main/java/org/springblade/modules/system/mapper/LogApiMapper.xml
index 39b6194..7dd7dd9 100644
--- a/src/main/java/org/springblade/modules/system/mapper/LogApiMapper.xml
+++ b/src/main/java/org/springblade/modules/system/mapper/LogApiMapper.xml
@@ -2,25 +2,22 @@
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="org.springblade.modules.system.mapper.LogApiMapper">
- <!-- 通用查询映射结果 -->
- <resultMap id="logResultMap" type="org.springblade.core.log.model.LogApi">
- <result column="id" property="id"/>
- <result column="create_time" property="createTime"/>
- <result column="service_id" property="serviceId"/>
- <result column="server_host" property="serverHost"/>
- <result column="server_ip" property="serverIp"/>
- <result column="env" property="env"/>
- <result column="type" property="type"/>
- <result column="title" property="title"/>
- <result column="method" property="method"/>
- <result column="request_uri" property="requestUri"/>
- <result column="user_agent" property="userAgent"/>
- <result column="remote_ip" property="remoteIp"/>
- <result column="method_class" property="methodClass"/>
- <result column="method_name" property="methodName"/>
- <result column="params" property="params"/>
- <result column="time" property="time"/>
- <result column="create_by" property="createBy"/>
- </resultMap>
+ <!--自定义分页查询-->
+ <select id="selectLogApiExtPage" resultType="org.springblade.modules.system.entity.LogApiExt">
+ select * from blade_log_api where 1 = 1
+ <if test="logApi.type!=null and logApi.type!=''">
+ and type = #{logApi.type}
+ </if>
+ <if test="logApi.applicationId!=null and logApi.applicationId!=''">
+ and application_id = #{logApi.type}
+ </if>
+ <if test="logApi.serviceId!=null and logApi.serviceId!=''">
+ and service_id like concat('%',#{logApi.serviceId},'%')
+ </if>
+ <if test="logApi.serverHost!=null and logApi.serverHost!=''">
+ and server_host like concat('%',#{logApi.serverHost},'%')
+ </if>
+ order by id desc,create_time desc
+ </select>
</mapper>
diff --git a/src/main/java/org/springblade/modules/system/service/ILogApiService.java b/src/main/java/org/springblade/modules/system/service/ILogApiService.java
index 2bb99cd..12d8236 100644
--- a/src/main/java/org/springblade/modules/system/service/ILogApiService.java
+++ b/src/main/java/org/springblade/modules/system/service/ILogApiService.java
@@ -16,14 +16,22 @@
*/
package org.springblade.modules.system.service;
+import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
-import org.springblade.core.log.model.LogApi;
+import org.springblade.modules.system.entity.LogApiExt;
/**
* 服务类
*
* @author Chill
*/
-public interface ILogApiService extends IService<LogApi> {
+public interface ILogApiService extends IService<LogApiExt> {
+ /**
+ * 查询多条(自定义分页)
+ * @param logApi
+ * @param logApi
+ * @return
+ */
+ IPage<LogApiExt> selectLogApiExtPage(IPage<LogApiExt> page, LogApiExt logApi);
}
diff --git a/src/main/java/org/springblade/modules/system/service/impl/LogApiServiceImpl.java b/src/main/java/org/springblade/modules/system/service/impl/LogApiServiceImpl.java
index d6d0fcb..d4092d5 100644
--- a/src/main/java/org/springblade/modules/system/service/impl/LogApiServiceImpl.java
+++ b/src/main/java/org/springblade/modules/system/service/impl/LogApiServiceImpl.java
@@ -16,10 +16,11 @@
*/
package org.springblade.modules.system.service.impl;
+import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import org.springblade.core.log.model.LogApi;
import org.springblade.modules.system.mapper.LogApiMapper;
import org.springblade.modules.system.service.ILogApiService;
+import org.springblade.modules.system.entity.LogApiExt;
import org.springframework.stereotype.Service;
/**
@@ -28,7 +29,16 @@
* @author Chill
*/
@Service
-public class LogApiServiceImpl extends ServiceImpl<LogApiMapper, LogApi> implements ILogApiService {
+public class LogApiServiceImpl extends ServiceImpl<LogApiMapper, LogApiExt> implements ILogApiService {
-
+ /**
+ * 查询多条(自定义分页)
+ * @param logApi
+ * @param logApi
+ * @return
+ */
+ @Override
+ public IPage<LogApiExt> selectLogApiExtPage(IPage<LogApiExt> page, LogApiExt logApi) {
+ return page.setRecords(baseMapper.selectLogApiExtPage(page,logApi));
+ }
}
diff --git a/src/main/java/org/springblade/modules/system/service/impl/LogServiceImpl.java b/src/main/java/org/springblade/modules/system/service/impl/LogServiceImpl.java
index 9c363fd..fb965f0 100644
--- a/src/main/java/org/springblade/modules/system/service/impl/LogServiceImpl.java
+++ b/src/main/java/org/springblade/modules/system/service/impl/LogServiceImpl.java
@@ -4,11 +4,22 @@
import org.springblade.core.log.model.LogApi;
import org.springblade.core.log.model.LogError;
import org.springblade.core.log.model.LogUsual;
+import org.springblade.core.secure.exception.SecureException;
+import org.springblade.core.tool.utils.Charsets;
+import org.springblade.core.tool.utils.Func;
import org.springblade.modules.system.service.ILogApiService;
import org.springblade.modules.system.service.ILogErrorService;
import org.springblade.modules.system.service.ILogService;
import org.springblade.modules.system.service.ILogUsualService;
+import org.springblade.modules.system.entity.LogApiExt;
import org.springframework.stereotype.Service;
+
+import javax.servlet.ServletRequestEvent;
+import javax.servlet.ServletRequestListener;
+import javax.servlet.http.HttpServletRequest;
+import java.io.UnsupportedEncodingException;
+import java.util.Base64;
+import java.util.Objects;
/**
* Created by Blade.
@@ -17,7 +28,19 @@
*/
@Service
@AllArgsConstructor
-public class LogServiceImpl implements ILogService {
+public class LogServiceImpl implements ILogService, ServletRequestListener {
+
+ private HttpServletRequest request = null;
+
+ @Override
+ public void requestInitialized(ServletRequestEvent sre) {
+ request = (HttpServletRequest) sre.getServletRequest();
+ }
+
+ @Override
+ public void requestDestroyed(ServletRequestEvent sre) {
+
+ }
private final ILogUsualService usualService;
private final ILogApiService apiService;
@@ -30,12 +53,76 @@
@Override
public Boolean saveApiLog(LogApi log) {
- return apiService.save(log);
+ LogApiExt api = new LogApiExt();
+ try {
+ String[] tokens = extractAndDecodeHeader();
+ api.setApplicationId(tokens[0]);
+ } catch (UnsupportedEncodingException e) {
+ e.printStackTrace();
+ }
+ api.setTitle(log.getTitle());
+ api.setTime(log.getTime());
+ api.setTenantId(log.getTenantId());
+ api.setServiceId(log.getServiceId());
+ api.setServerIp(log.getServerIp());
+ api.setEnv(log.getEnv());
+ api.setServerHost(log.getServerHost());
+ api.setRemoteIp(log.getRemoteIp());
+ api.setRequestUri(log.getRequestUri());
+ api.setUserAgent(log.getUserAgent());
+ api.setMethod(log.getMethod());
+ api.setMethodName(log.getMethodName());
+ api.setMethodClass(log.getMethodClass());
+ api.setCreateTime(log.getCreateTime());
+ api.setCreateBy(log.getCreateBy());
+ if (log.getRequestUri().equals("/blade-auth/oauth/token")){
+ api.setType("1");
+ }else {
+ api.setType("2");
+ }
+ // 保存
+ return apiService.save(api);
}
+
+
@Override
public Boolean saveErrorLog(LogError log) {
return errorService.save(log);
}
+
+ /**
+ * 解析请求头
+ * @return
+ */
+ public String[] extractAndDecodeHeader() throws UnsupportedEncodingException {
+ try {
+ String header = ((HttpServletRequest) Objects.requireNonNull(request)).getHeader("Authorization");
+ header = Func.toStr(header).replace("Basic%20", "Basic ");
+ if (!header.startsWith("Basic ")) {
+ throw new SecureException("未获取到请求头[Authorization]的信息");
+ } else {
+ byte[] base64Token = header.substring(6).getBytes(Charsets.UTF_8_NAME);
+
+ byte[] decoded;
+ try {
+ decoded = Base64.getDecoder().decode(base64Token);
+ } catch (IllegalArgumentException var5) {
+ throw new RuntimeException("客户端令牌解析失败");
+ }
+
+ String token = new String(decoded, Charsets.UTF_8_NAME);
+ int index = token.indexOf(":");
+ if (index == -1) {
+ throw new RuntimeException("客户端令牌不合法");
+ } else {
+ return new String[]{token.substring(0, index), token.substring(index + 1)};
+ }
+ }
+ } catch (Throwable var6) {
+ throw var6;
+ }
+ }
+
}
--
Gitblit v1.9.3