fix:数据存储预警通知
This commit is contained in:
@@ -0,0 +1,13 @@
|
||||
package com.sdm.common.entity.constants;
|
||||
|
||||
public class CommonConstants {
|
||||
/**
|
||||
* 系统管理员角色编码
|
||||
*/
|
||||
public static final String ROLE_CODE_ADMIN = "ROLE_ADMIN";
|
||||
/**
|
||||
* 普通用户角色编码
|
||||
*/
|
||||
public static final String ROLE_CODE_GENERAL = "GENERAL_USER";
|
||||
|
||||
}
|
||||
@@ -7,6 +7,7 @@ public enum MessageTemplateEnum {
|
||||
|
||||
TASK_ISSUE("任务通知", "接收到下发的仿真任务:%s,请前往仿真数据管理平台查看"),
|
||||
DATA_ALERT("数据通知", "您的数据存储空间已达阈值,请前往仿真数据管理平台查看"),
|
||||
DATA_ALERT_MANAGER("数据通知", "%s的数据存储空间已达阈值,请前往仿真数据管理平台查看"),
|
||||
APPROVE_ALERT("审批通知", "收到一条%s消息,请前往仿真数据管理平台查看"),
|
||||
HPC_START("作业通知", "作业已发起"),
|
||||
HPC_END("作业通知", "作业已结束")
|
||||
|
||||
@@ -83,4 +83,19 @@ public class SysUserFeignClientImpl implements ISysUserFeignClient {
|
||||
return SdmResponse.failed("查询用户组信息失败");
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public SdmResponse<List<Long>> getUserByRoleCode(String roleCode, Long tenantId) {
|
||||
SdmResponse<List<Long>> sdmResponse;
|
||||
try {
|
||||
sdmResponse = sysUserClient.getUserByRoleCode(roleCode, tenantId);
|
||||
if (!sdmResponse.isSuccess() || sdmResponse.getData() == null){
|
||||
return SdmResponse.failed("根据角色编码查询用户失败");
|
||||
}
|
||||
return sdmResponse;
|
||||
} catch (Exception e) {
|
||||
log.error("根据角色编码查询用户失败", e);
|
||||
return SdmResponse.failed("根据角色编码查询用户失败");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -12,9 +12,7 @@ import io.swagger.v3.oas.annotations.Operation;
|
||||
import io.swagger.v3.oas.annotations.Parameter;
|
||||
import org.springframework.cloud.openfeign.FeignClient;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.springframework.web.bind.annotation.PostMapping;
|
||||
import org.springframework.web.bind.annotation.RequestBody;
|
||||
import org.springframework.web.bind.annotation.RequestHeader;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
@@ -35,4 +33,7 @@ public interface ISysUserFeignClient {
|
||||
*/
|
||||
@PostMapping("/user/queryGroupDetail")
|
||||
SdmResponse<SysUserGroupDetailResp> queryGroupDetail(@RequestBody @Validated QueryGroupDetailReq req);
|
||||
|
||||
@GetMapping("/user/getUserByRoleCode")
|
||||
SdmResponse<List<Long>> getUserByRoleCode(@RequestParam("roleCode") String roleCode, @RequestParam("tenantId") Long tenantId);
|
||||
}
|
||||
|
||||
@@ -4,9 +4,12 @@ package com.sdm.data.job;
|
||||
import com.alibaba.fastjson2.JSON;
|
||||
import com.sdm.common.common.SdmResponse;
|
||||
import com.sdm.common.common.ThreadLocalContext;
|
||||
import com.sdm.common.entity.constants.CommonConstants;
|
||||
import com.sdm.common.entity.enums.MessageTemplateEnum;
|
||||
import com.sdm.common.entity.req.system.SendMsgReq;
|
||||
import com.sdm.common.feign.impl.system.MessageFeignClientImpl;
|
||||
import com.sdm.common.feign.impl.system.SysUserFeignClientImpl;
|
||||
import com.sdm.common.service.UserNameCacheService;
|
||||
import com.sdm.data.model.entity.FileStorageQuota;
|
||||
import com.sdm.data.service.DataStorageAnalysis;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
@@ -15,7 +18,10 @@ import org.apache.commons.collections4.CollectionUtils;
|
||||
import org.springframework.scheduling.annotation.Scheduled;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import java.util.HashSet;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
|
||||
@Component
|
||||
@Slf4j
|
||||
@@ -24,25 +30,47 @@ public class DataStorageMonitorJob {
|
||||
|
||||
private final DataStorageAnalysis dataStorageAnalysis;
|
||||
private final MessageFeignClientImpl messageFeignClient;
|
||||
private final SysUserFeignClientImpl sysUserFeignClient;
|
||||
private final UserNameCacheService userNameCacheService;
|
||||
|
||||
/**
|
||||
* 定时筛选存储空间达到阈值的用户 发送告警消息
|
||||
*/
|
||||
@Scheduled(cron = "${data.storage-monitor.cron:0 */1 * * * ?}")
|
||||
@Scheduled(cron = "${data.storage-monitor.cron:0 */10 * * * ?}")
|
||||
public void checkDataStorageSpaceAndSendAlert() {
|
||||
log.info("开始执行定时筛选存储空间达到阈值的用户任务");
|
||||
try {
|
||||
SdmResponse<List<FileStorageQuota>> sdmResponse = dataStorageAnalysis.listAllUserQuotaForJob();
|
||||
if (CollectionUtils.isNotEmpty(sdmResponse.getData())) {
|
||||
List<FileStorageQuota> fileStorageQuotaList = sdmResponse.getData();
|
||||
log.info("[DataStorageMonitorJob] checkDataStorageSpaceAndSendAlert fileStorageQuotaList:{}", JSON.toJSONString(fileStorageQuotaList));
|
||||
ThreadLocalContext.setTenantId(fileStorageQuotaList.get(0).getTenantId());
|
||||
ThreadLocalContext.setUserId(fileStorageQuotaList.get(0).getUserId());
|
||||
Set<Long> userIdsSet = new HashSet<>(fileStorageQuotaList.stream().map(FileStorageQuota::getUserId).toList());
|
||||
Map<Long, String> longStringMap = userNameCacheService.batchGetUserNames(userIdsSet);
|
||||
|
||||
fileStorageQuotaList.forEach(quota -> {
|
||||
SendMsgReq req = new SendMsgReq();
|
||||
req.setTitle(MessageTemplateEnum.DATA_ALERT.getTitle());
|
||||
req.setContent(MessageTemplateEnum.DATA_ALERT.getContent());
|
||||
req.setTenantId(String.valueOf(quota.getTenantId()));
|
||||
req.setUserId(String.valueOf(quota.getUserId()));
|
||||
log.info("[DataStorageMonitorJob] checkDataStorageSpaceAndSendAlert param:{}", JSON.toJSONString(req));
|
||||
log.info("[DataStorageMonitorJob] checkDataStorageSpaceAndSendAlert user param:{}", JSON.toJSONString(req));
|
||||
messageFeignClient.sendMessage(req);
|
||||
// 系统管理员
|
||||
SdmResponse<List<Long>> response = sysUserFeignClient.getUserByRoleCode(CommonConstants.ROLE_CODE_ADMIN, quota.getTenantId());
|
||||
if (response.getData() != null) {
|
||||
List<Long> managerUserIds = response.getData();
|
||||
managerUserIds.removeIf(managerUserId -> managerUserId.equals(quota.getUserId()));
|
||||
if (CollectionUtils.isNotEmpty(managerUserIds)) {
|
||||
for (Long managerUserId : managerUserIds) {
|
||||
req.setContent(MessageTemplateEnum.DATA_ALERT_MANAGER.getContent(longStringMap.get(quota.getUserId())));
|
||||
req.setUserId(String.valueOf(managerUserId));
|
||||
log.info("[DataStorageMonitorJob] checkDataStorageSpaceAndSendAlert manager param:{}", JSON.toJSONString(req));
|
||||
messageFeignClient.sendMessage(req);
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
log.info("定时筛选存储空间达到阈值的用户任务执行完成");
|
||||
|
||||
@@ -131,4 +131,4 @@ security:
|
||||
|
||||
data:
|
||||
storage-monitor:
|
||||
cron: 0 0 9 * * ?
|
||||
cron: 0 0 0/1 * * ?
|
||||
@@ -131,4 +131,4 @@ security:
|
||||
|
||||
data:
|
||||
storage-monitor:
|
||||
cron: 0 0 9 * * ?
|
||||
cron: 0 0 0/1 * * ?
|
||||
@@ -136,7 +136,7 @@ security:
|
||||
|
||||
data:
|
||||
storage-monitor:
|
||||
cron: 0 0 9 * * ?
|
||||
cron: 0 0 0/1 * * ?
|
||||
|
||||
# 0单机处理,可以指向本地,1负载均衡轮询
|
||||
serverType: 0
|
||||
|
||||
@@ -131,4 +131,4 @@ security:
|
||||
|
||||
data:
|
||||
storage-monitor:
|
||||
cron: 0 0 9 * * ?
|
||||
cron: 0 0 0/1 * * ?
|
||||
@@ -130,4 +130,4 @@ security:
|
||||
|
||||
data:
|
||||
storage-monitor:
|
||||
cron: 0 0 9 * * ?
|
||||
cron: 0 0 0/1 * * ?
|
||||
@@ -229,5 +229,11 @@ public class SysUserController implements ISysUserFeignClient {
|
||||
return ISysUserService.getUserToken(userId);
|
||||
}
|
||||
|
||||
@Operation(summary = "根据角色编码获取所属用户", description = "根据角色编码获取所属用户")
|
||||
@GetMapping("/getUserByRoleCode")
|
||||
public SdmResponse<List<Long>> getUserByRoleCode(@Parameter(description = "根据角色编码获取所属用户请求参数") @RequestParam("roleCode") String roleCode, @RequestParam("tenantId") Long tenantId) {
|
||||
return ISysUserService.getUserByRoleCode(roleCode, tenantId);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
@@ -50,4 +50,7 @@ public interface ISysUserService extends IService<SysUser> {
|
||||
SdmResponse<CIDUserResp> queryGroupMember(GroupMemberQueryReq req);
|
||||
|
||||
SdmResponse<UserTokenResp> getUserToken(Long userId);
|
||||
|
||||
SdmResponse<List<Long>> getUserByRoleCode(String roleCode, Long tenantId);
|
||||
|
||||
}
|
||||
|
||||
@@ -58,6 +58,9 @@ public class CIDISysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser>
|
||||
@Value("${cid.user.getUserToken}")
|
||||
private String getUserToken;
|
||||
|
||||
@Value("${cid.role.getUserByRoleCode}")
|
||||
private String getUserByRoleCode;
|
||||
|
||||
@Override
|
||||
public String getType() {
|
||||
return type;
|
||||
@@ -276,4 +279,21 @@ public class CIDISysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser>
|
||||
return SdmResponse.failed("获取用户token失败: ");
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public SdmResponse<List<Long>> getUserByRoleCode(String roleCode, Long tenantId) {
|
||||
try {
|
||||
Map<String, Object> paramMap = new HashMap<>();
|
||||
paramMap.put("roleCode", roleCode);
|
||||
paramMap.put("tenantId", tenantId);
|
||||
log.info("正在向CID根据角色编码获取用户API发送请求: {},参数: {}", cidUrl + getUserByRoleCode, paramMap);
|
||||
String resultJson = HttpUtil.get(cidUrl + getUserByRoleCode, paramMap);
|
||||
log.info("收到CID根据角色编码获取用户API的响应: {}", resultJson);
|
||||
SdmResponse<List<Long>> respSdmResponse = JSON.parseObject(resultJson, SdmResponse.class);
|
||||
return respSdmResponse;
|
||||
} catch (Exception e) {
|
||||
log.error("根据角色编码查询用户失败", e);
|
||||
return SdmResponse.failed("根据角色编码查询用户失败: ");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -306,4 +306,9 @@ public class LocalUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> im
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public SdmResponse<List<Long>> getUserByRoleCode(String roleCode, Long tenantId) {
|
||||
return null;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -155,6 +155,7 @@ cid:
|
||||
getRoleByRoleCode: /spdm-role/getRoleByRoleCode
|
||||
getRoleById: /spdm-role/getRoleById
|
||||
listRoles: /spdm-role/listRoles
|
||||
getUserByRoleCode: /spdm-role/getUserByRoleCode
|
||||
tenant:
|
||||
getTenantDetailById: /spdm-tenant/getTenantDetailById
|
||||
listTenant: /spdm-tenant/listTenant
|
||||
@@ -186,4 +187,5 @@ security:
|
||||
- /systemMsg/sendMessage
|
||||
- /systemLog/saveLog
|
||||
- /tenant/list
|
||||
- /tenant/initNewTenant
|
||||
- /tenant/initNewTenant
|
||||
- /user/getUserByRoleCode
|
||||
@@ -155,6 +155,7 @@ cid:
|
||||
getRoleByRoleCode: /spdm-role/getRoleByRoleCode
|
||||
getRoleById: /spdm-role/getRoleById
|
||||
listRoles: /spdm-role/listRoles
|
||||
getUserByRoleCode: /spdm-role/getUserByRoleCode
|
||||
tenant:
|
||||
getTenantDetailById: /spdm-tenant/getTenantDetailById
|
||||
listTenant: /spdm-tenant/listTenant
|
||||
@@ -186,4 +187,5 @@ security:
|
||||
- /systemMsg/sendMessage
|
||||
- /systemLog/saveLog
|
||||
- /tenant/list
|
||||
- /tenant/initNewTenant
|
||||
- /tenant/initNewTenant
|
||||
- /user/getUserByRoleCode
|
||||
@@ -155,6 +155,7 @@ cid:
|
||||
getRoleByRoleCode: /spdm-role/getRoleByRoleCode
|
||||
getRoleById: /spdm-role/getRoleById
|
||||
listRoles: /spdm-role/listRoles
|
||||
getUserByRoleCode: /spdm-role/getUserByRoleCode
|
||||
tenant:
|
||||
getTenantDetailById: /spdm-tenant/getTenantDetailById
|
||||
listTenant: /spdm-tenant/listTenant
|
||||
@@ -187,6 +188,7 @@ security:
|
||||
- /systemLog/saveLog
|
||||
- /tenant/list
|
||||
- /tenant/initNewTenant
|
||||
- /user/getUserByRoleCode
|
||||
|
||||
# 0单机处理,可以指向本地,1负载均衡轮询
|
||||
serverType: 0
|
||||
|
||||
@@ -155,6 +155,7 @@ cid:
|
||||
getRoleByRoleCode: /spdm-role/getRoleByRoleCode
|
||||
getRoleById: /spdm-role/getRoleById
|
||||
listRoles: /spdm-role/listRoles
|
||||
getUserByRoleCode: /spdm-role/getUserByRoleCode
|
||||
tenant:
|
||||
getTenantDetailById: /spdm-tenant/getTenantDetailById
|
||||
listTenant: /spdm-tenant/listTenant
|
||||
@@ -186,4 +187,5 @@ security:
|
||||
- /systemMsg/sendMessage
|
||||
- /tenant/list
|
||||
- /systemLog/saveLog
|
||||
- /tenant/initNewTenant
|
||||
- /tenant/initNewTenant
|
||||
- /user/getUserByRoleCode
|
||||
@@ -155,6 +155,7 @@ cid:
|
||||
getRoleByRoleCode: /spdm-role/getRoleByRoleCode
|
||||
getRoleById: /spdm-role/getRoleById
|
||||
listRoles: /spdm-role/listRoles
|
||||
getUserByRoleCode: /spdm-role/getUserByRoleCode
|
||||
tenant:
|
||||
getTenantDetailById: /spdm-tenant/getTenantDetailById
|
||||
listTenant: /spdm-tenant/listTenant
|
||||
@@ -186,4 +187,5 @@ security:
|
||||
- /systemMsg/sendMessage
|
||||
- /systemLog/saveLog
|
||||
- /tenant/list
|
||||
- /tenant/initNewTenant
|
||||
- /tenant/initNewTenant
|
||||
- /user/getUserByRoleCode
|
||||
Reference in New Issue
Block a user