初始化项目,复制原投票系统后台代码
This commit is contained in:
@@ -0,0 +1,87 @@
|
||||
package dto
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"vote-video-api/api/model"
|
||||
)
|
||||
|
||||
// ArticleDto 文章表
|
||||
type ArticleDto struct {
|
||||
ArticleId string `json:"article_id"` // 主键id
|
||||
ArticleTitle string `json:"article_title"` // 文章标题
|
||||
ArticleStatus int `json:"article_status"` // 文章状态(1:正常 2:禁用)
|
||||
ArticleNumber string `json:"article_number"` // 文章编号
|
||||
VoteNum uint `json:"vote_num"` // 总票数
|
||||
ArticleContent string `json:"article_content"` // 文章内容
|
||||
CreatedAt model.LocalTime `json:"created_at"` // 创建时间
|
||||
UpdatedAt model.LocalTime `json:"updated_at"` // 更新时间
|
||||
ArticleAuthor []*ArticleAuthorDto `json:"article_author"` // 作者
|
||||
Rank *int `json:"rank"` // 排名
|
||||
IsVote bool `json:"is_vote"` // 是否已投票(false:否 true:是)
|
||||
}
|
||||
|
||||
// GetArticleListDto 列表-分页
|
||||
func GetArticleListDto(m []*model.Article) []*ArticleDto {
|
||||
// 处理返回值
|
||||
responses := make([]*ArticleDto, len(m))
|
||||
|
||||
if len(m) > 0 {
|
||||
for i, v := range m {
|
||||
response := &ArticleDto{
|
||||
ArticleId: fmt.Sprintf("%d", v.ArticleId),
|
||||
ArticleTitle: v.ArticleTitle,
|
||||
ArticleStatus: v.ArticleStatus,
|
||||
ArticleNumber: v.ArticleNumber,
|
||||
VoteNum: v.VoteNum,
|
||||
CreatedAt: v.CreatedAt,
|
||||
UpdatedAt: v.UpdatedAt,
|
||||
}
|
||||
|
||||
// 加载数据-作者
|
||||
if v.ArticleAuthor != nil {
|
||||
response = response.LoadArticleAuthor(v.ArticleAuthor)
|
||||
}
|
||||
|
||||
// 将转换后的结构体添加到新切片中
|
||||
responses[i] = response
|
||||
}
|
||||
}
|
||||
|
||||
return responses
|
||||
}
|
||||
|
||||
// GetArticleDto 详情
|
||||
func GetArticleDto(m *model.Article) *ArticleDto {
|
||||
return &ArticleDto{
|
||||
ArticleId: fmt.Sprintf("%d", m.ArticleId),
|
||||
ArticleTitle: m.ArticleTitle,
|
||||
ArticleStatus: m.ArticleStatus,
|
||||
ArticleNumber: m.ArticleNumber,
|
||||
VoteNum: m.VoteNum,
|
||||
ArticleContent: m.ArticleContent,
|
||||
CreatedAt: m.CreatedAt,
|
||||
UpdatedAt: m.UpdatedAt,
|
||||
}
|
||||
}
|
||||
|
||||
// LoadArticleAuthor 加载数据-作者
|
||||
func (r *ArticleDto) LoadArticleAuthor(m []*model.ArticleAuthor) *ArticleDto {
|
||||
if len(m) > 0 {
|
||||
r.ArticleAuthor = GetArticleAuthorListDto(m)
|
||||
}
|
||||
return r
|
||||
}
|
||||
|
||||
// LoadRank 加载数据-排名
|
||||
func (r *ArticleDto) LoadRank(m int) *ArticleDto {
|
||||
if m > 0 {
|
||||
r.Rank = &m
|
||||
}
|
||||
return r
|
||||
}
|
||||
|
||||
// LoadVoteStatus 加载数据-投票状态
|
||||
func (r *ArticleDto) LoadVoteStatus(m bool) *ArticleDto {
|
||||
r.IsVote = m
|
||||
return r
|
||||
}
|
||||
@@ -0,0 +1,42 @@
|
||||
package dto
|
||||
|
||||
import (
|
||||
"vote-video-api/api/model"
|
||||
)
|
||||
|
||||
type ArticleAuthorDto struct {
|
||||
AuthorName string `json:"author_name"` // 作者姓名
|
||||
HospitalName string `json:"hospital_name"` // 作者所属医院
|
||||
}
|
||||
|
||||
// GetArticleAuthorListDto 列表-分页
|
||||
func GetArticleAuthorListDto(m []*model.ArticleAuthor) []*ArticleAuthorDto {
|
||||
// 处理返回值
|
||||
responses := make([]*ArticleAuthorDto, len(m))
|
||||
|
||||
if len(m) > 0 {
|
||||
for i, v := range m {
|
||||
response := &ArticleAuthorDto{
|
||||
AuthorName: v.AuthorName,
|
||||
}
|
||||
|
||||
// 加载数据-医院属性
|
||||
if v.BaseHospital != nil {
|
||||
response = response.LoadBaseHospitalAttr(v.BaseHospital)
|
||||
}
|
||||
|
||||
// 将转换后的结构体添加到新切片中
|
||||
responses[i] = response
|
||||
}
|
||||
}
|
||||
|
||||
return responses
|
||||
}
|
||||
|
||||
// LoadBaseHospitalAttr 加载数据-医院属性
|
||||
func (r *ArticleAuthorDto) LoadBaseHospitalAttr(m *model.BaseHospital) *ArticleAuthorDto {
|
||||
if m != nil {
|
||||
r.HospitalName = m.HospitalName
|
||||
}
|
||||
return r
|
||||
}
|
||||
@@ -0,0 +1,28 @@
|
||||
package dto
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"vote-video-api/api/model"
|
||||
)
|
||||
|
||||
// BaseAgreementDto 基础-协议
|
||||
type BaseAgreementDto struct {
|
||||
AgreementId string `json:"agreement_id"` // 主键id
|
||||
AgreementTitle string `json:"agreement_title"` // 协议标题
|
||||
AgreementType int `json:"agreement_type"` // 协议类型(1:大赛介绍 2:投票规则)
|
||||
AgreementContent string `json:"agreement_content"` // 协议内容
|
||||
CreatedAt model.LocalTime `json:"created_at"` // 创建时间
|
||||
UpdatedAt model.LocalTime `json:"updated_at"` // 修改时间
|
||||
}
|
||||
|
||||
// GetBaseAgreementDto 详情
|
||||
func GetBaseAgreementDto(m *model.BaseAgreement) *BaseAgreementDto {
|
||||
return &BaseAgreementDto{
|
||||
AgreementId: fmt.Sprintf("%d", m.AgreementId),
|
||||
AgreementTitle: m.AgreementTitle,
|
||||
AgreementType: m.AgreementType,
|
||||
AgreementContent: m.AgreementContent,
|
||||
CreatedAt: m.CreatedAt,
|
||||
UpdatedAt: m.UpdatedAt,
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,18 @@
|
||||
package dto
|
||||
|
||||
import (
|
||||
"vote-video-api/api/model"
|
||||
)
|
||||
|
||||
type DataDto struct {
|
||||
ViewNum uint `json:"view_num"` // 浏览数量
|
||||
VoteNum uint `json:"vote_num"` // 投票数量
|
||||
}
|
||||
|
||||
// GetDataDto 详情
|
||||
func GetDataDto(m *model.Data) *DataDto {
|
||||
return &DataDto{
|
||||
ViewNum: m.ViewNum,
|
||||
VoteNum: m.VoteNum,
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,6 @@
|
||||
package dto
|
||||
|
||||
type LoginDto struct {
|
||||
UserId string `json:"user_id"` // 用户id
|
||||
Token string `json:"token"` // token
|
||||
}
|
||||
@@ -0,0 +1,16 @@
|
||||
package dto
|
||||
|
||||
import (
|
||||
"vote-video-api/api/model"
|
||||
)
|
||||
|
||||
// UserDto 用户表
|
||||
type UserDto struct {
|
||||
UserId string `json:"user_id"` // 用户id
|
||||
UserStatus int `json:"user_status"` // 状态(1:正常 2:禁用)
|
||||
OpenId string `json:"open_id"` // 用户微信标识
|
||||
LoginAt *model.LocalTime `json:"login_at"` // 登陆时间
|
||||
LoginIp string `json:"login_ip"` // 登陆ip
|
||||
CreatedAt model.LocalTime `json:"created_at"` // 创建时间
|
||||
UpdatedAt model.LocalTime `json:"updated_at"` // 更新时间
|
||||
}
|
||||
@@ -0,0 +1,90 @@
|
||||
package dto
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"vote-video-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"` // 视频编号
|
||||
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,
|
||||
VideoNumber: v.VideoNumber,
|
||||
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,
|
||||
VideoNumber: m.VideoNumber,
|
||||
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
|
||||
}
|
||||
@@ -0,0 +1,42 @@
|
||||
package dto
|
||||
|
||||
import (
|
||||
"vote-video-api/api/model"
|
||||
)
|
||||
|
||||
type VideoAuthorDto struct {
|
||||
AuthorName string `json:"author_name"` // 作者姓名
|
||||
HospitalName string `json:"hospital_name"` // 作者所属医院
|
||||
}
|
||||
|
||||
// GetVideoAuthorListDto 列表-分页
|
||||
func GetVideoAuthorListDto(m []*model.VideoAuthor) []*VideoAuthorDto {
|
||||
// 处理返回值
|
||||
responses := make([]*VideoAuthorDto, len(m))
|
||||
|
||||
if len(m) > 0 {
|
||||
for i, v := range m {
|
||||
response := &VideoAuthorDto{
|
||||
AuthorName: v.AuthorName,
|
||||
}
|
||||
|
||||
// 加载数据-医院属性
|
||||
if v.BaseHospital != nil {
|
||||
response = response.LoadBaseHospitalAttr(v.BaseHospital)
|
||||
}
|
||||
|
||||
// 将转换后的结构体添加到新切片中
|
||||
responses[i] = response
|
||||
}
|
||||
}
|
||||
|
||||
return responses
|
||||
}
|
||||
|
||||
// LoadBaseHospitalAttr 加载数据-医院属性
|
||||
func (r *VideoAuthorDto) LoadBaseHospitalAttr(m *model.BaseHospital) *VideoAuthorDto {
|
||||
if m != nil {
|
||||
r.HospitalName = m.HospitalName
|
||||
}
|
||||
return r
|
||||
}
|
||||
Reference in New Issue
Block a user