123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110 |
- package service
- import (
- "context"
- "go-common/app/admin/ep/saga/model"
- "go-common/library/log"
- "github.com/xanzy/go-gitlab"
- )
- // QueryProjectMembers ...
- func (s *Service) QueryProjectMembers(c context.Context, req *model.ProjectDataReq) (resp []*gitlab.ProjectMember, err error) {
- var (
- members []*gitlab.ProjectMember
- response *gitlab.Response
- memberItem []*gitlab.ProjectMember
- )
- if members, response, err = s.gitlab.ListProjectMembers(req.ProjectID, 1); err != nil {
- return
- }
- page := 2
- for page <= response.TotalPages {
- memberItem, _, err = s.gitlab.ListProjectMembers(req.ProjectID, page)
- members = append(members, memberItem...)
- page++
- }
- resp = members
- return
- }
- /*-------------------------------------- sync member ----------------------------------------*/
- // SyncProjectMember ...
- func (s *Service) SyncProjectMember(c context.Context, projectID int) (totalPage, totalNum int, err error) {
- var (
- resp *gitlab.Response
- members []*gitlab.ProjectMember
- projectInfo *model.ProjectInfo
- )
- if projectInfo, err = s.dao.ProjectInfoByID(projectID); err != nil {
- return
- }
- for page := 1; ; page++ {
- totalPage++
- if members, resp, err = s.gitlab.ListProjectMembers(projectID, page); err != nil {
- return
- }
- for _, member := range members {
- memberDB := &model.StatisticsMembers{
- ProjectID: projectID,
- ProjectName: projectInfo.Name,
- MemberID: member.ID,
- Username: member.Username,
- Email: member.Email,
- Name: member.Name,
- State: member.State,
- CreatedAt: member.CreatedAt,
- AccessLevel: int(member.AccessLevel),
- }
- if err = s.SaveDatabaseMember(c, memberDB); err != nil {
- log.Error("member Save Database err: projectID(%d), MemberID(%d)", projectID, member.ID)
- err = nil
- continue
- }
- totalNum++
- }
- if resp.NextPage == 0 {
- break
- }
- }
- return
- }
- // SaveDatabaseMember ...
- func (s *Service) SaveDatabaseMember(c context.Context, memberDB *model.StatisticsMembers) (err error) {
- var total int
- if total, err = s.dao.HasMember(c, memberDB.ProjectID, memberDB.MemberID); err != nil {
- log.Error("SaveDatabaseMember HasMember(%+v)", err)
- return
- }
- // update found row
- if total == 1 {
- if err = s.dao.UpdateMember(c, memberDB.ProjectID, memberDB.MemberID, memberDB); err != nil {
- log.Error("SaveDatabaseMember UpdateMember(%+v)", err)
- }
- return
- } else if total > 1 {
- // found repeated row, this situation will not exist under normal
- log.Warn("SaveDatabaseMember Note has more rows(%d)", total)
- return
- }
- // insert row now
- if err = s.dao.CreateMember(c, memberDB); err != nil {
- log.Error("SaveDatabaseMember CreateMember(%+v)", err)
- return
- }
- return
- }
|