135 lines
3.7 KiB
Go
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
|
|
}
|