go-common/app/interface/main/account/http/relation.go
2019-04-22 18:49:16 +08:00

928 lines
21 KiB
Go

package http
import (
"strconv"
"go-common/app/interface/main/account/model"
mrl "go-common/app/service/main/relation/model"
"go-common/library/ecode"
"go-common/library/log"
bm "go-common/library/net/http/blademaster"
"go-common/library/net/metadata"
"go-common/library/xstr"
)
var (
_defaultPS int64 = 50
)
// modify modify user relation.
func modify(c *bm.Context) {
var (
err error
act, fid int64
src uint64
params = c.Request.Form
mid, _ = c.Get("mid")
actStr = params.Get("act")
fidStr = params.Get("fid")
srcStr = params.Get("re_src")
ua = c.Request.Header.Get("User-Agent")
referer = c.Request.Header.Get("Referer")
sid string
realIP = metadata.String(c, metadata.RemoteIP)
)
if act, err = strconv.ParseInt(actStr, 10, 8); err != nil {
c.JSON(nil, ecode.RequestErr)
return
}
if fid, err = strconv.ParseInt(fidStr, 10, 64); err != nil || fid <= 0 {
c.JSON(nil, ecode.RequestErr)
return
}
if src, err = strconv.ParseUint(srcStr, 10, 64); err != nil {
c.JSON(nil, ecode.RequestErr)
return
}
sidCookie, err := c.Request.Cookie("sid")
if err != nil {
log.Warn("relation infoc get sid failed error(%v)", err)
} else {
sid = sidCookie.Value
}
buvid := c.Request.Header.Get("Buvid")
if buvid == "" {
buvidCookie, _ := c.Request.Cookie("buvid3")
if buvidCookie != nil {
buvid = buvidCookie.Value
}
}
ric := map[string]string{
"ip": realIP,
"User-Agent": ua,
"sid": sid,
"buvid": buvid,
"Referer": referer,
}
c.JSON(nil, relationSvc.Modify(c, mid.(int64), fid, int8(act), uint8(src), ric))
}
func batchModify(c *bm.Context) {
var (
err error
act int64
fids []int64
src uint64
params = c.Request.Form
// res = c.Result()
mid, _ = c.Get("mid")
actStr = params.Get("act")
fidsStr = params.Get("fids")
srcStr = params.Get("re_src")
ua = c.Request.Header.Get("User-Agent")
referer = c.Request.Header.Get("Referer")
sid string
realIP = metadata.String(c, metadata.RemoteIP)
)
if act, err = strconv.ParseInt(actStr, 10, 8); err != nil {
// res["code"] = ecode.RequestErr
c.JSON(nil, ecode.RequestErr)
return
}
if fids, err = xstr.SplitInts(fidsStr); err != nil || len(fids) <= 0 {
c.JSON(nil, ecode.RequestErr)
return
}
if src, err = strconv.ParseUint(srcStr, 10, 64); err != nil {
// res["code"] = ecode.RequestErr
c.JSON(nil, ecode.RequestErr)
return
}
sidCookie, err := c.Request.Cookie("sid")
if err != nil {
log.Warn("relation infoc get sid failed error(%v)", err)
} else {
sid = sidCookie.Value
}
buvid := c.Request.Header.Get("Buvid")
if buvid == "" {
buvidCookie, _ := c.Request.Cookie("buvid3")
if buvidCookie != nil {
buvid = buvidCookie.Value
}
}
ric := map[string]string{
"ip": realIP,
"User-Agent": ua,
"sid": sid,
"buvid": buvid,
"Referer": referer,
}
// res["code"] = relationSvc.Modify(c, mid.(int64), fid, int8(act), uint8(src), ric)
c.JSON(relationSvc.BatchModify(c, mid.(int64), fids, int8(act), uint8(src), ric))
}
// relation get relation between mid and fid.
func relation(c *bm.Context) {
var (
err error
fid int64
f *mrl.Following
params = c.Request.Form
fidStr = params.Get("fid")
mid, _ = c.Get("mid")
)
if fid, err = strconv.ParseInt(fidStr, 10, 64); err != nil {
c.JSON(nil, ecode.RequestErr)
return
}
if f, err = relationSvc.Relation(c, mid.(int64), fid); err != nil {
log.Error("relationSvc.Relation(%d, %d) error(%v)", mid, fid, err)
c.JSON(nil, err)
return
}
c.JSON(f, nil)
}
// relations get relations between mid and fids.
func relations(c *bm.Context) {
var (
err error
fm map[int64]*mrl.Following
fids []int64
params = c.Request.Form
fidsStr = params.Get("fids")
mid, _ = c.Get("mid")
)
if fids, err = xstr.SplitInts(fidsStr); err != nil {
c.JSON(nil, ecode.RequestErr)
log.Error("xstr.SplitInts(fids %v) err(%v)", fidsStr, err)
return
}
if fm, err = relationSvc.Relations(c, mid.(int64), fids); err != nil {
log.Error("relationSvc.Relations(%d, %v) error(%v)", mid, fids, err)
c.JSON(nil, err)
return
}
c.JSON(fm, nil)
}
// followings get user's following list.
func followings(c *bm.Context) {
var (
err error
mid, vmid int64
pn, ps int64
self bool
followings []*model.Following
params = c.Request.Form
vmidStr = params.Get("vmid")
psStr = params.Get("ps")
pnStr = params.Get("pn")
order = params.Get("order")
version uint64
versionStr = params.Get("re_version")
crc32v uint32
total int
)
midS, ok := c.Get("mid")
if ok {
mid = midS.(int64)
} else {
mid = 0
}
if vmid, err = strconv.ParseInt(vmidStr, 10, 64); err != nil || vmid <= 0 {
c.JSON(nil, ecode.RequestErr)
return
}
self = mid == vmid
if pnStr != "" {
if pn, err = strconv.ParseInt(pnStr, 10, 64); err != nil {
c.JSON(nil, ecode.RequestErr)
return
}
}
if pn <= 0 {
pn = 1
}
if !self && pn > 5 {
c.JSON(nil, ecode.RelFollowingGuestLimit)
return
}
if psStr != "" {
if ps, err = strconv.ParseInt(psStr, 10, 64); err != nil {
c.JSON(nil, ecode.RequestErr)
return
}
}
if ps <= 0 || ps > _defaultPS {
ps = _defaultPS
}
if versionStr != "" {
if version, err = strconv.ParseUint(versionStr, 10, 64); err != nil {
c.JSON(nil, ecode.RequestErr)
return
}
}
if order != "asc" {
order = "desc"
}
if followings, crc32v, total, err = relationSvc.Followings(c, vmid, mid, pn, ps, version, order); err != nil {
log.Error("relationSvc.Followings(%d) error(%v)", vmid, err)
c.JSON(nil, err)
return
}
c.JSON(map[string]interface{}{
"re_version": uint64(crc32v),
"list": followings,
"total": total,
}, nil)
}
// followers get user's follower list.
func followers(c *bm.Context) {
var (
err error
mid, vmid int64
pn, ps int64
self bool
fs []*model.Following
params = c.Request.Form
vmidStr = params.Get("vmid")
psStr = params.Get("ps")
pnStr = params.Get("pn")
version uint64
total int
versionStr = params.Get("re_version")
crc32v uint32
)
midS, ok := c.Get("mid")
if ok {
mid = midS.(int64)
} else {
mid = 0
}
if vmid, err = strconv.ParseInt(vmidStr, 10, 64); err != nil || vmid <= 0 {
c.JSON(nil, ecode.RequestErr)
return
}
self = mid == vmid
if pnStr != "" {
if pn, err = strconv.ParseInt(pnStr, 10, 64); err != nil {
c.JSON(nil, ecode.RequestErr)
return
}
}
if pn <= 0 {
pn = 1
}
if !self && pn > 5 {
c.JSON(nil, ecode.RelFollowingGuestLimit)
return
}
if psStr != "" {
if ps, err = strconv.ParseInt(psStr, 10, 64); err != nil {
c.JSON(nil, ecode.RequestErr)
return
}
}
if ps <= 0 || ps > _defaultPS {
ps = _defaultPS
}
if versionStr != "" {
if version, err = strconv.ParseUint(versionStr, 10, 64); err != nil {
c.JSON(nil, ecode.RequestErr)
return
}
}
if fs, crc32v, total, err = relationSvc.Followers(c, vmid, mid, pn, ps, version); err != nil {
log.Error("relationSvc.Followers(%d) error(%v)", mid, err)
c.JSON(nil, err)
return
}
c.JSON(map[string]interface{}{
"re_version": uint64(crc32v),
"list": fs,
"total": total,
}, nil)
}
// friends get user's friends list: follow eachother.
func friends(c *bm.Context) {
var (
err error
mid, _ = c.Get("mid")
followings []*model.Following
params = c.Request.Form
version uint64
versionStr = params.Get("re_version")
crc32v uint32
)
if versionStr != "" {
if version, err = strconv.ParseUint(versionStr, 10, 64); err != nil {
c.JSON(nil, ecode.RequestErr)
return
}
}
if followings, crc32v, err = relationSvc.Friends(c, mid.(int64), version); err != nil {
log.Error("relationSvc.Followings(%d) error(%v)", mid, err)
c.JSON(nil, err)
return
}
c.JSON(map[string]interface{}{
"re_version": uint64(crc32v),
"list": followings,
}, nil)
}
// Blacks get user's black list.
func blacks(c *bm.Context) {
var (
err error
blacks []*model.Following
mid, _ = c.Get("mid")
params = c.Request.Form
version uint64
pn, ps int64
total int
pnStr = params.Get("pn")
psStr = params.Get("ps")
versionStr = params.Get("re_version")
crc32v uint32
)
if versionStr != "" {
if version, err = strconv.ParseUint(versionStr, 10, 64); err != nil {
c.JSON(nil, ecode.RequestErr)
return
}
}
if pnStr != "" {
if pn, err = strconv.ParseInt(pnStr, 10, 64); err != nil {
c.JSON(nil, ecode.RequestErr)
return
}
}
if pn <= 0 {
pn = 1
}
if psStr != "" {
if ps, err = strconv.ParseInt(psStr, 10, 64); err != nil {
c.JSON(nil, ecode.RequestErr)
return
}
}
if ps <= 0 || ps > _defaultPS {
ps = _defaultPS
}
if blacks, crc32v, total, err = relationSvc.Blacks(c, mid.(int64), version, pn, ps); err != nil {
log.Error("relationSvc.Blacks(%d) error(%v)", mid, err)
c.JSON(nil, err)
return
}
c.JSON(map[string]interface{}{
"re_version": uint64(crc32v),
"list": blacks,
"total": total,
}, nil)
}
// whispers get user's whisper list.
func whispers(c *bm.Context) {
var (
err error
pn, ps int64
version uint64
crc32v uint32
whispers []*model.Following
mid, _ = c.Get("mid")
params = c.Request.Form
psStr = params.Get("ps")
pnStr = params.Get("pn")
versionStr = params.Get("re_version")
)
if versionStr != "" {
if version, err = strconv.ParseUint(versionStr, 10, 64); err != nil {
c.JSON(nil, ecode.RequestErr)
return
}
}
if pnStr != "" {
if pn, err = strconv.ParseInt(pnStr, 10, 64); err != nil {
c.JSON(nil, ecode.RequestErr)
return
}
}
if pn <= 0 {
pn = 1
}
if psStr != "" {
if ps, err = strconv.ParseInt(psStr, 10, 64); err != nil {
c.JSON(nil, ecode.RequestErr)
return
}
}
if ps <= 0 || ps > _defaultPS {
ps = _defaultPS
}
if whispers, crc32v, err = relationSvc.Whispers(c, mid.(int64), pn, ps, version); err != nil {
log.Error("relationSvc.Whispers(%d) error(%v)", mid, err)
c.JSON(nil, err)
return
}
c.JSON(map[string]interface{}{
"re_version": uint64(crc32v),
"list": whispers,
}, nil)
}
// stat get user's follower list.
func stat(c *bm.Context) {
var (
err error
mid, vmid int64
self bool
st *mrl.Stat
params = c.Request.Form
vmidStr = params.Get("vmid")
)
midS, ok := c.Get("mid")
if ok {
mid = midS.(int64)
} else {
mid = 0
}
if vmid, err = strconv.ParseInt(vmidStr, 10, 64); err != nil || vmid <= 0 {
c.JSON(nil, ecode.RequestErr)
return
}
self = mid == vmid
if st, err = relationSvc.Stat(c, vmid, self); err != nil {
log.Error("relationSvc.Followers(%d) error(%v)", mid, err)
c.JSON(nil, err)
return
}
c.JSON(st, nil)
}
// 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
}
sts, err := relationSvc.Stats(c, mids)
if err != nil {
c.JSON(nil, err)
return
}
c.JSON(sts, nil)
}
// tag 单个标签
func tag(c *bm.Context) {
var (
err error
pn, ps int64
mid, _ = c.Get("mid")
params = c.Request.Form
tagIDStr = params.Get("tagid")
tagid int64
psStr = params.Get("ps")
pnStr = params.Get("pn")
ti []*model.Tag
)
if tagIDStr == "" {
c.JSON(nil, ecode.RequestErr)
return
}
if tagid, err = strconv.ParseInt(tagIDStr, 10, 64); err != nil {
c.JSON(nil, ecode.RequestErr)
return
}
if pnStr != "" {
if pn, err = strconv.ParseInt(pnStr, 10, 64); err != nil {
log.Error("pn parse")
c.JSON(nil, ecode.RequestErr)
return
}
}
if pn <= 0 {
pn = 1
}
if psStr != "" {
if ps, err = strconv.ParseInt(psStr, 10, 64); err != nil {
c.JSON(nil, ecode.RequestErr)
return
}
}
if ps <= 0 || ps > _defaultPS {
ps = _defaultPS
}
if ti, err = relationSvc.Tag(c, mid.(int64), tagid, pn, ps); err != nil {
log.Error("relationSvc.Tag(%d).tag(%d) error(%v)", mid, tagid, err)
c.JSON(nil, err)
return
}
c.JSON(ti, nil)
}
// tags 列表:标签-计数
func tags(c *bm.Context) {
var (
err error
mid, _ = c.Get("mid")
tc []*mrl.TagCount
)
if tc, err = relationSvc.Tags(c, mid.(int64)); err != nil {
log.Error("relationSvc.Tags(%d). error(%v)", mid, err)
c.JSON(nil, err)
return
}
c.JSON(tc, nil)
}
// mobileTags 移动端 列表:标签-计数
func mobileTags(c *bm.Context) {
var (
err error
mid, _ = c.Get("mid")
tc map[string][]*mrl.TagCount
)
if tc, err = relationSvc.MobileTags(c, mid.(int64)); err != nil {
log.Error("relationSvc.Tags(%d). error(%v)", mid, err)
c.JSON(nil, err)
return
}
c.JSON(tc, nil)
}
// tagUser 用户-fid 标签列表
func tagUser(c *bm.Context) {
var (
err error
fid int64
mid, _ = c.Get("mid")
params = c.Request.Form
fidStr = params.Get("fid")
tc map[int64]string
)
if fid, err = strconv.ParseInt(fidStr, 10, 64); err != nil || fid <= 0 {
c.JSON(nil, ecode.RequestErr)
return
}
if tc, err = relationSvc.UserTag(c, mid.(int64), fid); err != nil {
log.Error("relationSvc.UserTag(%d).fid(%d) error(%v)", mid, fid, err)
c.JSON(nil, err)
return
}
c.JSON(tc, nil)
}
// tagCreate create tag.
func tagCreate(c *bm.Context) {
var (
err error
mid, _ = c.Get("mid")
params = c.Request.Form
tagStr = params.Get("tag")
cres int64
)
if tagStr == "" {
c.JSON(nil, ecode.RequestErr)
return
}
if cres, err = relationSvc.CreateTag(c, mid.(int64), tagStr); err != nil {
c.JSON(nil, err)
return
}
c.JSON(map[string]int64{
"tagid": cres,
}, nil)
}
// tagUpdate update tag.
func tagUpdate(c *bm.Context) {
var (
err error
mid, _ = c.Get("mid")
params = c.Request.Form
tagIDStr = params.Get("tagid")
tagID int64
newStr = params.Get("name")
)
if tagIDStr == "" || newStr == "" {
c.JSON(nil, ecode.RequestErr)
return
}
if tagID, err = strconv.ParseInt(tagIDStr, 10, 64); err != nil || tagID <= 0 {
c.JSON(nil, ecode.RequestErr)
return
}
c.JSON(nil, relationSvc.UpdateTag(c, mid.(int64), tagID, newStr))
}
// tagDel del tag.
func tagDel(c *bm.Context) {
var (
err error
mid, _ = c.Get("mid")
params = c.Request.Form
tagIDStr = params.Get("tagid")
tagID int64
)
if tagIDStr == "" {
c.JSON(nil, ecode.RequestErr)
return
}
if tagID, err = strconv.ParseInt(tagIDStr, 10, 64); err != nil || tagID <= 0 {
c.JSON(nil, ecode.RequestErr)
return
}
c.JSON(nil, relationSvc.DelTag(c, mid.(int64), tagID))
}
// tagsAddUsers tags add users.
func tagsAddUsers(c *bm.Context) {
var (
mid, _ = c.Get("mid")
params = c.Request.Form
tagidsStr = params.Get("tagids")
fidsStr = params.Get("fids")
)
if tagidsStr == "" || fidsStr == "" {
c.JSON(nil, ecode.RequestErr)
return
}
c.JSON(nil, relationSvc.TagsAddUsers(c, mid.(int64), tagidsStr, fidsStr))
}
// tagsCopyUsers tags copy users.
func tagsCopyUsers(c *bm.Context) {
var (
mid, _ = c.Get("mid")
params = c.Request.Form
tagidsStr = params.Get("tagids")
fidsStr = params.Get("fids")
)
if tagidsStr == "" || fidsStr == "" {
c.JSON(nil, ecode.RequestErr)
return
}
c.JSON(nil, relationSvc.TagsCopyUsers(c, mid.(int64), tagidsStr, fidsStr))
}
// tagsMoveUsers tags move users.
func tagsMoveUsers(c *bm.Context) {
var (
mid, _ = c.Get("mid")
params = c.Request.Form
beforeTagIdsStr = params.Get("beforeTagids")
afterTagIdsStr = params.Get("afterTagids")
fidsStr = params.Get("fids")
)
if beforeTagIdsStr == "" || afterTagIdsStr == "" || fidsStr == "" {
c.JSON(nil, ecode.RequestErr)
return
}
bid, err := strconv.ParseInt(beforeTagIdsStr, 10, 64)
if err != nil {
c.JSON(nil, ecode.RequestErr)
return
}
c.JSON(nil, relationSvc.TagsMoveUsers(c, mid.(int64), bid, afterTagIdsStr, fidsStr))
}
func prompt(c *bm.Context) {
mid, _ := c.Get("mid")
arg := new(mrl.ArgPrompt)
if err := c.Bind(arg); err != nil {
c.JSON(nil, ecode.RequestErr)
return
}
arg.Mid = mid.(int64)
b, err := relationSvc.Prompt(c, arg)
if err != nil {
c.JSON(nil, err)
return
}
c.JSON(map[string]interface{}{
"prompt": b,
}, nil)
}
func closePrompt(c *bm.Context) {
mid, _ := c.Get("mid")
arg := new(mrl.ArgPrompt)
if err := c.Bind(arg); err != nil {
return
}
arg.Mid = mid.(int64)
c.JSON(nil, relationSvc.ClosePrompt(c, arg))
}
func addSpecial(c *bm.Context) {
mid, _ := c.Get("mid")
arg := new(mrl.ArgFollowing)
if err := c.Bind(arg); err != nil {
return
}
arg.Mid = mid.(int64)
c.JSON(nil, relationSvc.AddSpecial(c, arg))
}
func delSpecial(c *bm.Context) {
mid, _ := c.Get("mid")
arg := new(mrl.ArgFollowing)
if err := c.Bind(arg); err != nil {
return
}
arg.Mid = mid.(int64)
c.JSON(nil, relationSvc.DelSpecial(c, arg))
}
func special(c *bm.Context) {
mid, _ := c.Get("mid")
c.JSON(relationSvc.Special(c, mid.(int64)))
}
// recommend get global recommend upper.
// deprecated
func recommend(c *bm.Context) {
c.JSON([]interface{}{}, nil)
}
func recommendFollowlistEmpty(c *bm.Context) {
dev, _ := c.Get("device")
mid, _ := c.Get("mid")
arg := &model.ArgRecommend{}
if err := c.Bind(arg); err != nil {
return
}
arg.Device = dev.(*bm.Device)
arg.Mid = mid.(int64)
arg.RemoteIP = metadata.String(c, metadata.RemoteIP)
c.JSON(relationSvc.RecommendFollowlistEmpty(c, arg))
}
func recommendAnswerOK(c *bm.Context) {
dev, _ := c.Get("device")
mid, _ := c.Get("mid")
arg := &model.ArgRecommend{}
if err := c.Bind(arg); err != nil {
return
}
arg.Device = dev.(*bm.Device)
arg.Mid = mid.(int64)
arg.RemoteIP = metadata.String(c, metadata.RemoteIP)
c.JSON(relationSvc.RecommendAnswerOK(c, arg))
}
func recommendTagSuggest(c *bm.Context) {
dev, _ := c.Get("device")
mid, _ := c.Get("mid")
arg := &model.ArgTagSuggestRecommend{}
if err := c.Bind(arg); err != nil {
return
}
arg.Device = dev.(*bm.Device)
arg.Mid = mid.(int64)
arg.RemoteIP = metadata.String(c, metadata.RemoteIP)
c.JSON(relationSvc.RecommendTagSuggest(c, arg))
}
func recommendTagSuggestDetail(c *bm.Context) {
dev, _ := c.Get("device")
mid, _ := c.Get("mid")
arg := &model.ArgTagSuggestRecommend{}
if err := c.Bind(arg); err != nil {
return
}
if arg.TagName == "" {
c.JSON(nil, ecode.RequestErr)
return
}
arg.Device = dev.(*bm.Device)
arg.Mid = mid.(int64)
arg.RemoteIP = metadata.String(c, metadata.RemoteIP)
c.JSON(relationSvc.RecommendTagSuggestDetail(c, arg))
}
// unread check unread status, for the 'show red point' function.
func unread(c *bm.Context) {
var (
err error
mid, _ = c.Get("mid")
show bool
)
disbaleAutoReset := c.Request.Form.Get("disableautoreset") == "1"
if show, err = relationSvc.Unread(c, mid.(int64), disbaleAutoReset); err != nil {
log.Error("relationSvc.Unread(%d) err(%v)", mid, err)
c.JSON(nil, err)
return
}
c.JSON(map[string]interface{}{
"show": show,
}, nil)
}
func unreadReset(c *bm.Context) {
var (
mid, _ = c.Get("mid")
)
c.JSON(nil, relationSvc.ResetUnread(c, mid.(int64)))
}
func unreadCount(c *bm.Context) {
var (
err error
mid, _ = c.Get("mid")
count int64
)
disbaleAutoReset := c.Request.Form.Get("disableautoreset") == "1"
if count, err = relationSvc.UnreadCount(c, mid.(int64), disbaleAutoReset); err != nil {
log.Error("relationSvc.UnreadCount(%d) err(%v)", mid, err)
return
}
c.JSON(map[string]interface{}{
"count": count,
}, nil)
}
func unreadCountReset(c *bm.Context) {
var (
mid, _ = c.Get("mid")
)
c.JSON(nil, relationSvc.ResetUnreadCount(c, mid.(int64)))
}
func achieveGet(ctx *bm.Context) {
arg := new(model.ArgAchieveGet)
if err := ctx.Bind(arg); err != nil {
return
}
mid, _ := ctx.Get("mid")
arg.Mid = mid.(int64)
if arg.Award != "10k" {
ctx.JSON(nil, ecode.RequestErr)
return
}
ctx.JSON(relationSvc.AchieveGet(ctx, arg))
}
func achieve(ctx *bm.Context) {
arg := new(model.ArgAchieve)
if err := ctx.Bind(arg); err != nil {
return
}
ctx.JSON(relationSvc.Achieve(ctx, arg))
}
func followerNotifySetting(c *bm.Context) {
var mid, _ = c.Get("mid")
c.JSON(relationSvc.FollowerNotifySetting(c, mid.(int64)))
}
func enableFollowerNotify(c *bm.Context) {
var mid, _ = c.Get("mid")
c.JSON(nil, relationSvc.EnableFollowerNotify(c, mid.(int64)))
}
func disableFollowerNotify(c *bm.Context) {
var mid, _ = c.Get("mid")
c.JSON(nil, relationSvc.DisableFollowerNotify(c, mid.(int64)))
}
func sameFollowings(c *bm.Context) {
arg := new(model.ArgSameFollowing)
if err := c.Bind(arg); err != nil {
return
}
mid, _ := c.Get("mid")
arg.Mid = mid.(int64)
if arg.Order != "asc" {
arg.Order = "desc"
}
if arg.PN <= 0 {
arg.PN = 1
}
if arg.PS <= 0 || arg.PS > _defaultPS {
arg.PS = _defaultPS
}
followings, crc32v, total, err := relationSvc.SameFollowings(c, arg)
if err != nil {
log.Error("relationSvc.SameFollowings(%+v) error(%v)", arg, err)
c.JSON(nil, err)
return
}
c.JSON(map[string]interface{}{
"re_version": uint64(crc32v),
"list": followings,
"total": total,
}, nil)
}