Compare commits
9 Commits
90c2cf1ce0
...
07236fc173
| Author | SHA1 | Date | |
|---|---|---|---|
| 07236fc173 | |||
| e4399da92d | |||
| b2832bb57f | |||
| 6c51011a0d | |||
| 5d21087a6d | |||
| fedcae5c04 | |||
| 88a27a131b | |||
| dc65bd9e09 | |||
| 069c972327 |
@ -11,6 +11,7 @@ import (
|
|||||||
"fmt"
|
"fmt"
|
||||||
"github.com/gin-gonic/gin"
|
"github.com/gin-gonic/gin"
|
||||||
"math"
|
"math"
|
||||||
|
"strconv"
|
||||||
"time"
|
"time"
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -138,6 +139,12 @@ func (b *Res) GetResCaseRecordList(c *gin.Context) {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
projectId, err := strconv.ParseInt(req.ProjectId, 10, 64)
|
||||||
|
if err != nil {
|
||||||
|
responses.Fail(c)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
req.PlatformId = platformId
|
req.PlatformId = platformId
|
||||||
|
|
||||||
if req.StartTime != "" {
|
if req.StartTime != "" {
|
||||||
@ -168,7 +175,7 @@ func (b *Res) GetResCaseRecordList(c *gin.Context) {
|
|||||||
if len(caseUsers) > 0 {
|
if len(caseUsers) > 0 {
|
||||||
recordScoreDao := dao.RecordScoreDao{}
|
recordScoreDao := dao.RecordScoreDao{}
|
||||||
caseCommentDao := dao.CaseCommentDao{}
|
caseCommentDao := dao.CaseCommentDao{}
|
||||||
userAnswerRecordDao := dao.UserAnswerRecordDao{}
|
caseUserAnswerDao := dao.CaseUserAnswerDao{}
|
||||||
userDao := dao.UserDao{}
|
userDao := dao.UserDao{}
|
||||||
projectPlatformWhiteService := service.ProjectPlatformWhiteService{}
|
projectPlatformWhiteService := service.ProjectPlatformWhiteService{}
|
||||||
|
|
||||||
@ -191,10 +198,10 @@ func (b *Res) GetResCaseRecordList(c *gin.Context) {
|
|||||||
|
|
||||||
// 获取用户答题记录
|
// 获取用户答题记录
|
||||||
maps = make(map[string]interface{})
|
maps = make(map[string]interface{})
|
||||||
maps["case_id"] = v.CaseId
|
maps["case_user_id"] = v.CaseUserId
|
||||||
maps["platform_id"] = v.PlatformId
|
maps["platform_id"] = v.PlatformId
|
||||||
maps["user_id"] = v.UserId
|
maps["user_id"] = v.UserId
|
||||||
userAnswerRecords, _ := userAnswerRecordDao.GetUserAnswerRecordPreloadList(maps)
|
caseUserAnswers, _ := caseUserAnswerDao.GetCaseUserAnswerPreloadList(maps)
|
||||||
|
|
||||||
// 用时
|
// 用时
|
||||||
minutes := v.ReadDuration / 60
|
minutes := v.ReadDuration / 60
|
||||||
@ -265,9 +272,9 @@ func (b *Res) GetResCaseRecordList(c *gin.Context) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// 题目
|
// 题目
|
||||||
if len(userAnswerRecords) > 0 {
|
if len(caseUserAnswers) > 0 {
|
||||||
response.QuestionAnswer = make([]*dto.QuestionAnswerDto, len(userAnswerRecords))
|
response.QuestionAnswer = make([]*dto.QuestionAnswerDto, len(caseUserAnswers))
|
||||||
for i2, records := range userAnswerRecords {
|
for i2, records := range caseUserAnswers {
|
||||||
questionAnswerDto := &dto.QuestionAnswerDto{
|
questionAnswerDto := &dto.QuestionAnswerDto{
|
||||||
Question: records.CaseItemQuestion.QuestionName,
|
Question: records.CaseItemQuestion.QuestionName,
|
||||||
Answer: records.Answer,
|
Answer: records.Answer,
|
||||||
@ -287,7 +294,7 @@ func (b *Res) GetResCaseRecordList(c *gin.Context) {
|
|||||||
user, _ := userDao.GetUserById(v.UserId)
|
user, _ := userDao.GetUserById(v.UserId)
|
||||||
if user != nil {
|
if user != nil {
|
||||||
// 检测用户是否白名单
|
// 检测用户是否白名单
|
||||||
isWhite, _ := projectPlatformWhiteService.CheckProjectPlatformWhiteByUser(user, v.PlatformId)
|
isWhite, _ := projectPlatformWhiteService.CheckProjectPlatformWhiteByUser(user, projectId, v.PlatformId)
|
||||||
if isWhite {
|
if isWhite {
|
||||||
response.IsVip = 1
|
response.IsVip = 1
|
||||||
}
|
}
|
||||||
@ -328,8 +335,6 @@ func (b *Res) GetResCaseBehaviorList(c *gin.Context) {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
req.PlatformId = platformId
|
|
||||||
|
|
||||||
if req.StartTime != "" {
|
if req.StartTime != "" {
|
||||||
if req.EndTime == "" {
|
if req.EndTime == "" {
|
||||||
responses.FailWithMessage("参数错误", c)
|
responses.FailWithMessage("参数错误", c)
|
||||||
|
|||||||
@ -189,13 +189,12 @@ func (r *CaseDao) GetResCaseList(req requests.GetResCaseList) (m []*model.Case,
|
|||||||
// 构建查询条件
|
// 构建查询条件
|
||||||
query := global.Db.Model(&model.Case{})
|
query := global.Db.Model(&model.Case{})
|
||||||
|
|
||||||
// 项目
|
projectPlatformSubQuery := global.Db.Model(&model.ProjectPlatform{}).
|
||||||
projectSubQuery := global.Db.Model(&model.ProjectPlatform{}).
|
|
||||||
Where("project_platform.project_id = case.project_id").
|
Where("project_platform.project_id = case.project_id").
|
||||||
Where("project_platform.platform_id = ?", req.PlatformId).
|
Where("project_platform.platform_id = ?", req.PlatformId).
|
||||||
Where("project_platform.status = ?", 1)
|
Where("project_platform.status = ?", 1)
|
||||||
|
|
||||||
query = query.Where("EXISTS (?)", projectSubQuery)
|
query = query.Where("EXISTS (?)", projectPlatformSubQuery)
|
||||||
|
|
||||||
query = query.Where("case_status = ?", 1)
|
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.Preload("User")
|
||||||
|
|
||||||
query = query.Where("case_id = ?", req.CaseId)
|
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 != "" {
|
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
|
// 状态固定为1
|
||||||
query = query.Where("project_status = ?", 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 {
|
if req.PlatformId != 0 {
|
||||||
subQuery := global.Db.Model(&model.ProjectPlatform{}).
|
subQuery := global.Db.Model(&model.ProjectPlatform{}).
|
||||||
|
|||||||
@ -10,12 +10,10 @@ type CaseItemDto struct {
|
|||||||
CaseItemId string `json:"case_item_id"` // 主键id
|
CaseItemId string `json:"case_item_id"` // 主键id
|
||||||
CaseId string `json:"case_id"` // 所属病例id
|
CaseId string `json:"case_id"` // 所属病例id
|
||||||
Page int `json:"page"` // 页码
|
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"` // 创建时间
|
CreatedAt model.LocalTime `json:"created_at"` // 创建时间
|
||||||
UpdatedAt model.LocalTime `json:"updated_at"` // 修改时间
|
UpdatedAt model.LocalTime `json:"updated_at"` // 修改时间
|
||||||
CaseItemQuestion []*CaseItemQuestionDto `json:"case_item_question"` // 病例明细-题目
|
CaseItemQuestion []*CaseItemQuestionDto `json:"case_item_question"` // 病例明细-题目
|
||||||
|
CaseItemModel []*CaseItemModelDto `json:"case_item_model"` // 病例明细-模块
|
||||||
}
|
}
|
||||||
|
|
||||||
// GetCaseItemListDto 列表
|
// GetCaseItemListDto 列表
|
||||||
@ -29,11 +27,9 @@ func GetCaseItemListDto(m []*model.CaseItem) []*CaseItemDto {
|
|||||||
CaseItemId: fmt.Sprintf("%d", v.CaseItemId),
|
CaseItemId: fmt.Sprintf("%d", v.CaseItemId),
|
||||||
CaseId: fmt.Sprintf("%d", v.CaseId),
|
CaseId: fmt.Sprintf("%d", v.CaseId),
|
||||||
Page: v.Page,
|
Page: v.Page,
|
||||||
Content: v.Content,
|
|
||||||
IsRightNext: v.IsRightNext,
|
|
||||||
ErrorTips: v.ErrorTips,
|
|
||||||
CreatedAt: v.CreatedAt,
|
CreatedAt: v.CreatedAt,
|
||||||
UpdatedAt: v.UpdatedAt,
|
UpdatedAt: v.UpdatedAt,
|
||||||
|
CaseItemModel: []*CaseItemModelDto{},
|
||||||
}
|
}
|
||||||
|
|
||||||
// 将转换后的结构体添加到新切片中
|
// 将转换后的结构体添加到新切片中
|
||||||
@ -52,3 +48,12 @@ func (r *CaseItemDto) LoadCaseItemQuestion(m []*model.CaseItemQuestion) *CaseIte
|
|||||||
|
|
||||||
return r
|
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"` // 项目名称
|
ProjectName string `json:"project_name"` // 项目名称
|
||||||
ProjectStatus int `json:"project_status"` // 项目状态(0:无效 1:正常)
|
ProjectStatus int `json:"project_status"` // 项目状态(0:无效 1:正常)
|
||||||
ProjectImage string `json:"project_image"` // 项目背景图
|
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"` // 创建时间
|
CreatedAt model.LocalTime `json:"created_at"` // 创建时间
|
||||||
UpdatedAt model.LocalTime `json:"updated_at"` // 修改时间
|
UpdatedAt model.LocalTime `json:"updated_at"` // 修改时间
|
||||||
CaseCount int `json:"case_count"` // 关联病例数量
|
CaseCount int `json:"case_count"` // 关联病例数量
|
||||||
@ -31,8 +29,6 @@ func GetProjectListDto(m []*model.Project) []*ProjectDto {
|
|||||||
ProjectId: fmt.Sprintf("%d", v.ProjectId),
|
ProjectId: fmt.Sprintf("%d", v.ProjectId),
|
||||||
ProjectName: v.ProjectName,
|
ProjectName: v.ProjectName,
|
||||||
ProjectStatus: v.ProjectStatus,
|
ProjectStatus: v.ProjectStatus,
|
||||||
IsLimitNum: v.IsLimitNum,
|
|
||||||
MaxJoinNum: v.MaxJoinNum,
|
|
||||||
ProjectImage: utils.AddOssDomain(v.ProjectImage),
|
ProjectImage: utils.AddOssDomain(v.ProjectImage),
|
||||||
CreatedAt: v.CreatedAt,
|
CreatedAt: v.CreatedAt,
|
||||||
UpdatedAt: v.UpdatedAt,
|
UpdatedAt: v.UpdatedAt,
|
||||||
@ -56,8 +52,6 @@ func GetProjectDto(m *model.Project) *ProjectDto {
|
|||||||
ProjectName: m.ProjectName,
|
ProjectName: m.ProjectName,
|
||||||
ProjectStatus: m.ProjectStatus,
|
ProjectStatus: m.ProjectStatus,
|
||||||
ProjectImage: utils.AddOssDomain(m.ProjectImage),
|
ProjectImage: utils.AddOssDomain(m.ProjectImage),
|
||||||
IsLimitNum: m.IsLimitNum,
|
|
||||||
MaxJoinNum: m.MaxJoinNum,
|
|
||||||
CreatedAt: m.CreatedAt,
|
CreatedAt: m.CreatedAt,
|
||||||
UpdatedAt: m.UpdatedAt,
|
UpdatedAt: m.UpdatedAt,
|
||||||
}
|
}
|
||||||
|
|||||||
@ -107,8 +107,6 @@ func GetResProjectListDto(m []*model.Project) []*ResProjectDto {
|
|||||||
ProjectId: fmt.Sprintf("%d", v.ProjectId),
|
ProjectId: fmt.Sprintf("%d", v.ProjectId),
|
||||||
ProjectName: v.ProjectName,
|
ProjectName: v.ProjectName,
|
||||||
ProjectStatus: v.ProjectStatus,
|
ProjectStatus: v.ProjectStatus,
|
||||||
IsLimitNum: v.IsLimitNum,
|
|
||||||
MaxJoinNum: v.MaxJoinNum,
|
|
||||||
ProjectImage: utils.AddOssDomain(v.ProjectImage),
|
ProjectImage: utils.AddOssDomain(v.ProjectImage),
|
||||||
CreatedAt: v.CreatedAt,
|
CreatedAt: v.CreatedAt,
|
||||||
UpdatedAt: v.UpdatedAt,
|
UpdatedAt: v.UpdatedAt,
|
||||||
@ -178,7 +176,7 @@ func (r *ResProjectDto) LoadIsRecentlyUpdate(m *model.Case) *ResProjectDto {
|
|||||||
// LoadLink 加载访问链接
|
// LoadLink 加载访问链接
|
||||||
func (r *ResCaseDto) LoadLink(m *model.Case) *ResCaseDto {
|
func (r *ResCaseDto) LoadLink(m *model.Case) *ResCaseDto {
|
||||||
if m != nil {
|
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
|
r.Url = link
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -9,6 +9,7 @@ import (
|
|||||||
// BasicHospital 基础数据-医院
|
// BasicHospital 基础数据-医院
|
||||||
type BasicHospital struct {
|
type BasicHospital struct {
|
||||||
HospitalId int64 `gorm:"column:hospital_id;type:bigint(19);primary_key;comment:主键id" json:"hospital_id"`
|
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"`
|
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"`
|
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"`
|
HospitalLevel string `gorm:"column:hospital_level;type:varchar(20);comment:医院等级" json:"hospital_level"`
|
||||||
|
|||||||
@ -11,9 +11,6 @@ type CaseItem struct {
|
|||||||
CaseItemId int64 `gorm:"column:case_item_id;type:bigint(19);primary_key;comment:主键id" json:"case_item_id"`
|
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"`
|
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"`
|
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"`
|
|
||||||
Model
|
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"`
|
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"`
|
MessageNum int `gorm:"column:message_num;type:int(5);default:0;comment:留言人数" json:"message_num"`
|
||||||
Model
|
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 {
|
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"`
|
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"`
|
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"`
|
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
|
Model
|
||||||
Case []*Case `gorm:"foreignKey:ProjectId;references:project_id" json:"case"`
|
Case []*Case `gorm:"foreignKey:ProjectId;references:project_id" json:"case"`
|
||||||
ProjectPlatform []*ProjectPlatform `gorm:"foreignKey:ProjectId;references:project_id" json:"project_platform"`
|
ProjectPlatform []*ProjectPlatform `gorm:"foreignKey:ProjectId;references:project_id" json:"project_platform"`
|
||||||
|
|||||||
@ -11,11 +11,21 @@ type ProjectPlatformWhiteService struct {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// CheckProjectPlatformWhiteByUser 检测用户是否属于白名单
|
// 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{}
|
projectPlatformDoctorDao := dao.ProjectPlatformDoctorDao{}
|
||||||
maps := make(map[string]interface{})
|
maps = make(map[string]interface{})
|
||||||
maps["platform_id"] = platformId
|
maps["project_platform_id"] = projectPlatform.ProjectPlatformId
|
||||||
maps["user_id"] = user.UserId
|
maps["user_id"] = user.UserId
|
||||||
projectPlatformDoctor, _ := projectPlatformDoctorDao.GetProjectPlatformDoctor(maps)
|
projectPlatformDoctor, _ := projectPlatformDoctorDao.GetProjectPlatformDoctor(maps)
|
||||||
if projectPlatformDoctor != nil {
|
if projectPlatformDoctor != nil {
|
||||||
@ -34,7 +44,7 @@ func (r *ProjectPlatformWhiteService) CheckProjectPlatformWhiteByUser(user *mode
|
|||||||
// 白名单-医院
|
// 白名单-医院
|
||||||
projectPlatformHospitalDao := dao.ProjectPlatformHospitalDao{}
|
projectPlatformHospitalDao := dao.ProjectPlatformHospitalDao{}
|
||||||
maps = make(map[string]interface{})
|
maps = make(map[string]interface{})
|
||||||
maps["platform_id"] = platformId
|
maps["project_platform_id"] = projectPlatform.ProjectPlatformId
|
||||||
maps["hospital_id"] = user.HospitalId
|
maps["hospital_id"] = user.HospitalId
|
||||||
projectPlatformHospital, _ := projectPlatformHospitalDao.GetProjectPlatformHospital(maps)
|
projectPlatformHospital, _ := projectPlatformHospitalDao.GetProjectPlatformHospital(maps)
|
||||||
if projectPlatformHospital != nil {
|
if projectPlatformHospital != nil {
|
||||||
@ -46,7 +56,7 @@ func (r *ProjectPlatformWhiteService) CheckProjectPlatformWhiteByUser(user *mode
|
|||||||
// 白名单-动态
|
// 白名单-动态
|
||||||
projectPlatformDynamicDao := dao.ProjectPlatformDynamicDao{}
|
projectPlatformDynamicDao := dao.ProjectPlatformDynamicDao{}
|
||||||
maps = make(map[string]interface{})
|
maps = make(map[string]interface{})
|
||||||
maps["platform_id"] = platformId
|
maps["project_platform_id"] = projectPlatform.ProjectPlatformId
|
||||||
projectPlatformDynamics, _ := projectPlatformDynamicDao.GetProjectPlatformDynamicPreloadList(maps)
|
projectPlatformDynamics, _ := projectPlatformDynamicDao.GetProjectPlatformDynamicPreloadList(maps)
|
||||||
if len(projectPlatformDynamics) > 0 {
|
if len(projectPlatformDynamics) > 0 {
|
||||||
area := true
|
area := true
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user