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

100 lines
2.8 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/utils"
"fmt"
"time"
)
type ProjectDto struct {
ProjectId string `json:"project_id"` // 主键id
ProjectName string `json:"project_name"` // 项目名称
ProjectStatus int `json:"project_status"` // 项目状态0:无效 1:正常)
ProjectImage string `json:"project_image"` // 项目背景图
CreatedAt model.LocalTime `json:"created_at"` // 创建时间
UpdatedAt model.LocalTime `json:"updated_at"` // 修改时间
CaseCount int `json:"case_count"` // 关联病例数量
ProjectPlatform int `json:"project_platform"` // 关联平台数量
LastCaseUpdatedAt model.LocalTime `json:"last_case_updated_at"` // 最后病例修改时间
}
// GetProjectListDto 列表
func GetProjectListDto(m []*model.Project) []*ProjectDto {
// 处理返回值
responses := make([]*ProjectDto, len(m))
if len(m) > 0 {
for i, v := range m {
response := &ProjectDto{
ProjectId: fmt.Sprintf("%d", v.ProjectId),
ProjectName: v.ProjectName,
ProjectStatus: v.ProjectStatus,
ProjectImage: utils.AddOssDomain(v.ProjectImage),
CreatedAt: v.CreatedAt,
UpdatedAt: v.UpdatedAt,
}
// 加载关联病例数量
response = response.LoadCaseCount(v.Case)
// 加载关联平台数量
response = response.LoadProjectPlatform(v.ProjectPlatform)
// 加载最后病例修改时间
response = response.LoadLastCaseUpdatedAt(v.ProjectPlatform)
// 将转换后的结构体添加到新切片中
responses[i] = response
}
}
return responses
}
// GetProjectDto 详情
func GetProjectDto(m *model.Project) *ProjectDto {
return &ProjectDto{
ProjectId: fmt.Sprintf("%d", m.ProjectId),
ProjectName: m.ProjectName,
ProjectStatus: m.ProjectStatus,
ProjectImage: utils.AddOssDomain(m.ProjectImage),
CreatedAt: m.CreatedAt,
UpdatedAt: m.UpdatedAt,
}
}
// LoadCaseCount 加载关联病例数量
func (r *ProjectDto) LoadCaseCount(m []*model.Case) *ProjectDto {
if len(m) > 0 {
r.CaseCount = len(m)
}
return r
}
// LoadProjectPlatform 加载关联平台数量
func (r *ProjectDto) LoadProjectPlatform(m []*model.ProjectPlatform) *ProjectDto {
if len(m) > 0 {
r.ProjectPlatform = len(m)
}
return r
}
// LoadLastCaseUpdatedAt 加载最后病例修改时间
func (r *ProjectDto) LoadLastCaseUpdatedAt(m []*model.ProjectPlatform) *ProjectDto {
if len(m) > 0 {
// 初始化最新时间为第一条记录的时间
latestTime := m[0].UpdatedAt
// 遍历所有记录找出最新的更新时间
for _, v := range m {
if time.Time(v.UpdatedAt).After(time.Time(latestTime)) {
latestTime = v.UpdatedAt
}
}
r.LastCaseUpdatedAt = latestTime
}
return r
}