本文整理匯總了Golang中github.com/ginuerzh/sports/models.Account.UpdateStat方法的典型用法代碼示例。如果您正苦於以下問題:Golang Account.UpdateStat方法的具體用法?Golang Account.UpdateStat怎麽用?Golang Account.UpdateStat使用的例子?那麽, 這裏精選的方法代碼示例或許可以為您提供幫助。您也可以進一步了解該方法所在類github.com/ginuerzh/sports/models.Account
的用法示例。
在下文中一共展示了Account.UpdateStat方法的2個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的Golang代碼示例。
示例1: newRecordHandler
func newRecordHandler(request *http.Request, resp http.ResponseWriter,
redis *models.RedisLogger, user *models.Account, p Parameter) {
form := p.(newRecordForm)
rec := &models.Record{
Uid: user.Id,
Task: form.Task,
Type: form.Record.Type,
StartTime: time.Unix(form.Record.BeginTime, 0),
EndTime: time.Unix(form.Record.EndTime, 0),
PubTime: time.Now(),
}
awards := Awards{}
level := user.Level()
switch form.Record.Type {
case "post":
rec.Status = models.StatusFinish
if form.Task > 0 {
rec.Coin = (2 + level) * models.Satoshi
awards = Awards{
Score: 2 + level,
Literal: 2 + level,
Wealth: rec.Coin,
}
} else {
rec.Coin = 2 * models.Satoshi
awards = Awards{
Score: 2,
Literal: 2,
Wealth: rec.Coin,
}
}
GiveAwards(user, awards, redis)
redis.AddPost(user.Id, "", 1)
user.UpdateStat(models.StatArticles, 1)
case "game":
if form.Task > 0 {
awards = gameAwards(level, form.Record.GameScore, true)
//user.AddTask(models.Tasks[form.Task-1].Type, form.Task, nil)
rec.Status = models.StatusFinish
} else {
if form.Record.GameScore >= 100 &&
user.Stat != nil && user.Stat.LastGameTime < nowDate().Unix() {
awards = gameAwards(level, form.Record.GameScore, false)
}
user.UpdateStat(models.StatLastGameTime, time.Now().Unix())
}
GiveAwards(user, awards, redis)
rec.Game = &models.GameRecord{
Type: form.Record.GameType,
Name: form.Record.GameName,
Duration: form.Record.Duration,
Score: form.Record.GameScore,
Magic: int(awards.Mental),
}
rec.Coin = awards.Wealth
redis.AddGameTime(user.Id, int(form.Record.Duration))
user.UpdateStat(models.StatGameTime, form.Record.Duration)
redis.SetGameMaxScore(gameType(rec.Game.Type), user.Id, rec.Game.Score)
user.SetGameTime(gameType(rec.Game.Type), time.Now())
case "run":
if rec.Task > 0 {
rec.Delete()
}
rec.Sport = &models.SportRecord{
Source: form.Record.Source,
Duration: form.Record.Duration,
Distance: form.Record.Distance,
Weight: form.Record.Weight,
Mood: form.Record.Mood,
HeartRate: form.Record.HeartRate,
Pics: form.Record.Pics,
}
if rec.Sport.Weight == 0 {
rec.Sport.Weight = user.Weight
}
// update weight
if rec.Sport.Weight != user.Weight {
user.SetInfo(&models.SetInfo{Weight: rec.Sport.Weight})
}
if form.Record.Duration > 0 {
rec.Sport.Speed = float64(form.Record.Distance) / float64(form.Record.Duration)
}
rec.Status = models.StatusAuth
redis.AddRecord(user.Id, 1)
user.UpdateStat(models.StatRecords, 1)
/*
if len(form.Record.Source) > 0 {
level := user.Level()
//.........這裏部分代碼省略.........
示例2: newArticleHandler
func newArticleHandler(request *http.Request, resp http.ResponseWriter,
client *ApnClient, redis *models.RedisLogger, user *models.Account, p Parameter) {
form := p.(newArticleForm)
article := &models.Article{
Author: user.Id,
Contents: form.Contents,
PubTime: time.Now(),
Parent: form.Parent,
//Tags: form.Tags,
Loc: form.Location,
Type: form.Type,
}
article.Title, article.Images = articleCover(form.Contents)
if len(article.Images) > 0 {
article.Image = article.Images[0]
}
/*
if len(article.Tags) == 0 {
article.Tags = []string{"SPORT_LOG"}
}
*/
awards := Awards{}
parent := &models.Article{}
if len(form.Parent) > 0 {
if find, err := parent.FindById(form.Parent); !find {
e := errors.NewError(errors.NotExistsError, "文章不存在!")
if err != nil {
e = errors.NewError(errors.DbError)
}
writeResponse(request.RequestURI, resp, nil, e)
return
}
if redis.Relationship(parent.Author, user.Id) == models.RelBlacklist {
writeResponse(request.RequestURI, resp, nil,
errors.NewError(errors.AccessError, "對方屏蔽了你!"))
return
}
awards = Awards{Literal: 1 + user.Level(), Score: 1 + user.Level()}
} else {
if user.Stat != nil && user.Stat.LastArticleTime < nowDate().Unix() {
awards = Awards{Literal: 2 + user.Level(), Wealth: 2 * models.Satoshi, Score: 2 + user.Level()}
}
user.UpdateStat(models.StatLastArticleTime, time.Now().Unix())
}
if article.Type == models.ArticleRecord {
article.Coaches = []string{user.Id}
}
if article.Type == models.ArticleCoach {
if parent.Author != user.Id &&
user.Actor != models.ActorCoach && user.Actor != models.ActorAdmin {
writeResponse(request.RequestURI, resp, nil,
errors.NewError(errors.AccessError))
return
}
if err := article.Save(); err != nil {
log.Println(err)
writeResponse(request.RequestURI, resp, nil, err)
return
}
// ws push
event := &models.Event{
Type: models.EventArticle,
Time: time.Now().Unix(),
Data: models.EventData{
Type: models.EventCoach,
Id: parent.Id.Hex(),
From: user.Id,
//To: parent.Author,
Body: []models.MsgBody{
{Type: "total_count", Content: strconv.Itoa(parent.CoachReviewCount + 1)},
{Type: "image", Content: user.Profile},
},
},
}
for _, coach := range parent.Coaches {
if coach == user.Id {
continue
}
event.Data.To = coach
event.Save()
redis.PubMsg(models.EventArticle, coach, event.Bytes())
}
respData := map[string]interface{}{
"ExpEffect": Awards{},
}
writeResponse(request.RequestURI, resp, respData, nil)
return
}
if err := article.Save(); err != nil {
//.........這裏部分代碼省略.........