mirror of
https://github.com/vran-dev/databasir.git
synced 2025-08-08 17:32:14 +08:00
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:
@@ -33,6 +33,7 @@ public @interface Operation {
|
||||
String PROJECT = "project";
|
||||
String USER = "user";
|
||||
String GROUP = "group";
|
||||
String LOGIN_APP = "login_app";
|
||||
String SETTING = "setting";
|
||||
}
|
||||
|
||||
|
@@ -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);
|
||||
}
|
||||
}
|
||||
|
@@ -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;
|
||||
}
|
||||
}
|
||||
|
@@ -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));
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user