xuzhiheng 1 年之前
父節點
當前提交
f37ac08f3f
共有 9 個文件被更改,包括 797 次插入212 次删除
  1. 二進制
      address/address
  2. 3 0
      address/go.mod
  3. 86 0
      address/main.go
  4. 二進制
      biddingToLabel/biddingToLabel
  5. 20 0
      biddingToLabel/go.mod
  6. 358 0
      biddingToLabel/go.sum
  7. 203 0
      biddingToLabel/main.go
  8. 124 157
      ent_legal/legal_full.go
  9. 3 55
      main.go

二進制
address/address


+ 3 - 0
address/go.mod

@@ -0,0 +1,3 @@
+module address
+
+go 1.21.0

+ 86 - 0
address/main.go

@@ -0,0 +1,86 @@
+package main
+
+import (
+	"encoding/json"
+	"fmt"
+	"io/ioutil"
+	"net/http"
+	"net/url"
+)
+
+// 定义百度API响应的结构体
+type BaiduGeocodingResponse struct {
+	Status  int    `json:"status"`
+	Message string `json:"message"`
+	Result  Result `json:"result"`
+}
+
+type Result struct {
+	Location Location `json:"location"`
+	Address  string   `json:"formatted_address"`
+}
+
+type Location struct {
+	Lng float64 `json:"lng"`
+	Lat float64 `json:"lat"`
+}
+
+// 调用百度API获取经纬度的函数
+func getLatLngFromBaiduAPI(address string, apiKey string) (*Location, error) {
+	// 百度API的基础URL
+	baseURL := "http://api.map.baidu.com/geocoding/v3/"
+
+	// 构造请求参数
+	params := url.Values{}
+	params.Set("address", address)
+	params.Set("output", "json")
+	params.Set("ak", apiKey) // 使用你的API密钥
+
+	// 拼接完整的URL
+	urlStr := baseURL + "?" + params.Encode()
+
+	// 发起HTTP GET请求
+	resp, err := http.Get(urlStr)
+	if err != nil {
+		return nil, err
+	}
+	defer resp.Body.Close()
+
+	// 读取响应体
+	body, err := ioutil.ReadAll(resp.Body)
+	if err != nil {
+		return nil, err
+	}
+
+	// 解析JSON响应
+	var response BaiduGeocodingResponse
+	if err := json.Unmarshal(body, &response); err != nil {
+		return nil, err
+	}
+
+	// 检查状态码
+	if response.Status != 0 {
+		return nil, fmt.Errorf("geocoding failed: %s", response.Message)
+	}
+
+	// 返回经纬度
+	return &response.Result.Location, nil
+}
+
+func main() {
+	// 替换为你的API密钥
+	apiKey := "iRhAwfK725GcVy7WJmLv6Twtw85HYkl1"
+
+	// 要查询的地址
+	address := "北京市朝阳区三里屯"
+
+	// 调用函数获取经纬度
+	location, err := getLatLngFromBaiduAPI(address, apiKey)
+	if err != nil {
+		fmt.Printf("Error getting latitude and longitude: %v\n", err)
+		return
+	}
+
+	// 打印结果
+	fmt.Printf("Latitude: %f, Longitude: %f\n", location.Lat, location.Lng)
+}

二進制
biddingToLabel/biddingToLabel


+ 20 - 0
biddingToLabel/go.mod

@@ -0,0 +1,20 @@
+module biddingToLabel
+
+go 1.21.0
+
+require app.yhyue.com/moapp/jybase v0.0.0-20240424025716-c77615e9004e
+
+require (
+	github.com/go-stack/stack v1.8.0 // indirect
+	github.com/golang/snappy v0.0.4 // indirect
+	github.com/klauspost/compress v1.13.6 // indirect
+	github.com/pkg/errors v0.9.1 // indirect
+	github.com/xdg-go/pbkdf2 v1.0.0 // indirect
+	github.com/xdg-go/scram v1.0.2 // indirect
+	github.com/xdg-go/stringprep v1.0.2 // indirect
+	github.com/youmark/pkcs8 v0.0.0-20181117223130-1be2e3e5546d // indirect
+	go.mongodb.org/mongo-driver v1.9.1 // indirect
+	golang.org/x/crypto v0.0.0-20210920023735-84f357641f63 // indirect
+	golang.org/x/sync v0.0.0-20210220032951-036812b2e83c // indirect
+	golang.org/x/text v0.3.7 // indirect
+)

+ 358 - 0
biddingToLabel/go.sum

