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.
121 lines
3.3 KiB
121 lines
3.3 KiB
package region |
|
|
|
import ( |
|
"bytes" |
|
"strconv" |
|
"time" |
|
|
|
"go-common/app/interface/main/app-feed/model/tag" |
|
"go-common/library/log" |
|
binfoc "go-common/library/log/infoc" |
|
) |
|
|
|
type tagsInfoc struct { |
|
typ string |
|
mid string |
|
client string |
|
build string |
|
buvid string |
|
disid string |
|
ip string |
|
api string |
|
now string |
|
tags []*tag.Tag |
|
} |
|
|
|
type tagInfoc struct { |
|
typ string |
|
mid string |
|
client string |
|
build string |
|
buvid string |
|
disid string |
|
ip string |
|
api string |
|
now string |
|
rid string |
|
tid string |
|
} |
|
|
|
func (s *Service) TagsInfoc(mid int64, plat int8, build int, buvid, disid, ip, api string, tags []*tag.Tag, now time.Time) { |
|
select { |
|
case s.logCh <- tagsInfoc{"推荐页入口", strconv.FormatInt(mid, 10), strconv.Itoa(int(plat)), strconv.Itoa(build), buvid, disid, ip, api, strconv.FormatInt(now.Unix(), 10), tags}: |
|
default: |
|
log.Warn("infoc log buffer is full") |
|
} |
|
} |
|
|
|
func (s *Service) ChangeTagsInfoc(mid int64, plat int8, build int, buvid, disid, ip, api string, tags []*tag.Tag, now time.Time) { |
|
select { |
|
case s.logCh <- tagsInfoc{"换一换", strconv.FormatInt(mid, 10), strconv.Itoa(int(plat)), strconv.Itoa(build), buvid, disid, ip, api, strconv.FormatInt(now.Unix(), 10), tags}: |
|
default: |
|
log.Warn("infoc log buffer is full") |
|
} |
|
} |
|
|
|
func (s *Service) AddTagInfoc(mid int64, plat int8, build int, buvid, disid, ip, api string, rid int, tid int64, now time.Time) { |
|
select { |
|
case s.logCh <- tagInfoc{"订阅标签", strconv.FormatInt(mid, 10), strconv.Itoa(int(plat)), strconv.Itoa(build), buvid, disid, ip, api, strconv.FormatInt(now.Unix(), 10), strconv.Itoa(rid), strconv.FormatInt(tid, 10)}: |
|
default: |
|
log.Warn("infoc log buffer is full") |
|
} |
|
} |
|
|
|
func (s *Service) CancelTagInfoc(mid int64, plat int8, build int, buvid, disid, ip, api string, rid int, tid int64, now time.Time) { |
|
select { |
|
case s.logCh <- tagInfoc{"取消标签", strconv.FormatInt(mid, 10), strconv.Itoa(int(plat)), strconv.Itoa(build), buvid, disid, ip, api, strconv.FormatInt(now.Unix(), 10), strconv.Itoa(rid), strconv.FormatInt(tid, 10)}: |
|
default: |
|
log.Warn("infoc log buffer is full") |
|
} |
|
} |
|
|
|
// writeInfoc |
|
func (s *Service) infocproc() { |
|
const ( |
|
// infoc format {"section":{"id":"%s","pos":1,"items":[{"id":%s,"pos":%d,"url":""}]}} |
|
noItem1 = `{"section":{"id":"` |
|
noItem2 = `","pos":1,"items":[]}}` |
|
) |
|
var ( |
|
msg1 = []byte(`{"section":{"id":"`) |
|
msg2 = []byte(`","pos":1,"items":[`) |
|
msg3 = []byte(`{"id":`) |
|
msg4 = []byte(`,"name":"`) |
|
msg5 = []byte(`","url":""},`) |
|
msg6 = []byte(`]}}`) |
|
inf2 = binfoc.New(s.c.TagInfoc2) |
|
buf bytes.Buffer |
|
list string |
|
) |
|
for { |
|
i, ok := <-s.logCh |
|
if !ok { |
|
log.Warn("infoc proc exit") |
|
return |
|
} |
|
switch v := i.(type) { |
|
case tagsInfoc: |
|
if len(v.tags) > 0 { |
|
buf.Write(msg1) |
|
buf.WriteString(v.typ) |
|
buf.Write(msg2) |
|
for _, v := range v.tags { |
|
buf.Write(msg3) |
|
buf.WriteString(strconv.FormatInt(v.ID, 10)) |
|
buf.Write(msg4) |
|
buf.WriteString(v.Name) |
|
buf.Write(msg5) |
|
} |
|
buf.Truncate(buf.Len() - 1) |
|
buf.Write(msg6) |
|
list = buf.String() |
|
buf.Reset() |
|
} else { |
|
list = noItem1 + v.typ + noItem2 |
|
} |
|
inf2.Info(v.ip, v.now, v.api, v.buvid, v.mid, v.client, "1", list, v.disid, "1", v.build) |
|
case tagInfoc: |
|
inf2.Info(v.ip, v.now, v.api, v.buvid, v.mid, v.client, "1", list, v.disid, "1", v.build) |
|
} |
|
} |
|
}
|
|
|