You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
71 lines
1.6 KiB
71 lines
1.6 KiB
package service |
|
|
|
import ( |
|
"context" |
|
"sort" |
|
|
|
"go-common/app/admin/main/creative/model/whitelist" |
|
accapi "go-common/app/service/main/account/api" |
|
"go-common/library/log" |
|
|
|
"golang.org/x/sync/errgroup" |
|
) |
|
|
|
// Cards fn |
|
func (s *Service) Cards(c context.Context, wls []*whitelist.Whitelist) (wlsWithAcc []*whitelist.Whitelist, err error) { |
|
wlsWithAcc = []*whitelist.Whitelist{} |
|
var ( |
|
g errgroup.Group |
|
) |
|
ch := make(chan *whitelist.Whitelist, len(wls)) |
|
for _, wl := range wls { |
|
id := wl.ID |
|
mid := wl.MID |
|
adminMid := wl.AdminMID |
|
comment := wl.Comment |
|
state := wl.State |
|
tp := wl.Type |
|
ctime := wl.Ctime |
|
mtime := wl.Mtime |
|
g.Go(func() (err error) { |
|
pfl, err := s.dao.ProfileStat(c, mid) |
|
if err != nil { |
|
log.Error("s.dao.Card mid(%+v)|err(%+v)", mid, err) |
|
return |
|
} |
|
var name string |
|
if pfl.Profile != nil { |
|
name = pfl.Profile.Name |
|
} |
|
ch <- &whitelist.Whitelist{ |
|
ID: id, |
|
MID: mid, |
|
AdminMID: adminMid, |
|
Comment: comment, |
|
State: state, |
|
Type: tp, |
|
Fans: pfl.Follower, |
|
CurrentLevel: pfl.LevelInfo.Cur, |
|
Name: name, |
|
Ctime: ctime, |
|
Mtime: mtime, |
|
} |
|
return |
|
}) |
|
} |
|
g.Wait() |
|
close(ch) |
|
for c := range ch { |
|
wlsWithAcc = append(wlsWithAcc, c) |
|
} |
|
sort.Slice(wlsWithAcc, func(i, j int) bool { return wlsWithAcc[i].Ctime > wlsWithAcc[j].Ctime }) |
|
return |
|
} |
|
|
|
// ProfileStat fn |
|
func (s *Service) ProfileStat(c context.Context, mid int64) (pfl *accapi.ProfileStatReply, err error) { |
|
if pfl, err = s.dao.ProfileStat(c, mid); err != nil { |
|
log.Error("s.dao.Profile mid(%+v)|err(%+v)", mid, err) |
|
} |
|
return |
|
}
|
|
|