This commit is contained in:
2025-03-07 17:23:50 +08:00
commit 4605e853c0
181 changed files with 17685 additions and 0 deletions
+75
View File
@@ -0,0 +1,75 @@
package dto
import (
"case-admin-api/api/model"
"case-admin-api/utils"
"fmt"
)
// AdminUserDto 后台-用户表
type AdminUserDto struct {
UserId string `json:"user_id"` // 主键id
Access string `json:"access"` // 账号
Password string `json:"password"` // 密码
Salt string `json:"salt"` // 密码掩码
NickName string `json:"nick_name"` // 昵称
IsAdmin int `json:"is_admin"` // 是否管理员(0:否 1:是)
Status int `json:"status"` // 状态(1:正常 2:审核中 3:审核失败)
IsDeleted int `json:"is_deleted"` // 是否被删除(0:否 1:是)
IsDisabled int `json:"is_disabled"` // 是否被禁用(0:否 1:是)
Phone string `json:"phone"` // 手机号
Avatar string `json:"avatar"` // 头像
Sex int `json:"sex"` // 性别(1:男 2:女)
Email string `json:"email"` // 邮箱
CreatedAt model.LocalTime `json:"created_at"` // 创建时间
UpdatedAt model.LocalTime `json:"updated_at"` // 修改时间
Token string `json:"token"` // token
}
// GetAdminUserListDto 列表
func GetAdminUserListDto(m []*model.AdminUser) []*AdminUserDto {
// 处理返回值
responses := make([]*AdminUserDto, len(m))
if len(m) > 0 {
for i, v := range m {
response := &AdminUserDto{
UserId: fmt.Sprintf("%d", v.UserId),
Access: v.Access,
NickName: v.NickName,
IsAdmin: v.IsAdmin,
Status: v.Status,
IsDeleted: v.IsDeleted,
IsDisabled: v.IsDisabled,
Phone: v.Phone,
Avatar: utils.AddOssDomain(v.Avatar),
Sex: v.Sex,
Email: v.Email,
CreatedAt: v.CreatedAt,
UpdatedAt: v.UpdatedAt,
}
// 将转换后的结构体添加到新切片中
responses[i] = response
}
}
return responses
}
func GetAdminUserDto(m *model.AdminUser) *AdminUserDto {
return &AdminUserDto{
UserId: fmt.Sprintf("%d", m.UserId),
Access: m.Access,
Status: m.Status,
IsDeleted: m.IsDeleted,
IsDisabled: m.IsDisabled,
NickName: m.NickName,
Phone: m.Phone,
Avatar: utils.AddOssDomain(m.Avatar),
Sex: m.Sex,
Email: m.Email,
CreatedAt: m.CreatedAt,
UpdatedAt: m.UpdatedAt,
}
}
+67
View File
@@ -0,0 +1,67 @@
package dto
import (
"case-admin-api/api/model"
"fmt"
)
// BasicHospitalDto 基础数据-医院
type BasicHospitalDto struct {
HospitalId string `json:"hospital_id"` // 主键id
HospitalIden string `json:"hospital_iden"` // app唯一标识
HospitalName string `json:"hospital_name"` // 医院名称
HospitalLevel string `json:"hospital_level"` // 医院等级
DoctorNumber int `json:"doctor_number"` // 医生数量
Province string `json:"province"` // 省份
City string `json:"city"` // 城市
County string `json:"county"` // 区县
Address string `json:"address"` // 地址
CreatedAt model.LocalTime `json:"created_at"` // 创建时间
UpdatedAt model.LocalTime `json:"updated_at"` // 修改时间
}
// GetBasicHospitalListDto 列表
func GetBasicHospitalListDto(m []*model.BasicHospital) []*BasicHospitalDto {
// 处理返回值
responses := make([]*BasicHospitalDto, len(m))
if len(m) > 0 {
for i, v := range m {
response := &BasicHospitalDto{
HospitalId: fmt.Sprintf("%d", v.HospitalId),
HospitalIden: v.HospitalIden,
HospitalName: v.HospitalName,
HospitalLevel: v.HospitalLevel,
DoctorNumber: v.DoctorNumber,
Province: v.Province,
City: v.City,
County: v.County,
Address: v.Address,
CreatedAt: v.CreatedAt,
UpdatedAt: v.UpdatedAt,
}
// 将转换后的结构体添加到新切片中
responses[i] = response
}
}
return responses
}
// GetBasicHospitalDto 详情
func GetBasicHospitalDto(m *model.BasicHospital) *BasicHospitalDto {
return &BasicHospitalDto{
HospitalId: fmt.Sprintf("%d", m.HospitalId),
HospitalIden: m.HospitalIden,
HospitalName: m.HospitalName,
HospitalLevel: m.HospitalLevel,
DoctorNumber: m.DoctorNumber,
Province: m.Province,
City: m.City,
County: m.County,
Address: m.Address,
CreatedAt: m.CreatedAt,
UpdatedAt: m.UpdatedAt,
}
}
+142
View File
@@ -0,0 +1,142 @@
package dto
import (
"case-admin-api/api/model"
"fmt"
)
// 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"` // 病例作者
SingleCaseScore int `json:"single_case_score"` // 单个病例总积分
IssuedScore int `json:"issued_score"` // 已发放积分
RemainingScore int `json:"remaining_score"` // 剩余积分
JoinNum int `json:"join_num"` // 多平台参加总人数
JoinWhiteNum int `json:"join_white_num"` // 多平台白名单参加总人数
PlatformJoinNum int `json:"platform_join_num"` // 肝胆相照平台参加总人数
PlatformJoinWhiteNum int `json:"platform_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"` // 病例明细
}
// 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
}
// LoadSingleCaseScore 加载数据-单个病例总积分
func (r *CaseDto) LoadSingleCaseScore(m *model.ProjectPlatform) *CaseDto {
if m != nil {
r.SingleCaseScore = m.SingleCaseScore
}
return r
}
// LoadIssuedScore 加载数据-已发放积分
func (r *CaseDto) LoadIssuedScore(m *model.CasePlatform) *CaseDto {
if m != nil {
r.IssuedScore = m.IssuedScore
}
return r
}
// LoadRemainingScore 加载数据-剩余积分
func (r *CaseDto) LoadRemainingScore(m int) *CaseDto {
r.RemainingScore = m
return r
}
// LoadPlatformJoinNum 加载数据-参与人数-肝胆相照平台
func (r *CaseDto) LoadPlatformJoinNum(m *model.CasePlatform) *CaseDto {
if m != nil {
r.PlatformJoinNum = m.JoinNum
}
return r
}
// LoadPlatformJoinWhiteNum 加载数据-白名单参与人数-肝胆相照平台
func (r *CaseDto) LoadPlatformJoinWhiteNum(m *model.CasePlatform) *CaseDto {
if m != nil {
r.PlatformJoinWhiteNum = m.JoinWhiteNum
}
return r
}
// LoadJoinNum 加载数据-参与人数-全平台
func (r *CaseDto) LoadJoinNum(m *model.Case) *CaseDto {
if m != nil {
r.JoinNum = m.JoinNum
}
return r
}
// LoadJoinWhiteNum 加载数据-白名单参与人数-全平台
func (r *CaseDto) LoadJoinWhiteNum(m *model.Case) *CaseDto {
if m != nil {
r.JoinWhiteNum = m.JoinWhiteNum
}
return r
}
+136
View File
@@ -0,0 +1,136 @@
package dto
import (
"case-admin-api/api/model"
"case-admin-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:正常)
IsSensitive int `json:"is_sensitive"` // 是否存在敏感词(0:否 1:是)
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"` // 评论内容
ContentWord string `json:"content_word"` // 评论内容(原版)
CreatedAt model.LocalTime `json:"created_at"` // 创建时间
UpdatedAt model.LocalTime `json:"updated_at"` // 修改时间
Area string `json:"area"` // 省份
HospitalName string `json:"hospital_name"` // 医院
DepartmentName string `json:"department_name"` // 科室
Title string `json:"title"` // 职称
UserName string `json:"user_name"` // 用户名称
}
// 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,
IsSensitive: v.IsSensitive,
IsHighQuality: v.IsHighQuality,
IsGrantHighQuality: v.IsGrantHighQuality,
LikeNum: v.LikeNum,
Content: v.Content,
ContentWord: v.ContentWord,
CreatedAt: v.CreatedAt,
UpdatedAt: v.UpdatedAt,
}
if v.ParentId != 0 {
response.ParentId = fmt.Sprintf("%d", v.ParentId)
}
if v.RootId != 0 {
response.RootId = fmt.Sprintf("%d", v.RootId)
}
// 加载数据-用户名称
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)
}
}
// 将转换后的结构体添加到新切片中
responses[i] = response
}
}
return responses
}
// LoadArea 加载数据-省份
func (r *CaseCommentDto) LoadArea(m *model.BasicHospital) *CaseCommentDto {
if m != nil {
r.Area = m.Province
}
return r
}
// LoadDepartmentName 加载数据-科室
func (r *CaseCommentDto) LoadDepartmentName(m *model.User) *CaseCommentDto {
if m != nil {
r.DepartmentName = m.DepartmentName
}
return r
}
// LoadTitle 加载数据-职称
func (r *CaseCommentDto) LoadTitle(m *model.User) *CaseCommentDto {
if m != nil {
r.Title = utils.DoctorTitleToString(m.Title)
}
return r
}
// LoadUserName 加载数据-用户名称
func (r *CaseCommentDto) LoadUserName(m *model.User) *CaseCommentDto {
if m != nil {
r.UserName = m.UserName
}
return r
}
// LoadHospitalName 加载数据-医院名称
func (r *CaseCommentDto) LoadHospitalName(m *model.BasicHospital) *CaseCommentDto {
if m != nil {
r.HospitalName = m.HospitalName
}
return r
}
+59
View File
@@ -0,0 +1,59 @@
package dto
import (
"case-admin-api/api/model"
"fmt"
)
// CaseItemDto 病历表-明细
type CaseItemDto struct {
CaseItemId string `json:"case_item_id"` // 主键id
CaseId string `json:"case_id"` // 所属病例id
Page int `json:"page"` // 页码
CreatedAt model.LocalTime `json:"created_at"` // 创建时间
UpdatedAt model.LocalTime `json:"updated_at"` // 修改时间
CaseItemQuestion []*CaseItemQuestionDto `json:"case_item_question"` // 病例明细-题目
CaseItemModel []*CaseItemModelDto `json:"case_item_model"` // 病例明细-模块
}
// GetCaseItemListDto 列表
func GetCaseItemListDto(m []*model.CaseItem) []*CaseItemDto {
// 处理返回值
responses := make([]*CaseItemDto, len(m))
if len(m) > 0 {
for i, v := range m {
response := &CaseItemDto{
CaseItemId: fmt.Sprintf("%d", v.CaseItemId),
CaseId: fmt.Sprintf("%d", v.CaseId),
Page: v.Page,
CreatedAt: v.CreatedAt,
UpdatedAt: v.UpdatedAt,
CaseItemModel: []*CaseItemModelDto{},
}
// 将转换后的结构体添加到新切片中
responses[i] = response
}
}
return responses
}
// LoadCaseItemQuestion 加载数据-病例明细-题目
func (r *CaseItemDto) LoadCaseItemQuestion(m []*model.CaseItemQuestion) *CaseItemDto {
if len(m) > 0 {
r.CaseItemQuestion = GetCaseItemQuestionListDto(m)
}
return r
}
// LoadCaseItemModel 加载数据-病例明细-模块
func (r *CaseItemDto) LoadCaseItemModel(m []*model.CaseItemModel) *CaseItemDto {
if len(m) > 0 {
r.CaseItemModel = GetCaseItemModelListDto(m)
}
return r
}
+40
View File
@@ -0,0 +1,40 @@
package dto
import (
"case-admin-api/api/model"
"fmt"
)
// CaseItemModelDto 病历表-明细
type CaseItemModelDto struct {
CaseItemModelId string `json:"case_item_model_id"` // 主键id
CaseItemId string `json:"case_item_id"` // 明细id
ModelName string `json:"model_name"` // 模型名称
Content string `json:"content"` // 详情内容
CreatedAt model.LocalTime `json:"created_at"` // 创建时间
UpdatedAt model.LocalTime `json:"updated_at"` // 修改时间
}
// GetCaseItemModelListDto 列表
func GetCaseItemModelListDto(m []*model.CaseItemModel) []*CaseItemModelDto {
// 处理返回值
responses := make([]*CaseItemModelDto, len(m))
if len(m) > 0 {
for i, v := range m {
response := &CaseItemModelDto{
CaseItemModelId: fmt.Sprintf("%d", v.CaseItemModelId),
CaseItemId: fmt.Sprintf("%d", v.CaseItemId),
ModelName: v.ModelName,
Content: v.Content,
CreatedAt: v.CreatedAt,
UpdatedAt: v.UpdatedAt,
}
// 将转换后的结构体添加到新切片中
responses[i] = response
}
}
return responses
}
+61
View File
@@ -0,0 +1,61 @@
package dto
import (
"case-admin-api/api/model"
"fmt"
)
// CaseItemQuestionDto 病历表-明细-题目
type CaseItemQuestionDto struct {
QuestionId string `json:"question_id"` // 主键id
CaseItemId string `json:"case_item_id"` // 病例明细id
QuestionName string `json:"question_name"` // 题目名称
QuestionType int `json:"question_type"` // 题目类型(1:单选 2:多选 3:问答 4:判断)
QuestionAnswer string `json:"question_answer"` // 答案
IsRightNext int `json:"is_right_next"` // 是否答对后允许下一步(0:否 1:是)
ErrorTips string `json:"error_tips"` // 答错提示
CreatedAt model.LocalTime `json:"created_at"` // 创建时间
UpdatedAt model.LocalTime `json:"updated_at"` // 修改时间
CaseItemQuestionOption []*CaseItemQuestionOptionDto `json:"case_item_question_option"` // 题目选项列表
}
// GetCaseItemQuestionListDto 列表
func GetCaseItemQuestionListDto(m []*model.CaseItemQuestion) []*CaseItemQuestionDto {
// 处理返回值
responses := make([]*CaseItemQuestionDto, len(m))
if len(m) > 0 {
for i, v := range m {
response := &CaseItemQuestionDto{
QuestionId: fmt.Sprintf("%d", v.QuestionId),
CaseItemId: fmt.Sprintf("%d", v.CaseItemId),
QuestionName: v.QuestionName,
QuestionType: v.QuestionType,
QuestionAnswer: v.QuestionAnswer,
IsRightNext: v.IsRightNext,
ErrorTips: v.ErrorTips,
CreatedAt: v.CreatedAt,
UpdatedAt: v.UpdatedAt,
}
// 加载数据-病例明细-题目-选项
if v.CaseItemQuestionOption != nil {
response = response.LoadCaseItemQuestionOption(v.CaseItemQuestionOption)
}
// 将转换后的结构体添加到新切片中
responses[i] = response
}
}
return responses
}
// LoadCaseItemQuestionOption 加载数据-病例明细-题目-选项
func (r *CaseItemQuestionDto) LoadCaseItemQuestionOption(m []*model.CaseItemQuestionOption) *CaseItemQuestionDto {
if len(m) > 0 {
r.CaseItemQuestionOption = GetCaseItemQuestionOptionListDto(m)
}
return r
}
+38
View File
@@ -0,0 +1,38 @@
package dto
import (
"case-admin-api/api/model"
"fmt"
)
// CaseItemQuestionOptionDto 病历表-明细-题目-选项
type CaseItemQuestionOptionDto struct {
OptionId string `json:"option_id"` //主键id
QuestionId string `json:"question_id"` // 题目id
OptionValue string `json:"option_value"` // 选项内容
CreatedAt model.LocalTime `json:"created_at"` // 创建时间
UpdatedAt model.LocalTime `json:"updated_at"` // 修改时间
}
// GetCaseItemQuestionOptionListDto 列表
func GetCaseItemQuestionOptionListDto(m []*model.CaseItemQuestionOption) []*CaseItemQuestionOptionDto {
// 处理返回值
responses := make([]*CaseItemQuestionOptionDto, len(m))
if len(m) > 0 {
for i, v := range m {
response := &CaseItemQuestionOptionDto{
OptionId: fmt.Sprintf("%d", v.OptionId),
QuestionId: fmt.Sprintf("%d", v.QuestionId),
OptionValue: v.OptionValue,
CreatedAt: v.CreatedAt,
UpdatedAt: v.UpdatedAt,
}
// 将转换后的结构体添加到新切片中
responses[i] = response
}
}
return responses
}
+78
View File
@@ -0,0 +1,78 @@
package dto
import (
"case-admin-api/api/model"
"fmt"
)
// CasePlatformDto 统计数据-病例-平台
type CasePlatformDto struct {
CasePlatformId string `json:"case_platform_id"` // 主键id
CaseId string `json:"case_id"` // 所属病例id
PlatformId string `json:"platform_id"` // 用户所属平台id
SingleCaseScore int `json:"single_case_score"` // 单个病例总积分
IssuedScore int `json:"issued_score"` // 已发放积分
RemainingScore int `json:"remaining_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"` // 修改时间
PlatformName string `json:"platform_name"` // 平台名称
}
// GetCasePlatformListDto 列表
func GetCasePlatformListDto(m []*model.CasePlatform) []*CasePlatformDto {
// 处理返回值
responses := make([]*CasePlatformDto, len(m))
if len(m) > 0 {
for i, v := range m {
response := &CasePlatformDto{
CasePlatformId: fmt.Sprintf("%d", v.CasePlatformId),
CaseId: fmt.Sprintf("%d", v.CaseId),
PlatformId: fmt.Sprintf("%d", v.PlatformId),
IssuedScore: v.IssuedScore,
JoinNum: v.JoinNum,
JoinWhiteNum: v.JoinWhiteNum,
MessageNum: v.MessageNum,
CreatedAt: v.CreatedAt,
UpdatedAt: v.UpdatedAt,
}
if v.Platform != nil {
response = response.LoadPlatFormName(v.Platform)
}
// 将转换后的结构体添加到新切片中
responses[i] = response
}
}
return responses
}
// LoadPlatFormName 加载数据-平台名称
func (r *CasePlatformDto) LoadPlatFormName(m *model.Platform) *CasePlatformDto {
if m != nil {
r.PlatformName = m.PlatformName
}
return r
}
// LoadSingleCaseScore 加载数据-单个病例总积分
func (r *CasePlatformDto) LoadSingleCaseScore(m *model.ProjectPlatform) *CasePlatformDto {
if m != nil {
r.SingleCaseScore = m.SingleCaseScore
}
return r
}
// LoadRemainingScore 加载数据-剩余积分
func (r *CasePlatformDto) LoadRemainingScore(m int) *CasePlatformDto {
r.RemainingScore = m
return r
}
+134
View File
@@ -0,0 +1,134 @@
package dto
import (
"case-admin-api/api/model"
"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"` // 用户名称
}
// 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)
}
}
// 将转换后的结构体添加到新切片中
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
}
+55
View File
@@ -0,0 +1,55 @@
package dto
import (
"case-admin-api/api/model"
"fmt"
)
// PlatformDto 平台表
type PlatformDto struct {
PlatformId string `json:"platform_id"` // 主键id
PlatformName string `json:"platform_name"` // 平台名称
PlatformStatus int `json:"platform_status"` // 平台状态(1:正常 2:禁用)
PlatformKey string `json:"platform_key"` // 平台标识(用于鉴权)
PlatformSecret string `json:"platform_secret"` // 平台密钥(用于鉴权)
CreatedAt model.LocalTime `json:"created_at"` // 创建时间
UpdatedAt model.LocalTime `json:"updated_at"` // 修改时间
}
// GetPlatformListDto 列表
func GetPlatformListDto(m []*model.Platform) []*PlatformDto {
// 处理返回值
responses := make([]*PlatformDto, len(m))
if len(m) > 0 {
for i, v := range m {
response := &PlatformDto{
PlatformId: fmt.Sprintf("%d", v.PlatformId),
PlatformStatus: v.PlatformStatus,
PlatformName: v.PlatformName,
PlatformKey: v.PlatformKey,
PlatformSecret: v.PlatformSecret,
CreatedAt: v.CreatedAt,
UpdatedAt: v.UpdatedAt,
}
// 将转换后的结构体添加到新切片中
responses[i] = response
}
}
return responses
}
// GetPlatformDto 详情
func GetPlatformDto(m *model.Platform) *PlatformDto {
return &PlatformDto{
PlatformId: fmt.Sprintf("%d", m.PlatformId),
PlatformStatus: m.PlatformStatus,
PlatformName: m.PlatformName,
PlatformKey: m.PlatformKey,
PlatformSecret: m.PlatformSecret,
CreatedAt: m.CreatedAt,
UpdatedAt: m.UpdatedAt,
}
}
+99
View File
@@ -0,0 +1,99 @@
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
}
+94
View File
@@ -0,0 +1,94 @@
package dto
import (
"case-admin-api/api/model"
"fmt"
)
// ProjectPlatformDto 项目表-关联平台
type ProjectPlatformDto struct {
ProjectPlatformId string `json:"project_platform_id"` // 主键id
PlatformId string `json:"platform_id"` // 主键id
ProjectId string `json:"project_id"` // 项目id
Status int `json:"status"` // 状态(1:正常 2:禁用)
IsWelfare int `json:"is_welfare"` // 是否开启福利(0:否 1:是)
ReadDuration int `json:"read_duration"` // 阅读时长(秒)
SingleCaseScore int `json:"single_case_score"` // 单个病例总积分
CompleteRead int `json:"complete_read"` // 完成阅读积分
CompleteReadTime int `json:"complete_read_time"` // 完成阅读时间积分
FirstHighQuality int `json:"first_high_quality"` // 首次优质留言积分
OnceMoreHighQuality int `json:"once_more_high_quality"` // 再次优质留言积分
IsWhite int `json:"is_white"` // 是否开启白名单(0:否 1:是)
WhiteType int `json:"white_type"` // 白名单类型(1:医院 2:医生 3:动态)
CreatedAt model.LocalTime `json:"created_at"` // 创建时间
UpdatedAt model.LocalTime `json:"updated_at"` // 修改时间
PlatformName string `json:"platform_name"` // 平台名称
}
// GetProjectPlatformListDto 列表
func GetProjectPlatformListDto(m []*model.ProjectPlatform) []*ProjectPlatformDto {
// 处理返回值
responses := make([]*ProjectPlatformDto, len(m))
if len(m) > 0 {
for i, v := range m {
response := &ProjectPlatformDto{
ProjectPlatformId: fmt.Sprintf("%d", v.ProjectPlatformId),
PlatformId: fmt.Sprintf("%d", v.PlatformId),
ProjectId: fmt.Sprintf("%d", v.ProjectId),
Status: v.Status,
IsWelfare: v.IsWelfare,
ReadDuration: v.ReadDuration,
SingleCaseScore: v.SingleCaseScore,
CompleteRead: v.CompleteRead,
CompleteReadTime: v.CompleteReadTime,
FirstHighQuality: v.FirstHighQuality,
OnceMoreHighQuality: v.OnceMoreHighQuality,
IsWhite: v.IsWhite,
WhiteType: v.WhiteType,
CreatedAt: v.CreatedAt,
UpdatedAt: v.UpdatedAt,
}
// 加载数据-平台名称
if v.Platform != nil {
response = response.LoadPlatFormName(v.Platform)
}
// 将转换后的结构体添加到新切片中
responses[i] = response
}
}
return responses
}
// GetProjectPlatformDto 详情
func GetProjectPlatformDto(m *model.ProjectPlatform) *ProjectPlatformDto {
return &ProjectPlatformDto{
ProjectPlatformId: fmt.Sprintf("%d", m.ProjectPlatformId),
PlatformId: fmt.Sprintf("%d", m.PlatformId),
ProjectId: fmt.Sprintf("%d", m.ProjectId),
Status: m.Status,
IsWelfare: m.IsWelfare,
ReadDuration: m.ReadDuration,
SingleCaseScore: m.SingleCaseScore,
CompleteRead: m.CompleteRead,
CompleteReadTime: m.CompleteReadTime,
FirstHighQuality: m.FirstHighQuality,
OnceMoreHighQuality: m.OnceMoreHighQuality,
IsWhite: m.IsWhite,
WhiteType: m.WhiteType,
CreatedAt: m.CreatedAt,
UpdatedAt: m.UpdatedAt,
}
}
// LoadPlatFormName 加载数据-平台名称
func (r *ProjectPlatformDto) LoadPlatFormName(m *model.Platform) *ProjectPlatformDto {
if m != nil {
r.PlatformName = m.PlatformName
}
return r
}
+53
View File
@@ -0,0 +1,53 @@
package dto
import (
"case-admin-api/api/model"
"fmt"
)
// ProjectPlatformDoctorDto 关联平台-白名单-医生
type ProjectPlatformDoctorDto struct {
WhiteDoctorId string `json:"white_doctor_id"` // 主键id
ProjectPlatformId string `json:"project_platform_id"` // 关联id
UserId string `json:"user_id"` // 关联用户id
Status int `json:"status"` // 状态(1:正常 2:禁用)
CreatedAt model.LocalTime `json:"created_at"` // 创建时间
UpdatedAt model.LocalTime `json:"updated_at"` // 修改时间
User *UserDto `json:"user"` //
}
// GetProjectPlatformDoctorListDto 列表
func GetProjectPlatformDoctorListDto(m []*model.ProjectPlatformDoctor) []*ProjectPlatformDoctorDto {
// 处理返回值
responses := make([]*ProjectPlatformDoctorDto, len(m))
if len(m) > 0 {
for i, v := range m {
response := &ProjectPlatformDoctorDto{
WhiteDoctorId: fmt.Sprintf("%d", v.WhiteDoctorId),
ProjectPlatformId: fmt.Sprintf("%d", v.ProjectPlatformId),
UserId: fmt.Sprintf("%d", v.UserId),
Status: v.Status,
CreatedAt: v.CreatedAt,
UpdatedAt: v.UpdatedAt,
}
// 加载数据-医院列表
response = response.LoadUser(v.User)
// 将转换后的结构体添加到新切片中
responses[i] = response
}
}
return responses
}
// LoadUser 加载数据-用户列表
func (r *ProjectPlatformDoctorDto) LoadUser(m *model.User) *ProjectPlatformDoctorDto {
if m != nil {
r.User = GetUserDto(m)
}
return r
}
+50
View File
@@ -0,0 +1,50 @@
package dto
import (
"case-admin-api/api/model"
"fmt"
)
// ProjectPlatformDynamicDto 关联平台-白名单-动态
type ProjectPlatformDynamicDto struct {
WhiteDynamicId string `gorm:"column:white_dynamic_id;type:bigint(19);primary_key;comment:主键id" json:"white_dynamic_id"`
ProjectPlatformId string `json:"project_platform_id"` // 关联id
DynamicType string `gorm:"column:dynamic_type;type:varchar(50);comment:动态类型(area:省份 level:医院等级 title:职称 department:科室 url:地址栏 类型间以-链接)" json:"dynamic_type"`
Status int `gorm:"column:status;type:tinyint(1);comment:状态(1:正常 2:禁用)" json:"status"`
CreatedAt model.LocalTime `json:"created_at"` // 创建时间
UpdatedAt model.LocalTime `json:"updated_at"` // 修改时间
ProjectPlatformDynamicItemDto []*ProjectPlatformDynamicItemDto `json:"project_platform_dynamic_item"`
}
// GetProjectPlatformDynamicListDto 列表
func GetProjectPlatformDynamicListDto(m []*model.ProjectPlatformDynamic) []*ProjectPlatformDynamicDto {
// 处理返回值
responses := make([]*ProjectPlatformDynamicDto, len(m))
if len(m) > 0 {
for i, v := range m {
response := &ProjectPlatformDynamicDto{
WhiteDynamicId: fmt.Sprintf("%d", v.WhiteDynamicId),
ProjectPlatformId: fmt.Sprintf("%d", v.ProjectPlatformId),
DynamicType: v.DynamicType,
Status: v.Status,
CreatedAt: v.CreatedAt,
UpdatedAt: v.UpdatedAt,
}
// 将转换后的结构体添加到新切片中
responses[i] = response
}
}
return responses
}
// LoadItem 加载数据-明细
func (r *ProjectPlatformDynamicDto) LoadItem(m []*model.ProjectPlatformDynamicItem) *ProjectPlatformDynamicDto {
if len(m) > 0 {
r.ProjectPlatformDynamicItemDto = GetProjectPlatformDynamicItemListDto(m)
}
return r
}
+38
View File
@@ -0,0 +1,38 @@
package dto
import (
"case-admin-api/api/model"
"fmt"
)
// ProjectPlatformDynamicItemDto 关联平台-白名单-动态-明细
type ProjectPlatformDynamicItemDto struct {
ItemId string `gorm:"column:item_id;type:bigint(19);primary_key;comment:主键id" json:"item_id"`
WhiteDynamicId string `gorm:"column:white_dynamic_id;type:bigint(19);comment:关联动态白名单id;NOT NULL" json:"white_dynamic_id"`
ItemValue string `gorm:"column:item_value;type:varchar(255);comment:明细值(area:省份 level:医院等级 title:职称 department:科室 url:地址栏 类型间以-链接)" json:"item_value"`
CreatedAt model.LocalTime `json:"created_at"` // 创建时间
UpdatedAt model.LocalTime `json:"updated_at"` // 修改时间
}
// GetProjectPlatformDynamicItemListDto 列表
func GetProjectPlatformDynamicItemListDto(m []*model.ProjectPlatformDynamicItem) []*ProjectPlatformDynamicItemDto {
// 处理返回值
responses := make([]*ProjectPlatformDynamicItemDto, len(m))
if len(m) > 0 {
for i, v := range m {
response := &ProjectPlatformDynamicItemDto{
ItemId: fmt.Sprintf("%d", v.ItemId),
WhiteDynamicId: fmt.Sprintf("%d", v.WhiteDynamicId),
ItemValue: v.ItemValue,
CreatedAt: v.CreatedAt,
UpdatedAt: v.UpdatedAt,
}
// 将转换后的结构体添加到新切片中
responses[i] = response
}
}
return responses
}
+53
View File
@@ -0,0 +1,53 @@
package dto
import (
"case-admin-api/api/model"
"fmt"
)
// ProjectPlatformHospitalDto 关联平台-白名单-医院
type ProjectPlatformHospitalDto struct {
WhiteHospitalId string `json:"white_hospital_id"` // 主键id
ProjectPlatformId string `json:"project_platform_id"` // 关联id
HospitalId string `json:"hospital_id"` // 医院id
Status int `json:"status"` // 状态(1:正常 2:禁用)
CreatedAt model.LocalTime `json:"created_at"` // 创建时间
UpdatedAt model.LocalTime `json:"updated_at"` // 修改时间
BasicHospital *BasicHospitalDto `json:"basic_hospital"` // 基础数据-医院
}
// GetProjectPlatformHospitalListDto 列表
func GetProjectPlatformHospitalListDto(m []*model.ProjectPlatformHospital) []*ProjectPlatformHospitalDto {
// 处理返回值
responses := make([]*ProjectPlatformHospitalDto, len(m))
if len(m) > 0 {
for i, v := range m {
response := &ProjectPlatformHospitalDto{
WhiteHospitalId: fmt.Sprintf("%d", v.WhiteHospitalId),
ProjectPlatformId: fmt.Sprintf("%d", v.ProjectPlatformId),
HospitalId: fmt.Sprintf("%d", v.HospitalId),
Status: v.Status,
CreatedAt: v.CreatedAt,
UpdatedAt: v.UpdatedAt,
}
// 加载数据-医院
response = response.LoadBasicHospital(v.BasicHospital)
// 将转换后的结构体添加到新切片中
responses[i] = response
}
}
return responses
}
// LoadBasicHospital 加载数据-医院
func (r *ProjectPlatformHospitalDto) LoadBasicHospital(m *model.BasicHospital) *ProjectPlatformHospitalDto {
if m != nil {
r.BasicHospital = GetBasicHospitalDto(m)
}
return r
}
+30
View File
@@ -0,0 +1,30 @@
package dto
import (
"case-admin-api/api/model"
"case-admin-api/utils"
"fmt"
)
// LoginDto 登陆
type LoginDto struct {
UserId string `json:"user_id"` // 用户id
NickName string `json:"nick_name"` // 用户名称
Avatar string `json:"avatar"` // 头像
Token string `json:"token"` // token
}
// AdminLoginDto 微信登陆
func AdminLoginDto(m *model.AdminUser) *LoginDto {
return &LoginDto{
UserId: fmt.Sprintf("%d", m.UserId),
NickName: m.NickName,
Avatar: utils.AddOssDomain(m.Avatar),
}
}
// LoadToken 加载token
func (r *LoginDto) LoadToken(token string) *LoginDto {
r.Token = token
return r
}
+80
View File
@@ -0,0 +1,80 @@
package dto
import (
"case-admin-api/api/model"
"case-admin-api/utils"
"fmt"
)
// UserDto 用户表
type UserDto struct {
UserId string `json:"user_id"` // 主键id
UserIden string `json:"user_iden"` // app唯一标识
UserName string `json:"user_name"` // 用户名称
UserMobile string `json:"user_mobile"` // 手机号
Status int `json:"status"` // 状态(0:禁用 1:正常 2:删除)
RegisterSource int `json:"register_source"` // 注册来源(1:未知 2:app用户 3:佳动例)
OpenId string `json:"open_id"` // 用户微信标识
UnionId string `json:"union_id"` // 微信开放平台标识
Sex int `json:"sex"` // 性别(0:未知 1:男 2:女)
Avatar string `json:"avatar"` // 头像
Title int `json:"title"` // 医生职称(1:主任医师 2:主任中医师 3:副主任医师 4:副主任中医师 5:主治医师 6:住院医师)
DepartmentName string `json:"department_name"` // 科室名称
HospitalId string `json:"hospital_id"` // 所属医院id
CreatedAt model.LocalTime `json:"created_at"` // 创建时间
UpdatedAt model.LocalTime `json:"updated_at"` // 修改时间
}
// GetUserListDto 列表
func GetUserListDto(m []*model.User) []*UserDto {
// 处理返回值
responses := make([]*UserDto, len(m))
if len(m) > 0 {
for i, v := range m {
response := &UserDto{
UserId: fmt.Sprintf("%d", v.UserId),
UserIden: v.UserIden,
UserName: v.UserName,
UserMobile: v.UserMobile,
Status: v.Status,
RegisterSource: v.RegisterSource,
OpenId: v.OpenId,
UnionId: v.UnionId,
Sex: v.Sex,
Avatar: utils.AddOssDomain(v.Avatar),
Title: v.Title,
DepartmentName: v.DepartmentName,
HospitalId: fmt.Sprintf("%d", v.HospitalId),
CreatedAt: v.CreatedAt,
UpdatedAt: v.UpdatedAt,
}
// 将转换后的结构体添加到新切片中
responses[i] = response
}
}
return responses
}
// GetUserDto 详情
func GetUserDto(m *model.User) *UserDto {
return &UserDto{
UserId: fmt.Sprintf("%d", m.UserId),
UserIden: m.UserIden,
UserName: m.UserName,
UserMobile: m.UserMobile,
Status: m.Status,
RegisterSource: m.RegisterSource,
OpenId: m.OpenId,
UnionId: m.UnionId,
Sex: m.Sex,
Avatar: utils.AddOssDomain(m.Avatar),
Title: m.Title,
DepartmentName: m.DepartmentName,
HospitalId: fmt.Sprintf("%d", m.HospitalId),
CreatedAt: m.CreatedAt,
UpdatedAt: m.UpdatedAt,
}
}