From 956cbde1bc77605503d8d807ed643e2fd8df1bea Mon Sep 17 00:00:00 2001 From: eson <9673575+githubcontent@user.noreply.gitee.com> Date: Fri, 20 Oct 2023 15:59:03 +0800 Subject: [PATCH] logo search --- model/gmodel/fs_preprocess_logo_logic.go | 27 ++++++++++++++++++- .../prelogosearchsuggestionshandler.go | 2 +- .../logic/prelogosearchsuggestionslogic.go | 8 ++---- server/info/internal/types/types.go | 4 +++ server_api/info.api | 6 ++++- 5 files changed, 38 insertions(+), 9 deletions(-) diff --git a/model/gmodel/fs_preprocess_logo_logic.go b/model/gmodel/fs_preprocess_logo_logic.go index 70300d95..edfe98f5 100644 --- a/model/gmodel/fs_preprocess_logo_logic.go +++ b/model/gmodel/fs_preprocess_logo_logic.go @@ -25,8 +25,33 @@ type PreLogoSearchResult struct { // TODO: 使用model的属性做你想做的 -// 搜索建议 +// 搜索 func (p *FsPreprocessLogoModel) PreLogoSearch(ctx context.Context, zipcode string, keywordsStr string, count int) (resp []PreLogoSearchResult, err error) { + keywords := regexp.MustCompile(`\s+`).Split(keywordsStr, -1) + for i, v := range keywords { + keywords[i] = "+" + v + "*" + } + sqlstr := fmt.Sprintf("SELECT id,restaurant_name,resource_url,address,zip_code,phone,website,is_branch FROM fs_preprocess_logo WHERE MATCH(restaurant_name) AGAINST(? IN BOOLEAN MODE) and zipcode = ? limit %d;", count) + + tx := p.db.WithContext(ctx).Model(&FsPreprocessLogo{}).Raw(sqlstr, strings.Join(keywords, " "), zipcode) + err = tx.Scan(&resp).Error + if err != nil { + logx.Error(err) + return nil, err + } + + for i := range resp { + if resp[i].RestaurantType == nil { + resp[i].RestaurantType = FsString("") + } + resp[i].ResourceUrl = FsString(testData[rand.Uint64()%uint64(len(testData))]) + } + + return resp, nil +} + +// 搜索建议 +func (p *FsPreprocessLogoModel) PreLogoSearchSuggestions(ctx context.Context, keywordsStr string, count int) (resp []PreLogoSearchResult, err error) { keywords := regexp.MustCompile(`\s+`).Split(keywordsStr, -1) for i, v := range keywords { keywords[i] = "+" + v + "*" diff --git a/server/info/internal/handler/prelogosearchsuggestionshandler.go b/server/info/internal/handler/prelogosearchsuggestionshandler.go index 271d73c8..6b5764b9 100644 --- a/server/info/internal/handler/prelogosearchsuggestionshandler.go +++ b/server/info/internal/handler/prelogosearchsuggestionshandler.go @@ -14,7 +14,7 @@ import ( func PreLogoSearchSuggestionsHandler(svcCtx *svc.ServiceContext) http.HandlerFunc { return func(w http.ResponseWriter, r *http.Request) { - var req types.PreLogoSearchRequest + var req types.PreLogoSearchSuggestionsRequest userinfo, err := basic.RequestParse(w, r, svcCtx, &req) if err != nil { return diff --git a/server/info/internal/logic/prelogosearchsuggestionslogic.go b/server/info/internal/logic/prelogosearchsuggestionslogic.go index 5c2586d8..d23e6021 100644 --- a/server/info/internal/logic/prelogosearchsuggestionslogic.go +++ b/server/info/internal/logic/prelogosearchsuggestionslogic.go @@ -30,18 +30,14 @@ func NewPreLogoSearchSuggestionsLogic(ctx context.Context, svcCtx *svc.ServiceCo // func (l *PreLogoSearchSuggestionsLogic) BeforeLogic(w http.ResponseWriter, r *http.Request) { // } -func (l *PreLogoSearchSuggestionsLogic) PreLogoSearchSuggestions(req *types.PreLogoSearchRequest, userinfo *auth.UserInfo) (resp *basic.Response) { +func (l *PreLogoSearchSuggestionsLogic) PreLogoSearchSuggestions(req *types.PreLogoSearchSuggestionsRequest, userinfo *auth.UserInfo) (resp *basic.Response) { // 返回值必须调用Set重新返回, resp可以空指针调用 resp.SetStatus(basic.CodeOK, data) // userinfo 传入值时, 一定不为null if !userinfo.IsOnlooker() { return resp.SetStatus(basic.CodeSearchAuthErr) } - if len(req.ZipCode) < 4 { - return resp.SetStatus(basic.CodeSearchZipCodeErr) - } - - result, err := l.svcCtx.AllModels.FsPreprocessLogo.PreLogoSearch(l.ctx, req.ZipCode, req.Keywords, 5) + result, err := l.svcCtx.AllModels.FsPreprocessLogo.PreLogoSearchSuggestions(l.ctx, req.Keywords, 5) if err != nil { return resp.SetStatus(basic.CodeApiErr, err) } diff --git a/server/info/internal/types/types.go b/server/info/internal/types/types.go index 73884ef2..11bfc790 100644 --- a/server/info/internal/types/types.go +++ b/server/info/internal/types/types.go @@ -12,6 +12,10 @@ type ContactUsRequest struct { Message string `json:"message"` } +type PreLogoSearchSuggestionsRequest struct { + Keywords string `json:"keywords"` // 关键字 +} + type PreLogoSearchRequest struct { ZipCode string `json:"zip_code"` // 邮编 Keywords string `json:"keywords"` // 关键字 diff --git a/server_api/info.api b/server_api/info.api index 21beb3af..20e6d88c 100644 --- a/server_api/info.api +++ b/server_api/info.api @@ -42,7 +42,7 @@ service info { // 搜索建议 @handler PreLogoSearchSuggestionsHandler - post /api/info/prelogo/search/suggestions(PreLogoSearchRequest) returns (response); + post /api/info/prelogo/search/suggestions(PreLogoSearchSuggestionsRequest) returns (response); // 搜索 @handler PreLogoSearchHandler @@ -60,6 +60,10 @@ type ( Message string `json:"message"` } + PreLogoSearchSuggestionsRequest { + Keywords string `json:"keywords"` // 关键字 + } + PreLogoSearchRequest { ZipCode string `json:"zip_code"` // 邮编 Keywords string `json:"keywords"` // 关键字