You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
57 lines
1.5 KiB
57 lines
1.5 KiB
package logic
|
|
|
|
import (
|
|
"context"
|
|
"github.com/gogf/gf/v2/errors/gcode"
|
|
"github.com/gogf/gf/v2/errors/gerror"
|
|
"github.com/gogf/gf/v2/frame/g"
|
|
v1 "practice_Go/api/v1/shows"
|
|
"practice_Go/internal/dao"
|
|
"practice_Go/internal/model/entity"
|
|
show "practice_Go/internal/service"
|
|
)
|
|
|
|
type sShows struct{}
|
|
|
|
func init() {
|
|
show.RegisterShows(NewShows())
|
|
}
|
|
|
|
func NewShows() *sShows {
|
|
return &sShows{}
|
|
}
|
|
|
|
const (
|
|
QueryRecommend = iota + 1 // 推荐界面
|
|
QueryVideo // 精选视频
|
|
QueryClub // 博股俱乐部
|
|
QueryChannel // homilyLink频道
|
|
)
|
|
|
|
// 实现 IShows 接口中的 GetShowsList 方法
|
|
func (s *sShows) GetShowsList(ctx context.Context, req *v1.ShowReq) (res v1.GetShowsListRes, err error) {
|
|
model := dao.Shows.Ctx(ctx)
|
|
|
|
// 根据请求类型动态调整查询条件
|
|
switch req.QueryType {
|
|
case QueryVideo:
|
|
model = model.Where("type", 2).OrderAsc("publish_time") // 视频类型正序
|
|
case QueryClub:
|
|
model = model.Where("club_id", 1).OrderDesc("publish_time") // 俱乐部倒序
|
|
case QueryChannel:
|
|
model = model.Where("publisher_name", "homilyLink").OrderDesc("publish_time")
|
|
default:
|
|
model = model.OrderDesc("publish_time") // 默认推荐倒序
|
|
}
|
|
|
|
// 查询数据并填充到结果列表
|
|
var list []*entity.Shows
|
|
if err := model.Scan(&list); err != nil {
|
|
g.Log().Errorf(ctx, "内容查询异常|类型:%d|错误:%v", req.QueryType, err)
|
|
return res, gerror.WrapCode(gcode.CodeDbOperationError, err, "数据获取失败")
|
|
}
|
|
|
|
// 将查询结果赋值给返回值
|
|
res.List = list
|
|
return res, nil
|
|
}
|