feat: 添加搜索收藏微服务

This commit is contained in:
zetaloop
2026-04-24 13:24:58 +08:00
parent 91fdd2a498
commit 53d0e791b4
58 changed files with 6239 additions and 57 deletions
@@ -0,0 +1,32 @@
// Code scaffolded by goctl. Safe to edit.
// goctl 1.10.1
package favorites
import (
"net/http"
"github.com/zeromicro/go-zero/rest/httpx"
"juwan-backend/app/search/api/internal/logic/favorites"
"juwan-backend/app/search/api/internal/svc"
"juwan-backend/app/search/api/internal/types"
)
// 添加收藏
func AddFavoriteHandler(svcCtx *svc.ServiceContext) http.HandlerFunc {
return func(w http.ResponseWriter, r *http.Request) {
var req types.FavoriteReq
if err := httpx.Parse(r, &req); err != nil {
httpx.ErrorCtx(r.Context(), w, err)
return
}
l := favorites.NewAddFavoriteLogic(r.Context(), svcCtx)
resp, err := l.AddFavorite(&req)
if err != nil {
httpx.ErrorCtx(r.Context(), w, err)
} else {
httpx.OkJsonCtx(r.Context(), w, resp)
}
}
}
@@ -0,0 +1,32 @@
// Code scaffolded by goctl. Safe to edit.
// goctl 1.10.1
package favorites
import (
"net/http"
"github.com/zeromicro/go-zero/rest/httpx"
"juwan-backend/app/search/api/internal/logic/favorites"
"juwan-backend/app/search/api/internal/svc"
"juwan-backend/app/search/api/internal/types"
)
// 检查收藏状态
func CheckFavoriteHandler(svcCtx *svc.ServiceContext) http.HandlerFunc {
return func(w http.ResponseWriter, r *http.Request) {
var req types.FavoriteCheckReq
if err := httpx.Parse(r, &req); err != nil {
httpx.ErrorCtx(r.Context(), w, err)
return
}
l := favorites.NewCheckFavoriteLogic(r.Context(), svcCtx)
resp, err := l.CheckFavorite(&req)
if err != nil {
httpx.ErrorCtx(r.Context(), w, err)
} else {
httpx.OkJsonCtx(r.Context(), w, resp)
}
}
}
@@ -0,0 +1,32 @@
// Code scaffolded by goctl. Safe to edit.
// goctl 1.10.1
package favorites
import (
"net/http"
"github.com/zeromicro/go-zero/rest/httpx"
"juwan-backend/app/search/api/internal/logic/favorites"
"juwan-backend/app/search/api/internal/svc"
"juwan-backend/app/search/api/internal/types"
)
// 获取收藏列表
func ListFavoritesHandler(svcCtx *svc.ServiceContext) http.HandlerFunc {
return func(w http.ResponseWriter, r *http.Request) {
var req types.PageReq
if err := httpx.Parse(r, &req); err != nil {
httpx.ErrorCtx(r.Context(), w, err)
return
}
l := favorites.NewListFavoritesLogic(r.Context(), svcCtx)
resp, err := l.ListFavorites(&req)
if err != nil {
httpx.ErrorCtx(r.Context(), w, err)
} else {
httpx.OkJsonCtx(r.Context(), w, resp)
}
}
}
@@ -0,0 +1,32 @@
// Code scaffolded by goctl. Safe to edit.
// goctl 1.10.1
package favorites
import (
"net/http"
"github.com/zeromicro/go-zero/rest/httpx"
"juwan-backend/app/search/api/internal/logic/favorites"
"juwan-backend/app/search/api/internal/svc"
"juwan-backend/app/search/api/internal/types"
)
// 取消收藏
func RemoveFavoriteHandler(svcCtx *svc.ServiceContext) http.HandlerFunc {
return func(w http.ResponseWriter, r *http.Request) {
var req types.PathIDReq
if err := httpx.Parse(r, &req); err != nil {
httpx.ErrorCtx(r.Context(), w, err)
return
}
l := favorites.NewRemoveFavoriteLogic(r.Context(), svcCtx)
resp, err := l.RemoveFavorite(&req)
if err != nil {
httpx.ErrorCtx(r.Context(), w, err)
} else {
httpx.OkJsonCtx(r.Context(), w, resp)
}
}
}
+64
View File
@@ -0,0 +1,64 @@
// Code generated by goctl. DO NOT EDIT.
// goctl 1.10.1
package handler
import (
"net/http"
favorites "juwan-backend/app/search/api/internal/handler/favorites"
search "juwan-backend/app/search/api/internal/handler/search"
"juwan-backend/app/search/api/internal/svc"
"github.com/zeromicro/go-zero/rest"
)
func RegisterHandlers(server *rest.Server, serverCtx *svc.ServiceContext) {
server.AddRoutes(
[]rest.Route{
{
// 获取收藏列表
Method: http.MethodGet,
Path: "/favorites",
Handler: favorites.ListFavoritesHandler(serverCtx),
},
{
// 添加收藏
Method: http.MethodPost,
Path: "/favorites",
Handler: favorites.AddFavoriteHandler(serverCtx),
},
{
// 取消收藏
Method: http.MethodDelete,
Path: "/favorites/:id",
Handler: favorites.RemoveFavoriteHandler(serverCtx),
},
{
// 检查收藏状态
Method: http.MethodGet,
Path: "/users/:id/favorites/check",
Handler: favorites.CheckFavoriteHandler(serverCtx),
},
},
rest.WithPrefix("/api/v1"),
)
server.AddRoutes(
[]rest.Route{
{
// 首页推荐
Method: http.MethodGet,
Path: "/recommendations/home",
Handler: search.RecommendationsHandler(serverCtx),
},
{
// 统一搜索
Method: http.MethodGet,
Path: "/search",
Handler: search.SearchHandler(serverCtx),
},
},
rest.WithPrefix("/api/v1"),
)
}
@@ -0,0 +1,32 @@
// Code scaffolded by goctl. Safe to edit.
// goctl 1.10.1
package search
import (
"net/http"
"github.com/zeromicro/go-zero/rest/httpx"
"juwan-backend/app/search/api/internal/logic/search"
"juwan-backend/app/search/api/internal/svc"
"juwan-backend/app/search/api/internal/types"
)
// 首页推荐
func RecommendationsHandler(svcCtx *svc.ServiceContext) http.HandlerFunc {
return func(w http.ResponseWriter, r *http.Request) {
var req types.PageReq
if err := httpx.Parse(r, &req); err != nil {
httpx.ErrorCtx(r.Context(), w, err)
return
}
l := search.NewRecommendationsLogic(r.Context(), svcCtx)
resp, err := l.Recommendations(&req)
if err != nil {
httpx.ErrorCtx(r.Context(), w, err)
} else {
httpx.OkJsonCtx(r.Context(), w, resp)
}
}
}
@@ -0,0 +1,32 @@
// Code scaffolded by goctl. Safe to edit.
// goctl 1.10.1
package search
import (
"net/http"
"github.com/zeromicro/go-zero/rest/httpx"
"juwan-backend/app/search/api/internal/logic/search"
"juwan-backend/app/search/api/internal/svc"
"juwan-backend/app/search/api/internal/types"
)
// 统一搜索
func SearchHandler(svcCtx *svc.ServiceContext) http.HandlerFunc {
return func(w http.ResponseWriter, r *http.Request) {
var req types.SearchReq
if err := httpx.Parse(r, &req); err != nil {
httpx.ErrorCtx(r.Context(), w, err)
return
}
l := search.NewSearchLogic(r.Context(), svcCtx)
resp, err := l.Search(&req)
if err != nil {
httpx.ErrorCtx(r.Context(), w, err)
} else {
httpx.OkJsonCtx(r.Context(), w, resp)
}
}
}