Compare commits
9 Commits
90c2cf1ce0
...
07236fc173
| Author | SHA1 | Date | |
|---|---|---|---|
| 07236fc173 | |||
| e4399da92d | |||
| b2832bb57f | |||
| 6c51011a0d | |||
| 5d21087a6d | |||
| fedcae5c04 | |||
| 88a27a131b | |||
| dc65bd9e09 | |||
| 069c972327 |
@ -11,6 +11,7 @@ import (
|
||||
"fmt"
|
||||
"github.com/gin-gonic/gin"
|
||||
"math"
|
||||
"strconv"
|
||||
"time"
|
||||
)
|
||||
|
||||
@ -138,6 +139,12 @@ func (b *Res) GetResCaseRecordList(c *gin.Context) {
|
||||
return
|
||||
}
|
||||
|
||||
projectId, err := strconv.ParseInt(req.ProjectId, 10, 64)
|
||||
if err != nil {
|
||||
responses.Fail(c)
|
||||
return
|
||||
}
|
||||
|
||||
req.PlatformId = platformId
|
||||
|
||||
if req.StartTime != "" {
|
||||
@ -168,7 +175,7 @@ func (b *Res) GetResCaseRecordList(c *gin.Context) {
|
||||
if len(caseUsers) > 0 {
|
||||
recordScoreDao := dao.RecordScoreDao{}
|
||||
caseCommentDao := dao.CaseCommentDao{}
|
||||
userAnswerRecordDao := dao.UserAnswerRecordDao{}
|
||||
caseUserAnswerDao := dao.CaseUserAnswerDao{}
|
||||
userDao := dao.UserDao{}
|
||||
projectPlatformWhiteService := service.ProjectPlatformWhiteService{}
|
||||
|
||||
@ -191,10 +198,10 @@ func (b *Res) GetResCaseRecordList(c *gin.Context) {
|
||||
|
||||
// 获取用户答题记录
|
||||
maps = make(map[string]interface{})
|
||||
maps["case_id"] = v.CaseId
|
||||
maps["case_user_id"] = v.CaseUserId
|
||||
maps["platform_id"] = v.PlatformId
|
||||
maps["user_id"] = v.UserId
|
||||
userAnswerRecords, _ := userAnswerRecordDao.GetUserAnswerRecordPreloadList(maps)
|
||||
caseUserAnswers, _ := caseUserAnswerDao.GetCaseUserAnswerPreloadList(maps)
|
||||
|
||||
// 用时
|
||||
minutes := v.ReadDuration / 60
|
||||
@ -265,9 +272,9 @@ func (b *Res) GetResCaseRecordList(c *gin.Context) {
|
||||
}
|
||||
|
||||
// 题目
|
||||
if len(userAnswerRecords) > 0 {
|
||||
response.QuestionAnswer = make([]*dto.QuestionAnswerDto, len(userAnswerRecords))
|
||||
for i2, records := range userAnswerRecords {
|
||||
if len(caseUserAnswers) > 0 {
|
||||
response.QuestionAnswer = make([]*dto.QuestionAnswerDto, len(caseUserAnswers))
|
||||
for i2, records := range caseUserAnswers {
|
||||
questionAnswerDto := &dto.QuestionAnswerDto{
|
||||
Question: records.CaseItemQuestion.QuestionName,
|
||||
Answer: records.Answer,
|
||||
@ -287,7 +294,7 @@ func (b *Res) GetResCaseRecordList(c *gin.Context) {
|
||||
user, _ := userDao.GetUserById(v.UserId)
|
||||
if user != nil {
|
||||
// 检测用户是否白名单
|
||||
isWhite, _ := projectPlatformWhiteService.CheckProjectPlatformWhiteByUser(user, v.PlatformId)
|
||||
isWhite, _ := projectPlatformWhiteService.CheckProjectPlatformWhiteByUser(user, projectId, v.PlatformId)
|
||||
if isWhite {
|
||||
response.IsVip = 1
|
||||
}
|
||||
@ -328,8 +335,6 @@ func (b *Res) GetResCaseBehaviorList(c *gin.Context) {
|
||||
return
|
||||
}
|
||||
|
||||
req.PlatformId = platformId
|
||||
|
||||
if req.StartTime != "" {
|
||||
if req.EndTime == "" {
|
||||
responses.FailWithMessage("参数错误", c)
|
||||
|
||||
@ -189,13 +189,12 @@ func (r *CaseDao) GetResCaseList(req requests.GetResCaseList) (m []*model.Case,
|
||||
// 构建查询条件
|
||||
query := global.Db.Model(&model.Case{})
|
||||
|
||||
// 项目
|
||||
projectSubQuery := global.Db.Model(&model.ProjectPlatform{}).
|
||||
projectPlatformSubQuery := global.Db.Model(&model.ProjectPlatform{}).
|
||||
Where("project_platform.project_id = case.project_id").
|
||||
Where("project_platform.platform_id = ?", req.PlatformId).
|
||||
Where("project_platform.status = ?", 1)
|
||||
|
||||
query = query.Where("EXISTS (?)", projectSubQuery)
|
||||
query = query.Where("EXISTS (?)", projectPlatformSubQuery)
|
||||
|
||||
query = query.Where("case_status = ?", 1)
|
||||
|
||||
|
||||
108
api/dao/CaseItemModel.go
Normal file
108
api/dao/CaseItemModel.go
Normal file
@ -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
|
||||
}
|
||||
@ -153,7 +153,7 @@ func (r *CaseUserDao) GetResCaseBehaviorList(req requests.GetResCaseBehaviorList
|
||||
query = query.Preload("User")
|
||||
|
||||
query = query.Where("case_id = ?", req.CaseId)
|
||||
query = query.Where("platform_id = ?", req.PlatformId)
|
||||
//query = query.Where("platform_id = ?", req.PlatformId)
|
||||
|
||||
// 时间
|
||||
if req.StartTime != "" && req.EndTime != "" {
|
||||
|
||||
144
api/dao/CaseUserAnswer.go
Normal file
144
api/dao/CaseUserAnswer.go
Normal file
@ -0,0 +1,144 @@
|
||||
package dao
|
||||
|
||||
import (
|
||||
"case-open-api/api/model"
|
||||
"case-open-api/global"
|
||||
"gorm.io/gorm"
|
||||
"gorm.io/gorm/clause"
|
||||
)
|
||||
|
||||
type CaseUserAnswerDao struct {
|
||||
}
|
||||
|
||||
// GetCaseUserAnswerById 获取数据-id
|
||||
func (r *CaseUserAnswerDao) GetCaseUserAnswerById(answerId int64) (m *model.CaseUserAnswer, err error) {
|
||||
err = global.Db.First(&m, answerId).Error
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return m, nil
|
||||
}
|
||||
|
||||
// GetCaseUserAnswerPreloadById 获取数据-加载全部关联-id
|
||||
func (r *CaseUserAnswerDao) GetCaseUserAnswerPreloadById(answerId int64) (m *model.CaseUserAnswer, err error) {
|
||||
err = global.Db.Preload(clause.Associations).First(&m, answerId).Error
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return m, nil
|
||||
}
|
||||
|
||||
// DeleteCaseUserAnswer 删除
|
||||
func (r *CaseUserAnswerDao) DeleteCaseUserAnswer(tx *gorm.DB, maps interface{}) error {
|
||||
err := tx.Where(maps).Delete(&model.CaseUserAnswer{}).Error
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
// DeleteCaseUserAnswerById 删除-id
|
||||
func (r *CaseUserAnswerDao) DeleteCaseUserAnswerById(tx *gorm.DB, answerId int64) error {
|
||||
if err := tx.Delete(&model.CaseUserAnswer{}, answerId).Error; err != nil {
|
||||
return err
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
// EditCaseUserAnswer 修改
|
||||
func (r *CaseUserAnswerDao) EditCaseUserAnswer(tx *gorm.DB, maps interface{}, data interface{}) error {
|
||||
err := tx.Model(&model.CaseUserAnswer{}).Where(maps).Updates(data).Error
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
// EditCaseUserAnswerById 修改-id
|
||||
func (r *CaseUserAnswerDao) EditCaseUserAnswerById(tx *gorm.DB, answerId int64, data interface{}) error {
|
||||
err := tx.Model(&model.CaseUserAnswer{}).Where("answer_id = ?", answerId).Updates(data).Error
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
// GetCaseUserAnswerList 获取列表
|
||||
func (r *CaseUserAnswerDao) GetCaseUserAnswerList(maps interface{}) (m []*model.CaseUserAnswer, err error) {
|
||||
err = global.Db.Where(maps).Find(&m).Error
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return m, nil
|
||||
}
|
||||
|
||||
// GetCaseUserAnswerPreloadList 获取列表-加载全部关联
|
||||
func (r *CaseUserAnswerDao) GetCaseUserAnswerPreloadList(maps interface{}) (m []*model.CaseUserAnswer, err error) {
|
||||
err = global.Db.Preload(clause.Associations).Where(maps).Find(&m).Error
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return m, nil
|
||||
}
|
||||
|
||||
// GetCaseUserAnswerCount 获取数量
|
||||
func (r *CaseUserAnswerDao) GetCaseUserAnswerCount(maps interface{}) (total int64, err error) {
|
||||
err = global.Db.Model(&model.CaseUserAnswer{}).Where(maps).Count(&total).Error
|
||||
if err != nil {
|
||||
return 0, err
|
||||
}
|
||||
return total, nil
|
||||
}
|
||||
|
||||
// GetCaseUserAnswerListRand 获取列表-随机
|
||||
func (r *CaseUserAnswerDao) GetCaseUserAnswerListRand(maps interface{}, limit int) (m []*model.CaseUserAnswer, err error) {
|
||||
err = global.Db.Where(maps).Order("rand()").Limit(limit).Find(&m).Error
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return m, nil
|
||||
}
|
||||
|
||||
// AddCaseUserAnswer 新增
|
||||
func (r *CaseUserAnswerDao) AddCaseUserAnswer(tx *gorm.DB, model *model.CaseUserAnswer) (*model.CaseUserAnswer, error) {
|
||||
if err := tx.Create(model).Error; err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return model, nil
|
||||
}
|
||||
|
||||
// GetCaseUserAnswer 获取
|
||||
func (r *CaseUserAnswerDao) GetCaseUserAnswer(maps interface{}) (m *model.CaseUserAnswer, err error) {
|
||||
err = global.Db.Where(maps).First(&m).Error
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return m, nil
|
||||
}
|
||||
|
||||
// GetCaseUserAnswerUseTx 获取
|
||||
func (r *CaseUserAnswerDao) GetCaseUserAnswerUseTx(tx *gorm.DB, maps interface{}) (m *model.CaseUserAnswer, err error) {
|
||||
err = tx.Where(maps).First(&m).Error
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return m, nil
|
||||
}
|
||||
|
||||
// Inc 自增
|
||||
func (r *CaseUserAnswerDao) Inc(tx *gorm.DB, answerId int64, field string, numeral int) error {
|
||||
err := tx.Model(&model.CaseUserAnswer{}).Where("answer_id = ?", answerId).UpdateColumn(field, gorm.Expr(field+" + ?", numeral)).Error
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
// Dec 自减
|
||||
func (r *CaseUserAnswerDao) Dec(tx *gorm.DB, answerId int64, field string, numeral int) error {
|
||||
err := tx.Model(&model.CaseUserAnswer{}).Where("answer_id = ?", answerId).UpdateColumn(field, gorm.Expr(field+" - ?", numeral)).Error
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
return nil
|
||||
}
|
||||
@ -152,7 +152,17 @@ func (r *ProjectDao) GetResProjectListSearch(req requests.GetResProjectList) (m
|
||||
// 状态固定为1
|
||||
query = query.Where("project_status = ?", 1)
|
||||
|
||||
query = query.Preload("Case")
|
||||
// 使用 Preload 关联 Case 表
|
||||
query = query.Preload("Case", func(db *gorm.DB) *gorm.DB {
|
||||
// 添加 case_status 过滤条件,排除掉 case_status 为 2 的记录
|
||||
return db.Where("case_status != ?", 2)
|
||||
})
|
||||
|
||||
caseSubQuery := global.Db.Model(&model.Case{}).
|
||||
Where("case.project_id = project.project_id").
|
||||
Where("case.case_status = ?", 1)
|
||||
|
||||
query = query.Where("EXISTS (?)", caseSubQuery)
|
||||
|
||||
if req.PlatformId != 0 {
|
||||
subQuery := global.Db.Model(&model.ProjectPlatform{}).
|
||||
|
||||
@ -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
|
||||
}
|
||||
|
||||
40
api/dto/CaseItemModel.go
Normal file
40
api/dto/CaseItemModel.go
Normal file
@ -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
|
||||
}
|
||||
@ -11,8 +11,6 @@ type ProjectDto struct {
|
||||
ProjectName string `json:"project_name"` // 项目名称
|
||||
ProjectStatus int `json:"project_status"` // 项目状态(0:无效 1:正常)
|
||||
ProjectImage string `json:"project_image"` // 项目背景图
|
||||
IsLimitNum int `json:"is_limit_num"` // 是否限制参加数量(0:否 1:是)
|
||||
MaxJoinNum int `json:"max_join_num"` // 医生最多可参加数量
|
||||
CreatedAt model.LocalTime `json:"created_at"` // 创建时间
|
||||
UpdatedAt model.LocalTime `json:"updated_at"` // 修改时间
|
||||
CaseCount int `json:"case_count"` // 关联病例数量
|
||||
@ -31,8 +29,6 @@ func GetProjectListDto(m []*model.Project) []*ProjectDto {
|
||||
ProjectId: fmt.Sprintf("%d", v.ProjectId),
|
||||
ProjectName: v.ProjectName,
|
||||
ProjectStatus: v.ProjectStatus,
|
||||
IsLimitNum: v.IsLimitNum,
|
||||
MaxJoinNum: v.MaxJoinNum,
|
||||
ProjectImage: utils.AddOssDomain(v.ProjectImage),
|
||||
CreatedAt: v.CreatedAt,
|
||||
UpdatedAt: v.UpdatedAt,
|
||||
@ -56,8 +52,6 @@ func GetProjectDto(m *model.Project) *ProjectDto {
|
||||
ProjectName: m.ProjectName,
|
||||
ProjectStatus: m.ProjectStatus,
|
||||
ProjectImage: utils.AddOssDomain(m.ProjectImage),
|
||||
IsLimitNum: m.IsLimitNum,
|
||||
MaxJoinNum: m.MaxJoinNum,
|
||||
CreatedAt: m.CreatedAt,
|
||||
UpdatedAt: m.UpdatedAt,
|
||||
}
|
||||
|
||||
@ -107,8 +107,6 @@ func GetResProjectListDto(m []*model.Project) []*ResProjectDto {
|
||||
ProjectId: fmt.Sprintf("%d", v.ProjectId),
|
||||
ProjectName: v.ProjectName,
|
||||
ProjectStatus: v.ProjectStatus,
|
||||
IsLimitNum: v.IsLimitNum,
|
||||
MaxJoinNum: v.MaxJoinNum,
|
||||
ProjectImage: utils.AddOssDomain(v.ProjectImage),
|
||||
CreatedAt: v.CreatedAt,
|
||||
UpdatedAt: v.UpdatedAt,
|
||||
@ -178,7 +176,7 @@ func (r *ResProjectDto) LoadIsRecentlyUpdate(m *model.Case) *ResProjectDto {
|
||||
// LoadLink 加载访问链接
|
||||
func (r *ResCaseDto) LoadLink(m *model.Case) *ResCaseDto {
|
||||
if m != nil {
|
||||
link := config.C.DomainName + "?source=3" + "&platform_key=654321" + "&case_id=" + fmt.Sprintf("%d", m.CaseId)
|
||||
link := config.C.DomainName + "/caseIntro" + "?project_id=" + fmt.Sprintf("%d", m.ProjectId) + "&source=3" + "&platform_key=654321" + "&case_id=" + fmt.Sprintf("%d", m.CaseId)
|
||||
r.Url = link
|
||||
}
|
||||
|
||||
|
||||
@ -9,6 +9,7 @@ import (
|
||||
// BasicHospital 基础数据-医院
|
||||
type BasicHospital struct {
|
||||
HospitalId int64 `gorm:"column:hospital_id;type:bigint(19);primary_key;comment:主键id" json:"hospital_id"`
|
||||
HospitalIden string `gorm:"column:hospital_iden;type:varchar(50);comment:app唯一标识" json:"hospital_iden"`
|
||||
HospitalName string `gorm:"column:hospital_name;type:varchar(100);comment:医院名称" json:"hospital_name"`
|
||||
Source int `gorm:"column:source;type:tinyint(1);comment:来源(2:肝胆相照 3:佳动例);NOT NULL" json:"source"`
|
||||
HospitalLevel string `gorm:"column:hospital_level;type:varchar(20);comment:医院等级" json:"hospital_level"`
|
||||
|
||||
@ -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
|
||||
}
|
||||
|
||||
|
||||
34
api/model/CaseItemModel.go
Normal file
34
api/model/CaseItemModel.go
Normal file
@ -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
|
||||
}
|
||||
@ -16,7 +16,7 @@ type CasePlatform struct {
|
||||
JoinWhiteNum int `gorm:"column:join_white_num;type:int(5);default:0;comment:白名单参加人数" json:"join_white_num"`
|
||||
MessageNum int `gorm:"column:message_num;type:int(5);default:0;comment:留言人数" json:"message_num"`
|
||||
Model
|
||||
ProjectPlatform *ProjectPlatform `gorm:"foreignKey:PlatformId;references:platform_id" json:"project_platform"`
|
||||
Platform *Platform `gorm:"foreignKey:PlatformId;references:platform_id" json:"platform"`
|
||||
}
|
||||
|
||||
func (m *CasePlatform) TableName() string {
|
||||
|
||||
38
api/model/CaseUserAnswer.go
Normal file
38
api/model/CaseUserAnswer.go
Normal file
@ -0,0 +1,38 @@
|
||||
package model
|
||||
|
||||
import (
|
||||
"case-open-api/global"
|
||||
"gorm.io/gorm"
|
||||
"time"
|
||||
)
|
||||
|
||||
// CaseUserAnswer 用户参与表-答题记录
|
||||
type CaseUserAnswer struct {
|
||||
AnswerId int64 `gorm:"column:answer_id;type:bigint(19);primary_key;comment:主键id" json:"answer_id"`
|
||||
CaseUserId int64 `gorm:"column:case_user_id;type:bigint(19);comment:用户参与id;NOT NULL" json:"case_user_id"`
|
||||
PlatformId int64 `gorm:"column:platform_id;type:bigint(19);comment:用户所属平台id;NOT NULL" json:"platform_id"`
|
||||
QuestionId int64 `gorm:"column:question_id;type:bigint(19);comment:题目id;NOT NULL" json:"question_id"`
|
||||
UserId int64 `gorm:"column:user_id;type:bigint(19);comment:用户id;NOT NULL" json:"user_id"`
|
||||
Answer string `gorm:"column:answer;type:varchar(255);comment:答案" json:"answer"`
|
||||
IsTrue int `gorm:"column:is_true;type:tinyint(1);default:0;comment:是否正确(0:否 1:是)" json:"is_true"`
|
||||
Model
|
||||
CaseItemQuestion *CaseItemQuestion `gorm:"foreignKey:QuestionId;references:question_id" json:"case_item_question"`
|
||||
}
|
||||
|
||||
func (m *CaseUserAnswer) TableName() string {
|
||||
return "case_user_answer"
|
||||
}
|
||||
|
||||
func (m *CaseUserAnswer) BeforeCreate(tx *gorm.DB) error {
|
||||
if m.AnswerId == 0 {
|
||||
m.AnswerId = 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
|
||||
}
|
||||
@ -12,8 +12,6 @@ type Project struct {
|
||||
ProjectName string `gorm:"column:project_name;type:varchar(255);comment:项目名称" json:"project_name"`
|
||||
ProjectStatus int `gorm:"column:project_status;type:tinyint(1);comment:项目状态(0:无效 1:正常)" json:"project_status"`
|
||||
ProjectImage string `gorm:"column:project_image;type:varchar(255);comment:项目背景图" json:"project_image"`
|
||||
IsLimitNum int `gorm:"column:is_limit_num;type:tinyint(1);default:0;comment:是否限制参加数量(0:否 1:是)" json:"is_limit_num"`
|
||||
MaxJoinNum int `gorm:"column:max_join_num;type:int(5);default:0;comment:医生最多可参加数量" json:"max_join_num"`
|
||||
Model
|
||||
Case []*Case `gorm:"foreignKey:ProjectId;references:project_id" json:"case"`
|
||||
ProjectPlatform []*ProjectPlatform `gorm:"foreignKey:ProjectId;references:project_id" json:"project_platform"`
|
||||
|
||||
@ -11,11 +11,21 @@ type ProjectPlatformWhiteService struct {
|
||||
}
|
||||
|
||||
// CheckProjectPlatformWhiteByUser 检测用户是否属于白名单
|
||||
func (r *ProjectPlatformWhiteService) CheckProjectPlatformWhiteByUser(user *model.User, platformId int64) (b bool, err error) {
|
||||
func (r *ProjectPlatformWhiteService) CheckProjectPlatformWhiteByUser(user *model.User, projectId, platformId int64) (b bool, err error) {
|
||||
// 获取项目关联平台数据
|
||||
projectPlatformDao := dao.ProjectPlatformDao{}
|
||||
maps := make(map[string]interface{})
|
||||
maps["project_id"] = projectId
|
||||
maps["platform_id"] = platformId
|
||||
projectPlatform, err := projectPlatformDao.GetProjectPlatform(maps)
|
||||
if err != nil {
|
||||
return false, err
|
||||
}
|
||||
|
||||
// 白名单-医生
|
||||
projectPlatformDoctorDao := dao.ProjectPlatformDoctorDao{}
|
||||
maps := make(map[string]interface{})
|
||||
maps["platform_id"] = platformId
|
||||
maps = make(map[string]interface{})
|
||||
maps["project_platform_id"] = projectPlatform.ProjectPlatformId
|
||||
maps["user_id"] = user.UserId
|
||||
projectPlatformDoctor, _ := projectPlatformDoctorDao.GetProjectPlatformDoctor(maps)
|
||||
if projectPlatformDoctor != nil {
|
||||
@ -34,7 +44,7 @@ func (r *ProjectPlatformWhiteService) CheckProjectPlatformWhiteByUser(user *mode
|
||||
// 白名单-医院
|
||||
projectPlatformHospitalDao := dao.ProjectPlatformHospitalDao{}
|
||||
maps = make(map[string]interface{})
|
||||
maps["platform_id"] = platformId
|
||||
maps["project_platform_id"] = projectPlatform.ProjectPlatformId
|
||||
maps["hospital_id"] = user.HospitalId
|
||||
projectPlatformHospital, _ := projectPlatformHospitalDao.GetProjectPlatformHospital(maps)
|
||||
if projectPlatformHospital != nil {
|
||||
@ -46,7 +56,7 @@ func (r *ProjectPlatformWhiteService) CheckProjectPlatformWhiteByUser(user *mode
|
||||
// 白名单-动态
|
||||
projectPlatformDynamicDao := dao.ProjectPlatformDynamicDao{}
|
||||
maps = make(map[string]interface{})
|
||||
maps["platform_id"] = platformId
|
||||
maps["project_platform_id"] = projectPlatform.ProjectPlatformId
|
||||
projectPlatformDynamics, _ := projectPlatformDynamicDao.GetProjectPlatformDynamicPreloadList(maps)
|
||||
if len(projectPlatformDynamics) > 0 {
|
||||
area := true
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user