feat(REQ-2972): 日志批量新增接口

This commit is contained in:
chenwenjian 2024-09-12 14:10:56 +08:00
parent 6ea6194f00
commit 81d7fb5213
8 changed files with 94 additions and 0 deletions

View File

@ -1,6 +1,7 @@
package cn.axzo.log.platform.client.feign;
import cn.axzo.log.platform.client.model.req.LogAddReq;
import cn.axzo.log.platform.client.model.req.LogBatchAddReq;
import cn.axzo.log.platform.client.model.req.LogFindReq;
import cn.axzo.log.platform.client.model.resp.LogResp;
import cn.azxo.framework.common.model.CommonResponse;
@ -51,4 +52,13 @@ public interface LogApi {
*/
@PostMapping(value = "/api/log/addLog", consumes = "application/json")
CommonResponse<String> addLog(@RequestBody @Valid LogAddReq req);
/**
* 批量添加日志
*
* @param req 日志列表 {@link LogBatchAddReq}
* @return 日志id列表
*/
@PostMapping(value = "/batchAddLogs", consumes = "application/json")
CommonResponse<List<String>> batchAddLogs(@RequestBody @Valid LogBatchAddReq req);
}

View File

@ -0,0 +1,25 @@
package cn.axzo.log.platform.client.model.req;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import javax.validation.Valid;
import javax.validation.constraints.NotEmpty;
import java.util.List;
/**
* @author chenwenjian
* @version 1.0
* @date 2024/9/12 10:56
*/
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class LogBatchAddReq {
@NotEmpty(message = "logs is required")
private List<@Valid LogAddReq> logs;
}

View File

@ -2,13 +2,16 @@ package cn.axzo.log.platform.server.controller.api;
import cn.axzo.log.platform.client.feign.LogApi;
import cn.axzo.log.platform.client.model.req.LogAddReq;
import cn.axzo.log.platform.client.model.req.LogBatchAddReq;
import cn.axzo.log.platform.client.model.req.LogFindReq;
import cn.axzo.log.platform.client.model.resp.LogResp;
import cn.axzo.log.platform.server.service.LogService;
import cn.azxo.framework.common.model.CommonResponse;
import lombok.RequiredArgsConstructor;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;
import javax.validation.Valid;
import java.util.List;
/**
@ -38,4 +41,9 @@ public class LogController implements LogApi {
public CommonResponse<String> addLog(LogAddReq req) {
return CommonResponse.success(logService.addLog(req));
}
@Override
public CommonResponse<List<String>> batchAddLogs(@RequestBody @Valid LogBatchAddReq req) {
return CommonResponse.success(logService.batchAddLogs(req));
}
}

View File

@ -1,6 +1,7 @@
package cn.axzo.log.platform.server.controller.web;
import cn.axzo.log.platform.client.model.req.LogAddReq;
import cn.axzo.log.platform.client.model.req.LogBatchAddReq;
import cn.axzo.log.platform.client.model.req.LogFindReq;
import cn.axzo.log.platform.client.model.resp.LogResp;
import cn.axzo.log.platform.server.service.LogService;
@ -64,4 +65,15 @@ public class WebLogController {
CommonResponse<String> addLog(@RequestBody @Valid LogAddReq req) {
return CommonResponse.success(logService.addLog(req));
}
/**
* 批量添加日志
*
* @param req 日志列表 {@link LogBatchAddReq}
* @return 日志id列表
*/
@PostMapping(value = "/batchAddLogs", consumes = "application/json")
CommonResponse<List<String>> batchAddLogs(@RequestBody @Valid LogBatchAddReq req) {
return CommonResponse.success(logService.batchAddLogs(req));
}
}

View File

@ -1,14 +1,18 @@
package cn.axzo.log.platform.server.resolvers;
import cn.axzo.log.platform.client.model.req.LogAddReq;
import cn.axzo.log.platform.client.model.req.LogBatchAddReq;
import cn.axzo.log.platform.client.model.req.LogFindReq;
import cn.axzo.log.platform.client.model.resp.LogResp;
import cn.axzo.log.platform.server.service.LogService;
import cn.azxo.framework.common.model.CommonResponse;
import com.coxautodev.graphql.tools.GraphQLMutationResolver;
import com.coxautodev.graphql.tools.GraphQLQueryResolver;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Component;
import org.springframework.web.bind.annotation.RequestBody;
import javax.validation.Valid;
import java.util.List;
/**
@ -54,4 +58,14 @@ public class LogResolver implements GraphQLQueryResolver, GraphQLMutationResolve
public String addLog(LogAddReq req) {
return logService.addLog(req);
}
/**
* 批量添加日志
*
* @param req 日志列表 {@link LogBatchAddReq}
* @return 日志id列表
*/
public List<String> batchAddLogs(LogBatchAddReq req) {
return logService.batchAddLogs(req);
}
}

View File

@ -1,6 +1,7 @@
package cn.axzo.log.platform.server.service;
import cn.axzo.log.platform.client.model.req.LogAddReq;
import cn.axzo.log.platform.client.model.req.LogBatchAddReq;
import cn.axzo.log.platform.client.model.req.LogFindReq;
import cn.axzo.log.platform.client.model.resp.LogResp;
@ -18,4 +19,6 @@ public interface LogService {
LogResp findLogById(String id);
List<LogResp> findLogsWithExample(LogFindReq req);
List<String> batchAddLogs(LogBatchAddReq req);
}

View File

@ -2,6 +2,7 @@ package cn.axzo.log.platform.server.service.impl;
import cn.axzo.basics.common.util.NumberUtil;
import cn.axzo.log.platform.client.model.req.LogAddReq;
import cn.axzo.log.platform.client.model.req.LogBatchAddReq;
import cn.axzo.log.platform.client.model.req.LogFindReq;
import cn.axzo.log.platform.client.model.resp.LogResp;
import cn.axzo.log.platform.server.entity.LogEntity;
@ -23,6 +24,7 @@ import java.lang.reflect.Field;
import java.util.Collections;
import java.util.List;
import java.util.Objects;
import java.util.stream.Collectors;
/**
@ -93,6 +95,20 @@ public class LogServiceImpl implements LogService {
return Collections.emptyList();
}
/**
* 批量添加日志
*
* @param req 日志列表 {@link LogBatchAddReq}
* @return 日志id列表
*/
@Override
public List<String> batchAddLogs(LogBatchAddReq req) {
List<LogEntity> logEntities = BeanUtil.copyToList(req.getLogs(), LogEntity.class);
logEntities.forEach(logEntity -> logEntity.setTimestamp(System.currentTimeMillis()));
logMapper.saveAll(logEntities);
return logEntities.stream().map(LogEntity::getId).collect(Collectors.toList());
}
/**
* 构建查询条件
*

View File

@ -5,6 +5,7 @@ type Query {
type Mutation {
addLog(logReq: LogAddReq): String!
batchAddLogs(logsReq: LogBatchAddReq): [String!]!
}
type LogResp {
@ -32,4 +33,9 @@ input LogAddReq {
level: String!
tags: [String]
message: String!
}
# 批量添加日志入参
input LogBatchAddReq {
logs: [LogAddReq]!
}