Browse Source

add gitlab support

Bay 5 years ago
parent
commit
40fba62a0d

+ 10 - 1
pom.xml

@@ -54,7 +54,16 @@
             <version>5.7.0</version>
             <scope>test</scope>
         </dependency>
-
+        <dependency>
+            <groupId>com.nju.edu</groupId>
+            <artifactId>seecoder-gitlab-client</artifactId>
+            <version>0.1.0</version>
+        </dependency>
+        <dependency>
+            <groupId>com.nju.edu</groupId>
+            <artifactId>seecoder-gitlab-common</artifactId>
+            <version>0.1.0</version>
+        </dependency>
     </dependencies>
 
     <dependencyManagement>

+ 13 - 77
seecoder-portal-server/src/main/java/cn/seecoder/seecoderportalserver/service/GitlabService.java

@@ -1,89 +1,25 @@
 package cn.seecoder.seecoderportalserver.service;
 
+import com.nju.edu.gitlab.SeecoderGitlabClient;
+import com.nju.edu.gitlab.SeecoderGitlabException;
+import com.nju.edu.gitlab.vo.GitlabUserVO;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Service;
+import org.springframework.web.client.RestTemplate;
+
 /**
  * @author kunduin
  */
+@Service
 public class GitlabService {
 
-//    public GitlabService.Response createUser(String userId, String username, String password, String email) {
-//
-//    }
-
-    public static class User {
-        private String userId;
-        private String username;
-        private String password;
-        private String email;
-
-        public String getUserId() {
-            return userId;
-        }
-
-        public void setUserId(String userId) {
-            this.userId = userId;
-        }
-
-        public String getUsername() {
-            return username;
-        }
-
-        public void setUsername(String username) {
-            this.username = username;
-        }
-
-        public String getPassword() {
-            return password;
-        }
-
-        public void setPassword(String password) {
-            this.password = password;
-        }
+    private final SeecoderGitlabClient client;
 
-        public String getEmail() {
-            return email;
-        }
-
-        public void setEmail(String email) {
-            this.email = email;
-        }
-
-        @Override
-        public String toString() {
-            return "User{" +
-                    "userId='" + userId + '\'' +
-                    ", username='" + username + '\'' +
-                    ", password='" + password + '\'' +
-                    ", email='" + email + '\'' +
-                    '}';
-        }
+    public GitlabService(@Value("${seec.gitlab.url}") String url) {
+        this.client = new SeecoderGitlabClient(url, "");
     }
 
-    public static class Response{
-        private int err;
-        private Object res;
-
-        public int getErr() {
-            return err;
-        }
-
-        public void setErr(int err) {
-            this.err = err;
-        }
-
-        public Object getRes() {
-            return res;
-        }
-
-        public void setRes(Object res) {
-            this.res = res;
-        }
-
-        @Override
-        public String toString() {
-            return "Response{" +
-                    "err=" + err +
-                    ", res=" + res +
-                    '}';
-        }
+    public GitlabUserVO createGitlabUser(int userId, String username, String password, String email) throws SeecoderGitlabException {
+        return client.createGitlabUser(userId, username, password, email);
     }
 }

+ 13 - 1
seecoder-portal-server/src/main/java/cn/seecoder/seecoderportalserver/service/UserService.java

@@ -6,6 +6,7 @@ import cn.seecoder.seecoderportalserver.domain.User;
 import cn.seecoder.seecoderportalserver.mapper.UserMapper;
 import cn.seecoder.seecoderportalserver.repository.UserRepository;
 import cn.seecoder.seecoderportalserver.web.rest.errors.CustomErrorException;
+import com.nju.edu.gitlab.SeecoderGitlabException;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.security.core.userdetails.UsernameNotFoundException;
@@ -27,14 +28,16 @@ public class UserService {
     private final PasswordEncoder passwordEncoder;
     private final UserMapper userMapper;
     private final AliService aliService;
+    private final GitlabService gitlabService;
 
     public UserService(
             UserRepository userRepository, PasswordEncoder passwordEncoder,
-            UserMapper userMapper, AliService aliService) {
+            UserMapper userMapper, AliService aliService, GitlabService gitlabService) {
         this.userRepository = userRepository;
         this.passwordEncoder = passwordEncoder;
         this.userMapper = userMapper;
         this.aliService = aliService;
+        this.gitlabService = gitlabService;
     }
 
     public List<User> findUserByRole(UserRole role) {
@@ -86,10 +89,19 @@ public class UserService {
                 .ifPresent(user -> {
                     throw CustomErrorException.phoneAlreadyExist();
                 });
+
         User user = userMapper.userVOToUser(userVO);
         String encodedPassword = passwordEncoder.encode(password);
         user.setPassword(encodedPassword);
         User savedUser = userRepository.save(user);
+
+        try {
+            gitlabService.createGitlabUser(Math.toIntExact(savedUser.getId()), savedUser.getUsername(), password, savedUser.getEmail());
+        } catch (SeecoderGitlabException e) {
+            userRepository.delete(savedUser);
+            throw new CustomErrorException("gitlab 创建异常");
+        }
+
         log.debug("Created Information for User: {}", savedUser);
         return savedUser;
     }

+ 1 - 1
seecoder-portal-server/src/main/resources/application.yml

@@ -2,7 +2,7 @@
 seec:
   secret: UenM4KGb6DskRWUenM4KGb6DskRWUenM4KGb6DskRWUenM4KGb6DskRWUenM4KGb6DskRWUenM4KGb6DskRWUenM4KGb6DskRWUenM4KGb6DskRWUenM4KGb6DskRW
   gitlab:
-    path: seecoder-gitlab-server.seec.seecoder.cn
+    url: http://seecoder-gitlab-server.seec.seecoder.cn
 
 
 aliyun: