Create & Init Project...

This commit is contained in:
2019-04-22 18:49:16 +08:00
commit fc4fa37393
25440 changed files with 4054998 additions and 0 deletions

View File

@@ -0,0 +1,45 @@
package(default_visibility = ["//visibility:public"])
load(
"@io_bazel_rules_go//go:def.bzl",
"go_library",
)
go_library(
name = "go_default_library",
srcs = [
"authority.go",
"csv.go",
"http.go",
"parameter.go",
"score.go",
"statistics.go",
],
importpath = "go-common/app/admin/main/up-rating/http",
tags = ["automanaged"],
visibility = ["//visibility:public"],
deps = [
"//app/admin/main/up-rating/conf:go_default_library",
"//app/admin/main/up-rating/model:go_default_library",
"//app/admin/main/up-rating/service:go_default_library",
"//library/ecode:go_default_library",
"//library/log:go_default_library",
"//library/net/http/blademaster:go_default_library",
"//library/net/http/blademaster/render:go_default_library",
"//vendor/github.com/pkg/errors:go_default_library",
],
)
filegroup(
name = "package-srcs",
srcs = glob(["**"]),
tags = ["automanaged"],
visibility = ["//visibility:private"],
)
filegroup(
name = "all-srcs",
srcs = [":package-srcs"],
tags = ["automanaged"],
visibility = ["//visibility:public"],
)

View File

@@ -0,0 +1,38 @@
package http
import (
"go-common/library/log"
"go-common/library/net/http/blademaster"
)
func addAuthority(c *blademaster.Context) {
v := new(struct {
MIDS []int64 `form:"mids,split" validate:"required"`
})
if err := c.Bind(v); err != nil {
return
}
num, err := svr.AddAuthority(c, v.MIDS)
if err != nil {
log.Error("svr.AddAuthority error(%v) arg(%v)", err, v)
c.JSON(nil, err)
return
}
c.JSON(num, nil)
}
func removeAuthority(c *blademaster.Context) {
v := new(struct {
MIDS []int64 `form:"mids,split" validate:"required"`
})
if err := c.Bind(v); err != nil {
return
}
num, err := svr.RemoveAuthority(c, v.MIDS)
if err != nil {
log.Error("svr.RemoveAuthority error(%v) arg(%v)", err, v)
c.JSON(nil, err)
return
}
c.JSON(num, nil)
}

View File

@@ -0,0 +1,47 @@
package http
import (
"fmt"
"net/http"
"github.com/pkg/errors"
)
// CSVContentType
var (
CSVContentType = []string{"application/csv"}
_ Render = CSV{}
)
// Render http reponse render.
type Render interface {
Render(http.ResponseWriter) error
WriteContentType(w http.ResponseWriter)
}
// CSV str.
type CSV struct {
Content []byte
Title string
}
// WriteContentType fn
func (j CSV) WriteContentType(w http.ResponseWriter) {
writeContentType(w, CSVContentType, j.Title)
}
func writeContentType(w http.ResponseWriter, value []string, title string) {
header := w.Header()
if val := header["Content-Type"]; len(val) == 0 {
header["Content-Type"] = value
}
header["Content-Disposition"] = append(header["Content-Disposition"], fmt.Sprintf("attachment; filename=%s.csv", title))
}
// Render (JSON) writes data with json ContentType.
func (j CSV) Render(w http.ResponseWriter) (err error) {
if _, err = w.Write(j.Content); err != nil {
err = errors.WithStack(err)
}
return
}

View File

@@ -0,0 +1,67 @@
package http
import (
"net/http"
"go-common/app/admin/main/up-rating/conf"
"go-common/app/admin/main/up-rating/service"
"go-common/library/log"
bm "go-common/library/net/http/blademaster"
)
var (
svr *service.Service
)
// Init init
func Init(c *conf.Config, s *service.Service) {
svr = s
engine := bm.DefaultServer(c.BM)
initRouter(engine)
if err := engine.Start(); err != nil {
log.Error("engine.Start error(%v)", err)
panic(err)
}
}
func initRouter(r *bm.Engine) {
r.Ping(ping)
rating := r.Group("/allowance/api/x/admin/rating")
statis := rating.Group("/statis")
{
statis.GET("/graph", statisGraph)
statis.GET("/list", statisList)
statis.GET("/export", statisExport)
}
score := rating.Group("/score")
{
score.GET("/list", scoreList)
score.GET("/export", scoreExport)
score.GET("/up/current", scoreCurrent)
score.GET("/up/history", scoreHistory)
}
param := rating.Group("/param")
{
param.POST("/insert", paramInsert)
}
trend := rating.Group("trend")
{
trend.GET("/ascend/list", ascList)
trend.GET("/descend/list", descList)
}
au := rating.Group("authority")
{
au.POST("/add", addAuthority)
au.POST("/remove", removeAuthority)
}
}
// ping check server ok.
func ping(c *bm.Context) {
var err error
if err = svr.Ping(c); err != nil {
log.Error("up-rating-admin ping error(%v)", err)
c.AbortWithStatus(http.StatusServiceUnavailable)
}
}

