Compare commits

...

9 Commits

Author SHA1 Message Date
07236fc173 1 2025-03-07 19:03:20 +08:00
e4399da92d 1 2025-02-27 15:24:03 +08:00
b2832bb57f 项目列表增加病理状态判断 2025-02-21 10:37:05 +08:00
6c51011a0d 1 2025-01-24 16:00:57 +08:00
5d21087a6d 修改了访问链接 2025-01-14 15:55:00 +08:00
fedcae5c04 修改了白名单验证 2025-01-13 16:27:55 +08:00
88a27a131b 修改了部分数据结构1 2025-01-09 16:50:35 +08:00
dc65bd9e09 修改了部分数据结构 2025-01-08 14:47:34 +08:00
069c972327 接口已全部新增完毕1 2024-12-30 18:13:04 +08:00
19 changed files with 430 additions and 49 deletions

BIN
.DS_Store vendored Normal file

Binary file not shown.

View File

@ -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)

View File

@ -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
View 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
}

View File

@ -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
View 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
}

View File

@ -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{}).

View File

@ -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
View 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
}

View File

@ -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,
}

View File

@ -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
}

View File

@ -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"`

View File

@ -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
}

View 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
}

View File

@ -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 {

View 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
}

View File

@ -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"`

View File

@ -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

2
go.mod
View File

@ -1,6 +1,6 @@
module case-open-api
go 1.19
go 1.20
require (
github.com/alibabacloud-go/darabonba-openapi/v2 v2.0.10