case-open-api/api/dto/CaseComment.go
2024-12-30 16:34:26 +08:00

128 lines
4.2 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-open-api/api/model"
"case-open-api/utils"
"fmt"
)
// CaseCommentDto 病历表-评论
type CaseCommentDto struct {
CommentId string `json:"comment_id"` // 主键id
CaseId string `json:"case_id"` // 所属病例id
PlatformId string `json:"platform_id"` // 来源平台id
ParentId *string `json:"parent_id,omitempty"` // 父级id一级评论为null
RootId *string `json:"root_id,omitempty"` // 根评论id一级评论时为null。其余为一级评论id
Level int `json:"level"` // 级别1:留言 2:回复 3:评论)
UserId string `json:"user_id"` // 用户id
Status int `json:"status"` // 评论状态0:禁用 1:正常)
UserName string `json:"user_name"` // 用户名称
AreaName string `json:"area_name"` // 地址名称
HospitalName string `json:"hospital_name"` // 医院名称
DepartmentName string `json:"department_name"` // 科室名称
Title string `json:"title"` // 职称
IsHighQuality int `json:"is_high_quality"` // 是否优质留言0:否 1:是)
IsGrantHighQuality int `json:"is_grant_high_quality"` // 优质留言积分是否已发放0:否 1:是)
LikeNum int `json:"like_num"` // 点赞数量
Content string `json:"content"` // 评论内容
CreatedAt model.LocalTime `json:"created_at"` // 创建时间
UpdatedAt model.LocalTime `json:"updated_at"` // 修改时间
CaseComment []*CaseCommentDto `json:"case_comment"` // 次级评论
IsLike bool `json:"is_like"` // 点赞状态0:否 1:是)
TotalAmount int64 `json:"total_amount"` // 剩余评论数量
}
// GetCaseCommentListDto 列表
func GetCaseCommentListDto(m []*model.CaseComment) []*CaseCommentDto {
// 处理返回值
responses := make([]*CaseCommentDto, len(m))
if len(m) > 0 {
for i, v := range m {
response := &CaseCommentDto{
CommentId: fmt.Sprintf("%d", v.CommentId),
CaseId: fmt.Sprintf("%d", v.CaseId),
PlatformId: fmt.Sprintf("%d", v.PlatformId),
Level: v.Level,
UserId: fmt.Sprintf("%d", v.UserId),
Status: v.Status,
IsHighQuality: v.IsHighQuality,
LikeNum: v.LikeNum,
Content: v.Content,
CreatedAt: v.CreatedAt,
UpdatedAt: v.UpdatedAt,
}
// 加载数据-用户字段
if v.User != nil {
response = response.LoadUser(v.User)
// 加载数据-医院字段
if v.User.Hospital != nil {
response = response.LoadHospital(v.User.Hospital)
}
}
// 将转换后的结构体添加到新切片中
responses[i] = response
}
}
return responses
}
// LoadCaseComment 加载数据-次级评论
func (r *CaseCommentDto) LoadCaseComment(m []*model.CaseComment) *CaseCommentDto {
if len(m) > 0 {
r.CaseComment = GetCaseCommentListDto(m)
}
return r
}
// LoadIsLike 加载数据-点赞
func (r *CaseCommentDto) LoadIsLike(m int64) *CaseCommentDto {
if m > 0 {
r.IsLike = true
}
return r
}
// LoadTotalAmount 加载数据-剩余数量
func (r *CaseCommentDto) LoadTotalAmount(m int64) *CaseCommentDto {
if m > 0 {
r.TotalAmount = m
}
return r
}
// LoadUser 加载数据-用户字段
func (r *CaseCommentDto) LoadUser(m *model.User) *CaseCommentDto {
if m != nil {
r.UserName = m.UserName
r.DepartmentName = m.DepartmentName
r.Title = utils.DoctorTitleToString(m.Title)
if m.Address != "" {
r.AreaName = m.Address
}
}
return r
}
// LoadHospital 加载数据-医院字段
func (r *CaseCommentDto) LoadHospital(m *model.BasicHospital) *CaseCommentDto {
if m != nil {
r.HospitalName = m.HospitalName
if m.Address == "" {
r.AreaName = m.Province
}
}
return r
}