case-admin-api/api/dto/CaseUser.go
2025-03-07 17:23:50 +08:00

135 lines
3.7 KiB
Go

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
}