add more detail info in system log response (#33)

* feat: add more detail info in log

* feat: update frontend resources
This commit is contained in:
vran
2022-03-05 12:24:00 +08:00
committed by GitHub
parent e91f78541e
commit 842643ea4f
21 changed files with 147 additions and 30 deletions

View File

@@ -33,6 +33,7 @@ public @interface Operation {
String PROJECT = "project";
String USER = "user";
String GROUP = "group";
String LOGIN_APP = "login_app";
String SETTING = "setting";
}

View File

@@ -2,12 +2,41 @@ package com.databasir.core.domain.log.converter;
import com.databasir.core.domain.log.data.OperationLogPageResponse;
import com.databasir.core.infrastructure.converter.JsonConverter;
import com.databasir.dao.tables.pojos.GroupPojo;
import com.databasir.dao.tables.pojos.OperationLogPojo;
import com.databasir.dao.tables.pojos.ProjectPojo;
import com.databasir.dao.tables.pojos.UserPojo;
import org.mapstruct.Mapper;
import org.mapstruct.Mapping;
import java.util.Map;
@Mapper(componentModel = "spring", uses = JsonConverter.class)
public interface OperationLogPojoConverter {
OperationLogPageResponse to(OperationLogPojo pojo);
@Mapping(target = "id", source = "pojo.id")
@Mapping(target = "createAt", source = "pojo.createAt")
OperationLogPageResponse to(OperationLogPojo pojo,
GroupPojo involvedGroup,
UserPojo involvedUser,
ProjectPojo involvedProject);
default OperationLogPageResponse to(OperationLogPojo operationLogPojo,
Map<Integer, GroupPojo> groupMapById,
Map<Integer, UserPojo> userMapById,
Map<Integer, ProjectPojo> projectMapById) {
GroupPojo group = null;
if (operationLogPojo.getInvolvedGroupId() != null) {
group = groupMapById.get(operationLogPojo.getInvolvedGroupId());
}
UserPojo user = null;
if (operationLogPojo.getInvolvedUserId() != null) {
user = userMapById.get(operationLogPojo.getInvolvedUserId());
}
ProjectPojo project = null;
if (operationLogPojo.getInvolvedProjectId() != null) {
project = projectMapById.get(operationLogPojo.getInvolvedProjectId());
}
return to(operationLogPojo, group, user, project);
}
}

View File

@@ -1,8 +1,10 @@
package com.databasir.core.domain.log.data;
import com.databasir.common.JsonData;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.time.LocalDateTime;
@@ -28,12 +30,43 @@ public class OperationLogPageResponse {
private Boolean isSuccess;
private Integer involvedProjectId;
private InvolvedProjectData involvedProject;
private Integer involvedGroupId;
private InvolvedGroupData involvedGroup;
private Integer involvedUserId;
private InvolvedUserData involvedUser;
private LocalDateTime createAt;
@Data
@NoArgsConstructor
@AllArgsConstructor
public static class InvolvedProjectData {
private Integer id;
private String name;
}
@Data
@NoArgsConstructor
@AllArgsConstructor
public static class InvolvedGroupData {
private Integer id;
private String name;
}
@Data
@NoArgsConstructor
@AllArgsConstructor
public static class InvolvedUserData {
private Integer id;
private String email;
private String nickname;
}
}

View File

@@ -5,19 +5,36 @@ import com.databasir.core.domain.log.converter.OperationLogRequestConverter;
import com.databasir.core.domain.log.data.OperationLogPageCondition;
import com.databasir.core.domain.log.data.OperationLogPageResponse;
import com.databasir.core.domain.log.data.OperationLogRequest;
import com.databasir.dao.impl.GroupDao;
import com.databasir.dao.impl.OperationLogDao;
import com.databasir.dao.impl.ProjectDao;
import com.databasir.dao.impl.UserDao;
import com.databasir.dao.tables.pojos.GroupPojo;
import com.databasir.dao.tables.pojos.OperationLogPojo;
import com.databasir.dao.tables.pojos.ProjectPojo;
import com.databasir.dao.tables.pojos.UserPojo;
import lombok.RequiredArgsConstructor;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import org.springframework.stereotype.Service;
import java.util.List;
import java.util.Map;
import java.util.function.Function;
import java.util.stream.Collectors;
@Service
@RequiredArgsConstructor
public class OperationLogService {
private final OperationLogDao operationLogDao;
private final UserDao userDao;
private final GroupDao groupDao;
private final ProjectDao projectDao;
private final OperationLogRequestConverter operationLogRequestConverter;
private final OperationLogPojoConverter operationLogPojoConverter;
@@ -30,6 +47,26 @@ public class OperationLogService {
public Page<OperationLogPageResponse> list(Pageable page,
OperationLogPageCondition condition) {
Page<OperationLogPojo> pojoData = operationLogDao.selectByPage(page, condition.toCondition());
return pojoData.map(operationLogPojoConverter::to);
List<Integer> groupIds = pojoData.filter(p -> p.getInvolvedGroupId() != null)
.map(OperationLogPojo::getInvolvedGroupId)
.toList();
Map<Integer, GroupPojo> groupMapById = groupDao.selectAllInIds(groupIds)
.stream()
.collect(Collectors.toMap(GroupPojo::getId, Function.identity()));
List<Integer> userIds = pojoData.filter(p -> p.getInvolvedUserId() != null)
.map(OperationLogPojo::getInvolvedUserId)
.toList();
Map<Integer, UserPojo> userMapById = userDao.selectInIds(userIds)
.stream()
.collect(Collectors.toMap(UserPojo::getId, Function.identity()));
List<Integer> projectIds = pojoData.filter(p -> p.getInvolvedProjectId() != null)
.map(OperationLogPojo::getInvolvedProjectId)
.toList();
Map<Integer, ProjectPojo> projectMapById = projectDao.selectInIds(projectIds)
.stream()
.collect(Collectors.toMap(ProjectPojo::getId, Function.identity()));
return pojoData.map(pojo -> operationLogPojoConverter.to(pojo, groupMapById, userMapById, projectMapById));
}
}