View File

@@ -0,0 +1,22 @@
package http
import (
"go-common/library/log"
bm "go-common/library/net/http/blademaster"
)
func paramInsert(c *bm.Context) {
v := new(struct {
Name string `form:"name"`
Value int `form:"value"`
Remark string `form:"remark"`
})
if err := c.Bind(v); err != nil {
return
}
err := svr.InsertParameter(c, v.Name, v.Remark, v.Value)
if err != nil {
log.Error("svr.InsertParameter error(%v)", err)
}
c.JSON(nil, err)
}

View File

@@ -0,0 +1,112 @@
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"),
})
}

View File

@@ -0,0 +1,142 @@
package http
import (
"fmt"
"net/http"
"time"
"go-common/library/log"
bm "go-common/library/net/http/blademaster"
"go-common/library/net/http/blademaster/render"
)
var (
_layout = "2006-01-02"
)
func statisGraph(c *bm.Context) {
v := new(struct {
Type int64 `form:"type"`
TagID string `form:"tag_id" validate:"required"`
Compare int `form:"compare"`
})
if err := c.Bind(v); err != nil {
return
}
data, err := svr.StatisGraph(c, v.Type, v.TagID, v.Compare)
if err != nil {
log.Error("svr.StatisGraph error(%v)", err)
c.JSON(nil, err)
return
}
c.JSON(data, nil)
}
func statisList(c *bm.Context) {
v := new(struct {
Type int64 `form:"type"`
TagID string `form:"tag_id" validate:"required"`
Compare int `form:"compare"`
})
if err := c.Bind(v); err != nil {
return
}
data, err := svr.StatisList(c, v.Type, v.TagID, v.Compare)
if err != nil {
log.Error("svr.StatisList error(%v)", err)
c.JSON(nil, err)
return
}
c.JSON(data, nil)
}
func statisExport(c *bm.Context) {
v := new(struct {
Type int64 `form:"type"`
TagID string `form:"tag_id" validate:"required"`
Compare int `form:"compare"`
})
if err := c.Bind(v); err != nil {
return
}
content, err := svr.StatisExport(c, v.Type, v.TagID, v.Compare)
if err != nil {
log.Error("svr.StatisExport error(%v)", err)
c.JSON(nil, err)
return
}
c.Render(http.StatusOK, CSV{
Content: content,
Title: fmt.Sprintf("%s-%s", time.Now().Format("2006-01-02"), "statistics"),
})
}
func ascList(c *bm.Context) {
v := new(struct {
Type string `form:"type" validate:"required"`
Tags []int64 `form:"tag_ids,split" validate:"required"`
Date string `form:"date" validate:"required"`
ScoreMin int `form:"score_min"`
ScoreMax int `form:"score_max"`
MID int64 `form:"mid"`
From int `form:"from" default:"0" validate:"min=0"`
Limit int `form:"limit" default:"20" validate:"min=1"`
})
if err := c.Bind(v); err != nil {
return
}
date, err := time.Parse(_layout, v.Date)
if err != nil {
return
}
total, data, err := svr.GetTrendAsc(c, v.Type, v.Tags, date, v.ScoreMin, v.ScoreMax, v.MID, v.From, v.Limit)
if err != nil {
log.Error("svr.GetTrendAsc error(%v)", err)
c.JSON(nil, err)
return
}
c.Render(http.StatusOK, render.MapJSON(map[string]interface{}{
"code": 0,
"message": "0",
"data": data,
"paging": map[string]int{
"page_size": v.Limit,
"total": total,
},
}))
}
func descList(c *bm.Context) {
v := new(struct {
Type string `form:"type" validate:"required"`
Tags []int64 `form:"tag_ids,split" validate:"required"`
Date string `form:"date" validate:"required"`
ScoreMin int `form:"score_min"`
ScoreMax int `form:"score_max"`
MID int64 `form:"mid"`
From int `form:"from" default:"0" validate:"min=0"`
Limit int `form:"limit" default:"20" validate:"min=1"`
})
if err := c.Bind(v); err != nil {
return
}
date, err := time.Parse(_layout, v.Date)
if err != nil {
return
}
total, data, err := svr.GetTrendDesc(c, v.Type, v.Tags, date, v.ScoreMin, v.ScoreMax, v.MID, v.From, v.Limit)
if err != nil {
log.Error("svr.GetTrendDesc error(%v)", err)
c.JSON(nil, err)
return
}
c.Render(http.StatusOK, render.MapJSON(map[string]interface{}{
"code": 0,
"message": "0",
"data": data,
"paging": map[string]int{
"page_size": v.Limit,
"total": total,
},
}))
}