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 59abe04a..145f84d8 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 @@ -81,17 +81,17 @@ public class NewModelFromGitController { } } - @GetMapping("/getModelVersions/{model_name}") - @ApiOperation(value = "获取模型所有版本号") - public AjaxResult getModelVersions(@PathVariable("model_name") String modelName) throws Exception { - return AjaxResult.success(this.modelsService.getNewModelVersion(modelName)); + @GetMapping("/getVersionList") + @ApiOperation(value = "获取模型分支列表") + public AjaxResult getVersionList(@RequestParam("identifier") String identifier, @RequestParam("owner")String owner) throws Exception { + return AjaxResult.success(this.modelsService.getVersionList(identifier, owner)); } @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)); + public AjaxResult getModelDetail(@RequestParam("model_name") String modelName, @RequestParam("identifier") String identifier,@RequestParam("owner") String owner, @RequestParam("version") String version) throws Exception { + return AjaxResult.success(this.modelsService.getModelDetail(modelName, identifier, owner, version)); } @GetMapping("/getModelDependencyTree") 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 b9f8fae8..a2aac1b1 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 @@ -4,7 +4,6 @@ package com.ruoyi.platform.service; import com.ruoyi.platform.domain.Models; import com.ruoyi.platform.domain.ModelsVersion; import com.ruoyi.platform.vo.ModelDependency1TreeVo; -import com.ruoyi.platform.vo.ModelMetaVo; import com.ruoyi.platform.vo.ModelsVo; import org.springframework.core.io.InputStreamResource; import org.springframework.data.domain.Page; @@ -98,11 +97,11 @@ public interface ModelsService { Page newPersonalQueryByPage(ModelsVo modelsVo, PageRequest pageRequest) throws Exception; - List getNewModelVersion(String modelName); + List> getVersionList(String identifier, String owner) throws Exception; - ModelsVo getModelDetail(String modelName, String version) throws Exception; + ModelsVo getModelDetail(String modelName, String identifier, String owner, String version) throws Exception; - ModelDependency1TreeVo getModelDependencyTree(Integer repoId, 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; diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/DatasetServiceImpl.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/DatasetServiceImpl.java index 1fca5c86..7f0f42b3 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/DatasetServiceImpl.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/DatasetServiceImpl.java @@ -464,7 +464,7 @@ public class DatasetServiceImpl implements DatasetService { public CompletableFuture newCreateDataset(NewDatasetVo datasetVo) { return CompletableFuture.supplyAsync(() -> { try { - checkoutToken(); + gitService.checkoutToken(); Jedis jedis = new Jedis(redisHost); LoginUser loginUser = SecurityUtils.getLoginUser(); String ci4sUsername = loginUser.getUsername(); @@ -541,7 +541,7 @@ public class DatasetServiceImpl implements DatasetService { public CompletableFuture newCreateVersion(NewDatasetVo datasetVo) { return CompletableFuture.supplyAsync(() -> { try { - checkoutToken(); + gitService.checkoutToken(); Jedis jedis = new Jedis(redisHost); LoginUser loginUser = SecurityUtils.getLoginUser(); String ci4sUsername = loginUser.getUsername(); @@ -611,7 +611,7 @@ public class DatasetServiceImpl implements DatasetService { @Override public Page newPersonalQueryByPage(Dataset dataset, PageRequest pageRequest) throws Exception { - checkoutToken(); + gitService.checkoutToken(); Jedis jedis = new Jedis(redisHost); LoginUser loginUser = SecurityUtils.getLoginUser(); String ci4sUsername = loginUser.getUsername(); @@ -634,7 +634,7 @@ public class DatasetServiceImpl implements DatasetService { @Override public Page newPubilcQueryByPage(Dataset dataset, PageRequest pageRequest) throws Exception { - checkoutToken(); + gitService.checkoutToken(); Jedis jedis = new Jedis(redisHost); LoginUser loginUser = SecurityUtils.getLoginUser(); String ci4sUsername = loginUser.getUsername(); @@ -696,12 +696,7 @@ public class DatasetServiceImpl implements DatasetService { @Override public List> getVersionList(String repo, String owner) throws Exception { - checkoutToken(); - Jedis jedis = new Jedis(redisHost); - LoginUser loginUser = SecurityUtils.getLoginUser(); - String ci4sUsername = loginUser.getUsername(); - String token = jedis.get(ci4sUsername+"_gitToken"); - List> brancheList = gitService.getBrancheList(token, owner, repo); + List> brancheList = gitService.getBrancheList(owner, repo); return brancheList.stream() .filter(branch -> "master".equals(branch.get("name"))) .collect(Collectors.toList()); @@ -709,7 +704,7 @@ public class DatasetServiceImpl implements DatasetService { @Override public void deleteDatasetNew(String repo, String owner) throws Exception { - checkoutToken(); + gitService.checkoutToken(); Jedis jedis = new Jedis(redisHost); LoginUser loginUser = SecurityUtils.getLoginUser(); String ci4sUsername = loginUser.getUsername(); @@ -719,7 +714,7 @@ public class DatasetServiceImpl implements DatasetService { @Override public void deleteDatasetVersionNew(String repo, String owner, String version) throws Exception { - checkoutToken(); + gitService.checkoutToken(); Jedis jedis = new Jedis(redisHost); LoginUser loginUser = SecurityUtils.getLoginUser(); String ci4sUsername = loginUser.getUsername(); @@ -779,7 +774,7 @@ public class DatasetServiceImpl implements DatasetService { @Override public ResponseEntity downloadAllDatasetFilesNew(String repositoryName, String version) throws Exception { // 命令行操作 git clone 项目地址 - checkoutToken(); + gitService.checkoutToken(); LoginUser loginUser = SecurityUtils.getLoginUser(); String gitLinkUsername = loginUser.getSysUser().getGitLinkUsername(); String gitLinkPassword = loginUser.getSysUser().getGitLinkPassword(); @@ -872,33 +867,4 @@ public class DatasetServiceImpl implements DatasetService { return new ArrayList<>(); } - private String checkoutToken(){ - Jedis jedis = new Jedis(redisHost); - LoginUser loginUser = SecurityUtils.getLoginUser(); - String ci4sUsername = loginUser.getUsername(); - String token = jedis.get(ci4sUsername+"_gitToken"); - String gitLinkUsername = loginUser.getSysUser().getGitLinkUsername(); - String gitLinkPassword = loginUser.getSysUser().getGitLinkPassword(); - - if(StringUtils.isEmpty(token)){ - gitService.login(gitLinkUsername, gitLinkPassword); - token = jedis.get(ci4sUsername+"_gitToken"); - }else { - try { - Map userInfo = gitService.getUserInfo(token); - if (userInfo == null ||(userInfo.get("status")!=null&&401==(Integer) userInfo.get("status"))){ - gitService.login(gitLinkUsername, gitLinkPassword); - token = jedis.get(ci4sUsername+"_gitToken"); - } - } catch (Exception e) { - throw new RuntimeException(e); - } - - } - return token; - - } - - - } diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/GitServiceImpl.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/GitServiceImpl.java index 842e47da..f0c55c95 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/GitServiceImpl.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/GitServiceImpl.java @@ -39,7 +39,7 @@ public class GitServiceImpl implements GitService { params.put("client_secret", "L3wBKTNnRo-wPen7bxR3F1myCvtVDgpWa6MnpfyWeJE"); try { // 发送POST请求 - String req = HttpUtils.sendPostRequest("https://www.gitlink.org.cn/oauth/token",null, JsonUtils.mapToJson(params)); + String req = HttpUtils.sendPostRequest("https://www.gitlink.org.cn/oauth/token", null, JsonUtils.mapToJson(params)); // 解析响应JSON if (StringUtils.isEmpty(req)) { throw new RuntimeException("终止响应内容为空。"); @@ -51,7 +51,7 @@ public class GitServiceImpl implements GitService { String accessToken = (String) runResMap.get("access_token"); //通过access_token获取用户信息 - String userReq = HttpUtils.sendGetWithToken("https://www.gitlink.org.cn/api/users/get_user_info.json",null, accessToken); + String userReq = HttpUtils.sendGetWithToken("https://www.gitlink.org.cn/api/users/get_user_info.json", null, accessToken); if (StringUtils.isEmpty(userReq)) { throw new RuntimeException("终止响应内容为空。"); } @@ -59,8 +59,8 @@ public class GitServiceImpl implements GitService { String ci4sUsername = loginUser.getUsername(); // 将access_token存入Redis Jedis jedis = new Jedis(redisHost); - jedis.set(ci4sUsername+"_gitToken", accessToken); - jedis.set(ci4sUsername+"_gitUserInfo", userReq); + jedis.set(ci4sUsername + "_gitToken", accessToken); + jedis.set(ci4sUsername + "_gitUserInfo", userReq); return accessToken; } catch (Exception e) { log.error("登录GitLink失败。", e); @@ -68,24 +68,51 @@ public class GitServiceImpl implements GitService { } } + @Override + public String checkoutToken() { + Jedis jedis = new Jedis(redisHost); + LoginUser loginUser = SecurityUtils.getLoginUser(); + String ci4sUsername = loginUser.getUsername(); + String token = jedis.get(ci4sUsername + "_gitToken"); + String gitLinkUsername = loginUser.getSysUser().getGitLinkUsername(); + String gitLinkPassword = loginUser.getSysUser().getGitLinkPassword(); + + if (StringUtils.isEmpty(token)) { + login(gitLinkUsername, gitLinkPassword); + token = jedis.get(ci4sUsername + "_gitToken"); + } else { + try { + Map userInfo = getUserInfo(token); + if (userInfo == null || (userInfo.get("status") != null && 401 == (Integer) userInfo.get("status"))) { + login(gitLinkUsername, gitLinkPassword); + token = jedis.get(ci4sUsername + "_gitToken"); + } + } catch (Exception e) { + throw new RuntimeException(e); + } + + } + return token; + } + @Override public Map createProject(String token, GitProjectVo gitProjectVo) throws Exception { - String userReq = HttpUtils.sendPostWithToken("https://www.gitlink.org.cn/api/projects.json",JsonUtils.objectToJson(gitProjectVo),token); + String userReq = HttpUtils.sendPostWithToken("https://www.gitlink.org.cn/api/projects.json", JsonUtils.objectToJson(gitProjectVo), token); return JsonUtils.jsonToMap(userReq); } @Override - public void createBranch(String token,String owner, String projectName, String branchName, String oldBranchName) throws Exception { + public void createBranch(String token, String owner, String projectName, String branchName, String oldBranchName) throws Exception { //https://www.gitlink.org.cn/api/v1/fanshuai/testdssa8755/branches.json // { // "new_branch_name": "SsS", // "old_branch_name": "master" // } - String createBranchUrl = "https://www.gitlink.org.cn/api/v1/"+ owner + "/" + projectName + "/branches.json"; + String createBranchUrl = "https://www.gitlink.org.cn/api/v1/" + owner + "/" + projectName + "/branches.json"; Map resMap = new HashMap<>(); resMap.put("new_branch_name", branchName); resMap.put("old_branch_name", oldBranchName); - String req = HttpUtils.sendPostWithToken(createBranchUrl,JsonUtils.objectToJson(resMap),token); + String req = HttpUtils.sendPostWithToken(createBranchUrl, JsonUtils.objectToJson(resMap), token); } @Override @@ -94,12 +121,13 @@ public class GitServiceImpl implements GitService { Map resMap = new HashMap<>(); resMap.put("project_id", id); resMap.put("name", topicName); - String req = HttpUtils.sendPostWithToken("https://www.gitlink.org.cn/api/v1/project_topics.json",JsonUtils.objectToJson(resMap),token); + String req = HttpUtils.sendPostWithToken("https://www.gitlink.org.cn/api/v1/project_topics.json", JsonUtils.objectToJson(resMap), token); } @Override - public List> getBrancheList(String token, String owner, String projectName) throws Exception { - String req = HttpUtils.sendGetWithToken("https://www.gitlink.org.cn/api/v1/"+owner+"/"+projectName+"/branches/all.json",null, token); + public List> getBrancheList(String owner, String projectName) throws Exception { + String token = checkoutToken(); + String req = HttpUtils.sendGetWithToken("https://www.gitlink.org.cn/api/v1/" + owner + "/" + projectName + "/branches/all.json", null, token); // 解析响应JSON if (StringUtils.isEmpty(req)) { throw new RuntimeException("终止响应内容为空。"); @@ -111,18 +139,18 @@ public class GitServiceImpl implements GitService { @Override public void deleteProject(String token, String owner, String projectName) throws Exception { - HttpUtils.sendDeleteRequest("https://www.gitlink.org.cn/api/"+owner+"/"+projectName+".json", token); + HttpUtils.sendDeleteRequest("https://www.gitlink.org.cn/api/" + owner + "/" + projectName + ".json", token); } @Override public void deleteBranch(String token, String owner, String projectName, String branchName) throws Exception { - HttpUtils.sendDeleteRequest("https://www.gitlink.org.cn/api/v1/"+owner+"/"+projectName+"/branches/"+branchName+".json", token); + HttpUtils.sendDeleteRequest("https://www.gitlink.org.cn/api/v1/" + owner + "/" + projectName + "/branches/" + branchName + ".json", token); } @Override public Map getUserInfo(String token) throws Exception { - String userReq = HttpUtils.sendGetWithToken("https://www.gitlink.org.cn/api/users/get_user_info.json",null, token); + String userReq = HttpUtils.sendGetWithToken("https://www.gitlink.org.cn/api/users/get_user_info.json", null, token); Map runResMap = JsonUtils.jsonToMap(userReq); - return runResMap; + return runResMap; } } 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 82f5775f..7d7869ea 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 @@ -519,14 +519,17 @@ public class ModelsServiceImpl implements ModelsService { public CompletableFuture newCreateModel(ModelsVo modelsVo) { return CompletableFuture.supplyAsync(() -> { try { + gitService.checkoutToken(); LoginUser loginUser = SecurityUtils.getLoginUser(); String ci4sUsername = loginUser.getUsername(); String gitLinkUsername = loginUser.getSysUser().getGitLinkUsername(); String gitLinkPassword = loginUser.getSysUser().getGitLinkPassword(); + Map userInfo = getUserInfo(ci4sUsername); Integer userId = (Integer) userInfo.get("user_id"); + String token = (String) userInfo.get("token"); + - String token = gitService.login(gitLinkUsername, gitLinkPassword); String repositoryName = modelsVo.getRepositoryName() == null ? ci4sUsername + "_model_" + DateUtils.dateTimeNow() : modelsVo.getRepositoryName(); ModelDependency1 modelDependency = new ModelDependency1(); List oldModelDependencys = modelDependency1Dao.queryByModelName(modelsVo.getName()); @@ -659,10 +662,8 @@ public class ModelsServiceImpl implements ModelsService { public Page newPubilcQueryByPage(ModelsVo modelsVo, PageRequest pageRequest) throws Exception { LoginUser loginUser = SecurityUtils.getLoginUser(); String ci4sUsername = loginUser.getUsername(); - String gitLinkUsername = loginUser.getSysUser().getGitLinkUsername(); - String gitLinkPassword = loginUser.getSysUser().getGitLinkPassword(); - String token = gitService.login(gitLinkUsername, gitLinkPassword); Map userInfo = getUserInfo(ci4sUsername); + String token = (String) userInfo.get("token"); //拼接查询url String modelTagName = modelsVo.getModelTag(); @@ -684,11 +685,9 @@ public class ModelsServiceImpl implements ModelsService { public Page newPersonalQueryByPage(ModelsVo modelsVo, PageRequest pageRequest) throws Exception { LoginUser loginUser = SecurityUtils.getLoginUser(); String ci4sUsername = loginUser.getUsername(); - String gitLinkUsername = loginUser.getSysUser().getGitLinkUsername(); - String gitLinkPassword = loginUser.getSysUser().getGitLinkPassword(); - String token = gitService.login(gitLinkUsername, gitLinkPassword); Map userInfo = getUserInfo(ci4sUsername); Integer userId = (Integer) userInfo.get("user_id"); + String token = (String) userInfo.get("token"); //拼接查询url String modelTagName = modelsVo.getModelTag(); @@ -707,18 +706,28 @@ public class ModelsServiceImpl implements ModelsService { } @Override - public List getNewModelVersion(String modelName) { - List modelDependency1List = modelDependency1Dao.queryByModelName(modelName); - return modelDependency1List.stream().map(ModelDependency1::getVersion).collect(Collectors.toList()); + public List> getVersionList(String identifier, String owner) throws Exception { + List> brancheList = gitService.getBrancheList(owner, identifier); + return brancheList.stream() + .filter(branch -> "master".equals(branch.get("name"))) + .collect(Collectors.toList()); } @Override - public ModelsVo getModelDetail(String modelName, String version) { + public ModelsVo getModelDetail(String modelName, String identifier, String owner, String version) throws Exception { LoginUser loginUser = SecurityUtils.getLoginUser(); String ci4sUsername = loginUser.getUsername(); String gitLinkUsername = loginUser.getSysUser().getGitLinkUsername(); String gitLinkPassword = loginUser.getSysUser().getGitLinkPassword(); + if (StringUtils.isEmpty(version)){ + List> versionList = this.getVersionList(owner, identifier); + if (versionList.size() == 0){ + throw new Exception("数据集文件不存在"); + } + version = (String) versionList.get(0).get("name"); + } + // git pull操作,然后读取里面的文件列表,列出每个文件的大小和名称,封装成MAP List> fileDetailsAfterGitPull = DVCUtils.getFileDetailsAfterGitPull(localPath + ci4sUsername + "/model/", modelName, version, "model", gitLinkUsername, gitLinkPassword); @@ -729,7 +738,7 @@ public class ModelsServiceImpl implements ModelsService { ModelsVo modelsVo = new ModelsVo(); BeanUtils.copyProperties(modelMetaVo, modelsVo); - List versionVos = new ArrayList(); + List versionVos = new ArrayList<>(); if (!fileDetailsAfterGitPull.isEmpty()) { for (Map fileDetail : fileDetailsAfterGitPull) { VersionVo versionVo = new VersionVo(); @@ -765,11 +774,12 @@ public class ModelsServiceImpl implements ModelsService { @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); + String ci4sUsername = loginUser.getUsername(); + Map userInfo = getUserInfo(ci4sUsername); + String token = (String) userInfo.get("token"); + + gitService.deleteProject(token, owner, identifier); - //删除模型依赖 modelDependency1Dao.deleteModel(repoId, identifier, owner, null); modelDependency1Dao.deleteModelDependency(repoId, identifier, owner, null); @@ -778,11 +788,11 @@ public class ModelsServiceImpl implements ModelsService { @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); + String ci4sUsername = loginUser.getUsername(); + Map userInfo = getUserInfo(ci4sUsername); + String token = (String) userInfo.get("token"); + gitService.deleteBranch(token, owner, identifier, version); //删除模型依赖 modelDependency1Dao.deleteModel(repoId, identifier, owner, version); modelDependency1Dao.deleteModelDependency(repoId, identifier, owner, version); @@ -902,6 +912,10 @@ public class ModelsServiceImpl implements ModelsService { Map getUserInfo(String ci4sUsername) throws IOException { Jedis jedis = new Jedis(redisHost); String userReq = jedis.get(ci4sUsername + "_gitUserInfo"); - return JsonUtils.jsonToMap(userReq); + Map userInfo = JsonUtils.jsonToMap(userReq); + + String token = gitService.checkoutToken(); + userInfo.put("token", token); + return userInfo; } }