123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121 |
- package service
- import (
- "go-common/library/log"
- "go-common/library/log/infoc"
- "strconv"
- "time"
- )
- var inCh = make(chan interface{}, 10240)
- const maxInt = int(^uint(0) >> 1)
- type bagLogInfoc struct {
- id string
- uid string
- bagID string
- giftID string
- num string
- afterNum string
- source string
- infoType string
- ctime string
- }
- type giftActionInfoc struct {
- uid int64
- roomid int64
- item int64
- value int64
- change int64
- describe string
- extra string
- ts int64
- platform string
- clientver string
- buvid string
- ua string
- referer string
- }
- // bagLogInfoc 包裹日志打点
- func (s *Service) bagLogInfoc(uid, bagID, giftID, num, afterNum int64, source string) {
- s.infoc(bagLogInfoc{
- id: MakeID(uid),
- uid: strconv.FormatInt(uid, 10),
- bagID: strconv.FormatInt(bagID, 10),
- giftID: strconv.FormatInt(giftID, 10),
- num: strconv.FormatInt(num, 10),
- afterNum: strconv.FormatInt(afterNum, 10),
- source: source,
- infoType: "1",
- ctime: time.Now().Format("2006-01-02 15:04:05"),
- })
- }
- //giftActionInfoc 道具打点
- func (s *Service) giftActionInfoc(uid, roomid, item, value, change int64, describe, platform string) {
- s.infoc(giftActionInfoc{
- uid: uid,
- roomid: roomid,
- item: item,
- value: value,
- change: change,
- describe: describe,
- extra: "",
- ts: time.Now().Unix(),
- platform: platform,
- clientver: "",
- buvid: "",
- ua: "",
- referer: "",
- })
- }
- // MakeID MakeID
- func MakeID(uid int64) string {
- prefix := strconv.FormatInt(uid%10, 10)
- postfix := strconv.Itoa(maxInt - int(time.Now().Unix()*10000))
- uidStr := strconv.FormatInt(uid, 10)
- l := len(uidStr)
- var middle string
- if l >= 10 {
- middle = uidStr
- } else {
- var s string
- for i := 0; i < (10 - l); i++ {
- s += "0"
- }
- middle = s + uidStr
- }
- return prefix + middle + postfix
- }
- //infoc
- func (s *Service) infoc(i interface{}) {
- select {
- case inCh <- i:
- default:
- log.Warn("infocproc chan full")
- }
- }
- // infocproc
- func (s *Service) infocproc() {
- var bl = infoc.New(s.c.Infoc["bagLog"])
- var ga = infoc.New(s.c.Infoc["giftAction"])
- for {
- i := <-inCh
- switch v := i.(type) {
- case bagLogInfoc:
- err := bl.Info(v.id, v.uid, v.bagID, v.giftID, v.num, v.afterNum, v.source, v.infoType, v.ctime)
- log.Info("bagLogInfoc info %v,ret:%v", v, err)
- case giftActionInfoc:
- err := ga.Info(v.uid, v.roomid, v.item, v.value, v.change, v.describe, v.extra, v.ts, v.platform, v.clientver, v.buvid, v.ua, v.referer)
- log.Info("giftActionInfoc info %v,ret:%v", v, err)
- default:
- log.Warn("infocproc can't process the type")
- }
- }
- }
|