mirror of https://gitee.com/answerdev/answer.git
Merge branch 'ai/0.4.0/tag' into 'test'
Ai/0.4.0/tag See merge request opensource/answer!255
This commit is contained in:
commit
7336bae653
11
docs/docs.go
11
docs/docs.go
|
@ -6393,6 +6393,10 @@ const docTemplate = `{
|
|||
},
|
||||
"schema.UserEmailLogin": {
|
||||
"type": "object",
|
||||
"required": [
|
||||
"e_mail",
|
||||
"pass"
|
||||
],
|
||||
"properties": {
|
||||
"captcha_code": {
|
||||
"description": "captcha_code",
|
||||
|
@ -6404,11 +6408,14 @@ const docTemplate = `{
|
|||
},
|
||||
"e_mail": {
|
||||
"description": "e_mail",
|
||||
"type": "string"
|
||||
"type": "string",
|
||||
"maxLength": 500
|
||||
},
|
||||
"pass": {
|
||||
"description": "password",
|
||||
"type": "string"
|
||||
"type": "string",
|
||||
"maxLength": 32,
|
||||
"minLength": 8
|
||||
}
|
||||
}
|
||||
},
|
||||
|
|
|
@ -6381,6 +6381,10 @@
|
|||
},
|
||||
"schema.UserEmailLogin": {
|
||||
"type": "object",
|
||||
"required": [
|
||||
"e_mail",
|
||||
"pass"
|
||||
],
|
||||
"properties": {
|
||||
"captcha_code": {
|
||||
"description": "captcha_code",
|
||||
|
@ -6392,11 +6396,14 @@
|
|||
},
|
||||
"e_mail": {
|
||||
"description": "e_mail",
|
||||
"type": "string"
|
||||
"type": "string",
|
||||
"maxLength": 500
|
||||
},
|
||||
"pass": {
|
||||
"description": "password",
|
||||
"type": "string"
|
||||
"type": "string",
|
||||
"maxLength": 32,
|
||||
"minLength": 8
|
||||
}
|
||||
}
|
||||
},
|
||||
|
|
|
@ -1484,10 +1484,16 @@ definitions:
|
|||
type: string
|
||||
e_mail:
|
||||
description: e_mail
|
||||
maxLength: 500
|
||||
type: string
|
||||
pass:
|
||||
description: password
|
||||
maxLength: 32
|
||||
minLength: 8
|
||||
type: string
|
||||
required:
|
||||
- e_mail
|
||||
- pass
|
||||
type: object
|
||||
schema.UserModifyPassWordRequest:
|
||||
properties:
|
||||
|
|
|
@ -3,6 +3,7 @@ package service
|
|||
import (
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
"strings"
|
||||
"time"
|
||||
|
||||
"github.com/answerdev/answer/internal/base/constant"
|
||||
|
@ -225,6 +226,28 @@ func (qs *QuestionService) UpdateQuestion(ctx context.Context, req *schema.Quest
|
|||
if dbinfo.UserID != req.UserID {
|
||||
return
|
||||
}
|
||||
|
||||
//CheckChangeTag
|
||||
oldTags, err := qs.tagCommon.GetObjectEntityTag(ctx, question.ID)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
tagNameList := make([]string, 0)
|
||||
for _, tag := range req.Tags {
|
||||
tagNameList = append(tagNameList, tag.SlugName)
|
||||
}
|
||||
Tags, err := qs.tagCommon.GetTagListByNames(ctx, tagNameList)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
CheckTag, CheckTaglist := qs.CheckChangeTag(ctx, oldTags, Tags)
|
||||
if !CheckTag {
|
||||
err = errors.BadRequest(reason.UnauthorizedError).WithMsg(fmt.Sprintf("tag [%s] cannot be modified",
|
||||
strings.Join(CheckTaglist, ",")))
|
||||
return
|
||||
}
|
||||
|
||||
//update question to db
|
||||
err = qs.questionRepo.UpdateQuestion(ctx, question, []string{"title", "original_text", "parsed_text", "updated_at"})
|
||||
if err != nil {
|
||||
return
|
||||
|
@ -276,6 +299,10 @@ func (qs *QuestionService) ChangeTag(ctx context.Context, objectTagData *schema.
|
|||
return qs.tagCommon.ObjectChangeTag(ctx, objectTagData)
|
||||
}
|
||||
|
||||
func (qs *QuestionService) CheckChangeTag(ctx context.Context, oldobjectTagData, objectTagData []*entity.Tag) (bool, []string) {
|
||||
return qs.tagCommon.ObjectCheckChangeTag(ctx, oldobjectTagData, objectTagData)
|
||||
}
|
||||
|
||||
func (qs *QuestionService) SearchUserList(ctx context.Context, userName, order string, page, pageSize int, loginUserID string) ([]*schema.UserQuestionInfo, int64, error) {
|
||||
userlist := make([]*schema.UserQuestionInfo, 0)
|
||||
|
||||
|
|
|
@ -205,7 +205,11 @@ func (ts *TagCommonService) ExistRecommend(ctx context.Context, tags []*schema.T
|
|||
|
||||
// GetObjectTag get object tag
|
||||
func (ts *TagCommonService) GetObjectTag(ctx context.Context, objectId string) (objTags []*schema.TagResp, err error) {
|
||||
objTags = make([]*schema.TagResp, 0)
|
||||
tagsInfoList, err := ts.GetObjectEntityTag(ctx, objectId)
|
||||
return ts.TagFormat(ctx, tagsInfoList)
|
||||
}
|
||||
|
||||
func (ts *TagCommonService) GetObjectEntityTag(ctx context.Context, objectId string) (objTags []*entity.Tag, err error) {
|
||||
tagIDList := make([]string, 0)
|
||||
tagList, err := ts.tagRelRepo.GetObjectTagRelList(ctx, objectId)
|
||||
if err != nil {
|
||||
|
@ -214,11 +218,17 @@ func (ts *TagCommonService) GetObjectTag(ctx context.Context, objectId string) (
|
|||
for _, tag := range tagList {
|
||||
tagIDList = append(tagIDList, tag.TagID)
|
||||
}
|
||||
tagsInfoList, err := ts.tagRepo.GetTagListByIDs(ctx, tagIDList)
|
||||
objTags, err = ts.tagRepo.GetTagListByIDs(ctx, tagIDList)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
for _, tagInfo := range tagsInfoList {
|
||||
|
||||
return objTags, nil
|
||||
}
|
||||
|
||||
func (ts *TagCommonService) TagFormat(ctx context.Context, tags []*entity.Tag) (objTags []*schema.TagResp, err error) {
|
||||
objTags = make([]*schema.TagResp, 0)
|
||||
for _, tagInfo := range tags {
|
||||
objTags = append(objTags, &schema.TagResp{
|
||||
SlugName: tagInfo.SlugName,
|
||||
DisplayName: tagInfo.DisplayName,
|
||||
|
@ -281,7 +291,6 @@ func (ts *TagCommonService) CheckTag(ctx context.Context, tags []string, userID
|
|||
}
|
||||
|
||||
thisTagNameList := make([]string, 0)
|
||||
thisTagIDList := make([]string, 0)
|
||||
for _, t := range tags {
|
||||
t = strings.ToLower(t)
|
||||
thisTagNameList = append(thisTagNameList, t)
|
||||
|
@ -294,13 +303,17 @@ func (ts *TagCommonService) CheckTag(ctx context.Context, tags []string, userID
|
|||
}
|
||||
|
||||
tagInDbMapping := make(map[string]*entity.Tag)
|
||||
checktags := make([]string, 0)
|
||||
|
||||
for _, tag := range tagListInDb {
|
||||
if tag.MainTagID != 0 {
|
||||
err = errors.BadRequest(reason.TagNotContainSynonym).WithMsg(fmt.Sprintf("tag name:%s", tag.SlugName))
|
||||
return err
|
||||
checktags = append(checktags, fmt.Sprintf("\"%s\"", tag.SlugName))
|
||||
}
|
||||
tagInDbMapping[tag.SlugName] = tag
|
||||
thisTagIDList = append(thisTagIDList, tag.ID)
|
||||
}
|
||||
if len(checktags) > 0 {
|
||||
err = errors.BadRequest(reason.TagNotContainSynonym).WithMsg(fmt.Sprintf("Should not contain synonym tags %s", strings.Join(checktags, ",")))
|
||||
return err
|
||||
}
|
||||
|
||||
addTagList := make([]*entity.Tag, 0)
|
||||
|
@ -324,30 +337,35 @@ func (ts *TagCommonService) CheckTag(ctx context.Context, tags []string, userID
|
|||
err = errors.BadRequest(reason.TagNotFound).WithMsg(fmt.Sprintf("tag [%s] does not exist",
|
||||
strings.Join(addTagMsgList, ",")))
|
||||
return err
|
||||
// todo if need add
|
||||
// err = ts.tagRepo.AddTagList(ctx, addTagList)
|
||||
// if err != nil {
|
||||
// return err
|
||||
// }
|
||||
// for _, tag := range addTagList {
|
||||
// thisTagIDList = append(thisTagIDList, tag.ID)
|
||||
// revisionDTO := &schema.AddRevisionDTO{
|
||||
// UserID: userID,
|
||||
// ObjectID: tag.ID,
|
||||
// Title: tag.SlugName,
|
||||
// }
|
||||
// tagInfoJson, _ := json.Marshal(tag)
|
||||
// revisionDTO.Content = string(tagInfoJson)
|
||||
// err = ts.revisionService.AddRevision(ctx, revisionDTO, true)
|
||||
// if err != nil {
|
||||
// return err
|
||||
// }
|
||||
// }
|
||||
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
func (ts *TagCommonService) ObjectCheckChangeTag(ctx context.Context, oldobjectTagData, objectTagData []*entity.Tag) (bool, []string) {
|
||||
reservedTagsMap := make(map[string]bool)
|
||||
needTagsMap := make([]string, 0)
|
||||
for _, tag := range objectTagData {
|
||||
if tag.Reserved {
|
||||
reservedTagsMap[tag.SlugName] = true
|
||||
}
|
||||
}
|
||||
for _, tag := range oldobjectTagData {
|
||||
if tag.Reserved {
|
||||
_, ok := reservedTagsMap[tag.SlugName]
|
||||
if !ok {
|
||||
needTagsMap = append(needTagsMap, tag.SlugName)
|
||||
}
|
||||
}
|
||||
}
|
||||
if len(needTagsMap) > 0 {
|
||||
return false, needTagsMap
|
||||
}
|
||||
|
||||
return true, []string{}
|
||||
}
|
||||
|
||||
// ObjectChangeTag change object tag list
|
||||
func (ts *TagCommonService) ObjectChangeTag(ctx context.Context, objectTagData *schema.TagChange) (err error) {
|
||||
if len(objectTagData.Tags) == 0 {
|
||||
|
|
Loading…
Reference in New Issue