diff --git a/shortdrama/controller/drama_controller.go b/shortdrama/controller/drama_controller.go index ecbb0df..91a9561 100644 --- a/shortdrama/controller/drama_controller.go +++ b/shortdrama/controller/drama_controller.go @@ -13,7 +13,7 @@ var Drama = new(drama) // ==================== Drama CRUD ==================== func (c *drama) List(ctx context.Context, req *dto.ListDramaReq) (res *dto.ListDramaRes, err error) { - list, total, err := service.DramaService.List(ctx, req.Page, req.PageSize) + list, total, err := service.DramaService.List(ctx, req.Page, req.PageSize, req.Keyword) if err != nil { return nil, err } diff --git a/shortdrama/controller/episode_controller.go b/shortdrama/controller/episode_controller.go index ea39d0c..23069af 100644 --- a/shortdrama/controller/episode_controller.go +++ b/shortdrama/controller/episode_controller.go @@ -9,7 +9,7 @@ import ( // ==================== Episode CRUD ==================== func (c *drama) ListEpisode(ctx context.Context, req *dto.ListEpisodeReq) (res *dto.ListEpisodeRes, err error) { - list, total, err := service.DramaService.ListEpisode(ctx, req.DramaId, req.Page, req.PageSize) + list, total, err := service.DramaService.ListEpisode(ctx, req.DramaId, req.Page, req.PageSize, req.Keyword) if err != nil { return nil, err } diff --git a/shortdrama/dao/drama_dao.go b/shortdrama/dao/drama_dao.go index 4c76232..b9addfa 100644 --- a/shortdrama/dao/drama_dao.go +++ b/shortdrama/dao/drama_dao.go @@ -103,8 +103,11 @@ func (d *dramaDao) Delete(ctx context.Context, id int64) error { return err } -func (d *dramaDao) ListPage(ctx context.Context, page, pageSize int) (res []*entity.Drama, total int, err error) { +func (d *dramaDao) ListPage(ctx context.Context, page, pageSize int, keyword ...string) (res []*entity.Drama, total int, err error) { m := g.DB().Model(public.TableNameDrama).Ctx(ctx) + if len(keyword) > 0 && keyword[0] != "" { + m = m.Where("title LIKE ?", "%"+keyword[0]+"%") + } if pageSize == -1 { r, err := m.OrderDesc("id").All() if err != nil { diff --git a/shortdrama/dao/episode_dao.go b/shortdrama/dao/episode_dao.go index 0a1ee8f..35166b6 100644 --- a/shortdrama/dao/episode_dao.go +++ b/shortdrama/dao/episode_dao.go @@ -90,8 +90,11 @@ func (d *episodeDao) DeleteByDrama(ctx context.Context, dramaId int64) error { return err } -func (d *episodeDao) ListPageByDrama(ctx context.Context, dramaId int64, page, pageSize int) (res []*entity.Episode, total int, err error) { +func (d *episodeDao) ListPageByDrama(ctx context.Context, dramaId int64, page, pageSize int, keyword ...string) (res []*entity.Episode, total int, err error) { m := g.DB().Model(public.TableNameEpisode).Ctx(ctx).Where("drama_id", dramaId) + if len(keyword) > 0 && keyword[0] != "" { + m = m.Where("title LIKE ?", "%"+keyword[0]+"%") + } if pageSize == -1 { r, err := m.OrderAsc("idx").All() if err != nil { diff --git a/shortdrama/model/dto/drama_dto.go b/shortdrama/model/dto/drama_dto.go index d9fdc19..519e0b6 100644 --- a/shortdrama/model/dto/drama_dto.go +++ b/shortdrama/model/dto/drama_dto.go @@ -10,8 +10,9 @@ import ( type ListDramaReq struct { g.Meta `path:"/list" method:"get" tags:"短剧管理" summary:"短剧列表"` - Page int `json:"page" dc:"页码,从1开始"` - PageSize int `json:"pageSize" dc:"每页条数"` + Page int `json:"page" dc:"页码,从1开始"` + PageSize int `json:"pageSize" dc:"每页条数"` + Keyword string `json:"keyword" dc:"搜索关键词"` } type ListDramaRes struct { @@ -25,9 +26,10 @@ type ListDramaRes struct { type ListEpisodeReq struct { g.Meta `path:"/episode/list" method:"get" tags:"短剧管理" summary:"剧集列表"` - DramaId int64 `json:"dramaId" dc:"短剧ID"` - Page int `json:"page" dc:"页码,从1开始"` - PageSize int `json:"pageSize" dc:"每页条数"` + DramaId int64 `json:"dramaId" dc:"短剧ID"` + Page int `json:"page" dc:"页码,从1开始"` + PageSize int `json:"pageSize" dc:"每页条数"` + Keyword string `json:"keyword" dc:"搜索关键词"` } type ListEpisodeRes struct { diff --git a/shortdrama/service/drama_service.go b/shortdrama/service/drama_service.go index fedf755..f4a23b2 100644 --- a/shortdrama/service/drama_service.go +++ b/shortdrama/service/drama_service.go @@ -57,12 +57,12 @@ func (s *dramaService) Create(ctx context.Context, title, style string, episodeD return id, nil } -func (s *dramaService) List(ctx context.Context, page, pageSize int) (list []*entity.Drama, total int, err error) { - return dao.Drama.ListPage(ctx, page, pageSize) +func (s *dramaService) List(ctx context.Context, page, pageSize int, keyword ...string) (list []*entity.Drama, total int, err error) { + return dao.Drama.ListPage(ctx, page, pageSize, keyword...) } -func (s *dramaService) ListEpisode(ctx context.Context, dramaId int64, page, pageSize int) (list []*entity.Episode, total int, err error) { - return dao.Episode.ListPageByDrama(ctx, dramaId, page, pageSize) +func (s *dramaService) ListEpisode(ctx context.Context, dramaId int64, page, pageSize int, keyword ...string) (list []*entity.Episode, total int, err error) { + return dao.Episode.ListPageByDrama(ctx, dramaId, page, pageSize, keyword...) } func (s *dramaService) Get(ctx context.Context, id int64) (*entity.Drama, []*entity.Character, []*entity.Episode, []*entity.Scene, []*entity.Prop, []*entity.GenerationTask, error) {