| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176 |
- package video
- import (
- "fmt"
- "sort"
- "time"
- "bet24.com/log"
- )
- var mgr *videoManager
- type videoManager struct {
- playStat_list map[string]*playStatInfo
- source_list map[string][]*sourceInfo
- index_list map[string]*indexInfo
- userStat_list map[string]*userStatInfo
- }
- func Run() {
- mgr = new(videoManager)
- mgr.playStat_list = make(map[string]*playStatInfo)
- mgr.source_list = make(map[string][]*sourceInfo)
- mgr.index_list = make(map[string]*indexInfo)
- mgr.userStat_list = make(map[string]*userStatInfo)
- }
- func (this *videoManager) playStat(beginTime, endTime string, partnerId int) (int, int, int, []*playStatInfo) {
- var (
- list []*playStatInfo
- totalReqTimes int
- totalPlayTimes int
- totalFailTimes int
- )
- end, _ := time.Parse(dateFormat, endTime)
- for begin, _ := time.Parse(dateFormat, beginTime); !begin.After(end); begin = begin.AddDate(0, 0, 1) {
- dateStr := begin.Format(dateFormat)
- key := fmt.Sprintf("%s_%d", dateStr, partnerId)
- v, ok := this.playStat_list[key]
- if ok {
- totalReqTimes += v.ReqTimes
- totalPlayTimes += v.PlayTimes
- totalFailTimes += v.FailTimes
- list = append(list, v)
- continue
- }
- for _, v := range playStat(dateStr, dateStr, partnerId) {
- log.Debug("videomgr.playStat ==> %+v", v)
- totalReqTimes += v.ReqTimes
- totalPlayTimes += v.PlayTimes
- totalFailTimes += v.FailTimes
- if begin.Format(dateFormat) == time.Now().Format(dateFormat) {
- list = append(list, v)
- continue
- }
- key = fmt.Sprintf("%s_%d", v.DateFlag, partnerId)
- this.playStat_list[key] = v
- list = append(list, v)
- }
- }
- sort.SliceStable(list, func(i, j int) bool {
- return list[i].DateFlag > list[j].DateFlag
- })
- return totalReqTimes, totalPlayTimes, totalFailTimes, list
- }
- func (this *videoManager) sourceStat(beginTime, endTime string, partnerId int) []*sourceInfo {
- var list []*sourceInfo
- end, _ := time.Parse(dateFormat, endTime)
- for begin, _ := time.Parse(dateFormat, beginTime); !begin.After(end); begin = begin.AddDate(0, 0, 1) {
- dateStr := begin.Format(dateFormat)
- key := fmt.Sprintf("%s_%d", dateStr, partnerId)
- v, ok := this.source_list[key]
- if ok {
- list = append(list, v...)
- continue
- }
- for _, v := range source(dateStr, dateStr, partnerId) {
- log.Debug("videomgr.sourceStat ==> %+v", v)
- if begin.Format(dateFormat) == time.Now().Format(dateFormat) {
- list = append(list, v)
- continue
- }
- key = fmt.Sprintf("%s_%d", v.DateFlag, partnerId)
- this.source_list[key] = append(this.source_list[key], v)
- list = append(list, v)
- }
- }
- sort.SliceStable(list, func(i, j int) bool {
- return list[i].DateFlag > list[j].DateFlag
- })
- return list
- }
- func (this *videoManager) indexStat(beginTime, endTime string) []*indexInfo {
- var list []*indexInfo
- end, _ := time.Parse(dateFormat, endTime)
- for begin, _ := time.Parse(dateFormat, beginTime); !begin.After(end); begin = begin.AddDate(0, 0, 1) {
- dateStr := begin.Format(dateFormat)
- v, ok := this.index_list[dateStr]
- if ok {
- list = append(list, v)
- continue
- }
- for _, v := range index(dateStr, dateStr) {
- log.Debug("videomgr.indexStat ==> %+v", v)
- if begin.Format(dateFormat) == time.Now().Format(dateFormat) {
- list = append(list, v)
- continue
- }
- this.index_list[v.DateFlag] = v
- list = append(list, v)
- }
- }
- sort.SliceStable(list, func(i, j int) bool {
- return list[i].DateFlag < list[j].DateFlag
- })
- return list
- }
- func (this *videoManager) userStat(beginTime, endTime string) []*userStatInfo {
- var list []*userStatInfo
- end, _ := time.Parse(dateFormat, endTime)
- for begin, _ := time.Parse(dateFormat, beginTime); !begin.After(end); begin = begin.AddDate(0, 0, 1) {
- dateStr := begin.Format(dateFormat)
- v, ok := this.userStat_list[dateStr]
- if ok {
- list = append(list, v)
- continue
- }
- for _, v := range userStat(dateStr, dateStr) {
- log.Debug("videomgr.userStat ==> %+v", v)
- if begin.Format(dateFormat) == time.Now().Format(dateFormat) {
- list = append(list, v)
- continue
- }
- this.userStat_list[v.DateFlag] = v
- list = append(list, v)
- }
- }
- sort.SliceStable(list, func(i, j int) bool {
- return list[i].DateFlag > list[j].DateFlag
- })
- return list
- }
|