recommend.go 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  1. package util
  2. import (
  3. "context"
  4. "fmt"
  5. "github.com/spf13/viper"
  6. "github.com/zhenghaoz/gorse/client"
  7. "time"
  8. )
  9. var gorse *client.GorseClient
  10. func init() {
  11. gorse = client.NewGorseClient(viper.GetString("gorse.addr"), "")
  12. }
  13. func GetTime(tie uint) string {
  14. t := time.Unix(int64(tie), 0)
  15. date := t.Format("2006-01-02")
  16. return date
  17. }
  18. func Recommend(uid, goodsId, tie uint) {
  19. ctx, cancel := context.WithTimeout(context.Background(), time.Second*100)
  20. defer cancel()
  21. date := GetTime(tie)
  22. aff, err := gorse.InsertFeedback(ctx, []client.Feedback{
  23. {FeedbackType: "star",
  24. UserId: fmt.Sprintf("%d", uid),
  25. ItemId: fmt.Sprintf("%d", goodsId),
  26. Timestamp: date},
  27. })
  28. if err != nil {
  29. fmt.Println("[recommend] ======>>> " + err.Error())
  30. return
  31. }
  32. fmt.Printf("[recommend] ======>>> %dfeedback success\n", aff)
  33. }
  34. func GetRecommend(uid uint, cnt int) (goods []string, err error) {
  35. ctx, cancel := context.WithTimeout(context.Background(), time.Second*10)
  36. defer cancel()
  37. category, err := gorse.GetItemRecommendWithCategory(ctx, fmt.Sprintf("%d", uid), "", "", "", 0, cnt)
  38. return category, err
  39. }
  40. func NewUser(uid uint) {
  41. ctx, cancel := context.WithTimeout(context.Background(), time.Second*10)
  42. defer cancel()
  43. _, err := gorse.InsertUser(ctx, client.User{UserId: fmt.Sprintf("%d", uid)})
  44. if err != nil {
  45. fmt.Println("[recommend] ======>>> " + err.Error())
  46. return
  47. }
  48. fmt.Println("[recommend] ======>>> user added")
  49. }
  50. func NewItem(id uint, t uint, title string, desc string) {
  51. ctx, cancel := context.WithTimeout(context.Background(), time.Second*10)
  52. defer cancel()
  53. _, err := gorse.InsertItem(ctx, client.Item{
  54. ItemId: fmt.Sprintf("%d", id),
  55. IsHidden: false,
  56. Labels: []string{title},
  57. Categories: nil,
  58. Timestamp: GetTime(t),
  59. Comment: desc,
  60. })
  61. if err != nil {
  62. fmt.Println("[recommend] ======>>> " + err.Error())
  63. return
  64. }
  65. fmt.Println("[recommend] ======>>> item added")
  66. }
  67. func DelItem(id uint) {
  68. ctx, cancel := context.WithTimeout(context.Background(), time.Second*10)
  69. defer cancel()
  70. _, err := gorse.DeleteItem(ctx, fmt.Sprintf("%d", id))
  71. if err != nil {
  72. fmt.Println("[recommend] ======>>> " + err.Error())
  73. return
  74. }
  75. fmt.Println("[recommend] ======>>> item deleted")
  76. }