Browse Source

Merge pull request '项目看板对'所有'的情况处理逻辑修改' (#794) from fix-674 into V20211115

Reviewed-on: https://git.openi.org.cn/OpenI/aiforge/pulls/794
Reviewed-by: lewis <747342561@qq.com>
pull/797/head
lewis 3 years ago
parent
commit
c77fe22224
1 changed files with 37 additions and 10 deletions
  1. +37
    -10
      routers/api/v1/repo/repo_dashbord.go

+ 37
- 10
routers/api/v1/repo/repo_dashbord.go View File

@@ -107,6 +107,7 @@ func GetAllProjectsPeriodStatistics(ctx *context.Context) {
ctx.Error(http.StatusBadRequest, ctx.Tr("repo.total_count_get_error"))
return
}
sql := generateSqlByType(ctx, beginTime, endTime, latestDate, q, orderBy, page, pageSize)

projectsPeriodData := ProjectsPeriodData{
RecordBeginTime: recordBeginTime.Format(DATE_FORMAT),
@@ -114,13 +115,23 @@ func GetAllProjectsPeriodStatistics(ctx *context.Context) {
TotalPage: getTotalPage(total, pageSize),
TotalCount: total,
LastUpdatedTime: latestUpdatedTime,
PageRecords: models.GetRepoStatisticByRawSql(generatePageSql(beginTime, endTime, latestDate, q, orderBy, page, pageSize)),
PageRecords: models.GetRepoStatisticByRawSql(sql),
}

ctx.JSON(http.StatusOK, projectsPeriodData)

}

func generateSqlByType(ctx *context.Context, beginTime time.Time, endTime time.Time, latestDate string, q string, orderBy string, page int, pageSize int) string {
sql := ""
if ctx.QueryTrim("type") == "all" {
sql = generateTypeAllSql(beginTime, endTime, latestDate, q, orderBy, page, pageSize)
} else {
sql = generatePageSql(beginTime, endTime, latestDate, q, orderBy, page, pageSize)
}
return sql
}

func ServeAllProjectsPeriodStatisticsFile(ctx *context.Context) {

recordBeginTime, err := getRecordBeginTime()
@@ -175,7 +186,7 @@ func ServeAllProjectsPeriodStatisticsFile(ctx *context.Context) {
writer.Write(allProjectsPeroidHeader(ctx))
for i := 0; i <= totalPage; i++ {

pageRecords := models.GetRepoStatisticByRawSql(generatePageSql(beginTime, endTime, latestDate, q, orderBy, i+1, pageSize))
pageRecords := models.GetRepoStatisticByRawSql(generateSqlByType(ctx, beginTime, endTime, latestDate, q, orderBy, i+1, pageSize))
for _, record := range pageRecords {
e = writer.Write(allProjectsPeroidValues(record, ctx))
if e != nil {
@@ -358,11 +369,11 @@ func generateTargetSql(beginTime time.Time, endTime time.Time, repoId int64) str
return sql
}

func generateCountSql(beginTime time.Time, endTime time.Time, yesterday string, q string) string {
func generateCountSql(beginTime time.Time, endTime time.Time, latestDate string, q string) string {
countSql := "SELECT count(*) FROM " +
"(SELECT repo_id 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='" + yesterday + "') B" +
"(SELECT repo_id,name,is_private,radar_total from public.repo_statistic where date='" + latestDate + "') B" +
" where A.repo_id=B.repo_id"
if q != "" {
countSql = countSql + " and B.name like '%" + q + "%'"
@@ -370,18 +381,34 @@ func generateCountSql(beginTime time.Time, endTime time.Time, yesterday string,
return countSql
}

func generatePageSql(beginTime time.Time, endTime time.Time, yesterday string, q string, orderBy string, page int, pageSize int) string {
countSql := "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 " +
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 " +
"(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" +
" where A.repo_id=B.repo_id"

if q != "" {
sql = sql + " and name like '%" + q + "%'"
}
sql = sql + " order by " + orderBy + " desc,repo_id" + " limit " + strconv.Itoa(pageSize) + " offset " + strconv.Itoa((page-1)*pageSize)
return sql
}

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 " +
"(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='" + yesterday + "') B" +
"(SELECT repo_id,name,is_private,radar_total from public.repo_statistic where date='" + latestDate + "') B" +
" where A.repo_id=B.repo_id"
if q != "" {
countSql = countSql + " and B.name like '%" + q + "%'"
sql = sql + " and B.name like '%" + q + "%'"
}
countSql = countSql + " order by " + orderBy + " desc,A.repo_id" + " limit " + strconv.Itoa(pageSize) + " offset " + strconv.Itoa((page-1)*pageSize)
return countSql
sql = sql + " order by " + orderBy + " desc,A.repo_id" + " limit " + strconv.Itoa(pageSize) + " offset " + strconv.Itoa((page-1)*pageSize)
return sql
}

func getOrderBy(ctx *context.Context) string {


Loading…
Cancel
Save