89 lines
2.6 KiB
Go
89 lines
2.6 KiB
Go
package dto
|
||
|
||
import (
|
||
"case-open-api/api/model"
|
||
"case-open-api/utils"
|
||
"fmt"
|
||
)
|
||
|
||
type ProjectDto struct {
|
||
ProjectId string `json:"project_id"` // 主键id
|
||
ProjectName string `json:"project_name"` // 项目名称
|
||
ProjectStatus int `json:"project_status"` // 项目状态(0:无效 1:正常)
|
||
ProjectImage string `json:"project_image"` // 项目背景图
|
||
IsLimitNum int `json:"is_limit_num"` // 是否限制参加数量(0:否 1:是)
|
||
MaxJoinNum int `json:"max_join_num"` // 医生最多可参加数量
|
||
CreatedAt model.LocalTime `json:"created_at"` // 创建时间
|
||
UpdatedAt model.LocalTime `json:"updated_at"` // 修改时间
|
||
CaseCount int `json:"case_count"` // 关联病例数量
|
||
IsRecentlyUpdate int `json:"is_recently_update"` // 是否最近有更新(最近7天)
|
||
IsWelfare int `json:"is_welfare"` // 是否存在福利(区分平台)
|
||
}
|
||
|
||
// GetProjectListDto 列表
|
||
func GetProjectListDto(m []*model.Project) []*ProjectDto {
|
||
// 处理返回值
|
||
responses := make([]*ProjectDto, len(m))
|
||
|
||
if len(m) > 0 {
|
||
for i, v := range m {
|
||
response := &ProjectDto{
|
||
ProjectId: fmt.Sprintf("%d", v.ProjectId),
|
||
ProjectName: v.ProjectName,
|
||
ProjectStatus: v.ProjectStatus,
|
||
IsLimitNum: v.IsLimitNum,
|
||
MaxJoinNum: v.MaxJoinNum,
|
||
ProjectImage: utils.AddOssDomain(v.ProjectImage),
|
||
CreatedAt: v.CreatedAt,
|
||
UpdatedAt: v.UpdatedAt,
|
||
}
|
||
|
||
// 加载关联病例数量
|
||
response = response.LoadCaseCount(v.Case)
|
||
|
||
// 将转换后的结构体添加到新切片中
|
||
responses[i] = response
|
||
}
|
||
}
|
||
|
||
return responses
|
||
}
|
||
|
||
// GetProjectDto 详情
|
||
func GetProjectDto(m *model.Project) *ProjectDto {
|
||
return &ProjectDto{
|
||
ProjectId: fmt.Sprintf("%d", m.ProjectId),
|
||
ProjectName: m.ProjectName,
|
||
ProjectStatus: m.ProjectStatus,
|
||
ProjectImage: utils.AddOssDomain(m.ProjectImage),
|
||
IsLimitNum: m.IsLimitNum,
|
||
MaxJoinNum: m.MaxJoinNum,
|
||
CreatedAt: m.CreatedAt,
|
||
UpdatedAt: m.UpdatedAt,
|
||
}
|
||
}
|
||
|
||
// LoadCaseCount 加载关联病例数量
|
||
func (r *ProjectDto) LoadCaseCount(m []*model.Case) *ProjectDto {
|
||
if len(m) > 0 {
|
||
r.CaseCount = len(m)
|
||
}
|
||
return r
|
||
}
|
||
|
||
// LoadIsWelfare 加载是否存在福利
|
||
func (r *ProjectDto) LoadIsWelfare(m *model.ProjectPlatform) *ProjectDto {
|
||
if m != nil {
|
||
r.IsWelfare = m.IsWelfare
|
||
}
|
||
return r
|
||
}
|
||
|
||
// LoadIsRecentlyUpdate 加载最近更新情况
|
||
func (r *ProjectDto) LoadIsRecentlyUpdate(m *model.Case) *ProjectDto {
|
||
if m != nil {
|
||
r.IsRecentlyUpdate = 1
|
||
}
|
||
return r
|
||
}
|