敏感词过滤
This commit is contained in:
@@ -508,6 +508,14 @@ func GetSkuNames(ctx *jxcontext.Context, keyword string, isBySku bool, params ma
|
||||
return skuNamesInfo, err
|
||||
}
|
||||
|
||||
func CheckHasSensitiveWord(word string) (bool, error) {
|
||||
if hasSensitiveWord, sensitiveWord := dao.CheckHasSensitiveWord(word); hasSensitiveWord {
|
||||
return true, errors.New(fmt.Sprintf("不能包含敏感词:[%s]", sensitiveWord))
|
||||
}
|
||||
|
||||
return false, nil
|
||||
}
|
||||
|
||||
func AddSkuName(ctx *jxcontext.Context, skuNameExt *model.SkuNameExt, userName string) (outSkuNameExt *model.SkuNameExt, err error) {
|
||||
if skuNameExt.CategoryID == 0 {
|
||||
return nil, errors.New("CategoryID不能为空")
|
||||
@@ -520,6 +528,10 @@ func AddSkuName(ctx *jxcontext.Context, skuNameExt *model.SkuNameExt, userName s
|
||||
}
|
||||
}
|
||||
|
||||
if hasSensitiveWord, err := CheckHasSensitiveWord(skuNameExt.Name); hasSensitiveWord {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
db := dao.GetDB()
|
||||
dao.Begin(db)
|
||||
defer func() {
|
||||
@@ -615,13 +627,19 @@ func AddSkuName(ctx *jxcontext.Context, skuNameExt *model.SkuNameExt, userName s
|
||||
return outSkuNameExt, err
|
||||
}
|
||||
|
||||
func UpdateSkuName(ctx *jxcontext.Context, nameID int, payload map[string]interface{}, userName string) (num int64, err error) {
|
||||
func UpdateSkuName(ctx *jxcontext.Context, nameID int, payload map[string]interface{}, userName string) (num int64, err error) {
|
||||
skuName := &model.SkuName{}
|
||||
skuName.ID = nameID
|
||||
db := dao.GetDB()
|
||||
if err = dao.GetEntity(db, skuName); err != nil {
|
||||
return 0, err
|
||||
}
|
||||
|
||||
newSkuName := utils.Interface2String(payload["name"])
|
||||
if hasSensitiveWord, err := CheckHasSensitiveWord(newSkuName); hasSensitiveWord {
|
||||
return 0, err
|
||||
}
|
||||
|
||||
delete(payload, "isSpu")
|
||||
delete(payload, "ImgHashCode")
|
||||
delete(payload, "ImgWeimob")
|
||||
|
||||
@@ -3,7 +3,8 @@ package cms
|
||||
import (
|
||||
"fmt"
|
||||
"time"
|
||||
|
||||
"regexp"
|
||||
"strings"
|
||||
"git.rosy.net.cn/baseapi/utils"
|
||||
"git.rosy.net.cn/jx-callback/business/jxutils"
|
||||
|
||||
@@ -403,6 +404,11 @@ func syncStoreSkuNew(ctx *jxcontext.Context, parentTask tasksch.ITask, isFull bo
|
||||
}
|
||||
if err == nil {
|
||||
successList = batchedStoreSkuList
|
||||
} else {
|
||||
//handle error for sensitive words, if find, then insert to table sensitive_words
|
||||
if sensitiveWords := GetSensitiveWords(singleStoreHandler, err.Error()); sensitiveWords != "" {
|
||||
dao.InsertSensitiveWord(sensitiveWords)
|
||||
}
|
||||
}
|
||||
if len(successList) > 0 {
|
||||
updateStoreSku(dao.GetDB(), vendorID, successList, model.SyncFlagNewMask)
|
||||
@@ -569,3 +575,15 @@ func ClearRemoteStoreStuffAndSetNew(ctx *jxcontext.Context, parentTask tasksch.I
|
||||
}
|
||||
return rootTask.ID, err
|
||||
}
|
||||
|
||||
func GetSensitiveWords(singleStoreHandler partner.ISingleStoreStoreSkuHandler, str string) string {
|
||||
var regFindKeyWords = singleStoreHandler.GetRegexp()
|
||||
var subRegFindKeyWords = regexp.MustCompile(`[^\[\]\"\}]`)
|
||||
findResult := regFindKeyWords.FindStringSubmatch(str)
|
||||
if findResult != nil && len(findResult) > 1 {
|
||||
findSubResult := subRegFindKeyWords.FindAllString(findResult[1], -1)
|
||||
return strings.Join(findSubResult, "")
|
||||
}
|
||||
|
||||
return ""
|
||||
}
|
||||
Reference in New Issue
Block a user