@@ -0,0 +1,358 @@
+app.yhyue.com/moapp/esv1 v0.0.0-20220414031211-3da4123e648d/go.mod h1:91/lSD/hS+ckMVP3WdidRzDhC60lLMdyce9QHy0cSMA=
+app.yhyue.com/moapp/jybase v0.0.0-20240424025716-c77615e9004e h1:1LaaIJVFQrwtjMKagxxq1JHZ93I48xzmJk6DI5PiCL8=
+app.yhyue.com/moapp/jybase v0.0.0-20240424025716-c77615e9004e/go.mod h1:XHNATN6tsJKHdCB0DbUtFdPPHXexTUFyB3RlO+lUUoM=
+cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw=
+cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw=
+github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU=
+github.com/RoaringBitmap/roaring v1.5.0/go.mod h1:plvDsJQpxOC5bw8LRteu/MLWHsHez/3y6cubLI4/1yE=
+github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc=
+github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc=
+github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0=
+github.com/alecthomas/units v0.0.0-20190717042225-c3de453c63f4/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0=
+github.com/alecthomas/units v0.0.0-20190924025748-f65c72e2690d/go.mod h1:rBZYJk541a8SKzHPHnH3zbiI+7dagKZ0cgpgrD7Fyho=
+github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kdvxnR2qWY=
+github.com/aws/aws-sdk-go v1.35.20/go.mod h1:tlPOdRjfxPBpNIwqDj61rmsnA85v9jc0Ps9+muhnW+k=
+github.com/benbjohnson/clock v1.1.0/go.mod h1:J11/hYXuz8f4ySSvYwY0FKfm+ezbsZBKZxNJlLklBHA=
+github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q=
+github.com/beorn7/perks v1.0.0/go.mod h1:KWe93zE9D1o94FZ5RNwFwVgaQK1VOXiVxmqh+CedLV8=
+github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw=
+github.com/bits-and-blooms/bitset v1.2.0/go.mod h1:gIdJ4wp64HaoK2YrL1Q5/N7Y16edYb8uY+O0FJTyyDA=
+github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU=
+github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs=
+github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw=
+github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc=
+github.com/cncf/udpa/go v0.0.0-20201120205902-5459f2c99403/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk=
+github.com/cncf/udpa/go v0.0.0-20210930031921-04548b0d99d4/go.mod h1:6pvJx4me5XPnfI9Z40ddWsdw2W/uZgQLFXToKeRcDiI=
+github.com/cncf/xds/go v0.0.0-20210922020428-25de7278fc84/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs=
+github.com/cncf/xds/go v0.0.0-20211001041855-01bcc9b48dfe/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs=
+github.com/cncf/xds/go v0.0.0-20211011173535-cb28da3451f1/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs=
+github.com/coreos/go-semver v0.3.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk=
+github.com/coreos/go-systemd/v22 v22.3.2/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc=
+github.com/coscms/tagfast v0.0.0-20150925144250-2b69b2496250/go.mod h1:zX8vynptAghuV/KG8BOZlDeo4DsTKWfBQ154RWlkay0=
+github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E=
+github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
+github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
+github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
+github.com/donnie4w/go-logger v0.0.0-20170827050443-4740c51383f4/go.mod h1:L7S4x0R7vv3xoOhGuyAJyCO2MYzWOpccM4Isn8jIUgY=
+github.com/dustin/go-humanize v1.0.0/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk=
+github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4=
+github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4=
+github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98=
+github.com/envoyproxy/go-control-plane v0.9.9-0.20201210154907-fd9021fe5dad/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk=
+github.com/envoyproxy/go-control-plane v0.9.9-0.20210217033140-668b12f5399d/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk=
+github.com/envoyproxy/go-control-plane v0.10.2-0.20220325020618-49ff273808a1/go.mod h1:KJwIaB5Mv44NWtYuAOFCVOjcI94vtpEz2JU/D2v6IjE=
+github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c=
+github.com/fortytw2/leaktest v1.3.0/go.mod h1:jDsjWgpAGjm2CA7WthBh/CdZYEPF31XHquHwclZch5g=
+github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ=
+github.com/garyburd/redigo v1.6.2/go.mod h1:NR3MbYisc3/PwhQ00EMzDiPmrwpPxAn5GI05/YaO1SY=
+github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04=
+github.com/go-kit/kit v0.8.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as=
+github.com/go-kit/kit v0.9.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as=
+github.com/go-kit/log v0.1.0/go.mod h1:zbhenjAZHb184qTLMA9ZjW7ThYL0H2mk7Q6pNt4vbaY=
+github.com/go-logfmt/logfmt v0.3.0/go.mod h1:Qt1PoO58o5twSAckw1HlFXLmHsOX5/0LbT9GBnD5lWE=
+github.com/go-logfmt/logfmt v0.4.0/go.mod h1:3RMwSq7FuexP4Kalkev3ejPJsZTpXXBr9+V4qmtdjCk=
+github.com/go-logfmt/logfmt v0.5.0/go.mod h1:wCYkCAKZfumFQihp8CzCvQ3paCTfi41vtzG1KdI/P7A=
+github.com/go-sql-driver/mysql v1.5.0/go.mod h1:DCzpHaOWr8IXmIStZouvnhqoel9Qv2LBy8hT2VhHyBg=
+github.com/go-sql-driver/mysql v1.6.0/go.mod h1:DCzpHaOWr8IXmIStZouvnhqoel9Qv2LBy8hT2VhHyBg=
+github.com/go-stack/stack v1.8.0 h1:5SgMzNM5HxrEjV0ww2lTmX6E2Izsfxas4+YHWRs3Lsk=
+github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY=
+github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA=
+github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ=
+github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q=
+github.com/golang-jwt/jwt/v4 v4.4.2/go.mod h1:m21LjoU+eqJr34lmDMbreY2eSTRJ1cv77w39/MY0Ch0=
+github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q=
+github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=
+github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A=
+github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
+github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
+github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
+github.com/golang/protobuf v1.3.3/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw=
+github.com/golang/protobuf v1.4.0-rc.1/go.mod h1:ceaxUfeHdC40wWswd/P6IGgMaK3YpKi5j83Wpe3EHw8=
+github.com/golang/protobuf v1.4.0-rc.1.0.20200221234624-67d41d38c208/go.mod h1:xKAWHe0F5eneWXFV3EuXVDTCmh+JuBKY0li0aMyXATA=
+github.com/golang/protobuf v1.4.0-rc.2/go.mod h1:LlEzMj4AhA7rCAGe4KMBDvJI+AwstrUpVNzEA03Pprs=
+github.com/golang/protobuf v1.4.0-rc.4.0.20200313231945-b860323f09d0/go.mod h1:WU3c8KckQ9AFe+yFwt9sWVRKCVIyN9cPHBJSNnbL67w=
+github.com/golang/protobuf v1.4.0/go.mod h1:jodUvKwWbYaEsadDk5Fwe5c77LiNKVO9IDvqG2KuDX0=
+github.com/golang/protobuf v1.4.1/go.mod h1:U8fpvMrcmy5pZrNK1lt4xCsGvpyWQ/VVv6QDs8UjoX8=
+github.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI=
+github.com/golang/protobuf v1.4.3/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI=
+github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk=
+github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY=
+github.com/golang/snappy v0.0.1/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q=
+github.com/golang/snappy v0.0.4 h1:yAGX7huGHXlcLOEtBnF4w7FQwA26wojNCwOYAEhLjQM=
+github.com/golang/snappy v0.0.4/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q=
+github.com/gomodule/redigo v1.8.9/go.mod h1:7ArFNvsTjH8GMMzB4uy1snslv2BwmginuMs06a1uzZE=
+github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M=
+github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU=
+github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU=
+github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
+github.com/google/go-cmp v0.5.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
+github.com/google/go-cmp v0.5.2/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
+github.com/google/go-cmp v0.5.4/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
+github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
+github.com/google/go-cmp v0.5.6/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
+github.com/google/go-cmp v0.5.7/go.mod h1:n+brtR0CgQNWTVd5ZUFpTBC8YFBDLK/h/bpaJ8/DtOE=
+github.com/google/go-cmp v0.5.8 h1:e6P7q2lk1O+qJJb4BtCQXlK8vWEO8V1ZeuEdJNOqZyg=
+github.com/google/go-cmp v0.5.8/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
+github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg=
+github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
+github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0/go.mod h1:8NvIoxWQoOIhqOTXgfV/d3M/q6VIi02HzZEHgUlZvzk=
+github.com/grpc-ecosystem/grpc-gateway v1.16.0/go.mod h1:BDjrQk3hbvj6Nolgz8mAMFbcEtjT1g+wF4CSlocrBnw=
+github.com/howeyc/fsnotify v0.9.0/go.mod h1:41HzSPxBGeFRQKEEwgh49TRw/nKBsYZ2cF1OzPjSJsA=
+github.com/jinzhu/inflection v1.0.0/go.mod h1:h+uFLlag+Qp1Va5pdKtLDYj+kHp5pxUVkryuEj+Srlc=
+github.com/jinzhu/now v1.1.1/go.mod h1:d3SSVoowX0Lcu0IBviAWJpolVfI5UJVZZ7cO71lE/z8=
+github.com/jmespath/go-jmespath v0.4.0/go.mod h1:T8mJZnbsbmF+m6zOOFylbeCJqk5+pHWvzYPziyZiYoo=
+github.com/jmespath/go-jmespath/internal/testify v1.5.1/go.mod h1:L3OGu8Wl2/fWfCI6z80xFu9LTZmf1ZRjMHUOPmWr69U=
+github.com/josharian/intern v1.0.0/go.mod h1:5DoeVV0s6jJacbCEi61lwdGj/aVlrQvzHFFd8Hwg//Y=
+github.com/jpillora/backoff v1.0.0/go.mod h1:J/6gKK9jxlEcS3zixgDgUAsiuZ7yrSoa/FX5e0EB2j4=
+github.com/json-iterator/go v1.1.6/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU=
+github.com/json-iterator/go v1.1.10/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4=
+github.com/json-iterator/go v1.1.11/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4=
+github.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w=
+github.com/julienschmidt/httprouter v1.3.0/go.mod h1:JR6WtHb+2LUe8TCKY3cZOxFyyO8IZAc4RVcycCCAKdM=
+github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8=
+github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck=
+github.com/klauspost/compress v1.13.6 h1:P76CopJELS0TiO2mebmnzgWaajssP/EszplttgQxcgc=
+github.com/klauspost/compress v1.13.6/go.mod h1:/3/Vjq9QcHkK5uEr5lBEmyoZ1iFhe47etQ6QUkpK6sk=
+github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ=
+github.com/konsorten/go-windows-terminal-sequences v1.0.3/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ=
+github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFBFZlji/RkVcI2GknAs/DXo4wKdlNEc=
+github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo=
+github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI=
+github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ=
+github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI=
+github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE=
+github.com/mailru/easyjson v0.7.6/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc=
+github.com/mailru/easyjson v0.7.7/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc=
+github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0=
+github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
+github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
+github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0=
+github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0=
+github.com/montanaflynn/stats v0.0.0-20171201202039-1bf9dbcd8cbe/go.mod h1:wL8QJuTMNUDYhXwkmfOly8iTdp5TEcJFWZD2D7SIkUc=
+github.com/mschoch/smat v0.2.0/go.mod h1:kc9mz7DoBKqDyiRL7VZN8KvXQMWeTaVnttLRXOlotKw=
+github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U=
+github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U=
+github.com/olivere/elastic v6.2.37+incompatible/go.mod h1:J+q1zQJTgAz9woqsbVRqGeB5G1iqDKVBWLNSYW8yfJ8=
+github.com/olivere/elastic/v7 v7.0.22/go.mod h1:VDexNy9NjmtAkrjNoI7tImv7FR4tf5zUA3ickqu5Pc8=
+github.com/opentracing/opentracing-go v1.2.0/go.mod h1:GxEUsuufX4nBwe+T+Wl9TAgYrxe9dPLANfrWvHYVTgc=
+github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
+github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
+github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4=
+github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
+github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
+github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
+github.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw=
+github.com/prometheus/client_golang v1.0.0/go.mod h1:db9x61etRT2tGnBNRi70OPL5FsnadC4Ky3P0J6CfImo=
+github.com/prometheus/client_golang v1.7.1/go.mod h1:PY5Wy2awLA44sXw4AOSfFBetzPP4j5+D6mVACh+pe2M=
+github.com/prometheus/client_golang v1.11.1/go.mod h1:Z6t4BnS23TR94PD6BsDNk8yVqroYurpAkEiz0P2BEV0=
+github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo=
+github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA=
+github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA=
+github.com/prometheus/client_model v0.2.0/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA=
+github.com/prometheus/common v0.4.1/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4=
+github.com/prometheus/common v0.10.0/go.mod h1:Tlit/dnDKsSWFlCLTWaA1cyBgKHSMdTB80sz/V91rCo=
+github.com/prometheus/common v0.26.0/go.mod h1:M7rCNAaPfAosfx8veZJCuw84e35h3Cfd9VFqTh1DIvc=
+github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk=
+github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA=
+github.com/prometheus/procfs v0.1.3/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU=
+github.com/prometheus/procfs v0.6.0/go.mod h1:cz+aTbrPOrUb4q7XlbU9ygM+/jj0fzG6c1xBZuNvfVA=
+github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ=
+github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo=
+github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE=
+github.com/sirupsen/logrus v1.6.0/go.mod h1:7uNnSEd1DgxDLC74fIahvMZmmYsHGZGEOFrfsX/uA88=
+github.com/smartystreets/assertions v1.1.1/go.mod h1:tcbTF8ujkAEcZ8TElKY+i30BzYlVhC/LOxJk7iOWnoo=
+github.com/smartystreets/go-aws-auth v0.0.0-20180515143844-0c1422d1fdb9/go.mod h1:SnhjPscd9TpLiy1LpzGSKh3bXCfxxXuqd9xmQJy3slM=
+github.com/smartystreets/gunit v1.4.2/go.mod h1:ZjM1ozSIMJlAz/ay4SG8PeKF00ckUp+zMHZXV9/bvak=
+github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
+github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
+github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw=
+github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs=
+github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI=
+github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4=
+github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA=
+github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
+github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
+github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
+github.com/stretchr/testify v1.8.0 h1:pSgiaMZlXftHpm5L7V1+rVB+AZJydKsMxsQBIJw4PKk=
+github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU=
+github.com/tidwall/pretty v1.0.0 h1:HsD+QiTn7sK6flMKIvNmpqz1qrpP3Ps6jOKIKMooyg4=
+github.com/tidwall/pretty v1.0.0/go.mod h1:XNkn88O1ChpSDQmQeStsy+sBenx6DDtFZJxhVysOjyk=
+github.com/xdg-go/pbkdf2 v1.0.0 h1:Su7DPu48wXMwC3bs7MCNG+z4FhcyEuz5dlvchbq0B0c=
+github.com/xdg-go/pbkdf2 v1.0.0/go.mod h1:jrpuAogTd400dnrH08LKmI/xc1MbPOebTwRqcT5RDeI=
+github.com/xdg-go/scram v1.0.2 h1:akYIkZ28e6A96dkWNJQu3nmCzH3YfwMPQExUYDaRv7w=
+github.com/xdg-go/scram v1.0.2/go.mod h1:1WAq6h33pAW+iRreB34OORO2Nf7qel3VV3fjBj+hCSs=
+github.com/xdg-go/stringprep v1.0.2 h1:6iq84/ryjjeRmMJwxutI51F2GIPlP5BfTvXHeYjyhBc=
+github.com/xdg-go/stringprep v1.0.2/go.mod h1:8F9zXuvzgwmyT5DUm4GUfZGDdT3W+LCvS6+da4O5kxM=
+github.com/yl2chen/cidranger v1.0.2/go.mod h1:9U1yz7WPYDwf0vpNWFaeRh0bjwz5RVgRy/9UEQfHl0g=
+github.com/youmark/pkcs8 v0.0.0-20181117223130-1be2e3e5546d h1:splanxYIlg+5LfHAM6xpdFEAYOk8iySO56hMFq6uLyA=
+github.com/youmark/pkcs8 v0.0.0-20181117223130-1be2e3e5546d/go.mod h1:rHwXgn7JulP+udvsHwJoVG1YGAP6VLg4y9I5dyZdqmA=
+github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
+github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
+github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k=
+go.etcd.io/etcd/api/v3 v3.5.4/go.mod h1:5GB2vv4A4AOn3yk7MftYGHkUfGtDHnEraIjym4dYz5A=
+go.etcd.io/etcd/client/pkg/v3 v3.5.4/go.mod h1:IJHfcCEKxYu1Os13ZdwCwIUTUVGYTSAM3YSwc9/Ac1g=
+go.etcd.io/etcd/client/v3 v3.5.4/go.mod h1:ZaRkVgBZC+L+dLCjTcF1hRXpgZXQPOvnA/Ak/gq3kiY=
+go.mongodb.org/mongo-driver v1.9.1 h1:m078y9v7sBItkt1aaoe2YlvWEXcD263e1a4E1fBrJ1c=
+go.mongodb.org/mongo-driver v1.9.1/go.mod h1:0sQWfOeY63QTntERDJJ/0SuKK0T1uVSgKCuAROlKEPY=
+go.opencensus.io v0.22.5/go.mod h1:5pWMHQbX5EPX2/62yrJeAkowc+lfs/XD7Uxpq3pI6kk=
+go.opentelemetry.io/proto/otlp v0.7.0/go.mod h1:PqfVotwruBrMGOCsRd/89rSnXhoiJIqeYNgFYFoEGnI=
+go.uber.org/atomic v1.7.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc=
+go.uber.org/atomic v1.9.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc=
+go.uber.org/goleak v1.1.11/go.mod h1:cwTWslyiVhfpKIDGSZEM2HlOvcqm+tG4zioyIeLoqMQ=
+go.uber.org/goleak v1.1.12/go.mod h1:cwTWslyiVhfpKIDGSZEM2HlOvcqm+tG4zioyIeLoqMQ=
+go.uber.org/multierr v1.6.0/go.mod h1:cdWPpRnG4AhwMwsgIHip0KRBQjJy5kYEpYjJxpXp9iU=
+go.uber.org/multierr v1.8.0/go.mod h1:7EAYxJLBy9rStEaz58O2t4Uvip6FSURkq8/ppBp95ak=
+go.uber.org/zap v1.17.0/go.mod h1:MXVU+bhUf/A7Xi2HNOnopQOrmycQ5Ih87HtOu4q5SSo=
+go.uber.org/zap v1.21.0/go.mod h1:wjWOCqI0f2ZZrJF/UufIOkiC8ii6tm1iqIsLo76RfJw=
+golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4=
+golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
+golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
+golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
+golang.org/x/crypto v0.0.0-20201216223049-8b5274cf687f/go.mod h1:jdWPYTVW3xRLrWPugEBEK3UY2ZEsg3UU495nc5E+M+I=
+golang.org/x/crypto v0.0.0-20210920023735-84f357641f63 h1:kETrAMYZq6WVGPa8IIixL0CaEcIUNi+1WX7grUoi3y8=
+golang.org/x/crypto v0.0.0-20210920023735-84f357641f63/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
+golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
+golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE=
+golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU=
+golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc=
+golang.org/x/lint v0.0.0-20190930215403-16217165b5de/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc=
+golang.org/x/lint v0.0.0-20210508222113-6edffad5e616/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY=
+golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg=
+golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
+golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
+golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
+golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
+golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
+golang.org/x/net v0.0.0-20181114220301-adae6a3d119a/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
+golang.org/x/net v0.0.0-20190108225652-1e06a53dbb7e/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
+golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
+golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
+golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
+golang.org/x/net v0.0.0-20190613194153-d28f0bde5980/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
+golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
+golang.org/x/net v0.0.0-20200202094626-16171245cfb2/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
+golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
+golang.org/x/net v0.0.0-20200625001655-4c5254603344/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA=
+golang.org/x/net v0.0.0-20200822124328-c89045814202/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA=
+golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU=
+golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg=
+golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM=
+golang.org/x/net v0.0.0-20220531201128-c960675eff93/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c=
+golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
+golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
+golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
+golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
+golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
+golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
+golang.org/x/sync v0.0.0-20190227155943-e225da77a7e6/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
+golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
+golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
+golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
+golang.org/x/sync v0.0.0-20201207232520-09787c993a3a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
+golang.org/x/sync v0.0.0-20210220032951-036812b2e83c h1:5KslGYwFpkhGh+Q16bwMP3cOontH8FOep7tGV86Y7SQ=
+golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
+golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
+golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
+golang.org/x/sys v0.0.0-20181116152217-5ac8a444bdc5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
+golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
+golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20190422165155-953cdadca894/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20190502145724-3ef323f4f1fd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20191005200804-aed5e4c7ecf9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20200106162015-b016eb3dc98e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20200615200032-f1bc736245b1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20200625212154-ddb9806d33ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20210119212857-b64e53b001e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20210124154548-22da62e12c0c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20210403161142-5e06dd20ab57/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20210510120138-977fb7262007/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.0.0-20210603081109-ebe580a85c40/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw=
+golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
+golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
+golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
+golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk=
+golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
+golang.org/x/text v0.3.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
+golang.org/x/text v0.3.7 h1:olpwvP2KacW1ZWvsR7uQhoyTYvKAupfQrRGBFM352Gk=
+golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ=
+golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
+golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
+golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY=
+golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=
+golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q=
+golang.org/x/tools v0.0.0-20190531172133-b3315ee88b7d/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc=
+golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
+golang.org/x/tools v0.0.0-20200130002326-2f3ba24bd6e7/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
+golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=
+golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=
+golang.org/x/tools v0.1.2/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk=
+golang.org/x/tools v0.1.5/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk=
+golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
+golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
+golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
+golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
+google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM=
+google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4=
+google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc=
+google.golang.org/genproto v0.0.0-20190425155659-357c62f0e4bb/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE=
+google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc=
+google.golang.org/genproto v0.0.0-20200513103714-09dca8ec2884/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=
+google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo=
+google.golang.org/genproto v0.0.0-20210602131652-f16073e35f0c/go.mod h1:UODoCrxHCcBojKKwX1terBiRUaqAsFqJiF615XL43r0=
+google.golang.org/genproto v0.0.0-20220602131408-e326c6e8e9c8/go.mod h1:yKyY4AMRwFiC8yMMNaMi+RkCnjZJt9LoWuvhXjMs+To=
+google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c=
+google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38=
+google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg=
+google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY=
+google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk=
+google.golang.org/grpc v1.33.1/go.mod h1:fr5YgcSWrqhRRxogOsw7RzIpsmvOZ6IcH4kBYTpR3n0=
+google.golang.org/grpc v1.36.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU=
+google.golang.org/grpc v1.38.0/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM=
+google.golang.org/grpc v1.46.2/go.mod h1:vN9eftEi1UMyUsIF80+uQXhHjbXYbm0uXoFCACuMGWk=
+google.golang.org/grpc v1.47.0/go.mod h1:vN9eftEi1UMyUsIF80+uQXhHjbXYbm0uXoFCACuMGWk=
+google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8=
+google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0=
+google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM=
+google.golang.org/protobuf v1.20.1-0.20200309200217-e05f789c0967/go.mod h1:A+miEFZTKqfCUM6K7xSMQL9OKL/b6hQv+e19PK+JZNE=
+google.golang.org/protobuf v1.21.0/go.mod h1:47Nbq4nVaFHyn7ilMalzfO3qCViNmqZ2kzikPIcrTAo=
+google.golang.org/protobuf v1.22.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU=
+google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU=
+google.golang.org/protobuf v1.23.1-0.20200526195155-81db48ad09cc/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU=
+google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c=
+google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw=
+google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc=
+google.golang.org/protobuf v1.27.1/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc=
+google.golang.org/protobuf v1.28.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I=
+gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw=
+gopkg.in/alexcesaro/quotedprintable.v3 v3.0.0-20150716171945-2caba252f4dc/go.mod h1:m7x9LTH6d71AHyAX77c9yqWCCa3UKHcVEj9y7hAtKDk=
+gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
+gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
+gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
+gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q=
+gopkg.in/gomail.v2 v2.0.0-20160411212932-81ebce5c23df/go.mod h1:LRQQ+SO6ZHR7tOkpBDuZnXENFzX8qRjMDMyPD6BRkCw=
+gopkg.in/natefinch/lumberjack.v2 v2.2.1/go.mod h1:YD8tP3GAjkrDg1eZH7EGmyESg/lsYskCTPBJVb9jqSc=
+gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
+gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
+gopkg.in/yaml.v2 v2.2.3/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
+gopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
+gopkg.in/yaml.v2 v2.2.5/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
+gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
+gopkg.in/yaml.v2 v2.3.0/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
+gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ=
+gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
+gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
+gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
+gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
+gorm.io/driver/mysql v1.0.5/go.mod h1:N1OIhHAIhx5SunkMGqWbGFVeh4yTNWKmMo1GOAsohLI=
+gorm.io/gorm v1.21.3/go.mod h1:0HFTzE/SqkGTzK6TlDPPQbAYCluiVvhzoA1+aVyzenw=
+honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
+honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
+sigs.k8s.io/yaml v1.2.0/go.mod h1:yfXDCHCao9+ENCvLSE62v9VSji2MKu5jeNfTrofGhJc=

