feat(接口测试): 邮箱邀请的日志根据操作来源进行分隔

This commit is contained in:
Jianguo-Genius 2024-07-17 14:23:45 +08:00 committed by 刘瑞斌
parent 2cb323a7ba
commit a283dec6a2
7 changed files with 29 additions and 9 deletions

View File

@ -122,7 +122,7 @@ ding_app_key_is_null=钉钉的AppKey不能为空
ding_app_secret_is_null=钉钉的AppSecret不能为空 ding_app_secret_is_null=钉钉的AppSecret不能为空
# permission # permission
permission.project_user.name=用户 permission.project_user.name=用户
permission.project_user.invite=邀请 permission.project_user.invite=邀请用户
permission.project_group.name=用户组 permission.project_group.name=用户组
permission.project_environment.name=环境管理 permission.project_environment.name=环境管理
permission.project_file.name=文件管理 permission.project_file.name=文件管理

View File

@ -137,7 +137,7 @@ module.name.is.empty=Module parameter is empty
module.name.is.error=Module parameter is error module.name.is.error=Module parameter is error
# permission # permission
permission.project_user.name=User permission.project_user.name=User
permission.project_user.invite=Invite permission.project_user.invite=Invite User
permission.project_group.name=User group permission.project_group.name=User group
permission.project_environment.name=Environment management permission.project_environment.name=Environment management
permission.project_file.name=File management permission.project_file.name=File management

View File

@ -137,7 +137,7 @@ ding_app_key_is_null=钉钉的AppKey不能为空
ding_app_secret_is_null=钉钉的AppSecret不能为空 ding_app_secret_is_null=钉钉的AppSecret不能为空
# permission # permission
permission.project_user.name=用户 permission.project_user.name=用户
permission.project_user.invite=邀请 permission.project_user.invite=邀请用户
permission.project_group.name=用户组 permission.project_group.name=用户组
permission.project_environment.name=环境管理 permission.project_environment.name=环境管理
permission.project_file.name=文件管理 permission.project_file.name=文件管理

View File

@ -137,7 +137,7 @@ ding_app_key_is_null = 釘釘的AppKey不能為空
ding_app_secret_is_null =釘釘的AppSecret不能為空 ding_app_secret_is_null =釘釘的AppSecret不能為空
# permission # permission
permission.project_user.name=用戶 permission.project_user.name=用戶
permission.project_user.invite=邀請 permission.project_user.invite=邀請用户
permission.project_group.name=用戶組 permission.project_group.name=用戶組
permission.project_environment.name=環境管理 permission.project_environment.name=環境管理
permission.project_file.name=文件管理 permission.project_file.name=文件管理

View File

