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.
43 lines
956 B
43 lines
956 B
package archive |
|
|
|
import ( |
|
"context" |
|
"sort" |
|
"strconv" |
|
|
|
"go-common/app/interface/main/creative/model/archive" |
|
) |
|
|
|
// get max 5 fav types |
|
func (s *Service) favTypes(c context.Context, mid int64) (favTps []*archive.Type) { |
|
favTps = make([]*archive.Type, 0) |
|
var res map[string]int64 |
|
res, _ = s.arc.FavTypes(c, mid) |
|
if len(res) > 0 { |
|
type kv struct { |
|
TidStr string |
|
Timestamp int64 |
|
} |
|
var kvSlice []kv |
|
for k, v := range res { |
|
kvSlice = append(kvSlice, kv{k, v}) |
|
} |
|
sort.Slice(kvSlice, func(i, j int) bool { |
|
return kvSlice[i].Timestamp > kvSlice[j].Timestamp |
|
}) |
|
for _, v := range kvSlice { |
|
tid, _ := strconv.Atoi(v.TidStr) |
|
if tp, ok := s.p.TypeMapCache[int16(tid)]; ok && len(favTps) < 5 { |
|
favTps = append(favTps, tp) |
|
} |
|
} |
|
} |
|
return |
|
} |
|
|
|
// Fav fn |
|
func (s *Service) Fav(c context.Context, mid int64) (res map[string]interface{}) { |
|
res = make(map[string]interface{}) |
|
res["typelist"] = s.favTypes(c, mid) |
|
return |
|
}
|
|
|