88 lines
2.3 KiB
Go
88 lines
2.3 KiB
Go
package dto
|
||
|
||
import (
|
||
"fmt"
|
||
"vote-api/api/model"
|
||
)
|
||
|
||
// VideoDto 视频表
|
||
type VideoDto struct {
|
||
VideoId string `json:"video_id"` // 主键id
|
||
VideoTitle string `json:"video_title"` // 视频标题
|
||
VideoStatus int `json:"article_status"` // 视频状态(1:正常 2:禁用)
|
||
VoteNum uint `json:"vote_num"` // 总票数
|
||
VideoNo string `json:"video_no"` // 视频编号(保利)
|
||
VideoContent string `json:"video_content"` // 视频内容
|
||
CreatedAt model.LocalTime `json:"created_at"` // 创建时间
|
||
UpdatedAt model.LocalTime `json:"updated_at"` // 更新时间
|
||
VideoAuthor []*VideoAuthorDto `json:"video_author"` // 作者
|
||
Rank *int `json:"rank"` // 排名
|
||
IsVote bool `json:"is_vote"` // 是否已投票(false:否 true:是)
|
||
}
|
||
|
||
// GetVideoListDto 列表-分页
|
||
func GetVideoListDto(m []*model.Video) []*VideoDto {
|
||
// 处理返回值
|
||
responses := make([]*VideoDto, len(m))
|
||
|
||
if len(m) > 0 {
|
||
for i, v := range m {
|
||
response := &VideoDto{
|
||
VideoId: fmt.Sprintf("%d", v.VideoId),
|
||
VideoTitle: v.VideoTitle,
|
||
VideoStatus: v.VideoStatus,
|
||
VoteNum: v.VoteNum,
|
||
VideoNo: v.VideoNo,
|
||
CreatedAt: v.CreatedAt,
|
||
UpdatedAt: v.UpdatedAt,
|
||
}
|
||
|
||
// 加载数据-作者
|
||
if v.VideoAuthor != nil {
|
||
response = response.LoadVideoAuthor(v.VideoAuthor)
|
||
}
|
||
|
||
// 将转换后的结构体添加到新切片中
|
||
responses[i] = response
|
||
}
|
||
}
|
||
|
||
return responses
|
||
}
|
||
|
||
// GetVideoDto 详情
|
||
func GetVideoDto(m *model.Video) *VideoDto {
|
||
return &VideoDto{
|
||
VideoId: fmt.Sprintf("%d", m.VideoId),
|
||
VideoTitle: m.VideoTitle,
|
||
VideoStatus: m.VideoStatus,
|
||
VoteNum: m.VoteNum,
|
||
VideoNo: m.VideoNo,
|
||
VideoContent: m.VideoContent,
|
||
CreatedAt: m.CreatedAt,
|
||
UpdatedAt: m.UpdatedAt,
|
||
}
|
||
}
|
||
|
||
// LoadVideoAuthor 加载数据-作者
|
||
func (r *VideoDto) LoadVideoAuthor(m []*model.VideoAuthor) *VideoDto {
|
||
if len(m) > 0 {
|
||
r.VideoAuthor = GetVideoAuthorListDto(m)
|
||
}
|
||
return r
|
||
}
|
||
|
||
// LoadRank 加载数据-排名
|
||
func (r *VideoDto) LoadRank(m int) *VideoDto {
|
||
if m > 0 {
|
||
r.Rank = &m
|
||
}
|
||
return r
|
||
}
|
||
|
||
// LoadVoteStatus 加载数据-投票状态
|
||
func (r *VideoDto) LoadVoteStatus(m bool) *VideoDto {
|
||
r.IsVote = m
|
||
return r
|
||
}
|