From 7d68612bd2816c1f2903ec28f7cf050270464fb6 Mon Sep 17 00:00:00 2001 From: Jimmy Misaka Date: Wed, 8 Mar 2023 23:41:08 +0800 Subject: [PATCH 1/5] DEV UPDATE:Dev video-page to search video page --- .../app/api/handler/eoefans_video_page.go | 19 +++++ internal/app/api/idl/eoefans_video_page.go | 82 +++++++++++++++++++ internal/app/api/provide.go | 1 + internal/app/api/router/router.go | 4 + .../app/api/service/eoefans_video_page.go | 26 ++++++ internal/repository/eoefans_video_page.go | 46 +++++++++++ 6 files changed, 178 insertions(+) create mode 100644 internal/app/api/handler/eoefans_video_page.go create mode 100644 internal/app/api/idl/eoefans_video_page.go create mode 100644 internal/app/api/service/eoefans_video_page.go create mode 100644 internal/repository/eoefans_video_page.go diff --git a/internal/app/api/handler/eoefans_video_page.go b/internal/app/api/handler/eoefans_video_page.go new file mode 100644 index 0000000..c2a5a70 --- /dev/null +++ b/internal/app/api/handler/eoefans_video_page.go @@ -0,0 +1,19 @@ +package handler + +import ( + "github.com/gin-gonic/gin" + "net/http" + "vlink.dev/eoefans/internal/app/api/help" + "vlink.dev/eoefans/internal/app/api/service" +) + +func EoefansVideoPage(s *service.EoefansVideoPage) func(ctx *gin.Context) { + return func(ctx *gin.Context) { + if resp, err := s.List(ctx); err != nil { + _ = ctx.Error(err) + return + } else { + ctx.JSON(http.StatusOK, help.SuccessJson(resp)) + } + } +} diff --git a/internal/app/api/idl/eoefans_video_page.go b/internal/app/api/idl/eoefans_video_page.go new file mode 100644 index 0000000..557d9d4 --- /dev/null +++ b/internal/app/api/idl/eoefans_video_page.go @@ -0,0 +1,82 @@ +package idl + +import ( + "github.com/google/uuid" + "gorm.io/gorm" + "time" +) + +type EoefansVideoPageResp struct { + Key string `json:"key"` + Name string `json:"name"` + Banners []*EoefansVideoPageBannerResp `json:"banners"` + Videos []*EoefansVideoPageVideo `json:"videos"` +} + +type EoefansVideoPageBannerResp struct { + Image string `json:"image"` + Url string `json:"url"` + Rank uint `json:"rank"` +} + +type GVA_MODEL struct { + ID uint `gorm:"primarykey"` // 主键ID + CreatedAt time.Time // 创建时间 + UpdatedAt time.Time // 更新时间 + DeletedAt gorm.DeletedAt `gorm:"index" json:"-"` // 删除时间 +} + +// EoefansVideoPages 结构体 +type EoefansVideoPages struct { + GVA_MODEL + Name string `json:"name" form:"name" gorm:"column:name;comment:;"` + Key string `json:"key" form:"key" gorm:"column:key;comment:;"` + Config string `json:"config" form:"config" gorm:"column:config;comment:;"` + CreatedBy uint `gorm:"column:created_by;comment:创建者"` + UpdatedBy uint `gorm:"column:updated_by;comment:更新者"` + DeletedBy uint `gorm:"column:deleted_by;comment:删除者"` +} + +// TableName EoefansVideoPages 表名 +func (EoefansVideoPages) TableName() string { + return "eoefans_video_page" +} + +// EoefansVideoPageBanner 结构体 +type EoefansVideoPageBanner struct { + GVA_MODEL + Image string `json:"image" form:"image" gorm:"column:image;comment:;size:191;"` + Url string `json:"url" form:"url" gorm:"column:url;comment:;size:191;"` + EoefansVideoPages EoefansVideoPages `json:"vPage" form:"vPage" gorm:"foreignKey:EoefansVideoPageId"` + EoefansVideoPageId uint `json:"pageId" form:"pageId"` + Rank uint `json:"rank" form:"rank"` + CreatedBy uint `gorm:"column:created_by;comment:创建者"` + UpdatedBy uint `gorm:"column:updated_by;comment:更新者"` + DeletedBy uint `gorm:"column:deleted_by;comment:删除者"` +} + +// TableName EoefansVideoPageBanner 表名 +func (EoefansVideoPageBanner) TableName() string { + return "eoefans_video_page_banner" +} + +type EoefansVideoPageVideo struct { + GVA_MODEL + //BilbilVideo BilibiliVideo `json:"video" form:"video" gorm:"foreignKey:BilbilVideoId"` + BilbilVideoId uuid.UUID `json:"videoId" form:"videoId"` + EoefansVideoPages EoefansVideoPages `json:"vPage" form:"vPage" gorm:"foreignKey:EoefansVideoPageId"` + EoefansVideoPageId uint `json:"pageId" form:"pageId"` + Rank uint `json:"rank" form:"rank"` + CreatedBy uint `gorm:"column:created_by;comment:创建者"` + UpdatedBy uint `gorm:"column:updated_by;comment:更新者"` + DeletedBy uint `gorm:"column:deleted_by;comment:删除者"` +} + +// TableName EoefansVideoPageBanner 表名 +func (EoefansVideoPageVideo) TableName() string { + return "eoefans_video_page_video" +} + +type EoefansVideoPageRepository interface { + FindAll() (list []*EoefansVideoPageResp, err error) +} diff --git a/internal/app/api/provide.go b/internal/app/api/provide.go index 5212236..3da08ec 100644 --- a/internal/app/api/provide.go +++ b/internal/app/api/provide.go @@ -39,6 +39,7 @@ func ServiceProvider() fx.Option { service.NewAuth, service.NewUser, service.NewTool, + service.NewEoefansVideoPage, service.NewRandomPicsCache, ) } diff --git a/internal/app/api/router/router.go b/internal/app/api/router/router.go index c22062b..51c86dc 100644 --- a/internal/app/api/router/router.go +++ b/internal/app/api/router/router.go @@ -22,6 +22,7 @@ func InitRouters( authService *service.Auth, userService *service.User, toolService *service.Tool, + videoPageService *service.EoefansVideoPage, errMiddlewares *middlewares.ErrorInterceptor, sessionMiddlewares *middlewares.Session, ) httpserver.InitRouters { @@ -34,6 +35,9 @@ func InitRouters( ctx.JSON(http.StatusOK, help.SuccessJson(map[string]string{"now_time": time.Now().Format(time.RFC3339)})) }) + //客户端视频页管理 + r.GET("/v1/video-page", handler.EoefansVideoPage(videoPageService)) + // 视频搜索 r.GET("/v1/video-interface/advanced-search", handler.BilibiliVideoSearch(bvService)) //图片 diff --git a/internal/app/api/service/eoefans_video_page.go b/internal/app/api/service/eoefans_video_page.go new file mode 100644 index 0000000..faba589 --- /dev/null +++ b/internal/app/api/service/eoefans_video_page.go @@ -0,0 +1,26 @@ +package service + +import ( + "context" + "gorm.io/gorm" + "vlink.dev/eoefans/internal/app/api/idl" + "vlink.dev/eoefans/internal/repository" +) + +type EoefansVideoPage struct { + db *gorm.DB +} + +func NewEoefansVideoPage(db *gorm.DB) *EoefansVideoPage { + return &EoefansVideoPage{db: db} +} + +func (service *EoefansVideoPage) List(ctx context.Context) ([]*idl.EoefansVideoPageResp, error) { + tx := service.db.WithContext(ctx) + videoPageRepository := repository.NewEoefansVideoPage(tx) + list, err := videoPageRepository.FindAll() + if err != nil { + return nil, err + } + return list, nil +} diff --git a/internal/repository/eoefans_video_page.go b/internal/repository/eoefans_video_page.go new file mode 100644 index 0000000..ed2158b --- /dev/null +++ b/internal/repository/eoefans_video_page.go @@ -0,0 +1,46 @@ +package repository + +import ( + "fmt" + "gorm.io/gorm" + "vlink.dev/eoefans/internal/app/api/idl" +) + +func NewEoefansVideoPage(tx *gorm.DB) idl.EoefansVideoPageRepository { + return &EoefansVideoPageMysqlImpl{tx: tx} +} + +type EoefansVideoPageMysqlImpl struct { + tx *gorm.DB +} + +func (impl *EoefansVideoPageMysqlImpl) FindAll() (list []*idl.EoefansVideoPageResp, err error) { + var pageList []*idl.EoefansVideoPages + err = impl.tx.Table(idl.EoefansVideoPages{}.TableName()). + Find(&pageList).Error + if err != nil { + return nil, err + } + for i := range pageList { + fmt.Println(pageList[i].Name) + var bannerList []*idl.EoefansVideoPageBannerResp + var videoList []*idl.EoefansVideoPageVideo + err = impl.tx.Table(idl.EoefansVideoPageBanner{}.TableName()). + Select("image,url,rank"). + Where("eoefans_video_page_id = ?", pageList[i].ID). + Find(&bannerList).Error + err = impl.tx.Table(idl.EoefansVideoPageVideo{}.TableName()). + Where("eoefans_video_page_id = ?", pageList[i].ID). + Joins("JOIN bilbil_video ON bilbil_video.id = eoefans_video_page_video.user_id"). + //Preload("BilbilVideo"). + Find(&videoList).Error + res := idl.EoefansVideoPageResp{ + Key: pageList[i].Key, + Name: pageList[i].Name, + Banners: bannerList, + Videos: videoList, + } + list = append(list, &res) + } + return list, nil +} From 49778aced96760898f68772c25404d201f1c8a95 Mon Sep 17 00:00:00 2001 From: Jimmy Misaka Date: Thu, 9 Mar 2023 00:12:57 +0800 Subject: [PATCH 2/5] DEV UPDATE:Dev /v1/video-page update --- internal/app/api/idl/eoefans_video_page.go | 9 +++++++-- internal/repository/eoefans_video_page.go | 12 +++++++----- 2 files changed, 14 insertions(+), 7 deletions(-) diff --git a/internal/app/api/idl/eoefans_video_page.go b/internal/app/api/idl/eoefans_video_page.go index 557d9d4..e4300fd 100644 --- a/internal/app/api/idl/eoefans_video_page.go +++ b/internal/app/api/idl/eoefans_video_page.go @@ -19,6 +19,11 @@ type EoefansVideoPageBannerResp struct { Rank uint `json:"rank"` } +type EoefansVideoPageVideoResp struct { + Video NewBilibiliVideo `json:"video"` + Rank uint `json:"rank"` +} + type GVA_MODEL struct { ID uint `gorm:"primarykey"` // 主键ID CreatedAt time.Time // 创建时间 @@ -62,8 +67,8 @@ func (EoefansVideoPageBanner) TableName() string { type EoefansVideoPageVideo struct { GVA_MODEL - //BilbilVideo BilibiliVideo `json:"video" form:"video" gorm:"foreignKey:BilbilVideoId"` - BilbilVideoId uuid.UUID `json:"videoId" form:"videoId"` + BilbilVideo NewBilibiliVideo `json:"video" form:"video" gorm:"foreignKey:BilbilVideoId"` + BilbilVideoId uuid.UUID `json:"videoId" form:"videoId"` EoefansVideoPages EoefansVideoPages `json:"vPage" form:"vPage" gorm:"foreignKey:EoefansVideoPageId"` EoefansVideoPageId uint `json:"pageId" form:"pageId"` Rank uint `json:"rank" form:"rank"` diff --git a/internal/repository/eoefans_video_page.go b/internal/repository/eoefans_video_page.go index ed2158b..7c016ef 100644 --- a/internal/repository/eoefans_video_page.go +++ b/internal/repository/eoefans_video_page.go @@ -29,16 +29,18 @@ func (impl *EoefansVideoPageMysqlImpl) FindAll() (list []*idl.EoefansVideoPageRe Select("image,url,rank"). Where("eoefans_video_page_id = ?", pageList[i].ID). Find(&bannerList).Error + fmt.Println("aaaaaaaaaaaaa") err = impl.tx.Table(idl.EoefansVideoPageVideo{}.TableName()). Where("eoefans_video_page_id = ?", pageList[i].ID). - Joins("JOIN bilbil_video ON bilbil_video.id = eoefans_video_page_video.user_id"). - //Preload("BilbilVideo"). + //Joins("JOIN bilbil_video ON bilbil_video.id = eoefans_video_page_video.bilbil_video_id"). + Preload("BilbilVideo"). + //Select("rank"). Find(&videoList).Error res := idl.EoefansVideoPageResp{ - Key: pageList[i].Key, - Name: pageList[i].Name, + Key: pageList[i].Key, + Name: pageList[i].Name, Banners: bannerList, - Videos: videoList, + Videos: videoList, } list = append(list, &res) } From 9fee3124d8025e2a366a67ce55e853e934960e85 Mon Sep 17 00:00:00 2001 From: Jimmy Misaka Date: Thu, 9 Mar 2023 00:20:35 +0800 Subject: [PATCH 3/5] =?UTF-8?q?DEV=20UPDATE:=E8=BF=98=E6=98=AF=E6=9F=A5?= =?UTF-8?q?=E4=B8=8D=E5=87=BA=E6=9D=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- internal/app/api/idl/eoefans_video_page.go | 5 ++--- internal/repository/eoefans_video_page.go | 2 +- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/internal/app/api/idl/eoefans_video_page.go b/internal/app/api/idl/eoefans_video_page.go index e4300fd..e96ee7b 100644 --- a/internal/app/api/idl/eoefans_video_page.go +++ b/internal/app/api/idl/eoefans_video_page.go @@ -1,7 +1,6 @@ package idl import ( - "github.com/google/uuid" "gorm.io/gorm" "time" ) @@ -67,8 +66,8 @@ func (EoefansVideoPageBanner) TableName() string { type EoefansVideoPageVideo struct { GVA_MODEL - BilbilVideo NewBilibiliVideo `json:"video" form:"video" gorm:"foreignKey:BilbilVideoId"` - BilbilVideoId uuid.UUID `json:"videoId" form:"videoId"` + BilbilVideo NewBilibiliVideo `json:"video" form:"video" gorm:"foreignKey:BilbilVideoUUID"` + BilbilVideoUUID string `json:"videoId" form:"videoId" gorm:"column:bilbil_video_id"` EoefansVideoPages EoefansVideoPages `json:"vPage" form:"vPage" gorm:"foreignKey:EoefansVideoPageId"` EoefansVideoPageId uint `json:"pageId" form:"pageId"` Rank uint `json:"rank" form:"rank"` diff --git a/internal/repository/eoefans_video_page.go b/internal/repository/eoefans_video_page.go index 7c016ef..2928b82 100644 --- a/internal/repository/eoefans_video_page.go +++ b/internal/repository/eoefans_video_page.go @@ -31,9 +31,9 @@ func (impl *EoefansVideoPageMysqlImpl) FindAll() (list []*idl.EoefansVideoPageRe Find(&bannerList).Error fmt.Println("aaaaaaaaaaaaa") err = impl.tx.Table(idl.EoefansVideoPageVideo{}.TableName()). + Preload("BilbilVideo"). Where("eoefans_video_page_id = ?", pageList[i].ID). //Joins("JOIN bilbil_video ON bilbil_video.id = eoefans_video_page_video.bilbil_video_id"). - Preload("BilbilVideo"). //Select("rank"). Find(&videoList).Error res := idl.EoefansVideoPageResp{ From 2b48172e6723db27dc150f1b8624b6232cc7669f Mon Sep 17 00:00:00 2001 From: Jimmy Misaka Date: Thu, 9 Mar 2023 00:31:24 +0800 Subject: [PATCH 4/5] DEV UPDATE:Resolved #34 --- internal/app/api/idl/bilbil_video.go | 5 +++++ internal/app/api/idl/eoefans_video_page.go | 17 +++++++++-------- internal/repository/eoefans_video_page.go | 2 +- 3 files changed, 15 insertions(+), 9 deletions(-) diff --git a/internal/app/api/idl/bilbil_video.go b/internal/app/api/idl/bilbil_video.go index 41773a7..1b5492a 100644 --- a/internal/app/api/idl/bilbil_video.go +++ b/internal/app/api/idl/bilbil_video.go @@ -63,6 +63,11 @@ type NewBilibiliVideo struct { TagList pq.StringArray `gorm:"column:tag_list;type:varchar(64)[]"` } +// TableName EoefansVideoPageBanner 表名 +func (NewBilibiliVideo) TableName() string { + return "bilbil_video" +} + type BilibiliVideoOrder string const ( diff --git a/internal/app/api/idl/eoefans_video_page.go b/internal/app/api/idl/eoefans_video_page.go index e96ee7b..3aed219 100644 --- a/internal/app/api/idl/eoefans_video_page.go +++ b/internal/app/api/idl/eoefans_video_page.go @@ -1,6 +1,7 @@ package idl import ( + "github.com/google/uuid" "gorm.io/gorm" "time" ) @@ -66,14 +67,14 @@ func (EoefansVideoPageBanner) TableName() string { type EoefansVideoPageVideo struct { GVA_MODEL - BilbilVideo NewBilibiliVideo `json:"video" form:"video" gorm:"foreignKey:BilbilVideoUUID"` - BilbilVideoUUID string `json:"videoId" form:"videoId" gorm:"column:bilbil_video_id"` - EoefansVideoPages EoefansVideoPages `json:"vPage" form:"vPage" gorm:"foreignKey:EoefansVideoPageId"` - EoefansVideoPageId uint `json:"pageId" form:"pageId"` - Rank uint `json:"rank" form:"rank"` - CreatedBy uint `gorm:"column:created_by;comment:创建者"` - UpdatedBy uint `gorm:"column:updated_by;comment:更新者"` - DeletedBy uint `gorm:"column:deleted_by;comment:删除者"` + NewBilibiliVideo NewBilibiliVideo `json:"video" form:"video" gorm:"foreignKey:NewBilibiliVideoUUID"` + NewBilibiliVideoUUID uuid.UUID `json:"videoId" form:"videoId" gorm:"column:bilbil_video_id"` + EoefansVideoPages EoefansVideoPages `json:"vPage" form:"vPage" gorm:"foreignKey:EoefansVideoPageId"` + EoefansVideoPageId uint `json:"pageId" form:"pageId"` + Rank uint `json:"rank" form:"rank"` + CreatedBy uint `gorm:"column:created_by;comment:创建者"` + UpdatedBy uint `gorm:"column:updated_by;comment:更新者"` + DeletedBy uint `gorm:"column:deleted_by;comment:删除者"` } // TableName EoefansVideoPageBanner 表名 diff --git a/internal/repository/eoefans_video_page.go b/internal/repository/eoefans_video_page.go index 2928b82..22e1cf2 100644 --- a/internal/repository/eoefans_video_page.go +++ b/internal/repository/eoefans_video_page.go @@ -31,8 +31,8 @@ func (impl *EoefansVideoPageMysqlImpl) FindAll() (list []*idl.EoefansVideoPageRe Find(&bannerList).Error fmt.Println("aaaaaaaaaaaaa") err = impl.tx.Table(idl.EoefansVideoPageVideo{}.TableName()). - Preload("BilbilVideo"). Where("eoefans_video_page_id = ?", pageList[i].ID). + Preload("NewBilibiliVideo"). //Joins("JOIN bilbil_video ON bilbil_video.id = eoefans_video_page_video.bilbil_video_id"). //Select("rank"). Find(&videoList).Error From 4f9b7291535587a4e80418fe0d7c21aff0fe5964 Mon Sep 17 00:00:00 2001 From: Jimmy Misaka Date: Thu, 9 Mar 2023 01:05:47 +0800 Subject: [PATCH 5/5] DEV UPDATE:Complete /v1/video-page --- internal/app/api/idl/eoefans_video_page.go | 6 +++--- internal/repository/eoefans_video_page.go | 5 ----- 2 files changed, 3 insertions(+), 8 deletions(-) diff --git a/internal/app/api/idl/eoefans_video_page.go b/internal/app/api/idl/eoefans_video_page.go index 3aed219..8c57e30 100644 --- a/internal/app/api/idl/eoefans_video_page.go +++ b/internal/app/api/idl/eoefans_video_page.go @@ -10,7 +10,7 @@ type EoefansVideoPageResp struct { Key string `json:"key"` Name string `json:"name"` Banners []*EoefansVideoPageBannerResp `json:"banners"` - Videos []*EoefansVideoPageVideo `json:"videos"` + Videos []*EoefansVideoPageVideo `json:"videos"` } type EoefansVideoPageBannerResp struct { @@ -20,8 +20,8 @@ type EoefansVideoPageBannerResp struct { } type EoefansVideoPageVideoResp struct { - Video NewBilibiliVideo `json:"video"` - Rank uint `json:"rank"` + NewBilibiliVideo NewBilibiliVideo `json:"video"` + Rank uint `json:"rank"` } type GVA_MODEL struct { diff --git a/internal/repository/eoefans_video_page.go b/internal/repository/eoefans_video_page.go index 22e1cf2..1b42574 100644 --- a/internal/repository/eoefans_video_page.go +++ b/internal/repository/eoefans_video_page.go @@ -1,7 +1,6 @@ package repository import ( - "fmt" "gorm.io/gorm" "vlink.dev/eoefans/internal/app/api/idl" ) @@ -22,19 +21,15 @@ func (impl *EoefansVideoPageMysqlImpl) FindAll() (list []*idl.EoefansVideoPageRe return nil, err } for i := range pageList { - fmt.Println(pageList[i].Name) var bannerList []*idl.EoefansVideoPageBannerResp var videoList []*idl.EoefansVideoPageVideo err = impl.tx.Table(idl.EoefansVideoPageBanner{}.TableName()). Select("image,url,rank"). Where("eoefans_video_page_id = ?", pageList[i].ID). Find(&bannerList).Error - fmt.Println("aaaaaaaaaaaaa") err = impl.tx.Table(idl.EoefansVideoPageVideo{}.TableName()). Where("eoefans_video_page_id = ?", pageList[i].ID). Preload("NewBilibiliVideo"). - //Joins("JOIN bilbil_video ON bilbil_video.id = eoefans_video_page_video.bilbil_video_id"). - //Select("rank"). Find(&videoList).Error res := idl.EoefansVideoPageResp{ Key: pageList[i].Key,