123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115 |
- package service
- import (
- "context"
- "go-common/app/admin/main/relation/model"
- relationPB "go-common/app/service/main/relation/api"
- )
- // Followers is.
- func (s *Service) Followers(ctx context.Context, param *model.FollowersParam) (*model.FollowersListPage, error) {
- list, err := s.dao.Followers(ctx, param.Fid, param.Mid)
- if err != nil {
- return nil, err
- }
- list.OrderByMTime(param.Desc())
- from, err := model.ParseTime(param.MTimeFrom)
- if err == nil {
- list = list.FilterMTimeFrom(from)
- }
- to, err := model.ParseTime(param.MTimeTo)
- if err == nil {
- list = list.FilterMTimeTo(to)
- }
- plist := list.Paginate(param.PS*(param.PN-1), param.PS)
- flist := plist.FollowersList()
- uids := make([]int64, 0, len(flist)*2)
- for _, r := range flist {
- uids = append(uids, r.Mid)
- uids = append(uids, r.Fid)
- }
- uinfos, err := s.dao.RPCInfos(ctx, uids)
- if err != nil {
- return nil, err
- }
- for _, r := range flist {
- if mi, ok := uinfos[r.Mid]; ok {
- r.MemberName = mi.Name
- }
- }
- for _, r := range flist {
- if fi, ok := uinfos[r.Fid]; ok {
- r.FollowerName = fi.Name
- }
- }
- page := &model.FollowersListPage{}
- page.Sort = param.Sort
- page.Order = param.Order
- page.List = flist
- page.TotalCount = len(list)
- page.PN = param.PN
- page.PS = param.PS
- return page, nil
- }
- // Followings is.
- func (s *Service) Followings(ctx context.Context, param *model.FollowingsParam) (*model.FollowingsListPage, error) {
- list, err := s.dao.Followings(ctx, param.Mid, param.Fid)
- if err != nil {
- return nil, err
- }
- list.OrderByMTime(param.Desc())
- from, err := model.ParseTime(param.MTimeFrom)
- if err == nil {
- list = list.FilterMTimeFrom(from)
- }
- to, err := model.ParseTime(param.MTimeTo)
- if err == nil {
- list = list.FilterMTimeTo(to)
- }
- plist := list.Paginate(param.PS*(param.PN-1), param.PS)
- flist := plist.FollowingsList()
- uids := make([]int64, 0, len(flist)*2)
- for _, r := range flist {
- uids = append(uids, r.Mid)
- uids = append(uids, r.Fid)
- }
- minfos, err := s.dao.RPCInfos(ctx, uids)
- if err != nil {
- return nil, err
- }
- for _, r := range flist {
- if mi, ok := minfos[r.Mid]; ok {
- r.MemberName = mi.Name
- }
- }
- for _, r := range flist {
- if fi, ok := minfos[r.Fid]; ok {
- r.FollowingName = fi.Name
- }
- }
- page := &model.FollowingsListPage{}
- page.Sort = param.Sort
- page.Order = param.Order
- page.List = flist
- page.TotalCount = len(list)
- page.PN = param.PN
- page.PS = param.PS
- return page, nil
- }
- // Stat is
- func (s *Service) Stat(ctx context.Context, param *model.ArgMid) (*relationPB.StatReply, error) {
- return s.dao.Stat(ctx, param.Mid)
- }
- // Stats is
- func (s *Service) Stats(ctx context.Context, param *model.ArgMids) (map[int64]*relationPB.StatReply, error) {
- return s.dao.Stats(ctx, param.Mids)
- }
|