@@ -4,21 +4,21 @@ import (
44 "context"
55 "errors"
66 "fmt"
7-
7+
88 "github.com/eolinker/ap-account/service/role"
9-
9+
1010 "gorm.io/gorm"
11-
11+
1212 department_member "github.com/eolinker/ap-account/service/department-member"
1313 "github.com/eolinker/go-common/auto"
14-
14+
1515 "github.com/eolinker/ap-account/service/user"
16-
16+
1717 "github.com/eolinker/go-common/store"
18-
18+
1919 "github.com/APIParkLab/APIPark/service/service"
2020 team_member "github.com/APIParkLab/APIPark/service/team-member"
21-
21+
2222 team_dto "github.com/APIParkLab/APIPark/module/my-team/dto"
2323 "github.com/APIParkLab/APIPark/service/team"
2424 "github.com/eolinker/go-common/utils"
@@ -44,11 +44,15 @@ func (m *imlTeamModule) UpdateMemberRole(ctx context.Context, id string, input *
4444 if err != nil {
4545 return err
4646 }
47+ supperRole , err := m .roleService .GetSupperRole (ctx , role .GroupTeam )
48+ if err != nil {
49+ return err
50+ }
4751 return m .transaction .Transaction (ctx , func (ctx context.Context ) error {
4852 if len (input .Roles ) < 1 {
4953 return errors .New ("at least one role" )
5054 }
51-
55+
5256 err = m .roleMemberService .RemoveUserRole (ctx , role .TeamTarget (id ), input .Users ... )
5357 if err != nil {
5458 return err
@@ -65,6 +69,14 @@ func (m *imlTeamModule) UpdateMemberRole(ctx context.Context, id string, input *
6569 }
6670 }
6771 }
72+
73+ count , err := m .roleMemberService .CountByRole (ctx , role .TeamTarget (id ), supperRole .Id )
74+ if err != nil {
75+ return err
76+ }
77+ if count < 1 {
78+ return fmt .Errorf ("role(%s) must have at least one member" , supperRole .Name )
79+ }
6880 return nil
6981 })
7082}
@@ -74,7 +86,7 @@ func (m *imlTeamModule) GetTeam(ctx context.Context, id string) (*team_dto.Team,
7486 if err != nil {
7587 return nil , err
7688 }
77-
89+
7890 return & team_dto.Team {
7991 Id : tv .Id ,
8092 Name : tv .Name ,
@@ -110,7 +122,7 @@ func (m *imlTeamModule) Search(ctx context.Context, keyword string) ([]*team_dto
110122 if err != nil {
111123 return nil , err
112124 }
113-
125+
114126 outList := make ([]* team_dto.Item , 0 , len (list ))
115127 for _ , v := range list {
116128 outList = append (outList , team_dto .ToItem (v , serviceNumMap [v .Id ], appNumMap [v .Id ]))
@@ -138,7 +150,7 @@ func (m *imlTeamModule) Edit(ctx context.Context, id string, input *team_dto.Edi
138150 Description : input .Description ,
139151 })
140152 })
141-
153+
142154 if err != nil {
143155 return nil , err
144156 }
@@ -161,7 +173,7 @@ func (m *imlTeamModule) SimpleTeams(ctx context.Context, keyword string) ([]*tea
161173 if err != nil {
162174 return nil , err
163175 }
164-
176+
165177 projects , err := m .serviceService .Search (ctx , "" , map [string ]interface {}{
166178 "team" : teamIDs ,
167179 })
@@ -181,7 +193,7 @@ func (m *imlTeamModule) SimpleTeams(ctx context.Context, keyword string) ([]*tea
181193 appCount [p .Team ]++
182194 }
183195 }
184-
196+
185197 outList := utils .SliceToSlice (list , func (s * team.Team ) * team_dto.SimpleTeam {
186198 return & team_dto.SimpleTeam {
187199 Id : s .Id ,
@@ -216,15 +228,15 @@ func (m *imlTeamModule) AddMember(ctx context.Context, id string, uuids ...strin
216228 }
217229 return nil
218230 })
219-
231+
220232}
221233
222234func (m * imlTeamModule ) RemoveMember (ctx context.Context , id string , uuids ... string ) error {
223235 _ , err := m .teamService .Get (ctx , id )
224236 if err != nil {
225237 return err
226238 }
227-
239+
228240 supperRole , err := m .roleService .GetSupperRole (ctx , role .GroupTeam )
229241 if err != nil {
230242 return err
@@ -244,20 +256,20 @@ func (m *imlTeamModule) RemoveMember(ctx context.Context, id string, uuids ...st
244256 supperRoleCount ++
245257 }
246258 }
247-
259+
248260 if supperRoleCount == int (count ) {
249261 return errors .New ("can not delete all team admin" )
250262 }
251263 }
252-
264+
253265 return m .transaction .Transaction (ctx , func (ctx context.Context ) error {
254266 err = m .roleMemberService .RemoveUserRole (ctx , role .TeamTarget (id ), uuids ... )
255267 if err != nil {
256268 return err
257269 }
258270 return m .teamMemberService .RemoveMemberFrom (ctx , id , uuids ... )
259271 })
260-
272+
261273}
262274
263275func (m * imlTeamModule ) Members (ctx context.Context , id string , keyword string ) ([]* team_dto.Member , error ) {
@@ -286,12 +298,12 @@ func (m *imlTeamModule) Members(ctx context.Context, id string, keyword string)
286298 roleMemberMap := utils .SliceToMapArrayO (roleMembers , func (r * role.Member ) (string , string ) {
287299 return r .User , r .Role
288300 })
289-
301+ uId := utils . UserId ( ctx )
290302 out := make ([]* team_dto.Member , 0 , len (members ))
291303 for _ , member := range members {
292- out = append (out , team_dto .ToMember (member , roleMemberMap [member .UID ]... ))
304+ out = append (out , team_dto .ToMember (member , uId , roleMemberMap [member .UID ]... ))
293305 }
294-
306+
295307 return out , nil
296308}
297309
@@ -331,20 +343,20 @@ func (m *imlTeamModule) SimpleMembers(ctx context.Context, id string, keyword st
331343 }
332344 departmentMemberMap [member .UID ] = append (departmentMemberMap [member .UID ], member .Come )
333345 }
334-
346+
335347 out := make ([]* team_dto.SimpleMember , 0 , len (teamMembers ))
336348 for _ , member := range teamMembers {
337349 u , ok := userMap [member .UID ]
338350 if ! ok {
339351 continue
340352 }
341-
353+
342354 out = append (out , & team_dto.SimpleMember {
343355 User : auto .UUID (u .UID ),
344356 Mail : u .Email ,
345357 Department : auto .List (departmentMemberMap [member .UID ]),
346358 })
347359 }
348-
360+
349361 return out , nil
350362}
0 commit comments