|
@@ -1,29 +1,25 @@
|
|
|
package seecoder.devcloud.web.service.impl.user;
|
|
package seecoder.devcloud.web.service.impl.user;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
+import com.nju.edu.gitlab.SeecoderGitlabApi;
|
|
|
|
|
+import com.nju.edu.gitlab.SeecoderGitlabException;
|
|
|
|
|
+import com.nju.edu.gitlab.dto.member.AccessLevelForm;
|
|
|
|
|
+import com.nju.edu.gitlab.vo.GitlabGroup;
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
-import org.gitlab4j.api.GitLabApiException;
|
|
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
-import org.springframework.security.core.context.SecurityContext;
|
|
|
|
|
-import org.springframework.security.core.context.SecurityContextHolder;
|
|
|
|
|
import org.springframework.stereotype.Service;
|
|
import org.springframework.stereotype.Service;
|
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
|
-import seecoder.devcloud.api.gitlab.GitlabApi;
|
|
|
|
|
-import seecoder.devcloud.api.gitlab.model.GitlabGroup;
|
|
|
|
|
import seecoder.devcloud.common.exceptions.EntityNotFoundException;
|
|
import seecoder.devcloud.common.exceptions.EntityNotFoundException;
|
|
|
import seecoder.devcloud.common.exceptions.ServiceException;
|
|
import seecoder.devcloud.common.exceptions.ServiceException;
|
|
|
import seecoder.devcloud.web.dao.user.GroupMapper;
|
|
import seecoder.devcloud.web.dao.user.GroupMapper;
|
|
|
import seecoder.devcloud.web.dao.user.GroupMemberMapper;
|
|
import seecoder.devcloud.web.dao.user.GroupMemberMapper;
|
|
|
-import seecoder.devcloud.web.model.enums.GroupType;
|
|
|
|
|
import seecoder.devcloud.web.model.po.user.Group;
|
|
import seecoder.devcloud.web.model.po.user.Group;
|
|
|
import seecoder.devcloud.web.model.po.user.User;
|
|
import seecoder.devcloud.web.model.po.user.User;
|
|
|
-import seecoder.devcloud.web.service.user.GroupService;
|
|
|
|
|
import seecoder.devcloud.web.model.vo.user.GroupVO;
|
|
import seecoder.devcloud.web.model.vo.user.GroupVO;
|
|
|
|
|
+import seecoder.devcloud.web.service.user.GroupService;
|
|
|
import seecoder.devcloud.web.service.user.UserService;
|
|
import seecoder.devcloud.web.service.user.UserService;
|
|
|
|
|
|
|
|
-import java.util.ArrayList;
|
|
|
|
|
import java.util.List;
|
|
import java.util.List;
|
|
|
-import java.util.UUID;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@Service
|
|
@Service
|
|
@@ -31,78 +27,75 @@ import java.util.UUID;
|
|
|
public class GroupServiceImpl implements GroupService {
|
|
public class GroupServiceImpl implements GroupService {
|
|
|
private final GroupMapper groupMapper;
|
|
private final GroupMapper groupMapper;
|
|
|
private final GroupMemberMapper groupMemberMapper;
|
|
private final GroupMemberMapper groupMemberMapper;
|
|
|
- private final GitlabApi gitlabApi;
|
|
|
|
|
|
|
+
|
|
|
|
|
+ private final SeecoderGitlabApi seecoderGitlabApi;
|
|
|
|
|
+
|
|
|
|
|
+ private final String GROUP_NAME_PREFIX = "DEVCLOUD_";
|
|
|
|
|
|
|
|
@Autowired
|
|
@Autowired
|
|
|
- public GroupServiceImpl(GroupMapper groupMapper, GroupMemberMapper groupMemberMapper, GitlabApi gitlabApi) {
|
|
|
|
|
|
|
+ public GroupServiceImpl(GroupMapper groupMapper, GroupMemberMapper groupMemberMapper, SeecoderGitlabApi seecoderGitlabApi) {
|
|
|
this.groupMapper = groupMapper;
|
|
this.groupMapper = groupMapper;
|
|
|
this.groupMemberMapper = groupMemberMapper;
|
|
this.groupMemberMapper = groupMemberMapper;
|
|
|
- this.gitlabApi = gitlabApi;
|
|
|
|
|
|
|
+ this.seecoderGitlabApi = seecoderGitlabApi;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
@Override
|
|
|
@Transactional
|
|
@Transactional
|
|
|
- public GroupVO createGroup(String name, Integer userId) throws ServiceException {
|
|
|
|
|
|
|
+ public GroupVO createGroup(String name) throws ServiceException {
|
|
|
if (groupMapper.findGroupByName(name) != null){
|
|
if (groupMapper.findGroupByName(name) != null){
|
|
|
throw new ServiceException("您创建的小组名字已被使用!");
|
|
throw new ServiceException("您创建的小组名字已被使用!");
|
|
|
}
|
|
}
|
|
|
User user = UserService.loginUser();
|
|
User user = UserService.loginUser();
|
|
|
- List<User> members = new ArrayList<>();
|
|
|
|
|
- members.add(user);
|
|
|
|
|
- GitlabGroup gitGroup;
|
|
|
|
|
|
|
+ GitlabGroup gitlabGroup = null;
|
|
|
try {
|
|
try {
|
|
|
- gitGroup = gitlabApi.createGroup(name);
|
|
|
|
|
- gitlabApi.addMemberToGroup(gitGroup.getId(), user.getId());
|
|
|
|
|
- } catch (GitLabApiException e) {
|
|
|
|
|
- log.error(e.getMessage(), e);
|
|
|
|
|
- throw new RuntimeException("创建Group时发生异常[" + e.getMessage() + "]");
|
|
|
|
|
|
|
+ gitlabGroup = seecoderGitlabApi.createGroup(GROUP_NAME_PREFIX + name);
|
|
|
|
|
+ seecoderGitlabApi.addMember(gitlabGroup.getGroupId(), user.getId(), AccessLevelForm.MASTER);
|
|
|
|
|
+ } catch (SeecoderGitlabException e) {
|
|
|
|
|
+ throw new ServiceException("Error: 创建Group时发生异常[" + e.getMessage() + "]");
|
|
|
}
|
|
}
|
|
|
Group group = Group.builder()
|
|
Group group = Group.builder()
|
|
|
- .id(gitGroup.getId())
|
|
|
|
|
|
|
+ .id(gitlabGroup.getGroupId())
|
|
|
.name(name)
|
|
.name(name)
|
|
|
- .namespace(gitGroup.getNamespace())
|
|
|
|
|
- .shareLink(UUID.randomUUID().toString().replace("-", ""))
|
|
|
|
|
- .type(GroupType.GROUP)
|
|
|
|
|
- .members(members)
|
|
|
|
|
.build();
|
|
.build();
|
|
|
- groupMapper.insert(group, "members");
|
|
|
|
|
- groupMemberMapper.insert(gitGroup.getId(), userId);
|
|
|
|
|
|
|
+ groupMapper.insert(group);
|
|
|
|
|
+ groupMemberMapper.insert(gitlabGroup.getGroupId(), user.getId());
|
|
|
return new GroupVO(group);
|
|
return new GroupVO(group);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
@Override
|
|
@Override
|
|
|
//@Transactional
|
|
//@Transactional
|
|
|
- public GroupVO addMember(Integer userId, Integer invitedUserId, Integer groupId) throws EntityNotFoundException {
|
|
|
|
|
|
|
+ public void addMember(Integer invitedUserId, Integer groupId) throws EntityNotFoundException {
|
|
|
|
|
+ //当前登陆的用户id
|
|
|
|
|
+ int userId = UserService.loginUser().getId();
|
|
|
|
|
+
|
|
|
|
|
+ //只有在组内的用户才能邀请
|
|
|
List<Integer> userIds = groupMemberMapper.selectUserIdsByGroupId(groupId);
|
|
List<Integer> userIds = groupMemberMapper.selectUserIdsByGroupId(groupId);
|
|
|
if (!userIds.contains(userId)) {
|
|
if (!userIds.contains(userId)) {
|
|
|
- throw new EntityNotFoundException("小组邀请发生错误,用户没有权限!");
|
|
|
|
|
|
|
+ throw new EntityNotFoundException("Error: 小组邀请发生错误,用户没有权限!");
|
|
|
}
|
|
}
|
|
|
if (userIds.contains(invitedUserId)) {
|
|
if (userIds.contains(invitedUserId)) {
|
|
|
- throw new RuntimeException("邀请的用户已经加入小组!");
|
|
|
|
|
|
|
+ throw new RuntimeException("Error: 邀请的用户已经加入小组!");
|
|
|
}
|
|
}
|
|
|
try {
|
|
try {
|
|
|
- gitlabApi.addMemberToGroup(groupId, invitedUserId);
|
|
|
|
|
- } catch (GitLabApiException e) {
|
|
|
|
|
- log.error(e.getMessage(), e);
|
|
|
|
|
- throw new RuntimeException("将成员加入Group时发生异常[" + e.getMessage() + "]");
|
|
|
|
|
|
|
+ seecoderGitlabApi.addMember(groupId, invitedUserId, AccessLevelForm.MASTER);
|
|
|
|
|
+ } catch (SeecoderGitlabException e) {
|
|
|
|
|
+ throw new ServiceException("Error: 将成员加入Group时发生异常[" + e.getMessage() + "]");
|
|
|
}
|
|
}
|
|
|
groupMemberMapper.insert(groupId, invitedUserId);
|
|
groupMemberMapper.insert(groupId, invitedUserId);
|
|
|
- Group group = groupMapper.findWithMembersById(groupId);
|
|
|
|
|
- return new GroupVO(group);
|
|
|
|
|
|
|
+ //Group group = groupMapper.findWithMembersById(groupId);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
@Override
|
|
|
public void quitGroup(Integer groupId, Integer userId) throws ServiceException {
|
|
public void quitGroup(Integer groupId, Integer userId) throws ServiceException {
|
|
|
|
|
|
|
|
- try {
|
|
|
|
|
- gitlabApi.quitGroup(groupId,userId);
|
|
|
|
|
- } catch (GitLabApiException e) {
|
|
|
|
|
- log.error(e.getMessage(), e);
|
|
|
|
|
- throw new ServiceException(e.getMessage());
|
|
|
|
|
- }
|
|
|
|
|
- groupMemberMapper.delete(groupId,userId);
|
|
|
|
|
-
|
|
|
|
|
|
|
+// try {
|
|
|
|
|
+// gitlabApi.quitGroup(groupId,userId);
|
|
|
|
|
+// } catch (GitLabApiException e) {
|
|
|
|
|
+// log.error(e.getMessage(), e);
|
|
|
|
|
+// throw new ServiceException(e.getMessage());
|
|
|
|
|
+// }
|
|
|
|
|
+// groupMemberMapper.delete(groupId,userId);
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
|