1
0
Azure 2 лет назад
Родитель
Сommit
130f4a11e3

+ 2 - 2
pom.xml

@@ -11,7 +11,7 @@
 
     <groupId>com.nju.edu</groupId>
     <artifactId>seecoder-gitlab</artifactId>
-    <version>0.1.5</version>
+    <version>0.1.6</version>
     <packaging>pom</packaging>
     <description>Gitlab API project</description>
     <modules>
@@ -22,7 +22,7 @@
 
     <properties>
         <java.version>1.8</java.version>
-        <seecoder-gitlab-version>0.1.3</seecoder-gitlab-version>
+        <seecoder-gitlab-version>0.1.6</seecoder-gitlab-version>
     </properties>
 
     <dependencyManagement>

+ 2 - 2
seecoder-gitlab-client/pom.xml

@@ -5,14 +5,14 @@
     <parent>
         <artifactId>seecoder-gitlab</artifactId>
         <groupId>com.nju.edu</groupId>
-        <version>0.1.5</version>
+        <version>0.1.6</version>
     </parent>
     <modelVersion>4.0.0</modelVersion>
 
     <artifactId>seecoder-gitlab-client</artifactId>
 
     <properties>
-        <seecoder-gitlab-version>0.1.5</seecoder-gitlab-version>
+        <seecoder-gitlab-version>0.1.6</seecoder-gitlab-version>
     </properties>
 
     <dependencies>

+ 1 - 1
seecoder-gitlab-client/src/main/java/com.nju.edu.gitlab/SeecoderGitlabApi.java

@@ -40,7 +40,7 @@ public interface SeecoderGitlabApi{
 
     public boolean deleteProject(int projectId) throws SeecoderGitlabException;
 
-    public Integer forkProject(int projectId, int userId) throws SeecoderGitlabException;
+    public Integer forkProject(int projectId, int userId,String username,String examUuid) throws SeecoderGitlabException;
 
     public Integer forkGroupProject(int projectId,int groupId) throws SeecoderGitlabException;
 

+ 3 - 1
seecoder-gitlab-client/src/main/java/com.nju.edu.gitlab/SeecoderGitlabClient.java

@@ -423,7 +423,7 @@ public class SeecoderGitlabClient implements SeecoderGitlabApi {
 
 
     @Override
-    public Integer forkProject(int projectId, int userId) throws SeecoderGitlabException {
+    public Integer forkProject(int projectId, int userId, String username,String examUuid) throws SeecoderGitlabException {
         try {
             ObjectMapper objectMapper = new ObjectMapper();
             Request.Builder builder = new Request.Builder()
@@ -431,6 +431,8 @@ public class SeecoderGitlabClient implements SeecoderGitlabApi {
             UserForkDTO userForkDTO = UserForkDTO.builder()
                     .projectId(projectId)
                     .userId(userId)
+                    .username(username)
+                    .examUuid(examUuid)
                     .build();
             builder = builder
                     .url(host + "/api/project/userFork")

+ 1 - 1
seecoder-gitlab-common/pom.xml

@@ -5,7 +5,7 @@
     <parent>
         <artifactId>seecoder-gitlab</artifactId>
         <groupId>com.nju.edu</groupId>
-        <version>0.1.5</version>
+        <version>0.1.6</version>
         <relativePath>../pom.xml</relativePath>
     </parent>
     <modelVersion>4.0.0</modelVersion>

+ 2 - 0
seecoder-gitlab-common/src/main/java/com/nju/edu/gitlab/dto/UserForkDTO.java

@@ -13,4 +13,6 @@ public class UserForkDTO {
 
     private int userId;
     private int projectId;
+    private String username;
+    private String examUuid;
 }

+ 2 - 2
seecoder-gitlab-server/pom.xml

@@ -5,7 +5,7 @@
     <parent>
         <artifactId>seecoder-gitlab</artifactId>
         <groupId>com.nju.edu</groupId>
-        <version>0.1.5</version>
+        <version>0.1.6</version>
         <relativePath>../pom.xml</relativePath>
     </parent>
     <modelVersion>4.0.0</modelVersion>
@@ -81,7 +81,7 @@
         <dependency>
             <groupId>com.nju.edu</groupId>
             <artifactId>seecoder-gitlab-common</artifactId>
-            <version>0.1.3</version>
+            <version>0.1.6</version>
         </dependency>
     </dependencies>
 

+ 6 - 7
seecoder-gitlab-server/src/main/java/com/nju/edu/gitlab/service/impl/ProjectServiceImpl.java

@@ -96,17 +96,19 @@ public class ProjectServiceImpl implements ProjectService {
     public Integer forkProject(UserForkDTO userForkDTO) throws GitLabApiException {
         int userId=userForkDTO.getUserId();
         int projectId=userForkDTO.getProjectId();
+        String username=userForkDTO.getUsername();
+        String examUuid=userForkDTO.getExamUuid();
         GitlabUser gitlabUser = getGitlabUser(userId);
         Integer namespaceId=gitlabUser.getNamespaceId();
         Project project;
         log.info("trying to fork project {} to user {} (whose gitlab id is {})", projectId, userId, gitlabUser.getGitlabUserId());
-        Integer existProjectId=searchForkedProject(namespaceId, projectId);
+        Integer existProjectId=searchForkedProject(username, examUuid);
         if(existProjectId!=-1)
             return existProjectId;
 
         try{
             gitlabApi.setSudoAsId((long) gitlabUser.getGitlabUserId());
-            project=gitlabApi.getProjectApi().forkProject(new Long(projectId), String.valueOf(namespaceId));
+            project=gitlabApi.getProjectApi().forkProject(new Long(projectId), new Long(namespaceId));
             project.setVisibility(Visibility.PRIVATE);
             project=gitlabApi.getProjectApi().updateProject(project);
         }finally {
@@ -115,12 +117,9 @@ public class ProjectServiceImpl implements ProjectService {
         return Math.toIntExact(project != null ? project.getId() : null);
     }
 
-    public Integer searchForkedProject(int namespaceId, int projectId) throws GitLabApiException {
+    public Integer searchForkedProject(String username, String examUuid) throws GitLabApiException {
         try {
-            log.info("searching forked project");
-            Project forkedProject = gitlabApi.getProjectApi().getProject(new Long(projectId));
-            log.info("searched project to be forked, name={}",forkedProject.getName());
-            Project project=gitlabApi.getProjectApi().getProject(String.valueOf(namespaceId),forkedProject.getName());
+            Project project=gitlabApi.getProjectApi().getProject(username,examUuid);
             log.info("project had forked before, name={}",project.getName());
             return Math.toIntExact(project.getId());
         } catch (GitLabApiException e){