@@ -11,6 +11,7 @@ import (
1111 "github.com/samber/do"
1212
1313 "github.com/chaitin/MonkeyCode/backend/config"
14+ "github.com/chaitin/MonkeyCode/backend/consts"
1415 "github.com/chaitin/MonkeyCode/backend/db"
1516 "github.com/chaitin/MonkeyCode/backend/domain"
1617 "github.com/chaitin/MonkeyCode/backend/errcode"
@@ -21,6 +22,7 @@ import (
2122// TeamGroupUserUsecase 团队分组成员业务逻辑层
2223type TeamGroupUserUsecase struct {
2324 repo domain.TeamGroupUserRepo
25+ activeRepo domain.UserActiveRepo
2426 logger * slog.Logger
2527 config * config.Config
2628 smtpClient domain.EmailSender
@@ -33,6 +35,7 @@ func NewTeamGroupUserUsecase(i *do.Injector) (domain.TeamGroupUserUsecase, error
3335
3436 t := & TeamGroupUserUsecase {
3537 repo : do.MustInvoke [domain.TeamGroupUserRepo ](i ),
38+ activeRepo : do.MustInvoke [domain.UserActiveRepo ](i ),
3639 logger : do.MustInvoke [* slog.Logger ](i ).With ("module" , "usecase.team_group_user" ),
3740 config : cfg ,
3841 smtpClient : do.MustInvoke [domain.EmailSender ](i ),
@@ -207,11 +210,21 @@ func (u *TeamGroupUserUsecase) MemberList(ctx context.Context, teamUser *domain.
207210 return & domain.MemberListResp {
208211 MemberLimit : team .MemberLimit ,
209212 Members : cvt .Iter (members , func (_ int , member * db.TeamMember ) * domain.TeamMemberInfo {
213+ var lastActiveAtTs int64
214+ if member .Edges .User != nil && u .activeRepo != nil {
215+ lastActiveAt , err := u .activeRepo .GetActiveRecord (ctx , consts .UserActiveKey , member .Edges .User .ID .String ())
216+ if err != nil {
217+ u .logger .ErrorContext (ctx , "get last active time failed" , "error" , err )
218+ }
219+ if ! lastActiveAt .IsZero () {
220+ lastActiveAtTs = lastActiveAt .Unix ()
221+ }
222+ }
210223 return & domain.TeamMemberInfo {
211224 User : cvt .From (member .Edges .User , & domain.User {}),
212225 Role : member .Role ,
213226 CreatedAt : member .CreatedAt .Unix (),
214- LastActiveAt : 0 ,
227+ LastActiveAt : lastActiveAtTs ,
215228 }
216229 }),
217230 }, nil
0 commit comments