|
@@ -0,0 +1,118 @@
|
|
|
+package service
|
|
|
+
|
|
|
+import (
|
|
|
+ "encoding/json"
|
|
|
+ "log"
|
|
|
+ qutil "qfw/util"
|
|
|
+ "strconv"
|
|
|
+ "util"
|
|
|
+
|
|
|
+ "gopkg.in/mgo.v2/bson"
|
|
|
+)
|
|
|
+
|
|
|
+/*已选条件--关键词*/
|
|
|
+type KeyWord struct {
|
|
|
+ Keyword []string `json:"key"` //关键词
|
|
|
+ Appended []string `json:"appendkey"` //附加词
|
|
|
+ Exclude []string `json:"notkey"` //排除词
|
|
|
+}
|
|
|
+
|
|
|
+/*已选条件*/
|
|
|
+type SieveCondition struct {
|
|
|
+ Area []string //地区-省份
|
|
|
+ City []string //地区-城市
|
|
|
+ Buyerclass []string //采购行业
|
|
|
+ Keyword []KeyWord //关键词
|
|
|
+ SelectType string //筛选(正文 or 标题)
|
|
|
+ Subtype []string //信息类型
|
|
|
+}
|
|
|
+
|
|
|
+func GetSqlObjFromId(_id string) *SieveCondition {
|
|
|
+ var (
|
|
|
+ query *map[string]interface{}
|
|
|
+ ok bool
|
|
|
+ )
|
|
|
+ if query, ok = util.MQFW.FindById("user", _id, `{"o_vipjy":1}`); !ok {
|
|
|
+ return nil
|
|
|
+ }
|
|
|
+ o_vipjy, _ := (*query)["o_vipjy"].(map[string]interface{})
|
|
|
+ a_items := o_vipjy["a_items"].([]interface{})
|
|
|
+ a_buyerclass := o_vipjy["a_buyerclass"].([]interface{})
|
|
|
+ a_infotype := o_vipjy["a_infotype"].([]interface{})
|
|
|
+ o_area := o_vipjy["o_area"].(map[string]interface{})
|
|
|
+ return &SieveCondition{
|
|
|
+ Keyword: getKeyWordArrFromDbResult(a_items),
|
|
|
+ Buyerclass: qutil.ObjArrToStringArr(a_buyerclass),
|
|
|
+ Subtype: qutil.ObjArrToStringArr(a_infotype),
|
|
|
+ Area: getStringArrFromDbResult(o_area, 1),
|
|
|
+ City: getStringArrFromDbResult(o_area, 2),
|
|
|
+ SelectType: strconv.Itoa(o_vipjy["i_matchway"].(int)),
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+//
|
|
|
+func getStringArrFromDbResult(area map[string]interface{}, i int) (arr []string) {
|
|
|
+ if area == nil {
|
|
|
+ return
|
|
|
+ }
|
|
|
+ for k, v := range area {
|
|
|
+ log.Println(k, v)
|
|
|
+ }
|
|
|
+ return
|
|
|
+}
|
|
|
+
|
|
|
+//关键词 附加词 排除词
|
|
|
+func getKeyWordArrFromDbResult(a_items []interface{}) (arr []KeyWord) {
|
|
|
+ if a_items == nil {
|
|
|
+ return
|
|
|
+ }
|
|
|
+ for _, v := range a_items {
|
|
|
+ kwsArr := v.(map[string]interface{})["a_key"]
|
|
|
+ for _, k := range kwsArr.([]interface{}) {
|
|
|
+ kw := KeyWord{}
|
|
|
+ b, e := json.Marshal(k)
|
|
|
+ if e != nil {
|
|
|
+ log.Println(e.Error())
|
|
|
+ }
|
|
|
+ json.Unmarshal(b, &kw)
|
|
|
+ arr = append(arr, kw)
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return
|
|
|
+}
|
|
|
+
|
|
|
+//初始化vip订阅关键词
|
|
|
+func MergeKws(userId string) {
|
|
|
+ defer qutil.Catch()
|
|
|
+ if userId == "" {
|
|
|
+ return
|
|
|
+ }
|
|
|
+ data, ok := util.MQFW.FindById("user", userId, `{"o_jy":1,"o_vipjy":1}`)
|
|
|
+ var o_jy map[string]interface{}
|
|
|
+ var o_vipjy map[string]interface{}
|
|
|
+ if ok && data != nil && len(*data) > 0 {
|
|
|
+ o_vipjy, _ = (*data)["o_vipjy"].(map[string]interface{})
|
|
|
+ a_items, _ := o_vipjy["a_items"].([]interface{})
|
|
|
+ if a_items == nil { //首次
|
|
|
+ var o_kws = make(map[string]interface{})
|
|
|
+ o_jy, _ = (*data)["o_jy"].(map[string]interface{})
|
|
|
+ a_key, _ := o_jy["a_key"].([]interface{})
|
|
|
+ var _key = make([]map[string]interface{}, len(a_key))
|
|
|
+ if len(a_key) > 0 {
|
|
|
+ o_kws["s_item"] = "未分类"
|
|
|
+ for k, v := range a_key {
|
|
|
+ keyarr := v.(map[string]interface{})
|
|
|
+ _key[k] = map[string]interface{}{"key": keyarr["key"].([]interface{})}
|
|
|
+ }
|
|
|
+ }
|
|
|
+ o_kws["a_key"] = _key
|
|
|
+ if o_kws != nil && len(o_kws) > 0 {
|
|
|
+ a := util.MQFW.UpdateById("user", userId, bson.M{
|
|
|
+ "$push": bson.M{"o_vipjy.a_items": o_kws},
|
|
|
+ })
|
|
|
+ log.Println(a)
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+}
|