package dto import ( "fmt" "vote-admin-api/api/model" ) // VideoDto 视频表 type VideoDto struct { VideoId string `json:"video_id"` // 主键id VideoTitle string `json:"video_title"` // 视频标题 VideoStatus int `json:"video_status"` // 视频状态(1:正常 2:禁用) VideoNumber string `json:"video_number"` // 视频编号 VideoNo string `json:"video_no"` // 视频编号 VoteNum uint `json:"vote_num"` // 总票数 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"` // 排名 } // 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, VideoNumber: v.VideoNumber, VideoNo: v.VideoNo, VoteNum: v.VoteNum, VideoContent: v.VideoContent, 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, VideoNumber: m.VideoNumber, VideoNo: m.VideoNo, VoteNum: m.VoteNum, 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 }