diff --git a/models/user_business_analysis.go b/models/user_business_analysis.go index 31e8cf6ac..65c54bb42 100644 --- a/models/user_business_analysis.go +++ b/models/user_business_analysis.go @@ -454,6 +454,12 @@ func refreshUserStaticTable(wikiCountMap map[string]int, tableName string, pageS OpenIIndexMap := queryUserRepoOpenIIndex(startTime.Unix(), end_unix) CloudBrainTaskMap, CloudBrainTaskItemMap := queryCloudBrainTask(start_unix, end_unix) AiModelManageMap := queryUserModel(start_unix, end_unix) + + CollectDataset, CollectedDataset := queryDatasetStars(start_unix, end_unix) + RecommendDataset := queryRecommedDataSet(start_unix, end_unix) + CollectImage, CollectedImage := queryImageStars(start_unix, end_unix) + RecommendImage := queryRecommedImage(start_unix, end_unix) + DataDate := currentTimeNow.Format("2006-01-02") + " 00:01" cond := "type != 1 and is_active=true" @@ -515,6 +521,13 @@ func refreshUserStaticTable(wikiCountMap map[string]int, tableName string, pageS dateRecordAll.NpuInferenceJob = getMapKeyStringValue(fmt.Sprint(dateRecordAll.ID)+"_NpuInferenceJob", CloudBrainTaskItemMap) dateRecordAll.GpuBenchMarkJob = getMapKeyStringValue(fmt.Sprint(dateRecordAll.ID)+"_GpuBenchMarkJob", CloudBrainTaskItemMap) dateRecordAll.CommitModelCount = getMapValue(dateRecordAll.ID, AiModelManageMap) + dateRecordAll.CollectDataset = getMapValue(dateRecordAll.ID, CollectDataset) + dateRecordAll.CollectedDataset = getMapValue(dateRecordAll.ID, CollectedDataset) + dateRecordAll.RecommendDataset = getMapValue(dateRecordAll.ID, RecommendDataset) + dateRecordAll.CollectImage = getMapValue(dateRecordAll.ID, CollectImage) + dateRecordAll.CollectedImage = getMapValue(dateRecordAll.ID, CollectedImage) + dateRecordAll.RecommendImage = getMapValue(dateRecordAll.ID, RecommendImage) + dateRecordAll.UserIndex = getUserIndexFromAnalysisAll(dateRecordAll, ParaWeight) userIndexMap[dateRecordAll.ID] = dateRecordAll.UserIndex if maxUserIndex < dateRecordAll.UserIndex { @@ -663,6 +676,12 @@ func CounDataByDateAndReCount(wikiCountMap map[string]int, startTime time.Time, OpenIIndexMap := queryUserRepoOpenIIndex(start_unix, end_unix) CloudBrainTaskMap, CloudBrainTaskItemMap := queryCloudBrainTask(start_unix, end_unix) AiModelManageMap := queryUserModel(start_unix, end_unix) + + CollectDataset, CollectedDataset := queryDatasetStars(start_unix, end_unix) + RecommendDataset := queryRecommedDataSet(start_unix, end_unix) + CollectImage, CollectedImage := queryImageStars(start_unix, end_unix) + RecommendImage := queryRecommedImage(start_unix, end_unix) + statictisSess := xStatistic.NewSession() defer statictisSess.Close() @@ -734,6 +753,14 @@ func CounDataByDateAndReCount(wikiCountMap map[string]int, startTime time.Time, dateRecord.GpuBenchMarkJob = getMapKeyStringValue(fmt.Sprint(dateRecord.ID)+"_GpuBenchMarkJob", CloudBrainTaskItemMap) dateRecord.CloudBrainRunTime = getMapKeyStringValue(fmt.Sprint(dateRecord.ID)+"_CloudBrainRunTime", CloudBrainTaskItemMap) dateRecord.CommitModelCount = getMapValue(dateRecord.ID, AiModelManageMap) + + dateRecord.CollectDataset = getMapValue(dateRecord.ID, CollectDataset) + dateRecord.CollectedDataset = getMapValue(dateRecord.ID, CollectedDataset) + dateRecord.RecommendDataset = getMapValue(dateRecord.ID, RecommendDataset) + dateRecord.CollectImage = getMapValue(dateRecord.ID, CollectImage) + dateRecord.CollectedImage = getMapValue(dateRecord.ID, CollectedImage) + dateRecord.RecommendImage = getMapValue(dateRecord.ID, RecommendImage) + dateRecord.UserIndex = getUserIndex(dateRecord, ParaWeight) setUserMetrics(userMetrics, userRecord, start_unix, end_unix, dateRecord) _, err = statictisSess.Insert(&dateRecord) @@ -1196,6 +1223,214 @@ func queryFollow(start_unix int64, end_unix int64) (map[int64]int, map[int64]int return resultMap, resultFocusedByOtherMap } +func queryRecommedDataSet(start_unix int64, end_unix int64) map[int64]int { + sess := x.NewSession() + defer sess.Close() + userIdDdatasetMap := make(map[int64]int) + cond := " created_unix>=" + fmt.Sprint(start_unix) + " and created_unix<=" + fmt.Sprint(end_unix) + " and recommend=true" + count, err := sess.Where(cond).Count(new(Dataset)) + if err != nil { + log.Info("query recommend dataset error. return.") + return userIdDdatasetMap + } + var indexTotal int64 + indexTotal = 0 + for { + sess.Select("id,user_id,recommend").Where(cond).Table(new(Dataset)).OrderBy("id asc").Limit(PAGE_SIZE, int(indexTotal)) + datasetList := make([]*Dataset, 0) + sess.Find(&datasetList) + log.Info("query datasetList size=" + fmt.Sprint(len(datasetList))) + for _, datasetRecord := range datasetList { + if _, ok := userIdDdatasetMap[datasetRecord.UserID]; !ok { + userIdDdatasetMap[datasetRecord.UserID] = 1 + } else { + userIdDdatasetMap[datasetRecord.UserID] += 1 + } + } + indexTotal += PAGE_SIZE + if indexTotal >= count { + break + } + } + return userIdDdatasetMap +} + +func queryAllDataSet() (map[int64]int64, map[int64]int64) { + sess := x.NewSession() + defer sess.Close() + datasetUserIdMap := make(map[int64]int64) + userIdDdatasetMap := make(map[int64]int64) + count, err := sess.Count(new(Dataset)) + if err != nil { + log.Info("query dataset error. return.") + return datasetUserIdMap, userIdDdatasetMap + } + var indexTotal int64 + indexTotal = 0 + for { + sess.Select("id,user_id").Table(new(Dataset)).OrderBy("id asc").Limit(PAGE_SIZE, int(indexTotal)) + datasetList := make([]*Dataset, 0) + sess.Find(&datasetList) + log.Info("query datasetList size=" + fmt.Sprint(len(datasetList))) + for _, datasetRecord := range datasetList { + datasetUserIdMap[datasetRecord.ID] = datasetRecord.UserID + if _, ok := userIdDdatasetMap[datasetRecord.UserID]; !ok { + userIdDdatasetMap[datasetRecord.UserID] = 1 + } else { + userIdDdatasetMap[datasetRecord.UserID] += 1 + } + } + indexTotal += PAGE_SIZE + if indexTotal >= count { + break + } + } + return datasetUserIdMap, userIdDdatasetMap +} + +func queryRecommedImage(start_unix int64, end_unix int64) map[int64]int { + sess := x.NewSession() + defer sess.Close() + userIdImageMap := make(map[int64]int) + cond := " created_unix>=" + fmt.Sprint(start_unix) + " and created_unix<=" + fmt.Sprint(end_unix) + " and type=5" + count, err := sess.Where(cond).Count(new(Image)) + if err != nil { + log.Info("query recommend image error. return.") + return userIdImageMap + } + var indexTotal int64 + indexTotal = 0 + for { + sess.Select("id,uid,type").Where(cond).Table(new(Image)).OrderBy("id asc").Limit(PAGE_SIZE, int(indexTotal)) + imageList := make([]*Image, 0) + sess.Find(&imageList) + log.Info("query imageList size=" + fmt.Sprint(len(imageList))) + for _, imageRecord := range imageList { + if _, ok := userIdImageMap[imageRecord.UID]; !ok { + userIdImageMap[imageRecord.UID] = 1 + } else { + userIdImageMap[imageRecord.UID] += 1 + } + } + indexTotal += PAGE_SIZE + if indexTotal >= count { + break + } + } + return userIdImageMap +} + +func queryAllImage() (map[int64]int64, map[int64]int64) { + sess := x.NewSession() + defer sess.Close() + imageUserIdMap := make(map[int64]int64) + userIdDImageMap := make(map[int64]int64) + count, err := sess.Count(new(Image)) + if err != nil { + log.Info("query image error. return.") + return imageUserIdMap, userIdDImageMap + } + var indexTotal int64 + indexTotal = 0 + for { + sess.Select("id,uid").Table(new(Image)).OrderBy("id asc").Limit(PAGE_SIZE, int(indexTotal)) + imageList := make([]*Image, 0) + sess.Find(&imageList) + log.Info("query imageList size=" + fmt.Sprint(len(imageList))) + for _, imageRecord := range imageList { + imageUserIdMap[imageRecord.ID] = imageRecord.UID + if _, ok := userIdDImageMap[imageRecord.UID]; !ok { + userIdDImageMap[imageRecord.UID] = 1 + } else { + userIdDImageMap[imageRecord.UID] += 1 + } + } + indexTotal += PAGE_SIZE + if indexTotal >= count { + break + } + } + return imageUserIdMap, userIdDImageMap +} + +func queryDatasetStars(start_unix int64, end_unix int64) (map[int64]int, map[int64]int) { + sess := x.NewSession() + defer sess.Close() + datasetCollect := make(map[int64]int) + datasetCollected := make(map[int64]int) + datasetUserIdMap, _ := queryAllDataSet() + cond := " created_unix>=" + fmt.Sprint(start_unix) + " and created_unix<=" + fmt.Sprint(end_unix) + count, err := sess.Where(cond).Count(new(DatasetStar)) + if err != nil { + log.Info("query follow error. return.") + return datasetCollect, datasetCollected + } + var indexTotal int64 + indexTotal = 0 + for { + sess.Select("id,uid,dataset_id").Table(new(DatasetStar)).Where(cond).OrderBy("id asc").Limit(PAGE_SIZE, int(indexTotal)) + datasetStarList := make([]*DatasetStar, 0) + sess.Find(&datasetStarList) + log.Info("query datasetStarList size=" + fmt.Sprint(len(datasetStarList))) + for _, datasetStarRecord := range datasetStarList { + if _, ok := datasetCollect[datasetStarRecord.UID]; !ok { + datasetCollect[datasetStarRecord.UID] = 1 + } else { + datasetCollect[datasetStarRecord.UID] += 1 + } + if _, ok := datasetCollected[datasetUserIdMap[datasetStarRecord.DatasetID]]; !ok { + datasetCollected[datasetUserIdMap[datasetStarRecord.DatasetID]] = 1 + } else { + datasetCollected[datasetUserIdMap[datasetStarRecord.DatasetID]] += 1 + } + } + indexTotal += PAGE_SIZE + if indexTotal >= count { + break + } + } + return datasetCollect, datasetCollected +} + +func queryImageStars(start_unix int64, end_unix int64) (map[int64]int, map[int64]int) { + sess := x.NewSession() + defer sess.Close() + imageCollect := make(map[int64]int) + imageCollected := make(map[int64]int) + imageUserIdMap, _ := queryAllDataSet() + cond := " created_unix>=" + fmt.Sprint(start_unix) + " and created_unix<=" + fmt.Sprint(end_unix) + count, err := sess.Where(cond).Count(new(ImageStar)) + if err != nil { + log.Info("query follow error. return.") + return imageCollect, imageCollected + } + var indexTotal int64 + indexTotal = 0 + for { + sess.Select("id,uid,dataset_id").Table(new(ImageStar)).Where(cond).OrderBy("id asc").Limit(PAGE_SIZE, int(indexTotal)) + imageStarList := make([]*ImageStar, 0) + sess.Find(&imageStarList) + log.Info("query imageStarList size=" + fmt.Sprint(len(imageStarList))) + for _, imageStarRecord := range imageStarList { + if _, ok := imageCollect[imageStarRecord.UID]; !ok { + imageCollect[imageStarRecord.UID] = 1 + } else { + imageCollect[imageStarRecord.UID] += 1 + } + if _, ok := imageCollected[imageUserIdMap[imageStarRecord.ImageID]]; !ok { + imageCollected[imageUserIdMap[imageStarRecord.ImageID]] = 1 + } else { + imageCollected[imageUserIdMap[imageStarRecord.ImageID]] += 1 + } + } + indexTotal += PAGE_SIZE + if indexTotal >= count { + break + } + } + return imageCollect, imageCollected +} + func queryDatasetSize(start_unix int64, end_unix int64) (map[int64]int, map[int64]int) { sess := x.NewSession() defer sess.Close()