| @@ -0,0 +1,27 @@ | |||||
| package com.ruoyi.platform.domain; | |||||
| import com.fasterxml.jackson.databind.PropertyNamingStrategy; | |||||
| import com.fasterxml.jackson.databind.annotation.JsonNaming; | |||||
| import lombok.Data; | |||||
| import java.io.Serializable; | |||||
| @JsonNaming(PropertyNamingStrategy.SnakeCaseStrategy.class) | |||||
| @Data | |||||
| public class ModelDependency1 implements Serializable { | |||||
| private Long id; | |||||
| private String parentModel; | |||||
| private String modelName; | |||||
| private String version; | |||||
| private Integer repoId; | |||||
| private String identifier; | |||||
| private String owner; | |||||
| private Integer state; | |||||
| } | |||||
| @@ -0,0 +1,21 @@ | |||||
| package com.ruoyi.platform.mapper; | |||||
| import com.ruoyi.platform.domain.ModelDependency1; | |||||
| import org.apache.ibatis.annotations.Param; | |||||
| import java.util.List; | |||||
| public interface ModelDependency1Dao { | |||||
| int insert(ModelDependency1 modelDependency1); | |||||
| List<ModelDependency1> queryByModelName(@Param("modelName") String modelName); | |||||
| ModelDependency1 queryByModelNameAndVersion(@Param("repoId") Integer repoId, @Param("modelName") String modelName, @Param("version") String version); | |||||
| List<ModelDependency1> 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); | |||||
| } | |||||
| @@ -11,17 +11,17 @@ public interface GitService { | |||||
| String login(String username, String password); | String login(String username, String password); | ||||
| //输入token,项目名,tag,创建新项目,返回项目地址 | //输入token,项目名,tag,创建新项目,返回项目地址 | ||||
| Map createProject(String token, GitProjectVo gitProjectVo) throws Exception; | |||||
| Map createProject(GitProjectVo gitProjectVo) throws Exception; | |||||
| void createBranch(String token,String owner, String projectName, String branchName, String oldBranchName) throws Exception; | |||||
| void createBranch(String owner, String projectName, String branchName, String oldBranchName) throws Exception; | |||||
| void createTopic(String token, Integer id, String topicName) throws Exception; | |||||
| void createTopic(Integer id, String topicName) throws Exception; | |||||
| List<Map<String, Object>> getBrancheList(String token, String owner, String projectName) throws Exception; | |||||
| List<Map<String, Object>> getBrancheList(String owner, String projectName) throws Exception; | |||||
| void deleteProject(String token, String owner, String projectName) throws Exception; | |||||
| void deleteProject(String owner, String projectName) throws Exception; | |||||
| void deleteBranch(String token, String owner,String projectName ,String branchName) throws Exception; | |||||
| void deleteBranch(String owner,String projectName ,String branchName) throws Exception; | |||||
| Map getUserInfo(String token) throws Exception; | |||||
| Map getUserInfo() throws Exception; | |||||
| } | } | ||||
| @@ -67,7 +67,7 @@ public class DatasetServiceImpl implements DatasetService { | |||||
| private String bucketName; | private String bucketName; | ||||
| @Resource | @Resource | ||||
| private MinioUtil minioUtil; | |||||
| private MinioUtil minioUtil; | |||||
| /** | /** | ||||
| * 通过ID查询单条数据 | * 通过ID查询单条数据 | ||||
| @@ -105,8 +105,8 @@ public class DatasetServiceImpl implements DatasetService { | |||||
| /** | /** | ||||
| * 分页查询 | * 分页查询 | ||||
| * | * | ||||
| * @param dataset 筛选条件 | |||||
| * @param pageRequest 分页对象 | |||||
| * @param dataset 筛选条件 | |||||
| * @param pageRequest 分页对象 | |||||
| * @return 查询结果 | * @return 查询结果 | ||||
| */ | */ | ||||
| @Override | @Override | ||||
| @@ -146,7 +146,7 @@ public class DatasetServiceImpl implements DatasetService { | |||||
| @Override | @Override | ||||
| public Dataset update(Dataset dataset) { | public Dataset update(Dataset dataset) { | ||||
| int currentState = dataset.getState(); | int currentState = dataset.getState(); | ||||
| if (currentState == 0){ | |||||
| if (currentState == 0) { | |||||
| throw new RuntimeException("数据集已被删除,无法更新。"); | throw new RuntimeException("数据集已被删除,无法更新。"); | ||||
| } | } | ||||
| LoginUser loginUser = SecurityUtils.getLoginUser(); | LoginUser loginUser = SecurityUtils.getLoginUser(); | ||||
| @@ -170,7 +170,7 @@ public class DatasetServiceImpl implements DatasetService { | |||||
| @Override | @Override | ||||
| public String removeById(Integer id) throws Exception { | public String removeById(Integer id) throws Exception { | ||||
| Dataset dataset = this.datasetDao.queryById(id); | Dataset dataset = this.datasetDao.queryById(id); | ||||
| if (dataset == null){ | |||||
| if (dataset == null) { | |||||
| throw new Exception("数据集不存在"); | throw new Exception("数据集不存在"); | ||||
| } | } | ||||
| @@ -178,7 +178,7 @@ public class DatasetServiceImpl implements DatasetService { | |||||
| LoginUser loginUser = SecurityUtils.getLoginUser(); | LoginUser loginUser = SecurityUtils.getLoginUser(); | ||||
| String username = loginUser.getUsername(); | String username = loginUser.getUsername(); | ||||
| String createdBy = dataset.getCreateBy(); | String createdBy = dataset.getCreateBy(); | ||||
| if (!(StringUtils.equals(username,"admin") || StringUtils.equals(username,createdBy))){ | |||||
| if (!(StringUtils.equals(username, "admin") || StringUtils.equals(username, createdBy))) { | |||||
| throw new Exception("无权限删除该数据集"); | throw new Exception("无权限删除该数据集"); | ||||
| } | } | ||||
| if (datasetVersionService.queryByDatasetId(id).size()>0){ | if (datasetVersionService.queryByDatasetId(id).size()>0){ | ||||
| @@ -432,4 +432,5 @@ public class DatasetServiceImpl implements DatasetService { | |||||
| } | } | ||||
| return results; | return results; | ||||
| } | } | ||||
| } | } | ||||
| @@ -39,7 +39,7 @@ public class GitServiceImpl implements GitService { | |||||
| params.put("client_secret", "L3wBKTNnRo-wPen7bxR3F1myCvtVDgpWa6MnpfyWeJE"); | params.put("client_secret", "L3wBKTNnRo-wPen7bxR3F1myCvtVDgpWa6MnpfyWeJE"); | ||||
| try { | try { | ||||
| // 发送POST请求 | // 发送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 | // 解析响应JSON | ||||
| if (StringUtils.isEmpty(req)) { | if (StringUtils.isEmpty(req)) { | ||||
| throw new RuntimeException("终止响应内容为空。"); | throw new RuntimeException("终止响应内容为空。"); | ||||
| @@ -51,7 +51,7 @@ public class GitServiceImpl implements GitService { | |||||
| String accessToken = (String) runResMap.get("access_token"); | String accessToken = (String) runResMap.get("access_token"); | ||||
| //通过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)) { | if (StringUtils.isEmpty(userReq)) { | ||||
| throw new RuntimeException("终止响应内容为空。"); | throw new RuntimeException("终止响应内容为空。"); | ||||
| } | } | ||||
| @@ -59,8 +59,8 @@ public class GitServiceImpl implements GitService { | |||||
| String ci4sUsername = loginUser.getUsername(); | String ci4sUsername = loginUser.getUsername(); | ||||
| // 将access_token存入Redis | // 将access_token存入Redis | ||||
| Jedis jedis = new Jedis(redisHost); | 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; | return accessToken; | ||||
| } catch (Exception e) { | } catch (Exception e) { | ||||
| log.error("登录GitLink失败。", e); | log.error("登录GitLink失败。", e); | ||||
| @@ -68,38 +68,68 @@ public class GitServiceImpl implements GitService { | |||||
| } | } | ||||
| } | } | ||||
| 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(); | |||||
| 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 | @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); | |||||
| public Map createProject(GitProjectVo gitProjectVo) throws Exception { | |||||
| String token = this.checkoutToken(); | |||||
| String userReq = HttpUtils.sendPostWithToken("https://www.gitlink.org.cn/api/projects.json", JsonUtils.objectToJson(gitProjectVo), token); | |||||
| return JsonUtils.jsonToMap(userReq); | return JsonUtils.jsonToMap(userReq); | ||||
| } | } | ||||
| @Override | @Override | ||||
| public void createBranch(String token,String owner, String projectName, String branchName, String oldBranchName) throws Exception { | |||||
| public void createBranch(String owner, String projectName, String branchName, String oldBranchName) throws Exception { | |||||
| //https://www.gitlink.org.cn/api/v1/fanshuai/testdssa8755/branches.json | //https://www.gitlink.org.cn/api/v1/fanshuai/testdssa8755/branches.json | ||||
| // { | // { | ||||
| // "new_branch_name": "SsS", | // "new_branch_name": "SsS", | ||||
| // "old_branch_name": "master" | // "old_branch_name": "master" | ||||
| // } | // } | ||||
| String createBranchUrl = "https://www.gitlink.org.cn/api/v1/"+ owner + "/" + projectName + "/branches.json"; | |||||
| String token = this.checkoutToken(); | |||||
| String createBranchUrl = "https://www.gitlink.org.cn/api/v1/" + owner + "/" + projectName + "/branches.json"; | |||||
| Map<String, Object> resMap = new HashMap<>(); | Map<String, Object> resMap = new HashMap<>(); | ||||
| resMap.put("new_branch_name", branchName); | resMap.put("new_branch_name", branchName); | ||||
| resMap.put("old_branch_name", oldBranchName); | 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 | @Override | ||||
| public void createTopic(String token, Integer id, String topicName) throws Exception { | |||||
| public void createTopic(Integer id, String topicName) throws Exception { | |||||
| // https://www.gitlink.org.cn/api/v1/project_topics.json | // https://www.gitlink.org.cn/api/v1/project_topics.json | ||||
| String token = this.checkoutToken(); | |||||
| Map<String, Object> resMap = new HashMap<>(); | Map<String, Object> resMap = new HashMap<>(); | ||||
| resMap.put("project_id", id); | resMap.put("project_id", id); | ||||
| resMap.put("name", topicName); | 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 | @Override | ||||
| public List<Map<String, Object>> 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<Map<String, Object>> 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 | // 解析响应JSON | ||||
| if (StringUtils.isEmpty(req)) { | if (StringUtils.isEmpty(req)) { | ||||
| throw new RuntimeException("终止响应内容为空。"); | throw new RuntimeException("终止响应内容为空。"); | ||||
| @@ -110,22 +140,25 @@ public class GitServiceImpl implements GitService { | |||||
| } | } | ||||
| @Override | @Override | ||||
| public void deleteProject(String token, String owner, String projectName) throws Exception { | |||||
| HttpUtils.sendDeleteRequest("https://www.gitlink.org.cn/api/"+owner+"/"+projectName+".json", token); | |||||
| public void deleteProject(String owner, String projectName) throws Exception { | |||||
| String token = this.checkoutToken(); | |||||
| HttpUtils.sendDeleteRequest("https://www.gitlink.org.cn/api/" + owner + "/" + projectName + ".json", token); | |||||
| } | } | ||||
| @Override | @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); | |||||
| public void deleteBranch(String owner, String projectName, String branchName) throws Exception { | |||||
| String token = this.checkoutToken(); | |||||
| HttpUtils.sendDeleteRequest("https://www.gitlink.org.cn/api/v1/" + owner + "/" + projectName + "/branches/" + branchName + ".json", token); | |||||
| } | } | ||||
| @Override | @Override | ||||
| public Map getUserInfo(String token) throws Exception { | |||||
| public Map getUserInfo() throws Exception { | |||||
| String token = this.checkoutToken(); | |||||
| 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); | ||||
| if (StringUtils.isEmpty(userReq)){ | if (StringUtils.isEmpty(userReq)){ | ||||
| return null; | return null; | ||||
| } | } | ||||
| Map<String, Object> runResMap = JsonUtils.jsonToMap(userReq); | Map<String, Object> runResMap = JsonUtils.jsonToMap(userReq); | ||||
| return runResMap; | |||||
| return runResMap; | |||||
| } | } | ||||
| } | } | ||||
| @@ -514,7 +514,6 @@ public class ModelsServiceImpl implements ModelsService { | |||||
| public CompletableFuture<String> newCreateModel(ModelsVo modelsVo) throws Exception { | public CompletableFuture<String> newCreateModel(ModelsVo modelsVo) throws Exception { | ||||
| return CompletableFuture.supplyAsync(() -> { | return CompletableFuture.supplyAsync(() -> { | ||||
| try { | try { | ||||
| String token = gitService.login(modelsVo.getGitLinkUsername(), modelsVo.getGitLinkPassword()); | |||||
| LoginUser loginUser = SecurityUtils.getLoginUser(); | LoginUser loginUser = SecurityUtils.getLoginUser(); | ||||
| String ci4sUsername = loginUser.getUsername(); | String ci4sUsername = loginUser.getUsername(); | ||||
| Jedis jedis = new Jedis(redisHost); | Jedis jedis = new Jedis(redisHost); | ||||
| @@ -532,15 +531,15 @@ public class ModelsServiceImpl implements ModelsService { | |||||
| gitProjectVo.setUserId(userId); | gitProjectVo.setUserId(userId); | ||||
| // 创建项目 | // 创建项目 | ||||
| Map project = gitService.createProject(token, gitProjectVo); | |||||
| Map project = gitService.createProject(gitProjectVo); | |||||
| // 创建分支 | // 创建分支 | ||||
| String branchName = modelsVo.getVersion(); | String branchName = modelsVo.getVersion(); | ||||
| gitService.createBranch(token, (String) userInfo.get("login"), repositoryName, branchName, "master"); | |||||
| gitService.createBranch((String) userInfo.get("login"), repositoryName, branchName, "master"); | |||||
| // 定义标签 标签1:ci4s_model 标签2:ModelTag 标签3:ModelType | // 定义标签 标签1:ci4s_model 标签2:ModelTag 标签3:ModelType | ||||
| gitService.createTopic(token, (Integer) project.get("id"), "ci4s_model"); | |||||
| gitService.createTopic(token, (Integer) project.get("id"), "ModelTag_" + modelsVo.getModelTag()); | |||||
| gitService.createTopic(token, (Integer) project.get("id"), "ModelType_" + modelsVo.getModelType()); | |||||
| gitService.createTopic((Integer) project.get("id"), "ci4s_model"); | |||||
| gitService.createTopic((Integer) project.get("id"), "ModelTag_" + modelsVo.getModelTag()); | |||||
| gitService.createTopic((Integer) project.get("id"), "ModelType_" + modelsVo.getModelType()); | |||||
| // 得到项目地址 | // 得到项目地址 | ||||
| String projectUrl = gitendpoint + "/" + (String) userInfo.get("login") + "/" + repositoryName + ".git"; | String projectUrl = gitendpoint + "/" + (String) userInfo.get("login") + "/" + repositoryName + ".git"; | ||||
| // 得到用户操作的路径 | // 得到用户操作的路径 | ||||
| @@ -592,7 +591,7 @@ public class ModelsServiceImpl implements ModelsService { | |||||
| // 创建分支 | // 创建分支 | ||||
| String branchName = modelsVo.getVersion(); | String branchName = modelsVo.getVersion(); | ||||
| String repositoryName = modelsVo.getRepositoryName(); | String repositoryName = modelsVo.getRepositoryName(); | ||||
| gitService.createBranch(token, (String) userInfo.get("login"), repositoryName, branchName, "master"); | |||||
| gitService.createBranch((String) userInfo.get("login"), repositoryName, branchName, "master"); | |||||
| // 得到项目地址 | // 得到项目地址 | ||||
| String projectUrl = gitendpoint + "/" + (String) userInfo.get("login") + "/" + repositoryName + ".git"; | String projectUrl = gitendpoint + "/" + (String) userInfo.get("login") + "/" + repositoryName + ".git"; | ||||
| // 得到用户操作的路径 | // 得到用户操作的路径 | ||||
| @@ -684,7 +683,7 @@ public class ModelsServiceImpl implements ModelsService { | |||||
| @Override | @Override | ||||
| public Page<ModelsVo> newPubilcQueryByPage(ModelsVo modelsVo, PageRequest pageRequest) throws Exception { | public Page<ModelsVo> newPubilcQueryByPage(ModelsVo modelsVo, PageRequest pageRequest) throws Exception { | ||||
| LoginUser loginUser = SecurityUtils.getLoginUser(); | |||||
| LoginUser loginUser = SecurityUtils.getLoginUser(); | |||||
| String ci4sUsername = loginUser.getUsername(); | String ci4sUsername = loginUser.getUsername(); | ||||
| String token = gitService.login(modelsVo.getGitLinkUsername(), modelsVo.getGitLinkPassword()); | String token = gitService.login(modelsVo.getGitLinkUsername(), modelsVo.getGitLinkPassword()); | ||||
| Jedis jedis = new Jedis(redisHost); | Jedis jedis = new Jedis(redisHost); | ||||
| @@ -62,11 +62,9 @@ public class NewDatasetServiceImpl implements NewDatasetService { | |||||
| @Override | @Override | ||||
| public String newCreateDataset(NewDatasetVo datasetVo) throws Exception { | public String newCreateDataset(NewDatasetVo datasetVo) throws Exception { | ||||
| checkoutToken(); | |||||
| Jedis jedis = new Jedis(redisHost); | Jedis jedis = new Jedis(redisHost); | ||||
| LoginUser loginUser = SecurityUtils.getLoginUser(); | LoginUser loginUser = SecurityUtils.getLoginUser(); | ||||
| String ci4sUsername = loginUser.getUsername(); | String ci4sUsername = loginUser.getUsername(); | ||||
| String token = jedis.get(ci4sUsername + "_gitToken"); | |||||
| String gitLinkUsername = loginUser.getSysUser().getGitLinkUsername(); | String gitLinkUsername = loginUser.getSysUser().getGitLinkUsername(); | ||||
| String gitLinkPassword = loginUser.getSysUser().getGitLinkPassword(); | String gitLinkPassword = loginUser.getSysUser().getGitLinkPassword(); | ||||
| String userReq = jedis.get(ci4sUsername + "_gitUserInfo"); | String userReq = jedis.get(ci4sUsername + "_gitUserInfo"); | ||||
| @@ -81,15 +79,15 @@ public class NewDatasetServiceImpl implements NewDatasetService { | |||||
| gitProjectVo.setPrivate(!datasetVo.getIsPublic()); | gitProjectVo.setPrivate(!datasetVo.getIsPublic()); | ||||
| gitProjectVo.setUserId(userId); | gitProjectVo.setUserId(userId); | ||||
| // 创建项目 | // 创建项目 | ||||
| Map project = gitService.createProject(token, gitProjectVo); | |||||
| Map project = gitService.createProject(gitProjectVo); | |||||
| Integer gitlinIid = (Integer) project.get("id"); | Integer gitlinIid = (Integer) project.get("id"); | ||||
| // 创建分支 | // 创建分支 | ||||
| String branchName = datasetVo.getVersion(); | String branchName = datasetVo.getVersion(); | ||||
| gitService.createBranch(token, (String) userInfo.get("login"), repositoryName, branchName, "master"); | |||||
| gitService.createBranch((String) userInfo.get("login"), repositoryName, branchName, "master"); | |||||
| // 定义标签 标签1:ci4s_dataset 标签2:DataTag 标签3:DataType | // 定义标签 标签1:ci4s_dataset 标签2:DataTag 标签3:DataType | ||||
| gitService.createTopic(token, gitlinIid, "ci4s_dataset"); | |||||
| gitService.createTopic(token, gitlinIid, "DataTag_" + datasetVo.getDataTag()); | |||||
| gitService.createTopic(token, gitlinIid, "DataType_" + datasetVo.getDataType()); | |||||
| gitService.createTopic(gitlinIid, "ci4s_dataset"); | |||||
| gitService.createTopic(gitlinIid, "DataTag_" + datasetVo.getDataTag()); | |||||
| gitService.createTopic( gitlinIid, "DataType_" + datasetVo.getDataType()); | |||||
| // 得到项目地址 | // 得到项目地址 | ||||
| String projectUrl = gitendpoint + "/" + (String) userInfo.get("login") + "/"+ repositoryName + ".git"; | String projectUrl = gitendpoint + "/" + (String) userInfo.get("login") + "/"+ repositoryName + ".git"; | ||||
| @@ -139,7 +137,6 @@ public class NewDatasetServiceImpl implements NewDatasetService { | |||||
| public CompletableFuture<String> newCreateVersion(NewDatasetVo datasetVo) { | public CompletableFuture<String> newCreateVersion(NewDatasetVo datasetVo) { | ||||
| return CompletableFuture.supplyAsync(() -> { | return CompletableFuture.supplyAsync(() -> { | ||||
| try { | try { | ||||
| checkoutToken(); | |||||
| Jedis jedis = new Jedis(redisHost); | Jedis jedis = new Jedis(redisHost); | ||||
| LoginUser loginUser = SecurityUtils.getLoginUser(); | LoginUser loginUser = SecurityUtils.getLoginUser(); | ||||
| String ci4sUsername = loginUser.getUsername(); | String ci4sUsername = loginUser.getUsername(); | ||||
| @@ -152,7 +149,7 @@ public class NewDatasetServiceImpl implements NewDatasetService { | |||||
| String branchName = StringUtils.isEmpty(datasetVo.getVersion()) ? "master" : datasetVo.getVersion(); | String branchName = StringUtils.isEmpty(datasetVo.getVersion()) ? "master" : datasetVo.getVersion(); | ||||
| String repositoryName = datasetVo.getIdentifier(); | String repositoryName = datasetVo.getIdentifier(); | ||||
| if (StringUtils.equals(branchName, "master")) { | if (StringUtils.equals(branchName, "master")) { | ||||
| gitService.createBranch(token, (String) userInfo.get("login"), repositoryName, branchName, "master"); | |||||
| gitService.createBranch((String) userInfo.get("login"), repositoryName, branchName, "master"); | |||||
| } | } | ||||
| // 得到项目地址 | // 得到项目地址 | ||||
| String projectUrl = gitendpoint + "/" + (String) userInfo.get("login") + "/" + repositoryName + ".git"; | String projectUrl = gitendpoint + "/" + (String) userInfo.get("login") + "/" + repositoryName + ".git"; | ||||
| @@ -211,7 +208,6 @@ public class NewDatasetServiceImpl implements NewDatasetService { | |||||
| @Override | @Override | ||||
| public Page<NewDatasetVo> newPersonalQueryByPage(Dataset dataset, PageRequest pageRequest) throws Exception { | public Page<NewDatasetVo> newPersonalQueryByPage(Dataset dataset, PageRequest pageRequest) throws Exception { | ||||
| checkoutToken(); | |||||
| Jedis jedis = new Jedis(redisHost); | Jedis jedis = new Jedis(redisHost); | ||||
| LoginUser loginUser = SecurityUtils.getLoginUser(); | LoginUser loginUser = SecurityUtils.getLoginUser(); | ||||
| String ci4sUsername = loginUser.getUsername(); | String ci4sUsername = loginUser.getUsername(); | ||||
| @@ -234,7 +230,6 @@ public class NewDatasetServiceImpl implements NewDatasetService { | |||||
| @Override | @Override | ||||
| public Page<NewDatasetVo> newPubilcQueryByPage(Dataset dataset, PageRequest pageRequest) throws Exception { | public Page<NewDatasetVo> newPubilcQueryByPage(Dataset dataset, PageRequest pageRequest) throws Exception { | ||||
| checkoutToken(); | |||||
| Jedis jedis = new Jedis(redisHost); | Jedis jedis = new Jedis(redisHost); | ||||
| LoginUser loginUser = SecurityUtils.getLoginUser(); | LoginUser loginUser = SecurityUtils.getLoginUser(); | ||||
| String ci4sUsername = loginUser.getUsername(); | String ci4sUsername = loginUser.getUsername(); | ||||
| @@ -274,7 +269,7 @@ public class NewDatasetServiceImpl implements NewDatasetService { | |||||
| version = (String) versionList.get(0).get("name"); | version = (String) versionList.get(0).get("name"); | ||||
| } | } | ||||
| List<Map<String, Object>> fileDetailsAfterGitPull = DVCUtils.getFileDetailsAfterGitPull("E:\\test\\" +id, repositoryName, version, gitLinkUsername, gitLinkPassword); | |||||
| List<Map<String, Object>> fileDetailsAfterGitPull = DVCUtils.getFileDetailsAfterGitPull("E:\\test\\" +id, repositoryName, version, "data",gitLinkUsername, gitLinkPassword); | |||||
| // 在localPathlocal+id+"/"+repositoryName目录下的dataset.yaml中取到元数据 | // 在localPathlocal+id+"/"+repositoryName目录下的dataset.yaml中取到元数据 | ||||
| Map<String, Object> stringObjectMap = YamlUtils.loadYamlFile("E:\\test\\" + id + "\\" + repositoryName + "\\" + "dataset.yaml"); | Map<String, Object> stringObjectMap = YamlUtils.loadYamlFile("E:\\test\\" + id + "\\" + repositoryName + "\\" + "dataset.yaml"); | ||||
| NewDatasetVo newDatasetVo = ConvertUtil.convertMapToObject(stringObjectMap, NewDatasetVo.class); | NewDatasetVo newDatasetVo = ConvertUtil.convertMapToObject(stringObjectMap, NewDatasetVo.class); | ||||
| @@ -295,12 +290,11 @@ public class NewDatasetServiceImpl implements NewDatasetService { | |||||
| @Override | @Override | ||||
| public List<Map<String, Object>> getVersionList(String repo, String owner) throws Exception { | public List<Map<String, Object>> getVersionList(String repo, String owner) throws Exception { | ||||
| checkoutToken(); | |||||
| Jedis jedis = new Jedis(redisHost); | Jedis jedis = new Jedis(redisHost); | ||||
| LoginUser loginUser = SecurityUtils.getLoginUser(); | LoginUser loginUser = SecurityUtils.getLoginUser(); | ||||
| String ci4sUsername = loginUser.getUsername(); | String ci4sUsername = loginUser.getUsername(); | ||||
| String token = jedis.get(ci4sUsername+"_gitToken"); | String token = jedis.get(ci4sUsername+"_gitToken"); | ||||
| List<Map<String, Object>> brancheList = gitService.getBrancheList(token, owner, repo); | |||||
| List<Map<String, Object>> brancheList = gitService.getBrancheList(owner, repo); | |||||
| return brancheList.stream() | return brancheList.stream() | ||||
| .filter(branch -> !"master".equals(branch.get("name"))) | .filter(branch -> !"master".equals(branch.get("name"))) | ||||
| .collect(Collectors.toList()); | .collect(Collectors.toList()); | ||||
| @@ -308,22 +302,20 @@ public class NewDatasetServiceImpl implements NewDatasetService { | |||||
| @Override | @Override | ||||
| public void deleteDatasetNew(String repo, String owner) throws Exception { | public void deleteDatasetNew(String repo, String owner) throws Exception { | ||||
| checkoutToken(); | |||||
| Jedis jedis = new Jedis(redisHost); | Jedis jedis = new Jedis(redisHost); | ||||
| LoginUser loginUser = SecurityUtils.getLoginUser(); | LoginUser loginUser = SecurityUtils.getLoginUser(); | ||||
| String ci4sUsername = loginUser.getUsername(); | String ci4sUsername = loginUser.getUsername(); | ||||
| String token = jedis.get(ci4sUsername+"_gitToken"); | String token = jedis.get(ci4sUsername+"_gitToken"); | ||||
| gitService.deleteProject(token, owner, repo); | |||||
| gitService.deleteProject(owner, repo); | |||||
| } | } | ||||
| @Override | @Override | ||||
| public void deleteDatasetVersionNew(String repo, String owner, String version) throws Exception { | public void deleteDatasetVersionNew(String repo, String owner, String version) throws Exception { | ||||
| checkoutToken(); | |||||
| Jedis jedis = new Jedis(redisHost); | Jedis jedis = new Jedis(redisHost); | ||||
| LoginUser loginUser = SecurityUtils.getLoginUser(); | LoginUser loginUser = SecurityUtils.getLoginUser(); | ||||
| String ci4sUsername = loginUser.getUsername(); | String ci4sUsername = loginUser.getUsername(); | ||||
| String token = jedis.get(ci4sUsername+"_gitToken"); | String token = jedis.get(ci4sUsername+"_gitToken"); | ||||
| gitService.deleteBranch(token, owner, repo, version); | |||||
| gitService.deleteBranch(owner, repo, version); | |||||
| } | } | ||||
| @Override | @Override | ||||
| @@ -378,7 +370,6 @@ public class NewDatasetServiceImpl implements NewDatasetService { | |||||
| @Override | @Override | ||||
| public ResponseEntity<InputStreamResource> downloadAllDatasetFilesNew(String repositoryName, String version) throws Exception { | public ResponseEntity<InputStreamResource> downloadAllDatasetFilesNew(String repositoryName, String version) throws Exception { | ||||
| // 命令行操作 git clone 项目地址 | // 命令行操作 git clone 项目地址 | ||||
| checkoutToken(); | |||||
| LoginUser loginUser = SecurityUtils.getLoginUser(); | LoginUser loginUser = SecurityUtils.getLoginUser(); | ||||
| String gitLinkUsername = loginUser.getSysUser().getGitLinkUsername(); | String gitLinkUsername = loginUser.getSysUser().getGitLinkUsername(); | ||||
| String gitLinkPassword = loginUser.getSysUser().getGitLinkPassword(); | String gitLinkPassword = loginUser.getSysUser().getGitLinkPassword(); | ||||
| @@ -471,31 +462,5 @@ public class NewDatasetServiceImpl implements NewDatasetService { | |||||
| return new ArrayList<>(); | 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; | |||||
| } | |||||
| } | } | ||||
| @@ -1,10 +1,11 @@ | |||||
| package com.ruoyi.platform.utils; | package com.ruoyi.platform.utils; | ||||
| import org.apache.commons.beanutils.PropertyUtils; | |||||
| import org.slf4j.Logger; | import org.slf4j.Logger; | ||||
| import org.slf4j.LoggerFactory; | import org.slf4j.LoggerFactory; | ||||
| import org.springframework.beans.BeanUtils; | import org.springframework.beans.BeanUtils; | ||||
| import org.apache.commons.beanutils.PropertyUtils; | |||||
| import java.lang.reflect.Field; | import java.lang.reflect.Field; | ||||
| import java.lang.reflect.InvocationTargetException; | import java.lang.reflect.InvocationTargetException; | ||||
| import java.util.ArrayList; | import java.util.ArrayList; | ||||
| @@ -23,7 +24,7 @@ public class ConvertUtil { | |||||
| public static final Logger logger = LoggerFactory.getLogger(ConvertUtil.class); | public static final Logger logger = LoggerFactory.getLogger(ConvertUtil.class); | ||||
| /** | |||||
| /** | |||||
| * 将实体对象转换为VO对象 | * 将实体对象转换为VO对象 | ||||
| * @param source 源实体对象 | * @param source 源实体对象 | ||||
| * @param target 目标VO对象的类 | * @param target 目标VO对象的类 | ||||
| @@ -90,7 +91,8 @@ public class ConvertUtil { | |||||
| } | } | ||||
| } | } | ||||
| return targetObject; | return targetObject; | ||||
| } catch (InstantiationException | IllegalAccessException | InvocationTargetException | NoSuchMethodException e) { | |||||
| } catch (InstantiationException | IllegalAccessException | InvocationTargetException | | |||||
| NoSuchMethodException e) { | |||||
| e.printStackTrace(); | e.printStackTrace(); | ||||
| } | } | ||||
| return null; | return null; | ||||
| @@ -98,8 +100,13 @@ public class ConvertUtil { | |||||
| private static boolean hasProperty(Class<?> clazz, String propertyName) { | private static boolean hasProperty(Class<?> clazz, String propertyName) { | ||||
| try { | try { | ||||
| Field field = clazz.getDeclaredField(propertyName); | |||||
| return field != null; | |||||
| Class<?> superClazz = clazz.getSuperclass(); | |||||
| if(superClazz != Object.class){ | |||||
| return hasProperty(superClazz, propertyName); | |||||
| } else { | |||||
| Field field = clazz.getDeclaredField(propertyName); | |||||
| return field != null; | |||||
| } | |||||
| } catch (NoSuchFieldException e) { | } catch (NoSuchFieldException e) { | ||||
| return false; | return false; | ||||
| } | } | ||||
| @@ -193,12 +193,12 @@ public class DVCUtils { | |||||
| * @param branch 分支名称 | * @param branch 分支名称 | ||||
| * @return 包含文件路径、名称和大小的List<Map<String, Object>> | * @return 包含文件路径、名称和大小的List<Map<String, Object>> | ||||
| */ | */ | ||||
| public static List<Map<String, Object>> getFileDetailsAfterGitPull(String localPath, String repoFolder, String branch,String username, String password) { | |||||
| public static List<Map<String, Object>> getFileDetailsAfterGitPull(String localPath, String repoFolder, String branch, String filePath , String username, String password) { | |||||
| List<Map<String, Object>> fileInfoList = new ArrayList<>(); | List<Map<String, Object>> fileInfoList = new ArrayList<>(); | ||||
| try { | try { | ||||
| // 切换到指定目录 | // 切换到指定目录 | ||||
| Path repoPath = Paths.get(localPath, repoFolder); | |||||
| Path repoPath = Paths.get(localPath, repoFolder, branch); | |||||
| //刷新 | //刷新 | ||||
| // gitFetch(localPath, username, password); | // gitFetch(localPath, username, password); | ||||
| @@ -207,19 +207,19 @@ public class DVCUtils { | |||||
| // // 执行git pull | // // 执行git pull | ||||
| // gitPull(localPath, username, password); | // gitPull(localPath, username, password); | ||||
| // 读取data文件夹中的文件列表 | // 读取data文件夹中的文件列表 | ||||
| Path dataPath = Paths.get(repoPath.toString(), "data"); | |||||
| Path dataPath = Paths.get(repoPath.toString(), filePath); | |||||
| File[] files = dataPath.toFile().listFiles(); | File[] files = dataPath.toFile().listFiles(); | ||||
| if (files != null) { | if (files != null) { | ||||
| for (File file : files) { | for (File file : files) { | ||||
| if (file.isFile()) { | if (file.isFile()) { | ||||
| long size = Files.size(file.toPath()); | long size = Files.size(file.toPath()); | ||||
| String filePath = file.getAbsolutePath(); | |||||
| String absoluteFilePath = file.getAbsolutePath(); | |||||
| String fileName = file.getName(); | String fileName = file.getName(); | ||||
| Map<String, Object> fileDetails = new HashMap<>(); | Map<String, Object> fileDetails = new HashMap<>(); | ||||
| fileDetails.put("size", size); | fileDetails.put("size", size); | ||||
| fileDetails.put("filePath", filePath); | |||||
| fileDetails.put("filePath", absoluteFilePath); | |||||
| fileDetails.put("fileName", fileName); | fileDetails.put("fileName", fileName); | ||||
| fileInfoList.add(fileDetails); | fileInfoList.add(fileDetails); | ||||
| @@ -0,0 +1,18 @@ | |||||
| package com.ruoyi.platform.vo; | |||||
| import com.fasterxml.jackson.databind.PropertyNamingStrategy; | |||||
| import com.fasterxml.jackson.databind.annotation.JsonNaming; | |||||
| import com.ruoyi.platform.domain.ModelDependency1; | |||||
| import lombok.Data; | |||||
| import java.io.Serializable; | |||||
| import java.util.List; | |||||
| @Data | |||||
| @JsonNaming(PropertyNamingStrategy.SnakeCaseStrategy.class) | |||||
| public class ModelDependency1TreeVo extends ModelDependency1 implements Serializable { | |||||
| List<ModelDependency1> patrentModelList; | |||||
| List<ModelDependency1TreeVo> childModelList; | |||||
| } | |||||
| @@ -0,0 +1,67 @@ | |||||
| package com.ruoyi.platform.vo; | |||||
| import com.fasterxml.jackson.databind.PropertyNamingStrategy; | |||||
| import com.fasterxml.jackson.databind.annotation.JsonNaming; | |||||
| import io.swagger.annotations.ApiModelProperty; | |||||
| import lombok.Data; | |||||
| import java.io.Serializable; | |||||
| import java.util.Date; | |||||
| import java.util.HashMap; | |||||
| import java.util.List; | |||||
| @Data | |||||
| @JsonNaming(PropertyNamingStrategy.SnakeCaseStrategy.class) | |||||
| public class ModelMetaVo implements Serializable { | |||||
| @ApiModelProperty(name = "模型名称") | |||||
| private String name; | |||||
| @ApiModelProperty(name = "版本") | |||||
| private String version; | |||||
| @ApiModelProperty(name = "版本描述") | |||||
| private String versionDescription; | |||||
| @ApiModelProperty(value = "创建人") | |||||
| private String createBy; | |||||
| @ApiModelProperty(value = "更新时间") | |||||
| private Date updateTime; | |||||
| @ApiModelProperty(value = "训练镜像") | |||||
| private String image; | |||||
| @ApiModelProperty(value = "训练代码") | |||||
| private String code; | |||||
| @ApiModelProperty(value = "模型来源") | |||||
| private String modelSource; | |||||
| @ApiModelProperty(value = "训练数据集") | |||||
| private List<String> trainDatasets; | |||||
| @ApiModelProperty(value = "测试数据集") | |||||
| private List<String> testDatasets; | |||||
| @ApiModelProperty(value = "参数") | |||||
| private HashMap<String, String> params; | |||||
| @ApiModelProperty(value = "指标") | |||||
| private HashMap<String, String> metrics; | |||||
| @ApiModelProperty(value = "训练任务") | |||||
| private String trainTask; | |||||
| @ApiModelProperty(value = "模型标签(模型能力)") | |||||
| private String modelTag; | |||||
| @ApiModelProperty(value = "模型类型(模型框架)") | |||||
| private String modelType; | |||||
| @ApiModelProperty(value = "模型描述") | |||||
| private String description; | |||||
| @ApiModelProperty(value = "示例用法") | |||||
| private String examples; | |||||
| } | |||||
| @@ -0,0 +1,52 @@ | |||||
| <?xml version="1.0" encoding="UTF-8"?> | |||||
| <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> | |||||
| <mapper namespace="com.ruoyi.platform.mapper.ModelDependency1Dao"> | |||||
| <insert id="insert" keyProperty="id" useGeneratedKeys="true"> | |||||
| insert into model_dependency1(parent_model, model_name, version, repo_id, identifier, owner) | |||||
| values (#{parentModel}, #{modelName}, #{version}, #{repoId}, #{identifier}, #{owner}) | |||||
| </insert> | |||||
| <select id="queryByModelName" resultType="com.ruoyi.platform.domain.ModelDependency1"> | |||||
| select * | |||||
| from model_dependency1 | |||||
| where model_name = #{modelName} | |||||
| and state = 1 | |||||
| </select> | |||||
| <select id="queryByModelNameAndVersion" resultType="com.ruoyi.platform.domain.ModelDependency1"> | |||||
| select * | |||||
| from model_dependency1 | |||||
| where repo_id = #{repoId} | |||||
| and model_name = #{modelName} | |||||
| and version = #{version} | |||||
| and state = 1 | |||||
| </select> | |||||
| <select id="queryByParentModel" resultType="com.ruoyi.platform.domain.ModelDependency1"> | |||||
| select * | |||||
| from model_dependency1 | |||||
| where parent_model = #{parentModel} | |||||
| and state = 1 | |||||
| </select> | |||||
| <update id="deleteModel"> | |||||
| update model_dependency1 | |||||
| set state = 0 | |||||
| where repo_id = #{repoId} and identifier = #{identifier} and owner = #{owner} | |||||
| <if test="version != null and version != ''"> | |||||
| and version = #{version} | |||||
| </if> | |||||
| </update> | |||||
| <update id="deleteModelDependency"> | |||||
| update model_dependency1 | |||||
| set parent_model = null | |||||
| where parent_model like concat(#{repoId}, ':', #{identifier}, | |||||
| <if test="version != null and version != ''"> | |||||
| ':', #{version}, | |||||
| </if> | |||||
| '%') | |||||
| </update> | |||||
| </mapper> | |||||
| @@ -19,7 +19,7 @@ | |||||
| <!--查询单个--> | <!--查询单个--> | ||||
| <select id="queryById" resultMap="ModelsMap"> | <select id="queryById" resultMap="ModelsMap"> | ||||
| select | select | ||||
| id, name, description,available_range, model_type,model_tag, create_by, create_time, update_by, update_time, state | |||||
| id, name, description,available_range, model_type,model_tag, create_by, create_time, update_by, update_time, state | |||||
| from models | from models | ||||
| where id = #{id} and state = 1 | where id = #{id} and state = 1 | ||||
| </select> | </select> | ||||
| @@ -27,7 +27,7 @@ | |||||
| <!--查询单个--> | <!--查询单个--> | ||||
| <select id="findByName" resultMap="ModelsMap"> | <select id="findByName" resultMap="ModelsMap"> | ||||
| select | select | ||||
| id, name, description,available_range, model_type,model_tag, create_by, create_time, update_by, update_time, state | |||||
| id, name, description,available_range, model_type,model_tag, create_by, create_time, update_by, update_time, state | |||||
| from models | from models | ||||
| where name = #{name} and state = 1 limit 1 | where name = #{name} and state = 1 limit 1 | ||||