in ozhera-monitor/ozhera-monitor-service/src/main/java/org/apache/ozhera/monitor/service/impl/AppMonitorServiceImpl.java [508:583]
public Result<String> create(AppMonitor appMonitor) {
if (appMonitor == null) {
log.error("AppMonitorService.create param is null");
return Result.fail(ErrorCode.invalidParamError);
}
if (appMonitor.getProjectId() == null || StringUtils.isEmpty(appMonitor.getProjectName())) {
log.error("AppMonitorService.create param is avalid! projectId or projectName is empty!");
return Result.fail(ErrorCode.invalidParamError);
}
if (StringUtils.isEmpty(appMonitor.getOwner()) && StringUtils.isEmpty(appMonitor.getCareUser())) {
log.error("AppMonitorService.create param is avalid! owner and careUser can not both null at same time!");
return Result.fail(ErrorCode.invalidParamError);
}
/**
* owner、mycare只能存在一种,如果存在owner直接按owner处理,不再继续判断!正常的业务场景不会同时指定owner和mycare;
*/
AppViewType viewType = AppViewType.MyApp;
String userName = appMonitor.getOwner();
if (StringUtils.isEmpty(appMonitor.getOwner())) {
viewType = AppViewType.MyCareApp;
userName = appMonitor.getCareUser();
}
AppMonitor app = appMonitorDao.getMyApp(appMonitor.getProjectId(), appMonitor.getIamTreeId(), userName,
viewType);
if (app != null) {
log.info("AppMonitorService.create update Data appMonitor : {}", appMonitor);
//如果指定的projectId,userName,viewType已经存在,则更新一下项目名称即可,无需重复创建数据!
app.setProjectName(appMonitor.getProjectName());
app.setBaseInfoId(appMonitor.getBaseInfoId());
int update = appMonitorDao.update(app);
if (update > 0) {
log.info("AppMonitorService.create update Data success appMonitor : {}", appMonitor);
return Result.success(null);
} else {
log.info("AppMonitorService.create database update Data failed appMonitor : {}", appMonitor);
return Result.fail(ErrorCode.unknownError);
}
}
//兼容不同类型的重复添加
if (AppViewType.MyCareApp.equals(viewType)) {
app = appMonitorDao.getMyApp(appMonitor.getProjectId(), appMonitor.getIamTreeId(), userName,
AppViewType.MyApp);
if (app != null) {
log.error("AppMonitorService.create项目已经添加过参与项目, param={}", appMonitor);
return Result.fail(ErrorCode.REPEAT_ADD_PROJECT);
}
} else {
app = appMonitorDao.getMyApp(appMonitor.getProjectId(), appMonitor.getIamTreeId(), userName,
AppViewType.MyCareApp);
if (app != null) {
//清除已经关注的数据
Result<String> delResult = this.delete(app.getId());
if (delResult.getCode() != ErrorCode.success.getCode()) {
return delResult;
}
}
}
try {
int i = appMonitorDao.create(appMonitor);
if (i > 0) {
createGrafana(appMonitor);
log.info("AppMonitorService.create success appMonitor : {}", appMonitor);
return new Result<>(ErrorCode.success.getCode(), ErrorCode.success.getMessage(), null);
} else {
log.info("AppMonitorService.create database create data failed appMonitor : {}", appMonitor);
return Result.fail(ErrorCode.unknownError);
}
} catch (Exception e) {
log.error("AppMonitorService.create error" + e.getMessage(), e);
return Result.fail(ErrorCode.unknownError);
}
}