@@ -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 { | ||||