123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103 |
- package events
- import (
- "bufio"
- "fmt"
- "io"
- "log"
- "os"
- "strings"
- "time"
- "sort"
- "box-gm/utils"
- // "log"
- )
- type RecordClient struct {
- EventTime int64
- ServerId string
- Scene string
- EventId string
- Label string
- }
- type ClientRecordList []*RecordClient
- func (a ClientRecordList) Len() int { return len(a) }
- func (a ClientRecordList) Swap(i, j int) { a[i], a[j] = a[j], a[i] }
- func (a ClientRecordList) Less(i, j int) bool {
- return a[i].EventTime > a[j].EventTime
- }
- func (a ClientRecordList) Sort() { sort.Sort(a) }
- func Client_get_records(scene, eid string, startTime, endTime int) []*RecordClient {
- // 日期列表
- var dateList []string
- times := 0
- for {
- ti := startTime + times*86400
- if ti >= endTime {
- break
- }
- date := time.Unix(int64(ti), 0).Format("2006-01-02")
- dateList = append(dateList, date)
- times++
- }
- // log.Printf("ChatQuery_get_records dateList[%v]", dateList)
- var records ClientRecordList
- loc, _ := time.LoadLocation("Local")
- for _, date := range dateList {
- eventFile := fmt.Sprintf("%s/client-%s.log", utils.GetKeyConf("events", "path"), date)
- f, err := os.Open(eventFile)
- if err != nil {
- log.Printf("eventFile[%s] err[%v]", eventFile, err)
- continue
- }
- defer f.Close()
- buff := bufio.NewReader(f)
- for {
- line, err := buff.ReadString('\n')
- if err != nil || io.EOF == err {
- break
- }
- line = strings.TrimSpace(line)
- /* string.format(
- "%s;%s;%s;%s;%s;%s;%s",
- get_time_string(),
- get_server_id(),
- _tostring(uid),
- _tostring(toUid),
- _tostring(msgty),
- _tostring(iCType),
- _tostring(cnt)*/
- arr := strings.Split(line, ";")
- theTime, errTime := time.ParseInLocation("2006-01-02 15:04:05", arr[0], loc)
- if errTime == nil {
- ti := int(theTime.Unix())
- if ti >= startTime && ti <= endTime {
- // 场景
- if scene == "" || scene == arr[2] {
- // 事件id
- if eid == "" || eid == arr[3] {
- item := &RecordClient{}
- item.EventTime = utils.GetTime64(arr[0])
- item.ServerId = arr[1]
- item.Scene = arr[2]
- item.EventId = arr[3]
- item.Label = arr[4]
- records = append(records, item)
- }
- }
- }
- }
- }
- }
- records.Sort()
- // log.Printf("ChatQuery_get_records records[%v]", records)
- return records
- }
|