From dee9eea64a4afc49963da2ea35c922541a63a23a Mon Sep 17 00:00:00 2001 From: Rosy-zhudan Date: Mon, 19 Aug 2019 10:27:04 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E6=95=8F=E6=84=9F=E8=AF=8D?= =?UTF-8?q?=E8=BF=87=E6=BB=A4=E4=BB=A3=E7=A0=81=E7=BB=93=E6=9E=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- business/jxstore/cms/sku.go | 19 ++++++++++++-- business/jxstore/cms/store_sku_check.go | 2 +- business/jxstore/cms/sync_store_sku.go | 14 +++++----- business/model/dao/sensitive_words.go | 27 +++++--------------- business/model/sensitive_words.go | 7 ++--- business/partner/partner_store_sku.go | 2 +- business/partner/purchase/ebai/store_sku2.go | 2 +- business/partner/purchase/mtwm/store_sku2.go | 2 +- globals/beegodb/beegodb.go | 2 +- 9 files changed, 39 insertions(+), 38 deletions(-) diff --git a/business/jxstore/cms/sku.go b/business/jxstore/cms/sku.go index a86046753..481df5dc4 100644 --- a/business/jxstore/cms/sku.go +++ b/business/jxstore/cms/sku.go @@ -509,13 +509,28 @@ func GetSkuNames(ctx *jxcontext.Context, keyword string, isBySku bool, params ma } 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 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) { if skuNameExt.CategoryID == 0 { return nil, errors.New("CategoryID不能为空") @@ -1027,4 +1042,4 @@ func UploadImg2Platforms(ctx *jxcontext.Context, parentTask tasksch.ITask, imgUR } } return imgHintMap, err -} +} \ No newline at end of file diff --git a/business/jxstore/cms/store_sku_check.go b/business/jxstore/cms/store_sku_check.go index a9971f23b..9714f4491 100644 --- a/business/jxstore/cms/store_sku_check.go +++ b/business/jxstore/cms/store_sku_check.go @@ -18,7 +18,7 @@ import ( ) const ( - canWriteTolocal = !false + canWriteTolocal = false needStatistic = true isFilterToBeCreateAndNotSale = true parallelCount = 5 diff --git a/business/jxstore/cms/sync_store_sku.go b/business/jxstore/cms/sync_store_sku.go index 8a5fcf990..70eeb2f2c 100644 --- a/business/jxstore/cms/sync_store_sku.go +++ b/business/jxstore/cms/sync_store_sku.go @@ -416,8 +416,8 @@ func syncStoreSkuNew(ctx *jxcontext.Context, parentTask tasksch.ITask, isFull bo 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 sensitiveWord := GetSensitiveWord(singleStoreHandler, err.Error()); sensitiveWord != "" { + dao.InsertSensitiveWord(sensitiveWord, vendorID, ctx.GetUserName()) } } if len(successList) > 0 { @@ -586,12 +586,12 @@ 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) +func GetSensitiveWord(singleStoreHandler partner.ISingleStoreStoreSkuHandler, str string) string { + var regFindKeyWord = singleStoreHandler.GetSensitiveWordRegexp() + var subRegFindKeyWord = regexp.MustCompile(`[^\[\]\"\}]`) + findResult := regFindKeyWord.FindStringSubmatch(str) if findResult != nil && len(findResult) > 1 { - findSubResult := subRegFindKeyWords.FindAllString(findResult[1], -1) + findSubResult := subRegFindKeyWord.FindAllString(findResult[1], -1) return strings.Join(findSubResult, "") } diff --git a/business/model/dao/sensitive_words.go b/business/model/dao/sensitive_words.go index 28db794f5..540801d41 100644 --- a/business/model/dao/sensitive_words.go +++ b/business/model/dao/sensitive_words.go @@ -1,32 +1,17 @@ package dao import ( - "strings" - "git.rosy.net.cn/jx-callback/business/model" ) -func GetSensitiveWordList() (wordList []*model.SensitiveWords, err error) { - sql := `SELECT * FROM sensitive_words` +func GetSensitiveWordList() (wordList []*model.SensitiveWord, err error) { + sql := `SELECT * FROM sensitive_word` err = GetRows(nil, &wordList, sql) return wordList, err } -func InsertSensitiveWord(word string) error { - return CreateEntity(nil, &model.SensitiveWords{Words: word}) -} - -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, "" +func InsertSensitiveWord(word string, vendorID int, userName string) error { + sensitiveWord := &model.SensitiveWord{Word: word, VendorID: vendorID} + WrapAddIDCULDEntity(sensitiveWord, userName) + return CreateEntity(nil, sensitiveWord) } diff --git a/business/model/sensitive_words.go b/business/model/sensitive_words.go index 5e62cfa23..5c791b3cb 100644 --- a/business/model/sensitive_words.go +++ b/business/model/sensitive_words.go @@ -1,6 +1,7 @@ package model -type SensitiveWords struct { - ID int `orm:"column(id)" json:"id"` - Words string `orm:"size(30);column(words);unique" json:"words"` +type SensitiveWord struct { + ModelIDCULD + VendorID int `orm:"column(vendor_id)" json:"vendorID"` + Word string `orm:"size(30);unique" json:"word"` } diff --git a/business/partner/partner_store_sku.go b/business/partner/partner_store_sku.go index 1d1e0f0a5..0a9f33b02 100644 --- a/business/partner/partner_store_sku.go +++ b/business/partner/partner_store_sku.go @@ -138,7 +138,7 @@ type ISingleStoreStoreSkuHandler interface { IsErrCategoryExist(err error) (isExist bool) IsErrCategoryNotExist(err error) (isNotExist bool) - GetRegexp() *regexp.Regexp + GetSensitiveWordRegexp() *regexp.Regexp } func BuildSkuName(skuID int, vendorSkuID string) (skuName *SkuNameInfo) { diff --git a/business/partner/purchase/ebai/store_sku2.go b/business/partner/purchase/ebai/store_sku2.go index 61ca77803..99ed7b6ec 100644 --- a/business/partner/purchase/ebai/store_sku2.go +++ b/business/partner/purchase/ebai/store_sku2.go @@ -388,6 +388,6 @@ func vendorSkuList2Jx(vendorSkuList []*ebaiapi.SkuInfo) (skuNameList []*partner. return skuNameList } -func (p *PurchaseHandler) GetRegexp() *regexp.Regexp { +func (p *PurchaseHandler) GetSensitiveWordRegexp() *regexp.Regexp { return regexp.MustCompile(`商品名称中含有敏感词(\[.*\])`) } \ No newline at end of file diff --git a/business/partner/purchase/mtwm/store_sku2.go b/business/partner/purchase/mtwm/store_sku2.go index a979e4baf..2cb5ddc50 100644 --- a/business/partner/purchase/mtwm/store_sku2.go +++ b/business/partner/purchase/mtwm/store_sku2.go @@ -367,6 +367,6 @@ func vendorSkuList2Jx(appFoodList []*mtwmapi.AppFood) (skuNameList []*partner.Sk return skuNameList } -func (p *PurchaseHandler) GetRegexp() *regexp.Regexp { +func (p *PurchaseHandler) GetSensitiveWordRegexp() *regexp.Regexp { return regexp.MustCompile(`包含敏感词:(\[.*\])`) } \ No newline at end of file diff --git a/globals/beegodb/beegodb.go b/globals/beegodb/beegodb.go index 9a678e440..d34c0a8c4 100644 --- a/globals/beegodb/beegodb.go +++ b/globals/beegodb/beegodb.go @@ -53,7 +53,7 @@ func Init() { orm.RegisterModel(&model.NewConfig{}) orm.RegisterModel(&model.CasbinRule{}) - orm.RegisterModel(&model.SensitiveWords{}) + orm.RegisterModel(&model.SensitiveWord{}) // create table orm.RunSyncdb("default", false, true) }