From b80593dc7811374accc90ceab86bd2ce48ba5761 Mon Sep 17 00:00:00 2001 From: wucongxing8150 <815046773@qq.com> Date: Fri, 14 Mar 2025 11:55:20 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E7=97=85=E4=BE=8B=E6=98=8E?= =?UTF-8?q?=E7=BB=86=EF=BC=8C=E4=BF=AE=E6=94=B9=E4=BA=86=E5=88=A0=E9=99=A4?= =?UTF-8?q?=E5=92=8C=E6=96=B0=E5=A2=9E=E9=97=AE=E9=A2=98=E7=9A=84=E5=A4=84?= =?UTF-8?q?=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- api/controller/CaseItem.go | 86 ++++++++++++++++++++++++++------------ api/requests/CaseItem.go | 1 + 2 files changed, 60 insertions(+), 27 deletions(-) diff --git a/api/controller/CaseItem.go b/api/controller/CaseItem.go index 3753e71..1698635 100644 --- a/api/controller/CaseItem.go +++ b/api/controller/CaseItem.go @@ -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, diff --git a/api/requests/CaseItem.go b/api/requests/CaseItem.go index 31b390e..c5e39f1 100644 --- a/api/requests/CaseItem.go +++ b/api/requests/CaseItem.go @@ -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:"答案"`