advancedProject.go 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122
  1. package common
  2. import (
  3. qutil "app.yhyue.com/moapp/jybase/common"
  4. "encoding/json"
  5. "fmt"
  6. "leadGeneration/public"
  7. "leadGeneration/util"
  8. "log"
  9. "regexp"
  10. "strings"
  11. "time"
  12. )
  13. func (mae *MarketAnalysisEntity) AdvancedProject() map[string]interface{} {
  14. finalSql := fmt.Sprintf(mae.GetCommonQuerySqlWithAggs(), projectsNumber, mae.Size, projectsSort)
  15. log.Println("定制化分析报告sql查询:", finalSql)
  16. mae.Types = 2
  17. mae.FormatParam.SubType = []string{"拟建", "采购意向"}
  18. mae.Size = 2
  19. mae.FormatParam.STime = time.Now().AddDate(0, -3, 0).Unix()
  20. res, _, data := util.GetAggs("bidding", "bidding", finalSql)
  21. if res == nil || len(res) == 0 || data == nil || len(data) == 0 {
  22. return nil
  23. }
  24. var thisRow SuperProjects
  25. for name, object := range res {
  26. bArr, err := object.MarshalJSON()
  27. if len(bArr) == 0 || err != nil {
  28. continue
  29. }
  30. if name == "projects_number" {
  31. if json.Unmarshal(bArr, &thisRow.ProjectsNumber) != nil {
  32. continue
  33. }
  34. }
  35. }
  36. redisData := make(map[string]interface{})
  37. for _, v := range thisRow.ProjectsNumber.Buckets {
  38. if v.DocCount == 0 {
  39. continue
  40. }
  41. redisData[v.Key] = v.DocCount
  42. }
  43. if len(redisData) == 0 {
  44. return nil
  45. }
  46. resData := make([]map[string]interface{}, len(data))
  47. for i, v := range data {
  48. if json.Unmarshal(*v.Source, &resData[i]) != nil {
  49. continue
  50. }
  51. }
  52. log.Println("AdvancedProject redis data :", resData)
  53. return nil
  54. }
  55. func KeyWordFormat(userid, keyWords string) string {
  56. var (
  57. arryMap []map[string]interface{}
  58. key string
  59. )
  60. if keyWords != "" {
  61. var aItems []map[string]interface{}
  62. for _, v := range strings.Split(keyWords, ",") {
  63. arryMap = append(arryMap, map[string]interface{}{"from": 1, "appendkey": nil, "key": processKeyword(v), "notkey": nil, "updatetime": time.Now().Unix()})
  64. }
  65. item := map[string]interface{}{
  66. "a_key": arryMap,
  67. "s_item": "未分类",
  68. "updatetime": time.Now().Unix(),
  69. }
  70. aItems = append(aItems, item)
  71. dataType, _ := json.Marshal(aItems)
  72. key = string(dataType)
  73. } else {
  74. data, ok := public.MQFW.FindById("user", userid, `{"o_jy":1,"o_vipjy":1,"o_member_jy":1,"i_vip_status":1,"i_member_status":1,"s_phone":1,"s_m_phone":1}`)
  75. if ok && data != nil && len(*data) > 0 {
  76. oJy, _ := (*data)["o_jy"].(map[string]interface{}) //免费用户关键词
  77. vipJy, _ := (*data)["o_vipjy"].(map[string]interface{}) //超级订阅关键词
  78. memberJy, _ := (*data)["o_member_jy"].(map[string]interface{}) //大会员关键词
  79. var aItems []interface{}
  80. if qutil.IntAll((*data)["i_member_status"]) > 0 {
  81. aItems, _ = memberJy["a_items"].([]interface{})
  82. } else if qutil.IntAll((*data)["i_vip_status"]) > 0 {
  83. aItems, _ = vipJy["a_items"].([]interface{})
  84. } else {
  85. if oJy["a_key"] != nil && len(oJy["a_key"].([]interface{})) > 0 {
  86. a_key, _ := oJy["a_key"].([]interface{})
  87. for _, v := range a_key {
  88. v1, _ := v.(map[string]interface{})
  89. arryMap = append(arryMap, map[string]interface{}{"from": 1, "appendkey": nil, "key": processKeyword(qutil.InterfaceToStr(v1["key"])), "notkey": nil, "updatetime": time.Now().Unix()})
  90. }
  91. item := map[string]interface{}{
  92. "a_key": arryMap,
  93. "s_item": "未分类",
  94. "updatetime": time.Now().Unix(),
  95. }
  96. aItems = append(aItems, item)
  97. }
  98. }
  99. if len(aItems) > 0 {
  100. dataType, _ := json.Marshal(aItems)
  101. key = string(dataType)
  102. }
  103. }
  104. }
  105. return key
  106. }
  107. // 处理订阅的关键词
  108. func processKeyword(keyword string) []string {
  109. keywordReg := regexp.MustCompile("([\\s\u3000\u2003\u00a0+,,])+")
  110. spaceReg := regexp.MustCompile("\\s+")
  111. keyword = keywordReg.ReplaceAllString(keyword, " ")
  112. keyword = spaceReg.ReplaceAllString(keyword, " ")
  113. keyword = strings.Trim(keyword, " ")
  114. if keyword == "" {
  115. return nil
  116. }
  117. return strings.Split(keyword, " ")
  118. }