package dto import ( "case-admin-api/api/model" "case-admin-api/utils" "fmt" ) // CaseUserDto 统计数据-病例-用户 type CaseUserDto struct { CaseUserId string `json:"case_user_id"` // 主键id CaseId string `json:"case_id"` // 所属病例id PlatformId string `json:"platform_id"` // 用户所属平台id UserId string `json:"user_id"` // 用户id ShareUserIden string `json:"share_user_iden"` // 分享人标识 ReadDuration int `json:"read_duration"` // 阅读时长(秒) TotalScore int `json:"total_score"` // 单个病例领取总积分 StartTime model.LocalTime `json:"start_time"` // 开始参与时间 EndTime model.LocalTime `json:"end_time"` // 结束参与时间 CreatedAt model.LocalTime `json:"created_at"` // 创建时间 UpdatedAt model.LocalTime `json:"updated_at"` // 修改时间 PlatformName string `json:"platform_name"` // 平台名称 Area string `json:"area"` // 省份 HospitalName string `json:"hospital_name"` // 医院 DepartmentName string `json:"department_name"` // 科室 Title string `json:"title"` // 职称 UserName string `json:"user_name"` // 用户名称 } // GetCaseUserListDto 列表 func GetCaseUserListDto(m []*model.CaseUser) []*CaseUserDto { // 处理返回值 responses := make([]*CaseUserDto, len(m)) if len(m) > 0 { for i, v := range m { response := &CaseUserDto{ CaseUserId: fmt.Sprintf("%d", v.CaseUserId), CaseId: fmt.Sprintf("%d", v.CaseId), PlatformId: fmt.Sprintf("%d", v.PlatformId), UserId: fmt.Sprintf("%d", v.UserId), ShareUserIden: v.ShareUserIden, ReadDuration: v.ReadDuration, TotalScore: v.TotalScore, StartTime: v.StartTime, EndTime: v.EndTime, CreatedAt: v.CreatedAt, UpdatedAt: v.UpdatedAt, } // 加载数据-平台名称 if v.Platform != nil { response = response.LoadPlatFormName(v.Platform) } if v.User != nil { // 加载数据-科室 response = response.LoadDepartmentName(v.User) // 加载数据-职称 response = response.LoadTitle(v.User) // 加载数据-用户名称 response = response.LoadUserName(v.User) // 加载数据-省份 if v.User.Hospital != nil { response = response.LoadArea(v.User.Hospital) response = response.LoadHospitalName(v.User.Hospital) } } // 将转换后的结构体添加到新切片中 responses[i] = response } } return responses } // LoadPlatFormName 加载数据-平台名称 func (r *CaseUserDto) LoadPlatFormName(m *model.Platform) *CaseUserDto { if m != nil { r.PlatformName = m.PlatformName } return r } // LoadArea 加载数据-省份 func (r *CaseUserDto) LoadArea(m *model.BasicHospital) *CaseUserDto { if m != nil { r.Area = m.Province } return r } // LoadDepartmentName 加载数据-科室 func (r *CaseUserDto) LoadDepartmentName(m *model.User) *CaseUserDto { if m != nil { r.DepartmentName = m.DepartmentName } return r } // LoadTitle 加载数据-职称 func (r *CaseUserDto) LoadTitle(m *model.User) *CaseUserDto { if m != nil { r.Title = utils.DoctorTitleToString(m.Title) } return r } // LoadUserName 加载数据-用户名称 func (r *CaseUserDto) LoadUserName(m *model.User) *CaseUserDto { if m != nil { r.UserName = m.UserName } return r } // LoadHospitalName 加载数据-医院名称 func (r *CaseUserDto) LoadHospitalName(m *model.BasicHospital) *CaseUserDto { if m != nil { r.HospitalName = m.HospitalName } return r }