go-common/app/admin/main/up-rating/http/score.go

113 lines
2.6 KiB
Go
Raw Normal View History

2019-04-22 10:49:16 +00:00
package http
import (
"fmt"
"net/http"
"time"
"go-common/app/admin/main/up-rating/model"
"go-common/library/ecode"
"go-common/library/log"
"go-common/library/net/http/blademaster"
"go-common/library/net/http/blademaster/render"
)
func scoreList(ctx *blademaster.Context) {
arg := new(model.RatingListArg)
if err := ctx.Bind(arg); err != nil {
log.Error("scoreList ctx.Bind error(%v)", err)
return
}
date := time.Now()
if arg.ScoreDate != "" {
var err error
if date, err = time.ParseInLocation("2006-01", arg.ScoreDate, time.Local); err != nil {
log.Error("date(%s) parse error", arg.ScoreDate)
err = ecode.RequestErr
return
}
}
res, total, err := svr.RatingList(ctx, arg, date)
if err != nil {
log.Error("svr.RatingList error(%v) arg(%v)", err, arg)
ctx.JSON(nil, err)
return
}
ctx.Render(http.StatusOK, render.MapJSON(map[string]interface{}{
"code": 0,
"message": "0",
"data": res,
"paging": &model.Paging{
Ps: arg.Limit,
Total: total,
},
}))
}
func scoreCurrent(ctx *blademaster.Context) {
arg := new(struct {
MID int64 `form:"mid" validate:"required"`
})
if err := ctx.Bind(arg); err != nil {
log.Error("ctx.Bind error(%v)", err)
return
}
res, err := svr.ScoreCurrent(ctx, arg.MID)
if err != nil {
log.Error("svr.ScoreCurrent error(%v) arg(%v)", err, arg)
ctx.JSON(nil, err)
return
}
ctx.JSON(res, nil)
}
func scoreHistory(ctx *blademaster.Context) {
arg := new(model.UpRatingHistoryArg)
if err := ctx.Bind(arg); err != nil {
log.Error("ctx.Bind error(%v)", err)
return
}
types := []model.ScoreType{
model.Creativity,
model.Influence,
model.Credit,
}
if arg.ScoreType != model.Magnetic {
types = []model.ScoreType{arg.ScoreType}
}
res, err := svr.ScoreHistory(ctx, types, arg.Mid, arg.Month == 0, arg.Month)
if err != nil {
log.Error("svr.RatingList error(%v) arg(%v)", err, arg)
ctx.JSON(nil, err)
return
}
ctx.JSON(&model.UpRatingHistoryResp{Data: res}, nil)
}
func scoreExport(ctx *blademaster.Context) {
arg := new(model.RatingListArg)
if err := ctx.Bind(arg); err != nil {
log.Error("scoreList ctx.Bind error(%v)", err)
return
}
date := time.Now()
if arg.ScoreDate != "" {
var err error
if date, err = time.ParseInLocation("2006-01", arg.ScoreDate, time.Local); err != nil {
log.Error("date(%s) parse error", arg.ScoreDate)
err = ecode.RequestErr
return
}
}
content, err := svr.ExportScores(ctx, arg, date)
if err != nil {
ctx.JSON(nil, err)
log.Error("up-rating svr.ExportScores error(%v)", err)
return
}
ctx.Render(http.StatusOK, CSV{
Content: content,
Title: fmt.Sprintf("%s-%s", time.Now().Format("2006-01-02"), "scores"),
})
}