/
recommand.go
137 lines (131 loc) · 3.45 KB
/
recommand.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
package main
import (
"github.com/hulucat/utils"
)
type Product struct {
Id string `json:"id"`
Name string `json:"name"`
Img string `json:"img"`
}
func recommandFor1(person *Person) (p *Product, err error) {
utils.Debugf("Recommand for 1 person: %d, %s", person.Age, person.Gender)
if person.Age < 10 {
p = &Product{
Id: "27",
Name: "统一冰糖雪梨",
Img: "http://img.ubox.cn/box-tmp/m/27/27.jpg?t=20140305101413",
}
return
}
switch person.Gender {
case "Male":
if person.Age < 18 {
p = &Product{
Id: "1",
Name: "可口可乐",
Img: "http://img.ubox.cn/box-tmp/m/1/1.jpg?t=20140305101413",
}
} else if person.Age < 30 {
p = &Product{
Id: "5976",
Name: "杜蕾斯热感超薄3只装",
Img: "http://img.ubox.cn/box-tmp/m/5976/5976.jpg?t=20140305101413",
}
} else if person.Age < 40 {
p = &Product{
Id: "19251",
Name: "取悦潮品4D经典名器少女",
Img: "http://img.ubox.cn/box-tmp/m/19251/19251.jpg?t=20140305101413",
}
} else if person.Age < 60 {
p = &Product{
Id: "18471",
Name: "XYZ男士劲能延时喷雾",
Img: "http://img.ubox.cn/box-tmp/m/18471/18471.jpg?t=20140305101413",
}
} else {
p = &Product{
Id: "19250",
Name: "取悦潮品4D经典名器处女",
Img: "http://img.ubox.cn/box-tmp/m/19250/19250.jpg?t=20140305101413",
}
}
case "Female":
if person.Age < 18 {
p = &Product{
Id: "18459",
Name: "费洛蒙男女通用香水",
Img: "http://img.ubox.cn/box-tmp/m/18459/18459.jpg?t=20140305101413",
}
} else if person.Age < 30 {
p = &Product{
Id: "18528",
Name: "好奇而已纯白诱惑",
Img: "http://img.ubox.cn/box-tmp/m/18528/18528.jpg?t=20140305101413",
}
} else if person.Age < 40 {
p = &Product{
Id: "19308",
Name: "美国进口MOVO迷恋型紧",
Img: "http://img.ubox.cn/box-tmp/m/19308/19308.jpg?t=20140305101413",
}
} else if person.Age < 60 {
p = &Product{
Id: "18395",
Name: "喵星人伊咪Y防水阴蒂按摩",
Img: "http://img.ubox.cn/box-tmp/m/18395/18395.jpg?t=20140305101413",
}
} else {
p = &Product{
Id: "27",
Name: "统一冰糖雪梨",
Img: "http://img.ubox.cn/box-tmp/m/27/27.jpg?t=20140305101413",
}
}
}
return
}
func recommandFor2(people []*Person) (p *Product, err error) {
return &Product{
Id: "1",
Name: "可口可乐",
Img: "http://img.ubox.cn/box-tmp/m/1/1.jpg?t=20140305101413",
}, nil
}
func recommandForMulti(people []*Person) (p *Product, err error) {
return &Product{
Id: "24",
Name: "娃哈哈纯净水596ml",
Img: "http://img.ubox.cn/box-tmp/m/24/24.jpg?t=20140305101413",
}, nil
}
func Recommand(filePath string, people []*Person) (err error) {
dict := make(map[string]interface{}) //people: []*Person, product: Product
var product *Product
if people != nil && len(people) > 0 {
switch len(people) {
case 1:
product, err = recommandFor1(people[0])
case 2:
product, err = recommandFor2(people)
default:
product, err = recommandForMulti(people)
}
if err != nil {
utils.Errorf("Error recommand: %s", err.Error())
} else {
utils.Debugf("Product: %s", product.Name)
}
}
dict["file"] = filePath
dict["people"] = people
dict["product"] = product
if WebSocketConn != nil {
if err = WebSocketConn.WriteJSON(dict); err != nil {
utils.Errorf("Error write json to websocket: %s", err.Error())
}
} else {
utils.Debugf("Websocket is nil")
}
return
}