Ver código fonte

新增专属门墩儿api日志接口

DESKTOP-VAEGFGM\zqc 3 meses atrás
pai
commit
d3b65f0922
20 arquivos alterados com 610 adições e 80 exclusões
  1. 1 0
      citu-module-infra/citu-module-infra-api/pom.xml
  2. 9 0
      citu-module-infra/citu-module-infra-api/src/main/java/com/citu/module/infra/api/logger/ApiAccessLogApi.java
  3. 41 0
      citu-module-infra/citu-module-infra-api/src/main/java/com/citu/module/infra/api/logger/dto/ApiAccessLogPageReqDTO.java
  4. 84 0
      citu-module-infra/citu-module-infra-api/src/main/java/com/citu/module/infra/api/logger/dto/ApiAccessLogRespDTO.java
  5. 26 0
      citu-module-infra/citu-module-infra-biz/src/main/java/com/citu/module/infra/api/logger/ApiAccessLogApiImpl.java
  6. 0 2
      citu-module-infra/citu-module-infra-biz/src/main/java/com/citu/module/infra/controller/admin/logger/ApiAccessLogController.java
  7. 5 28
      citu-module-infra/citu-module-infra-biz/src/main/java/com/citu/module/infra/controller/admin/logger/vo/apiaccesslog/ApiAccessLogRespVO.java
  8. 1 0
      citu-module-infra/citu-module-infra-biz/src/main/java/com/citu/module/infra/dal/mysql/logger/ApiAccessLogMapper.java
  9. 2 2
      citu-module-infra/citu-module-infra-biz/src/main/java/com/citu/module/infra/service/logger/ApiAccessLogService.java
  10. 12 31
      citu-module-infra/citu-module-infra-biz/src/main/java/com/citu/module/infra/service/logger/ApiAccessLogServiceImpl.java
  11. 1 0
      citu-module-infra/citu-module-infra-biz/src/test/java/com/citu/module/infra/service/logger/ApiAccessLogServiceImplTest.java
  12. 25 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/api/MdeApiAccessLogInfoController.java
  13. 54 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/base/api/MdeApiAccessLogInfoSaveVo.java
  14. 42 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/base/api/MdeApiAccessLogPageReqVO.java
  15. 117 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/base/api/MdeApiAccessLogRespVO.java
  16. 15 2
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/dal/dataobject/api/MdeApiAccessLogInfoDO.java
  17. 15 3
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/dal/mysql/api/MdeApiAccessLogInfoMapper.java
  18. 23 12
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/filter/MdeApiAccessLogFilter.java
  19. 8 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/api/MdeApiAccessLogInfoService.java
  20. 129 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/api/MdeApiAccessLogInfoServiceImpl.java

+ 1 - 0
citu-module-infra/citu-module-infra-api/pom.xml

@@ -42,6 +42,7 @@
             <artifactId>spring-cloud-starter-openfeign</artifactId>
             <optional>true</optional>
         </dependency>
+
     </dependencies>
 
 </project>

+ 9 - 0
citu-module-infra/citu-module-infra-api/src/main/java/com/citu/module/infra/api/logger/ApiAccessLogApi.java

@@ -1,6 +1,9 @@
 package com.citu.module.infra.api.logger;
 
 import com.citu.framework.common.pojo.CommonResult;
+import com.citu.framework.common.pojo.PageResult;
+import com.citu.module.infra.api.logger.dto.ApiAccessLogPageReqDTO;
+import com.citu.module.infra.api.logger.dto.ApiAccessLogRespDTO;
 import com.citu.module.infra.api.logger.dto.ApiAccessLogCreateReqDTO;
 import com.citu.module.infra.enums.ApiConstants;
 import io.swagger.v3.oas.annotations.tags.Tag;
