package dto import ( "case-api/api/model" "case-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"` // 项目背景图 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, 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), 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 } // LoadIsRecentlyUpdate 加载最近更新情况 func (r *ProjectDto) LoadIsRecentlyUpdate(m *model.Case) *ProjectDto { if m != nil { r.IsRecentlyUpdate = 1 } return r }