153 lines
4.3 KiB
Go
153 lines
4.3 KiB
Go
package dto
|
||
|
||
import (
|
||
"case-admin-api/api/model"
|
||
"case-admin-api/api/service"
|
||
"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"` // 用户名称
|
||
UserIsWhite int `json:"user_is_white"` // 用户是否白名单(0:否 1:是)
|
||
}
|
||
|
||
// 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)
|
||
}
|
||
|
||
// 加载数据-用户白名单
|
||
response = response.LoadUserIsWhite(v.User, v.Case, v.Platform)
|
||
}
|
||
|
||
// 将转换后的结构体添加到新切片中
|
||
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
|
||
}
|
||
|
||
// LoadUserIsWhite 加载数据-用户白名单
|
||
func (r *CaseUserDto) LoadUserIsWhite(m *model.User, c *model.Case, p *model.Platform) *CaseUserDto {
|
||
if m != nil && c != nil && p != nil {
|
||
projectPlatformWhiteService := service.ProjectPlatformWhiteService{}
|
||
isWhite, _ := projectPlatformWhiteService.CheckProjectPlatformWhiteByUser(m, c.ProjectId, p.PlatformId)
|
||
if isWhite {
|
||
r.UserIsWhite = 1
|
||
}
|
||
}
|
||
|
||
return r
|
||
}
|