diff --git a/api/dao/CaseItemModel.go b/api/dao/CaseItemModel.go new file mode 100644 index 0000000..1cd3179 --- /dev/null +++ b/api/dao/CaseItemModel.go @@ -0,0 +1,108 @@ +package dao + +import ( + "case-open-api/api/model" + "case-open-api/global" + "gorm.io/gorm" + "gorm.io/gorm/clause" +) + +type CaseItemModelDao struct { +} + +// GetCaseItemModelById 获取数据-id +func (r *CaseItemModelDao) GetCaseItemModelById(CaseItemModelId int64) (m *model.CaseItemModel, err error) { + err = global.Db.First(&m, CaseItemModelId).Error + if err != nil { + return nil, err + } + return m, nil +} + +// GetCaseItemModelPreloadById 获取数据-加载全部关联-id +func (r *CaseItemModelDao) GetCaseItemModelPreloadById(CaseItemModelId int64) (m *model.CaseItemModel, err error) { + err = global.Db.Preload(clause.Associations).First(&m, CaseItemModelId).Error + if err != nil { + return nil, err + } + return m, nil +} + +// DeleteCaseItemModel 删除 +func (r *CaseItemModelDao) DeleteCaseItemModel(tx *gorm.DB, maps interface{}) error { + err := tx.Where(maps).Delete(&model.CaseItemModel{}).Error + if err != nil { + return err + } + return nil +} + +// DeleteCaseItemModelById 删除-id +func (r *CaseItemModelDao) DeleteCaseItemModelById(tx *gorm.DB, CaseItemModelId int64) error { + if err := tx.Delete(&model.CaseItemModel{}, CaseItemModelId).Error; err != nil { + return err + } + return nil +} + +// EditCaseItemModel 修改 +func (r *CaseItemModelDao) EditCaseItemModel(tx *gorm.DB, maps interface{}, data interface{}) error { + err := tx.Model(&model.CaseItemModel{}).Where(maps).Updates(data).Error + if err != nil { + return err + } + return nil +} + +// EditCaseItemModelById 修改-id +func (r *CaseItemModelDao) EditCaseItemModelById(tx *gorm.DB, CaseItemModelId int64, data interface{}) error { + err := tx.Model(&model.CaseItemModel{}).Where("case_item_model_id = ?", CaseItemModelId).Updates(data).Error + if err != nil { + return err + } + return nil +} + +// GetCaseItemModelList 获取列表 +func (r *CaseItemModelDao) GetCaseItemModelList(maps interface{}) (m []*model.CaseItemModel, err error) { + err = global.Db.Where(maps).Find(&m).Error + if err != nil { + return nil, err + } + return m, nil +} + +// GetCaseItemModelCount 获取数量 +func (r *CaseItemModelDao) GetCaseItemModelCount(maps interface{}) (total int64, err error) { + err = global.Db.Model(&model.CaseItemModel{}).Where(maps).Count(&total).Error + if err != nil { + return 0, err + } + return total, nil +} + +// GetCaseItemModelListRand 获取列表-随机 +func (r *CaseItemModelDao) GetCaseItemModelListRand(maps interface{}, limit int) (m []*model.CaseItemModel, err error) { + err = global.Db.Where(maps).Order("rand()").Limit(limit).Find(&m).Error + if err != nil { + return nil, err + } + return m, nil +} + +// AddCaseItemModel 新增 +func (r *CaseItemModelDao) AddCaseItemModel(tx *gorm.DB, model *model.CaseItemModel) (*model.CaseItemModel, error) { + if err := tx.Create(model).Error; err != nil { + return nil, err + } + return model, nil +} + +// GetCaseItemModel 获取 +func (r *CaseItemModelDao) GetCaseItemModel(maps interface{}) (m *model.CaseItemModel, err error) { + err = global.Db.Where(maps).First(&m).Error + if err != nil { + return nil, err + } + return m, nil +} diff --git a/api/dto/CaseItem.go b/api/dto/CaseItem.go index 1fa6f4a..7857f28 100644 --- a/api/dto/CaseItem.go +++ b/api/dto/CaseItem.go @@ -10,12 +10,10 @@ type CaseItemDto struct { CaseItemId string `json:"case_item_id"` // 主键id CaseId string `json:"case_id"` // 所属病例id Page int `json:"page"` // 页码 - Content string `json:"content"` // 详情内容 - 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"` // 修改时间 CaseItemQuestion []*CaseItemQuestionDto `json:"case_item_question"` // 病例明细-题目 + CaseItemModel []*CaseItemModelDto `json:"case_item_model"` // 病例明细-模块 } // GetCaseItemListDto 列表 @@ -26,14 +24,12 @@ func GetCaseItemListDto(m []*model.CaseItem) []*CaseItemDto { 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, - Content: v.Content, - IsRightNext: v.IsRightNext, - ErrorTips: v.ErrorTips, - CreatedAt: v.CreatedAt, - UpdatedAt: v.UpdatedAt, + CaseItemId: fmt.Sprintf("%d", v.CaseItemId), + CaseId: fmt.Sprintf("%d", v.CaseId), + Page: v.Page, + CreatedAt: v.CreatedAt, + UpdatedAt: v.UpdatedAt, + CaseItemModel: []*CaseItemModelDto{}, } // 将转换后的结构体添加到新切片中 @@ -52,3 +48,12 @@ func (r *CaseItemDto) LoadCaseItemQuestion(m []*model.CaseItemQuestion) *CaseIte return r } + +// LoadCaseItemModel 加载数据-病例明细-模块 +func (r *CaseItemDto) LoadCaseItemModel(m []*model.CaseItemModel) *CaseItemDto { + if len(m) > 0 { + r.CaseItemModel = GetCaseItemModelListDto(m) + } + + return r +} diff --git a/api/dto/CaseItemModel.go b/api/dto/CaseItemModel.go new file mode 100644 index 0000000..27a4198 --- /dev/null +++ b/api/dto/CaseItemModel.go @@ -0,0 +1,40 @@ +package dto + +import ( + "case-open-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 +} diff --git a/api/model/CaseItem.go b/api/model/CaseItem.go index c600508..fda51bc 100644 --- a/api/model/CaseItem.go +++ b/api/model/CaseItem.go @@ -8,12 +8,9 @@ import ( // CaseItem 病历表-明细 type CaseItem struct { - CaseItemId int64 `gorm:"column:case_item_id;type:bigint(19);primary_key;comment:主键id" json:"case_item_id"` - CaseId int64 `gorm:"column:case_id;type:bigint(19);comment:所属病例id;NOT NULL" json:"case_id"` - Page int `gorm:"column:page;type:int(1);default:1;comment:页码" json:"page"` - Content string `gorm:"column:content;type:text;comment:详情内容" json:"content"` - IsRightNext int `gorm:"column:is_right_next;type:tinyint(1);default:1;comment:是否答对后允许下一步(0:否 1:是)" json:"is_right_next"` - ErrorTips string `gorm:"column:error_tips;type:varchar(200);comment:答错提示" json:"error_tips"` + CaseItemId int64 `gorm:"column:case_item_id;type:bigint(19);primary_key;comment:主键id" json:"case_item_id"` + CaseId int64 `gorm:"column:case_id;type:bigint(19);comment:所属病例id;NOT NULL" json:"case_id"` + Page int `gorm:"column:page;type:int(1);default:1;comment:页码" json:"page"` Model } diff --git a/api/model/CaseItemModel.go b/api/model/CaseItemModel.go new file mode 100644 index 0000000..efe2559 --- /dev/null +++ b/api/model/CaseItemModel.go @@ -0,0 +1,34 @@ +package model + +import ( + "case-open-api/global" + "gorm.io/gorm" + "time" +) + +// CaseItemModel 病历表-明细 +type CaseItemModel struct { + CaseItemModelId int64 `gorm:"column:case_item_model_id;type:bigint(19);primary_key;comment:主键id" json:"case_item_model_id"` + CaseItemId int64 `gorm:"column:case_item_id;type:bigint(19);comment:明细id;NOT NULL" json:"case_item_id"` + ModelName string `gorm:"column:model_name;type:varchar(200);comment:模型名称" json:"model_name"` + Content string `gorm:"column:content;type:text;comment:详情内容" json:"content"` + Model +} + +func (m *CaseItemModel) TableName() string { + return "case_item_model" +} + +func (m *CaseItemModel) BeforeCreate(tx *gorm.DB) error { + if m.CaseItemModelId == 0 { + m.CaseItemModelId = global.Snowflake.Generate().Int64() + } + + m.CreatedAt = LocalTime(time.Now()) + tx.Statement.SetColumn("CreatedAt", m.CreatedAt) + + m.UpdatedAt = LocalTime(time.Now()) + tx.Statement.SetColumn("UpdatedAt", m.UpdatedAt) + + return nil +}