Create & Init Project...
This commit is contained in:
52
app/service/main/relation/http/BUILD
Normal file
52
app/service/main/relation/http/BUILD
Normal file
@ -0,0 +1,52 @@
|
||||
package(default_visibility = ["//visibility:public"])
|
||||
|
||||
load(
|
||||
"@io_bazel_rules_go//go:def.bzl",
|
||||
"go_library",
|
||||
)
|
||||
|
||||
go_library(
|
||||
name = "go_default_library",
|
||||
srcs = [
|
||||
"black.go",
|
||||
"follower.go",
|
||||
"following.go",
|
||||
"http.go",
|
||||
"monitor.go",
|
||||
"relation.go",
|
||||
"stat.go",
|
||||
"tag.go",
|
||||
"whisper.go",
|
||||
],
|
||||
importpath = "go-common/app/service/main/relation/http",
|
||||
tags = ["automanaged"],
|
||||
visibility = ["//visibility:public"],
|
||||
deps = [
|
||||
"//app/service/main/relation/conf:go_default_library",
|
||||
"//app/service/main/relation/model:go_default_library",
|
||||
"//app/service/main/relation/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/middleware/antispam:go_default_library",
|
||||
"//library/net/http/blademaster/middleware/rate:go_default_library",
|
||||
"//library/net/http/blademaster/middleware/verify:go_default_library",
|
||||
"//library/net/metadata:go_default_library",
|
||||
"//library/time:go_default_library",
|
||||
"//library/xstr: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"],
|
||||
)
|
81
app/service/main/relation/http/black.go
Normal file
81
app/service/main/relation/http/black.go
Normal file
@ -0,0 +1,81 @@
|
||||
package http
|
||||
|
||||
import (
|
||||
"go-common/library/ecode"
|
||||
"strconv"
|
||||
|
||||
bm "go-common/library/net/http/blademaster"
|
||||
)
|
||||
|
||||
// Blacks get user's black list.
|
||||
func blacks(c *bm.Context) {
|
||||
var (
|
||||
err error
|
||||
mid int64
|
||||
params = c.Request.Form
|
||||
midStr = params.Get("mid")
|
||||
)
|
||||
if mid, err = strconv.ParseInt(midStr, 10, 64); err != nil {
|
||||
c.JSON(nil, ecode.RequestErr)
|
||||
return
|
||||
}
|
||||
c.JSON(relationSvc.Blacks(c, mid))
|
||||
}
|
||||
|
||||
// addBlack add black.
|
||||
func addBlack(c *bm.Context) {
|
||||
var (
|
||||
err error
|
||||
mid, fid int64
|
||||
src uint64
|
||||
params = c.Request.Form
|
||||
midStr = params.Get("mid")
|
||||
fidStr = params.Get("fid")
|
||||
srcStr = params.Get("src")
|
||||
)
|
||||
if mid, err = strconv.ParseInt(midStr, 10, 64); err != nil {
|
||||
c.JSON(nil, ecode.RequestErr)
|
||||
return
|
||||
}
|
||||
if fid, err = strconv.ParseInt(fidStr, 10, 64); err != nil {
|
||||
c.JSON(nil, ecode.RequestErr)
|
||||
return
|
||||
}
|
||||
if mid <= 0 || fid <= 0 {
|
||||
c.JSON(nil, ecode.RequestErr)
|
||||
return
|
||||
}
|
||||
if src, err = strconv.ParseUint(srcStr, 10, 8); err != nil {
|
||||
c.JSON(nil, ecode.RequestErr)
|
||||
return
|
||||
}
|
||||
ric := infocArg(c)
|
||||
c.JSON(nil, relationSvc.AddBlack(c, mid, fid, uint8(src), ric))
|
||||
}
|
||||
|
||||
// delBlack del black.
|
||||
func delBlack(c *bm.Context) {
|
||||
var (
|
||||
err error
|
||||
mid, fid int64
|
||||
src uint64
|
||||
params = c.Request.Form
|
||||
midStr = params.Get("mid")
|
||||
fidStr = params.Get("fid")
|
||||
srcStr = params.Get("src")
|
||||
)
|
||||
if mid, err = strconv.ParseInt(midStr, 10, 64); err != nil {
|
||||
c.JSON(nil, ecode.RequestErr)
|
||||
return
|
||||
}
|
||||
if fid, err = strconv.ParseInt(fidStr, 10, 64); err != nil {
|
||||
c.JSON(nil, ecode.RequestErr)
|
||||
return
|
||||
}
|
||||
if src, err = strconv.ParseUint(srcStr, 10, 8); err != nil {
|
||||
c.JSON(nil, ecode.RequestErr)
|
||||
return
|
||||
}
|
||||
ric := infocArg(c)
|
||||
c.JSON(nil, relationSvc.DelBlack(c, mid, fid, uint8(src), ric))
|
||||
}
|
70
app/service/main/relation/http/follower.go
Normal file
70
app/service/main/relation/http/follower.go
Normal file
@ -0,0 +1,70 @@
|
||||
package http
|
||||
|
||||
import (
|
||||
"strconv"
|
||||
|
||||
"go-common/library/ecode"
|
||||
bm "go-common/library/net/http/blademaster"
|
||||
)
|
||||
|
||||
// followers get user's follower list.
|
||||
func followers(c *bm.Context) {
|
||||
var (
|
||||
err error
|
||||
mid int64
|
||||
params = c.Request.Form
|
||||
midStr = params.Get("mid")
|
||||
)
|
||||
if mid, err = strconv.ParseInt(midStr, 10, 64); err != nil {
|
||||
c.JSON(nil, ecode.RequestErr)
|
||||
return
|
||||
}
|
||||
c.JSON(relationSvc.Followers(c, mid))
|
||||
}
|
||||
|
||||
// delFollower del follower.
|
||||
func delFollower(c *bm.Context) {
|
||||
var (
|
||||
err error
|
||||
mid, fid int64
|
||||
src uint64
|
||||
params = c.Request.Form
|
||||
midStr = params.Get("mid")
|
||||
fidStr = params.Get("fid")
|
||||
srcStr = params.Get("src")
|
||||
)
|
||||
if mid, err = strconv.ParseInt(midStr, 10, 64); err != nil {
|
||||
c.JSON(nil, ecode.RequestErr)
|
||||
return
|
||||
}
|
||||
if fid, err = strconv.ParseInt(fidStr, 10, 64); err != nil {
|
||||
c.JSON(nil, ecode.RequestErr)
|
||||
return
|
||||
}
|
||||
if mid <= 0 || fid <= 0 {
|
||||
c.JSON(nil, ecode.RequestErr)
|
||||
return
|
||||
}
|
||||
if src, err = strconv.ParseUint(srcStr, 10, 8); err != nil {
|
||||
c.JSON(nil, ecode.RequestErr)
|
||||
return
|
||||
}
|
||||
ric := infocArg(c)
|
||||
// mid移除粉丝fid:对fid对mid的关注状态进行更改
|
||||
c.JSON(nil, relationSvc.DelFollower(c, fid, mid, uint8(src), ric))
|
||||
}
|
||||
|
||||
// delFollowerCache del follower cache.
|
||||
func delFollowerCache(c *bm.Context) {
|
||||
var (
|
||||
err error
|
||||
mid int64
|
||||
params = c.Request.Form
|
||||
midStr = params.Get("mid")
|
||||
)
|
||||
if mid, err = strconv.ParseInt(midStr, 10, 64); err != nil {
|
||||
c.JSON(nil, ecode.RequestErr)
|
||||
return
|
||||
}
|
||||
c.JSON(nil, relationSvc.DelFollowerCache(c, mid))
|
||||
}
|
148
app/service/main/relation/http/following.go
Normal file
148
app/service/main/relation/http/following.go
Normal file
@ -0,0 +1,148 @@
|
||||
package http
|
||||
|
||||
import (
|
||||
"strconv"
|
||||
|
||||
"go-common/app/service/main/relation/model"
|
||||
"go-common/library/ecode"
|
||||
bm "go-common/library/net/http/blademaster"
|
||||
"go-common/library/time"
|
||||
)
|
||||
|
||||
// followings get user's following list.
|
||||
func followings(c *bm.Context) {
|
||||
var (
|
||||
err error
|
||||
mid int64
|
||||
params = c.Request.Form
|
||||
midStr = params.Get("mid")
|
||||
)
|
||||
if mid, err = strconv.ParseInt(midStr, 10, 64); err != nil {
|
||||
c.JSON(nil, ecode.RequestErr)
|
||||
return
|
||||
}
|
||||
c.JSON(relationSvc.Followings(c, mid))
|
||||
}
|
||||
|
||||
// addFollowing add following.
|
||||
func addFollowing(c *bm.Context) {
|
||||
var (
|
||||
err error
|
||||
mid, fid int64
|
||||
src uint64
|
||||
params = c.Request.Form
|
||||
midStr = params.Get("mid")
|
||||
fidStr = params.Get("fid")
|
||||
srcStr = params.Get("src")
|
||||
)
|
||||
if mid, err = strconv.ParseInt(midStr, 10, 64); err != nil {
|
||||
c.JSON(nil, ecode.RequestErr)
|
||||
return
|
||||
}
|
||||
if fid, err = strconv.ParseInt(fidStr, 10, 64); err != nil {
|
||||
c.JSON(nil, ecode.RequestErr)
|
||||
return
|
||||
}
|
||||
if mid <= 0 || fid <= 0 {
|
||||
c.JSON(nil, ecode.RequestErr)
|
||||
return
|
||||
}
|
||||
if src, err = strconv.ParseUint(srcStr, 10, 8); err != nil {
|
||||
c.JSON(nil, ecode.RequestErr)
|
||||
return
|
||||
}
|
||||
ric := infocArg(c)
|
||||
c.JSON(nil, relationSvc.AddFollowing(c, mid, fid, uint8(src), ric))
|
||||
}
|
||||
|
||||
// delFollowing del following.
|
||||
func delFollowing(c *bm.Context) {
|
||||
var (
|
||||
err error
|
||||
mid, fid int64
|
||||
src uint64
|
||||
params = c.Request.Form
|
||||
midStr = params.Get("mid")
|
||||
fidStr = params.Get("fid")
|
||||
srcStr = params.Get("src")
|
||||
)
|
||||
if mid, err = strconv.ParseInt(midStr, 10, 64); err != nil {
|
||||
c.JSON(nil, ecode.RequestErr)
|
||||
return
|
||||
}
|
||||
if fid, err = strconv.ParseInt(fidStr, 10, 64); err != nil {
|
||||
c.JSON(nil, ecode.RequestErr)
|
||||
return
|
||||
}
|
||||
if mid <= 0 || fid <= 0 {
|
||||
c.JSON(nil, ecode.RequestErr)
|
||||
return
|
||||
}
|
||||
if src, err = strconv.ParseUint(srcStr, 10, 8); err != nil {
|
||||
c.JSON(nil, ecode.RequestErr)
|
||||
return
|
||||
}
|
||||
ric := infocArg(c)
|
||||
c.JSON(nil, relationSvc.DelFollowing(c, mid, fid, uint8(src), ric))
|
||||
}
|
||||
|
||||
// delFollowingCache del following cache.
|
||||
func delFollowingCache(c *bm.Context) {
|
||||
var (
|
||||
err error
|
||||
mid int64
|
||||
params = c.Request.Form
|
||||
midStr = params.Get("mid")
|
||||
)
|
||||
if mid, err = strconv.ParseInt(midStr, 10, 64); err != nil {
|
||||
c.JSON(nil, ecode.RequestErr)
|
||||
return
|
||||
}
|
||||
c.JSON(nil, relationSvc.DelFollowingCache(c, mid))
|
||||
}
|
||||
|
||||
// updateFollowingCache update following cache.
|
||||
func updateFollowingCache(c *bm.Context) {
|
||||
var (
|
||||
err error
|
||||
mid, fid int64
|
||||
na uint64
|
||||
mts int64
|
||||
following *model.Following
|
||||
params = c.Request.Form
|
||||
midStr = params.Get("mid")
|
||||
fidStr = params.Get("fid")
|
||||
naStr = params.Get("attribute")
|
||||
mtStr = params.Get("mtime")
|
||||
)
|
||||
if mid, err = strconv.ParseInt(midStr, 10, 64); err != nil {
|
||||
c.JSON(nil, ecode.RequestErr)
|
||||
return
|
||||
}
|
||||
if fid, err = strconv.ParseInt(fidStr, 10, 64); err != nil {
|
||||
c.JSON(nil, ecode.RequestErr)
|
||||
return
|
||||
}
|
||||
if na, err = strconv.ParseUint(naStr, 10, 32); err != nil {
|
||||
c.JSON(nil, ecode.RequestErr)
|
||||
return
|
||||
}
|
||||
if mts, err = strconv.ParseInt(mtStr, 10, 64); err != nil {
|
||||
c.JSON(nil, ecode.RequestErr)
|
||||
return
|
||||
}
|
||||
following = &model.Following{
|
||||
Mid: fid,
|
||||
Attribute: uint32(na),
|
||||
MTime: time.Time(mts),
|
||||
}
|
||||
c.JSON(nil, relationSvc.UpdateFollowingCache(c, mid, following))
|
||||
}
|
||||
|
||||
func sameFollowings(c *bm.Context) {
|
||||
arg := new(model.ArgSameFollowing)
|
||||
if err := c.Bind(arg); err != nil {
|
||||
return
|
||||
}
|
||||
c.JSON(relationSvc.SameFollowings(c, arg))
|
||||
}
|
141
app/service/main/relation/http/http.go
Normal file
141
app/service/main/relation/http/http.go
Normal file
@ -0,0 +1,141 @@
|
||||
package http
|
||||
|
||||
import (
|
||||
"net/http"
|
||||
|
||||
"go-common/app/service/main/relation/conf"
|
||||
"go-common/app/service/main/relation/service"
|
||||
"go-common/library/log"
|
||||
bm "go-common/library/net/http/blademaster"
|
||||
"go-common/library/net/http/blademaster/middleware/antispam"
|
||||
"go-common/library/net/http/blademaster/middleware/rate"
|
||||
v "go-common/library/net/http/blademaster/middleware/verify"
|
||||
"go-common/library/net/metadata"
|
||||
)
|
||||
|
||||
var (
|
||||
anti *antispam.Antispam
|
||||
relationSvc *service.Service
|
||||
verify *v.Verify
|
||||
addFollowingRate *rate.Limiter
|
||||
)
|
||||
|
||||
// Init init http sever instance.
|
||||
func Init(c *conf.Config, s *service.Service) {
|
||||
relationSvc = s
|
||||
verify = v.New(c.Verify)
|
||||
anti = antispam.New(c.Antispam)
|
||||
addFollowingRate = rate.New(c.AddFollowingRate)
|
||||
// init inner router
|
||||
engine := bm.DefaultServer(c.BM)
|
||||
setupInnerEngine(engine)
|
||||
if err := engine.Start(); err != nil {
|
||||
log.Error("engine.Start() error(%v)", err)
|
||||
panic(err)
|
||||
}
|
||||
}
|
||||
|
||||
// innerRouter init inner router.
|
||||
func setupInnerEngine(e *bm.Engine) {
|
||||
// health check
|
||||
e.Ping(ping)
|
||||
e.Register(register)
|
||||
//new defined api lists
|
||||
g := e.Group("/x/internal/relation", verify.Verify)
|
||||
// relation
|
||||
g.GET("", relation)
|
||||
g.GET("/relations", relations)
|
||||
// stat
|
||||
g.GET("/stat", stat)
|
||||
g.GET("/stats", stats)
|
||||
// private api
|
||||
g.POST("/stat/set", setStat)
|
||||
g.POST("/tag/cache/del", delTagCache)
|
||||
g.GET("/tag/special", special)
|
||||
|
||||
// following group
|
||||
following := g.Group("/following")
|
||||
following.GET("/followings", followings)
|
||||
following.GET("/same/followings", sameFollowings)
|
||||
following.POST("/add", addFollowingRate.Handler(), anti.ServeHTTP, addFollowing)
|
||||
following.POST("/del", anti.ServeHTTP, delFollowing)
|
||||
|
||||
// whisper group
|
||||
whisper := g.Group("/whisper")
|
||||
whisper.GET("/whispers", whispers)
|
||||
whisper.POST("/add", anti.ServeHTTP, addWhisper)
|
||||
whisper.POST("/del", anti.ServeHTTP, delWhisper)
|
||||
|
||||
// black group
|
||||
black := g.Group("/black")
|
||||
black.GET("/blacks", blacks)
|
||||
black.POST("/add", anti.ServeHTTP, addBlack)
|
||||
black.POST("/del", anti.ServeHTTP, delBlack)
|
||||
|
||||
// follower group
|
||||
follower := g.Group("/follower")
|
||||
follower.GET("/followers", followers)
|
||||
follower.POST("/del", anti.ServeHTTP, delFollower)
|
||||
|
||||
// recommend group
|
||||
// recommend := g.Group("/recommend")
|
||||
// recommend.GET("/global/hot", globalHot)
|
||||
|
||||
// cache group
|
||||
cache := g.Group("/cache")
|
||||
cache.POST("/following/del", delFollowingCache)
|
||||
cache.POST("/following/update", updateFollowingCache)
|
||||
cache.POST("/follower/del", delFollowerCache)
|
||||
cache.POST("/stat/del", delStatCache)
|
||||
|
||||
// cache group
|
||||
admin := g.Group("/admin")
|
||||
admin.POST("/monitor/add", addMonitor)
|
||||
admin.POST("/monitor/del", delMonitor)
|
||||
admin.GET("/monitor/load", loadMonitor)
|
||||
}
|
||||
|
||||
// ping check server ok.
|
||||
func ping(c *bm.Context) {
|
||||
if err := relationSvc.Ping(c); err != nil {
|
||||
log.Error("service ping error(%v)", err)
|
||||
c.Writer.WriteHeader(http.StatusServiceUnavailable)
|
||||
}
|
||||
}
|
||||
|
||||
// register check server ok.
|
||||
func register(c *bm.Context) {
|
||||
c.JSON(map[string]struct{}{}, nil)
|
||||
}
|
||||
|
||||
func infocArg(c *bm.Context) (arg map[string]string) {
|
||||
var (
|
||||
ua string
|
||||
referer string
|
||||
sid string
|
||||
req = c.Request
|
||||
)
|
||||
ua = req.Header.Get(service.RelInfocUA)
|
||||
referer = req.Header.Get(service.RelInfocReferer)
|
||||
sidCookie, err := req.Cookie(service.RelInfocSid)
|
||||
if err != nil {
|
||||
log.Warn("relation infoc get sid failed error(%v)", err)
|
||||
} else {
|
||||
sid = sidCookie.Value
|
||||
}
|
||||
buvid := req.Header.Get(service.RelInfocHeaderBuvid)
|
||||
if buvid == "" {
|
||||
buvidCookie, _ := req.Cookie(service.RelInfocCookieBuvid)
|
||||
if buvidCookie != nil {
|
||||
buvid = buvidCookie.Value
|
||||
}
|
||||
}
|
||||
arg = map[string]string{
|
||||
service.RelInfocIP: metadata.String(c, metadata.RemoteIP),
|
||||
service.RelInfocReferer: referer,
|
||||
service.RelInfocSid: sid,
|
||||
service.RelInfocBuvid: buvid,
|
||||
service.RelInfocUA: ua,
|
||||
}
|
||||
return
|
||||
}
|
51
app/service/main/relation/http/monitor.go
Normal file
51
app/service/main/relation/http/monitor.go
Normal file
@ -0,0 +1,51 @@
|
||||
package http
|
||||
|
||||
import (
|
||||
"strconv"
|
||||
|
||||
"go-common/library/ecode"
|
||||
bm "go-common/library/net/http/blademaster"
|
||||
)
|
||||
|
||||
// addMonitor
|
||||
func addMonitor(c *bm.Context) {
|
||||
var (
|
||||
err error
|
||||
mid int64
|
||||
params = c.Request.Form
|
||||
midStr = params.Get("mid")
|
||||
)
|
||||
if mid, err = strconv.ParseInt(midStr, 10, 64); err != nil {
|
||||
c.JSON(nil, ecode.RequestErr)
|
||||
return
|
||||
}
|
||||
if mid <= 0 {
|
||||
c.JSON(nil, ecode.RequestErr)
|
||||
return
|
||||
}
|
||||
c.JSON(nil, relationSvc.AddMonitor(c, mid))
|
||||
}
|
||||
|
||||
// delMonitor
|
||||
func delMonitor(c *bm.Context) {
|
||||
var (
|
||||
err error
|
||||
mid int64
|
||||
params = c.Request.Form
|
||||
midStr = params.Get("mid")
|
||||
)
|
||||
if mid, err = strconv.ParseInt(midStr, 10, 64); err != nil {
|
||||
c.JSON(nil, ecode.RequestErr)
|
||||
return
|
||||
}
|
||||
if mid <= 0 {
|
||||
c.JSON(nil, ecode.RequestErr)
|
||||
return
|
||||
}
|
||||
c.JSON(nil, relationSvc.DelMonitor(c, mid))
|
||||
}
|
||||
|
||||
// loadMonitor
|
||||
func loadMonitor(c *bm.Context) {
|
||||
c.JSON(nil, relationSvc.LoadMonitor(c))
|
||||
}
|
54
app/service/main/relation/http/relation.go
Normal file
54
app/service/main/relation/http/relation.go
Normal file
@ -0,0 +1,54 @@
|
||||
package http
|
||||
|
||||
import (
|
||||
"strconv"
|
||||
"strings"
|
||||
|
||||
"go-common/library/ecode"
|
||||
bm "go-common/library/net/http/blademaster"
|
||||
)
|
||||
|
||||
// relation get relation between mid and fid.
|
||||
func relation(c *bm.Context) {
|
||||
var (
|
||||
err error
|
||||
mid, fid int64
|
||||
params = c.Request.Form
|
||||
midStr = params.Get("mid")
|
||||
fidStr = params.Get("fid")
|
||||
)
|
||||
if mid, err = strconv.ParseInt(midStr, 10, 64); err != nil {
|
||||
c.JSON(nil, ecode.RequestErr)
|
||||
return
|
||||
}
|
||||
if fid, err = strconv.ParseInt(fidStr, 10, 64); err != nil {
|
||||
c.JSON(nil, ecode.RequestErr)
|
||||
return
|
||||
}
|
||||
c.JSON(relationSvc.Relation(c, mid, fid))
|
||||
}
|
||||
|
||||
// relations get relations between mid and fids.
|
||||
func relations(c *bm.Context) {
|
||||
var (
|
||||
err error
|
||||
mid, fid int64
|
||||
fids []int64
|
||||
params = c.Request.Form
|
||||
midStr = params.Get("mid")
|
||||
fidsStr = params.Get("fids")
|
||||
)
|
||||
if mid, err = strconv.ParseInt(midStr, 10, 64); err != nil {
|
||||
c.JSON(nil, ecode.RequestErr)
|
||||
return
|
||||
}
|
||||
fidsStrArr := strings.Split(fidsStr, ",")
|
||||
for _, v := range fidsStrArr {
|
||||
if fid, err = strconv.ParseInt(v, 10, 64); err != nil {
|
||||
c.JSON(nil, ecode.RequestErr)
|
||||
return
|
||||
}
|
||||
fids = append(fids, fid)
|
||||
}
|
||||
c.JSON(relationSvc.Relations(c, mid, fids))
|
||||
}
|
113
app/service/main/relation/http/stat.go
Normal file
113
app/service/main/relation/http/stat.go
Normal file
@ -0,0 +1,113 @@
|
||||
package http
|
||||
|
||||
import (
|
||||
"strconv"
|
||||
|
||||
"go-common/app/service/main/relation/model"
|
||||
"go-common/library/ecode"
|
||||
bm "go-common/library/net/http/blademaster"
|
||||
"go-common/library/xstr"
|
||||
)
|
||||
|
||||
// stat get stat.
|
||||
func stat(c *bm.Context) {
|
||||
var (
|
||||
err error
|
||||
mid int64
|
||||
params = c.Request.Form
|
||||
midStr = params.Get("mid")
|
||||
)
|
||||
if mid, err = strconv.ParseInt(midStr, 10, 64); err != nil {
|
||||
c.JSON(nil, ecode.RequestErr)
|
||||
return
|
||||
}
|
||||
c.JSON(relationSvc.Stat(c, mid))
|
||||
}
|
||||
|
||||
// stat get user's follower list.
|
||||
func stats(c *bm.Context) {
|
||||
var (
|
||||
err error
|
||||
params = c.Request.Form
|
||||
midsStr = params.Get("mids")
|
||||
)
|
||||
mids, err := xstr.SplitInts(midsStr)
|
||||
if err != nil || len(mids) > 20 {
|
||||
c.JSON(nil, ecode.RequestErr)
|
||||
return
|
||||
}
|
||||
c.JSON(relationSvc.Stats(c, mids))
|
||||
}
|
||||
|
||||
// setStat set stat.
|
||||
func setStat(c *bm.Context) {
|
||||
var (
|
||||
err error
|
||||
mid int64
|
||||
f, w, b, fr int64
|
||||
st *model.Stat
|
||||
params = c.Request.Form
|
||||
midStr = params.Get("mid")
|
||||
fStr = params.Get("following")
|
||||
wStr = params.Get("whisper")
|
||||
bStr = params.Get("black")
|
||||
frStr = params.Get("follower")
|
||||
)
|
||||
if mid, err = strconv.ParseInt(midStr, 10, 64); err != nil {
|
||||
c.JSON(nil, ecode.RequestErr)
|
||||
return
|
||||
}
|
||||
if fStr == "" {
|
||||
f = -1
|
||||
} else {
|
||||
if f, err = strconv.ParseInt(fStr, 10, 64); err != nil {
|
||||
c.JSON(nil, ecode.RequestErr)
|
||||
return
|
||||
}
|
||||
}
|
||||
if wStr == "" {
|
||||
w = -1
|
||||
} else {
|
||||
if w, err = strconv.ParseInt(wStr, 10, 64); err != nil {
|
||||
c.JSON(nil, ecode.RequestErr)
|
||||
return
|
||||
}
|
||||
}
|
||||
if bStr == "" {
|
||||
b = -1
|
||||
} else {
|
||||
if b, err = strconv.ParseInt(bStr, 10, 64); err != nil {
|
||||
c.JSON(nil, ecode.RequestErr)
|
||||
return
|
||||
}
|
||||
}
|
||||
if frStr == "" {
|
||||
fr = -1
|
||||
} else {
|
||||
if fr, err = strconv.ParseInt(frStr, 10, 64); err != nil {
|
||||
c.JSON(nil, ecode.RequestErr)
|
||||
return
|
||||
}
|
||||
}
|
||||
st = &model.Stat{Following: f, Whisper: w, Black: b, Follower: fr}
|
||||
if st.Following == -1 && st.Whisper == -1 && st.Black == -1 && st.Follower == -1 {
|
||||
c.JSON(nil, ecode.RequestErr)
|
||||
return
|
||||
}
|
||||
c.JSON(nil, relationSvc.SetStat(c, mid, st))
|
||||
}
|
||||
|
||||
// delStatCache del stat cache.
|
||||
func delStatCache(c *bm.Context) {
|
||||
var (
|
||||
err error
|
||||
mid int64
|
||||
params = c.Request.Form
|
||||
midStr = params.Get("mid")
|
||||
)
|
||||
if mid, err = strconv.ParseInt(midStr, 10, 64); err != nil {
|
||||
c.JSON(nil, ecode.RequestErr)
|
||||
return
|
||||
}
|
||||
c.JSON(nil, relationSvc.DelStatCache(c, mid))
|
||||
}
|
36
app/service/main/relation/http/tag.go
Normal file
36
app/service/main/relation/http/tag.go
Normal file
@ -0,0 +1,36 @@
|
||||
package http
|
||||
|
||||
import (
|
||||
"strconv"
|
||||
|
||||
"go-common/library/ecode"
|
||||
bm "go-common/library/net/http/blademaster"
|
||||
)
|
||||
|
||||
func delTagCache(c *bm.Context) {
|
||||
var (
|
||||
err error
|
||||
mid int64
|
||||
params = c.Request.Form
|
||||
midStr = params.Get("mid")
|
||||
)
|
||||
if mid, err = strconv.ParseInt(midStr, 10, 64); err != nil {
|
||||
c.JSON(nil, ecode.RequestErr)
|
||||
return
|
||||
}
|
||||
c.JSON(nil, relationSvc.DelTagCache(c, mid))
|
||||
}
|
||||
|
||||
func special(c *bm.Context) {
|
||||
var (
|
||||
err error
|
||||
mid int64
|
||||
params = c.Request.Form
|
||||
midStr = params.Get("mid")
|
||||
)
|
||||
if mid, err = strconv.ParseInt(midStr, 10, 64); err != nil {
|
||||
c.JSON(nil, ecode.RequestErr)
|
||||
return
|
||||
}
|
||||
c.JSON(relationSvc.Special(c, mid))
|
||||
}
|
85
app/service/main/relation/http/whisper.go
Normal file
85
app/service/main/relation/http/whisper.go
Normal file
@ -0,0 +1,85 @@
|
||||
package http
|
||||
|
||||
import (
|
||||
"strconv"
|
||||
|
||||
"go-common/library/ecode"
|
||||
bm "go-common/library/net/http/blademaster"
|
||||
)
|
||||
|
||||
// whispers get user's whisper list.
|
||||
func whispers(c *bm.Context) {
|
||||
var (
|
||||
err error
|
||||
mid int64
|
||||
params = c.Request.Form
|
||||
midStr = params.Get("mid")
|
||||
)
|
||||
if mid, err = strconv.ParseInt(midStr, 10, 64); err != nil {
|
||||
c.JSON(nil, ecode.RequestErr)
|
||||
return
|
||||
}
|
||||
c.JSON(relationSvc.Whispers(c, mid))
|
||||
}
|
||||
|
||||
// addWhisper add whisper.
|
||||
func addWhisper(c *bm.Context) {
|
||||
var (
|
||||
err error
|
||||
mid, fid int64
|
||||
src uint64
|
||||
params = c.Request.Form
|
||||
midStr = params.Get("mid")
|
||||
fidStr = params.Get("fid")
|
||||
srcStr = params.Get("src")
|
||||
)
|
||||
if mid, err = strconv.ParseInt(midStr, 10, 64); err != nil {
|
||||
c.JSON(nil, ecode.RequestErr)
|
||||
return
|
||||
}
|
||||
if fid, err = strconv.ParseInt(fidStr, 10, 64); err != nil {
|
||||
c.JSON(nil, ecode.RequestErr)
|
||||
return
|
||||
}
|
||||
if mid <= 0 || fid <= 0 {
|
||||
c.JSON(nil, ecode.RequestErr)
|
||||
return
|
||||
}
|
||||
if src, err = strconv.ParseUint(srcStr, 10, 8); err != nil {
|
||||
c.JSON(nil, ecode.RequestErr)
|
||||
return
|
||||
}
|
||||
ric := infocArg(c)
|
||||
c.JSON(nil, relationSvc.AddWhisper(c, mid, fid, uint8(src), ric))
|
||||
}
|
||||
|
||||
// delWhisper del whisper.
|
||||
func delWhisper(c *bm.Context) {
|
||||
var (
|
||||
err error
|
||||
mid, fid int64
|
||||
src uint64
|
||||
params = c.Request.Form
|
||||
midStr = params.Get("mid")
|
||||
fidStr = params.Get("fid")
|
||||
srcStr = params.Get("src")
|
||||
)
|
||||
if mid, err = strconv.ParseInt(midStr, 10, 64); err != nil {
|
||||
c.JSON(nil, ecode.RequestErr)
|
||||
return
|
||||
}
|
||||
if fid, err = strconv.ParseInt(fidStr, 10, 64); err != nil {
|
||||
c.JSON(nil, ecode.RequestErr)
|
||||
return
|
||||
}
|
||||
if mid <= 0 || fid <= 0 {
|
||||
c.JSON(nil, ecode.RequestErr)
|
||||
return
|
||||
}
|
||||
if src, err = strconv.ParseUint(srcStr, 10, 8); err != nil {
|
||||
c.JSON(nil, ecode.RequestErr)
|
||||
return
|
||||
}
|
||||
ric := infocArg(c)
|
||||
c.JSON(nil, relationSvc.DelWhisper(c, mid, fid, uint8(src), ric))
|
||||
}
|
Reference in New Issue
Block a user