102 lines
2.9 KiB
Go
102 lines
2.9 KiB
Go
package dto
|
||
|
||
import (
|
||
"case-api/api/model"
|
||
"fmt"
|
||
"time"
|
||
)
|
||
|
||
// CaseDto 病历表
|
||
type CaseDto struct {
|
||
CaseId string `json:"case_id"` // 主键id
|
||
ProjectId string `json:"project_id"` // 所属项目id
|
||
CaseStatus int `json:"case_status"` // 病例状态(1:正常 2:禁用)
|
||
CaseName string `json:"case_name"` // 病例名称
|
||
CaseAuthor string `json:"case_author"` // 病例作者
|
||
IssuedScore int `json:"issued_score"` // 多平台已发放积分
|
||
JoinNum int `json:"join_num"` // 多平台参加总人数
|
||
JoinWhiteNum int `json:"join_white_num"` // 多平台白名单参加总人数
|
||
MessageNum int `json:"message_num"` // 多平台留言人数
|
||
CreatedAt model.LocalTime `json:"created_at"` // 创建时间
|
||
UpdatedAt model.LocalTime `json:"updated_at"` // 修改时间
|
||
CaseItem []*CaseItemDto `json:"case_item"` // 病例明细
|
||
IsNew int `json:"is_new"` // 是否为新病例(最近7天)
|
||
IsJoin int `json:"is_join"` // 是否参与过(区分平台)
|
||
IsWelfare int `json:"is_welfare"` // 是否存在福利(区分平台)
|
||
}
|
||
|
||
// GetCaseListDto 列表
|
||
func GetCaseListDto(m []*model.Case) []*CaseDto {
|
||
// 处理返回值
|
||
responses := make([]*CaseDto, len(m))
|
||
|
||
if len(m) > 0 {
|
||
for i, v := range m {
|
||
response := &CaseDto{
|
||
CaseId: fmt.Sprintf("%d", v.CaseId),
|
||
ProjectId: fmt.Sprintf("%d", v.ProjectId),
|
||
CaseStatus: v.CaseStatus,
|
||
CaseName: v.CaseName,
|
||
CaseAuthor: v.CaseAuthor,
|
||
IssuedScore: v.IssuedScore,
|
||
JoinNum: v.JoinNum,
|
||
JoinWhiteNum: v.JoinWhiteNum,
|
||
MessageNum: v.MessageNum,
|
||
CreatedAt: v.CreatedAt,
|
||
UpdatedAt: v.UpdatedAt,
|
||
}
|
||
|
||
// 将转换后的结构体添加到新切片中
|
||
responses[i] = response
|
||
}
|
||
}
|
||
|
||
return responses
|
||
}
|
||
|
||
// GetCaseDto 详情
|
||
func GetCaseDto(m *model.Case) *CaseDto {
|
||
return &CaseDto{
|
||
CaseId: fmt.Sprintf("%d", m.CaseId),
|
||
ProjectId: fmt.Sprintf("%d", m.ProjectId),
|
||
CaseStatus: m.CaseStatus,
|
||
CaseName: m.CaseName,
|
||
CaseAuthor: m.CaseAuthor,
|
||
IssuedScore: m.IssuedScore,
|
||
JoinNum: m.JoinNum,
|
||
JoinWhiteNum: m.JoinWhiteNum,
|
||
MessageNum: m.MessageNum,
|
||
CreatedAt: m.CreatedAt,
|
||
UpdatedAt: m.UpdatedAt,
|
||
}
|
||
}
|
||
|
||
// LoadCaseItem 加载数据-病例明细
|
||
func (r *CaseDto) LoadCaseItem(m []*model.CaseItem) *CaseDto {
|
||
if len(m) > 0 {
|
||
r.CaseItem = GetCaseItemListDto(m)
|
||
}
|
||
|
||
return r
|
||
}
|
||
|
||
// LoadIsNew 加载是否为新病例(最近7天)
|
||
func (r *CaseDto) LoadIsNew(t model.LocalTime) *CaseDto {
|
||
now := time.Now()
|
||
createdAt := time.Time(t)
|
||
diffTime := createdAt.Sub(now)
|
||
if diffTime <= 7*24*time.Hour {
|
||
r.IsNew = 1
|
||
}
|
||
|
||
return r
|
||
}
|
||
|
||
// LoadIsJoin 加载是否已参与
|
||
func (r *CaseDto) LoadIsJoin(m bool) *CaseDto {
|
||
if m {
|
||
r.IsJoin = 1
|
||
}
|
||
return r
|
||
}
|