20251209
This commit is contained in:
@@ -0,0 +1,156 @@
|
||||
package api
|
||||
|
||||
import (
|
||||
"bbs-go/internal/controllers/render"
|
||||
"bbs-go/internal/models"
|
||||
"bbs-go/internal/pkg/errs"
|
||||
"bbs-go/internal/services"
|
||||
"strconv"
|
||||
|
||||
"github.com/emirpasic/gods/sets/hashset"
|
||||
"github.com/kataras/iris/v12"
|
||||
"github.com/mlogclub/simple/web"
|
||||
"github.com/mlogclub/simple/web/params"
|
||||
)
|
||||
|
||||
type FansController struct {
|
||||
Ctx iris.Context
|
||||
}
|
||||
|
||||
func (c *FansController) PostFollow() *web.JsonResult {
|
||||
user := services.UserTokenService.GetCurrent(c.Ctx)
|
||||
if user == nil {
|
||||
return web.JsonError(errs.NotLogin)
|
||||
}
|
||||
|
||||
otherId := params.FormValueInt64Default(c.Ctx, "userId", 0)
|
||||
if otherId <= 0 {
|
||||
return web.JsonErrorMsg("param: userId required")
|
||||
}
|
||||
|
||||
err := services.UserFollowService.Follow(user.Id, otherId)
|
||||
if err != nil {
|
||||
return web.JsonError(err)
|
||||
}
|
||||
return web.JsonSuccess()
|
||||
}
|
||||
|
||||
func (c *FansController) PostUnfollow() *web.JsonResult {
|
||||
user := services.UserTokenService.GetCurrent(c.Ctx)
|
||||
if user == nil {
|
||||
return web.JsonError(errs.NotLogin)
|
||||
}
|
||||
|
||||
otherId := params.FormValueInt64Default(c.Ctx, "userId", 0)
|
||||
if otherId <= 0 {
|
||||
return web.JsonErrorMsg("param: userId required")
|
||||
}
|
||||
|
||||
err := services.UserFollowService.UnFollow(user.Id, otherId)
|
||||
if err != nil {
|
||||
return web.JsonError(err)
|
||||
}
|
||||
return web.JsonSuccess()
|
||||
}
|
||||
|
||||
func (c *FansController) GetIsfollowed() *web.JsonResult {
|
||||
userId := params.FormValueInt64Default(c.Ctx, "userId", 0)
|
||||
current := services.UserTokenService.GetCurrent(c.Ctx)
|
||||
var followed = false
|
||||
if current != nil && current.Id != userId {
|
||||
followed = services.UserFollowService.IsFollowed(current.Id, userId)
|
||||
}
|
||||
return web.JsonData(followed)
|
||||
}
|
||||
|
||||
func (c *FansController) GetFans() *web.JsonResult {
|
||||
userId := params.FormValueInt64Default(c.Ctx, "userId", 0)
|
||||
cursor := params.FormValueInt64Default(c.Ctx, "cursor", 0)
|
||||
userIds, cursor, hasMore := services.UserFollowService.GetFans(userId, cursor, 10)
|
||||
|
||||
current := services.UserTokenService.GetCurrent(c.Ctx)
|
||||
var followedSet hashset.Set
|
||||
if current != nil {
|
||||
followedSet = services.UserFollowService.IsFollowedUsers(current.Id, userIds...)
|
||||
}
|
||||
|
||||
var itemList []*models.UserInfo
|
||||
for _, id := range userIds {
|
||||
item := render.BuildUserInfoDefaultIfNull(id)
|
||||
item.Followed = followedSet.Contains(id)
|
||||
itemList = append(itemList, item)
|
||||
}
|
||||
return web.JsonCursorData(itemList, strconv.FormatInt(cursor, 10), hasMore)
|
||||
}
|
||||
|
||||
func (c *FansController) GetFollowed() *web.JsonResult {
|
||||
userId := params.FormValueInt64Default(c.Ctx, "userId", 0)
|
||||
cursor := params.FormValueInt64Default(c.Ctx, "cursor", 0)
|
||||
userIds, cursor, hasMore := services.UserFollowService.GetFollows(userId, cursor, 10)
|
||||
|
||||
current := services.UserTokenService.GetCurrent(c.Ctx)
|
||||
var followedSet hashset.Set
|
||||
if current != nil {
|
||||
if current.Id == userId {
|
||||
followedSet = *hashset.New()
|
||||
for _, id := range userIds {
|
||||
followedSet.Add(id)
|
||||
}
|
||||
} else {
|
||||
followedSet = services.UserFollowService.IsFollowedUsers(current.Id, userIds...)
|
||||
}
|
||||
}
|
||||
|
||||
var itemList []*models.UserInfo
|
||||
for _, id := range userIds {
|
||||
item := render.BuildUserInfoDefaultIfNull(id)
|
||||
item.Followed = followedSet.Contains(id)
|
||||
itemList = append(itemList, item)
|
||||
}
|
||||
return web.JsonCursorData(itemList, strconv.FormatInt(cursor, 10), hasMore)
|
||||
}
|
||||
|
||||
func (c *FansController) GetRecentFans() *web.JsonResult {
|
||||
userId := params.FormValueInt64Default(c.Ctx, "userId", 0)
|
||||
userIds, cursor, hasMore := services.UserFollowService.GetFans(userId, 0, 10)
|
||||
|
||||
current := services.UserTokenService.GetCurrent(c.Ctx)
|
||||
var followedSet hashset.Set
|
||||
if current != nil {
|
||||
followedSet = services.UserFollowService.IsFollowedUsers(current.Id, userIds...)
|
||||
}
|
||||
|
||||
var itemList []*models.UserInfo
|
||||
for _, id := range userIds {
|
||||
item := render.BuildUserInfoDefaultIfNull(id)
|
||||
item.Followed = followedSet.Contains(id)
|
||||
itemList = append(itemList, item)
|
||||
}
|
||||
return web.JsonCursorData(itemList, strconv.FormatInt(cursor, 10), hasMore)
|
||||
}
|
||||
|
||||
func (c *FansController) GetRecentFollow() *web.JsonResult {
|
||||
userId := params.FormValueInt64Default(c.Ctx, "userId", 0)
|
||||
userIds, cursor, hasMore := services.UserFollowService.GetFollows(userId, 0, 10)
|
||||
|
||||
current := services.UserTokenService.GetCurrent(c.Ctx)
|
||||
var followedSet hashset.Set
|
||||
if current != nil {
|
||||
if current.Id == userId {
|
||||
followedSet = *hashset.New()
|
||||
for _, id := range userIds {
|
||||
followedSet.Add(id)
|
||||
}
|
||||
} else {
|
||||
followedSet = services.UserFollowService.IsFollowedUsers(current.Id, userIds...)
|
||||
}
|
||||
}
|
||||
|
||||
var itemList []*models.UserInfo
|
||||
for _, id := range userIds {
|
||||
item := render.BuildUserInfoDefaultIfNull(id)
|
||||
item.Followed = followedSet.Contains(id)
|
||||
itemList = append(itemList, item)
|
||||
}
|
||||
return web.JsonCursorData(itemList, strconv.FormatInt(cursor, 10), hasMore)
|
||||
}
|
||||
Reference in New Issue
Block a user