From 3cfff30e8b303b98795b6eb6fd4a2635dd189194 Mon Sep 17 00:00:00 2001 From: ychao_1983 Date: Tue, 16 Nov 2021 09:49:02 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0owner=E4=BB=A5=E4=BE=BF?= =?UTF-8?q?=E5=89=8D=E7=AB=AF=E8=83=BD=E5=8C=BA=E5=88=86=E5=90=8C=E5=90=8D?= =?UTF-8?q?=E9=A1=B9=E7=9B=AE=EF=BC=8C=E7=BB=9F=E8=AE=A1=E6=9C=AC=E5=91=A8?= =?UTF-8?q?=E4=BB=8E=E5=91=A8=E4=B8=80=E5=BC=80=E5=A7=8B=EF=BC=8C=E4=BB=BB?= =?UTF-8?q?=E5=8A=A10=E5=AE=8C=E6=88=90=E6=AF=94=E4=BE=8B100%?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- models/repo_statistic.go | 1 + routers/api/v1/repo/repo_dashbord.go | 19 +++++++++++++------ routers/repo/repo_statistic.go | 18 +++++++++++------- 3 files changed, 25 insertions(+), 13 deletions(-) diff --git a/models/repo_statistic.go b/models/repo_statistic.go index df065bb79..0b2ded07a 100755 --- a/models/repo_statistic.go +++ b/models/repo_statistic.go @@ -12,6 +12,7 @@ type RepoStatistic struct { ID int64 `xorm:"pk autoincr" json:"-"` RepoID int64 `xorm:"unique(s) NOT NULL" json:"repo_id"` Name string `xorm:"INDEX" json:"name"` + OwnerName string `json:"ownerName"` IsPrivate bool `json:"isPrivate"` Date string `xorm:"unique(s) NOT NULL" json:"date"` NumWatches int64 `xorm:"NOT NULL DEFAULT 0" json:"watch"` diff --git a/routers/api/v1/repo/repo_dashbord.go b/routers/api/v1/repo/repo_dashbord.go index c08a7d8ca..0af607349 100644 --- a/routers/api/v1/repo/repo_dashbord.go +++ b/routers/api/v1/repo/repo_dashbord.go @@ -243,13 +243,20 @@ func allProjectsPeroidHeader(ctx *context.Context) []string { } func allProjectsPeroidValues(rs *models.RepoStatistic, ctx *context.Context) []string { - return []string{strconv.FormatInt(rs.RepoID, 10), rs.Name, getIsPrivateDisplay(rs.IsPrivate, ctx), strconv.FormatFloat(rs.RadarTotal, 'f', 2, 64), + return []string{strconv.FormatInt(rs.RepoID, 10), constructDistinctName(rs), getIsPrivateDisplay(rs.IsPrivate, ctx), strconv.FormatFloat(rs.RadarTotal, 'f', 2, 64), strconv.FormatInt(rs.NumVisits, 10), strconv.FormatInt(rs.NumDownloads, 10), strconv.FormatInt(rs.NumPulls, 10), strconv.FormatInt(rs.NumCommits, 10), strconv.FormatInt(rs.NumWatches, 10), strconv.FormatInt(rs.NumStars, 10), strconv.FormatInt(rs.NumForks, 10), strconv.FormatInt(rs.NumIssues, 10), strconv.FormatInt(rs.NumClosedIssues, 10), strconv.FormatInt(rs.NumContributor, 10), } } +func constructDistinctName(rs *models.RepoStatistic) string { + if rs.OwnerName == "" { + return rs.Name + } + return rs.OwnerName + "/" + rs.Name +} + func getIsPrivateDisplay(private bool, ctx *context.Context) string { if private { return ctx.Tr("admin.repos.yes") @@ -390,11 +397,11 @@ func generateCountSql(beginTime time.Time, endTime time.Time, latestDate string, } func generateTypeAllSql(beginTime time.Time, endTime time.Time, latestDate string, q string, orderBy string, page int, pageSize int) string { - sql := "SELECT A.repo_id,name,is_private,radar_total,num_watches,num_visits,num_downloads,num_pulls,num_commits,num_stars,num_forks,num_issues,num_closed_issues,num_contributor FROM " + + sql := "SELECT A.repo_id,name,owner_name,is_private,radar_total,num_watches,num_visits,num_downloads,num_pulls,num_commits,num_stars,num_forks,num_issues,num_closed_issues,num_contributor FROM " + "(SELECT repo_id,sum(num_visits) as num_visits " + " FROM repo_statistic where created_unix >=" + strconv.FormatInt(beginTime.Unix(), 10) + " and created_unix<" + strconv.FormatInt(endTime.Unix(), 10) + " group by repo_id) A," + - "(SELECT repo_id,name,is_private,radar_total,num_watches,num_downloads,num_pulls,num_commits,num_stars,num_forks,num_issues,num_closed_issues,num_contributor from public.repo_statistic where date='" + latestDate + "') B" + + "(SELECT repo_id,name,owner_name,is_private,radar_total,num_watches,num_downloads,num_pulls,num_commits,num_stars,num_forks,num_issues,num_closed_issues,num_contributor from public.repo_statistic where date='" + latestDate + "') B" + " where A.repo_id=B.repo_id" if q != "" { @@ -406,11 +413,11 @@ func generateTypeAllSql(beginTime time.Time, endTime time.Time, latestDate strin func generatePageSql(beginTime time.Time, endTime time.Time, latestDate string, q string, orderBy string, page int, pageSize int) string { - sql := "SELECT A.repo_id,name,is_private,radar_total,num_watches,num_visits,num_downloads,num_pulls,num_commits,num_stars,num_forks,num_issues,num_closed_issues,num_contributor FROM " + + sql := "SELECT A.repo_id,name,owner_name,is_private,radar_total,num_watches,num_visits,num_downloads,num_pulls,num_commits,num_stars,num_forks,num_issues,num_closed_issues,num_contributor FROM " + "(SELECT repo_id,sum(num_watches_added) as num_watches,sum(num_visits) as num_visits, sum(num_downloads_added) as num_downloads,sum(num_pulls_added) as num_pulls,sum(num_commits_added) as num_commits,sum(num_stars_added) as num_stars,sum(num_forks_added) num_forks,sum(num_issues_added) as num_issues,sum(num_closed_issues_added) as num_closed_issues,sum(num_contributor_added) as num_contributor " + " FROM repo_statistic where created_unix >=" + strconv.FormatInt(beginTime.Unix(), 10) + " and created_unix<" + strconv.FormatInt(endTime.Unix(), 10) + " group by repo_id) A," + - "(SELECT repo_id,name,is_private,radar_total from public.repo_statistic where date='" + latestDate + "') B" + + "(SELECT repo_id,name,owner_name,is_private,radar_total from public.repo_statistic where date='" + latestDate + "') B" + " where A.repo_id=B.repo_id" if q != "" { sql = sql + " and B.name like '%" + q + "%'" @@ -470,7 +477,7 @@ func getTimePeroid(ctx *context.Context, recordBeginTime time.Time) (time.Time, beginTime = time.Date(endTime.Year(), endTime.Month(), endTime.Day(), 0, 0, 0, 0, now.Location()) } else if queryType == "current_week" { - beginTime = now.AddDate(0, 0, -int(time.Now().Weekday())+1) + beginTime = now.AddDate(0, 0, -int(time.Now().Weekday())+2) //begin from monday beginTime = time.Date(beginTime.Year(), beginTime.Month(), beginTime.Day(), 0, 0, 0, 0, now.Location()) endTime = now } else if queryType == "current_month" { diff --git a/routers/repo/repo_statistic.go b/routers/repo/repo_statistic.go index c1edb0fed..25245a80b 100755 --- a/routers/repo/repo_statistic.go +++ b/routers/repo/repo_statistic.go @@ -59,6 +59,8 @@ func RepoStatisticDaily(date string) { var issueFixedRate float32 if repo.NumIssues != 0 { issueFixedRate = float32(repo.NumClosedIssues) / float32(repo.NumIssues) + } else { + issueFixedRate = 1.0 } var numVersions int64 @@ -87,13 +89,15 @@ func RepoStatisticDaily(date string) { } repoStat := models.RepoStatistic{ - RepoID: repo.ID, - Date: date, - Name: repo.Name, - IsPrivate: repo.IsPrivate, - NumWatches: int64(repo.NumWatches), - NumStars: int64(repo.NumStars), - NumForks: int64(repo.NumForks), + RepoID: repo.ID, + Date: date, + Name: repo.Name, + IsPrivate: repo.IsPrivate, + OwnerName: repo.OwnerName, + NumWatches: int64(repo.NumWatches), + NumStars: int64(repo.NumStars), + NumForks: int64(repo.NumForks), + NumDownloads: repo.CloneCnt, NumComments: numComments, NumVisits: int64(numVisits),