package common import ( "context" "fmt" "strings" . "app.yhyue.com/moapp/jybase/common" "github.com/zeromicro/go-zero/core/logx" ) //人脉通公用方法 var NetworkCom = &networkCom{} type networkCom struct{} // func (n *networkCom) GetEntIdByName(names []string) map[string]string { result := map[string]string{} if len(names) == 0 { return result } var query = func(values []string) { wh, args := n.WhArgs(values) rows, err := ClickhouseConn.Query(context.Background(), `select id,company_name from information.ent_info where company_name in (`+wh+`)`, args...) if err != nil { logx.Error(err) return } for rows.Next() { var ( id string company_name string ) if err := rows.Scan(&id, &company_name); err != nil { logx.Error(err) continue } result[company_name] = id } rows.Close() if err := rows.Err(); err != nil { logx.Error(err) } } values := []string{} for _, v := range names { values = append(values, v) if len(values) == 200 { query(values) values = []string{} } } if len(values) > 0 { query(values) } return result } //根据标签类型获取标签占位 func (n *networkCom) GetEntTagSeat(labelType int) []string { rows, err := ClickhouseConn.Query(context.Background(), `select bitmap_num from information.ent_label where label_type=?`, labelType) if err != nil { logx.Error(err) return nil } array := []string{} for rows.Next() { var ( bitmap_num int8 ) if err := rows.Scan(&bitmap_num); err != nil { logx.Error(err) continue } array = append(array, fmt.Sprint(bitmap_num)) } rows.Close() if err := rows.Err(); err != nil { logx.Error(err) } return array } //获取我的业态 func (n *networkCom) GetMyProbusfor(entAccoutId int64) []string { datas := CrmMysql.SelectBySql(`select probusfor from crm.config_tenant where account_id=?`, entAccoutId) if datas == nil || len(*datas) == 0 { return nil } probusfor := ObjToString((*datas)[0]["probusfor"]) if probusfor == "" { return nil } return strings.Split(probusfor, ",") } //获取总数封装 func (n *networkCom) Count(query string, args ...interface{}) int64 { row := ClickhouseConn.QueryRow(context.Background(), query, args...) var count uint64 if err := row.Scan(&count); err != nil { logx.Error(err) return 0 } return int64(count) } //获取我监控的企业 func (n *networkCom) EntMonitor(userId string) map[string]bool { m := map[string]bool{} list, _ := Mgo.Find("follow_customer", map[string]interface{}{"userId": userId}, nil, `{"_id":0,"name":1}`, false, -1, -1) if list == nil { return m } for _, v := range *list { name, _ := v["name"].(string) m[name] = true } return m } //获取问号占位符数量及对应的参数值 func (n *networkCom) WhArgs(args []string) (string, []interface{}) { newArgs := make([]interface{}, len(args)) wh := make([]string, len(args)) for k, v := range args { newArgs[k] = v wh[k] = "?" } return strings.Join(wh, ","), newArgs }