package dto import ( "case-api/api/model" "fmt" "time" ) // CaseDto 病历表 type CaseDto struct { CaseId string `json:"case_id"` // 主键id ProjectId string `json:"project_id"` // 所属项目id CaseStatus int `json:"case_status"` // 病例状态(1:正常 2:禁用) CaseName string `json:"case_name"` // 病例名称 CaseAuthor string `json:"case_author"` // 病例作者 IssuedScore int `json:"issued_score"` // 多平台已发放积分 JoinNum int `json:"join_num"` // 多平台参加总人数 JoinWhiteNum int `json:"join_white_num"` // 多平台白名单参加总人数 MessageNum int `json:"message_num"` // 多平台留言人数 CreatedAt model.LocalTime `json:"created_at"` // 创建时间 UpdatedAt model.LocalTime `json:"updated_at"` // 修改时间 CaseItem []*CaseItemDto `json:"case_item"` // 病例明细 IsNew int `json:"is_new"` // 是否为新病例(最近7天) IsJoin int `json:"is_join"` // 是否参与过(区分平台) IsWelfare int `json:"is_welfare"` // 是否存在福利(区分平台) } // GetCaseListDto 列表 func GetCaseListDto(m []*model.Case) []*CaseDto { // 处理返回值 responses := make([]*CaseDto, len(m)) if len(m) > 0 { for i, v := range m { response := &CaseDto{ CaseId: fmt.Sprintf("%d", v.CaseId), ProjectId: fmt.Sprintf("%d", v.ProjectId), CaseStatus: v.CaseStatus, CaseName: v.CaseName, CaseAuthor: v.CaseAuthor, IssuedScore: v.IssuedScore, JoinNum: v.JoinNum, JoinWhiteNum: v.JoinWhiteNum, MessageNum: v.MessageNum, CreatedAt: v.CreatedAt, UpdatedAt: v.UpdatedAt, } // 将转换后的结构体添加到新切片中 responses[i] = response } } return responses } // GetCaseDto 详情 func GetCaseDto(m *model.Case) *CaseDto { return &CaseDto{ CaseId: fmt.Sprintf("%d", m.CaseId), ProjectId: fmt.Sprintf("%d", m.ProjectId), CaseStatus: m.CaseStatus, CaseName: m.CaseName, CaseAuthor: m.CaseAuthor, IssuedScore: m.IssuedScore, JoinNum: m.JoinNum, JoinWhiteNum: m.JoinWhiteNum, MessageNum: m.MessageNum, CreatedAt: m.CreatedAt, UpdatedAt: m.UpdatedAt, } } // LoadCaseItem 加载数据-病例明细 func (r *CaseDto) LoadCaseItem(m []*model.CaseItem) *CaseDto { if len(m) > 0 { r.CaseItem = GetCaseItemListDto(m) } return r } // LoadIsNew 加载是否为新病例(最近7天) func (r *CaseDto) LoadIsNew(t model.LocalTime) *CaseDto { now := time.Now() createdAt := time.Time(t) diffTime := createdAt.Sub(now) if diffTime <= 7*24*time.Hour { r.IsNew = 1 } return r } // LoadIsJoin 加载是否已参与 func (r *CaseDto) LoadIsJoin(m bool) *CaseDto { if m { r.IsJoin = 1 } return r }