@@ -22,6 +25,12 @@ public interface ApiAccessLogApi {
     @Operation(summary = "创建 API 访问日志")
     CommonResult<Boolean> createApiAccessLog(@Valid @RequestBody ApiAccessLogCreateReqDTO createDTO);
 
+
+
+    @PostMapping(PREFIX + "/page")
+    @Operation(summary = "创建 API 访问日志")
+    public PageResult<ApiAccessLogRespDTO> getApiAccessLogPage(@Valid ApiAccessLogPageReqDTO pageReqVO);
+
     /**
      * 【异步】创建 API 访问日志
      *

+ 41 - 0
citu-module-infra/citu-module-infra-api/src/main/java/com/citu/module/infra/api/logger/dto/ApiAccessLogPageReqDTO.java

@@ -0,0 +1,41 @@
+package com.citu.module.infra.api.logger.dto;
+
+import com.citu.framework.common.pojo.PageParam;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.ToString;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.time.LocalDateTime;
+
+import static com.citu.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
+
+@Schema(description = "管理后台 - API 访问日志分页 Request VO")
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ToString(callSuper = true)
+public class ApiAccessLogPageReqDTO extends PageParam {
+
+    @Schema(description = "用户编号", example = "666")
+    private Long userId;
+
+    @Schema(description = "用户类型", example = "2")
+    private Integer userType;
+
+    @Schema(description = "应用名", example = "dashboard")
+    private String applicationName;
+
+    @Schema(description = "请求地址,模糊匹配", example = "/xxx/yyy")
+    private String requestUrl;
+
+    @Schema(description = "开始时间", example = "[2022-07-01 00:00:00, 2022-07-01 23:59:59]")
+    private LocalDateTime[] beginTime;
+
+    @Schema(description = "执行时长,大于等于,单位:毫秒", example = "100")
+    private Integer duration;
+
+    @Schema(description = "结果码", example = "0")
+    private Integer resultCode;
+
+}

+ 84 - 0
citu-module-infra/citu-module-infra-api/src/main/java/com/citu/module/infra/api/logger/dto/ApiAccessLogRespDTO.java

@@ -0,0 +1,84 @@
+package com.citu.module.infra.api.logger.dto;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import java.time.LocalDateTime;
+
+@Schema(description = "管理后台 - API 访问日志 Response VO")
+@Data
+public class ApiAccessLogRespDTO {
+
+    @Schema(description = "日志主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024")
+    private Long id;
+
+    @Schema(description = "链路追踪编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "66600cb6-7852-11eb-9439-0242ac130002")
+    private String traceId;
+
+    @Schema(description = "请求追踪编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "66600cb6-7852-11eb-9439-0242ac130002")
+    private String requestId;
+
+
+
+    @Schema(description = "用户编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "666")
+    private Long userId;
+
+    @Schema(description = "用户昵称", requiredMode = Schema.RequiredMode.REQUIRED, example = "127.0.0.1")
+    private String userNickName;
+
+
+    @Schema(description = "用户类型,参见 UserTypeEnum 枚举", requiredMode = Schema.RequiredMode.REQUIRED, example = "2")
+    private Integer userType;
+
+    @Schema(description = "应用名", requiredMode = Schema.RequiredMode.REQUIRED, example = "dashboard")
+    private String applicationName;
+
+    @Schema(description = "请求方法名", requiredMode = Schema.RequiredMode.REQUIRED, example = "GET")
+    private String requestMethod;
+
+    @Schema(description = "请求地址", requiredMode = Schema.RequiredMode.REQUIRED, example = "/xxx/yyy")
+    private String requestUrl;
+
+    @Schema(description = "请求参数")
+    private String requestParams;
+
+    @Schema(description = "响应结果")
+    private String responseBody;
+
+    @Schema(description = "用户 IP", requiredMode = Schema.RequiredMode.REQUIRED, example = "127.0.0.1")
+    private String userIp;
+
+
+
+
+    @Schema(description = "浏览器 UA", requiredMode = Schema.RequiredMode.REQUIRED, example = "Mozilla/5.0")
+    private String userAgent;
+
+    @Schema(description = "操作模块", requiredMode = Schema.RequiredMode.REQUIRED, example = "商品模块")
+    private String operateModule;
+
+    @Schema(description = "操作名", requiredMode = Schema.RequiredMode.REQUIRED, example = "创建商品")
+    private String operateName;
+
+    @Schema(description = "操作分类", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
+    private Integer operateType;
+
+    @Schema(description = "开始请求时间", requiredMode = Schema.RequiredMode.REQUIRED)
+    private LocalDateTime beginTime;
+
+    @Schema(description = "结束请求时间", requiredMode = Schema.RequiredMode.REQUIRED)
+    private LocalDateTime endTime;
+
+    @Schema(description = "执行时长", requiredMode = Schema.RequiredMode.REQUIRED, example = "100")
+    private Integer duration;
+
+    @Schema(description = "结果码", requiredMode = Schema.RequiredMode.REQUIRED, example = "0")
+    private Integer resultCode;
+
+    @Schema(description = "结果提示", example = "Rayson,牛逼!")
+    private String resultMsg;
+
+    @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
+    private LocalDateTime createTime;
+
+}

+ 26 - 0
citu-module-infra/citu-module-infra-biz/src/main/java/com/citu/module/infra/api/logger/ApiAccessLogApiImpl.java

@@ -1,13 +1,22 @@
 package com.citu.module.infra.api.logger;
 
 import com.citu.framework.common.pojo.CommonResult;
+import com.citu.framework.common.pojo.PageResult;
+import com.citu.framework.common.util.object.BeanUtils;
 import com.citu.module.infra.api.logger.dto.ApiAccessLogCreateReqDTO;
+import com.citu.module.infra.api.logger.dto.ApiAccessLogPageReqDTO;
+import com.citu.module.infra.api.logger.dto.ApiAccessLogRespDTO;
+import com.citu.module.infra.controller.admin.logger.vo.apiaccesslog.ApiAccessLogPageReqVO;
+import com.citu.module.infra.controller.admin.logger.vo.apiaccesslog.ApiAccessLogRespVO;
 import com.citu.module.infra.service.logger.ApiAccessLogService;
 import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.RestController;
 
 import javax.annotation.Resource;
 
+import java.util.ArrayList;
+import java.util.List;
+
 import static com.citu.framework.common.pojo.CommonResult.success;
 
 @RestController // 提供 RESTful API 接口,给 Feign 调用
@@ -23,4 +32,21 @@ public class ApiAccessLogApiImpl implements ApiAccessLogApi {
         return success(true);
     }
 
+    @Override
+    public PageResult<ApiAccessLogRespDTO> getApiAccessLogPage(ApiAccessLogPageReqDTO pageReqVO) {
+        ApiAccessLogPageReqVO reqDTO =new ApiAccessLogPageReqVO();
+        BeanUtils.copyProperties(pageReqVO, reqDTO);
+
+        PageResult<ApiAccessLogRespVO> apiAccessLogPage = apiAccessLogService.getApiAccessLogPage(reqDTO);
+        List<ApiAccessLogRespDTO> respDTOList = new ArrayList<>(apiAccessLogPage.getList().size()+1);
+        for (ApiAccessLogRespVO apiAccessLogRespVO : apiAccessLogPage.getList()) {
+            respDTOList.add(BeanUtils.toBean(apiAccessLogRespVO, ApiAccessLogRespDTO.class));
+        }
+
+        PageResult<ApiAccessLogRespDTO> resApiAccessLogPage = new PageResult<>();
+        resApiAccessLogPage.setList(respDTOList);
+        resApiAccessLogPage.setTotal(apiAccessLogPage.getTotal());
+        return resApiAccessLogPage;
+    }
+
 }

+ 0 - 2
citu-module-infra/citu-module-infra-biz/src/main/java/com/citu/module/infra/controller/admin/logger/ApiAccessLogController.java

@@ -4,11 +4,9 @@ import com.citu.framework.apilog.core.annotation.ApiAccessLog;
 import com.citu.framework.common.pojo.CommonResult;
 import com.citu.framework.common.pojo.PageParam;
 import com.citu.framework.common.pojo.PageResult;
-import com.citu.framework.common.util.object.BeanUtils;
 import com.citu.framework.excel.core.util.ExcelUtils;
 import com.citu.module.infra.controller.admin.logger.vo.apiaccesslog.ApiAccessLogPageReqVO;
 import com.citu.module.infra.controller.admin.logger.vo.apiaccesslog.ApiAccessLogRespVO;
-import com.citu.module.infra.dal.dataobject.logger.ApiAccessLogDO;
 import com.citu.module.infra.service.logger.ApiAccessLogService;
 import io.swagger.v3.oas.annotations.Operation;
 import io.swagger.v3.oas.annotations.tags.Tag;

+ 5 - 28
citu-module-infra/citu-module-infra-biz/src/main/java/com/citu/module/infra/controller/admin/logger/vo/apiaccesslog/ApiAccessLogRespVO.java

@@ -1,10 +1,5 @@
 package com.citu.module.infra.controller.admin.logger.vo.apiaccesslog;
 
-import com.citu.framework.excel.core.annotations.DictFormat;
-import com.citu.framework.excel.core.convert.DictConvert;
-import com.citu.module.system.enums.DictTypeConstants;
-import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
-import com.alibaba.excel.annotation.ExcelProperty;
 import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.Data;
 
@@ -12,93 +7,75 @@ import java.time.LocalDateTime;
 
 @Schema(description = "管理后台 - API 访问日志 Response VO")
 @Data
-@ExcelIgnoreUnannotated
+
 public class ApiAccessLogRespVO {
 
     @Schema(description = "日志主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024")
-    @ExcelProperty("日志主键")
     private Long id;
 
     @Schema(description = "链路追踪编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "66600cb6-7852-11eb-9439-0242ac130002")
-    @ExcelProperty("链路追踪编号")
     private String traceId;
 
+    @Schema(description = "请求追踪编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "66600cb6-7852-11eb-9439-0242ac130002")
+    private String requestId;
+
+
     @Schema(description = "用户编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "666")
-    @ExcelProperty("用户编号")
     private Long userId;
 
     @Schema(description = "用户昵称", requiredMode = Schema.RequiredMode.REQUIRED, example = "127.0.0.1")
-    @ExcelProperty("用户 昵称")
     private String userNickName;
 
 
     @Schema(description = "用户类型,参见 UserTypeEnum 枚举", requiredMode = Schema.RequiredMode.REQUIRED, example = "2")
-    @ExcelProperty(value = "用户类型", converter = DictConvert.class)
-    @DictFormat(DictTypeConstants.USER_TYPE)
     private Integer userType;
 
     @Schema(description = "应用名", requiredMode = Schema.RequiredMode.REQUIRED, example = "dashboard")
-    @ExcelProperty("应用名")
     private String applicationName;
 
     @Schema(description = "请求方法名", requiredMode = Schema.RequiredMode.REQUIRED, example = "GET")
-    @ExcelProperty("请求方法名")
     private String requestMethod;
 
     @Schema(description = "请求地址", requiredMode = Schema.RequiredMode.REQUIRED, example = "/xxx/yyy")
-    @ExcelProperty("请求地址")
     private String requestUrl;
 
     @Schema(description = "请求参数")
-    @ExcelProperty("请求参数")
     private String requestParams;
 
     @Schema(description = "响应结果")
-    @ExcelProperty("响应结果")
     private String responseBody;
 
     @Schema(description = "用户 IP", requiredMode = Schema.RequiredMode.REQUIRED, example = "127.0.0.1")
-    @ExcelProperty("用户 IP")
     private String userIp;
 
 
 
 
     @Schema(description = "浏览器 UA", requiredMode = Schema.RequiredMode.REQUIRED, example = "Mozilla/5.0")
-    @ExcelProperty("浏览器 UA")
     private String userAgent;
 
     @Schema(description = "操作模块", requiredMode = Schema.RequiredMode.REQUIRED, example = "商品模块")
-    @ExcelProperty("操作模块")
     private String operateModule;
 
     @Schema(description = "操作名", requiredMode = Schema.RequiredMode.REQUIRED, example = "创建商品")
-    @ExcelProperty("操作名")
     private String operateName;
 
     @Schema(description = "操作分类", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
-    @ExcelProperty(value = "操作分类", converter = DictConvert.class)
-    @DictFormat(com.citu.module.infra.enums.DictTypeConstants.OPERATE_TYPE)
     private Integer operateType;
 
     @Schema(description = "开始请求时间", requiredMode = Schema.RequiredMode.REQUIRED)
-    @ExcelProperty("开始请求时间")
     private LocalDateTime beginTime;
 
     @Schema(description = "结束请求时间", requiredMode = Schema.RequiredMode.REQUIRED)
-    @ExcelProperty("结束请求时间")
     private LocalDateTime endTime;
 
     @Schema(description = "执行时长", requiredMode = Schema.RequiredMode.REQUIRED, example = "100")
-    @ExcelProperty("执行时长")
     private Integer duration;
 
     @Schema(description = "结果码", requiredMode = Schema.RequiredMode.REQUIRED, example = "0")
-    @ExcelProperty("结果码")
     private Integer resultCode;
 
     @Schema(description = "结果提示", example = "Rayson,牛逼!")
-    @ExcelProperty("结果提示")
     private String resultMsg;
 
     @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)

+ 1 - 0
citu-module-infra/citu-module-infra-biz/src/main/java/com/citu/module/infra/dal/mysql/logger/ApiAccessLogMapper.java

@@ -3,6 +3,7 @@ package com.citu.module.infra.dal.mysql.logger;
 import com.citu.framework.common.pojo.PageResult;
 import com.citu.framework.mybatis.core.mapper.BaseMapperX;
 import com.citu.framework.mybatis.core.query.LambdaQueryWrapperX;
+import com.citu.module.infra.api.logger.dto.ApiAccessLogPageReqDTO;
 import com.citu.module.infra.controller.admin.logger.vo.apiaccesslog.ApiAccessLogPageReqVO;
 import com.citu.module.infra.dal.dataobject.logger.ApiAccessLogDO;
 import org.apache.ibatis.annotations.Delete;

+ 2 - 2
citu-module-infra/citu-module-infra-biz/src/main/java/com/citu/module/infra/service/logger/ApiAccessLogService.java

@@ -1,10 +1,10 @@
 package com.citu.module.infra.service.logger;
 
 import com.citu.framework.common.pojo.PageResult;
-import com.citu.module.infra.api.logger.dto.ApiAccessLogCreateReqDTO;
+import com.citu.module.infra.api.logger.dto.ApiAccessLogPageReqDTO;
 import com.citu.module.infra.controller.admin.logger.vo.apiaccesslog.ApiAccessLogPageReqVO;
+import com.citu.module.infra.api.logger.dto.ApiAccessLogCreateReqDTO;
 import com.citu.module.infra.controller.admin.logger.vo.apiaccesslog.ApiAccessLogRespVO;
-import com.citu.module.infra.dal.dataobject.logger.ApiAccessLogDO;
 
 /**
  * API 访问日志 Service 接口

+ 12 - 31
citu-module-infra/citu-module-infra-biz/src/main/java/com/citu/module/infra/service/logger/ApiAccessLogServiceImpl.java

@@ -7,6 +7,7 @@ import com.citu.framework.tenant.core.context.TenantContextHolder;
 import com.citu.framework.tenant.core.util.TenantUtils;
 import com.citu.framework.web.config.WebProperties;
 import com.citu.module.infra.api.logger.dto.ApiAccessLogCreateReqDTO;
+import com.citu.module.infra.api.logger.dto.ApiAccessLogPageReqDTO;
 import com.citu.module.infra.controller.admin.logger.vo.apiaccesslog.ApiAccessLogPageReqVO;
 import com.citu.module.infra.controller.admin.logger.vo.apiaccesslog.ApiAccessLogRespVO;
 import com.citu.module.infra.dal.dataobject.logger.ApiAccessLogDO;
@@ -78,37 +79,17 @@ public class ApiAccessLogServiceImpl implements ApiAccessLogService {
     @Override
     public PageResult<ApiAccessLogRespVO> getApiAccessLogPage(ApiAccessLogPageReqVO pageReqVO) {
         PageResult<ApiAccessLogRespVO> bean = BeanUtils.toBean(apiAccessLogMapper.selectPage(pageReqVO), ApiAccessLogRespVO.class);
-        List<DictDataRespDTO> datas = dictDataApi.getDictDataList("user_type").getData();
-        Map<String, Map<Long,String>> userTypeMap =new HashMap<>();
-        for (DictDataRespDTO data : datas) {
-            userTypeMap.put(data.getValue(), new HashMap<>());
-        }
-        bean.getList().forEach(item ->{
-            userTypeMap.putIfAbsent(item.getUserType().toString(),new HashMap<>());
-            userTypeMap.get(item.getUserType().toString()).put(null==item.getUserId()?-1L:item.getUserId(),"");
-        });
-        userTypeMap.forEach((key, value) -> {
-            value.remove(-1L);
-            value.remove(0L);
-            if(value.keySet().isEmpty()){
-                return;
-            }
-            // 会员用户
-            if(key.equals("1") ){
-                List<UserInfoRespDTO> data = mendunerUserApi.getUserList(value.keySet()).getData();
-                for (UserInfoRespDTO datum : data) {
-                    value.put(datum.getUserId(),datum.getName());
-                }
-            }
-            // 管理员用户
-            if(key.equals("2")){
-                List<AdminUserRespDTO> data = adminUserApi.getUserList(value.keySet()).getData();
-                for (AdminUserRespDTO datum : data) {
-                    value.put(datum.getId(),datum.getNickname());
-                }
-            }
-        });
-        bean.getList().forEach(item->item.setUserNickName(userTypeMap.get(item.getUserType().toString()).get(item.getUserId())));
+//        List<DictDataRespDTO> datas = dictDataApi.getDictDataList("user_type").getData();
+//        Map<String, Map<Long,String>> userTypeMap =new HashMap<>();
+//        for (DictDataRespDTO data : datas) {
+//            userTypeMap.put(data.getValue(), new HashMap<>());
+//        }
+//        bean.getList().forEach(item ->{
+//            userTypeMap.putIfAbsent(item.getUserType().toString(),new HashMap<>());
+//            userTypeMap.get(item.getUserType().toString()).put(null==item.getUserId()?-1L:item.getUserId(),"");
+//        });
+//
+//        bean.getList().forEach(item->item.setUserNickName(userTypeMap.get(item.getUserType().toString()).get(item.getUserId())));
         return bean;
     }
 

+ 1 - 0
citu-module-infra/citu-module-infra-biz/src/test/java/com/citu/module/infra/service/logger/ApiAccessLogServiceImplTest.java

@@ -5,6 +5,7 @@ import com.citu.framework.common.exception.enums.GlobalErrorCodeConstants;
 import com.citu.framework.common.pojo.PageResult;
 import com.citu.framework.test.core.ut.BaseDbUnitTest;
 import com.citu.module.infra.api.logger.dto.ApiAccessLogCreateReqDTO;
+import com.citu.module.infra.api.logger.dto.ApiAccessLogPageReqDTO;
 import com.citu.module.infra.controller.admin.logger.vo.apiaccesslog.ApiAccessLogPageReqVO;
 import com.citu.module.infra.controller.admin.logger.vo.apiaccesslog.ApiAccessLogRespVO;
 import com.citu.module.infra.dal.dataobject.logger.ApiAccessLogDO;

+ 25 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/api/MdeApiAccessLogInfoController.java

@@ -1,10 +1,28 @@
 package com.citu.module.menduner.system.controller.admin.api;
 
+import com.citu.framework.common.pojo.CommonResult;
+import com.citu.framework.common.pojo.PageResult;
+import com.citu.module.menduner.system.controller.base.api.MdeApiAccessLogPageReqVO;
+import com.citu.module.menduner.system.controller.base.api.MdeApiAccessLogRespVO;
 import com.citu.module.menduner.system.service.api.MdeApiAccessLogInfoService;
+import io.swagger.v3.oas.annotations.Operation;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 
 import javax.annotation.Resource;
+import javax.validation.Valid;
 
+import static com.citu.framework.common.pojo.CommonResult.success;
+
+@Tag(name = "管理后台 - 日志分析")
+@RequestMapping("/menduner/system/api-access-log")
+@Validated
+@Slf4j
 @RestController
 public class MdeApiAccessLogInfoController {
 
@@ -14,6 +32,13 @@ public class MdeApiAccessLogInfoController {
 
 
 
+    @GetMapping("/page")
+    @Operation(summary = "获得API 访问日志分页")
+    @PreAuthorize("@ss.hasPermission('infra:api-access-log:query')")
+    public CommonResult<PageResult<MdeApiAccessLogRespVO>> getApiAccessLogPage(@Valid MdeApiAccessLogPageReqVO pageReqVO) {
+        PageResult<MdeApiAccessLogRespVO> pageResult = mdeApiAccessLogInfoService.getApiAccessLogPage(pageReqVO);
+        return success(pageResult);
+    }
 
 
 

+ 54 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/base/api/MdeApiAccessLogInfoSaveVo.java

@@ -0,0 +1,54 @@
+package com.citu.module.menduner.system.controller.base.api;
+
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.experimental.Accessors;
+
+@Builder
+@Accessors(chain = true)
+@AllArgsConstructor
+public class MdeApiAccessLogInfoSaveVo {
+
+    private String traceId;
+
+    private Long userId;
+
+    private Long enterpriseId;
+
+    private String requestId;
+
+    public MdeApiAccessLogInfoSaveVo() {
+    }
+
+    public String getTraceId() {
+        return traceId;
+    }
+
+    public void setTraceId(String traceId) {
+        this.traceId = traceId;
+    }
+
+    public Long getUserId() {
+        return userId;
+    }
+
+    public void setUserId(Long userId) {
+        this.userId = userId;
+    }
+
+    public Long getEnterpriseId() {
+        return enterpriseId;
+    }
+
+    public void setEnterpriseId(Long enterpriseId) {
+        this.enterpriseId = enterpriseId;
+    }
+
+    public String getRequestId() {
+        return requestId;
+    }
+
+    public void setRequestId(String requestId) {
+        this.requestId = requestId;
+    }
+}

+ 42 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/base/api/MdeApiAccessLogPageReqVO.java

@@ -0,0 +1,42 @@
+package com.citu.module.menduner.system.controller.base.api;
+
+import com.citu.framework.common.pojo.PageParam;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.ToString;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.time.LocalDateTime;
+
+import static com.citu.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
+
+@Schema(description = "管理后台 - API 访问日志分页 Request VO")
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ToString(callSuper = true)
+public class MdeApiAccessLogPageReqVO extends PageParam {
+
+    @Schema(description = "用户编号", example = "666")
+    private Long userId;
+
+    @Schema(description = "用户类型", example = "2")
+    private Integer userType;
+
+    @Schema(description = "应用名", example = "dashboard")
+    private String applicationName;
+
+    @Schema(description = "请求地址,模糊匹配", example = "/xxx/yyy")
+    private String requestUrl;
+
+    @Schema(description = "开始时间", example = "[2022-07-01 00:00:00, 2022-07-01 23:59:59]")
+    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
+    private LocalDateTime[] beginTime;
+
+    @Schema(description = "执行时长,大于等于,单位:毫秒", example = "100")
+    private Integer duration;
+
+    @Schema(description = "结果码", example = "0")
+    private Integer resultCode;
+
+}

+ 117 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/base/api/MdeApiAccessLogRespVO.java

@@ -0,0 +1,117 @@
+package com.citu.module.menduner.system.controller.base.api;
+
+import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.citu.framework.excel.core.annotations.DictFormat;
+import com.citu.framework.excel.core.convert.DictConvert;
+import com.citu.module.system.enums.DictTypeConstants;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import java.time.LocalDateTime;
+
+@Schema(description = "管理后台 - API 访问日志 Response VO")
+@Data
+@ExcelIgnoreUnannotated
+public class MdeApiAccessLogRespVO {
+
+
+
+    @Schema(description = "日志主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024")
+    @ExcelProperty("日志主键")
+    private Long id;
+
+    @Schema(description = "链路追踪编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "66600cb6-7852-11eb-9439-0242ac130002")
+    @ExcelProperty("链路追踪编号")
+    private String traceId;
+
+    @Schema(description = "用户编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "666")
+    @ExcelProperty("用户编号")
+    private Long userId;
+
+    @Schema(description = "企业编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "666")
+    private Long enterpriseId;
+
+
+    @Schema(description = "用户昵称", requiredMode = Schema.RequiredMode.REQUIRED, example = "127.0.0.1")
+    @ExcelProperty("用户 昵称")
+    private String userNickName;
+
+    @Schema(description = "企业名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "127.0.0.1")
+    @ExcelProperty("企业名称")
+    private String enterpriseName;
+
+    @Schema(description = "用户类型,参见 UserTypeEnum 枚举", requiredMode = Schema.RequiredMode.REQUIRED, example = "2")
+    @ExcelProperty(value = "用户类型", converter = DictConvert.class)
+    @DictFormat(DictTypeConstants.USER_TYPE)
+    private Integer userType;
+
+    @Schema(description = "应用名", requiredMode = Schema.RequiredMode.REQUIRED, example = "dashboard")
+    @ExcelProperty("应用名")
+    private String applicationName;
+
+    @Schema(description = "请求方法名", requiredMode = Schema.RequiredMode.REQUIRED, example = "GET")
+    @ExcelProperty("请求方法名")
+    private String requestMethod;
+
+    @Schema(description = "请求地址", requiredMode = Schema.RequiredMode.REQUIRED, example = "/xxx/yyy")
+    @ExcelProperty("请求地址")
+    private String requestUrl;
+
+    @Schema(description = "请求参数")
+    @ExcelProperty("请求参数")
+    private String requestParams;
+
+    @Schema(description = "响应结果")
+    @ExcelProperty("响应结果")
+    private String responseBody;
+
+    @Schema(description = "用户 IP", requiredMode = Schema.RequiredMode.REQUIRED, example = "127.0.0.1")
+    @ExcelProperty("用户 IP")
+    private String userIp;
+
+
+
+
+    @Schema(description = "浏览器 UA", requiredMode = Schema.RequiredMode.REQUIRED, example = "Mozilla/5.0")
+    @ExcelProperty("浏览器 UA")
+    private String userAgent;
+
+    @Schema(description = "操作模块", requiredMode = Schema.RequiredMode.REQUIRED, example = "商品模块")
+    @ExcelProperty("操作模块")
+    private String operateModule;
+
+    @Schema(description = "操作名", requiredMode = Schema.RequiredMode.REQUIRED, example = "创建商品")
+    @ExcelProperty("操作名")
+    private String operateName;
+
+    @Schema(description = "操作分类", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
+    @ExcelProperty(value = "操作分类", converter = DictConvert.class)
+    @DictFormat(com.citu.module.infra.enums.DictTypeConstants.OPERATE_TYPE)
+    private Integer operateType;
+
+    @Schema(description = "开始请求时间", requiredMode = Schema.RequiredMode.REQUIRED)
+    @ExcelProperty("开始请求时间")
+    private LocalDateTime beginTime;
+
+    @Schema(description = "结束请求时间", requiredMode = Schema.RequiredMode.REQUIRED)
+    @ExcelProperty("结束请求时间")
+    private LocalDateTime endTime;
+
+    @Schema(description = "执行时长", requiredMode = Schema.RequiredMode.REQUIRED, example = "100")
+    @ExcelProperty("执行时长")
+    private Integer duration;
+
+    @Schema(description = "结果码", requiredMode = Schema.RequiredMode.REQUIRED, example = "0")
+    @ExcelProperty("结果码")
+    private Integer resultCode;
+
+    @Schema(description = "结果提示", example = "Rayson,牛逼!")
+    @ExcelProperty("结果提示")
+    private String resultMsg;
+
+    @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
+    private LocalDateTime createTime;
+
+
+}

+ 15 - 2
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/dal/dataobject/api/MdeApiAccessLogInfo.java → menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/dal/dataobject/api/MdeApiAccessLogInfoDO.java

@@ -1,11 +1,14 @@
 package com.citu.module.menduner.system.dal.dataobject.api;
 
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableName;
 
 @TableName("mde_api_access_log_info")
-public class MdeApiAccessLogInfo {
+public class MdeApiAccessLogInfoDO {
 
 
+    @TableId(type = IdType.ASSIGN_ID)
     private Long id;
 
     private String traceId;
@@ -14,6 +17,9 @@ public class MdeApiAccessLogInfo {
 
     private Long enterpriseId;
 
+    private String requestId;
+
+
 
     public Long getId() {
         return id;
@@ -47,8 +53,15 @@ public class MdeApiAccessLogInfo {
         this.enterpriseId = enterpriseId;
     }
 
+    public String getRequestId() {
+        return requestId;
+    }
+
+    public void setRequestId(String requestId) {
+        this.requestId = requestId;
+    }
 
-    public MdeApiAccessLogInfo() {
+    public MdeApiAccessLogInfoDO() {
 
     }
 

+ 15 - 3
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/dal/mysql/api/MdeApiAccessLogInfoMapper.java

@@ -1,10 +1,22 @@
 package com.citu.module.menduner.system.dal.mysql.api;
 
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.citu.framework.mybatis.core.mapper.BaseMapperX;
-import com.citu.module.menduner.system.dal.dataobject.api.MdeApiAccessLogInfo;
-import com.citu.module.menduner.system.dal.dataobject.appointment.NewAppointmentsDO;
+import com.citu.module.menduner.system.dal.dataobject.api.MdeApiAccessLogInfoDO;
 import org.apache.ibatis.annotations.Mapper;
 
+import java.util.ArrayList;
+import java.util.List;
+
 @Mapper
-public interface MdeApiAccessLogInfoMapper  extends BaseMapperX<MdeApiAccessLogInfo> {
+public interface MdeApiAccessLogInfoMapper  extends BaseMapperX<MdeApiAccessLogInfoDO> {
+   default   List<MdeApiAccessLogInfoDO> selectRequestIds(List<String> requestIds){
+
+       if(requestIds==null){
+           return  new ArrayList<>();
+       }
+       LambdaQueryWrapper<MdeApiAccessLogInfoDO> queryWrapper = new LambdaQueryWrapper<>();
+       queryWrapper.in(MdeApiAccessLogInfoDO::getRequestId,requestIds);
+      return selectList(queryWrapper);
+   }
 }

+ 23 - 12
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/filter/MdeApiAccessLogFilter.java

@@ -1,24 +1,21 @@
 package com.citu.module.menduner.system.filter;
 
-import cn.hutool.core.util.ArrayUtil;
-import cn.hutool.core.util.StrUtil;
-import com.citu.framework.apilog.core.enums.OperateTypeEnum;
+import com.citu.framework.common.util.monitor.RequestIdUtils;
 import com.citu.framework.common.util.monitor.TracerUtils;
-import com.citu.framework.common.util.servlet.ServletUtils;
+import com.citu.framework.security.core.LoginUser;
 import com.citu.framework.web.config.WebProperties;
 import com.citu.framework.web.core.filter.ApiRequestFilter;
-import com.citu.module.infra.api.logger.ApiAccessLogApi;
+import com.citu.module.menduner.common.util.LoginUserContext;
+import com.citu.module.menduner.system.controller.base.api.MdeApiAccessLogInfoSaveVo;
+import com.citu.module.menduner.system.service.api.MdeApiAccessLogInfoService;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.stereotype.Component;
-import org.springframework.web.bind.annotation.RequestMethod;
 
 import javax.servlet.FilterChain;
 import javax.servlet.ServletException;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 import java.io.IOException;
-import java.time.LocalDateTime;
-import java.util.Map;
 
 /**
  * API 访问日志 Filter
@@ -33,9 +30,12 @@ public class MdeApiAccessLogFilter extends ApiRequestFilter {
 
 
 
+    MdeApiAccessLogInfoService mdeApiAccessLogInfoService;
 
-    public MdeApiAccessLogFilter(WebProperties webProperties) {
+
+    public MdeApiAccessLogFilter(WebProperties webProperties, MdeApiAccessLogInfoService mdeApiAccessLogInfoService) {
         super(webProperties);
+        this.mdeApiAccessLogInfoService=mdeApiAccessLogInfoService;
 
     }
 
@@ -61,11 +61,22 @@ public class MdeApiAccessLogFilter extends ApiRequestFilter {
     }
 
     private void createApiAccessLog(HttpServletRequest request, Exception ex) {
-        String traceId = TracerUtils.getTraceId();
 
+        String requestId = request.getHeader(RequestIdUtils.HEADER_NAME_REQUEST_ID);
+        String traceId = TracerUtils.getTraceId();
+        LoginUser loginUser = LoginUserContext.get();
+        System.out.println("requestId:"+requestId);
         System.out.println("traceId:"+traceId);
-
-
+        MdeApiAccessLogInfoSaveVo apiAccessLogInfoSaveVo = new MdeApiAccessLogInfoSaveVo();
+        apiAccessLogInfoSaveVo.setRequestId(requestId);
+        apiAccessLogInfoSaveVo.setTraceId(traceId);
+        if(null!= loginUser ){
+            apiAccessLogInfoSaveVo.setUserId(loginUser.getId());
+            if(null!=loginUser.getInfo().get(LoginUser.INFO_KEY_DATA_ID)) {
+                apiAccessLogInfoSaveVo.setEnterpriseId(Long.valueOf(loginUser.getInfo().get(LoginUser.INFO_KEY_DATA_ID)));
+            }
+        }
+        mdeApiAccessLogInfoService.apiAccessLogInfoSave(apiAccessLogInfoSaveVo);
 
     }
 

+ 8 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/api/MdeApiAccessLogInfoService.java

@@ -1,4 +1,12 @@
 package com.citu.module.menduner.system.service.api;
 
+import com.citu.framework.common.pojo.PageResult;
+import com.citu.module.menduner.system.controller.base.api.MdeApiAccessLogInfoSaveVo;
+import com.citu.module.menduner.system.controller.base.api.MdeApiAccessLogPageReqVO;
+import com.citu.module.menduner.system.controller.base.api.MdeApiAccessLogRespVO;
+
 public interface MdeApiAccessLogInfoService {
+    void apiAccessLogInfoSave(MdeApiAccessLogInfoSaveVo apiAccessLogInfoSaveVo);
+
+    PageResult<MdeApiAccessLogRespVO> getApiAccessLogPage(MdeApiAccessLogPageReqVO pageReqVO);
 }

+ 129 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/api/MdeApiAccessLogInfoServiceImpl.java

@@ -1,9 +1,35 @@
 package com.citu.module.menduner.system.service.api;
 
+import com.citu.framework.common.pojo.PageResult;
+import com.citu.module.infra.api.logger.ApiAccessLogApi;
+import com.citu.module.infra.api.logger.dto.ApiAccessLogPageReqDTO;
+import com.citu.module.infra.api.logger.dto.ApiAccessLogRespDTO;
+import com.citu.module.menduner.system.api.user.MendunerUserApi;
+import com.citu.module.menduner.system.api.user.UserInfoRespDTO;
+import com.citu.module.menduner.system.controller.base.api.MdeApiAccessLogInfoSaveVo;
+import com.citu.module.menduner.system.controller.base.api.MdeApiAccessLogPageReqVO;
+import com.citu.module.menduner.system.controller.base.api.MdeApiAccessLogRespVO;
+import com.citu.module.menduner.system.dal.dataobject.api.MdeApiAccessLogInfoDO;
+import com.citu.module.menduner.system.dal.dataobject.enterprise.EnterpriseUserBindDO;
 import com.citu.module.menduner.system.dal.mysql.api.MdeApiAccessLogInfoMapper;
+import com.citu.module.menduner.system.service.enterprise.bind.EnterpriseUserBindService;
+import com.citu.module.system.api.dict.DictDataApi;
+import com.citu.module.system.api.dict.dto.DictDataRespDTO;
+import com.citu.module.system.api.user.AdminUserApi;
+import com.citu.module.system.api.user.dto.AdminUserRespDTO;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.scheduling.annotation.Async;
 import org.springframework.stereotype.Service;
 
+import javax.annotation.Resource;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+
 @Service
 public class MdeApiAccessLogInfoServiceImpl  implements MdeApiAccessLogInfoService{
 
@@ -11,4 +37,107 @@ public class MdeApiAccessLogInfoServiceImpl  implements MdeApiAccessLogInfoServi
     MdeApiAccessLogInfoMapper mdeApiAccessLogInfoMapper;
 
 
+    @Autowired
+    ApiAccessLogApi apiAccessLogApi;
+
+
+    @Resource
+    MendunerUserApi mendunerUserApi;
+
+    @Resource
+    AdminUserApi adminUserApi;
+
+    @Resource
+    DictDataApi dictDataApi;
+
+
+    @Resource
+    EnterpriseUserBindService enterpriseUserBindService;
+
+    @Async
+    @Override
+    public void apiAccessLogInfoSave(MdeApiAccessLogInfoSaveVo apiAccessLogInfoSaveVo) {
+        MdeApiAccessLogInfoDO mdeApiAccessLogInfo = new MdeApiAccessLogInfoDO();
+        BeanUtils.copyProperties(apiAccessLogInfoSaveVo,mdeApiAccessLogInfo);
+        mdeApiAccessLogInfoMapper.insert(mdeApiAccessLogInfo);
+    }
+
+
+
+
+    @Override
+    public PageResult<MdeApiAccessLogRespVO> getApiAccessLogPage(MdeApiAccessLogPageReqVO pageReqVO) {
+        ApiAccessLogPageReqDTO reqDTO =new ApiAccessLogPageReqDTO();
+        BeanUtils.copyProperties(pageReqVO, reqDTO);
+        PageResult<ApiAccessLogRespDTO> apiAccessLogPage = apiAccessLogApi.getApiAccessLogPage(reqDTO);
+        List<String> requestIds = apiAccessLogPage.getList().stream().filter(item -> StringUtils.isBlank(item.getRequestId())).map(ApiAccessLogRespDTO::getRequestId).collect(Collectors.toList());
+        List<MdeApiAccessLogInfoDO> mdeApiAccessLogInfoDOS =  mdeApiAccessLogInfoMapper.selectRequestIds(requestIds);
+        Map<String, MdeApiAccessLogInfoDO> collect = mdeApiAccessLogInfoDOS.stream().collect(Collectors.toMap(item -> item.getRequestId(), item -> item));
+        List<MdeApiAccessLogRespVO> res =new ArrayList<>(apiAccessLogPage.getList().size()+1);
+        List<DictDataRespDTO> datas = dictDataApi.getDictDataList("user_type").getData();
+        Map<String, Map<Long,String>> userTypeMap =new HashMap<>();
+        for (DictDataRespDTO data : datas) {
+            userTypeMap.put(data.getValue(), new HashMap<>());
+        }
+        for (ApiAccessLogRespDTO apiAccessLogRespDTO : apiAccessLogPage.getList()) {
+            userTypeMap.putIfAbsent(apiAccessLogRespDTO.getUserType().toString(),new HashMap<>());
+            MdeApiAccessLogRespVO mdeApiAccessLogRespVO = new MdeApiAccessLogRespVO();
+            BeanUtils.copyProperties(apiAccessLogRespDTO,mdeApiAccessLogRespVO);
+            if(collect.containsKey(apiAccessLogRespDTO.getRequestId())){
+                MdeApiAccessLogInfoDO mdeApiAccessLogInfoDO = collect.get(apiAccessLogRespDTO.getRequestId());
+                BeanUtils.copyProperties(mdeApiAccessLogInfoDO,mdeApiAccessLogRespVO);
+            }
+            if(null == mdeApiAccessLogRespVO.getEnterpriseId()){
+                userTypeMap.get(apiAccessLogRespDTO.getUserType().toString()).put(null==apiAccessLogRespDTO.getUserId()?-1L:apiAccessLogRespDTO.getUserId(),"");
+            }else{
+                // 企业用户
+                userTypeMap.get("1-"+mdeApiAccessLogRespVO.getEnterpriseId()).put(null==apiAccessLogRespDTO.getUserId()?-1L:apiAccessLogRespDTO.getUserId(),"");
+            }
+            res.add(mdeApiAccessLogRespVO);
+        }
+
+
+
+        userTypeMap.forEach((key, value) -> {
+            value.remove(-1L);
+            value.remove(0L);
+            if(value.keySet().isEmpty()){
+                return;
+            }
+            // 企业用户
+            if(key.startsWith("1-") ){
+                Long enterpriseId =   Long.valueOf(key.split("-")[1]);
+                value.keySet().forEach(userId -> {
+                    EnterpriseUserBindDO enterpriseUserBind = enterpriseUserBindService.selectByEnterpriseIdAndUserId(enterpriseId,userId);
+                    value.put(userId,enterpriseUserBind.getName());
+                });
+            }
+            // 会员用户
+            if(key.equals("1") ){
+                // 需要考虑 企业用户情况
+                List<UserInfoRespDTO> data = mendunerUserApi.getUserList(value.keySet()).getData();
+                for (UserInfoRespDTO datum : data) {
+                    value.put(datum.getUserId(),datum.getName());
+                }
+            }
+            // 管理员用户
+            if(key.equals("2")){
+                List<AdminUserRespDTO> data = adminUserApi.getUserList(value.keySet()).getData();
+                for (AdminUserRespDTO datum : data) {
+                    value.put(datum.getId(),datum.getNickname());
+                }
+            }
+        });
+        res.forEach(item->{
+            if(null!=item.getEnterpriseId()){
+                item.setUserNickName(userTypeMap.get("1-"+item.getEnterpriseId()).get(item.getUserId()));
+            }else {
+                item.setUserNickName(userTypeMap.get(item.getUserType().toString()).get(item.getUserId()));
+            }
+        });
+        PageResult<MdeApiAccessLogRespVO> resApiAccessLogPage = new PageResult<>();
+        resApiAccessLogPage.setList(res);
+        resApiAccessLogPage.setTotal(apiAccessLogPage.getTotal());
+        return resApiAccessLogPage;
+    }
 }