diff --git a/app/api/video/v1/video.go b/app/api/video/v1/video.go new file mode 100644 index 0000000..ccfb33f --- /dev/null +++ b/app/api/video/v1/video.go @@ -0,0 +1,151 @@ +package v1 + +import ( + "github.com/gogf/gf/v2/frame/g" + "xgit.pub/st52/xcore/dto" +) + +// GetListReq 获取视频列表请求 +type GetListReq struct { + g.Meta `path:"/video/list" method:"post" summary:"获取视频列表" tags:"视频"` + Title string `json:"title" description:"标题"` + CategoryIdList []uint `json:"category_id_list" description:"分类 ID"` + Lock string `json:"lock" description:"锁定"` + IsEnd string `json:"is_end" description:"完结"` + Copyright string `json:"copyright" description:"版权"` + Year uint `json:"year" description:"年份"` + Actor string `json:"actor" description:"演员"` + Director string `json:"director" description:"导演"` + Writer string `json:"writer" description:"编剧"` + dto.PageReq +} + +// GetListRes 获取视频列表响应 +type GetListRes struct { + dto.PageRes +} + +// CreateReq 创建视频请求 +type CreateReq struct { + g.Meta `path:"/video/add" method:"post" summary:"创建视频" tags:"视频"` + Title string `json:"title" description:"标题"` + TitleSub string `json:"title_sub" description:"副标"` + Letter string `json:"letter" description:"首字母"` + Tag string `json:"tag" description:"TAG"` + Color string `json:"color" description:"颜色"` + Lock uint `json:"lock" description:"锁定"` + Copyright uint `json:"copyright" description:"版权"` + IsEnd uint `json:"is_end" description:"完结"` + Status uint `json:"status" description:"状态"` + CategoryId uint `json:"category_id" description:"分类"` + Pic string `json:"pic" description:"图片"` + PicThumb string `json:"pic_thumb" description:"缩略图"` + PicSlide string `json:"pic_slide" description:"轮播"` + PicScreenshot string `json:"pic_screenshot" description:"截图"` + Actor string `json:"actor" description:"演员"` + Director string `json:"director" description:"导演"` + Writer string `json:"writer" description:"编剧"` + Remarks string `json:"remarks" description:"备注"` + Pubdate string `json:"pubdate" description:"发布时间"` + Total int `json:"total" description:"总集数"` + Serial string `json:"serial" description:"连载数"` + Duration string `json:"duration" description:"视频时长"` + Tv string `json:"tv" description:"电视频道"` + Weekday string `json:"weekday" description:"节目周期"` + Class string `json:"class" description:"扩展分类"` + Area string `json:"area" description:"地区"` + Lang string `json:"lang" description:"语言"` + Jumpurl string `json:"jumpurl" description:"跳转URL"` + Version string `json:"version" description:"资源版本"` + Year int `json:"year" description:"年份"` + State string `json:"state" description:"资源类别"` + DoubanScore float64 `json:"douban_score" description:"豆瓣评分"` + DoubanId int `json:"douban_id" description:"豆瓣ID"` + Up int `json:"up" description:"顶"` + Down int `json:"down" description:"踩"` + Hits int `json:"hits" description:"人气"` + HitsMonth int `json:"hits_month" description:"月人气"` + HitsWeek int `json:"hits_week" description:"周人气"` + HitsDay int `json:"hits_day" description:"天人气"` +} + +// CreateRes 创建视频响应 +type CreateRes struct{} + +// UpdateReq 更新视频请求 +type UpdateReq struct { + g.Meta `path:"/video/update" method:"post" summary:"更新视频" tags:"视频"` + Id uint `json:"id" description:""` + Title string `json:"title" description:"标题"` + TitleSub string `json:"title_sub" description:"副标"` + Letter string `json:"letter" description:"首字母"` + Tag string `json:"tag" description:"TAG"` + Color string `json:"color" description:"颜色"` + Lock uint `json:"lock" description:"锁定"` + Copyright uint `json:"copyright" description:"版权"` + IsEnd uint `json:"is_end" description:"完结"` + Status uint `json:"status" description:"状态"` + CategoryId uint `json:"category_id" description:"分类"` + Pic string `json:"pic" description:"图片"` + PicId string `json:"pic_id" description:"图片编号"` + PicLocal string `json:"pic_local" description:""` + PicThumb string `json:"pic_thumb" description:"缩略图"` + PicSlide string `json:"pic_slide" description:"轮播"` + PicScreenshot string `json:"pic_screenshot" description:"截图"` + Actor string `json:"actor" description:"演员"` + Director string `json:"director" description:"导演"` + Writer string `json:"writer" description:"编剧"` + Remarks string `json:"remarks" description:"备注"` + Pubdate string `json:"pubdate" description:"发布时间"` + Total int `json:"total" description:"总集数"` + Serial string `json:"serial" description:"连载数"` + Duration string `json:"duration" description:"视频时长"` + Tv string `json:"tv" description:"电视频道"` + Weekday string `json:"weekday" description:"节目周期"` + Class string `json:"class" description:"扩展分类"` + Area string `json:"area" description:"地区"` + Lang string `json:"lang" description:"语言"` + Jumpurl string `json:"jumpurl" description:"跳转URL"` + Version string `json:"version" description:"资源版本"` + Year int `json:"year" description:"年份"` + State string `json:"state" description:"资源类别"` + DoubanScore float64 `json:"douban_score" description:"豆瓣评分"` + DoubanId int `json:"douban_id" description:"豆瓣ID"` + Up int `json:"up" description:"顶"` + Down int `json:"down" description:"踩"` + Hits int `json:"hits" description:"人气"` + HitsMonth int `json:"hits_month" description:"月人气"` + HitsWeek int `json:"hits_week" description:"周人气"` + HitsDay int `json:"hits_day" description:"天人气"` +} + +// UpdateRes 更新视频响应 +type UpdateRes struct{} + +// DeleteReq 删除视频请求 +type DeleteReq struct { + g.Meta `path:"/video/delete" method:"post" summary:"删除视频" tags:"视频"` + Id uint `json:"id" description:"视频ID"` +} + +// DeleteRes 删除视频响应 +type DeleteRes struct{} + +// BatchDeleteReq 批量删除视频请求 +type BatchDeleteReq struct { + g.Meta `path:"/video/batch/delete" method:"post" summary:"批量删除视频" tags:"视频"` + Ids []uint `json:"ids" description:"视频ID数组"` +} + +// BatchDeleteRes 批量删除视频响应 +type BatchDeleteRes struct{} + +// GetReq 获取视频请求 +type GetReq struct { + g.Meta `path:"/video/get" method:"post" summary:"获取视频" tags:"视频"` + Id uint `json:"id" description:"视频ID"` +} + +// GetRes 获取视频响应 +type GetRes struct { +} diff --git a/app/api/video/video.go b/app/api/video/video.go new file mode 100644 index 0000000..aaefd30 --- /dev/null +++ b/app/api/video/video.go @@ -0,0 +1,20 @@ +// ================================================================================= +// Code generated and maintained by GoFrame CLI tool. DO NOT EDIT. +// ================================================================================= + +package video + +import ( + "context" + + "xgit.pub/module/cms/app/api/video/v1" +) + +type IVideoV1 interface { + GetList(ctx context.Context, req *v1.GetListReq) (res *v1.GetListRes, err error) + Create(ctx context.Context, req *v1.CreateReq) (res *v1.CreateRes, err error) + Update(ctx context.Context, req *v1.UpdateReq) (res *v1.UpdateRes, err error) + Delete(ctx context.Context, req *v1.DeleteReq) (res *v1.DeleteRes, err error) + BatchDelete(ctx context.Context, req *v1.BatchDeleteReq) (res *v1.BatchDeleteRes, err error) + Get(ctx context.Context, req *v1.GetReq) (res *v1.GetRes, err error) +} diff --git a/app/controller/video/video.go b/app/controller/video/video.go new file mode 100644 index 0000000..5d5839c --- /dev/null +++ b/app/controller/video/video.go @@ -0,0 +1,5 @@ +// ================================================================================= +// This is auto-generated by GoFrame CLI tool only once. Fill this file as you wish. +// ================================================================================= + +package video diff --git a/app/controller/video/video_new.go b/app/controller/video/video_new.go new file mode 100644 index 0000000..e92c67e --- /dev/null +++ b/app/controller/video/video_new.go @@ -0,0 +1,15 @@ +// ================================================================================= +// Code generated and maintained by GoFrame CLI tool. DO NOT EDIT. +// ================================================================================= + +package video + +import ( + "xgit.pub/module/cms/app/api/video" +) + +type ControllerV1 struct{} + +func NewV1() video.IVideoV1 { + return &ControllerV1{} +} diff --git a/app/controller/video/video_v1_batch_delete.go b/app/controller/video/video_v1_batch_delete.go new file mode 100644 index 0000000..4960258 --- /dev/null +++ b/app/controller/video/video_v1_batch_delete.go @@ -0,0 +1,14 @@ +package video + +import ( + "context" + + "github.com/gogf/gf/v2/errors/gcode" + "github.com/gogf/gf/v2/errors/gerror" + + "xgit.pub/module/cms/app/api/video/v1" +) + +func (c *ControllerV1) BatchDelete(ctx context.Context, req *v1.BatchDeleteReq) (res *v1.BatchDeleteRes, err error) { + return nil, gerror.NewCode(gcode.CodeNotImplemented) +} diff --git a/app/controller/video/video_v1_create.go b/app/controller/video/video_v1_create.go new file mode 100644 index 0000000..e57f8f3 --- /dev/null +++ b/app/controller/video/video_v1_create.go @@ -0,0 +1,14 @@ +package video + +import ( + "context" + + "github.com/gogf/gf/v2/errors/gcode" + "github.com/gogf/gf/v2/errors/gerror" + + "xgit.pub/module/cms/app/api/video/v1" +) + +func (c *ControllerV1) Create(ctx context.Context, req *v1.CreateReq) (res *v1.CreateRes, err error) { + return nil, gerror.NewCode(gcode.CodeNotImplemented) +} diff --git a/app/controller/video/video_v1_delete.go b/app/controller/video/video_v1_delete.go new file mode 100644 index 0000000..2103bbd --- /dev/null +++ b/app/controller/video/video_v1_delete.go @@ -0,0 +1,14 @@ +package video + +import ( + "context" + + "github.com/gogf/gf/v2/errors/gcode" + "github.com/gogf/gf/v2/errors/gerror" + + "xgit.pub/module/cms/app/api/video/v1" +) + +func (c *ControllerV1) Delete(ctx context.Context, req *v1.DeleteReq) (res *v1.DeleteRes, err error) { + return nil, gerror.NewCode(gcode.CodeNotImplemented) +} diff --git a/app/controller/video/video_v1_get.go b/app/controller/video/video_v1_get.go new file mode 100644 index 0000000..0ec87d9 --- /dev/null +++ b/app/controller/video/video_v1_get.go @@ -0,0 +1,14 @@ +package video + +import ( + "context" + + "github.com/gogf/gf/v2/errors/gcode" + "github.com/gogf/gf/v2/errors/gerror" + + "xgit.pub/module/cms/app/api/video/v1" +) + +func (c *ControllerV1) Get(ctx context.Context, req *v1.GetReq) (res *v1.GetRes, err error) { + return nil, gerror.NewCode(gcode.CodeNotImplemented) +} diff --git a/app/controller/video/video_v1_get_list.go b/app/controller/video/video_v1_get_list.go new file mode 100644 index 0000000..a6b01f9 --- /dev/null +++ b/app/controller/video/video_v1_get_list.go @@ -0,0 +1,14 @@ +package video + +import ( + "context" + + "github.com/gogf/gf/v2/errors/gcode" + "github.com/gogf/gf/v2/errors/gerror" + + "xgit.pub/module/cms/app/api/video/v1" +) + +func (c *ControllerV1) GetList(ctx context.Context, req *v1.GetListReq) (res *v1.GetListRes, err error) { + return nil, gerror.NewCode(gcode.CodeNotImplemented) +} diff --git a/app/controller/video/video_v1_update.go b/app/controller/video/video_v1_update.go new file mode 100644 index 0000000..953d7a9 --- /dev/null +++ b/app/controller/video/video_v1_update.go @@ -0,0 +1,14 @@ +package video + +import ( + "context" + + "github.com/gogf/gf/v2/errors/gcode" + "github.com/gogf/gf/v2/errors/gerror" + + "xgit.pub/module/cms/app/api/video/v1" +) + +func (c *ControllerV1) Update(ctx context.Context, req *v1.UpdateReq) (res *v1.UpdateRes, err error) { + return nil, gerror.NewCode(gcode.CodeNotImplemented) +} diff --git a/app/logic/video/video.go b/app/logic/video/video.go new file mode 100644 index 0000000..d481de5 --- /dev/null +++ b/app/logic/video/video.go @@ -0,0 +1,107 @@ +package video + +import ( + "context" + "github.com/gogf/gf/v2/text/gstr" + v1 "xgit.pub/module/cms/app/api/video/v1" + "xgit.pub/module/cms/app/dao" + "xgit.pub/module/cms/app/model" +) + +type sVideo struct { +} + +func (s *sVideo) GetList(ctx context.Context, req *v1.GetListReq) (res *v1.GetListRes, err error) { + res = &v1.GetListRes{} + tx := dao.Video.Ctx(ctx) + //var ms []*entity.Video + var ms []*model.Video + + if req.Title != "" { //标题 + tx = tx.WhereLike(dao.Video.Columns().Title, "%"+req.Title+"%") + } + //if req.TitleSub != "" { + // tx = tx.WhereLike(dao.Video.Columns().TitleSub, "%"+req.TitleSub+"%") + //} + if len(req.CategoryIdList) > 0 { //分类 + tx = tx.WhereIn(dao.Video.Columns().CategoryId, req.CategoryIdList) + } + if req.Lock != "" { //锁定 + tx = tx.Where(dao.Video.Columns().Lock, req.Lock) + } + if req.IsEnd != "" { //完结 + tx = tx.Where(dao.Video.Columns().IsEnd, req.IsEnd) + } + if req.Copyright != "" { //版权 + tx = tx.Where(dao.Video.Columns().Copyright, req.Copyright) + } + if req.Year > 0 { //年份 + tx = tx.Where(dao.Video.Columns().Year, req.Year) + } + if req.Actor != "" { //演员 + tx = tx.WhereLike(dao.Video.Columns().Actor, "%"+req.Actor+"%") + } + if req.Director != "" { //导演 + tx = tx.WhereLike(dao.Video.Columns().Director, "%"+req.Director+"%") + } + if req.Writer != "" { //编剧 + tx = tx.WhereLike(dao.Video.Columns().Writer, "%"+req.Writer+"%") + } + + if err = tx.Page(req.Page, req.PageSize).Scan(&ms); err != nil { + return + } + if res.Total, err = tx.Count(); err != nil { + return + } + + for idx, item := range ms { + if len(item.Actor) > 0 { + ms[idx].ActorList = gstr.Split(item.Actor, ",") + } else { + ms[idx].ActorList = []string{} + } + if len(item.Director) > 0 { + ms[idx].DirectorList = gstr.Split(item.Director, ",") + } else { + ms[idx].DirectorList = []string{} + } + if len(item.Writer) > 0 { + ms[idx].WriterList = gstr.Split(item.Writer, ",") + } else { + ms[idx].WriterList = []string{} + } + + } + //res.Total, _ = tx.Count() + //err = tx.GetList(req.GetList, req.PageSize).Scan(&ms) + res.Page = req.Page + res.PageSize = req.PageSize + res.Rows = ms + return +} + +// Create 创建 +func (s *sVideo) Create(ctx context.Context, req *v1.CreateReq) (res *v1.CreateRes, err error) { + return +} + +// Update 更新 +func (s *sVideo) Update(ctx context.Context, req *v1.UpdateReq) (res *v1.UpdateRes, err error) { + return +} + +// Delete 删除 +func (s *sVideo) Delete(ctx context.Context, req *v1.DeleteReq) (res *v1.DeleteRes, err error) { + return +} + +// BatchDelete 批量删除 +func (s *sVideo) BatchDelete(ctx context.Context, req *v1.BatchDeleteReq) (res *v1.BatchDeleteRes, err error) { + return +} + +// Get 获取 +func (s *sVideo) Get(ctx context.Context, req *v1.GetReq) (res *v1.GetRes, err error) { + return +} diff --git a/app/model/video.go b/app/model/video.go new file mode 100644 index 0000000..c74f691 --- /dev/null +++ b/app/model/video.go @@ -0,0 +1,56 @@ +package model + +import "github.com/gogf/gf/v2/os/gtime" + +type Video struct { + Id uint `json:"id" description:""` + Title string `json:"title" description:"标题"` + TitleSub string `json:"title_sub" description:"副标"` + Letter string `json:"letter" description:"首字母"` + Tag string `json:"tag" description:"TAG"` + Color string `json:"color" description:"颜色"` + Lock uint `json:"lock" description:"锁定"` + Copyright uint `json:"copyright" description:"版权"` + IsEnd uint `json:"is_end" description:"完结"` + Status uint `json:"status" description:"状态"` + Class string `json:"class" description:"扩展分类"` + CategoryId uint `json:"category_id" description:"分类"` + Pic string `json:"pic" description:"图片"` + PicId string `json:"pic_id" description:"图片编号"` + PicLocal string `json:"pic_local" description:""` + PicThumb string `json:"pic_thumb" description:"缩略图"` + PicSlide string `json:"pic_slide" description:"轮播"` + PicScreenshot string `json:"pic_screenshot" description:"截图"` + PicStatus uint `json:"pic_status" description:"图片状态"` + Actor string `json:"actor" description:"演员"` + Director string `json:"director" description:"导演"` + Writer string `json:"writer" description:"编剧"` + Remarks string `json:"remarks" description:"备注"` + Pubdate string `json:"pubdate" description:"发布时间"` + Total int `json:"total" description:"总集数"` + Serial string `json:"serial" description:"连载数"` + Duration string `json:"duration" description:"视频时长"` + Tv string `json:"tv" description:"电视频道"` + Weekday string `json:"weekday" description:"节目周期"` + Area string `json:"area" description:"地区"` + Lang string `json:"lang" description:"语言"` + Jumpurl string `json:"jumpurl" description:"跳转URL"` + Version string `json:"version" description:"资源版本"` + Year int `json:"year" description:"年份"` + State string `json:"state" description:"资源类别"` + DoubanScore float64 `json:"douban_score" description:"豆瓣评分"` + DoubanId int `json:"douban_id" description:"豆瓣ID"` + Up int `json:"up" description:"顶"` + Down int `json:"down" description:"踩"` + Hits int `json:"hits" description:"人气"` + HitsMonth int `json:"hits_month" description:"月人气"` + HitsWeek int `json:"hits_week" description:"周人气"` + HitsDay int `json:"hits_day" description:"天人气"` + Content string `json:"content" description:"内容"` + Blurb string `json:"blurb" description:"简要介绍"` + CreatedAt *gtime.Time `json:"created_at" description:""` + UpdatedAt *gtime.Time `json:"updated_at" description:""` + ActorList []string `json:"actor_list" description:"演员"` + DirectorList []string `json:"director_list" description:"导演"` + WriterList []string `json:"writer_list" description:"编剧"` +} diff --git a/app/service/video.go b/app/service/video.go new file mode 100644 index 0000000..3c24614 --- /dev/null +++ b/app/service/video.go @@ -0,0 +1,43 @@ +// ================================================================================ +// Code generated and maintained by GoFrame CLI tool. DO NOT EDIT. +// You can delete these comments if you wish manually maintain this interface file. +// ================================================================================ + +package service + +import ( + "context" + + v1 "xgit.pub/module/cms/app/api/video/v1" +) + +type ( + IVideo interface { + GetList(ctx context.Context, req *v1.GetListReq) (res *v1.GetListRes, err error) + // Create 创建 + Create(ctx context.Context, req *v1.CreateReq) (res *v1.CreateRes, err error) + // Update 更新 + Update(ctx context.Context, req *v1.UpdateReq) (res *v1.UpdateRes, err error) + // Delete 删除 + Delete(ctx context.Context, req *v1.DeleteReq) (res *v1.DeleteRes, err error) + // BatchDelete 批量删除 + BatchDelete(ctx context.Context, req *v1.BatchDeleteReq) (res *v1.BatchDeleteRes, err error) + // Get 获取 + Get(ctx context.Context, req *v1.GetReq) (res *v1.GetRes, err error) + } +) + +var ( + localVideo IVideo +) + +func Video() IVideo { + if localVideo == nil { + panic("implement not found for interface IVideo, forgot register?") + } + return localVideo +} + +func RegisterVideo(i IVideo) { + localVideo = i +}