diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/model/NewModelFromGitController.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/model/NewModelFromGitController.java index 92491e53..59abe04a 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/model/NewModelFromGitController.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/model/NewModelFromGitController.java @@ -42,11 +42,9 @@ public class NewModelFromGitController { */ @GetMapping("/downloadAllFiles") @ApiOperation(value = "下载同一版本下所有模型,并打包") - public ResponseEntity downloadAllDatasetFiles(@RequestParam(value = "repository_name") String repositoryName, - @RequestParam(value = "version") String version, - @RequestParam(value = "git_link_username") String gitLinkUsername, - @RequestParam(value = "git_link_password") String gitLinkPassword) throws Exception { - return modelsService.downloadAllModelFilesNew(repositoryName, version, gitLinkUsername, gitLinkPassword); + public ResponseEntity downloadAllDatasetFiles(@RequestParam("identifier") String identifier, + @RequestParam(value = "version") String version) throws Exception { + return modelsService.downloadAllModelFilesNew(identifier, version); } @@ -83,22 +81,36 @@ public class NewModelFromGitController { } } - @GetMapping("/getModelVersions/{modelName}") + @GetMapping("/getModelVersions/{model_name}") @ApiOperation(value = "获取模型所有版本号") - public AjaxResult getModelVersions(@PathVariable("modelName") String modelName) throws Exception { + public AjaxResult getModelVersions(@PathVariable("model_name") String modelName) throws Exception { return AjaxResult.success(this.modelsService.getNewModelVersion(modelName)); } - @GetMapping("/getModelMeta") - @ApiOperation(value = "获取模型元数据") - public AjaxResult getModelMeta(@RequestParam("modelName") String modelName, @RequestParam("version") String version) throws Exception { - return AjaxResult.success(this.modelsService.getModelMeta(modelName, version)); + @GetMapping("/getModelDetail") + @ApiOperation(value = "获取模型详细信息") + public AjaxResult getModelDetail(@RequestParam("model_name") String modelName, @RequestParam("version") String version) throws Exception { + return AjaxResult.success(this.modelsService.getModelDetail(modelName, version)); } @GetMapping("/getModelDependencyTree") @ApiOperation(value = "获取模型依赖关系树") - public AjaxResult getModelDependencyTree(@RequestParam("repoId")Integer repoId, @RequestParam("modelName") String modelName, @RequestParam("version") String version) throws Exception { + public AjaxResult getModelDependencyTree(@RequestParam("repoId") Integer repoId, @RequestParam("model_name") String modelName, @RequestParam("version") String version) throws Exception { return AjaxResult.success(this.modelsService.getModelDependencyTree(repoId, modelName, version)); } + + @DeleteMapping("/delete") + @ApiOperation(value = "删除模型") + public AjaxResult deleteModel(@RequestParam("repoId")Integer repoId, @RequestParam("identifier") String identifier, @RequestParam("owner") String owner) throws Exception { + this.modelsService.deleteModel(repoId,identifier, owner); + return AjaxResult.success(); + } + + @DeleteMapping("/deleteVersion") + @ApiOperation(value = "删除模型版本") + public AjaxResult deleteVersion(@RequestParam("repoId")Integer repoId, @RequestParam("identifier") String identifier, @RequestParam("owner") String owner, @RequestParam("version") String version) throws Exception { + this.modelsService.deleteVersion(repoId, identifier, owner, version); + return AjaxResult.success(); + } } diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/mapper/ModelDependency1Dao.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/mapper/ModelDependency1Dao.java index 2d1de127..b3910b5f 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/mapper/ModelDependency1Dao.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/mapper/ModelDependency1Dao.java @@ -14,4 +14,8 @@ public interface ModelDependency1Dao { ModelDependency1 queryByModelNameAndVersion(@Param("repoId") Integer repoId, @Param("modelName") String modelName, @Param("version") String version); List queryByParentModel(@Param("parentModel") String parentModel); + + int deleteModel(@Param("repoId") Integer repoId, @Param("identifier")String identifier, @Param("owner") String owner, @Param("version") String version); + + int deleteModelDependency(@Param("repoId") Integer repoId, @Param("identifier")String identifier, @Param("owner") String owner, @Param("version") String version); } diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/ModelsService.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/ModelsService.java index c437aa08..b9f8fae8 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/ModelsService.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/ModelsService.java @@ -92,7 +92,7 @@ public interface ModelsService { List> uploadModelLocal(MultipartFile[] files, String uuid) throws Exception; - ResponseEntity downloadAllModelFilesNew(String repositoryName, String version, String gitLinkUsername, String gitLinkPassword) throws IOException, Exception; + ResponseEntity downloadAllModelFilesNew(String identifier, String version) throws IOException, Exception; Page newPubilcQueryByPage(ModelsVo modelsVo, PageRequest pageRequest) throws Exception; @@ -100,7 +100,11 @@ public interface ModelsService { List getNewModelVersion(String modelName); - ModelMetaVo getModelMeta(String modelName, String version) throws Exception; + ModelsVo getModelDetail(String modelName, String version) throws Exception; ModelDependency1TreeVo getModelDependencyTree(Integer repoId, String modelName, String version)throws Exception; + + void deleteModel(Integer repoId, String identifier, String owner) throws Exception; + + void deleteVersion(Integer repoId, String identifier, String owner, String version) throws Exception; } diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ModelsServiceImpl.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ModelsServiceImpl.java index 6e4c0f9e..82f5775f 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ModelsServiceImpl.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ModelsServiceImpl.java @@ -516,16 +516,14 @@ public class ModelsServiceImpl implements ModelsService { } @Override - public CompletableFuture newCreateModel(ModelsVo modelsVo) throws Exception { + public CompletableFuture newCreateModel(ModelsVo modelsVo) { return CompletableFuture.supplyAsync(() -> { try { LoginUser loginUser = SecurityUtils.getLoginUser(); String ci4sUsername = loginUser.getUsername(); String gitLinkUsername = loginUser.getSysUser().getGitLinkUsername(); String gitLinkPassword = loginUser.getSysUser().getGitLinkPassword(); - Jedis jedis = new Jedis(redisHost); - String userReq = jedis.get(ci4sUsername + "_gitUserInfo"); - Map userInfo = JsonUtils.jsonToMap(userReq); + Map userInfo = getUserInfo(ci4sUsername); Integer userId = (Integer) userInfo.get("user_id"); String token = gitService.login(gitLinkUsername, gitLinkPassword); @@ -605,17 +603,16 @@ public class ModelsServiceImpl implements ModelsService { } @Override - public ResponseEntity downloadAllModelFilesNew(String repositoryName, String version, String gitLinkUsername, String gitLinkPassword) throws IOException, Exception { + public ResponseEntity downloadAllModelFilesNew(String identifier, String version) throws Exception { // 命令行操作 git clone 项目地址 LoginUser loginUser = SecurityUtils.getLoginUser(); String ci4sUsername = loginUser.getUsername(); - String token = gitService.login(gitLinkUsername, gitLinkPassword); - Jedis jedis = new Jedis(redisHost); - String userReq = jedis.get(ci4sUsername + "_gitUserInfo"); - Map userInfo = JsonUtils.jsonToMap(userReq); - Integer userId = (Integer) userInfo.get("user_id"); - String projectUrl = gitendpoint + "/" + (String) userInfo.get("login") + "/" + repositoryName + ".git"; - String localPath1 = localPath + ci4sUsername + "/model/" + repositoryName; + String gitLinkUsername = loginUser.getSysUser().getGitLinkUsername(); + String gitLinkPassword = loginUser.getSysUser().getGitLinkPassword(); + Map userInfo = getUserInfo(ci4sUsername); + + String projectUrl = gitendpoint + "/" + userInfo.get("login") + "/" + identifier + ".git"; + String localPath1 = localPath + ci4sUsername + "/model/" + identifier; File folder = new File(localPath1); if (folder.exists() && folder.isDirectory()) { //切换分支 @@ -665,16 +662,17 @@ public class ModelsServiceImpl implements ModelsService { String gitLinkUsername = loginUser.getSysUser().getGitLinkUsername(); String gitLinkPassword = loginUser.getSysUser().getGitLinkPassword(); String token = gitService.login(gitLinkUsername, gitLinkPassword); - Jedis jedis = new Jedis(redisHost); - String userReq = jedis.get(ci4sUsername + "_gitUserInfo"); - Map userInfo = JsonUtils.jsonToMap(userReq); + Map userInfo = getUserInfo(ci4sUsername); + //拼接查询url String modelTagName = modelsVo.getModelTag(); String modelTypeName = modelsVo.getModelType(); + String search = modelsVo.getName(); String topic_name = "ci4s_model"; topic_name = StringUtils.isEmpty(modelTagName) ? topic_name : topic_name + ",modeltag_" + modelTypeName; topic_name = StringUtils.isEmpty(modelTagName) ? topic_name : topic_name + ",modeltype_" + modelTypeName; - String url = gitendpoint + "/api/users/" + (String) userInfo.get("login") + "/projects.json?page=" + pageRequest.getPageNumber() + "&limit=" + pageRequest.getPageSize() + "&category=manage&topic_name=" + topic_name; + + String url = gitendpoint + "/api/users/" + userInfo.get("login") + "/projects.json?page=" + pageRequest.getPageNumber() + "&limit=" + pageRequest.getPageSize() + "&category=manage&topic_name=" + topic_name + "&search=" + search; String req = HttpUtils.sendGetWithToken(url, null, token); Map stringObjectMap = JacksonUtil.parseJSONStr2Map(req); Integer total = (Integer) stringObjectMap.get("count"); @@ -689,18 +687,18 @@ public class ModelsServiceImpl implements ModelsService { String gitLinkUsername = loginUser.getSysUser().getGitLinkUsername(); String gitLinkPassword = loginUser.getSysUser().getGitLinkPassword(); String token = gitService.login(gitLinkUsername, gitLinkPassword); - Jedis jedis = new Jedis(redisHost); - String userReq = jedis.get(ci4sUsername + "_gitUserInfo"); - Map userInfo = JsonUtils.jsonToMap(userReq); + Map userInfo = getUserInfo(ci4sUsername); Integer userId = (Integer) userInfo.get("user_id"); + //拼接查询url String modelTagName = modelsVo.getModelTag(); String modelTypeName = modelsVo.getModelType(); + String search = modelsVo.getName(); String topic_name = "ci4s_model"; topic_name = StringUtils.isEmpty(modelTagName) ? topic_name : topic_name + ",modeltag_" + modelTagName; topic_name = StringUtils.isEmpty(modelTypeName) ? topic_name : topic_name + ",modeltype_" + modelTypeName; - String url = gitendpoint + "/api/projects.json?user_id=" + userId + "&page=" + pageRequest.getPageNumber() + "&limit=" + pageRequest.getPageSize() + "&sort_by=praises_count&topic_name=" + topic_name; + String url = gitendpoint + "/api/projects.json?user_id=" + userId + "&page=" + pageRequest.getPageNumber() + "&limit=" + pageRequest.getPageSize() + "&sort_by=praises_count&topic_name=" + topic_name + "&search=" + search; String req = HttpUtils.sendGetWithToken(url, null, token); Map stringObjectMap = JacksonUtil.parseJSONStr2Map(req); Integer total = (Integer) stringObjectMap.get("total_count"); @@ -715,17 +713,36 @@ public class ModelsServiceImpl implements ModelsService { } @Override - public ModelMetaVo getModelMeta(String modelName, String version) throws Exception { + public ModelsVo getModelDetail(String modelName, String version) { LoginUser loginUser = SecurityUtils.getLoginUser(); String ci4sUsername = loginUser.getUsername(); String gitLinkUsername = loginUser.getSysUser().getGitLinkUsername(); String gitLinkPassword = loginUser.getSysUser().getGitLinkPassword(); + // git pull操作,然后读取里面的文件列表,列出每个文件的大小和名称,封装成MAP List> fileDetailsAfterGitPull = DVCUtils.getFileDetailsAfterGitPull(localPath + ci4sUsername + "/model/", modelName, version, "model", gitLinkUsername, gitLinkPassword); Map stringObjectMap = YamlUtils.loadYamlFile(localPath + ci4sUsername + "/model/" + modelName + "/" + version + "/metadata/metadata.yaml"); assert stringObjectMap != null; - return ConvertUtil.convertMapToObject(stringObjectMap, ModelMetaVo.class); + + ModelMetaVo modelMetaVo = ConvertUtil.convertMapToObject(stringObjectMap, ModelMetaVo.class); + ModelsVo modelsVo = new ModelsVo(); + BeanUtils.copyProperties(modelMetaVo, modelsVo); + + List versionVos = new ArrayList(); + if (!fileDetailsAfterGitPull.isEmpty()) { + for (Map fileDetail : fileDetailsAfterGitPull) { + VersionVo versionVo = new VersionVo(); + versionVo.setUrl((String) fileDetail.get("filePath")); + versionVo.setFileName((String) fileDetail.get("fileName")); + long size = (long) fileDetail.get("size"); + versionVo.setFileSize(FileUtil.formatFileSize(size)); + versionVos.add(versionVo); + } + } + modelsVo.setModelVersionVos(versionVos); + + return modelsVo; } @Override @@ -745,6 +762,32 @@ public class ModelsServiceImpl implements ModelsService { return modelDependency1TreeVo; } + @Override + public void deleteModel(Integer repoId, String identifier, String owner) throws Exception { + LoginUser loginUser = SecurityUtils.getLoginUser(); + String gitLinkUsername = loginUser.getSysUser().getGitLinkUsername(); + String gitLinkPassword = loginUser.getSysUser().getGitLinkPassword(); + String token = gitService.login(gitLinkUsername, gitLinkPassword); + gitService.deleteProject(token, owner, identifier); + + //删除模型依赖 + modelDependency1Dao.deleteModel(repoId, identifier, owner, null); + modelDependency1Dao.deleteModelDependency(repoId, identifier, owner, null); + } + + @Override + public void deleteVersion(Integer repoId, String identifier, String owner, String version) throws Exception { + LoginUser loginUser = SecurityUtils.getLoginUser(); + String gitLinkUsername = loginUser.getSysUser().getGitLinkUsername(); + String gitLinkPassword = loginUser.getSysUser().getGitLinkPassword(); + String token = gitService.login(gitLinkUsername, gitLinkPassword); + gitService.deleteBranch(token, owner, identifier, version); + + //删除模型依赖 + modelDependency1Dao.deleteModel(repoId, identifier, owner, version); + modelDependency1Dao.deleteModelDependency(repoId, identifier, owner, version); + } + void commonDvc(String token, Map userInfo, String username, String repositoryName, ModelsVo modelsVo, String gitLinkUsername, String gitLinkPassword, String type) throws Exception { String branchName = modelsVo.getVersion(); @@ -856,4 +899,9 @@ public class ModelsServiceImpl implements ModelsService { modelDependency1TreeVo.setChildModelList(childModelList); } + Map getUserInfo(String ci4sUsername) throws IOException { + Jedis jedis = new Jedis(redisHost); + String userReq = jedis.get(ci4sUsername + "_gitUserInfo"); + return JsonUtils.jsonToMap(userReq); + } } diff --git a/ruoyi-modules/management-platform/src/main/resources/mapper/managementPlatform/ModelDependency1DaoMapper.xml b/ruoyi-modules/management-platform/src/main/resources/mapper/managementPlatform/ModelDependency1DaoMapper.xml index e7967bce..9a57aa3a 100644 --- a/ruoyi-modules/management-platform/src/main/resources/mapper/managementPlatform/ModelDependency1DaoMapper.xml +++ b/ruoyi-modules/management-platform/src/main/resources/mapper/managementPlatform/ModelDependency1DaoMapper.xml @@ -11,13 +11,17 @@ + + + update model_dependency1 + set state = 0 + where repo_id = #{repoId} and identifier = #{identifier} and owner = #{owner} + + and version = #{version} + + + + + update model_dependency1 + set parent_model = null + where parent_model like concat(#{repoId}, ':', #{identifier}, + + ':', #{version}, + + '%') + \ No newline at end of file