recommend.go 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. package service
  2. import (
  3. "fmt"
  4. "time"
  5. "gitlab.alibaba-inc.com/pai_biz_arch/pairec/context"
  6. "gitlab.alibaba-inc.com/pai_biz_arch/pairec/filter"
  7. "gitlab.alibaba-inc.com/pai_biz_arch/pairec/log"
  8. "gitlab.alibaba-inc.com/pai_biz_arch/pairec/module"
  9. "gitlab.alibaba-inc.com/pai_biz_arch/pairec/sort"
  10. "gitlab.alibaba-inc.com/pai_biz_arch/pairec/utils"
  11. )
  12. type RecommendService struct {
  13. }
  14. func (s *RecommendService) GetUID(context *context.RecommendContext) module.UID {
  15. uid := context.GetParameter("uid")
  16. if uid == nil {
  17. uid = ""
  18. }
  19. userId := module.UID(uid.(string))
  20. return userId
  21. }
  22. func (s *RecommendService) Filter(uid module.UID, items []*module.Item, context *context.RecommendContext) []*module.Item {
  23. start := time.Now()
  24. filterData := filter.FilterData{Data: items, Uid: uid, Context: context}
  25. filter.Filter(&filterData, "")
  26. log.Info(fmt.Sprintf("requestId=%s\tmodule=Filter\tcost=%d", context.RecommendId, utils.CostTime(start)))
  27. return filterData.Data.([]*module.Item)
  28. }
  29. func (s *RecommendService) Sort(items []*module.Item, context *context.RecommendContext) []*module.Item {
  30. sortData := sort.SortData{Data: items, Context: context}
  31. sort.Sort(&sortData, "")
  32. return sortData.Data.([]*module.Item)
  33. }
  34. func (s *RecommendService) PreSort(items []*module.Item, context *context.RecommendContext) []*module.Item {
  35. sortData := sort.SortData{Data: items, Context: context}
  36. sort.Sort(&sortData, "_PreSort")
  37. return sortData.Data.([]*module.Item)
  38. }