network.go 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132
  1. package common
  2. import (
  3. "context"
  4. "fmt"
  5. "strings"
  6. . "app.yhyue.com/moapp/jybase/common"
  7. "github.com/zeromicro/go-zero/core/logx"
  8. )
  9. //人脉通公用方法
  10. var NetworkCom = &networkCom{}
  11. type networkCom struct{}
  12. //
  13. func (n *networkCom) GetEntIdByName(names []string) map[string]string {
  14. result := map[string]string{}
  15. if len(names) == 0 {
  16. return result
  17. }
  18. var query = func(values []string) {
  19. wh, args := n.WhArgs(values)
  20. rows, err := ClickhouseConn.Query(context.Background(), `select id,company_name from information.ent_info where company_name in (`+wh+`)`, args...)
  21. if err != nil {
  22. logx.Error(err)
  23. return
  24. }
  25. for rows.Next() {
  26. var (
  27. id string
  28. company_name string
  29. )
  30. if err := rows.Scan(&id, &company_name); err != nil {
  31. logx.Error(err)
  32. continue
  33. }
  34. result[company_name] = id
  35. }
  36. rows.Close()
  37. if err := rows.Err(); err != nil {
  38. logx.Error(err)
  39. }
  40. }
  41. values := []string{}
  42. for _, v := range names {
  43. values = append(values, v)
  44. if len(values) == 200 {
  45. query(values)
  46. values = []string{}
  47. }
  48. }
  49. if len(values) > 0 {
  50. query(values)
  51. }
  52. return result
  53. }
  54. //根据标签类型获取标签占位
  55. func (n *networkCom) GetEntTagSeat(labelType int) []string {
  56. rows, err := ClickhouseConn.Query(context.Background(), `select bitmap_num from information.ent_label where label_type=?`, labelType)
  57. if err != nil {
  58. logx.Error(err)
  59. return nil
  60. }
  61. array := []string{}
  62. for rows.Next() {
  63. var (
  64. bitmap_num int8
  65. )
  66. if err := rows.Scan(&bitmap_num); err != nil {
  67. logx.Error(err)
  68. continue
  69. }
  70. array = append(array, fmt.Sprint(bitmap_num))
  71. }
  72. rows.Close()
  73. if err := rows.Err(); err != nil {
  74. logx.Error(err)
  75. }
  76. return array
  77. }
  78. //获取我的业态
  79. func (n *networkCom) GetMyProbusfor(entAccoutId int64) []string {
  80. datas := CrmMysql.SelectBySql(`select probusfor from crm.config_tenant where account_id=?`, entAccoutId)
  81. if datas == nil || len(*datas) == 0 {
  82. return nil
  83. }
  84. probusfor := ObjToString((*datas)[0]["probusfor"])
  85. if probusfor == "" {
  86. return nil
  87. }
  88. return strings.Split(probusfor, ",")
  89. }
  90. //获取总数封装
  91. func (n *networkCom) Count(query string, args ...interface{}) int64 {
  92. row := ClickhouseConn.QueryRow(context.Background(), query, args...)
  93. var count uint64
  94. if err := row.Scan(&count); err != nil {
  95. logx.Error(err)
  96. return 0
  97. }
  98. return int64(count)
  99. }
  100. //获取我监控的企业
  101. func (n *networkCom) EntMonitor(userId string) map[string]bool {
  102. m := map[string]bool{}
  103. list, _ := Mgo.Find("follow_customer", map[string]interface{}{"userId": userId}, nil, `{"_id":0,"name":1}`, false, -1, -1)
  104. if list == nil {
  105. return m
  106. }
  107. for _, v := range *list {
  108. name, _ := v["name"].(string)
  109. m[name] = true
  110. }
  111. return m
  112. }
  113. //获取问号占位符数量及对应的参数值
  114. func (n *networkCom) WhArgs(args []string) (string, []interface{}) {
  115. newArgs := make([]interface{}, len(args))
  116. wh := make([]string, len(args))
  117. for k, v := range args {
  118. newArgs[k] = v
  119. wh[k] = "?"
  120. }
  121. return strings.Join(wh, ","), newArgs
  122. }