@ -20,6 +20,7 @@ public class BaseScheduleConfigRequest {
@Schema(description = "Cron表达式") @Schema(description = "Cron表达式")
@NotBlank @NotBlank
@Size(max = 255, message = "{length.too.large}")
private String cron; private String cron;
@Schema(description = "运行配置") @Schema(description = "运行配置")

View File

@ -4,6 +4,7 @@ import com.alibaba.excel.EasyExcelFactory;
import io.metersphere.project.domain.Project; import io.metersphere.project.domain.Project;
import io.metersphere.project.mapper.ProjectMapper; import io.metersphere.project.mapper.ProjectMapper;
import io.metersphere.sdk.constants.EmailInviteSource; import io.metersphere.sdk.constants.EmailInviteSource;
import io.metersphere.sdk.constants.OperationLogConstants;
import io.metersphere.sdk.constants.ParamConstants; import io.metersphere.sdk.constants.ParamConstants;
import io.metersphere.sdk.exception.MSException; import io.metersphere.sdk.exception.MSException;
import io.metersphere.sdk.util.*; import io.metersphere.sdk.util.*;
@ -435,12 +436,18 @@ public class SimpleUserService {
if (MapUtils.isNotEmpty(errorMap)) { if (MapUtils.isNotEmpty(errorMap)) {
throw new MSException(SystemResultCode.INVITE_EMAIL_EXIST, JSON.toJSONString(errorMap.keySet())); throw new MSException(SystemResultCode.INVITE_EMAIL_EXIST, JSON.toJSONString(errorMap.keySet()));
} }
String logProjectId = "", logOrgId = "";
if (StringUtils.equals(inviteSource, EmailInviteSource.SYSTEM.name())) { if (StringUtils.equals(inviteSource, EmailInviteSource.SYSTEM.name())) {
logProjectId = OperationLogConstants.SYSTEM;
logOrgId = OperationLogConstants.SYSTEM;
//校验角色的合法性 //校验角色的合法性
globalUserRoleService.checkRoleIsGlobalAndHaveMember(request.getUserRoleIds(), true); globalUserRoleService.checkRoleIsGlobalAndHaveMember(request.getUserRoleIds(), true);
request.setOrganizationId(EmailInviteSource.SYSTEM.name()); request.setOrganizationId(EmailInviteSource.SYSTEM.name());
request.setProjectId(EmailInviteSource.SYSTEM.name()); request.setProjectId(EmailInviteSource.SYSTEM.name());
} else if (StringUtils.equals(inviteSource, EmailInviteSource.ORGANIZATION.name())) { } else if (StringUtils.equals(inviteSource, EmailInviteSource.ORGANIZATION.name())) {
logProjectId = OperationLogConstants.ORGANIZATION;
logOrgId = request.getOrganizationId();
OrganizationService organizationService = CommonBeanFactory.getBean(OrganizationService.class); OrganizationService organizationService = CommonBeanFactory.getBean(OrganizationService.class);
organizationService.checkOrgExistById(request.getOrganizationId()); organizationService.checkOrgExistById(request.getOrganizationId());
organizationService.checkUseRoleExist(request.getUserRoleIds(), request.getOrganizationId()); organizationService.checkUseRoleExist(request.getUserRoleIds(), request.getOrganizationId());
@ -452,12 +459,15 @@ public class SimpleUserService {
throw new MSException(Translator.get("project_not_exist")); throw new MSException(Translator.get("project_not_exist"));
} }
request.setOrganizationId(project.getOrganizationId()); request.setOrganizationId(project.getOrganizationId());
logProjectId = project.getId();
logOrgId = project.getOrganizationId();
} }
List<UserInvite> inviteList = userInviteService.batchInsert( List<UserInvite> inviteList = userInviteService.batchInsert(
request.getInviteEmails(), inviteUser.getId(), request.getUserRoleIds(), request.getOrganizationId(), request.getProjectId()); request.getInviteEmails(), inviteUser.getId(), request.getUserRoleIds(), request.getOrganizationId(), request.getProjectId());
//记录日志 //记录日志
userLogService.addEmailInviteLog(inviteList, inviteUser.getId()); userLogService.addEmailInviteLog(inviteList, logProjectId, logOrgId, inviteUser.getId());
this.sendInviteEmail(inviteList, inviteUser.getName()); this.sendInviteEmail(inviteList, inviteUser.getName());
return new UserInviteResponse(inviteList); return new UserInviteResponse(inviteList);
} }

View File

@ -294,15 +294,24 @@ public class UserLogService {
operationLogService.batchAdd(logs); operationLogService.batchAdd(logs);
} }
public void addEmailInviteLog(List<UserInvite> userInviteList, String inviteUserId) { public void addEmailInviteLog(List<UserInvite> userInviteList, String projectId, String orgId, String inviteUserId) {
String module = null;
if (StringUtils.equals(projectId, OperationLogConstants.SYSTEM)) {
module = OperationLogModule.SETTING_SYSTEM_USER_SINGLE;
} else if (StringUtils.equals(projectId, OperationLogConstants.ORGANIZATION)) {
module = OperationLogModule.SETTING_ORGANIZATION_USER_ROLE;
} else {
module = OperationLogModule.PROJECT_MANAGEMENT_PERMISSION_USER_ROLE;
}
User inviteUser = userMapper.selectByPrimaryKey(inviteUserId); User inviteUser = userMapper.selectByPrimaryKey(inviteUserId);
List<LogDTO> saveLogs = new ArrayList<>(); List<LogDTO> saveLogs = new ArrayList<>();
String finalModule = module;
userInviteList.forEach(userInvite -> { userInviteList.forEach(userInvite -> {
LogDTO log = LogDTOBuilder.builder() LogDTO log = LogDTOBuilder.builder()
.projectId(OperationLogConstants.SYSTEM) .projectId(projectId)
.module(OperationLogModule.SETTING_SYSTEM_USER_SINGLE) .module(finalModule)
.createUser(inviteUserId) .createUser(inviteUserId)
.organizationId(OperationLogConstants.SYSTEM) .organizationId(orgId)
.sourceId(inviteUserId) .sourceId(inviteUserId)
.type(OperationLogType.ADD.name()) .type(OperationLogType.ADD.name())
.content(inviteUser.getName() + Translator.get("user.invite.email") + ":" + userInvite.getEmail()) .content(inviteUser.getName() + Translator.get("user.invite.email") + ":" + userInvite.getEmail())