case-admin-api/api/dto/CaseUser.go

153 lines
4.3 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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
}