mirror of https://gitee.com/answerdev/answer.git
update revision tag
This commit is contained in:
parent
4e489736b5
commit
1e14c9ab54
|
@ -152,7 +152,8 @@ type UpdateTagReq struct {
|
||||||
// edit summary
|
// edit summary
|
||||||
EditSummary string `validate:"omitempty" json:"edit_summary"`
|
EditSummary string `validate:"omitempty" json:"edit_summary"`
|
||||||
// user id
|
// user id
|
||||||
UserID string `json:"-"`
|
UserID string `json:"-"`
|
||||||
|
IsAdmin bool `json:"-"`
|
||||||
}
|
}
|
||||||
|
|
||||||
func (r *UpdateTagReq) Check() (errFields []*validator.FormErrorField, err error) {
|
func (r *UpdateTagReq) Check() (errFields []*validator.FormErrorField, err error) {
|
||||||
|
|
|
@ -16,7 +16,6 @@ import (
|
||||||
"github.com/answerdev/answer/internal/service/revision_common"
|
"github.com/answerdev/answer/internal/service/revision_common"
|
||||||
"github.com/answerdev/answer/internal/service/siteinfo_common"
|
"github.com/answerdev/answer/internal/service/siteinfo_common"
|
||||||
"github.com/answerdev/answer/pkg/converter"
|
"github.com/answerdev/answer/pkg/converter"
|
||||||
"github.com/jinzhu/copier"
|
|
||||||
"github.com/segmentfault/pacman/errors"
|
"github.com/segmentfault/pacman/errors"
|
||||||
"github.com/segmentfault/pacman/log"
|
"github.com/segmentfault/pacman/log"
|
||||||
)
|
)
|
||||||
|
@ -598,6 +597,7 @@ func (ts *TagCommonService) CreateOrUpdateTagRelList(ctx context.Context, object
|
||||||
}
|
}
|
||||||
|
|
||||||
func (ts *TagCommonService) UpdateTag(ctx context.Context, req *schema.UpdateTagReq) (err error) {
|
func (ts *TagCommonService) UpdateTag(ctx context.Context, req *schema.UpdateTagReq) (err error) {
|
||||||
|
var canUpdate bool
|
||||||
_, existUnreviewed, err := ts.revisionService.ExistUnreviewedByObjectID(ctx, req.TagID)
|
_, existUnreviewed, err := ts.revisionService.ExistUnreviewedByObjectID(ctx, req.TagID)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
|
@ -607,14 +607,6 @@ func (ts *TagCommonService) UpdateTag(ctx context.Context, req *schema.UpdateTag
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
tag := &entity.Tag{}
|
|
||||||
_ = copier.Copy(tag, req)
|
|
||||||
tag.ID = req.TagID
|
|
||||||
err = ts.tagRepo.UpdateTag(ctx, tag)
|
|
||||||
if err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
|
|
||||||
tagInfo, exist, err := ts.GetTagByID(ctx, req.TagID)
|
tagInfo, exist, err := ts.GetTagByID(ctx, req.TagID)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
|
@ -622,40 +614,60 @@ func (ts *TagCommonService) UpdateTag(ctx context.Context, req *schema.UpdateTag
|
||||||
if !exist {
|
if !exist {
|
||||||
return errors.BadRequest(reason.TagNotFound)
|
return errors.BadRequest(reason.TagNotFound)
|
||||||
}
|
}
|
||||||
if tagInfo.MainTagID == 0 && len(req.SlugName) > 0 {
|
|
||||||
log.Debugf("tag %s update slug_name", tagInfo.SlugName)
|
tagInfo.SlugName = req.SlugName
|
||||||
tagList, err := ts.tagRepo.GetTagList(ctx, &entity.Tag{MainTagID: converter.StringToInt64(tagInfo.ID)})
|
tagInfo.DisplayName = req.DisplayName
|
||||||
if err != nil {
|
tagInfo.OriginalText = req.OriginalText
|
||||||
return err
|
tagInfo.ParsedText = req.ParsedText
|
||||||
}
|
|
||||||
updateTagSlugNames := make([]string, 0)
|
|
||||||
for _, tag := range tagList {
|
|
||||||
updateTagSlugNames = append(updateTagSlugNames, tag.SlugName)
|
|
||||||
}
|
|
||||||
err = ts.tagRepo.UpdateTagSynonym(ctx, updateTagSlugNames, converter.StringToInt64(tagInfo.ID), tagInfo.MainTagSlugName)
|
|
||||||
if err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
}
|
|
||||||
revisionDTO := &schema.AddRevisionDTO{
|
revisionDTO := &schema.AddRevisionDTO{
|
||||||
UserID: req.UserID,
|
UserID: req.UserID,
|
||||||
ObjectID: tag.ID,
|
ObjectID: tagInfo.ID,
|
||||||
Title: tag.SlugName,
|
Title: tagInfo.SlugName,
|
||||||
Log: req.EditSummary,
|
Log: req.EditSummary,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if !req.IsAdmin {
|
||||||
|
revisionDTO.Status = entity.RevisionUnreviewedStatus
|
||||||
|
} else {
|
||||||
|
canUpdate = true
|
||||||
|
err = ts.tagRepo.UpdateTag(ctx, tagInfo)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
if tagInfo.MainTagID == 0 && len(req.SlugName) > 0 {
|
||||||
|
log.Debugf("tag %s update slug_name", tagInfo.SlugName)
|
||||||
|
tagList, err := ts.tagRepo.GetTagList(ctx, &entity.Tag{MainTagID: converter.StringToInt64(tagInfo.ID)})
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
updateTagSlugNames := make([]string, 0)
|
||||||
|
for _, tag := range tagList {
|
||||||
|
updateTagSlugNames = append(updateTagSlugNames, tag.SlugName)
|
||||||
|
}
|
||||||
|
err = ts.tagRepo.UpdateTagSynonym(ctx, updateTagSlugNames, converter.StringToInt64(tagInfo.ID), tagInfo.MainTagSlugName)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
}
|
||||||
|
revisionDTO.Status = entity.RevisionReviewPassStatus
|
||||||
|
}
|
||||||
|
|
||||||
tagInfoJson, _ := json.Marshal(tagInfo)
|
tagInfoJson, _ := json.Marshal(tagInfo)
|
||||||
revisionDTO.Content = string(tagInfoJson)
|
revisionDTO.Content = string(tagInfoJson)
|
||||||
revisionID, err := ts.revisionService.AddRevision(ctx, revisionDTO, true)
|
revisionID, err := ts.revisionService.AddRevision(ctx, revisionDTO, true)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
if canUpdate {
|
||||||
|
activity_queue.AddActivity(&schema.ActivityMsg{
|
||||||
|
UserID: req.UserID,
|
||||||
|
ObjectID: tagInfo.ID,
|
||||||
|
OriginalObjectID: tagInfo.ID,
|
||||||
|
ActivityTypeKey: constant.ActTagEdited,
|
||||||
|
RevisionID: revisionID,
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
activity_queue.AddActivity(&schema.ActivityMsg{
|
|
||||||
UserID: req.UserID,
|
|
||||||
ObjectID: tag.ID,
|
|
||||||
OriginalObjectID: tag.ID,
|
|
||||||
ActivityTypeKey: constant.ActTagEdited,
|
|
||||||
RevisionID: revisionID,
|
|
||||||
})
|
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue