59 lines
1.4 KiB
Go
59 lines
1.4 KiB
Go
package api
|
|
|
|
import (
|
|
"errors"
|
|
|
|
"github.com/kataras/iris/v12"
|
|
"github.com/mlogclub/simple/web"
|
|
"github.com/mlogclub/simple/web/params"
|
|
|
|
"bbs-go/internal/models/constants"
|
|
"bbs-go/internal/pkg/errs"
|
|
"bbs-go/internal/services"
|
|
)
|
|
|
|
type FavoriteController struct {
|
|
Ctx iris.Context
|
|
}
|
|
|
|
func (c *FavoriteController) PostAdd() *web.JsonResult {
|
|
var (
|
|
user = services.UserTokenService.GetCurrent(c.Ctx)
|
|
entityType = params.FormValue(c.Ctx, "entityType")
|
|
entityId = params.FormValueInt64Default(c.Ctx, "entityId", 0)
|
|
)
|
|
if user == nil {
|
|
return web.JsonError(errs.NotLogin)
|
|
}
|
|
var err error
|
|
if entityType == constants.EntityTopic {
|
|
err = services.FavoriteService.AddTopicFavorite(user.Id, entityId)
|
|
} else if entityType == constants.EntityArticle {
|
|
err = services.FavoriteService.AddArticleFavorite(user.Id, entityId)
|
|
} else {
|
|
err = errors.New("unsupproted")
|
|
}
|
|
|
|
if err != nil {
|
|
return web.JsonError(err)
|
|
}
|
|
return web.JsonSuccess()
|
|
}
|
|
|
|
// 取消收藏
|
|
func (c *FavoriteController) PostDelete() *web.JsonResult {
|
|
var (
|
|
user = services.UserTokenService.GetCurrent(c.Ctx)
|
|
entityType = params.FormValue(c.Ctx, "entityType")
|
|
entityId = params.FormValueInt64Default(c.Ctx, "entityId", 0)
|
|
)
|
|
if user == nil {
|
|
return web.JsonError(errs.NotLogin)
|
|
}
|
|
tmp := services.FavoriteService.GetBy(user.Id, entityType, entityId)
|
|
if tmp != nil {
|
|
services.FavoriteService.Delete(tmp.Id)
|
|
}
|
|
return web.JsonSuccess()
|
|
}
|