修改病例明细,修改了删除和新增问题的处理

This commit is contained in:
wucongxing8150 2025-03-14 11:55:20 +08:00
parent 7d04de732b
commit b80593dc78
2 changed files with 60 additions and 27 deletions

View File

@ -7,6 +7,7 @@ import (
"case-admin-api/api/responses"
"case-admin-api/global"
"case-admin-api/utils"
"fmt"
"github.com/gin-gonic/gin"
"strconv"
)
@ -288,52 +289,83 @@ func (b *CaseItem) PutCaseItem(c *gin.Context) {
return
}
// 检测问题情况
var deleteCaseItemQuestions []*model.CaseItemQuestion
var addCaseItemQuestions []*requests.CaseItemQuestion
for _, itemQuestion := range req.CaseItemQuestion {
if itemQuestion.QuestionId == "" {
addCaseItemQuestions = append(addCaseItemQuestions, itemQuestion)
}
}
for _, question := range caseItemQuestions {
isExist := false
for _, itemQuestion := range req.CaseItemQuestion {
if itemQuestion.QuestionId == "" {
continue
}
if itemQuestion.QuestionId == fmt.Sprintf("%d", question.QuestionId) {
isExist = true
break
}
}
// 如果没有找到匹配项,则需要删除
if !isExist {
deleteCaseItemQuestions = append(deleteCaseItemQuestions, question)
}
}
statCaseQuestionDao := dao.StatCaseQuestionDao{}
caseUserAnswerDao := dao.CaseUserAnswerDao{}
for _, question := range caseItemQuestions {
if question.QuestionType == 1 || question.QuestionType == 2 || question.QuestionType == 4 {
// 删除对应答题记录
if len(deleteCaseItemQuestions) > 0 {
for _, question := range deleteCaseItemQuestions {
if question.QuestionType == 1 || question.QuestionType == 2 || question.QuestionType == 4 {
// 删除对应答题记录
maps = make(map[string]interface{})
maps["question_id"] = question.QuestionId
err := statCaseQuestionDao.DeleteStatCaseQuestion(tx, maps)
if err != nil {
tx.Rollback()
responses.FailWithMessage("操作失败", c)
return
}
// 删除问题选项
maps = make(map[string]interface{})
maps["question_id"] = question.QuestionId
err = caseItemQuestionOptionDao.DeleteCaseItemQuestionOption(tx, maps)
if err != nil {
tx.Rollback()
responses.FailWithMessage("操作失败", c)
return
}
}
// 删除用户答题记录
maps = make(map[string]interface{})
maps["question_id"] = question.QuestionId
err := statCaseQuestionDao.DeleteStatCaseQuestion(tx, maps)
err := caseUserAnswerDao.DeleteCaseUserAnswer(tx, maps)
if err != nil {
tx.Rollback()
responses.FailWithMessage("操作失败", c)
return
}
// 删除问题选项
maps = make(map[string]interface{})
maps["question_id"] = question.QuestionId
err = caseItemQuestionOptionDao.DeleteCaseItemQuestionOption(tx, maps)
// 删除问题
err = caseItemQuestionDao.DeleteCaseItemQuestionById(tx, question.QuestionId)
if err != nil {
tx.Rollback()
responses.FailWithMessage("操作失败", c)
return
}
}
// 删除用户答题记录
maps = make(map[string]interface{})
maps["question_id"] = question.QuestionId
err := caseUserAnswerDao.DeleteCaseUserAnswer(tx, maps)
if err != nil {
tx.Rollback()
responses.FailWithMessage("操作失败", c)
return
}
// 删除问题
err = caseItemQuestionDao.DeleteCaseItemQuestionById(tx, question.QuestionId)
if err != nil {
tx.Rollback()
responses.FailWithMessage("操作失败", c)
return
}
}
// 新增病例题目
if len(req.CaseItemQuestion) > 0 {
if len(addCaseItemQuestions) > 0 {
for _, question := range req.CaseItemQuestion {
caseItemQuestion := &model.CaseItemQuestion{
CaseId: caseItem.CaseId,

View File

@ -16,6 +16,7 @@ type AddCaseItem struct {
// CaseItemQuestion 病历表-明细-题目
type CaseItemQuestion struct {
QuestionId string `json:"question_id" form:"question_id" label:"题目标识"`
QuestionName string `json:"question_name" form:"question_name" label:"题目名称" validate:"required"`
QuestionType int `json:"question_type" form:"question_type" label:"题目类型" validate:"required,oneof=1 2 3 4"`
QuestionAnswer string `json:"question_answer" form:"question_answer" label:"答案"`