refactor(系统设置): 补充项目操作日志
This commit is contained in:
parent
4ebc36d5a9
commit
d2842126a3
|
@ -405,4 +405,11 @@ http_result_validate=参数校验失败
|
||||||
http_result_unauthorized=用户认证失败
|
http_result_unauthorized=用户认证失败
|
||||||
http_result_forbidden=权限认证失败
|
http_result_forbidden=权限认证失败
|
||||||
|
|
||||||
enum_value_valid_message=枚举值不合法,必须为
|
enum_value_valid_message=枚举值不合法,必须为
|
||||||
|
|
||||||
|
project_admin=添加项目管理员
|
||||||
|
project_member=添加项目成员
|
||||||
|
project=项目
|
||||||
|
add=添加
|
||||||
|
delete=删除
|
||||||
|
update=更新
|
|
@ -3,6 +3,7 @@ package io.metersphere.system.controller;
|
||||||
|
|
||||||
import com.github.pagehelper.Page;
|
import com.github.pagehelper.Page;
|
||||||
import com.github.pagehelper.PageHelper;
|
import com.github.pagehelper.PageHelper;
|
||||||
|
import io.metersphere.constants.HttpMethodConstants;
|
||||||
import io.metersphere.project.domain.Project;
|
import io.metersphere.project.domain.Project;
|
||||||
import io.metersphere.sdk.constants.PermissionConstants;
|
import io.metersphere.sdk.constants.PermissionConstants;
|
||||||
import io.metersphere.sdk.dto.AddProjectRequest;
|
import io.metersphere.sdk.dto.AddProjectRequest;
|
||||||
|
@ -13,6 +14,7 @@ import io.metersphere.sdk.log.constants.OperationLogType;
|
||||||
import io.metersphere.sdk.util.PageUtils;
|
import io.metersphere.sdk.util.PageUtils;
|
||||||
import io.metersphere.sdk.util.Pager;
|
import io.metersphere.sdk.util.Pager;
|
||||||
import io.metersphere.sdk.util.SessionUtils;
|
import io.metersphere.sdk.util.SessionUtils;
|
||||||
|
import io.metersphere.sdk.util.Translator;
|
||||||
import io.metersphere.system.dto.UserExtend;
|
import io.metersphere.system.dto.UserExtend;
|
||||||
import io.metersphere.system.request.ProjectAddMemberRequest;
|
import io.metersphere.system.request.ProjectAddMemberRequest;
|
||||||
import io.metersphere.system.request.ProjectMemberRequest;
|
import io.metersphere.system.request.ProjectMemberRequest;
|
||||||
|
@ -105,7 +107,8 @@ public class SystemProjectController {
|
||||||
@RequiresPermissions(PermissionConstants.SYSTEM_ORGANIZATION_PROJECT_READ_UPDATE)
|
@RequiresPermissions(PermissionConstants.SYSTEM_ORGANIZATION_PROJECT_READ_UPDATE)
|
||||||
@Operation(summary = "添加项目成员")
|
@Operation(summary = "添加项目成员")
|
||||||
public void addProjectMember(@Validated @RequestBody ProjectAddMemberRequest request) {
|
public void addProjectMember(@Validated @RequestBody ProjectAddMemberRequest request) {
|
||||||
systemProjectService.addProjectMember(request, SessionUtils.getUserId(), false);
|
systemProjectService.addProjectMember(request, SessionUtils.getUserId(), false, "/system/project/add-member",
|
||||||
|
OperationLogType.ADD.name(), HttpMethodConstants.POST.name(), Translator.get("add"));
|
||||||
}
|
}
|
||||||
|
|
||||||
@GetMapping("/remove-member/{projectId}/{userId}")
|
@GetMapping("/remove-member/{projectId}/{userId}")
|
||||||
|
|
|
@ -1,20 +1,26 @@
|
||||||
package io.metersphere.system.service;
|
package io.metersphere.system.service;
|
||||||
|
|
||||||
|
import io.metersphere.constants.HttpMethodConstants;
|
||||||
import io.metersphere.project.domain.Project;
|
import io.metersphere.project.domain.Project;
|
||||||
import io.metersphere.project.domain.ProjectExample;
|
import io.metersphere.project.domain.ProjectExample;
|
||||||
import io.metersphere.project.mapper.ProjectMapper;
|
import io.metersphere.project.mapper.ProjectMapper;
|
||||||
import io.metersphere.sdk.constants.InternalUserRole;
|
import io.metersphere.sdk.constants.InternalUserRole;
|
||||||
import io.metersphere.sdk.dto.AddProjectRequest;
|
import io.metersphere.sdk.dto.AddProjectRequest;
|
||||||
|
import io.metersphere.sdk.dto.LogDTO;
|
||||||
import io.metersphere.sdk.dto.ProjectDTO;
|
import io.metersphere.sdk.dto.ProjectDTO;
|
||||||
import io.metersphere.sdk.dto.UpdateProjectRequest;
|
import io.metersphere.sdk.dto.UpdateProjectRequest;
|
||||||
import io.metersphere.sdk.exception.MSException;
|
import io.metersphere.sdk.exception.MSException;
|
||||||
|
import io.metersphere.sdk.invoker.ProjectServiceInvoker;
|
||||||
|
import io.metersphere.sdk.log.constants.OperationLogModule;
|
||||||
|
import io.metersphere.sdk.log.constants.OperationLogType;
|
||||||
|
import io.metersphere.sdk.log.service.OperationLogService;
|
||||||
|
import io.metersphere.sdk.util.JSON;
|
||||||
import io.metersphere.sdk.util.Translator;
|
import io.metersphere.sdk.util.Translator;
|
||||||
import io.metersphere.system.domain.User;
|
import io.metersphere.system.domain.User;
|
||||||
import io.metersphere.system.domain.UserRoleRelation;
|
import io.metersphere.system.domain.UserRoleRelation;
|
||||||
import io.metersphere.system.domain.UserRoleRelationExample;
|
import io.metersphere.system.domain.UserRoleRelationExample;
|
||||||
import io.metersphere.system.dto.OrganizationProjectOptionsDto;
|
import io.metersphere.system.dto.OrganizationProjectOptionsDto;
|
||||||
import io.metersphere.system.dto.UserExtend;
|
import io.metersphere.system.dto.UserExtend;
|
||||||
import io.metersphere.sdk.invoker.ProjectServiceInvoker;
|
|
||||||
import io.metersphere.system.mapper.ExtSystemProjectMapper;
|
import io.metersphere.system.mapper.ExtSystemProjectMapper;
|
||||||
import io.metersphere.system.mapper.UserMapper;
|
import io.metersphere.system.mapper.UserMapper;
|
||||||
import io.metersphere.system.mapper.UserRoleRelationMapper;
|
import io.metersphere.system.mapper.UserRoleRelationMapper;
|
||||||
|
@ -30,6 +36,7 @@ import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
import org.springframework.transaction.annotation.Transactional;
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
@ -46,9 +53,16 @@ public class SystemProjectService {
|
||||||
private UserRoleRelationMapper userRoleRelationMapper;
|
private UserRoleRelationMapper userRoleRelationMapper;
|
||||||
@Resource
|
@Resource
|
||||||
private ExtSystemProjectMapper extSystemProjectMapper;
|
private ExtSystemProjectMapper extSystemProjectMapper;
|
||||||
|
@Resource
|
||||||
|
private OperationLogService operationLogService;
|
||||||
|
|
||||||
private final ProjectServiceInvoker serviceInvoker;
|
private final ProjectServiceInvoker serviceInvoker;
|
||||||
|
|
||||||
|
private final static String prefix = "/system/project";
|
||||||
|
private final static String addProject = prefix + "/add";
|
||||||
|
private final static String updateProject = prefix + "/update";
|
||||||
|
private final static String removeProjectMember = prefix + "/remove-member/";
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
public SystemProjectService(ProjectServiceInvoker serviceInvoker) {
|
public SystemProjectService(ProjectServiceInvoker serviceInvoker) {
|
||||||
this.serviceInvoker = serviceInvoker;
|
this.serviceInvoker = serviceInvoker;
|
||||||
|
@ -82,7 +96,7 @@ public class SystemProjectService {
|
||||||
ProjectAddMemberRequest memberRequest = new ProjectAddMemberRequest();
|
ProjectAddMemberRequest memberRequest = new ProjectAddMemberRequest();
|
||||||
memberRequest.setProjectId(project.getId());
|
memberRequest.setProjectId(project.getId());
|
||||||
memberRequest.setUserIds(addProjectDTO.getUserIds());
|
memberRequest.setUserIds(addProjectDTO.getUserIds());
|
||||||
this.addProjectMember(memberRequest, createUser, true);
|
this.addProjectMember(memberRequest, createUser, true, addProject, OperationLogType.ADD.name(), HttpMethodConstants.POST.name(), Translator.get("add"));
|
||||||
return project;
|
return project;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -143,7 +157,8 @@ public class SystemProjectService {
|
||||||
ProjectAddMemberRequest memberRequest = new ProjectAddMemberRequest();
|
ProjectAddMemberRequest memberRequest = new ProjectAddMemberRequest();
|
||||||
memberRequest.setProjectId(project.getId());
|
memberRequest.setProjectId(project.getId());
|
||||||
memberRequest.setUserIds(insertIds);
|
memberRequest.setUserIds(insertIds);
|
||||||
this.addProjectMember(memberRequest, updateUser, true);
|
this.addProjectMember(memberRequest, updateUser, true, updateProject, OperationLogType.UPDATE.name(),
|
||||||
|
HttpMethodConstants.POST.name(), Translator.get("update"));
|
||||||
}
|
}
|
||||||
|
|
||||||
projectMapper.updateByPrimaryKeySelective(project);
|
projectMapper.updateByPrimaryKeySelective(project);
|
||||||
|
@ -165,7 +180,9 @@ public class SystemProjectService {
|
||||||
return projectMemberList;
|
return projectMemberList;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void addProjectMember(ProjectAddMemberRequest request, String createUser, boolean isAdmin) {
|
public void addProjectMember(ProjectAddMemberRequest request, String createUser, boolean isAdmin, String path, String type,
|
||||||
|
String method, String content) {
|
||||||
|
List<LogDTO> logDTOList = new ArrayList<>();
|
||||||
//TODO 添加项目成员需要检查配额 这个需要等后续定下来补全逻辑
|
//TODO 添加项目成员需要检查配额 这个需要等后续定下来补全逻辑
|
||||||
request.getUserIds().forEach(userId -> {
|
request.getUserIds().forEach(userId -> {
|
||||||
User user = userMapper.selectByPrimaryKey(userId);
|
User user = userMapper.selectByPrimaryKey(userId);
|
||||||
|
@ -181,6 +198,7 @@ public class SystemProjectService {
|
||||||
System.currentTimeMillis(),
|
System.currentTimeMillis(),
|
||||||
createUser);
|
createUser);
|
||||||
userRoleRelationMapper.insertSelective(adminRole);
|
userRoleRelationMapper.insertSelective(adminRole);
|
||||||
|
setLog(request.getProjectId(), path, content + Translator.get("project_admin") +": "+ user.getName(), createUser, "", type, method, logDTOList);
|
||||||
}
|
}
|
||||||
UserRoleRelationExample userRoleRelationExample = new UserRoleRelationExample();
|
UserRoleRelationExample userRoleRelationExample = new UserRoleRelationExample();
|
||||||
userRoleRelationExample.createCriteria().andUserIdEqualTo(userId)
|
userRoleRelationExample.createCriteria().andUserIdEqualTo(userId)
|
||||||
|
@ -194,8 +212,10 @@ public class SystemProjectService {
|
||||||
System.currentTimeMillis(),
|
System.currentTimeMillis(),
|
||||||
createUser);
|
createUser);
|
||||||
userRoleRelationMapper.insertSelective(memberRole);
|
userRoleRelationMapper.insertSelective(memberRole);
|
||||||
|
setLog(request.getProjectId(), path, content + Translator.get("project_member")+": "+ user.getName(), createUser, "", type, method, logDTOList);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
operationLogService.batchAdd(logDTOList);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -208,7 +228,11 @@ public class SystemProjectService {
|
||||||
user.setLastProjectId(StringUtils.EMPTY);
|
user.setLastProjectId(StringUtils.EMPTY);
|
||||||
userMapper.updateByPrimaryKeySelective(user);
|
userMapper.updateByPrimaryKeySelective(user);
|
||||||
}
|
}
|
||||||
//写入操作日志
|
List<LogDTO> logDTOList = new ArrayList<>();
|
||||||
|
setLog(projectId, removeProjectMember + "/" + projectId + "/" +userId,
|
||||||
|
Translator.get("delete") + Translator.get("project_member") +": "+ user.getName(),
|
||||||
|
userId, "", OperationLogType.DELETE.name() , HttpMethodConstants.GET.name(), logDTOList);
|
||||||
|
operationLogService.batchAdd(logDTOList);
|
||||||
return userRoleRelationMapper.deleteByExample(userRoleRelationExample);
|
return userRoleRelationMapper.deleteByExample(userRoleRelationExample);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -223,6 +247,7 @@ public class SystemProjectService {
|
||||||
|
|
||||||
public void deleteProject(List<Project> projects) {
|
public void deleteProject(List<Project> projects) {
|
||||||
// 删除项目
|
// 删除项目
|
||||||
|
List<LogDTO> logDTOList = new ArrayList<>();
|
||||||
projects.forEach(project -> {
|
projects.forEach(project -> {
|
||||||
serviceInvoker.invokeServices(project.getId());
|
serviceInvoker.invokeServices(project.getId());
|
||||||
LoggerUtil.info("send delete_project message, project id: " + project.getId());
|
LoggerUtil.info("send delete_project message, project id: " + project.getId());
|
||||||
|
@ -230,7 +255,10 @@ public class SystemProjectService {
|
||||||
deleteProjectUserGroup(project.getId());
|
deleteProjectUserGroup(project.getId());
|
||||||
// delete project
|
// delete project
|
||||||
projectMapper.deleteByPrimaryKey(project.getId());
|
projectMapper.deleteByPrimaryKey(project.getId());
|
||||||
|
setLog(project.getId(), "null", Translator.get("delete") + Translator.get("project") + ": " + project.getName(),
|
||||||
|
"system", "", OperationLogType.DELETE.name(), "", logDTOList);
|
||||||
});
|
});
|
||||||
|
operationLogService.batchAdd(logDTOList);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void deleteProjectUserGroup(String projectId) {
|
private void deleteProjectUserGroup(String projectId) {
|
||||||
|
@ -242,4 +270,20 @@ public class SystemProjectService {
|
||||||
public List<OrganizationProjectOptionsDto> getProjectOptions() {
|
public List<OrganizationProjectOptionsDto> getProjectOptions() {
|
||||||
return extSystemProjectMapper.selectProjectOptions();
|
return extSystemProjectMapper.selectProjectOptions();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static void setLog( String projectId, String path, String content, String userId, Object originalValue,
|
||||||
|
String type, String method, List<LogDTO> logDTOList) {
|
||||||
|
LogDTO dto = new LogDTO(
|
||||||
|
"system",
|
||||||
|
"system",
|
||||||
|
projectId,
|
||||||
|
userId,
|
||||||
|
type,
|
||||||
|
OperationLogModule.SYSTEM_PROJECT,
|
||||||
|
content);
|
||||||
|
dto.setPath(path);
|
||||||
|
dto.setMethod(method);
|
||||||
|
dto.setOriginalValue(JSON.toJSONBytes(originalValue));
|
||||||
|
logDTOList.add(dto);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue