Browse Source

增加年度数据准备代码。

Signed-off-by: zouap <zouap@pcl.ac.cn>
tags/v1.22.11.2^2
zouap 3 years ago
parent
commit
25c0c625a2
2 changed files with 73 additions and 16 deletions
  1. +52
    -16
      models/user_business_analysis.go
  2. +21
    -0
      models/user_business_struct.go

+ 52
- 16
models/user_business_analysis.go View File

@@ -519,7 +519,7 @@ func QueryUserStaticDataForUserDefine(opts *UserBusinessAnalysisQueryOptions, wi
} }
CommitDatasetSizeMap, CommitDatasetNumMap := queryDatasetSize(start_unix, end_unix) CommitDatasetSizeMap, CommitDatasetNumMap := queryDatasetSize(start_unix, end_unix)
SolveIssueCountMap := querySolveIssue(start_unix, end_unix) SolveIssueCountMap := querySolveIssue(start_unix, end_unix)
CreateRepoCountMap := queryUserCreateRepo(start_unix, end_unix)
CreateRepoCountMap, _, _ := queryUserCreateRepo(start_unix, end_unix)
LoginCountMap := queryLoginCount(start_unix, end_unix) LoginCountMap := queryLoginCount(start_unix, end_unix)
OpenIIndexMap := queryUserRepoOpenIIndex(start_unix, end_unix) OpenIIndexMap := queryUserRepoOpenIIndex(start_unix, end_unix)
CloudBrainTaskMap, CloudBrainTaskItemMap := queryCloudBrainTask(start_unix, end_unix) CloudBrainTaskMap, CloudBrainTaskItemMap := queryCloudBrainTask(start_unix, end_unix)
@@ -770,7 +770,7 @@ func refreshUserStaticTable(wikiCountMap map[string]int, tableName string, pageS
//CommitCodeSizeMap := queryCommitCodeSize(StartTimeNextDay.Unix(), EndTimeNextDay.Unix()) //CommitCodeSizeMap := queryCommitCodeSize(StartTimeNextDay.Unix(), EndTimeNextDay.Unix())
CommitDatasetSizeMap, CommitDatasetNumMap := queryDatasetSize(start_unix, end_unix) CommitDatasetSizeMap, CommitDatasetNumMap := queryDatasetSize(start_unix, end_unix)
SolveIssueCountMap := querySolveIssue(start_unix, end_unix) SolveIssueCountMap := querySolveIssue(start_unix, end_unix)
CreateRepoCountMap := queryUserCreateRepo(start_unix, end_unix)
CreateRepoCountMap, DetailInfoMap, MostDownloadMap := queryUserCreateRepo(start_unix, end_unix)
LoginCountMap := queryLoginCount(start_unix, end_unix) LoginCountMap := queryLoginCount(start_unix, end_unix)


OpenIIndexMap := queryUserRepoOpenIIndex(startTime.Unix(), end_unix) OpenIIndexMap := queryUserRepoOpenIIndex(startTime.Unix(), end_unix)
@@ -883,6 +883,11 @@ func refreshUserStaticTable(wikiCountMap map[string]int, tableName string, pageS
userMetrics["TotalHasActivityUser"] = getMapKeyStringValue("TotalHasActivityUser", userMetrics) + 1 userMetrics["TotalHasActivityUser"] = getMapKeyStringValue("TotalHasActivityUser", userMetrics) + 1
} }
} }
if tableName == "user_business_analysis_current_year" {
//年度数据
log.Info(fmt.Sprint(len(DetailInfoMap)))
log.Info(fmt.Sprint(len(MostDownloadMap)))
}
} }
if len(dateRecordBatch) > 0 { if len(dateRecordBatch) > 0 {
err := insertTable(dateRecordBatch, tableName, statictisSess) err := insertTable(dateRecordBatch, tableName, statictisSess)
@@ -1015,7 +1020,7 @@ func CounDataByDateAndReCount(wikiCountMap map[string]int, startTime time.Time,
} }
CommitDatasetSizeMap, CommitDatasetNumMap := queryDatasetSize(start_unix, end_unix) CommitDatasetSizeMap, CommitDatasetNumMap := queryDatasetSize(start_unix, end_unix)
SolveIssueCountMap := querySolveIssue(start_unix, end_unix) SolveIssueCountMap := querySolveIssue(start_unix, end_unix)
CreateRepoCountMap := queryUserCreateRepo(start_unix, end_unix)
CreateRepoCountMap, _, _ := queryUserCreateRepo(start_unix, end_unix)
LoginCountMap := queryLoginCount(start_unix, end_unix) LoginCountMap := queryLoginCount(start_unix, end_unix)
OpenIIndexMap := queryUserRepoOpenIIndex(start_unix, end_unix) OpenIIndexMap := queryUserRepoOpenIIndex(start_unix, end_unix)
CloudBrainTaskMap, CloudBrainTaskItemMap := queryCloudBrainTask(start_unix, end_unix) CloudBrainTaskMap, CloudBrainTaskItemMap := queryCloudBrainTask(start_unix, end_unix)
@@ -1494,14 +1499,15 @@ func queryCommitAction(start_unix int64, end_unix int64, actionType int64) map[i
sess := x.NewSession() sess := x.NewSession()
defer sess.Close() defer sess.Close()
resultMap := make(map[int64]int) resultMap := make(map[int64]int)
cond := "user_id=act_user_id and op_type=" + fmt.Sprint(actionType) + " and created_unix>=" + fmt.Sprint(start_unix) + " and created_unix<=" + fmt.Sprint(end_unix)
mostActiveMap := make(map[int64]map[string]int)
cond := "user_id=act_user_id and created_unix>=" + fmt.Sprint(start_unix) + " and created_unix<=" + fmt.Sprint(end_unix)


count, err := sess.Where(cond).Count(new(Action)) count, err := sess.Where(cond).Count(new(Action))
if err != nil { if err != nil {
log.Info("query action error. return.") log.Info("query action error. return.")
return resultMap return resultMap
} }

var indexTotal int64 var indexTotal int64
indexTotal = 0 indexTotal = 0
for { for {
@@ -1511,13 +1517,22 @@ func queryCommitAction(start_unix int64, end_unix int64, actionType int64) map[i


log.Info("query action size=" + fmt.Sprint(len(actionList))) log.Info("query action size=" + fmt.Sprint(len(actionList)))
for _, actionRecord := range actionList { for _, actionRecord := range actionList {
if _, ok := resultMap[actionRecord.UserID]; !ok {
resultMap[actionRecord.UserID] = 1
if int64(actionRecord.OpType) == actionType {
if _, ok := resultMap[actionRecord.UserID]; !ok {
resultMap[actionRecord.UserID] = 1
} else {
resultMap[actionRecord.UserID] += 1
}
}
if _, ok := mostActiveMap[actionRecord.UserID]; !ok {
mostActiveMap[actionRecord.UserID] = 1
} else { } else {
resultMap[actionRecord.UserID] += 1
key := getDate(actionRecord.CreatedUnix)

mostActiveMap[actionRecord.UserID][key] = getMapKeyStringValue(key, mostActiveMap[actionRecord.UserID]) + 1
} }
}


}
indexTotal += PAGE_SIZE indexTotal += PAGE_SIZE
if indexTotal >= count { if indexTotal >= count {
break break
@@ -1526,6 +1541,9 @@ func queryCommitAction(start_unix int64, end_unix int64, actionType int64) map[i


return resultMap return resultMap
} }
func getDate(createTime timeutil.TimeStamp) string {
return ""
}


func queryCreateIssue(start_unix int64, end_unix int64) map[int64]int { func queryCreateIssue(start_unix int64, end_unix int64) map[int64]int {


@@ -1961,29 +1979,47 @@ func queryDatasetSize(start_unix int64, end_unix int64) (map[int64]int, map[int6
return resultSizeMap, resultNumMap return resultSizeMap, resultNumMap
} }


func queryUserCreateRepo(start_unix int64, end_unix int64) map[int64]int {
func queryUserCreateRepo(start_unix int64, end_unix int64) (map[int64]int, map[string]int, map[int64]string) {
sess := x.NewSession() sess := x.NewSession()
defer sess.Close() defer sess.Close()
resultMap := make(map[int64]int) resultMap := make(map[int64]int)


detailInfoMap := make(map[string]int)
mostDownloadMap := make(map[int64]string)

cond := "is_fork=false and created_unix>=" + fmt.Sprint(start_unix) + " and created_unix<=" + fmt.Sprint(end_unix) cond := "is_fork=false and created_unix>=" + fmt.Sprint(start_unix) + " and created_unix<=" + fmt.Sprint(end_unix)
count, err := sess.Where(cond).Count(new(Repository)) count, err := sess.Where(cond).Count(new(Repository))
if err != nil { if err != nil {
log.Info("query Repository error. return.") log.Info("query Repository error. return.")
return resultMap
return resultMap, detailInfoMap, mostDownloadMap
} }
var indexTotal int64 var indexTotal int64
indexTotal = 0 indexTotal = 0
for { for {
sess.Select("id,owner_id,name").Table("repository").Where(cond).OrderBy("id asc").Limit(PAGE_SIZE, int(indexTotal))
sess.Select("id,owner_id,name,is_private,clone_cnt").Table("repository").Where(cond).OrderBy("id asc").Limit(PAGE_SIZE, int(indexTotal))
repoList := make([]*Repository, 0) repoList := make([]*Repository, 0)
sess.Find(&repoList) sess.Find(&repoList)
log.Info("query Repository size=" + fmt.Sprint(len(repoList))) log.Info("query Repository size=" + fmt.Sprint(len(repoList)))
for _, repoRecord := range repoList { for _, repoRecord := range repoList {
if _, ok := resultMap[repoRecord.OwnerID]; !ok {
resultMap[repoRecord.OwnerID] = 1
resultMap[repoRecord.OwnerID] = getMapValue(repoRecord.OwnerID, resultMap) + 1

key := fmt.Sprint(repoRecord.OwnerID) + "_total"
detailInfoMap[key] = getMapKeyStringValue(key, detailInfoMap) + 1

if repoRecord.IsPrivate {
key := fmt.Sprint(repoRecord.OwnerID) + "_is_private"
detailInfoMap[key] = getMapKeyStringValue(key, detailInfoMap) + 1
} else { } else {
resultMap[repoRecord.OwnerID] += 1
key := fmt.Sprint(repoRecord.OwnerID) + "_is_public"
detailInfoMap[key] = getMapKeyStringValue(key, detailInfoMap) + 1
}
key = fmt.Sprint(repoRecord.OwnerID) + "_total_download"
detailInfoMap[key] = getMapKeyStringValue(key, detailInfoMap) + int(repoRecord.CloneCnt)

key = fmt.Sprint(repoRecord.OwnerID) + "_most_download"
if int(repoRecord.CloneCnt) > getMapKeyStringValue(key, detailInfoMap) {
detailInfoMap[key] = int(repoRecord.CloneCnt)
mostDownloadMap[repoRecord.OwnerID] = repoRecord.DisplayName()
} }
} }
indexTotal += PAGE_SIZE indexTotal += PAGE_SIZE
@@ -1992,7 +2028,7 @@ func queryUserCreateRepo(start_unix int64, end_unix int64) map[int64]int {
} }
} }


return resultMap
return resultMap, detailInfoMap, mostDownloadMap
} }


func queryUserRepoOpenIIndex(start_unix int64, end_unix int64) map[int64]float64 { func queryUserRepoOpenIIndex(start_unix int64, end_unix int64) map[int64]float64 {


+ 21
- 0
models/user_business_struct.go View File

@@ -2,6 +2,27 @@ package models


import "code.gitea.io/gitea/modules/timeutil" import "code.gitea.io/gitea/modules/timeutil"


type UserSummaryCurrentYear struct {
ID int64 `xorm:"pk"`
Email string `xorm:"NOT NULL"`
//user
Name string `xorm:"NOT NULL"`
Phone string `xorm:"NULL"`
//user
RegistDate timeutil.TimeStamp `xorm:"NOT NULL"`

DateCount int `xorm:"NOT NULL DEFAULT 0"`
MostActiveDay string `xorm:" NULL "` //08.05
RepoInfo string `xorm:"varchar(1000)"` //创建了XX 个项目,公开项目XX 个,私有项目XX 个累计被下载XXX 次,其中《XXXXXXX 》项目,获得了最高XXX 次下载
DataSetInfo string `xorm:"varchar(500)"` //创建了XX 个数据集,上传了XX 个数据集文件,累计被下载XX 次,被收藏XX 次
CodeInfo string `xorm:"varchar(500)"` //代码提交次数,提交总代码行数,最晚的提交时间
CloudBrainInfo string `xorm:"varchar(1000)"` //,创建了XX 个云脑任务,调试任务XX 个,训练任务XX 个,推理任务XX 个,累计运行了XXXX 卡时,累计节省xxxxx 元
//这些免费的算力资源分别有,XX% 来自鹏城云脑1,XX% 来自鹏城云脑2,XX% 来自智算网络
PlayARoll string `xorm:"varchar(500)"` //你参加了XX 次“我为开源打榜狂”活动,累计上榜XX 次,总共获得了社区XXX 元的激励

Label string `xorm:"varchar(500)"`
}

type UserBusinessAnalysisCurrentYear struct { type UserBusinessAnalysisCurrentYear struct {
ID int64 `xorm:"pk"` ID int64 `xorm:"pk"`
CountDate int64 `xorm:"pk"` CountDate int64 `xorm:"pk"`


Loading…
Cancel
Save