From 8aa4e38760b23df661baa1e053c07cc18e8094b4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BE=90=E6=B6=9B?= Date: Tue, 6 Sep 2022 15:28:27 +0800 Subject: [PATCH] =?UTF-8?q?fix(park):=E4=BF=AE=E5=A4=8D=E5=9B=AD=E5=8C=BA?= =?UTF-8?q?=E4=B8=8D=E8=83=BD=E6=90=9C=E7=B4=A2=E7=9A=84=E9=97=AE=E9=A2=98?= =?UTF-8?q?=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- controller/park.go | 6 ++++-- service/park.go | 18 ++++++++++++++---- 2 files changed, 18 insertions(+), 6 deletions(-) diff --git a/controller/park.go b/controller/park.go index 384cdc1..ba47c95 100644 --- a/controller/park.go +++ b/controller/park.go @@ -49,7 +49,8 @@ func listAllParksUnderSessionUser(c *gin.Context) { result.Unauthorized(err.Error()) return } - parks, err := service.ParkService.ListAllParkBelongsTo(userSession.Uid) + keyword := c.DefaultQuery("keyword", "") + parks, err := service.ParkService.ListAllParkBelongsTo(userSession.Uid, keyword) if err != nil { result.Error(http.StatusInternalServerError, err.Error()) return @@ -60,7 +61,8 @@ func listAllParksUnderSessionUser(c *gin.Context) { func listAllParksUnderSpecificUser(c *gin.Context) { result := response.NewResult(c) requestUserId := c.Param("uid") - parks, err := service.ParkService.ListAllParkBelongsTo(requestUserId) + keyword := c.DefaultQuery("keyword", "") + parks, err := service.ParkService.ListAllParkBelongsTo(requestUserId, keyword) if err != nil { result.Error(http.StatusInternalServerError, err.Error()) return diff --git a/service/park.go b/service/park.go index 15b1d99..cbfeefc 100644 --- a/service/park.go +++ b/service/park.go @@ -73,19 +73,29 @@ func (_ParkService) DeletePark(uid, pid string) error { return nil } -func (_ParkService) ListAllParkBelongsTo(uid string) ([]model.Park, error) { - if parks, _ := cache.RetreiveSearch[[]model.Park]("park", "belong", uid); parks != nil { +func (_ParkService) ListAllParkBelongsTo(uid, keyword string) ([]model.Park, error) { + if parks, _ := cache.RetreiveSearch[[]model.Park]("park", "belong", uid, keyword); parks != nil { return *parks, nil } + cond := builder.NewCond().And(builder.Eq{"user_id": uid}) + if len(keyword) > 0 { + cond = cond.And( + builder.Like{"name", keyword}. + Or(builder.Like{"abbr", keyword}). + Or(builder.Like{"address", keyword}). + Or(builder.Like{"contact", keyword}). + Or(builder.Like{"phone", keyword}), + ) + } parks := make([]model.Park, 0) err := global.DBConn. - Where(builder.Eq{"user_id": uid}). + Where(cond). NoAutoCondition(). Find(&parks) if err != nil { return make([]model.Park, 0), err } - cache.CacheSearch(parks, []string{"park"}, "park", "belong", uid) + cache.CacheSearch(parks, []string{"park"}, "park", "belong", uid, keyword) return parks, nil }