+ 203 - 0
biddingToLabel/main.go

@@ -0,0 +1,203 @@
+package main
+
+import (
+	"strings"
+	"sync"
+
+	"log"
+
+	"app.yhyue.com/moapp/jybase/common"
+	"app.yhyue.com/moapp/jybase/mongodb"
+)
+
+var (
+	Mgo  *mongodb.MongodbSim
+	Mgos *mongodb.MongodbSim
+)
+
+func init() {
+	Mgo = mongodb.NewMgoWithUser("172.17.189.140:27080,172.17.189.141:27081", "bidding", "root", "top@123", 50)
+	Mgos = mongodb.NewMgo("172.17.4.85:27080", "xzh", 50)
+}
+
+func main() {
+	sess := Mgo.GetMgoConn()
+	defer Mgo.DestoryMongoConn(sess)
+	q := map[string]interface{}{}
+	it := sess.DB("qfw").C("bidding").Find(&q).Sort("_id").Iter()
+	pool := make(chan bool, 10)
+	wg := &sync.WaitGroup{}
+	total := 0
+	for tmp := make(map[string]interface{}); it.Next(&tmp); total++ {
+		if total%1000 == 0 {
+			log.Println("cur index ", total, tmp["_id"])
+		}
+		pool <- true
+		wg.Add(1)
+		go func(tmp map[string]interface{}) {
+			defer func() {
+				<-pool
+				wg.Done()
+			}()
+			// data := map[string]interface{}{}
+			buyerclass := common.ObjToString(tmp["buyerclass"])
+			tag_subinformationMap := map[string]string{}
+			buyerclassMap := map[string]string{}
+			property_formMap := map[string]string{}
+			if buyerclass != "" {
+				buyerclassMap[buyerclass] = "1"
+			}
+			if tmp["tag_subinformation"] != nil {
+				tag_subinformation := common.ObjArrToStringArr(tmp["tag_subinformation"].([]interface{}))
+				for _, v := range tag_subinformation {
+					tag_subinformationMap[v] = "1"
+				}
+			}
+			if tmp["tag_subinformation_ai"] != nil {
+				tag_subinformation_ai := common.ObjArrToStringArr(tmp["tag_subinformation_ai"].([]interface{}))
+				for _, v := range tag_subinformation_ai {
+					tag_subinformationMap[v] = "1"
+				}
+			}
+			if tmp["property_form"] != nil {
+				property_form := common.ObjArrToStringArr(tmp["property_form"].([]interface{}))
+				for _, v := range property_form {
+					property_formMap[v] = "1"
+				}
+			}
+			buyer := common.ObjToString(tmp["buyer"])
+			agency := common.ObjToString(tmp["buyer"])
+			s_winner := common.ObjToString(tmp["s_winner"])
+			buyerclassMap1, tag_subinformationMap1, property_formMap1 := buyerclassMap, tag_subinformationMap, property_formMap
+			tag_subinformationMap2, property_formMap2 := tag_subinformationMap, property_formMap
+			getname(buyer, buyerclassMap1, tag_subinformationMap1, property_formMap1)
+			getname1(agency, tag_subinformationMap2, property_formMap2)
+			for _, v := range strings.Split(s_winner, ",") {
+				tag_subinformationMap3, property_formMap3 := tag_subinformationMap, property_formMap
+				getname1(v, tag_subinformationMap3, property_formMap3)
+			}
+		}(tmp)
+		tmp = make(map[string]interface{})
+	}
+	wg.Wait()
+	log.Println("is over ~ ", total)
+}
+
+func getname(name string, buyerclassMap, tag_subinformationMap, property_formMap map[string]string) {
+	if name != "" {
+		data := map[string]interface{}{}
+		bd, ok := Mgos.FindOne("label", map[string]interface{}{"name": name})
+		if ok && bd != nil && len(*bd) > 0 {
+			if (*bd)["buyerclass"] != nil {
+				if buyerclass1, oks := (*bd)["buyerclass"].(map[string]string); oks {
+					for k, _ := range buyerclass1 {
+						buyerclassMap[k] = "1"
+					}
+				} else if buyerclass1, oks := (*bd)["buyerclass"].(map[string]interface{}); oks {
+					for k, _ := range buyerclass1 {
+						buyerclassMap[k] = "1"
+					}
+				}
+			}
+			if (*bd)["tag_subinformation"] != nil {
+				if tag_subinformation1, oks := (*bd)["tag_subinformation"].(map[string]string); oks {
+					for k, _ := range tag_subinformation1 {
+						tag_subinformationMap[k] = "1"
+					}
+				} else if tag_subinformation1, oks := (*bd)["tag_subinformation"].(map[string]interface{}); oks {
+					for k, _ := range tag_subinformation1 {
+						tag_subinformationMap[k] = "1"
+					}
+				}
+			}
+			if (*bd)["property_form"] != nil {
+				if property_form1, oks := (*bd)["property_form"].(map[string]string); oks {
+					for k, _ := range property_form1 {
+						property_formMap[k] = "1"
+					}
+				} else if property_form1, oks := (*bd)["property_form"].(map[string]interface{}); oks {
+					for k, _ := range property_form1 {
+						property_formMap[k] = "1"
+					}
+				}
+			}
+			if len(buyerclassMap) > 0 {
+				data["buyerclass"] = buyerclassMap
+			}
+			if len(tag_subinformationMap) > 0 {
+				data["tag_subinformation"] = tag_subinformationMap
+			}
+			if len(property_formMap) > 0 {
+				data["property_form"] = property_formMap
+			}
+			if len(data) > 0 {
+				Mgos.Update("label", map[string]interface{}{"name": name}, map[string]interface{}{"$set": data}, false, false)
+			}
+		} else {
+			data["name"] = name
+			if len(buyerclassMap) > 0 {
+				data["buyerclass"] = buyerclassMap
+			}
+			if len(tag_subinformationMap) > 0 {
+				data["tag_subinformation"] = tag_subinformationMap
+			}
+			if len(property_formMap) > 0 {
+				data["property_form"] = property_formMap
+			}
+			if len(data) > 0 {
+				Mgos.Save("label", data)
+			}
+		}
+	}
+}
+
+func getname1(name string, tag_subinformationMap, property_formMap map[string]string) {
+	if name != "" {
+		data := map[string]interface{}{}
+		bd, ok := Mgos.FindOne("label", map[string]interface{}{"name": name})
+		if ok && bd != nil && len(*bd) > 0 {
+			if (*bd)["tag_subinformation"] != nil {
+				if tag_subinformation1, oks := (*bd)["tag_subinformation"].(map[string]string); oks {
+					for k, _ := range tag_subinformation1 {
+						tag_subinformationMap[k] = "1"
+					}
+				} else if tag_subinformation1, oks := (*bd)["tag_subinformation"].(map[string]interface{}); oks {
+					for k, _ := range tag_subinformation1 {
+						tag_subinformationMap[k] = "1"
+					}
+				}
+			}
+			if (*bd)["property_form"] != nil {
+				if property_form1, oks := (*bd)["property_form"].(map[string]string); oks {
+					for k, _ := range property_form1 {
+						property_formMap[k] = "1"
+					}
+				} else if property_form1, oks := (*bd)["property_form"].(map[string]interface{}); oks {
+					for k, _ := range property_form1 {
+						property_formMap[k] = "1"
+					}
+				}
+			}
+			if len(tag_subinformationMap) > 0 {
+				data["tag_subinformation"] = tag_subinformationMap
+			}
+			if len(property_formMap) > 0 {
+				data["property_form"] = property_formMap
+			}
+			if len(data) > 0 {
+				Mgos.Update("label", map[string]interface{}{"name": name}, map[string]interface{}{"$set": data}, false, false)
+			}
+		} else {
+			data["name"] = name
+			if len(tag_subinformationMap) > 0 {
+				data["tag_subinformation"] = tag_subinformationMap
+			}
+			if len(property_formMap) > 0 {
+				data["property_form"] = property_formMap
+			}
+			if len(data) > 0 {
+				Mgos.Save("label", data)
+			}
+		}
+	}
+}

