fix(系统设置): 修复用户管理页面所属项目的展示问题
This commit is contained in:
parent
be995c15c6
commit
7cb734b733
|
@ -0,0 +1,28 @@
|
||||||
|
package io.metersphere.sdk.dto.builder;
|
||||||
|
|
||||||
|
import io.metersphere.sdk.dto.LogDTO;
|
||||||
|
import lombok.Builder;
|
||||||
|
|
||||||
|
@Builder
|
||||||
|
public class LogDTOBuilder {
|
||||||
|
private String projectId;
|
||||||
|
private String organizationId;
|
||||||
|
private String sourceId;
|
||||||
|
private String createUser;
|
||||||
|
private String type;
|
||||||
|
private String method;
|
||||||
|
private String module;
|
||||||
|
private String content;
|
||||||
|
private String path;
|
||||||
|
private byte[] originalValue;
|
||||||
|
private byte[] modifiedValue;
|
||||||
|
|
||||||
|
public LogDTO getLogDTO() {
|
||||||
|
LogDTO logDTO = new LogDTO(projectId, organizationId, sourceId, createUser, type, module, content);
|
||||||
|
logDTO.setPath(path);
|
||||||
|
logDTO.setMethod(method);
|
||||||
|
logDTO.setOriginalValue(originalValue);
|
||||||
|
logDTO.setModifiedValue(modifiedValue);
|
||||||
|
return logDTO;
|
||||||
|
}
|
||||||
|
}
|
|
@ -9,7 +9,7 @@ import org.apache.ibatis.annotations.Param;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
public interface BaseUserMapper {
|
public interface BaseUserMapper {
|
||||||
UserDTO selectByEmail(String email);
|
UserDTO selectDTOByKeyword(String keyword);
|
||||||
|
|
||||||
UserDTO selectById(String id);
|
UserDTO selectById(String id);
|
||||||
|
|
||||||
|
|
|
@ -16,11 +16,12 @@
|
||||||
WHERE user.id = #{id}
|
WHERE user.id = #{id}
|
||||||
</select>
|
</select>
|
||||||
|
|
||||||
<select id="selectByEmail" resultType="io.metersphere.sdk.dto.UserDTO">
|
<select id="selectDTOByKeyword" resultType="io.metersphere.sdk.dto.UserDTO">
|
||||||
SELECT *
|
SELECT *
|
||||||
FROM user
|
FROM user
|
||||||
LEFT JOIN user_extend ON user.id = user_extend.id
|
LEFT JOIN user_extend ON user.id = user_extend.id
|
||||||
WHERE user.email = #{email} AND deleted IS FALSE
|
WHERE (user.email = #{keyword} OR user.id = #{keyword})
|
||||||
|
AND deleted IS FALSE
|
||||||
</select>
|
</select>
|
||||||
|
|
||||||
<select id="findAll" resultType="io.metersphere.system.domain.User">
|
<select id="findAll" resultType="io.metersphere.system.domain.User">
|
||||||
|
|
|
@ -52,12 +52,14 @@ public class UserController {
|
||||||
private OrganizationService organizationService;
|
private OrganizationService organizationService;
|
||||||
@Resource
|
@Resource
|
||||||
private SystemProjectService systemProjectService;
|
private SystemProjectService systemProjectService;
|
||||||
|
@Resource
|
||||||
|
private UserLogService userLogService;
|
||||||
|
|
||||||
@GetMapping("/get/{email}")
|
@GetMapping("/get/{keyword}")
|
||||||
@Operation(summary = "通过email查找用户")
|
@Operation(summary = "通过email或id查找用户")
|
||||||
@RequiresPermissions(PermissionConstants.SYSTEM_USER_READ)
|
@RequiresPermissions(PermissionConstants.SYSTEM_USER_READ)
|
||||||
public UserDTO getUser(@PathVariable String email) {
|
public UserDTO getUser(@PathVariable String keyword) {
|
||||||
return userService.getUserDTOByEmail(email);
|
return userService.getUserDTOByKeyword(keyword);
|
||||||
}
|
}
|
||||||
|
|
||||||
@PostMapping("/add")
|
@PostMapping("/add")
|
||||||
|
@ -70,7 +72,7 @@ public class UserController {
|
||||||
@PostMapping("/update")
|
@PostMapping("/update")
|
||||||
@Operation(summary = "修改用户")
|
@Operation(summary = "修改用户")
|
||||||
@RequiresPermissions(PermissionConstants.SYSTEM_USER_READ_UPDATE)
|
@RequiresPermissions(PermissionConstants.SYSTEM_USER_READ_UPDATE)
|
||||||
@Log(type = OperationLogType.UPDATE, expression = "#msClass.updateLog(#request)", msClass = UserService.class)
|
@Log(type = OperationLogType.UPDATE, expression = "#msClass.updateLog(#request)", msClass = UserLogService.class)
|
||||||
public UserEditRequest updateUser(@Validated({Updated.class}) @RequestBody UserEditRequest request) {
|
public UserEditRequest updateUser(@Validated({Updated.class}) @RequestBody UserEditRequest request) {
|
||||||
return userService.updateUser(request, SessionUtils.getUserId());
|
return userService.updateUser(request, SessionUtils.getUserId());
|
||||||
}
|
}
|
||||||
|
@ -87,7 +89,7 @@ public class UserController {
|
||||||
@PostMapping("/update/enable")
|
@PostMapping("/update/enable")
|
||||||
@Operation(summary = "启用/禁用用户")
|
@Operation(summary = "启用/禁用用户")
|
||||||
@RequiresPermissions(PermissionConstants.SYSTEM_USER_READ_UPDATE)
|
@RequiresPermissions(PermissionConstants.SYSTEM_USER_READ_UPDATE)
|
||||||
@Log(type = OperationLogType.UPDATE, expression = "#msClass.batchUpdateLog(#request)", msClass = UserService.class)
|
@Log(type = OperationLogType.UPDATE, expression = "#msClass.batchUpdateLog(#request)", msClass = UserLogService.class)
|
||||||
public TableBatchProcessResponse updateUserEnable(@Validated @RequestBody UserChangeEnableRequest request) {
|
public TableBatchProcessResponse updateUserEnable(@Validated @RequestBody UserChangeEnableRequest request) {
|
||||||
return userService.updateUserEnable(request, SessionUtils.getSessionId());
|
return userService.updateUserEnable(request, SessionUtils.getSessionId());
|
||||||
}
|
}
|
||||||
|
@ -101,7 +103,7 @@ public class UserController {
|
||||||
|
|
||||||
@PostMapping("/delete")
|
@PostMapping("/delete")
|
||||||
@Operation(summary = "删除用户")
|
@Operation(summary = "删除用户")
|
||||||
@Log(type = OperationLogType.DELETE, expression = "#msClass.deleteLog(#request)", msClass = UserService.class)
|
@Log(type = OperationLogType.DELETE, expression = "#msClass.deleteLog(#request)", msClass = UserLogService.class)
|
||||||
@RequiresPermissions(PermissionConstants.SYSTEM_USER_READ_DELETE)
|
@RequiresPermissions(PermissionConstants.SYSTEM_USER_READ_DELETE)
|
||||||
public TableBatchProcessResponse deleteUser(@Validated @RequestBody TableBatchProcessDTO request) {
|
public TableBatchProcessResponse deleteUser(@Validated @RequestBody TableBatchProcessDTO request) {
|
||||||
return userService.deleteUser(request, SessionUtils.getUserId());
|
return userService.deleteUser(request, SessionUtils.getUserId());
|
||||||
|
@ -110,7 +112,7 @@ public class UserController {
|
||||||
@PostMapping("/reset/password")
|
@PostMapping("/reset/password")
|
||||||
@Operation(summary = "重置用户密码")
|
@Operation(summary = "重置用户密码")
|
||||||
@RequiresPermissions(PermissionConstants.SYSTEM_USER_READ_UPDATE)
|
@RequiresPermissions(PermissionConstants.SYSTEM_USER_READ_UPDATE)
|
||||||
@Log(type = OperationLogType.UPDATE, expression = "#msClass.resetPasswordLog(#request)", msClass = UserService.class)
|
@Log(type = OperationLogType.UPDATE, expression = "#msClass.resetPasswordLog(#request)", msClass = UserLogService.class)
|
||||||
public TableBatchProcessResponse resetPassword(@Validated @RequestBody TableBatchProcessDTO request) {
|
public TableBatchProcessResponse resetPassword(@Validated @RequestBody TableBatchProcessDTO request) {
|
||||||
return userService.resetPassword(request, SessionUtils.getUserId());
|
return userService.resetPassword(request, SessionUtils.getUserId());
|
||||||
}
|
}
|
||||||
|
@ -141,7 +143,7 @@ public class UserController {
|
||||||
@Operation(summary = "批量添加用户到多个用户组中")
|
@Operation(summary = "批量添加用户到多个用户组中")
|
||||||
@RequiresPermissions(PermissionConstants.SYSTEM_USER_READ_UPDATE)
|
@RequiresPermissions(PermissionConstants.SYSTEM_USER_READ_UPDATE)
|
||||||
@Log(type = OperationLogType.ADD, expression = "#msClass.batchAddLog(#request)", msClass = GlobalUserRoleRelationLogService.class)
|
@Log(type = OperationLogType.ADD, expression = "#msClass.batchAddLog(#request)", msClass = GlobalUserRoleRelationLogService.class)
|
||||||
public TableBatchProcessResponse batchAdd(@Validated({Created.class}) @RequestBody UserRoleBatchRelationRequest request) {
|
public TableBatchProcessResponse batchAddUserGroupRole(@Validated({Created.class}) @RequestBody UserRoleBatchRelationRequest request) {
|
||||||
return globalUserRoleRelationService.batchAdd(request, SessionUtils.getUserId());
|
return globalUserRoleRelationService.batchAdd(request, SessionUtils.getUserId());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -153,6 +155,7 @@ public class UserController {
|
||||||
request.setProjectIds(userRoleBatchRelationRequest.getRoleIds());
|
request.setProjectIds(userRoleBatchRelationRequest.getRoleIds());
|
||||||
request.setUserIds(userRoleBatchRelationRequest.getSelectIds());
|
request.setUserIds(userRoleBatchRelationRequest.getSelectIds());
|
||||||
systemProjectService.addProjectMember(request, SessionUtils.getUserId());
|
systemProjectService.addProjectMember(request, SessionUtils.getUserId());
|
||||||
|
userLogService.batchAddProjectLog(userRoleBatchRelationRequest, SessionUtils.getUserId());
|
||||||
return new TableBatchProcessResponse(userRoleBatchRelationRequest.getSelectIds().size(), userRoleBatchRelationRequest.getSelectIds().size());
|
return new TableBatchProcessResponse(userRoleBatchRelationRequest.getSelectIds().size(), userRoleBatchRelationRequest.getSelectIds().size());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -166,6 +169,7 @@ public class UserController {
|
||||||
request.setOrganizationIds(userRoleBatchRelationRequest.getRoleIds());
|
request.setOrganizationIds(userRoleBatchRelationRequest.getRoleIds());
|
||||||
request.setUserIds(userRoleBatchRelationRequest.getSelectIds());
|
request.setUserIds(userRoleBatchRelationRequest.getSelectIds());
|
||||||
organizationService.addMemberBySystem(request, SessionUtils.getUserId());
|
organizationService.addMemberBySystem(request, SessionUtils.getUserId());
|
||||||
|
userLogService.batchAddOrgLog(userRoleBatchRelationRequest, SessionUtils.getUserId());
|
||||||
return new TableBatchProcessResponse(userRoleBatchRelationRequest.getSelectIds().size(), userRoleBatchRelationRequest.getSelectIds().size());
|
return new TableBatchProcessResponse(userRoleBatchRelationRequest.getSelectIds().size(), userRoleBatchRelationRequest.getSelectIds().size());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -8,7 +8,7 @@ import org.apache.ibatis.annotations.Param;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
public interface ExtUserRoleRelationMapper {
|
public interface ExtUserRoleRelationMapper {
|
||||||
List<UserRoleRelation> listByUserIdAndScope(@Param("userIds") List<String> userIdList);
|
List<UserRoleRelation> selectGlobalRoleByUserIdList(@Param("userIds") List<String> userIdList);
|
||||||
|
|
||||||
List<UserRoleRelation> selectGlobalRoleByUserId(String userId);
|
List<UserRoleRelation> selectGlobalRoleByUserId(String userId);
|
||||||
|
|
||||||
|
|
|
@ -2,13 +2,16 @@
|
||||||
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||||
<mapper namespace="io.metersphere.system.mapper.ExtUserRoleRelationMapper">
|
<mapper namespace="io.metersphere.system.mapper.ExtUserRoleRelationMapper">
|
||||||
|
|
||||||
<select id="listByUserIdAndScope" resultType="io.metersphere.system.domain.UserRoleRelation">
|
<select id="selectGlobalRoleByUserIdList" resultType="io.metersphere.system.domain.UserRoleRelation">
|
||||||
SELECT * FROM
|
SELECT * FROM
|
||||||
user_role_relation
|
user_role_relation
|
||||||
WHERE
|
WHERE
|
||||||
<foreach collection="userIds" item="userId" open="(" close=")" separator="OR">
|
<foreach collection="userIds" item="userId" open="(" close=")" separator="OR">
|
||||||
user_id = #{userId}
|
user_id = #{userId}
|
||||||
</foreach>
|
</foreach>
|
||||||
|
AND role_id IN (
|
||||||
|
SELECT id FROM user_role WHERE scope_id = 'global'
|
||||||
|
)
|
||||||
</select>
|
</select>
|
||||||
<select id="selectGlobalRoleByUserId" resultType="io.metersphere.system.domain.UserRoleRelation">
|
<select id="selectGlobalRoleByUserId" resultType="io.metersphere.system.domain.UserRoleRelation">
|
||||||
SELECT * FROM
|
SELECT * FROM
|
||||||
|
|
|
@ -34,6 +34,8 @@ public class GlobalUserRoleRelationLogService {
|
||||||
private BaseUserMapper baseUserMapper;
|
private BaseUserMapper baseUserMapper;
|
||||||
@Resource
|
@Resource
|
||||||
private UserRoleMapper userRoleMapper;
|
private UserRoleMapper userRoleMapper;
|
||||||
|
@Resource
|
||||||
|
private UserService userService;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 添加接口日志
|
* 添加接口日志
|
||||||
|
@ -62,7 +64,7 @@ public class GlobalUserRoleRelationLogService {
|
||||||
UserRoleExample example = new UserRoleExample();
|
UserRoleExample example = new UserRoleExample();
|
||||||
example.createCriteria().andIdIn(request.getRoleIds());
|
example.createCriteria().andIdIn(request.getRoleIds());
|
||||||
List<UserRole> userRoles = userRoleMapper.selectByExample(example);
|
List<UserRole> userRoles = userRoleMapper.selectByExample(example);
|
||||||
List<String> userIds = request.getSelectIds();
|
List<String> userIds = userService.getBatchUserIds(request);
|
||||||
List<OptionDTO> users = baseUserMapper.selectUserOptionByIds(userIds);
|
List<OptionDTO> users = baseUserMapper.selectUserOptionByIds(userIds);
|
||||||
|
|
||||||
List<LogDTO> returnList = new ArrayList<>();
|
List<LogDTO> returnList = new ArrayList<>();
|
||||||
|
|
|
@ -191,7 +191,6 @@ public class OrganizationService {
|
||||||
userRoleRelationMapper.batchInsert(userRoleRelations);
|
userRoleRelationMapper.batchInsert(userRoleRelations);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 删除组织成员
|
* 删除组织成员
|
||||||
*
|
*
|
||||||
|
|
|
@ -0,0 +1,191 @@
|
||||||
|
package io.metersphere.system.service;
|
||||||
|
|
||||||
|
import io.metersphere.sdk.constants.HttpMethodConstants;
|
||||||
|
import io.metersphere.sdk.constants.OperationLogConstants;
|
||||||
|
import io.metersphere.sdk.dto.LogDTO;
|
||||||
|
import io.metersphere.sdk.dto.TableBatchProcessDTO;
|
||||||
|
import io.metersphere.sdk.dto.builder.LogDTOBuilder;
|
||||||
|
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.system.domain.User;
|
||||||
|
import io.metersphere.system.domain.UserExample;
|
||||||
|
import io.metersphere.system.mapper.UserMapper;
|
||||||
|
import io.metersphere.system.request.user.UserEditRequest;
|
||||||
|
import io.metersphere.system.request.user.UserRoleBatchRelationRequest;
|
||||||
|
import jakarta.annotation.Resource;
|
||||||
|
import jakarta.validation.Valid;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.UUID;
|
||||||
|
|
||||||
|
@Service
|
||||||
|
@Transactional(rollbackFor = Exception.class)
|
||||||
|
public class UserLogService {
|
||||||
|
@Resource
|
||||||
|
private UserMapper userMapper;
|
||||||
|
@Resource
|
||||||
|
private UserService userService;
|
||||||
|
@Resource
|
||||||
|
private OperationLogService operationLogService;
|
||||||
|
|
||||||
|
//批量添加用户记录日志
|
||||||
|
public List<LogDTO> getBatchAddLogs(@Valid List<User> userList) {
|
||||||
|
List<LogDTO> logs = new ArrayList<>();
|
||||||
|
userList.forEach(user -> {
|
||||||
|
LogDTO log = new LogDTO();
|
||||||
|
log.setId(UUID.randomUUID().toString());
|
||||||
|
log.setCreateUser(user.getCreateUser());
|
||||||
|
log.setProjectId(OperationLogConstants.SYSTEM);
|
||||||
|
log.setOrganizationId(OperationLogConstants.SYSTEM);
|
||||||
|
log.setType(OperationLogType.ADD.name());
|
||||||
|
log.setModule(OperationLogModule.SYSTEM_USER);
|
||||||
|
log.setMethod("addUser");
|
||||||
|
log.setCreateTime(user.getCreateTime());
|
||||||
|
log.setSourceId(user.getId());
|
||||||
|
log.setContent(user.getName() + "(" + user.getEmail() + ")");
|
||||||
|
log.setOriginalValue(JSON.toJSONBytes(user));
|
||||||
|
logs.add(log);
|
||||||
|
});
|
||||||
|
return logs;
|
||||||
|
}
|
||||||
|
|
||||||
|
public LogDTO updateLog(UserEditRequest request) {
|
||||||
|
User user = userMapper.selectByPrimaryKey(request.getId());
|
||||||
|
if (user != null) {
|
||||||
|
LogDTO dto = new LogDTO(
|
||||||
|
OperationLogConstants.SYSTEM,
|
||||||
|
OperationLogConstants.SYSTEM,
|
||||||
|
request.getId(),
|
||||||
|
null,
|
||||||
|
OperationLogType.UPDATE.name(),
|
||||||
|
OperationLogModule.SYSTEM_USER,
|
||||||
|
JSON.toJSONString(user));
|
||||||
|
dto.setPath("/update");
|
||||||
|
dto.setMethod(HttpMethodConstants.POST.name());
|
||||||
|
dto.setOriginalValue(JSON.toJSONBytes(user));
|
||||||
|
return dto;
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
public List<LogDTO> batchUpdateLog(TableBatchProcessDTO request) {
|
||||||
|
List<LogDTO> logDTOList = new ArrayList<>();
|
||||||
|
request.setSelectIds(userService.getBatchUserIds(request));
|
||||||
|
List<User> userList = userService.selectByIdList(request.getSelectIds());
|
||||||
|
for (User user : userList) {
|
||||||
|
LogDTO dto = new LogDTO(
|
||||||
|
OperationLogConstants.SYSTEM,
|
||||||
|
OperationLogConstants.SYSTEM,
|
||||||
|
user.getId(),
|
||||||
|
null,
|
||||||
|
OperationLogType.UPDATE.name(),
|
||||||
|
OperationLogModule.SYSTEM_USER,
|
||||||
|
JSON.toJSONString(user));
|
||||||
|
dto.setMethod(HttpMethodConstants.POST.name());
|
||||||
|
dto.setOriginalValue(JSON.toJSONBytes(user));
|
||||||
|
logDTOList.add(dto);
|
||||||
|
}
|
||||||
|
return logDTOList;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param request 批量重置密码 用于记录Log使用
|
||||||
|
*/
|
||||||
|
public List<LogDTO> resetPasswordLog(TableBatchProcessDTO request) {
|
||||||
|
request.setSelectIds(userService.getBatchUserIds(request));
|
||||||
|
List<LogDTO> returnList = new ArrayList<>();
|
||||||
|
UserExample example = new UserExample();
|
||||||
|
example.createCriteria().andIdIn(request.getSelectIds());
|
||||||
|
List<User> userList = userMapper.selectByExample(example);
|
||||||
|
for (User user : userList) {
|
||||||
|
LogDTO dto = new LogDTO(
|
||||||
|
OperationLogConstants.SYSTEM,
|
||||||
|
OperationLogConstants.SYSTEM,
|
||||||
|
user.getId(),
|
||||||
|
null,
|
||||||
|
OperationLogType.UPDATE.name(),
|
||||||
|
OperationLogModule.SYSTEM_USER,
|
||||||
|
user.getName());
|
||||||
|
dto.setPath("/reset/password");
|
||||||
|
dto.setMethod(HttpMethodConstants.POST.name());
|
||||||
|
dto.setOriginalValue(JSON.toJSONBytes(user));
|
||||||
|
returnList.add(dto);
|
||||||
|
}
|
||||||
|
return returnList;
|
||||||
|
}
|
||||||
|
|
||||||
|
public List<LogDTO> deleteLog(TableBatchProcessDTO request) {
|
||||||
|
List<LogDTO> logDTOList = new ArrayList<>();
|
||||||
|
request.getSelectIds().forEach(item -> {
|
||||||
|
User user = userMapper.selectByPrimaryKey(item);
|
||||||
|
if (user != null) {
|
||||||
|
|
||||||
|
LogDTO dto = new LogDTO(
|
||||||
|
OperationLogConstants.SYSTEM,
|
||||||
|
OperationLogConstants.SYSTEM,
|
||||||
|
user.getId(),
|
||||||
|
user.getCreateUser(),
|
||||||
|
OperationLogType.DELETE.name(),
|
||||||
|
OperationLogModule.SYSTEM_PROJECT,
|
||||||
|
user.getName());
|
||||||
|
|
||||||
|
dto.setPath("/delete");
|
||||||
|
dto.setMethod(HttpMethodConstants.POST.name());
|
||||||
|
dto.setOriginalValue(JSON.toJSONBytes(user));
|
||||||
|
logDTOList.add(dto);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
return logDTOList;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void batchAddProjectLog(UserRoleBatchRelationRequest request, String operator) {
|
||||||
|
List<LogDTO> logs = new ArrayList<>();
|
||||||
|
List<String> userIds = userService.getBatchUserIds(request);
|
||||||
|
List<User> userList = userService.selectByIdList(userIds);
|
||||||
|
for (User user : userList) {
|
||||||
|
//用户管理处修改了用户的组织。
|
||||||
|
LogDTO log = LogDTOBuilder.builder()
|
||||||
|
.projectId(OperationLogConstants.SYSTEM)
|
||||||
|
.createUser(operator)
|
||||||
|
.organizationId(OperationLogConstants.SYSTEM)
|
||||||
|
.sourceId(user.getId())
|
||||||
|
.type(OperationLogType.UPDATE.name())
|
||||||
|
.module(OperationLogModule.SYSTEM_USER)
|
||||||
|
.content(user.getName())
|
||||||
|
.path("/system/user/add-project-member")
|
||||||
|
.modifiedValue(JSON.toJSONBytes(request.getRoleIds()))
|
||||||
|
.build().getLogDTO();
|
||||||
|
logs.add(log);
|
||||||
|
}
|
||||||
|
operationLogService.batchAdd(logs);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void batchAddOrgLog(UserRoleBatchRelationRequest request, String operator) {
|
||||||
|
List<LogDTO> logs = new ArrayList<>();
|
||||||
|
List<String> userIds = userService.getBatchUserIds(request);
|
||||||
|
List<User> userList = userService.selectByIdList(userIds);
|
||||||
|
for (User user : userList) {
|
||||||
|
//用户管理处修改了用户的组织。
|
||||||
|
LogDTO log = LogDTOBuilder.builder()
|
||||||
|
.projectId(OperationLogConstants.SYSTEM)
|
||||||
|
.module(OperationLogModule.SYSTEM_USER)
|
||||||
|
.createUser(operator)
|
||||||
|
.organizationId(OperationLogConstants.SYSTEM)
|
||||||
|
.sourceId(user.getId())
|
||||||
|
.type(OperationLogType.UPDATE.name())
|
||||||
|
.content(user.getName())
|
||||||
|
.path("/system/user/add-org-member")
|
||||||
|
.method(HttpMethodConstants.POST.name())
|
||||||
|
.modifiedValue(JSON.toJSONBytes(request.getRoleIds()))
|
||||||
|
.build().getLogDTO();
|
||||||
|
logs.add(log);
|
||||||
|
}
|
||||||
|
operationLogService.batchAdd(logs);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -2,6 +2,7 @@ package io.metersphere.system.service;
|
||||||
|
|
||||||
import io.metersphere.sdk.constants.OperationLogConstants;
|
import io.metersphere.sdk.constants.OperationLogConstants;
|
||||||
import io.metersphere.sdk.constants.UserRoleEnum;
|
import io.metersphere.sdk.constants.UserRoleEnum;
|
||||||
|
import io.metersphere.sdk.constants.UserRoleScope;
|
||||||
import io.metersphere.sdk.dto.LogDTO;
|
import io.metersphere.sdk.dto.LogDTO;
|
||||||
import io.metersphere.sdk.log.constants.OperationLogModule;
|
import io.metersphere.sdk.log.constants.OperationLogModule;
|
||||||
import io.metersphere.sdk.log.constants.OperationLogType;
|
import io.metersphere.sdk.log.constants.OperationLogType;
|
||||||
|
@ -94,7 +95,7 @@ public class UserRoleRelationService {
|
||||||
userRoleRelation.setId(UUID.randomUUID().toString());
|
userRoleRelation.setId(UUID.randomUUID().toString());
|
||||||
userRoleRelation.setUserId(user.getId());
|
userRoleRelation.setUserId(user.getId());
|
||||||
userRoleRelation.setRoleId(userRoleId);
|
userRoleRelation.setRoleId(userRoleId);
|
||||||
userRoleRelation.setSourceId("system");
|
userRoleRelation.setSourceId(UserRoleScope.SYSTEM);
|
||||||
userRoleRelation.setCreateTime(operationTime);
|
userRoleRelation.setCreateTime(operationTime);
|
||||||
userRoleRelation.setCreateUser(user.getCreateUser());
|
userRoleRelation.setCreateUser(user.getCreateUser());
|
||||||
userRoleRelationSaveList.add(userRoleRelation);
|
userRoleRelationSaveList.add(userRoleRelation);
|
||||||
|
@ -120,9 +121,9 @@ public class UserRoleRelationService {
|
||||||
}
|
}
|
||||||
|
|
||||||
public Map<String, UserTableResponse> selectGlobalUserRoleAndOrganization(@Valid @NotEmpty List<String> userIdList) {
|
public Map<String, UserTableResponse> selectGlobalUserRoleAndOrganization(@Valid @NotEmpty List<String> userIdList) {
|
||||||
List<UserRoleRelation> userRoleRelationList = extUserRoleRelationMapper.listByUserIdAndScope(userIdList);
|
List<UserRoleRelation> userRoleRelationList = extUserRoleRelationMapper.selectGlobalRoleByUserIdList(userIdList);
|
||||||
List<String> userRoleIdList = userRoleRelationList.stream().map(UserRoleRelation::getRoleId).collect(Collectors.toList());
|
List<String> userRoleIdList = userRoleRelationList.stream().map(UserRoleRelation::getRoleId).distinct().collect(Collectors.toList());
|
||||||
List<String> sourceIdList = userRoleRelationList.stream().map(UserRoleRelation::getSourceId).collect(Collectors.toList());
|
List<String> sourceIdList = userRoleRelationList.stream().map(UserRoleRelation::getSourceId).distinct().collect(Collectors.toList());
|
||||||
Map<String, UserRole> userRoleMap = new HashMap<>();
|
Map<String, UserRole> userRoleMap = new HashMap<>();
|
||||||
Map<String, Organization> organizationMap = new HashMap<>();
|
Map<String, Organization> organizationMap = new HashMap<>();
|
||||||
if (CollectionUtils.isNotEmpty(userRoleIdList)) {
|
if (CollectionUtils.isNotEmpty(userRoleIdList)) {
|
||||||
|
@ -146,10 +147,14 @@ public class UserRoleRelationService {
|
||||||
returnMap.put(userRoleRelation.getUserId(), userInfo);
|
returnMap.put(userRoleRelation.getUserId(), userInfo);
|
||||||
}
|
}
|
||||||
UserRole userRole = userRoleMap.get(userRoleRelation.getRoleId());
|
UserRole userRole = userRoleMap.get(userRoleRelation.getRoleId());
|
||||||
Organization organization = organizationMap.get(userRoleRelation.getSourceId());
|
if (userRole != null && StringUtils.equalsIgnoreCase(userRole.getType(), UserRoleScope.SYSTEM)) {
|
||||||
userInfo.getUserRoleList().add(userRole);
|
userInfo.getUserRoleList().add(userRole);
|
||||||
|
}
|
||||||
|
Organization organization = organizationMap.get(userRoleRelation.getSourceId());
|
||||||
|
if (organization != null) {
|
||||||
userInfo.getOrganizationList().add(organization);
|
userInfo.getOrganizationList().add(organization);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
return returnMap;
|
return returnMap;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -176,7 +181,7 @@ public class UserRoleRelationService {
|
||||||
userRoleRelation.setId(UUID.randomUUID().toString());
|
userRoleRelation.setId(UUID.randomUUID().toString());
|
||||||
userRoleRelation.setUserId(user.getId());
|
userRoleRelation.setUserId(user.getId());
|
||||||
userRoleRelation.setRoleId(roleId);
|
userRoleRelation.setRoleId(roleId);
|
||||||
userRoleRelation.setSourceId("system");
|
userRoleRelation.setSourceId(UserRoleScope.SYSTEM);
|
||||||
userRoleRelation.setCreateTime(System.currentTimeMillis());
|
userRoleRelation.setCreateTime(System.currentTimeMillis());
|
||||||
userRoleRelation.setCreateUser(operator);
|
userRoleRelation.setCreateUser(operator);
|
||||||
saveList.add(userRoleRelation);
|
saveList.add(userRoleRelation);
|
||||||
|
|
|
@ -1,15 +1,14 @@
|
||||||
package io.metersphere.system.service;
|
package io.metersphere.system.service;
|
||||||
|
|
||||||
import com.alibaba.excel.EasyExcelFactory;
|
import com.alibaba.excel.EasyExcelFactory;
|
||||||
import io.metersphere.sdk.constants.HttpMethodConstants;
|
|
||||||
import io.metersphere.sdk.constants.OperationLogConstants;
|
|
||||||
import io.metersphere.sdk.dto.*;
|
import io.metersphere.sdk.dto.*;
|
||||||
import io.metersphere.sdk.exception.MSException;
|
import io.metersphere.sdk.exception.MSException;
|
||||||
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.log.service.OperationLogService;
|
||||||
import io.metersphere.sdk.mapper.BaseUserMapper;
|
import io.metersphere.sdk.mapper.BaseUserMapper;
|
||||||
import io.metersphere.sdk.util.*;
|
import io.metersphere.sdk.util.BeanUtils;
|
||||||
|
import io.metersphere.sdk.util.CodingUtil;
|
||||||
|
import io.metersphere.sdk.util.LogUtils;
|
||||||
|
import io.metersphere.sdk.util.Translator;
|
||||||
import io.metersphere.system.domain.User;
|
import io.metersphere.system.domain.User;
|
||||||
import io.metersphere.system.domain.UserExample;
|
import io.metersphere.system.domain.UserExample;
|
||||||
import io.metersphere.system.dto.UserBatchCreateDTO;
|
import io.metersphere.system.dto.UserBatchCreateDTO;
|
||||||
|
@ -35,6 +34,7 @@ import org.apache.ibatis.session.ExecutorType;
|
||||||
import org.apache.ibatis.session.SqlSession;
|
import org.apache.ibatis.session.SqlSession;
|
||||||
import org.apache.ibatis.session.SqlSessionFactory;
|
import org.apache.ibatis.session.SqlSessionFactory;
|
||||||
import org.mybatis.spring.SqlSessionUtils;
|
import org.mybatis.spring.SqlSessionUtils;
|
||||||
|
import org.springframework.context.annotation.Lazy;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
import org.springframework.transaction.annotation.Transactional;
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
import org.springframework.web.multipart.MultipartFile;
|
import org.springframework.web.multipart.MultipartFile;
|
||||||
|
@ -65,26 +65,9 @@ public class UserService {
|
||||||
@Resource
|
@Resource
|
||||||
private SqlSessionFactory sqlSessionFactory;
|
private SqlSessionFactory sqlSessionFactory;
|
||||||
|
|
||||||
//批量添加用户记录日志
|
@Resource
|
||||||
public List<LogDTO> getBatchAddLogs(@Valid List<User> userList) {
|
@Lazy
|
||||||
List<LogDTO> logs = new ArrayList<>();
|
private UserLogService userLogService;
|
||||||
userList.forEach(user -> {
|
|
||||||
LogDTO log = new LogDTO();
|
|
||||||
log.setId(UUID.randomUUID().toString());
|
|
||||||
log.setCreateUser(user.getCreateUser());
|
|
||||||
log.setProjectId(OperationLogConstants.SYSTEM);
|
|
||||||
log.setOrganizationId(OperationLogConstants.SYSTEM);
|
|
||||||
log.setType(OperationLogType.ADD.name());
|
|
||||||
log.setModule(OperationLogModule.SYSTEM_USER);
|
|
||||||
log.setMethod("addUser");
|
|
||||||
log.setCreateTime(user.getCreateTime());
|
|
||||||
log.setSourceId(user.getId());
|
|
||||||
log.setContent(user.getName() + "(" + user.getEmail() + ")");
|
|
||||||
log.setOriginalValue(JSON.toJSONBytes(user));
|
|
||||||
logs.add(log);
|
|
||||||
});
|
|
||||||
return logs;
|
|
||||||
}
|
|
||||||
|
|
||||||
public List<User> selectByIdList(@NotEmpty List<String> userIdList) {
|
public List<User> selectByIdList(@NotEmpty List<String> userIdList) {
|
||||||
UserExample example = new UserExample();
|
UserExample example = new UserExample();
|
||||||
|
@ -142,13 +125,13 @@ public class UserService {
|
||||||
}
|
}
|
||||||
userRoleRelationService.batchSave(userCreateDTO.getUserRoleIdList(), saveUserList);
|
userRoleRelationService.batchSave(userCreateDTO.getUserRoleIdList(), saveUserList);
|
||||||
//写入操作日志
|
//写入操作日志
|
||||||
operationLogService.batchAdd(this.getBatchAddLogs(saveUserList));
|
operationLogService.batchAdd(userLogService.getBatchAddLogs(saveUserList));
|
||||||
return userCreateDTO;
|
return userCreateDTO;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public UserDTO getUserDTOByEmail(String email) {
|
public UserDTO getUserDTOByKeyword(String email) {
|
||||||
UserDTO userDTO = baseUserMapper.selectByEmail(email);
|
UserDTO userDTO = baseUserMapper.selectDTOByKeyword(email);
|
||||||
if (userDTO != null) {
|
if (userDTO != null) {
|
||||||
userDTO.setUserRoleRelations(
|
userDTO.setUserRoleRelations(
|
||||||
userRoleRelationService.selectByUserId(userDTO.getId())
|
userRoleRelationService.selectByUserId(userDTO.getId())
|
||||||
|
@ -318,95 +301,6 @@ public class UserService {
|
||||||
return insertIndex;
|
return insertIndex;
|
||||||
}
|
}
|
||||||
|
|
||||||
public LogDTO updateLog(UserEditRequest request) {
|
|
||||||
User user = userMapper.selectByPrimaryKey(request.getId());
|
|
||||||
if (user != null) {
|
|
||||||
LogDTO dto = new LogDTO(
|
|
||||||
OperationLogConstants.SYSTEM,
|
|
||||||
OperationLogConstants.SYSTEM,
|
|
||||||
request.getId(),
|
|
||||||
null,
|
|
||||||
OperationLogType.UPDATE.name(),
|
|
||||||
OperationLogModule.SYSTEM_USER,
|
|
||||||
JSON.toJSONString(user));
|
|
||||||
dto.setPath("/update");
|
|
||||||
dto.setMethod(HttpMethodConstants.POST.name());
|
|
||||||
dto.setOriginalValue(JSON.toJSONBytes(user));
|
|
||||||
return dto;
|
|
||||||
}
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
public List<LogDTO> batchUpdateLog(TableBatchProcessDTO request) {
|
|
||||||
List<LogDTO> logDTOList = new ArrayList<>();
|
|
||||||
request.setSelectIds(this.getBatchUserIds(request));
|
|
||||||
List<User> userList = this.selectByIdList(request.getSelectIds());
|
|
||||||
for (User user : userList) {
|
|
||||||
LogDTO dto = new LogDTO(
|
|
||||||
OperationLogConstants.SYSTEM,
|
|
||||||
OperationLogConstants.SYSTEM,
|
|
||||||
user.getId(),
|
|
||||||
null,
|
|
||||||
OperationLogType.UPDATE.name(),
|
|
||||||
OperationLogModule.SYSTEM_USER,
|
|
||||||
JSON.toJSONString(user));
|
|
||||||
dto.setMethod(HttpMethodConstants.POST.name());
|
|
||||||
dto.setOriginalValue(JSON.toJSONBytes(user));
|
|
||||||
logDTOList.add(dto);
|
|
||||||
}
|
|
||||||
return logDTOList;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @param request 批量重置密码 用于记录Log使用
|
|
||||||
*/
|
|
||||||
public List<LogDTO> resetPasswordLog(TableBatchProcessDTO request) {
|
|
||||||
request.setSelectIds(this.getBatchUserIds(request));
|
|
||||||
List<LogDTO> returnList = new ArrayList<>();
|
|
||||||
UserExample example = new UserExample();
|
|
||||||
example.createCriteria().andIdIn(request.getSelectIds());
|
|
||||||
List<User> userList = userMapper.selectByExample(example);
|
|
||||||
for (User user : userList) {
|
|
||||||
LogDTO dto = new LogDTO(
|
|
||||||
OperationLogConstants.SYSTEM,
|
|
||||||
OperationLogConstants.SYSTEM,
|
|
||||||
user.getId(),
|
|
||||||
null,
|
|
||||||
OperationLogType.UPDATE.name(),
|
|
||||||
OperationLogModule.SYSTEM_USER,
|
|
||||||
user.getName());
|
|
||||||
dto.setPath("/reset/password");
|
|
||||||
dto.setMethod(HttpMethodConstants.POST.name());
|
|
||||||
dto.setOriginalValue(JSON.toJSONBytes(user));
|
|
||||||
returnList.add(dto);
|
|
||||||
}
|
|
||||||
return returnList;
|
|
||||||
}
|
|
||||||
|
|
||||||
public List<LogDTO> deleteLog(TableBatchProcessDTO request) {
|
|
||||||
List<LogDTO> logDTOList = new ArrayList<>();
|
|
||||||
request.getSelectIds().forEach(item -> {
|
|
||||||
User user = userMapper.selectByPrimaryKey(item);
|
|
||||||
if (user != null) {
|
|
||||||
|
|
||||||
LogDTO dto = new LogDTO(
|
|
||||||
OperationLogConstants.SYSTEM,
|
|
||||||
OperationLogConstants.SYSTEM,
|
|
||||||
user.getId(),
|
|
||||||
user.getCreateUser(),
|
|
||||||
OperationLogType.DELETE.name(),
|
|
||||||
OperationLogModule.SYSTEM_PROJECT,
|
|
||||||
user.getName());
|
|
||||||
|
|
||||||
dto.setPath("/delete");
|
|
||||||
dto.setMethod(HttpMethodConstants.POST.name());
|
|
||||||
dto.setOriginalValue(JSON.toJSONBytes(user));
|
|
||||||
logDTOList.add(dto);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
return logDTOList;
|
|
||||||
}
|
|
||||||
|
|
||||||
public List<User> getUserList() {
|
public List<User> getUserList() {
|
||||||
UserExample example = new UserExample();
|
UserExample example = new UserExample();
|
||||||
example.setOrderByClause("update_time desc");
|
example.setOrderByClause("update_time desc");
|
||||||
|
|
|
@ -207,36 +207,69 @@ public class UserControllerTests extends BaseTest {
|
||||||
@Test
|
@Test
|
||||||
@Order(3)
|
@Order(3)
|
||||||
public void testPageSuccess() throws Exception {
|
public void testPageSuccess() throws Exception {
|
||||||
|
List<String> userRoleIdList = USER_ROLE_LIST.stream().map(UserSelectOption::getId).collect(Collectors.toList());
|
||||||
this.checkUserList();
|
this.checkUserList();
|
||||||
BasePageRequest basePageRequest = UserParamUtils.getDefaultPageRequest();
|
BasePageRequest basePageRequest = UserParamUtils.getDefaultPageRequest();
|
||||||
MvcResult mvcResult = userRequestUtils.responsePost(userRequestUtils.URL_USER_PAGE, basePageRequest);
|
|
||||||
String returnData = mvcResult.getResponse().getContentAsString(StandardCharsets.UTF_8);
|
Pager<?> returnPager = userRequestUtils.selectUserPage(basePageRequest);
|
||||||
ResultHolder resultHolder = JSON.parseObject(returnData, ResultHolder.class);
|
|
||||||
//返回请求正常
|
|
||||||
Assertions.assertNotNull(resultHolder);
|
|
||||||
Pager<?> returnPager = JSON.parseObject(JSON.toJSONString(resultHolder.getData()), Pager.class);
|
|
||||||
//返回值不为空
|
//返回值不为空
|
||||||
Assertions.assertNotNull(returnPager);
|
Assertions.assertNotNull(returnPager);
|
||||||
//返回值的页码和当前页码相同
|
//返回值的页码和当前页码相同
|
||||||
Assertions.assertEquals(returnPager.getCurrent(), basePageRequest.getCurrent());
|
Assertions.assertEquals(returnPager.getCurrent(), basePageRequest.getCurrent());
|
||||||
//返回的数据量不超过规定要返回的数据量相同
|
//返回的数据量不超过规定要返回的数据量相同
|
||||||
Assertions.assertTrue(JSON.parseArray(JSON.toJSONString(returnPager.getList())).size() <= basePageRequest.getPageSize());
|
Assertions.assertTrue(JSON.parseArray(JSON.toJSONString(returnPager.getList())).size() <= basePageRequest.getPageSize());
|
||||||
|
List<UserTableResponse> userList = JSON.parseArray(JSON.toJSONString(returnPager.getList()), UserTableResponse.class);
|
||||||
|
//用户组不存在非全局用户组
|
||||||
|
for (UserTableResponse response : userList) {
|
||||||
|
if (CollectionUtils.isNotEmpty(response.getUserRoleList())) {
|
||||||
|
response.getUserRoleList().forEach(role -> {
|
||||||
|
Assertions.assertTrue(userRoleIdList.contains(role.getId()));
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//页码为50
|
||||||
|
basePageRequest = UserParamUtils.getDefaultPageRequest();
|
||||||
|
basePageRequest.setPageSize(50);
|
||||||
|
returnPager = userRequestUtils.selectUserPage(basePageRequest);
|
||||||
|
//返回值不为空
|
||||||
|
Assertions.assertNotNull(returnPager);
|
||||||
|
//返回值的页码和当前页码相同
|
||||||
|
Assertions.assertEquals(returnPager.getCurrent(), basePageRequest.getCurrent());
|
||||||
|
//返回的数据量不超过规定要返回的数据量相同
|
||||||
|
Assertions.assertTrue(JSON.parseArray(JSON.toJSONString(returnPager.getList())).size() <= basePageRequest.getPageSize());
|
||||||
|
//用户组不存在非全局用户组
|
||||||
|
userList = JSON.parseArray(JSON.toJSONString(returnPager.getList()), UserTableResponse.class);
|
||||||
|
for (UserTableResponse response : userList) {
|
||||||
|
if (CollectionUtils.isNotEmpty(response.getUserRoleList())) {
|
||||||
|
response.getUserRoleList().forEach(role -> {
|
||||||
|
Assertions.assertTrue(userRoleIdList.contains(role.getId()));
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
//测试根据创建时间倒叙排列
|
//测试根据创建时间倒叙排列
|
||||||
basePageRequest = UserParamUtils.getDefaultPageRequest();
|
basePageRequest = UserParamUtils.getDefaultPageRequest();
|
||||||
basePageRequest.setSort(new HashMap<>() {{
|
basePageRequest.setSort(new HashMap<>() {{
|
||||||
put("createTime", "desc");
|
put("createTime", "desc");
|
||||||
}});
|
}});
|
||||||
mvcResult = userRequestUtils.responsePost(userRequestUtils.URL_USER_PAGE, basePageRequest);
|
returnPager = userRequestUtils.selectUserPage(basePageRequest);
|
||||||
returnData = mvcResult.getResponse().getContentAsString(StandardCharsets.UTF_8);
|
|
||||||
resultHolder = JSON.parseObject(returnData, ResultHolder.class);
|
|
||||||
returnPager = JSON.parseObject(JSON.toJSONString(resultHolder.getData()), Pager.class);
|
|
||||||
//第一个数据的createTime是最大的
|
//第一个数据的createTime是最大的
|
||||||
List<UserTableResponse> userInfoList = JSON.parseArray(JSON.toJSONString(returnPager.getList()), UserTableResponse.class);
|
List<UserTableResponse> userInfoList = JSON.parseArray(JSON.toJSONString(returnPager.getList()), UserTableResponse.class);
|
||||||
long firstCreateTime = userInfoList.get(0).getCreateTime();
|
long firstCreateTime = userInfoList.get(0).getCreateTime();
|
||||||
for (UserTableResponse userInfo : userInfoList) {
|
for (UserTableResponse userInfo : userInfoList) {
|
||||||
Assertions.assertFalse(userInfo.getCreateTime() > firstCreateTime);
|
Assertions.assertFalse(userInfo.getCreateTime() > firstCreateTime);
|
||||||
}
|
}
|
||||||
|
//用户组不存在非全局用户组
|
||||||
|
userList = JSON.parseArray(JSON.toJSONString(returnPager.getList()), UserTableResponse.class);
|
||||||
|
for (UserTableResponse response : userList) {
|
||||||
|
if (CollectionUtils.isNotEmpty(response.getUserRoleList())) {
|
||||||
|
response.getUserRoleList().forEach(role -> {
|
||||||
|
Assertions.assertTrue(userRoleIdList.contains(role.getId()));
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
@ -766,9 +799,10 @@ public class UserControllerTests extends BaseTest {
|
||||||
this.testGetProjectAndOrganization();
|
this.testGetProjectAndOrganization();
|
||||||
}
|
}
|
||||||
|
|
||||||
List<UserCreateInfo> last50Users = USER_LIST.subList(USER_LIST.size() - 50, USER_LIST.size());
|
List<String> userIds = this.selectUserTableIds(50);
|
||||||
|
|
||||||
UserRoleBatchRelationRequest request = new UserRoleBatchRelationRequest();
|
UserRoleBatchRelationRequest request = new UserRoleBatchRelationRequest();
|
||||||
request.setSelectIds(last50Users.stream().map(UserCreateInfo::getId).collect(Collectors.toList()));
|
request.setSelectIds(userIds);
|
||||||
request.setRoleIds(PROJECT_LIST.stream().map(UserSelectOption::getId).collect(Collectors.toList()));
|
request.setRoleIds(PROJECT_LIST.stream().map(UserSelectOption::getId).collect(Collectors.toList()));
|
||||||
//排除树结构中的组织ID
|
//排除树结构中的组织ID
|
||||||
request.getRoleIds().removeAll(ORG_LIST.stream().map(UserSelectOption::getId).collect(Collectors.toList()));
|
request.getRoleIds().removeAll(ORG_LIST.stream().map(UserSelectOption::getId).collect(Collectors.toList()));
|
||||||
|
@ -797,9 +831,10 @@ public class UserControllerTests extends BaseTest {
|
||||||
for (UserSelectOption option : USER_ROLE_LIST) {
|
for (UserSelectOption option : USER_ROLE_LIST) {
|
||||||
this.checkLog(option.getId(), OperationLogType.ADD);
|
this.checkLog(option.getId(), OperationLogType.ADD);
|
||||||
}
|
}
|
||||||
|
//检查用户表格不会加载出来非全局用户组
|
||||||
|
this.testPageSuccess();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@Order(13)
|
@Order(13)
|
||||||
public void testAddOrganization() throws Exception {
|
public void testAddOrganization() throws Exception {
|
||||||
|
@ -811,11 +846,12 @@ public class UserControllerTests extends BaseTest {
|
||||||
this.testGetProjectAndOrganization();
|
this.testGetProjectAndOrganization();
|
||||||
}
|
}
|
||||||
|
|
||||||
List<UserCreateInfo> last50Users = USER_LIST.subList(USER_LIST.size() - 50, USER_LIST.size());
|
List<String> userIds = this.selectUserTableIds(50);
|
||||||
|
|
||||||
UserRoleBatchRelationRequest request = new UserRoleBatchRelationRequest();
|
UserRoleBatchRelationRequest request = new UserRoleBatchRelationRequest();
|
||||||
request.setSelectIds(last50Users.stream().map(UserCreateInfo::getId).collect(Collectors.toList()));
|
request.setSelectIds(userIds);
|
||||||
request.setRoleIds(ORG_LIST.stream().map(UserSelectOption::getId).collect(Collectors.toList()));
|
request.setRoleIds(ORG_LIST.stream().map(UserSelectOption::getId).collect(Collectors.toList()));
|
||||||
this.requestPost(userRequestUtils.URL_ADD_ORGANIZATION_MEMBER, request);
|
this.requestPostWithOk(userRequestUtils.URL_ADD_ORGANIZATION_MEMBER, request);
|
||||||
//检查有权限的数据量是否一致
|
//检查有权限的数据量是否一致
|
||||||
UserRoleRelationExample checkExample = new UserRoleRelationExample();
|
UserRoleRelationExample checkExample = new UserRoleRelationExample();
|
||||||
for (String orgId : request.getRoleIds()) {
|
for (String orgId : request.getRoleIds()) {
|
||||||
|
@ -829,9 +865,11 @@ public class UserControllerTests extends BaseTest {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
//检查日志
|
//检查日志
|
||||||
for (UserSelectOption option : USER_ROLE_LIST) {
|
for (String userID : request.getSelectIds()) {
|
||||||
this.checkLog(option.getId(), OperationLogType.ADD);
|
this.checkLog(userID, OperationLogType.UPDATE);
|
||||||
}
|
}
|
||||||
|
//检查用户表格加载组织
|
||||||
|
this.testPageSuccess();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
@ -889,20 +927,21 @@ public class UserControllerTests extends BaseTest {
|
||||||
@Order(99)
|
@Order(99)
|
||||||
public void testUserDeleteSuccess() throws Exception {
|
public void testUserDeleteSuccess() throws Exception {
|
||||||
this.checkUserList();
|
this.checkUserList();
|
||||||
//删除指定的用户
|
//删除USER_LIST用户
|
||||||
{
|
|
||||||
UserCreateInfo deleteUser = USER_LIST.get(0);
|
|
||||||
TableBatchProcessDTO request = new TableBatchProcessDTO();
|
TableBatchProcessDTO request = new TableBatchProcessDTO();
|
||||||
request.setSelectIds(Collections.singletonList(deleteUser.getId()));
|
request.setSelectIds(USER_LIST.stream().map(UserCreateInfo::getId).collect(Collectors.toList()));
|
||||||
TableBatchProcessResponse response = userRequestUtils.parseObjectFromMvcResult(
|
TableBatchProcessResponse response = userRequestUtils.parseObjectFromMvcResult(
|
||||||
userRequestUtils.responsePost(userRequestUtils.URL_USER_DELETE, request), TableBatchProcessResponse.class);
|
userRequestUtils.responsePost(userRequestUtils.URL_USER_DELETE, request), TableBatchProcessResponse.class);
|
||||||
Assertions.assertEquals(request.getSelectIds().size(), response.getTotalCount());
|
Assertions.assertEquals(request.getSelectIds().size(), response.getTotalCount());
|
||||||
Assertions.assertEquals(request.getSelectIds().size(), response.getSuccessCount());
|
Assertions.assertEquals(request.getSelectIds().size(), response.getSuccessCount());
|
||||||
//检查数据库
|
//检查数据库
|
||||||
|
List<UserCreateInfo> removeList = new ArrayList<>();
|
||||||
|
for (UserCreateInfo deleteUser : USER_LIST) {
|
||||||
User user = userMapper.selectByPrimaryKey(deleteUser.getId());
|
User user = userMapper.selectByPrimaryKey(deleteUser.getId());
|
||||||
Assertions.assertTrue(user.getDeleted());
|
Assertions.assertTrue(user.getDeleted());
|
||||||
USER_LIST.remove(deleteUser);
|
removeList.add(deleteUser);
|
||||||
}
|
}
|
||||||
|
USER_LIST.removeAll(removeList);
|
||||||
}
|
}
|
||||||
|
|
||||||
//删除失败的方法要放在删除成功方法后面执行
|
//删除失败的方法要放在删除成功方法后面执行
|
||||||
|
@ -941,6 +980,16 @@ public class UserControllerTests extends BaseTest {
|
||||||
USER_ROLE_LIST.addAll(userRoleList);
|
USER_ROLE_LIST.addAll(userRoleList);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//查找表格用户信息的ID
|
||||||
|
private List<String> selectUserTableIds(int pageSize) throws Exception {
|
||||||
|
BasePageRequest basePageRequest = UserParamUtils.getDefaultPageRequest();
|
||||||
|
basePageRequest.setPageSize(pageSize);
|
||||||
|
Pager<?> returnPager = userRequestUtils.selectUserPage(basePageRequest);
|
||||||
|
//用户组不存在非全局用户组
|
||||||
|
List<UserTableResponse> userList = JSON.parseArray(JSON.toJSONString(returnPager.getList()), UserTableResponse.class);
|
||||||
|
return userList.stream().map(User::getId).collect(Collectors.toList());
|
||||||
|
}
|
||||||
|
|
||||||
//成功入库的用户保存内存中,其他用例会使用到
|
//成功入库的用户保存内存中,其他用例会使用到
|
||||||
private void addUser2List(MvcResult mvcResult) throws Exception {
|
private void addUser2List(MvcResult mvcResult) throws Exception {
|
||||||
UserBatchCreateDTO userMaintainRequest = userRequestUtils.parseObjectFromMvcResult(mvcResult, UserBatchCreateDTO.class);
|
UserBatchCreateDTO userMaintainRequest = userRequestUtils.parseObjectFromMvcResult(mvcResult, UserBatchCreateDTO.class);
|
||||||
|
|
|
@ -2,7 +2,9 @@ package io.metersphere.system.utils.user;
|
||||||
|
|
||||||
import io.metersphere.sdk.constants.SessionConstants;
|
import io.metersphere.sdk.constants.SessionConstants;
|
||||||
import io.metersphere.sdk.controller.handler.ResultHolder;
|
import io.metersphere.sdk.controller.handler.ResultHolder;
|
||||||
|
import io.metersphere.sdk.dto.BasePageRequest;
|
||||||
import io.metersphere.sdk.util.JSON;
|
import io.metersphere.sdk.util.JSON;
|
||||||
|
import io.metersphere.sdk.util.Pager;
|
||||||
import org.junit.jupiter.api.Assertions;
|
import org.junit.jupiter.api.Assertions;
|
||||||
import org.springframework.http.MediaType;
|
import org.springframework.http.MediaType;
|
||||||
import org.springframework.mock.web.MockMultipartFile;
|
import org.springframework.mock.web.MockMultipartFile;
|
||||||
|
@ -125,4 +127,13 @@ public class UserRequestUtils {
|
||||||
.andExpect(content().contentType(MediaType.APPLICATION_JSON))
|
.andExpect(content().contentType(MediaType.APPLICATION_JSON))
|
||||||
.andReturn();
|
.andReturn();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public Pager<?> selectUserPage(BasePageRequest basePageRequest) throws Exception {
|
||||||
|
MvcResult mvcResult = this.responsePost(this.URL_USER_PAGE, basePageRequest);
|
||||||
|
String returnData = mvcResult.getResponse().getContentAsString(StandardCharsets.UTF_8);
|
||||||
|
ResultHolder resultHolder = JSON.parseObject(returnData, ResultHolder.class);
|
||||||
|
//返回请求正常
|
||||||
|
Assertions.assertNotNull(resultHolder);
|
||||||
|
return JSON.parseObject(JSON.toJSONString(resultHolder.getData()), Pager.class);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue