diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index b9175a7e..c80bde9f 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -38,9 +38,7 @@ stages: stage: push extends: .docker-build-push only: - - dev - - master - - main + - test variables: DockerNamespace: sf_app DockerImage: answer @@ -52,7 +50,7 @@ stages: stage: deploy-dev extends: .deploy-helm only: - - main + - test variables: LoadBalancerIP: 10.0.10.98 KubernetesCluster: dev diff --git a/internal/controller/answer_controller.go b/internal/controller/answer_controller.go index 43ea51a5..38ca3624 100644 --- a/internal/controller/answer_controller.go +++ b/internal/controller/answer_controller.go @@ -47,7 +47,7 @@ func (ac *AnswerController) RemoveAnswer(ctx *gin.Context) { return } - err := ac.answerService.RemoveAnswer(ctx, req.ID) + err := ac.answerService.RemoveAnswer(ctx, req) handler.HandleResponse(ctx, err, nil) } diff --git a/internal/service/answer_service.go b/internal/service/answer_service.go index 5d0ba33d..2839e94d 100644 --- a/internal/service/answer_service.go +++ b/internal/service/answer_service.go @@ -65,14 +65,20 @@ func NewAnswerService( } // RemoveAnswer delete answer -func (as *AnswerService) RemoveAnswer(ctx context.Context, id string) (err error) { - answerInfo, exist, err := as.answerRepo.GetByID(ctx, id) +func (as *AnswerService) RemoveAnswer(ctx context.Context, req *schema.RemoveAnswerReq) (err error) { + answerInfo, exist, err := as.answerRepo.GetByID(ctx, req.ID) if err != nil { return err } if !exist { return nil } + if answerInfo.UserID != req.UserID { + return errors.BadRequest(reason.UnauthorizedError) + } + if answerInfo.Adopted == schema.AnswerAdoptedEnable { + return errors.BadRequest(reason.UnauthorizedError) + } // user add question count err = as.questionCommon.UpdateAnswerCount(ctx, answerInfo.QuestionID, -1) @@ -85,7 +91,7 @@ func (as *AnswerService) RemoveAnswer(ctx context.Context, id string) (err error log.Error("user IncreaseAnswerCount error", err.Error()) } - err = as.answerRepo.RemoveAnswer(ctx, id) + err = as.answerRepo.RemoveAnswer(ctx, req.ID) if err != nil { return err } diff --git a/internal/service/question_service.go b/internal/service/question_service.go index 97bceb24..72f885b1 100644 --- a/internal/service/question_service.go +++ b/internal/service/question_service.go @@ -163,6 +163,17 @@ func (qs *QuestionService) RemoveQuestion(ctx context.Context, req *schema.Remov if !has { return nil } + if questionInfo.UserID != req.UserID { + return errors.BadRequest(reason.UnauthorizedError) + } + + if questionInfo.AcceptedAnswerID != "" { + return errors.BadRequest(reason.UnauthorizedError) + } + if questionInfo.AnswerCount > 0 { + return errors.BadRequest(reason.UnauthorizedError) + } + questionInfo.Status = entity.QuestionStatusDeleted err = qs.questionRepo.UpdateQuestionStatus(ctx, questionInfo) if err != nil {