| @@ -1,6 +1,7 @@ | |||||
| package models | package models | ||||
| import ( | import ( | ||||
| "encoding/json" | |||||
| "fmt" | "fmt" | ||||
| "time" | "time" | ||||
| @@ -450,15 +451,28 @@ func QueryUserLoginInfo(userIds []int64) []*UserLoginLog { | |||||
| return loginList | return loginList | ||||
| } | } | ||||
| var WeekBonusData = make(map[int64][]int) | |||||
| func QueryUserAnnualReport(userId int64) *UserSummaryCurrentYear { | func QueryUserAnnualReport(userId int64) *UserSummaryCurrentYear { | ||||
| statictisSess := xStatistic.NewSession() | statictisSess := xStatistic.NewSession() | ||||
| defer statictisSess.Close() | defer statictisSess.Close() | ||||
| log.Info("userId=" + fmt.Sprint(userId)) | log.Info("userId=" + fmt.Sprint(userId)) | ||||
| if len(WeekBonusData) == 0 { | |||||
| WeekBonusData = getBonusWeekDataMap() | |||||
| } | |||||
| reList := make([]*UserSummaryCurrentYear, 0) | reList := make([]*UserSummaryCurrentYear, 0) | ||||
| err := statictisSess.Select("*").Table(new(UserSummaryCurrentYear)).Where("id=" + fmt.Sprint(userId)).Find(&reList) | err := statictisSess.Select("*").Table(new(UserSummaryCurrentYear)).Where("id=" + fmt.Sprint(userId)).Find(&reList) | ||||
| if err == nil { | if err == nil { | ||||
| if len(reList) > 0 { | if len(reList) > 0 { | ||||
| record, ok := WeekBonusData[userId] | |||||
| if ok { | |||||
| bonusInfo := make(map[string]int) | |||||
| bonusInfo["order"] = record[0] | |||||
| bonusInfo["money"] = record[1] | |||||
| bonusInfoJson, _ := json.Marshal(bonusInfo) | |||||
| reList[0].WeekBonusData = string(bonusInfoJson) | |||||
| } | |||||
| return reList[0] | return reList[0] | ||||
| } | } | ||||
| } else { | } else { | ||||
| @@ -880,6 +880,50 @@ func isUserYearData(tableName string) bool { | |||||
| return false | return false | ||||
| } | } | ||||
| func getBonusWeekDataMap() map[int64][]int { | |||||
| bonusMap := make(map[int64][]int) | |||||
| url := setting.RecommentRepoAddr + "bonus/weekdata/record.txt" | |||||
| content, err := GetContentFromPromote(url) | |||||
| if err == nil { | |||||
| filenames := strings.Split(content, "\n") | |||||
| for i := 0; i < len(filenames); i++ { | |||||
| url = setting.RecommentRepoAddr + "bonus/weekdata/" + filenames[i] | |||||
| csvContent, err1 := GetContentFromPromote(url) | |||||
| if err1 == nil { | |||||
| //read csv | |||||
| lines := strings.Split(csvContent, "\n") | |||||
| for j := 1; j < len(lines); j++ { | |||||
| aLine := strings.Split(lines[j], ",") | |||||
| if len(aLine) < 4 { | |||||
| continue | |||||
| } | |||||
| userId := getInt64Value(aLine[0]) | |||||
| order := getIntValue(aLine[2]) | |||||
| money := getIntValue(aLine[3]) | |||||
| //email := lines[2] | |||||
| record, ok := bonusMap[userId] | |||||
| if !ok { | |||||
| record = make([]int, 2) | |||||
| record[0] = order | |||||
| record[1] = money | |||||
| bonusMap[userId] = record | |||||
| } else { | |||||
| if record[0] > order { | |||||
| record[0] = order | |||||
| record[1] = money | |||||
| } else { | |||||
| if record[0] == order && record[1] < money { | |||||
| record[1] = money | |||||
| } | |||||
| } | |||||
| } | |||||
| } | |||||
| } | |||||
| } | |||||
| } | |||||
| return bonusMap | |||||
| } | |||||
| func getBonusMap() map[string]map[string]int { | func getBonusMap() map[string]map[string]int { | ||||
| bonusMap := make(map[string]map[string]int) | bonusMap := make(map[string]map[string]int) | ||||
| url := setting.RecommentRepoAddr + "bonus/record.txt" | url := setting.RecommentRepoAddr + "bonus/record.txt" | ||||
| @@ -923,6 +967,14 @@ func getIntValue(val string) int { | |||||
| return 0 | return 0 | ||||
| } | } | ||||
| func getInt64Value(val string) int64 { | |||||
| i, err := strconv.ParseInt(val, 10, 64) | |||||
| if err == nil { | |||||
| return i | |||||
| } | |||||
| return 0 | |||||
| } | |||||
| func getPlayARoll(bonusMap map[string]map[string]int, userName string, scoreMap map[string]float64) string { | func getPlayARoll(bonusMap map[string]map[string]int, userName string, scoreMap map[string]float64) string { | ||||
| bonusInfo := make(map[string]string) | bonusInfo := make(map[string]string) | ||||
| record, ok := bonusMap[userName] | record, ok := bonusMap[userName] | ||||
| @@ -18,9 +18,9 @@ type UserSummaryCurrentYear struct { | |||||
| CodeInfo string `xorm:"varchar(500)"` //代码提交次数,提交总代码行数,最晚的提交时间 | CodeInfo string `xorm:"varchar(500)"` //代码提交次数,提交总代码行数,最晚的提交时间 | ||||
| CloudBrainInfo string `xorm:"varchar(1000)"` //,创建了XX 个云脑任务,调试任务XX 个,训练任务XX 个,推理任务XX 个,累计运行了XXXX 卡时,累计节省xxxxx 元 | CloudBrainInfo string `xorm:"varchar(1000)"` //,创建了XX 个云脑任务,调试任务XX 个,训练任务XX 个,推理任务XX 个,累计运行了XXXX 卡时,累计节省xxxxx 元 | ||||
| //这些免费的算力资源分别有,XX% 来自鹏城云脑1,XX% 来自鹏城云脑2,XX% 来自智算网络 | //这些免费的算力资源分别有,XX% 来自鹏城云脑1,XX% 来自鹏城云脑2,XX% 来自智算网络 | ||||
| PlayARoll string `xorm:"varchar(500)"` //你参加了XX 次“我为开源打榜狂”活动,累计上榜XX 次,总共获得了社区XXX 元的激励 | |||||
| Label string `xorm:"varchar(500)"` | |||||
| PlayARoll string `xorm:"varchar(500)"` //你参加了XX 次“我为开源打榜狂”活动,累计上榜XX 次,总共获得了社区XXX 元的激励 | |||||
| WeekBonusData string `xorm:"-"` | |||||
| Label string `xorm:"varchar(500)"` | |||||
| } | } | ||||
| type UserBusinessAnalysisCurrentYear struct { | type UserBusinessAnalysisCurrentYear struct { | ||||