123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108 |
- package service
- import (
- "net/url"
- "sort"
- "time"
- "go-common/app/admin/ep/melloi/model"
- "go-common/library/log"
- )
- //TreesQuery Get service tree
- func (s *Service) TreesQuery() (*model.TreeList, error) {
- return s.dao.TreesQuery()
- }
- //TreeNumQuery Get service tree num
- func (s *Service) TreeNumQuery() (*model.NumList, error) {
- return s.dao.TreeNumQuery()
- }
- //TopHttpQuery Get top 10 url
- func (s *Service) TopHttpQuery() (res *model.TopAPIRes, err error) {
- if res, err = s.dao.TopHttpQuery(); err != nil {
- log.Error("service.rank error:(%v)", err)
- return
- }
- for _, api := range res.APIList {
- u, errURL := url.Parse(api.URL)
- if errURL != nil {
- log.Error("service.rank error:(%v)", errURL)
- return
- }
- api.URL = u.Host + u.Path
- }
- return
- }
- //TopGrpcQuery Top Grpc Query
- func (s *Service) TopGrpcQuery() (*model.GrpcRes, error) {
- return s.dao.TopGrpcQuery()
- }
- //TopSceneQuery Top Scene Query
- func (s *Service) TopSceneQuery() (*model.SceneRes, error) {
- return s.dao.TopSceneQuery()
- }
- //TopDeptQuery Get top 10 department
- func (s *Service) TopDeptQuery() (*model.TopDeptRes, error) {
- return s.dao.TopDeptQuery()
- }
- //BuildLineQuery Get test line
- func (s *Service) BuildLineQuery(rank *model.Rank, summary *model.ReportSummary) (res *model.BuildLineRes, err error) {
- var timePart time.Duration
- //根据传入时间
- timeLayout := "2006-01-02 15:04:05"
- if rank.StartTime == "" && rank.EndTime == "" {
- rank.StartTime = time.Now().Add(time.Hour * -24).Format(timeLayout)
- rank.EndTime = time.Now().Format(timeLayout)
- } else if rank.StartTime == "" {
- loc, _ := time.LoadLocation("Local") //重要:获取时区
- theTime, _ := time.ParseInLocation(timeLayout, rank.EndTime, loc) //使用模板在对应时区转化为time.time类型
- if timePart, err = time.ParseDuration("-24h"); err != nil {
- log.Error("service.rank error:(%v)", err)
- return
- }
- rank.StartTime = theTime.Add(timePart).Format(timeLayout)
- } else if rank.EndTime == "" {
- rank.EndTime = time.Now().Format(timeLayout)
- }
- if res, err = s.dao.BuildLineQuery(rank, summary); err != nil {
- log.Error("service.rank error:(%v)", err)
- return
- }
- var myDateMap = make(map[string]int)
- for _, bu := range res.BuildList {
- if _, ok := myDateMap[bu.Date]; ok {
- myDateMap[bu.Date]++
- } else {
- myDateMap[bu.Date] = 1
- }
- }
- sortedKeys := make([]string, 0)
- for k := range myDateMap {
- sortedKeys = append(sortedKeys, k)
- }
- sort.Strings(sortedKeys)
- var mySortedMap = make(map[string]int)
- res.BuildList = []*model.Build{}
- for _, k := range sortedKeys {
- mySortedMap[k] = myDateMap[k]
- bu := model.Build{Date: k, Count: myDateMap[k]}
- res.BuildList = append(res.BuildList, &bu)
- }
- return
- }
- //StateLineQuery Get test state line
- func (s *Service) StateLineQuery() (*model.StateLineRes, error) {
- return s.dao.StateLineQuery()
- }
|