mirror of https://gitee.com/answerdev/answer.git
add UpdateQuestionCheckTags
This commit is contained in:
parent
cad102a8b4
commit
da7949462e
|
@ -326,6 +326,18 @@ func (qc *QuestionController) UpdateQuestion(ctx *gin.Context) {
|
|||
// err = errors.BadRequest(reason.RequestFormatError).WithMsg(errMsg)
|
||||
// return errorlist, err
|
||||
|
||||
errlist, err := qc.questionService.UpdateQuestionCheckTags(ctx, req)
|
||||
if err != nil {
|
||||
for _, item := range errlist {
|
||||
errFields = append(errFields, item)
|
||||
}
|
||||
}
|
||||
|
||||
if len(errFields) > 0 {
|
||||
handler.HandleResponse(ctx, errors.BadRequest(reason.RequestFormatError), errFields)
|
||||
return
|
||||
}
|
||||
|
||||
resp, err := qc.questionService.UpdateQuestion(ctx, req)
|
||||
if err != nil {
|
||||
handler.HandleResponse(ctx, err, resp)
|
||||
|
|
|
@ -288,6 +288,72 @@ func (qs *QuestionService) RemoveQuestion(ctx context.Context, req *schema.Remov
|
|||
return nil
|
||||
}
|
||||
|
||||
func (qs *QuestionService) UpdateQuestionCheckTags(ctx context.Context, req *schema.QuestionUpdate) (errorlist []*validator.FormErrorField, err error) {
|
||||
dbinfo, has, err := qs.questionRepo.GetQuestion(ctx, req.ID)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
if !has {
|
||||
return
|
||||
}
|
||||
|
||||
oldTags, tagerr := qs.tagCommon.GetObjectEntityTag(ctx, req.ID)
|
||||
if tagerr != nil {
|
||||
log.Error("GetObjectEntityTag error", tagerr)
|
||||
return nil, nil
|
||||
}
|
||||
|
||||
tagNameList := make([]string, 0)
|
||||
oldtagNameList := make([]string, 0)
|
||||
for _, tag := range req.Tags {
|
||||
tagNameList = append(tagNameList, tag.SlugName)
|
||||
}
|
||||
for _, tag := range oldTags {
|
||||
oldtagNameList = append(oldtagNameList, tag.SlugName)
|
||||
}
|
||||
|
||||
isChange := qs.tagCommon.CheckTagsIsChange(ctx, tagNameList, oldtagNameList)
|
||||
|
||||
//If the content is the same, ignore it
|
||||
if dbinfo.Title == req.Title && dbinfo.OriginalText == req.Content && !isChange {
|
||||
return
|
||||
}
|
||||
|
||||
Tags, tagerr := qs.tagCommon.GetTagListByNames(ctx, tagNameList)
|
||||
if tagerr != nil {
|
||||
log.Error("GetTagListByNames error", tagerr)
|
||||
return nil, nil
|
||||
}
|
||||
|
||||
// if user can not use reserved tag, old reserved tag can not be removed and new reserved tag can not be added.
|
||||
if !req.CanUseReservedTag {
|
||||
CheckOldTag, CheckNewTag, CheckOldTaglist, CheckNewTaglist := qs.CheckChangeReservedTag(ctx, oldTags, Tags)
|
||||
if !CheckOldTag {
|
||||
errMsg := fmt.Sprintf(`The reserved tag "%s" must be present.`,
|
||||
strings.Join(CheckOldTaglist, ","))
|
||||
errorlist := make([]*validator.FormErrorField, 0)
|
||||
errorlist = append(errorlist, &validator.FormErrorField{
|
||||
ErrorField: "tags",
|
||||
ErrorMsg: errMsg,
|
||||
})
|
||||
err = errors.BadRequest(reason.RequestFormatError).WithMsg(errMsg)
|
||||
return errorlist, err
|
||||
}
|
||||
if !CheckNewTag {
|
||||
errMsg := fmt.Sprintf(`"%s" can only be used by moderators.`,
|
||||
strings.Join(CheckNewTaglist, ","))
|
||||
errorlist := make([]*validator.FormErrorField, 0)
|
||||
errorlist = append(errorlist, &validator.FormErrorField{
|
||||
ErrorField: "tags",
|
||||
ErrorMsg: errMsg,
|
||||
})
|
||||
err = errors.BadRequest(reason.RequestFormatError).WithMsg(errMsg)
|
||||
return errorlist, err
|
||||
}
|
||||
}
|
||||
return nil, nil
|
||||
}
|
||||
|
||||
// UpdateQuestion update question
|
||||
func (qs *QuestionService) UpdateQuestion(ctx context.Context, req *schema.QuestionUpdate) (questionInfo any, err error) {
|
||||
var canUpdate bool
|
||||
|
|
Loading…
Reference in New Issue