|
@@ -4,6 +4,7 @@ import (
|
|
"fmt"
|
|
"fmt"
|
|
u "jy/util"
|
|
u "jy/util"
|
|
qutil "qfw/util"
|
|
qutil "qfw/util"
|
|
|
|
+ // "reflect"
|
|
"regexp"
|
|
"regexp"
|
|
"strings"
|
|
"strings"
|
|
|
|
|
|
@@ -14,8 +15,12 @@ import (
|
|
全局变量,主要是一堆判断正则
|
|
全局变量,主要是一堆判断正则
|
|
**/
|
|
**/
|
|
var (
|
|
var (
|
|
|
|
+ //清理表格title中的不需要的内容
|
|
|
|
+ tabletitleclear = regexp.MustCompile("[\\s\u3000\u2003\u00a0\\n、.,.。、_/((人民币万元件个公斤))]")
|
|
//清理表格中是key中包含的空格或数字等
|
|
//清理表格中是key中包含的空格或数字等
|
|
tablekeyclear = regexp.MustCompile("[\\s\u3000\u2003\u00a0\\n、.,.。、_/]+|^[\\d一二三四五六七八九十]+[、.]*|[((【\\[].*?[))】\\]]")
|
|
tablekeyclear = regexp.MustCompile("[\\s\u3000\u2003\u00a0\\n、.,.。、_/]+|^[\\d一二三四五六七八九十]+[、.]*|[((【\\[].*?[))】\\]]")
|
|
|
|
+ //清理表格td中的符号
|
|
|
|
+ tabletdclear = regexp.MustCompile("[\\s\u3000\u2003\u00a0\\n、.,.。、_??;;~\\-#\\\\]*")
|
|
//判断key是金额,对万元的处理
|
|
//判断key是金额,对万元的处理
|
|
moneyreg = regexp.MustCompile("(预算|费|价|额|规模|投资)")
|
|
moneyreg = regexp.MustCompile("(预算|费|价|额|规模|投资)")
|
|
//根据表格的内容判断是不是表头,如果含有金额则不是表头
|
|
//根据表格的内容判断是不是表头,如果含有金额则不是表头
|
|
@@ -98,6 +103,7 @@ var (
|
|
BuyerContacts = []string{"采购单位联系人", "采购单位联系电话", "采购单位联系地址"}
|
|
BuyerContacts = []string{"采购单位联系人", "采购单位联系电话", "采购单位联系地址"}
|
|
FilterSerial = regexp.MustCompile(".+[、..::,]")
|
|
FilterSerial = regexp.MustCompile(".+[、..::,]")
|
|
filterTableWror = regexp.MustCompile("班子成员")
|
|
filterTableWror = regexp.MustCompile("班子成员")
|
|
|
|
+ underline = regexp.MustCompile("_+$")
|
|
)
|
|
)
|
|
|
|
|
|
//在解析时,判断表格元素是否隐藏
|
|
//在解析时,判断表格元素是否隐藏
|
|
@@ -503,6 +509,14 @@ func (table *Table) MergerToTableresult() {
|
|
if table.TableResult.WinnerOrder == nil || len(table.TableResult.WinnerOrder) == 0 {
|
|
if table.TableResult.WinnerOrder == nil || len(table.TableResult.WinnerOrder) == 0 {
|
|
table.TableResult.WinnerOrder = table.WinnerOrder
|
|
table.TableResult.WinnerOrder = table.WinnerOrder
|
|
}
|
|
}
|
|
|
|
+ //增加brand 并列table
|
|
|
|
+ if len(table.BrandData) > 0 {
|
|
|
|
+ for _, v := range table.BrandData {
|
|
|
|
+ if len(v) > 0 {
|
|
|
|
+ table.TableResult.BrandData = append(table.TableResult.BrandData, v)
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
}
|
|
}
|
|
|
|
|
|
/**
|
|
/**
|
|
@@ -544,7 +558,7 @@ func (ts *TableResult) Analy() {
|
|
ts := tn.Analy(contactFormat)
|
|
ts := tn.Analy(contactFormat)
|
|
for _, tab := range ts {
|
|
for _, tab := range ts {
|
|
tabs = append(tabs, tab)
|
|
tabs = append(tabs, tab)
|
|
- //log.Println("tab.SortKV.Map", tab.SortKV.Map)
|
|
|
|
|
|
+ fmt.Println("tab.SortKV.Map", tab.SortKV.Map)
|
|
}
|
|
}
|
|
//tn.SonTables = append(tn.SonTables, tn)
|
|
//tn.SonTables = append(tn.SonTables, tn)
|
|
}
|
|
}
|
|
@@ -641,6 +655,7 @@ func (table *Table) Analy(contactFormat *u.ContactFormat) []*Table {
|
|
//遍历每行的td
|
|
//遍历每行的td
|
|
tds := sel.ChildrenFiltered("td,th")
|
|
tds := sel.ChildrenFiltered("td,th")
|
|
TR := NewTR(table)
|
|
TR := NewTR(table)
|
|
|
|
+ tdTextIsNull := true
|
|
tds.Each(func(m int, selm *goquery.Selection) {
|
|
tds.Each(func(m int, selm *goquery.Selection) {
|
|
//对隐藏列不处理!!!
|
|
//对隐藏列不处理!!!
|
|
if IsHide(selm) {
|
|
if IsHide(selm) {
|
|
@@ -651,8 +666,14 @@ func (table *Table) Analy(contactFormat *u.ContactFormat) []*Table {
|
|
//num++
|
|
//num++
|
|
//log.Println(td.SortKV.Keys, td.SortKV.Map)
|
|
//log.Println(td.SortKV.Keys, td.SortKV.Map)
|
|
TR.AddTD(td)
|
|
TR.AddTD(td)
|
|
|
|
+ if td.Val != "" { //删除一个tr,tr中所有td是空值的
|
|
|
|
+ tdTextIsNull = false
|
|
|
|
+ }
|
|
})
|
|
})
|
|
- table.AddTR(TR)
|
|
|
|
|
|
+ //tr中所有td的内容为空 将tr删除
|
|
|
|
+ if !tdTextIsNull {
|
|
|
|
+ table.AddTR(TR)
|
|
|
|
+ }
|
|
})
|
|
})
|
|
//重置行列
|
|
//重置行列
|
|
table.ComputeRowColSpan()
|
|
table.ComputeRowColSpan()
|
|
@@ -758,6 +779,9 @@ func (table *Table) Analy(contactFormat *u.ContactFormat) []*Table {
|
|
table.TdContactFormat(contactFormat)
|
|
table.TdContactFormat(contactFormat)
|
|
//开始查找kv,核心模块
|
|
//开始查找kv,核心模块
|
|
table.FindKV()
|
|
table.FindKV()
|
|
|
|
+ fmt.Println("KvMap----------", table.SortKV.Map)
|
|
|
|
+ //table中抽取品牌
|
|
|
|
+ //table.analyBrand()
|
|
//判断是否是多包,并处理分包的
|
|
//判断是否是多包,并处理分包的
|
|
table.CheckMultiPackageByTable()
|
|
table.CheckMultiPackageByTable()
|
|
str := "\n"
|
|
str := "\n"
|
|
@@ -1283,6 +1307,19 @@ func (table *Table) FindKV() {
|
|
if bcon {
|
|
if bcon {
|
|
continue
|
|
continue
|
|
}
|
|
}
|
|
|
|
+ if tr.TDs[0].StartRow > 0 {
|
|
|
|
+ numbh := 0
|
|
|
|
+ for _, td := range tr.TDs {
|
|
|
|
+ if td.BH {
|
|
|
|
+ numbh++
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ if numbh > 0 && numbh <= len(tr.TDs)/2 {
|
|
|
|
+ direct, vdirect = 1, 2
|
|
|
|
+ } else {
|
|
|
|
+ direct, vdirect = 2, 1
|
|
|
|
+ }
|
|
|
|
+ }
|
|
for _, td := range tr.TDs {
|
|
for _, td := range tr.TDs {
|
|
/**
|
|
/**
|
|
rt := table.StartAndEndRation[fmtkey("r", td.StartCol, td.EndCol)]
|
|
rt := table.StartAndEndRation[fmtkey("r", td.StartCol, td.EndCol)]
|
|
@@ -2618,3 +2655,349 @@ L:
|
|
// }
|
|
// }
|
|
// }
|
|
// }
|
|
}
|
|
}
|
|
|
|
+
|
|
|
|
+//func (table *Table) analyBrand() {
|
|
|
|
+// //产品名称 品牌 规格 单价 单位 数量 小计 质保期
|
|
|
|
+// lineMap := make(map[string]map[string]string)
|
|
|
|
+// lineMapArr := make(map[string]map[string][]string)
|
|
|
|
+// brandRule := u.BrandRules
|
|
|
|
+// //将val为数组和string的分开
|
|
|
|
+// for key, val := range table.SortKV.Map {
|
|
|
|
+// key = regReplAllSpace.ReplaceAllString(key, "")
|
|
|
|
+// key = strings.Replace(key, "", "", -1) //处理一个特殊的采购量 经上层处理空格后未处理掉
|
|
|
|
+// kind := reflect.TypeOf(val).String()
|
|
|
|
+// //处理多个key相同的数据
|
|
|
|
+// if kind == "[]string" { //val为数组 {"数量":["1","2","3"]}
|
|
|
|
+// /*
|
|
|
|
+// {
|
|
|
|
+// "商品":["","",],
|
|
|
|
+// "商品_"["",""],
|
|
|
|
+// }
|
|
|
|
+
|
|
|
|
+// */
|
|
|
|
+// realTypeVal := val.([]string)
|
|
|
|
+// hasGoods(table, realTypeVal) //判断val中是否含产品
|
|
|
|
+// hasBrand(table, realTypeVal) //判断val中是否含品牌
|
|
|
|
+// line := underline.FindString(key)
|
|
|
|
+// lineValMap := lineMapArr[line]
|
|
|
|
+// i := 1
|
|
|
|
+// L:
|
|
|
|
+// for { //去除数组空数据
|
|
|
|
+// last := realTypeVal[len(realTypeVal)-i]
|
|
|
|
+// if last == "" {
|
|
|
|
+// i++
|
|
|
|
+// if i > len(realTypeVal) {
|
|
|
|
+// break
|
|
|
|
+// }
|
|
|
|
+// goto L
|
|
|
|
+// } else {
|
|
|
|
+// break
|
|
|
|
+// }
|
|
|
|
+// }
|
|
|
|
+// dislodgeNull := realTypeVal[:(len(realTypeVal) - i + 1)] //去除数组中空数据
|
|
|
|
+// if len(lineValMap) == 0 && len(realTypeVal) != 0 { //没有数据
|
|
|
|
+// lineMapArr[line] = map[string][]string{key: dislodgeNull}
|
|
|
|
+// } else { //新增数据
|
|
|
|
+// if len(dislodgeNull) != 0 {
|
|
|
|
+// lineValMap[key] = dislodgeNull
|
|
|
|
+// }
|
|
|
|
+// }
|
|
|
|
+// } else if kind == "string" { //val为字符串 {"数量":"1"}
|
|
|
|
+// /*
|
|
|
|
+// {
|
|
|
|
+// "商品:"",名称:"",
|
|
|
|
+// "商品_:"",名称_:"",
|
|
|
|
+// "商品__:"",名称__:"",
|
|
|
|
+// }
|
|
|
|
+// */
|
|
|
|
+
|
|
|
|
+// realTypeVal := val.(string)
|
|
|
|
+// afterFilter := tabletdclear.ReplaceAllString(realTypeVal, "")
|
|
|
|
+// if afterFilter == "" { //空val值舍弃
|
|
|
|
+// continue
|
|
|
|
+// }
|
|
|
|
+// hasGoods(table, realTypeVal) //判断val中是否含产品
|
|
|
|
+// hasBrand(table, realTypeVal) //判断val中是否含品牌
|
|
|
|
+// line := underline.FindString(key)
|
|
|
|
+// lineValMap := lineMap[line]
|
|
|
|
+// if len(lineValMap) == 0 { //没有数据
|
|
|
|
+// lineMap[line] = map[string]string{key: realTypeVal}
|
|
|
|
+// } else { //新增数据
|
|
|
|
+// lineValMap[key] = realTypeVal
|
|
|
|
+// }
|
|
|
|
+// }
|
|
|
|
+// }
|
|
|
|
+// //fmt.Println("lineMapArr------------------------------", lineMapArr)
|
|
|
|
+// //fmt.Println("lineMap------------------------------", lineMap)
|
|
|
|
+// //处理数组数据后,匹配必须title和替换要保存的title
|
|
|
|
+// if len(lineMapArr) > 0 {
|
|
|
|
+// for _, aMap := range lineMapArr {
|
|
|
|
+// //u.Debug(aMap)
|
|
|
|
+// //minNum := 0
|
|
|
|
+// maxNum := 0
|
|
|
|
+// arrcount := 0 //记录key是否存在必须title(数组数据)
|
|
|
|
+// ka := make(map[string][]string) //最终存储数据
|
|
|
|
+// for k0, v0 := range aMap {
|
|
|
|
+// //匹配必须title
|
|
|
|
+// for nameM, r := range brandRule["must"] {
|
|
|
|
+// if convert(k0, r) { //匹配成功
|
|
|
|
+// if len(ka[nameM]) != 0 && strings.Contains(k0, "描述") { //防止k0匹配到多次 和特殊情况 物料名称 物料描述同时出现
|
|
|
|
+// continue
|
|
|
|
+// }
|
|
|
|
+// ka[nameM] = v0
|
|
|
|
+// arrcount++
|
|
|
|
+// }
|
|
|
|
+// }
|
|
|
|
+// //fmt.Println(arrcount, k0, v0)
|
|
|
|
+// //替换其它要保存字段
|
|
|
|
+// for nameR, r := range brandRule["replace"] {
|
|
|
|
+// if convert(k0, r) { //匹配成功
|
|
|
|
+// ka[nameR] = v0
|
|
|
|
+// }
|
|
|
|
+// }
|
|
|
|
+// }
|
|
|
|
+// //找最终存储数据的最小len(arr)
|
|
|
|
+// // for _, vf := range ka {
|
|
|
|
+// // //找最短的数组
|
|
|
|
+// // lenVal := len(vf)
|
|
|
|
+// // if minNum == 0 || minNum > lenVal { //maxNum = len(最短数组)
|
|
|
|
+// // minNum = lenVal
|
|
|
|
+// // }
|
|
|
|
+// // }
|
|
|
|
+// //找最终存储数据的最大len(arr),小的补空
|
|
|
|
+// for _, vf1 := range ka {
|
|
|
|
+// lenVal := len(vf1)
|
|
|
|
+// if lenVal > maxNum {
|
|
|
|
+// maxNum = lenVal
|
|
|
|
+// }
|
|
|
|
+// }
|
|
|
|
+// finishKa := make(map[string][]string)
|
|
|
|
+// for vf2K, vf2 := range ka {
|
|
|
|
+// if len(vf2) < maxNum {
|
|
|
|
+// lenMv := maxNum - len(vf2)
|
|
|
|
+// for i := 0; i < lenMv; i++ {
|
|
|
|
+// vf2 = append(vf2, "")
|
|
|
|
+// }
|
|
|
|
+// }
|
|
|
|
+// finishKa[vf2K] = vf2
|
|
|
|
+// }
|
|
|
|
+// hasKey(table, arrcount) //是否匹配到两个以上的key
|
|
|
|
+// if arrcount >= 1 {
|
|
|
|
+// finishData := dealArrData(maxNum, finishKa)
|
|
|
|
+// table.BrandData = append(table.BrandData, finishData)
|
|
|
|
+// }
|
|
|
|
+// }
|
|
|
|
+// }
|
|
|
|
+// //处理string数据后,匹配必须title和替换要保存的title
|
|
|
|
+// if len(lineMap) > 0 {
|
|
|
|
+// for _, sMap := range lineMap {
|
|
|
|
+// strcount := 0 //记录key是否存在必须title(字符串数据)
|
|
|
|
+// //fmt.Println("---------------", sMap)
|
|
|
|
+// endStrMap := make(map[string]string)
|
|
|
|
+// for k1, v1 := range sMap {
|
|
|
|
+// //匹配必须title
|
|
|
|
+// for nameM, r := range brandRule["must"] {
|
|
|
|
+// if convert(k1, r) { //匹配成功
|
|
|
|
+// endStrMap[nameM] = v1
|
|
|
|
+// strcount++
|
|
|
|
+// //fmt.Println(strcount, k1, v1)
|
|
|
|
+// }
|
|
|
|
+// }
|
|
|
|
+// //替换其它要保存字段
|
|
|
|
+// for nameR, r := range brandRule["replace"] {
|
|
|
|
+// if convert(k1, r) { //匹配成功
|
|
|
|
+// endStrMap[nameR] = v1
|
|
|
|
+// }
|
|
|
|
+// }
|
|
|
|
+// }
|
|
|
|
+// //原始字符串数据处理
|
|
|
|
+// hasKey(table, strcount) //是否匹配到两个以上的key
|
|
|
|
+// if strcount >= 1 {
|
|
|
|
+// finishData := dealStrData(endStrMap)
|
|
|
|
+// table.BrandData = append(table.BrandData, finishData)
|
|
|
|
+// }
|
|
|
|
+// }
|
|
|
|
+// }
|
|
|
|
+// //fmt.Println("finish---", table.BrandData)
|
|
|
|
+//}
|
|
|
|
+
|
|
|
|
+//func dealArrData(minNum int, ka map[string][]string) []map[string]string {
|
|
|
|
+// for k2, v2 := range ka {
|
|
|
|
+// //处理数组长度不相等,使长度一致
|
|
|
|
+// if len(v2) > minNum {
|
|
|
|
+// ka[k2] = v2[:minNum]
|
|
|
|
+// }
|
|
|
|
+// }
|
|
|
|
+// finalData := assembleData(ka)
|
|
|
|
+// if len(finalData) > 0 {
|
|
|
|
+// return finalData
|
|
|
|
+// }
|
|
|
|
+// return nil
|
|
|
|
+
|
|
|
|
+//}
|
|
|
|
+//func dealStrData(kv map[string]string) []map[string]string {
|
|
|
|
+// finalData := assembleData(kv)
|
|
|
|
+// if len(finalData) > 0 {
|
|
|
|
+// return finalData
|
|
|
|
+// }
|
|
|
|
+// return nil
|
|
|
|
+
|
|
|
|
+//}
|
|
|
|
+
|
|
|
|
+////组装数据,每一行的数据为一数据集合
|
|
|
|
+//func assembleData(m interface{}) []map[string]string {
|
|
|
|
+// defer qutil.Catch()
|
|
|
|
+// /*
|
|
|
|
+// {
|
|
|
|
+// "itemname":["计算机","打印机","机柜"],
|
|
|
|
+// "number" :["1","12","4"]
|
|
|
|
+// }
|
|
|
|
+// */
|
|
|
|
+// datas := []map[string]string{}
|
|
|
|
+// switch reflect.TypeOf(m).String() {
|
|
|
|
+// case "map[string][]string": //数组数据
|
|
|
|
+// realTypeM := m.(map[string][]string)
|
|
|
|
+// //根据数组数据的顺序 将多个数组中索引相同的数据拼装成一个map,并将这多个map放入一个arr
|
|
|
|
+// /*
|
|
|
|
+// arr1 ["a1","b1","c1"]
|
|
|
|
+// arr2 ["a2","b2","c2"]
|
|
|
|
+
|
|
|
|
+// [
|
|
|
|
+// {"a1","a2"},
|
|
|
|
+// {"b1","b2"},
|
|
|
|
+// {"c1","c2"}
|
|
|
|
+// ]
|
|
|
|
+// */
|
|
|
|
+// //start
|
|
|
|
+// for k3, v3 := range realTypeM {
|
|
|
|
+// for _, val := range v3 {
|
|
|
|
+// data := make(map[string]string)
|
|
|
|
+// data[k3] = val
|
|
|
|
+// datas = append(datas, data)
|
|
|
|
+// }
|
|
|
|
+// break
|
|
|
|
+// }
|
|
|
|
+// for i, data := range datas {
|
|
|
|
+// for k4, v4 := range realTypeM {
|
|
|
|
+// if i < len(v4) { //数组数据长度不一致
|
|
|
|
+// if v4[i] != " " {
|
|
|
|
+// data[k4] = v4[i]
|
|
|
|
+// } else {
|
|
|
|
+// delete(data, k4)
|
|
|
|
+// continue
|
|
|
|
+// }
|
|
|
|
+// } else {
|
|
|
|
+// fmt.Println("err table")
|
|
|
|
+// continue
|
|
|
|
+// }
|
|
|
|
+// }
|
|
|
|
+// datas[i] = data
|
|
|
|
+// }
|
|
|
|
+// //end
|
|
|
|
+// for _, fdv := range datas { //清除空数据和只含特殊符号的数据
|
|
|
|
+// for fmk, fmv := range fdv {
|
|
|
|
+// if tabletdclear.ReplaceAllString(fmv, "") == "" {
|
|
|
|
+// delete(fdv, fmk)
|
|
|
|
+// }
|
|
|
|
+// }
|
|
|
|
+// }
|
|
|
|
+// case "map[string]string": //字符串数据
|
|
|
|
+// realTypeM := m.(map[string]string)
|
|
|
|
+// datas = append(datas, realTypeM)
|
|
|
|
+// default:
|
|
|
|
+// }
|
|
|
|
+// return datas
|
|
|
|
+//}
|
|
|
|
+
|
|
|
|
+//func convert(key, r string) bool {
|
|
|
|
+// flag := false
|
|
|
|
+// //fmt.Println("key1---", key)
|
|
|
|
+// key = tabletitleclear.ReplaceAllString(key, "")
|
|
|
|
+// //fmt.Println("key2---", key)
|
|
|
|
+// reg, err := regexp.Compile(r)
|
|
|
|
+// if err != nil {
|
|
|
|
+// fmt.Println("reg err:", err)
|
|
|
|
+// return flag
|
|
|
|
+// }
|
|
|
|
+// flag = reg.MatchString(key)
|
|
|
|
+// //fmt.Println(key, " ", r, " ", flag)
|
|
|
|
+// return flag
|
|
|
|
+//}
|
|
|
|
+
|
|
|
|
+//func hasKey(table *Table, n int) {
|
|
|
|
+// //fmt.Println("key匹配到:", n, table.TableResult.HasKey)
|
|
|
|
+// if table.TableResult.HasKey == 1 {
|
|
|
|
+// return
|
|
|
|
+// }
|
|
|
|
+// if n >= 1 {
|
|
|
|
+// table.TableResult.HasKey = 1
|
|
|
|
+// }
|
|
|
|
+// //fmt.Println(table.TableResult.HasKey)
|
|
|
|
+//}
|
|
|
|
+
|
|
|
|
+////是否有商品
|
|
|
|
+//func hasGoods(table *Table, data interface{}) {
|
|
|
|
+// if table.TableResult.HasGoods == 1 {
|
|
|
|
+// return
|
|
|
|
+// }
|
|
|
|
+// sData, ok := data.(string)
|
|
|
|
+// proFlag := false
|
|
|
|
+// if ok { //string数据检查goods
|
|
|
|
+// if sData != "" {
|
|
|
|
+// // if name == "goods" {
|
|
|
|
+// // return GoodsGet.CheckSensitiveWord(src)
|
|
|
|
+// // } else {
|
|
|
|
+// // return BrandGet.CheckSensitiveWord(src)
|
|
|
|
+// // }
|
|
|
|
+
|
|
|
|
+// proFlag = u.CheckSensitiveWord("goods", sData)
|
|
|
|
+// if proFlag {
|
|
|
|
+// table.TableResult.HasGoods = 1
|
|
|
|
+// }
|
|
|
|
+// }
|
|
|
|
+// } else { //arr数据检查goods
|
|
|
|
+// arrData := data.([]string)
|
|
|
|
+// if len(arrData) > 0 {
|
|
|
|
+// for _, src := range arrData {
|
|
|
|
+// if src != "" {
|
|
|
|
+// proFlag = u.CheckSensitiveWord("pro", src)
|
|
|
|
+// if proFlag {
|
|
|
|
+// table.TableResult.HasGoods = 1
|
|
|
|
+// break
|
|
|
|
+// }
|
|
|
|
+// }
|
|
|
|
+// }
|
|
|
|
+// }
|
|
|
|
+// }
|
|
|
|
+//}
|
|
|
|
+
|
|
|
|
+////是否有品牌
|
|
|
|
+//func hasBrand(table *Table, data interface{}) {
|
|
|
|
+// if table.TableResult.HasBrand == 1 {
|
|
|
|
+// return
|
|
|
|
+// }
|
|
|
|
+// sData, ok := data.(string)
|
|
|
|
+// brandFlag := false
|
|
|
|
+// if ok { //string数据检查goods
|
|
|
|
+// if sData != "" {
|
|
|
|
+// brandFlag = u.CheckSensitiveWord("brand", sData)
|
|
|
|
+// //fmt.Println("--------------", sData, brandFlag)
|
|
|
|
+// if brandFlag {
|
|
|
|
+// table.TableResult.HasBrand = 1
|
|
|
|
+// }
|
|
|
|
+// }
|
|
|
|
+// } else { //arr数据检查goods
|
|
|
|
+// arrData := data.([]string)
|
|
|
|
+// if len(arrData) > 0 {
|
|
|
|
+// for _, src := range arrData {
|
|
|
|
+// if src != "" {
|
|
|
|
+// brandFlag = u.CheckSensitiveWord("brand", src)
|
|
|
|
+// if brandFlag {
|
|
|
|
+// table.TableResult.HasBrand = 1
|
|
|
|
+// break
|
|
|
|
+// }
|
|
|
|
+// }
|
|
|
|
+// }
|
|
|
|
+// }
|
|
|
|
+// }
|
|
|
|
+//}
|