+ 124 - 157
ent_legal/legal_full.go

@@ -4,29 +4,34 @@ import (
 	"context"
 	"data_ent_wuye/ent_contact"
 	"data_ent_wuye/ent_util"
-	"encoding/json"
-	"fmt"
 	"log"
 	"regexp"
 	"strconv"
 	"strings"
 	"sync"
+	"time"
+
+	"app.yhyue.com/moapp/jybase/date"
 
 	"github.com/google/uuid"
 	qu "jygit.jydev.jianyu360.cn/data_processing/common_utils"
 )
 
-var RegClean = regexp.MustCompile("[^ -~\u2E80-\u2FDF\u3040-\u318F\u31A0-\u31BF\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FFF\uA960-\uA97F\uAC00-\uD7FF\u3002\u00a5\uff1f\uff01\uff0c\u3001\uff1b\uff1a\u201c\u201d\u2018\u2019\uff08\uff09\u300a\u300b\u3008\u3009\u3010\u3011\u300e\u300f\u300c\u300d\ufe43\ufe44\u3014\u3015\u2026\u2014\uff5e\ufe4f\uffe5\u00a5]+")
+var (
+	RegClean = regexp.MustCompile("[^ -~\u2E80-\u2FDF\u3040-\u318F\u31A0-\u31BF\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FFF\uA960-\uA97F\uAC00-\uD7FF\u3002\u00a5\uff1f\uff01\uff0c\u3001\uff1b\uff1a\u201c\u201d\u2018\u2019\uff08\uff09\u300a\u300b\u3008\u3009\u3010\u3011\u300e\u300f\u300c\u300d\ufe43\ufe44\u3014\u3015\u2026\u2014\uff5e\ufe4f\uffe5\u00a5]+")
+	Ch       = make(chan map[string]any, 500)
+	ChEnd    = make(chan bool)
+)
 
 func LegalFull() {
 	//从现有主题库...直接获取
-	getZhuTi()
+	// getZhuTi()
 	//凭安全量企业···查到数据告知通讯录
-	// getPingAn()
+	getPingAn()
 	//特企
-	// getTQ()
+	getTQ()
 	//马克信息···
-	// getMK()
+	getMK()
 }
 
 func getZhuTi() {
@@ -66,20 +71,30 @@ L:
 					district_code := qu.ObjToString(v["district_code"])
 					company_label, company_label_str := []uint64{uint64(0)}, ""
 					qyxy_info := GetQyxyInfo(company_name)
-					// if qyxy_info != nil {
-					// 	company_label, company_label_str = getCompanyLabel(company_name)
-					// }
+					if qyxy_info != nil {
+						company_label, company_label_str = getCompanyLabel(company_name)
+					}
 					company_code := qu.ObjToString(qyxy_info["company_code"])
 					credit_no := qu.ObjToString(qyxy_info["credit_no"])
 					org_code := qu.ObjToString(qyxy_info["org_code"])
 					tax_code := qu.ObjToString(qyxy_info["tax_code"])
-					establish_date := qu.Int64All(qyxy_info["establish_date"])
+					establish_date := qu.ObjToString(qyxy_info["establish_date"])
+					establish_dates := int64(0)
+					if establish_date != "" {
+						establish_date1, _ := time.ParseInLocation(date.Date_Short_Layout, establish_date, time.Local)
+						establish_dates = establish_date1.Unix()
+					}
+					issue_date := qu.ObjToString(qyxy_info["issue_date"])
+					issue_dates := int64(0)
+					if issue_date != "" {
+						issue_date1, _ := time.ParseInLocation(date.Date_Short_Layout, issue_date, time.Local)
+						issue_dates = issue_date1.Unix()
+					}
 					legal_person := qu.ObjToString(qyxy_info["legal_person"])
 					legal_person_caption := qu.ObjToString(qyxy_info["legal_person_caption"])
 					company_status := qu.ObjToString(qyxy_info["company_status"])
 					company_type := qu.ObjToString(qyxy_info["company_type"])
 					authority := qu.ObjToString(qyxy_info["authority"])
-					issue_date := qu.Int64All(qyxy_info["issue_date"])
 					operation_startdate := qu.ObjToString(qyxy_info["operation_startdate"])
 					operation_enddate := qu.ObjToString(qyxy_info["operation_enddate"])
 					capital := qu.ObjToString(qyxy_info["capital"])
@@ -95,7 +110,7 @@ L:
 					company_phone := qu.ObjToString(qyxy_info["company_phone"])
 					company_email := qu.ObjToString(qyxy_info["company_email"])
 					query := `INSERT INTO information.ent_info (id, company_id, company_name, company_label, company_code, credit_no, org_code, tax_code, establish_date, legal_person, legal_person_caption, company_status, company_type, authority, issue_date, operation_startdate, operation_enddate, capital, company_address, business_scope, comeintime, updatetime, legal_person_type, real_capital, en_name, area_code, city_code, district_code, list_code, employee_no, website, company_phone, company_email) VALUES(?, ?, ?, bitmapBuild(?), ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`
-					err := ent_util.ClickHouseConn.Exec(context.Background(), query, id, company_id, company_name, company_label, company_code, credit_no, org_code, tax_code, establish_date, legal_person, legal_person_caption, company_status, company_type, authority, issue_date, operation_startdate, operation_enddate, capital, company_address, business_scope, comeintime, updatetime, legal_person_type, real_capital, en_name, area_code, city_code, district_code, list_code, employee_no, website, company_phone, company_email)
+					err := ent_util.ClickHouseConn.Exec(context.Background(), query, id, company_id, company_name, company_label, company_code, credit_no, org_code, tax_code, establish_dates, legal_person, legal_person_caption, company_status, company_type, authority, issue_dates, operation_startdate, operation_enddate, capital, company_address, business_scope, comeintime, updatetime, legal_person_type, real_capital, en_name, area_code, city_code, district_code, list_code, employee_no, website, company_phone, company_email)
 					if err != nil {
 						log.Println(err, "clickhouse存入失败", company_name)
 					} else {
@@ -112,13 +127,13 @@ L:
 							"credit_no":            credit_no,
 							"org_code":             org_code,
 							"tax_code":             tax_code,
-							"establish_date":       establish_date,
+							"establish_date":       establish_dates,
 							"legal_person":         legal_person,
 							"legal_person_caption": legal_person_caption,
 							"company_status":       company_status,
 							"company_type":         company_type,
 							"authority":            authority,
-							"issue_date":           issue_date,
+							"issue_date":           issue_dates,
 							"operation_startdate":  operation_startdate,
 							"operation_enddate":    operation_enddate,
 							"capital":              capital,
@@ -134,12 +149,7 @@ L:
 							"company_phone":        company_phone,
 							"company_email":        company_email,
 						}
-						ok := ent_util.EsClinet.Save("ent_info", "", data)
-						if ok {
-							log.Println("es存入成功")
-						} else {
-							log.Println("es存入失败!!!!", company_name)
-						}
+						Ch <- data
 					}
 				}(v)
 			}
