修改敏感词过滤代码结构
This commit is contained in:
@@ -509,13 +509,28 @@ func GetSkuNames(ctx *jxcontext.Context, keyword string, isBySku bool, params ma
|
|||||||
}
|
}
|
||||||
|
|
||||||
func CheckHasSensitiveWord(word string) (bool, error) {
|
func CheckHasSensitiveWord(word string) (bool, error) {
|
||||||
if hasSensitiveWord, sensitiveWord := dao.CheckHasSensitiveWord(word); hasSensitiveWord {
|
if hasSensitiveWord, sensitiveWord := IsSensitiveWordInList(word); hasSensitiveWord {
|
||||||
return true, errors.New(fmt.Sprintf("不能包含敏感词:[%s]", sensitiveWord))
|
return true, errors.New(fmt.Sprintf("不能包含敏感词:[%s]", sensitiveWord))
|
||||||
}
|
}
|
||||||
|
|
||||||
return false, nil
|
return false, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func IsSensitiveWordInList(str string) (bool, string) {
|
||||||
|
wordList, err := dao.GetSensitiveWordList()
|
||||||
|
if err == nil {
|
||||||
|
for _, value := range wordList {
|
||||||
|
keyWord := value.Word
|
||||||
|
checkHas := strings.Contains(str, keyWord)
|
||||||
|
if checkHas {
|
||||||
|
return true, keyWord
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return false, ""
|
||||||
|
}
|
||||||
|
|
||||||
func AddSkuName(ctx *jxcontext.Context, skuNameExt *model.SkuNameExt, userName string) (outSkuNameExt *model.SkuNameExt, err error) {
|
func AddSkuName(ctx *jxcontext.Context, skuNameExt *model.SkuNameExt, userName string) (outSkuNameExt *model.SkuNameExt, err error) {
|
||||||
if skuNameExt.CategoryID == 0 {
|
if skuNameExt.CategoryID == 0 {
|
||||||
return nil, errors.New("CategoryID不能为空")
|
return nil, errors.New("CategoryID不能为空")
|
||||||
@@ -1027,4 +1042,4 @@ func UploadImg2Platforms(ctx *jxcontext.Context, parentTask tasksch.ITask, imgUR
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
return imgHintMap, err
|
return imgHintMap, err
|
||||||
}
|
}
|
||||||
@@ -18,7 +18,7 @@ import (
|
|||||||
)
|
)
|
||||||
|
|
||||||
const (
|
const (
|
||||||
canWriteTolocal = !false
|
canWriteTolocal = false
|
||||||
needStatistic = true
|
needStatistic = true
|
||||||
isFilterToBeCreateAndNotSale = true
|
isFilterToBeCreateAndNotSale = true
|
||||||
parallelCount = 5
|
parallelCount = 5
|
||||||
|
|||||||
@@ -416,8 +416,8 @@ func syncStoreSkuNew(ctx *jxcontext.Context, parentTask tasksch.ITask, isFull bo
|
|||||||
successList = batchedStoreSkuList
|
successList = batchedStoreSkuList
|
||||||
} else {
|
} else {
|
||||||
//handle error for sensitive words, if find, then insert to table sensitive_words
|
//handle error for sensitive words, if find, then insert to table sensitive_words
|
||||||
if sensitiveWords := GetSensitiveWords(singleStoreHandler, err.Error()); sensitiveWords != "" {
|
if sensitiveWord := GetSensitiveWord(singleStoreHandler, err.Error()); sensitiveWord != "" {
|
||||||
dao.InsertSensitiveWord(sensitiveWords)
|
dao.InsertSensitiveWord(sensitiveWord, vendorID, ctx.GetUserName())
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if len(successList) > 0 {
|
if len(successList) > 0 {
|
||||||
@@ -586,12 +586,12 @@ func ClearRemoteStoreStuffAndSetNew(ctx *jxcontext.Context, parentTask tasksch.I
|
|||||||
return rootTask.ID, err
|
return rootTask.ID, err
|
||||||
}
|
}
|
||||||
|
|
||||||
func GetSensitiveWords(singleStoreHandler partner.ISingleStoreStoreSkuHandler, str string) string {
|
func GetSensitiveWord(singleStoreHandler partner.ISingleStoreStoreSkuHandler, str string) string {
|
||||||
var regFindKeyWords = singleStoreHandler.GetRegexp()
|
var regFindKeyWord = singleStoreHandler.GetSensitiveWordRegexp()
|
||||||
var subRegFindKeyWords = regexp.MustCompile(`[^\[\]\"\}]`)
|
var subRegFindKeyWord = regexp.MustCompile(`[^\[\]\"\}]`)
|
||||||
findResult := regFindKeyWords.FindStringSubmatch(str)
|
findResult := regFindKeyWord.FindStringSubmatch(str)
|
||||||
if findResult != nil && len(findResult) > 1 {
|
if findResult != nil && len(findResult) > 1 {
|
||||||
findSubResult := subRegFindKeyWords.FindAllString(findResult[1], -1)
|
findSubResult := subRegFindKeyWord.FindAllString(findResult[1], -1)
|
||||||
return strings.Join(findSubResult, "")
|
return strings.Join(findSubResult, "")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,32 +1,17 @@
|
|||||||
package dao
|
package dao
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"strings"
|
|
||||||
|
|
||||||
"git.rosy.net.cn/jx-callback/business/model"
|
"git.rosy.net.cn/jx-callback/business/model"
|
||||||
)
|
)
|
||||||
|
|
||||||
func GetSensitiveWordList() (wordList []*model.SensitiveWords, err error) {
|
func GetSensitiveWordList() (wordList []*model.SensitiveWord, err error) {
|
||||||
sql := `SELECT * FROM sensitive_words`
|
sql := `SELECT * FROM sensitive_word`
|
||||||
err = GetRows(nil, &wordList, sql)
|
err = GetRows(nil, &wordList, sql)
|
||||||
return wordList, err
|
return wordList, err
|
||||||
}
|
}
|
||||||
|
|
||||||
func InsertSensitiveWord(word string) error {
|
func InsertSensitiveWord(word string, vendorID int, userName string) error {
|
||||||
return CreateEntity(nil, &model.SensitiveWords{Words: word})
|
sensitiveWord := &model.SensitiveWord{Word: word, VendorID: vendorID}
|
||||||
}
|
WrapAddIDCULDEntity(sensitiveWord, userName)
|
||||||
|
return CreateEntity(nil, sensitiveWord)
|
||||||
func CheckHasSensitiveWord(str string) (bool, string) {
|
|
||||||
wordList, err := GetSensitiveWordList()
|
|
||||||
if err == nil {
|
|
||||||
for _, value := range wordList {
|
|
||||||
keyWord := value.Words
|
|
||||||
checkHas := strings.Contains(str, keyWord)
|
|
||||||
if checkHas {
|
|
||||||
return true, keyWord
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return false, ""
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
package model
|
package model
|
||||||
|
|
||||||
type SensitiveWords struct {
|
type SensitiveWord struct {
|
||||||
ID int `orm:"column(id)" json:"id"`
|
ModelIDCULD
|
||||||
Words string `orm:"size(30);column(words);unique" json:"words"`
|
VendorID int `orm:"column(vendor_id)" json:"vendorID"`
|
||||||
|
Word string `orm:"size(30);unique" json:"word"`
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -138,7 +138,7 @@ type ISingleStoreStoreSkuHandler interface {
|
|||||||
IsErrCategoryExist(err error) (isExist bool)
|
IsErrCategoryExist(err error) (isExist bool)
|
||||||
IsErrCategoryNotExist(err error) (isNotExist bool)
|
IsErrCategoryNotExist(err error) (isNotExist bool)
|
||||||
|
|
||||||
GetRegexp() *regexp.Regexp
|
GetSensitiveWordRegexp() *regexp.Regexp
|
||||||
}
|
}
|
||||||
|
|
||||||
func BuildSkuName(skuID int, vendorSkuID string) (skuName *SkuNameInfo) {
|
func BuildSkuName(skuID int, vendorSkuID string) (skuName *SkuNameInfo) {
|
||||||
|
|||||||
@@ -388,6 +388,6 @@ func vendorSkuList2Jx(vendorSkuList []*ebaiapi.SkuInfo) (skuNameList []*partner.
|
|||||||
return skuNameList
|
return skuNameList
|
||||||
}
|
}
|
||||||
|
|
||||||
func (p *PurchaseHandler) GetRegexp() *regexp.Regexp {
|
func (p *PurchaseHandler) GetSensitiveWordRegexp() *regexp.Regexp {
|
||||||
return regexp.MustCompile(`商品名称中含有敏感词(\[.*\])`)
|
return regexp.MustCompile(`商品名称中含有敏感词(\[.*\])`)
|
||||||
}
|
}
|
||||||
@@ -367,6 +367,6 @@ func vendorSkuList2Jx(appFoodList []*mtwmapi.AppFood) (skuNameList []*partner.Sk
|
|||||||
return skuNameList
|
return skuNameList
|
||||||
}
|
}
|
||||||
|
|
||||||
func (p *PurchaseHandler) GetRegexp() *regexp.Regexp {
|
func (p *PurchaseHandler) GetSensitiveWordRegexp() *regexp.Regexp {
|
||||||
return regexp.MustCompile(`包含敏感词:(\[.*\])`)
|
return regexp.MustCompile(`包含敏感词:(\[.*\])`)
|
||||||
}
|
}
|
||||||
@@ -53,7 +53,7 @@ func Init() {
|
|||||||
orm.RegisterModel(&model.NewConfig{})
|
orm.RegisterModel(&model.NewConfig{})
|
||||||
|
|
||||||
orm.RegisterModel(&model.CasbinRule{})
|
orm.RegisterModel(&model.CasbinRule{})
|
||||||
orm.RegisterModel(&model.SensitiveWords{})
|
orm.RegisterModel(&model.SensitiveWord{})
|
||||||
// create table
|
// create table
|
||||||
orm.RunSyncdb("default", false, true)
|
orm.RunSyncdb("default", false, true)
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user