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.
108 lines
2.8 KiB
108 lines
2.8 KiB
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() |
|
}
|
|
|