@@ -152,6 +162,7 @@ L:
 			log.Println("cur idx ", total)
 		}
 	}
+	ChEnd <- true
 	log.Println("主体库全量任务结束")
 }
 
@@ -159,7 +170,14 @@ func getPingAn() {
 	sess := ent_util.QyxyMgo.GetMgoConn()
 	defer ent_util.QyxyMgo.DestoryMongoConn(sess)
 	q := map[string]interface{}{}
-	it := sess.DB("mixdata").C("qyxy_std").Find(&q).Sort("_id").Iter()
+	it := sess.DB("mixdata").C("qyxy_std").Find(&q).Select(map[string]interface{}{
+		"_id": 1, "use_flag": 1, "is_history": 1, "company_type": 1, "company_name": 1, "company_area": 1,
+		"company_city": 1, "company_district": 1, "company_address": 1, "company_code": 1, "credit_no": 1,
+		"org_code": 1, "tax_code": 1, "establish_date": 1, "legal_person": 1, "legal_person_caption": 1, "company_status": 1,
+		"authority": 1, "issue_date": 1, "operation_startdate": 1, "operation_enddate": 1, "capital": 1, "business_scope": 1,
+		"comeintime": 1, "updatetime": 1, "legal_person_type": 1, "real_capital": 1, "en_name": 1, "list_code": 1,
+		"employee_no": 1, "website": 1, "company_phone": 1, "company_email": 1,
+	}).Iter()
 	pool := make(chan bool, 10)
 	wg := &sync.WaitGroup{}
 	total := 0
@@ -181,8 +199,8 @@ func getPingAn() {
 			if use_flag > 5 || is_history != 0 || company_name == "" || company_type == "个体工商户" {
 				return
 			}
-			query := fmt.Sprintf(`SELECT id FROM information.ent_info WHERE company_name = '%s'`, qu.ObjToString(tmp["company_name"]))
-			rows, err := ent_util.ClickHouseConn.Query(context.Background(), query)
+			query := `SELECT id FROM information.ent_info WHERE company_name = ?`
+			rows, err := ent_util.ClickHouseConn.Query(context.Background(), query, company_name)
 			if err != nil {
 				log.Println(err)
 			}
@@ -203,8 +221,7 @@ func getPingAn() {
 				city := qu.ObjToString(tmp["company_city"])
 				district := qu.ObjToString(tmp["company_district"])
 				area_code, city_code, district_code := ent_util.CalculateRegionCode(area, city, district)
-				company_name := qu.ObjToString(tmp["company_name"])
-				company_id := ent_util.BsonTOStringId(tmp["_id"])
+				company_id := qu.ObjToString(tmp["_id"])
 				company_address := qu.ObjToString(tmp["company_address"])
 				company_label, company_label_str := getCompanyLabel(company_name)
 				company_code := qu.ObjToString(tmp["company_code"])
@@ -215,7 +232,6 @@ func getPingAn() {
 				legal_person := qu.ObjToString(tmp["legal_person"])
 				legal_person_caption := qu.ObjToString(tmp["legal_person_caption"])
 				company_status := qu.ObjToString(tmp["company_status"])
-				company_type := qu.ObjToString(tmp["company_type"])
 				authority := qu.ObjToString(tmp["authority"])
 				issue_date := qu.Int64All(tmp["issue_date"])
 				operation_startdate := qu.ObjToString(tmp["operation_startdate"])
@@ -272,7 +288,7 @@ func getPingAn() {
 						"company_phone":        company_phone,
 						"company_email":        company_email,
 					}
-					ent_util.EsClinet.Save("ent_info", "", data)
+					Ch <- data
 					ent_contact.InjectContactPingAnInfo(id, tmp)
 				}
 			}
@@ -280,7 +296,7 @@ func getPingAn() {
 		tmp = make(map[string]interface{})
 	}
 	wg.Wait()
-	log.Println("is over ~ ", total)
+	log.Println("pingan is over ~ ", total)
 }
 
 func getTQ() {
@@ -289,7 +305,14 @@ func getTQ() {
 		sess := ent_util.SpiMgo.GetMgoConn()
 		defer ent_util.SpiMgo.DestoryMongoConn(sess)
 		q := map[string]interface{}{}
-		it := sess.DB("mixdata").C(db).Find(&q).Sort("_id").Iter()
+		it := sess.DB("mixdata").C(db).Find(&q).Select(map[string]interface{}{
+			"_id": 1, "use_flag": 1, "is_history": 1, "company_type": 1, "company_name": 1, "company_area": 1,
+			"company_city": 1, "company_district": 1, "company_address": 1, "company_code": 1, "credit_no": 1,
+			"org_code": 1, "tax_code": 1, "establish_date": 1, "legal_person": 1, "legal_person_caption": 1, "company_status": 1,
+			"authority": 1, "issue_date": 1, "operation_startdate": 1, "operation_enddate": 1, "capital": 1, "business_scope": 1,
+			"comeintime": 1, "updatetime": 1, "legal_person_type": 1, "real_capital": 1, "en_name": 1, "list_code": 1,
+			"employee_no": 1, "website": 1, "company_phone": 1, "company_email": 1,
+		}).Iter()
 		pool := make(chan bool, 10)
 		wg := &sync.WaitGroup{}
 		total := 0
@@ -309,8 +332,8 @@ func getTQ() {
 				if use_flag > 5 || company_name == "" {
 					return
 				}
-				query := fmt.Sprintf(`SELECT id FROM information.ent_info WHERE company_name = '%s'`, qu.ObjToString(tmp["company_name"]))
-				rows, err := ent_util.ClickHouseConn.Query(context.Background(), query)
+				query := `SELECT id FROM information.ent_info WHERE company_name = ?`
+				rows, err := ent_util.ClickHouseConn.Query(context.Background(), query, company_name)
 				if err != nil {
 					log.Println(err)
 				}
@@ -331,8 +354,7 @@ func getTQ() {
 					city := qu.ObjToString(tmp["company_city"])
 					district := qu.ObjToString(tmp["company_district"])
 					area_code, city_code, district_code := ent_util.CalculateRegionCode(area, city, district)
-					company_name := qu.ObjToString(tmp["company_name"])
-					company_id := ent_util.BsonTOStringId(tmp["_id"])
+					company_id := qu.ObjToString(tmp["_id"])
 					company_address := qu.ObjToString(tmp["company_address"])
 					company_label, company_label_str := getCompanyLabel(company_name)
 					company_code := qu.ObjToString(tmp["company_code"])
@@ -400,7 +422,7 @@ func getTQ() {
 							"company_phone":        company_phone,
 							"company_email":        company_email,
 						}
-						ent_util.EsClinet.Save("ent_info", "", data)
+						Ch <- data
 						ent_contact.InjectContactPingAnInfo(id, tmp)
 					}
 				}
@@ -408,7 +430,7 @@ func getTQ() {
 			tmp = make(map[string]interface{})
 		}
 		wg.Wait()
-		log.Println("is over ~ ", total)
+		log.Println("teqi is over ~ ", total)
 	}
 }
 
@@ -435,8 +457,8 @@ func getMK() {
 			if company_name == "" {
 				return
 			}
-			query := fmt.Sprintf(`SELECT id FROM information.ent_info WHERE company_name = '%s'`, qu.ObjToString(tmp["company_name"]))
-			rows, err := ent_util.ClickHouseConn.Query(context.Background(), query)
+			query := `SELECT id FROM information.ent_info WHERE company_name = ?`
+			rows, err := ent_util.ClickHouseConn.Query(context.Background(), query, company_name)
 			if err != nil {
 				log.Println(err)
 			}
@@ -457,11 +479,7 @@ func getMK() {
 				city := qu.ObjToString(tmp["company_city"])
 				district := qu.ObjToString(tmp["company_district"])
 				area_code, city_code, district_code := ent_util.CalculateRegionCode(area, city, district)
-				company_name := qu.ObjToString(tmp["company_name"])
-				if company_name == "" {
-					return
-				}
-				company_id := ent_util.BsonTOStringId(tmp["_id"])
+				company_id := qu.ObjToString(tmp["_id"])
 				company_address := qu.ObjToString(tmp["company_address"])
 				company_label, company_label_str := getCompanyLabel(company_name)
 				company_code := qu.ObjToString(tmp["company_code"])
@@ -529,7 +547,7 @@ func getMK() {
 						"company_phone":        company_phone,
 						"company_email":        company_email,
 					}
-					ent_util.EsClinet.Save("ent_info", "", data)
+					Ch <- data
 					ent_contact.InjectContactPingAnInfo(id, tmp)
 				}
 			}
@@ -537,142 +555,63 @@ func getMK() {
 		tmp = make(map[string]interface{})
 	}
 	wg.Wait()
-	log.Println("is over ~ ", total)
+	log.Println("make is over ~ ", total)
 }
 
 func getCompanyLabel(name string) ([]uint64, string) {
 	name = strings.TrimSpace(RegClean.ReplaceAllString(name, ""))
-	sql := `{
-	  "query": {
-	    "bool": {
-	      "should": [
-	        {
-	          "term": {
-	            "buyer": "` + name + `"
-	          }
-	        },
-	        {
-	          "term": {
-	            "s_winner": "` + name + `"
-	          }
-	        },
-	        {
-	          "term": {
-	            "agency": "` + name + `"
-	          }
-	        }
-	      ]
-	    }
-	  },
-	  "aggs": {
-	    "total_sum_a": {
-	      "terms": {
-	        "field": "tag_subinformation"
-	      }
-	    },
-	    "total_sum_b": {
-	      "terms": {
-	        "field": "tag_subinformation_ai"
-	      }
-	    },
-	    "total_sum_c": {
-	      "terms": {
-	        "field": "property_form"
-	      }
-	    }
-	  },
-	  "size": 0
-	}`
-	sql2 := `{
-	  "query": {
-	    "bool": {
-	      "must": [
-	        {
-	          "term": {
-	            "buyer": "` + name + `"
-	          }
-	        }
-	      ]
-	    }
-	  },
-	  "aggs": {
-	    "total_sum_a": {
-	      "terms": {
-	        "field": "buyerclass"
-	      }
-	    }
-	  },
-	  "size": 0
-	}`
-	subMap, propertyFormArr, buyerClassArr, bitMapCodeArr, bitMapStrArr := map[string]bool{}, []string{}, []string{}, []uint64{}, []string{}
-	res, _, _ := ent_util.Es.GetAggs("bidding", "bidding", sql)
-	if res != nil {
-		ass, _ := res.Children("total_sum_a")
-		as, _ := ass.Aggregations["buckets"].MarshalJSON()
-		if len(as) > 0 {
-			buckets := []map[string]interface{}{}
-			json.Unmarshal(as, &buckets)
-			if len(buckets) > 0 {
-				for _, v := range buckets {
-					subMap[qu.ObjToString(v["key"])] = true //tag_subinformation
+	buyerclassArr, tag_subinformationArr, property_formArr := []string{}, []string{}, []string{}
+	bitMapCodeArr, bitMapStrArr := []uint64{}, []string{}
+	data := ent_util.ExtMgo.FindOne("label", map[string]interface{}{"name": name})
+	if data != nil && len(data) > 0 {
+		if data["buyerclass"] != nil {
+			if buyerclass1, oks := data["buyerclass"].(map[string]string); oks {
+				for k, _ := range buyerclass1 {
+					buyerclassArr = append(buyerclassArr, k)
 				}
-			}
-		}
-		bss, _ := res.Children("total_sum_b")
-		bs, _ := bss.Aggregations["buckets"].MarshalJSON()
-		if len(bs) > 0 {
-			buckets := []map[string]interface{}{}
-			json.Unmarshal(bs, &buckets)
-			if len(buckets) > 0 {
-				for _, v := range buckets {
-					subMap[qu.ObjToString(v["key"])] = true //tag_subinformation_ai
+			} else if buyerclass1, oks := data["buyerclass"].(map[string]interface{}); oks {
+				for k, _ := range buyerclass1 {
+					buyerclassArr = append(buyerclassArr, k)
 				}
 			}
 		}
-		css, _ := res.Children("total_sum_c")
-		cs, _ := css.Aggregations["buckets"].MarshalJSON()
-		if len(cs) > 0 {
-			buckets := []map[string]interface{}{}
-			json.Unmarshal(cs, &buckets)
-			if len(buckets) > 0 {
-				for _, v := range buckets {
-					propertyFormArr = append(propertyFormArr, qu.ObjToString(v["key"])) //property_form
+		if data["tag_subinformation"] != nil {
+			if tag_subinformation1, oks := data["tag_subinformation"].(map[string]string); oks {
+				for k, _ := range tag_subinformation1 {
+					tag_subinformationArr = append(tag_subinformationArr, k)
+				}
+			} else if tag_subinformation1, oks := data["tag_subinformation"].(map[string]interface{}); oks {
+				for k, _ := range tag_subinformation1 {
+					tag_subinformationArr = append(tag_subinformationArr, k)
 				}
 			}
 		}
-	} else {
-		log.Println("sql", sql)
-	}
-	ress, _, _ := ent_util.Es.GetAggs("bidding", "bidding", sql2)
-	if ress != nil {
-		css, _ := res.Children("total_sum_a")
-		cs, _ := css.Aggregations["buckets"].MarshalJSON()
-		if len(cs) > 0 {
-			buckets := []map[string]interface{}{}
-			json.Unmarshal(cs, &buckets)
-			if len(buckets) > 0 {
-				for _, v := range buckets {
-					buyerClassArr = append(buyerClassArr, qu.ObjToString(v["key"])) //buyerclass
+		if data["property_form"] != nil {
+			if property_form1, oks := data["property_form"].(map[string]string); oks {
+				for k, _ := range property_form1 {
+					property_formArr = append(property_formArr, k)
+				}
+			} else if property_form1, oks := data["property_form"].(map[string]interface{}); oks {
+				for k, _ := range property_form1 {
+					property_formArr = append(property_formArr, k)
 				}
 			}
 		}
-	} else {
-		log.Println("sql2", sql2)
 	}
-	if len(subMap) > 0 {
-		for s, _ := range subMap {
+	if len(tag_subinformationArr) > 0 {
+		for _, s := range tag_subinformationArr {
 			bitMapStrArr = append(bitMapStrArr, strconv.Itoa(ent_util.BitMapCode2[s]))
 			bitMapCodeArr = append(bitMapCodeArr, uint64(ent_util.BitMapCode2[s]))
 		}
 	}
-	if len(propertyFormArr) > 0 {
-		for _, p := range propertyFormArr {
+	if len(property_formArr) > 0 {
+		for _, p := range property_formArr {
 			bitMapStrArr = append(bitMapStrArr, strconv.Itoa(ent_util.BitMapCode3[p]))
 			bitMapCodeArr = append(bitMapCodeArr, uint64(ent_util.BitMapCode3[p]))
 		}
 	}
-	if len(buyerClassArr) > 0 {
-		for _, b := range propertyFormArr {
+	if len(buyerclassArr) > 0 {
+		for _, b := range buyerclassArr {
 			bitMapStrArr = append(bitMapStrArr, strconv.Itoa(ent_util.BitMapCode1[b]))
 			bitMapCodeArr = append(bitMapCodeArr, uint64(ent_util.BitMapCode1[b]))
 		}
@@ -682,3 +621,31 @@ func getCompanyLabel(name string) ([]uint64, string) {
 	}
 	return bitMapCodeArr, strings.Join(bitMapStrArr, ",")
 }
+
+func Save() {
+	arr := []map[string]interface{}{}
+L:
+	for {
+		select {
+		case data := <-Ch:
+			arr = append(arr, data)
+			if len(arr) > 99 {
+				func(ao *[]map[string]interface{}) {
+					ent_util.EsClinet.BulkSave("ent_info", "", ao, false)
+				}(&arr)
+				arr = []map[string]interface{}{}
+			}
+		default:
+			select {
+			case <-ChEnd:
+				break L
+			case <-time.After(time.Millisecond * 10):
+			}
+		}
+	}
+	if len(arr) > 0 {
+		func(ao *[]map[string]interface{}) {
+			ent_util.EsClinet.BulkSave("ent_info", "", ao, false)
+		}(&arr)
+	}
+}

+ 3 - 55
main.go

@@ -24,10 +24,12 @@ func main() {
 	flag.Parse()
 	if *mode == 1 {
 		//全量
+		go ent_legal.Save()
 		log.Println("全量任务")
+		// ent_contact.InjectContactTidbInfo()
 		ent_legal.LegalFull()
 		// projectT()
-
+		select {}
 	} else {
 		//增量
 		a := cron.New()
@@ -104,57 +106,3 @@ func test2() {
 		}
 	}
 }
-
-func projectT() {
-	query := `SELECT project_id,project_name,business_type,property_form,subclass,area,city,district,buyer,create_time FROM information.transaction_info`
-	rows, err := ent_util.ClickHouseConn.Query(context.Background(), query)
-	if err != nil {
-		log.Println(err)
-	}
-	count := 0
-	var (
-		project_id    string
-		project_name  string
-		business_type string
-		property_form []string
-		subclass      []string
-		area          string
-		city          string
-		district      string
-		create_time   int64
-		buyer         string
-	)
-	for rows.Next() {
-		if err := rows.Scan(
-			&project_id,
-			&project_name,
-			&business_type,
-			&property_form,
-			&subclass,
-			&area,
-			&city,
-			&district,
-			&buyer,
-			&create_time,
-		); err != nil {
-			log.Println(err)
-		} else {
-			ent_util.EsClinet.UpdateNewDoc("transaction_info", "", map[string]interface{}{
-				"_id":           project_id,
-				"project_name":  project_name,
-				"business_type": business_type,
-				"property_form": property_form,
-				"subclass":      subclass,
-				"area":          area,
-				"city":          city,
-				"district":      district,
-				"create_time":   create_time,
-				"buyer":         buyer,
-				"winner":        buyer,
-				"agency":        buyer,
-			})
-		}
-		count++
-		log.Println("count ", count)
-	}
-}