Forráskód Böngészése

fix:关键词组查询&导出匹配修改

duxin 1 éve
szülő
commit
4b09f5d1fb

+ 54 - 28
src/jfw/modules/bigmember/src/service/analysis/forecastproject.go

@@ -353,10 +353,19 @@ func (this *Analysis) ForDerive() {
 			}
 		}
 	}
+	var dKWord []*util.DeriveKeyWord
+	for _, word := range sql.Keyword {
+		dKWord = append(dKWord, &util.DeriveKeyWord{
+			Keyword:  strings.Join(word.Keyword, " "),
+			Appended: word.Appended,
+			Exclude:  word.Exclude,
+			MatchWay: word.MatchWay,
+		})
+	}
 	saveData := map[string]interface{}{
 		"selectIds":  selectIds,
 		"s_userid":   userId,
-		"keywords":   sql.Keyword,
+		"keywords":   dKWord,
 		"area":       sql.Area,
 		"city":       sql.City,
 		"region":     region,
@@ -405,46 +414,43 @@ func (this *Analysis) ForPList() {
 		endTime, _ := this.GetInteger("endTime")
 		dataType := this.GetString("dataType")
 		area := this.GetString("area")
+		total, _ := this.GetInteger("total")
 		if area == "{}" {
 			area = ""
 		}
+		if total == 0 && (area != "" || endTime > 0 || startTime > 0) {
+			regMap.Data = map[string]interface{}{
+				"msg":        "您设置的订阅关键词无法进行预测",
+				"code":       2,
+				"isSubCount": isSubCount,
+			}
+			return
+		}
 		if pageSize == 0 {
 			pageSize = 10
 		}
-		o_member_jy := &map[string]interface{}{}
 		//查库获得大会员用户的信息
 		o_mb := config.Compatible.Select(main_userId, `{"o_member_jy":1}`)
-		if o_mb != nil && (*o_mb) != nil {
-			if (*o_mb)["o_member_jy"] != nil {
-				o_member_jy = qutil.ObjToMap((*o_mb)["o_member_jy"])
-				//项目预测检索库
-				flist, fcount, distinctCount = getNewForecast(main_userId, pageNum, *o_member_jy, pageSize, startTime, endTime, dataType, area)
-				if pageNum == 1 {
-					if (*o_member_jy)["a_items"] != nil {
-						a_items := qutil.ObjArrToMapArr((*o_member_jy)["a_items"].([]interface{}))
-						if len(a_items) == 0 || a_items[0]["a_key"] == nil || len(a_items[0]["a_key"].([]interface{})) == 0 {
-							msg = "暂无设置订阅关键词,无法进行预测"
-							code = 1
-						} else if len(flist) == 0 {
-							if area != "" || startTime != 0 || endTime != 0 {
-								msg = "当前筛选条件下结果为空"
-								code = 3
-							} else {
-								msg = "您设置的订阅关键词无法进行预测"
-								code = 2
-							}
-						}
+		isKWD, o_member_jy := isKeWord(o_mb)
+		if isKWD {
+			flist, fcount, distinctCount = getNewForecast(main_userId, pageNum, *o_member_jy, pageSize, startTime, endTime, dataType, area)
+			if pageNum == 1 {
+				if len(flist) == 0 {
+					if area != "" || startTime != 0 || endTime != 0 {
+						msg = "当前筛选条件下结果为空"
+						code = 3
 					} else {
-						msg = "暂无设置订阅关键词,无法进行预测"
-						code = 1
+						msg = "您设置的订阅关键词无法进行预测"
+						code = 2
 					}
 				}
-			} else {
-				//PC端大会员 没有进行初始化
-				msg = "暂无设置订阅关键词,无法进行预测"
-				code = 1
 			}
+		} else {
+			//PC端大会员 没有进行初始化
+			msg = "暂无设置订阅关键词,无法进行预测"
+			code = 1
 		}
+
 		regMap.Data = map[string]interface{}{
 			"msg":           msg,
 			"code":          code,
@@ -460,6 +466,26 @@ func (this *Analysis) ForPList() {
 	this.ServeJson(regMap)
 }
 
+func isKeWord(o_mb *map[string]interface{}) (bool, *map[string]interface{}) {
+	if o_mb == nil || len(*o_mb) == 0 || (*o_mb)["o_member_jy"] == nil {
+		return false, nil
+	}
+	o_member_jy := qutil.ObjToMap((*o_mb)["o_member_jy"])
+	if (*o_member_jy)["a_items"] == nil {
+		return false, nil
+	}
+	a_items := qutil.ObjArrToMapArr((*o_member_jy)["a_items"].([]interface{}))
+	if len(a_items) == 0 {
+		return false, nil
+	}
+	for _, item := range a_items {
+		if item["a_key"] != nil && len(a_items[0]["a_key"].([]interface{})) > 0 {
+			return true, o_member_jy
+		}
+	}
+	return false, nil
+}
+
 type ForecastInfo struct {
 	Buyer       string   `json:"buyer"`
 	Id          string   `json:"id"`

+ 8 - 0
src/jfw/modules/bigmember/src/util/view.go

@@ -23,6 +23,14 @@ type ViewKeyWord struct {
 	MatchWay int      `json:"matchway"`  //匹配模式
 }
 
+/*已选条件--关键词*/
+type DeriveKeyWord struct {
+	Keyword  string   `json:"key"`       //关键词
+	Appended []string `json:"appendkey"` //附加词
+	Exclude  []string `json:"notkey"`    //排除词
+	MatchWay int      `json:"matchway"`  //匹配模式
+}
+
 /*已选条件*/
 type ViewCondition struct {
 	Area       []string      //地区-省份