jianghan 4 luni în urmă
părinte
comite
37cb256171

+ 31 - 0
exportData/go.mod

@@ -0,0 +1,31 @@
+module exportdata
+
+go 1.23.6
+
+require (
+	app.yhyue.com/moapp/jybase v0.0.0-20250328063909-ff0268005add
+	github.com/shopspring/decimal v1.4.0
+	github.com/tealeg/xlsx v1.0.5
+)
+
+require (
+	github.com/fsnotify/fsnotify v1.7.0 // indirect
+	github.com/go-stack/stack v1.8.0 // indirect
+	github.com/gogf/gf/v2 v2.7.0 // indirect
+	github.com/golang/snappy v0.0.1 // indirect
+	github.com/klauspost/compress v1.13.6 // indirect
+	github.com/kr/text v0.2.0 // 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
+	go.opentelemetry.io/otel v1.14.0 // indirect
+	go.opentelemetry.io/otel/trace v1.14.0 // indirect
+	golang.org/x/crypto v0.14.0 // indirect
+	golang.org/x/sync v0.11.0 // indirect
+	golang.org/x/sys v0.13.0 // indirect
+	golang.org/x/text v0.22.0 // indirect
+	gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c // indirect
+)

+ 83 - 0
exportData/go.sum

@@ -0,0 +1,83 @@
+app.yhyue.com/moapp/jybase v0.0.0-20250328063909-ff0268005add h1:4T3B/MlZKdv4W6yIeLiDNgTJbj/g0FRgSwvho2Otxvw=
+app.yhyue.com/moapp/jybase v0.0.0-20250328063909-ff0268005add/go.mod h1:OEtMbsn7wY/7MLgV7yDUpVDKExUoj3B8h+4w4ZckJQQ=
+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/fsnotify/fsnotify v1.7.0 h1:8JEhPFa5W2WU7YfeZzPNqzMP6Lwt7L2715Ggo0nosvA=
+github.com/fsnotify/fsnotify v1.7.0/go.mod h1:40Bi/Hjc2AVfZrqy+aj+yEI+/bRxZnMJyTJwOpGvigM=
+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/gogf/gf/v2 v2.7.0 h1:CjxhbMiE7oqf6K8ZtGuKt3dQEwK4vL6LhiI+dI7tJGU=
+github.com/gogf/gf/v2 v2.7.0/go.mod h1:Qu8nimKt9aupJQcdUL85tWF4Mfxocz97zUt8UC4abVI=
+github.com/golang/snappy v0.0.1 h1:Qgr9rKW7uDUkrbSmQeiDsGa8SjGyCOGtuasMWwvp2P4=
+github.com/golang/snappy v0.0.1/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q=
+github.com/google/go-cmp v0.5.2 h1:X2ev0eStA3AbceY54o37/0PQ/UWqKEiiO2dKL5OPaFM=
+github.com/google/go-cmp v0.5.2/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
+github.com/klauspost/compress v1.13.6 h1:P76CopJELS0TiO2mebmnzgWaajssP/EszplttgQxcgc=
+github.com/klauspost/compress v1.13.6/go.mod h1:/3/Vjq9QcHkK5uEr5lBEmyoZ1iFhe47etQ6QUkpK6sk=
+github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo=
+github.com/kr/pretty v0.2.1 h1:Fmg33tUaq4/8ym9TJN1x7sLJnHVwhP33CNkpYV/7rwI=
+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 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY=
+github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE=
+github.com/montanaflynn/stats v0.0.0-20171201202039-1bf9dbcd8cbe/go.mod h1:wL8QJuTMNUDYhXwkmfOly8iTdp5TEcJFWZD2D7SIkUc=
+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/shopspring/decimal v1.4.0 h1:bxl37RwXBklmTi0C79JfXCEBD1cqqHt0bbgBAGFp81k=
+github.com/shopspring/decimal v1.4.0/go.mod h1:gawqmDU56v4yIKSwfBSFip1HdCCXN8/+DMd9qYNcwME=
+github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
+github.com/stretchr/testify v1.6.1 h1:hDPOHmpOpP40lSULcqw7IrRb/u7w6RpDC9399XyoNd0=
+github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
+github.com/tealeg/xlsx v1.0.5 h1:+f8oFmvY8Gw1iUXzPk+kz+4GpbDZPK1FhPiQRd+ypgE=
+github.com/tealeg/xlsx v1.0.5/go.mod h1:btRS8dz54TDnvKNosuAqxrM1QgN1udgk9O34bDCnORM=
+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/youmark/pkcs8 v0.0.0-20181117223130-1be2e3e5546d h1:splanxYIlg+5LfHAM6xpdFEAYOk8iySO56hMFq6uLyA=
+github.com/youmark/pkcs8 v0.0.0-20181117223130-1be2e3e5546d/go.mod h1:rHwXgn7JulP+udvsHwJoVG1YGAP6VLg4y9I5dyZdqmA=
+go.mongodb.org/mongo-driver v1.9.1 h1:m078y9v7sBItkt1aaoe2YlvWEXcD263e1a4E1fBrJ1c=
+go.mongodb.org/mongo-driver v1.9.1/go.mod h1:0sQWfOeY63QTntERDJJ/0SuKK0T1uVSgKCuAROlKEPY=
+go.opentelemetry.io/otel v1.14.0 h1:/79Huy8wbf5DnIPhemGB+zEPVwnN6fuQybr/SRXa6hM=
+go.opentelemetry.io/otel v1.14.0/go.mod h1:o4buv+dJzx8rohcUeRmWUZhqupFvzWis188WlggnNeU=
+go.opentelemetry.io/otel/trace v1.14.0 h1:wp2Mmvj41tDsyAJXiWDWpfNsOiIyd38fy85pyKcFq/M=
+go.opentelemetry.io/otel/trace v1.14.0/go.mod h1:8avnQLK+CG77yNLUae4ea2JDQ6iT+gozhnZjy/rw9G8=
+golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
+golang.org/x/crypto v0.0.0-20201216223049-8b5274cf687f/go.mod h1:jdWPYTVW3xRLrWPugEBEK3UY2ZEsg3UU495nc5E+M+I=
+golang.org/x/crypto v0.14.0 h1:wBqGXzWJW6m1XrIKlAH0Hs1JJ7+9KBwnIO8v66Q9cHc=
+golang.org/x/crypto v0.14.0/go.mod h1:MVFd36DqK4CsrnJYDkBA3VC4m2GkXAM0PvzMCn4JQf4=
+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/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.11.0 h1:GGz8+XQP4FvTTrjZPzNKTMFtSXH80RAzG+5ghFPgK9w=
+golang.org/x/sync v0.11.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk=
+golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
+golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.13.0 h1:Af8nKPmuFypiUBjVoU9V20FiaFXOcuZI21p0ycVYYGE=
+golang.org/x/sys v0.13.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw=
+golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
+golang.org/x/text v0.3.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
+golang.org/x/text v0.22.0 h1:bofq7m3/HAFvbF51jz3Q9wLg3jkvSPuiZu/pD1XwgtM=
+golang.org/x/text v0.22.0/go.mod h1:YRoo4H8PVmsu+E3Ou7cqLVH8oXWIHVoX0jqUWALQhfY=
+golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
+golang.org/x/tools v0.0.0-20190531172133-b3315ee88b7d/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc=
+golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543 h1:E7g+9GITq07hpfrRu66IVDexMakfv52eLZ2CXBWiKr4=
+golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
+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 h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk=
+gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q=
+gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c h1:dUUwHk2QECo/6vqA44rthZ8ie2QXMNeKRTHCNY2nXvo=
+gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=

+ 62 - 59
exportData/main.go

@@ -1,11 +1,14 @@
 package main
 
 import (
+	"app.yhyue.com/moapp/jybase/common"
+	"app.yhyue.com/moapp/jybase/date"
+	"app.yhyue.com/moapp/jybase/encrypt"
+	"app.yhyue.com/moapp/jybase/mongodb"
 	"fmt"
 	"github.com/shopspring/decimal"
 	"github.com/tealeg/xlsx"
-	"mongodb"
-	"qfw/util"
+	"log"
 	"strings"
 )
 
@@ -18,26 +21,26 @@ var (
 	Fields             map[string]interface{}
 	FieldsArr          []string
 	FiedlsPurchase     []string
-	SE                 = util.SimpleEncrypt{Key: "topJYBX2019"}
+	SE                 = encrypt.SimpleEncrypt{Key: "topJYBX2019"}
 )
 
 func init() {
-	util.ReadConfig(&Sysconfig)
+	common.ReadConfig(&Sysconfig)
 	Mgo = &mongodb.MongodbSim{
 		MongodbAddr: Sysconfig["mgoAddr"].(string),
-		Size:        util.IntAllDef(Sysconfig["mgoSize"], 5),
+		Size:        common.IntAllDef(Sysconfig["mgoSize"], 5),
 		DbName:      Sysconfig["mgoDbName"].(string),
 	}
 	Mgo.InitPool()
 	Dbname = Sysconfig["mgoDbName"].(string)
 	DbColl = Sysconfig["mgoColl"].(string)
 
-	ExportType = util.IntAll(Sysconfig["exportType"])
-	IsMark = util.IntAll(Sysconfig["isMark"])
+	ExportType = common.IntAll(Sysconfig["exportType"])
+	IsMark = common.IntAll(Sysconfig["isMark"])
 	Search = Sysconfig["search"].(map[string]interface{})
-	FieldsArr = util.ObjArrToStringArr(Sysconfig["fieldsSort"].([]interface{}))
+	FieldsArr = common.ObjArrToStringArr(Sysconfig["fieldsSort"].([]interface{}))
 	Fields = Sysconfig["fields"].(map[string]interface{})
-	FiedlsPurchase = util.ObjArrToStringArr(Sysconfig["fields_purchase"].([]interface{}))
+	FiedlsPurchase = common.ObjArrToStringArr(Sysconfig["fields_purchase"].([]interface{}))
 
 	if ExportType == 1 {
 		FieldsArr[len(FieldsArr)-1] = "itemname"
@@ -61,7 +64,7 @@ func init() {
 		Fields["expurasingtime"] = "预计采购时间"
 		Fields["cgyxxqhref"] = "采购意向详情链接"
 	}
-	util.Debug(FieldsArr)
+	log.Println(FieldsArr)
 }
 
 func main() {
@@ -91,7 +94,7 @@ func main() {
 		q = Search
 	}
 	c := Mgo.Count(DbColl, q)
-	util.Debug("search size result ---", DbColl, q, c)
+	log.Println("search size result ---", DbColl, q, c)
 	if c == 0 {
 		return
 	}
@@ -99,7 +102,7 @@ func main() {
 	count := 0
 	for tmp := make(map[string]interface{}); query.Next(&tmp); count++ {
 		if count%500 == 0 {
-			util.Debug("current ---", count)
+			log.Println("current ---", count)
 		}
 		var baseInfo map[string]interface{}
 		if tmp["v_baseinfo"] != nil {
@@ -115,16 +118,16 @@ func main() {
 			row := sheet.AddRow()
 			for _, v := range FieldsArr {
 				if v == "publishtime" || v == "bidopentime" || v == "project_startdate" || v == "project_completedate" ||
-					v == "signaturedate" || v == "comeintime" || v == "createtime" || v == "bidendtime" {
+					v == "signaturedate" || v == "comeintime" || v == "createtime" || v == "signendtime" {
 					str := ""
 					if baseInfo[v] != nil {
-						date := util.Int64All(baseInfo[v])
-						str = util.FormatDateByInt64(&date, util.Date_Short_Layout)
+						dd := common.Int64All(baseInfo[v])
+						str = date.FormatDateByInt64(&dd, date.Date_Short_Layout)
 					}
 					row.AddCell().SetValue(str)
 				} else if v == "id" {
 					if tmp["id"] != nil {
-						id := SE.EncodeString(util.ObjToString(tmp["id"]))
+						id := SE.EncodeString(common.ObjToString(tmp["id"]))
 						row.AddCell().SetValue(id)
 					} else {
 						id := SE.EncodeString(mongodb.BsonIdToSId(tmp["_id"]))
@@ -151,23 +154,23 @@ func main() {
 										row.AddCell().SetValue(p1[v])
 									} else {
 										if p1["unitprice"] != nil && p1["number"] != nil {
-											d1 := decimal.NewFromFloat(util.Float64All(p1["unitprice"])).Mul(decimal.NewFromInt(int64(util.IntAll(p1["number"]))))
+											d1 := decimal.NewFromFloat(common.Float64All(p1["unitprice"])).Mul(decimal.NewFromInt(int64(common.IntAll(p1["number"]))))
 											row.AddCell().SetValue(d1)
 										} else {
 											row.AddCell().SetValue("")
 										}
 									}
 								} else if v == "publishtime" || v == "bidopentime" || v == "project_startdate" || v == "project_completedate" ||
-									v == "signaturedate" || v == "comeintime" || v == "createtime" {
+									v == "signaturedate" || v == "comeintime" || v == "createtime" || v == "signendtime" {
 									str := ""
 									if baseInfo[v] != nil {
-										date := util.Int64All(baseInfo[v])
-										str = util.FormatDateByInt64(&date, util.Date_Short_Layout)
+										dd := common.Int64All(baseInfo[v])
+										str = date.FormatDateByInt64(&dd, date.Date_Short_Layout)
 									}
 									row.AddCell().SetValue(str)
 								} else if v == "id" {
 									if tmp["id"] != nil {
-										id := SE.EncodeString(util.ObjToString(tmp["id"]))
+										id := SE.EncodeString(common.ObjToString(tmp["id"]))
 										row.AddCell().SetValue(id)
 									} else {
 										id := SE.EncodeString(mongodb.BsonIdToSId(tmp["_id"]))
@@ -182,16 +185,16 @@ func main() {
 						row := sheet.AddRow()
 						for _, v := range FieldsArr {
 							if v == "publishtime" || v == "bidopentime" || v == "project_startdate" || v == "project_completedate" ||
-								v == "signaturedate" || v == "comeintime" || v == "createtime" {
+								v == "signaturedate" || v == "comeintime" || v == "createtime" || v == "signendtime" {
 								str := ""
 								if baseInfo[v] != nil {
-									date := util.Int64All(baseInfo[v])
-									str = util.FormatDateByInt64(&date, util.Date_Short_Layout)
+									dd := common.Int64All(baseInfo[v])
+									str = date.FormatDateByInt64(&dd, date.Date_Short_Layout)
 								}
 								row.AddCell().SetValue(str)
 							} else if v == "id" {
 								if tmp["id"] != nil {
-									id := SE.EncodeString(util.ObjToString(tmp["id"]))
+									id := SE.EncodeString(common.ObjToString(tmp["id"]))
 									row.AddCell().SetValue(id)
 								} else {
 									id := SE.EncodeString(mongodb.BsonIdToSId(tmp["_id"]))
@@ -206,16 +209,16 @@ func main() {
 					row := sheet.AddRow()
 					for _, v := range FieldsArr {
 						if v == "publishtime" || v == "bidopentime" || v == "project_startdate" || v == "project_completedate" ||
-							v == "signaturedate" || v == "comeintime" || v == "createtime" {
+							v == "signaturedate" || v == "comeintime" || v == "createtime" || v == "signendtime" {
 							str := ""
 							if baseInfo[v] != nil {
-								date := util.Int64All(baseInfo[v])
-								str = util.FormatDateByInt64(&date, util.Date_Short_Layout)
+								dd := common.Int64All(baseInfo[v])
+								str = date.FormatDateByInt64(&dd, date.Date_Short_Layout)
 							}
 							row.AddCell().SetValue(str)
 						} else if v == "id" {
 							if tmp["id"] != nil {
-								id := SE.EncodeString(util.ObjToString(tmp["id"]))
+								id := SE.EncodeString(common.ObjToString(tmp["id"]))
 								row.AddCell().SetValue(id)
 							} else {
 								id := SE.EncodeString(mongodb.BsonIdToSId(tmp["_id"]))
@@ -240,23 +243,23 @@ func main() {
 									row.AddCell().SetValue(p1[v])
 								} else {
 									if p1["unitprice"] != nil && p1["number"] != nil {
-										d1 := decimal.NewFromFloat(util.Float64All(p1["unitprice"])).Mul(decimal.NewFromInt(int64(util.IntAll(p1["number"]))))
+										d1 := decimal.NewFromFloat(common.Float64All(p1["unitprice"])).Mul(decimal.NewFromInt(int64(common.IntAll(p1["number"]))))
 										row.AddCell().SetValue(d1)
 									} else {
 										row.AddCell().SetValue("")
 									}
 								}
 							} else if v == "publishtime" || v == "bidopentime" || v == "project_startdate" || v == "project_completedate" ||
-								v == "signaturedate" || v == "comeintime" || v == "createtime" {
+								v == "signaturedate" || v == "comeintime" || v == "createtime" || v == "signendtime" {
 								str := ""
 								if baseInfo[v] != nil {
-									date := util.Int64All(baseInfo[v])
-									str = util.FormatDateByInt64(&date, util.Date_Short_Layout)
+									dd := common.Int64All(baseInfo[v])
+									str = date.FormatDateByInt64(&dd, date.Date_Short_Layout)
 								}
 								row.AddCell().SetValue(str)
 							} else if v == "id" {
 								if tmp["id"] != nil {
-									id := SE.EncodeString(util.ObjToString(tmp["id"]))
+									id := SE.EncodeString(common.ObjToString(tmp["id"]))
 									row.AddCell().SetValue(id)
 								} else {
 									id := SE.EncodeString(mongodb.BsonIdToSId(tmp["_id"]))
@@ -271,16 +274,16 @@ func main() {
 					row := sheet.AddRow()
 					for _, v := range FieldsArr {
 						if v == "publishtime" || v == "bidopentime" || v == "project_startdate" || v == "project_completedate" ||
-							v == "signaturedate" || v == "comeintime" || v == "createtime" {
+							v == "signaturedate" || v == "comeintime" || v == "createtime" || v == "signendtime" {
 							str := ""
 							if baseInfo[v] != nil {
-								date := util.Int64All(baseInfo[v])
-								str = util.FormatDateByInt64(&date, util.Date_Short_Layout)
+								dd := common.Int64All(baseInfo[v])
+								str = date.FormatDateByInt64(&dd, date.Date_Short_Layout)
 							}
 							row.AddCell().SetValue(str)
 						} else if v == "id" {
 							if tmp["id"] != nil {
-								id := SE.EncodeString(util.ObjToString(tmp["id"]))
+								id := SE.EncodeString(common.ObjToString(tmp["id"]))
 								row.AddCell().SetValue(id)
 							} else {
 								id := SE.EncodeString(mongodb.BsonIdToSId(tmp["_id"]))
@@ -307,10 +310,10 @@ func main() {
 							if len(all) > 0 {
 								for _, a := range all {
 									a1 := a.(map[string]interface{})
-									if util.ObjToString(a1["winner"]) != "" {
-										winner = append(winner, util.ObjToString(a1["winner"]))
+									if common.ObjToString(a1["winner"]) != "" {
+										winner = append(winner, common.ObjToString(a1["winner"]))
 									}
-									bidamount = util.Float64All(a1["bidamount"])
+									bidamount = common.Float64All(a1["bidamount"])
 								}
 							}
 						}
@@ -323,16 +326,16 @@ func main() {
 						} else if v == "winnerperson" || v == "winnertel" {
 							row.AddCell().SetValue("")
 						} else if v == "publishtime" || v == "bidopentime" || v == "project_startdate" || v == "project_completedate" ||
-							v == "signaturedate" || v == "comeintime" || v == "createtime" {
+							v == "signaturedate" || v == "comeintime" || v == "createtime" || v == "signendtime" {
 							str := ""
 							if baseInfo[v] != nil {
-								date := util.Int64All(baseInfo[v])
-								str = util.FormatDateByInt64(&date, util.Date_Short_Layout)
+								dd := common.Int64All(baseInfo[v])
+								str = date.FormatDateByInt64(&dd, date.Date_Short_Layout)
 							}
 							row.AddCell().SetValue(str)
 						} else if v == "id" {
 							if tmp["id"] != nil {
-								id := SE.EncodeString(util.ObjToString(tmp["id"]))
+								id := SE.EncodeString(common.ObjToString(tmp["id"]))
 								row.AddCell().SetValue(id)
 							} else {
 								id := SE.EncodeString(mongodb.BsonIdToSId(tmp["_id"]))
@@ -347,16 +350,16 @@ func main() {
 				row := sheet.AddRow()
 				for _, v := range FieldsArr {
 					if v == "publishtime" || v == "bidopentime" || v == "project_startdate" || v == "project_completedate" ||
-						v == "signaturedate" || v == "comeintime" || v == "createtime" {
+						v == "signaturedate" || v == "comeintime" || v == "createtime" || v == "signendtime" {
 						str := ""
 						if baseInfo[v] != nil {
-							date := util.Int64All(baseInfo[v])
-							str = util.FormatDateByInt64(&date, util.Date_Short_Layout)
+							dd := common.Int64All(baseInfo[v])
+							str = date.FormatDateByInt64(&dd, date.Date_Short_Layout)
 						}
 						row.AddCell().SetValue(str)
 					} else if v == "id" {
 						if tmp["id"] != nil {
-							id := SE.EncodeString(util.ObjToString(tmp["id"]))
+							id := SE.EncodeString(common.ObjToString(tmp["id"]))
 							row.AddCell().SetValue(id)
 						} else {
 							id := SE.EncodeString(mongodb.BsonIdToSId(tmp["_id"]))
@@ -382,17 +385,17 @@ func main() {
 							row.AddCell().SetValue(p1[v1])
 							m[v] = p1[v1]
 						} else if v == "publishtime" || v == "bidopentime" || v == "project_startdate" || v == "project_completedate" ||
-							v == "signaturedate" || v == "comeintime" || v == "createtime" {
+							v == "signaturedate" || v == "comeintime" || v == "createtime" || v == "signendtime" {
 							str := ""
 							if baseInfo[v] != nil {
-								date := util.Int64All(baseInfo[v])
-								str = util.FormatDateByInt64(&date, util.Date_Short_Layout)
+								dd := common.Int64All(baseInfo[v])
+								str = date.FormatDateByInt64(&dd, date.Date_Short_Layout)
 							}
 							row.AddCell().SetValue(str)
 							m[v] = str
 						} else if v == "id" {
 							if tmp["id"] != nil {
-								id := SE.EncodeString(util.ObjToString(tmp["id"]))
+								id := SE.EncodeString(common.ObjToString(tmp["id"]))
 								row.AddCell().SetValue(id)
 								m[v] = id
 							} else {
@@ -412,17 +415,17 @@ func main() {
 				m := make(map[string]interface{})
 				for _, v := range FiedlsPurchase {
 					if v == "publishtime" || v == "bidopentime" || v == "project_startdate" || v == "project_completedate" ||
-						v == "signaturedate" || v == "comeintime" || v == "createtime" {
+						v == "signaturedate" || v == "comeintime" || v == "createtime" || v == "signendtime" {
 						str := ""
 						if baseInfo[v] != nil {
-							date := util.Int64All(baseInfo[v])
-							str = util.FormatDateByInt64(&date, util.Date_Short_Layout)
+							dd := common.Int64All(baseInfo[v])
+							str = date.FormatDateByInt64(&dd, date.Date_Short_Layout)
 						}
 						row.AddCell().SetValue(str)
 						m[v] = str
 					} else if v == "id" {
 						if tmp["id"] != nil {
-							id := SE.EncodeString(util.ObjToString(tmp["id"]))
+							id := SE.EncodeString(common.ObjToString(tmp["id"]))
 							row.AddCell().SetValue(id)
 							m[v] = id
 						} else {
@@ -439,8 +442,8 @@ func main() {
 			}
 		}
 	}
-	util.Debug("over ---", count)
-	fname := fmt.Sprintf("./数据导出%s.xlsx", util.NowFormat(util.DATEFORMAT))
+	log.Println("over ---", count)
+	fname := fmt.Sprintf("./数据导出%s.xlsx", date.NowFormat(date.Date_Short_Layout))
 	err = file.Save(fname)
 	if err != nil {
 		panic(err)

+ 8 - 8
src/config.json

@@ -1,12 +1,12 @@
 {
-    "port": "7000",
-    "mgodb": "192.168.3.166:27082",
+    "port": "7001",
+    "mgodb": "172.20.45.129:27002",
     "dbsize": 10,
-    "dbname": "datacheck1",
+    "dbname": "datacheck",
     "alltocoll": "marked",
     "defaultpwd": "123",
     "bidding":{
-        "addr":"192.168.3.166:27082",
+        "addr":"172.20.45.129:27002",
         "db": "wjh",
         "aidb": "wjh",
         "coll1": "bidding",
@@ -16,7 +16,7 @@
         "password": ""
     },
     "extract":{
-        "addr": "192.168.3.166:27082",
+        "addr": "172.20.45.129:27002",
         "db": "mxs",
         "coll1": "extract",
         "coll2": "extract2",
@@ -24,7 +24,7 @@
         "size": 10
     },
     "jy": {
-        "addr":"192.168.3.166:27082",
+        "addr":"172.20.45.129:27002",
         "db": "qfw",
         "history": "usermail_history",
         "pushcoll": "usermail",
@@ -32,7 +32,7 @@
         "size": 10
     },
     "es":{
-        "addr": "http://127.0.0.1:19805",
+        "addr": "http://172.20.45.129:9206",
         "index": "bidding",
         "user": "es_all",
         "password": "TopJkO2E_d1x",
@@ -401,7 +401,7 @@
         ]
     },
     "high_mark":{
-        "addr":"192.168.3.166:27082",
+        "addr":"172.20.45.129:27002",
         "db": "qfw_high",
         "coll": "bidding",
         "size": 10,

+ 5 - 5
src/crons/high_mark.go

@@ -1,12 +1,12 @@
 package crons
 
 import (
+	util2 "dataValidation/util"
 	"fmt"
-	"mongodb"
+	util "jygit.jydev.jianyu360.cn/data_processing/common_utils"
+	"jygit.jydev.jianyu360.cn/data_processing/common_utils/mongodb"
 	"os"
-	"qfw/util"
 	"time"
-	util2 "util"
 )
 
 func Test() {
@@ -17,7 +17,7 @@ func MarkTask() {
 	go highMark()
 }
 
-//highMark 高质量库数据
+// highMark 高质量库数据
 func highMark() {
 	defer util.Catch()
 	sess := util2.Mgo.GetMgoConn()
@@ -130,7 +130,7 @@ func highMark() {
 	util.Debug("所有任务处理完毕")
 }
 
-//calculateFlag 根据数据,返回被标注的字段数字
+// calculateFlag 根据数据,返回被标注的字段数字
 func calculateFlag(marked map[string]interface{}, data []map[string]interface{}) uint64 {
 	var result uint64
 	for _, item := range data {

+ 1 - 2
src/filter/filter.go

@@ -1,9 +1,8 @@
 package filter
 
 import (
+	"app.yhyue.com/moapp/jybase/go-xweb/xweb"
 	"regexp"
-
-	"github.com/go-xweb/xweb"
 )
 
 func init() {

+ 3 - 4
src/filter/sessfilter.go

@@ -1,20 +1,19 @@
 package filter
 
 import (
+	"app.yhyue.com/moapp/jybase/go-xweb/xweb"
 	"net/http"
 	"regexp"
-
-	"github.com/go-xweb/xweb"
 )
 
-//session过滤器
+// session过滤器
 type sessfilter struct {
 	App         *xweb.App
 	SessionName string
 	MatchUrl    []*regexp.Regexp
 }
 
-//实现过滤器方法
+// 实现过滤器方法
 func (s *sessfilter) Do(w http.ResponseWriter, req *http.Request) bool {
 	requestPath := req.URL.Path
 	b := true

+ 4 - 4
src/front/front.go

@@ -1,12 +1,12 @@
 package front
 
 import (
+	"app.yhyue.com/moapp/jybase/go-xweb/xweb"
+	. "dataValidation/util"
 	"fmt"
-	"github.com/go-xweb/xweb"
-	"mongodb"
-	qu "qfw/util"
+	qu "jygit.jydev.jianyu360.cn/data_processing/common_utils"
+	"jygit.jydev.jianyu360.cn/data_processing/common_utils/mongodb"
 	"strconv"
-	. "util"
 )
 
 var UserMenu map[string][]map[string]interface{} //存储菜单

+ 19 - 15
src/front/group.go

@@ -1,21 +1,21 @@
 package front
 
 import (
+	"dataValidation/util"
 	"encoding/json"
 	"fmt"
 	"github.com/shopspring/decimal"
 	"github.com/tealeg/xlsx"
 	"go.mongodb.org/mongo-driver/bson"
 	"io"
-	"mongodb"
+	qu "jygit.jydev.jianyu360.cn/data_processing/common_utils"
+	"jygit.jydev.jianyu360.cn/data_processing/common_utils/mongodb"
 	"os"
-	qu "qfw/util"
 	"sort"
 	"strconv"
 	"strings"
 	"sync"
 	"time"
-	"util"
 )
 
 // GroupTaskListByGroup 用户组权限用户组任务列表
@@ -24,9 +24,9 @@ func (f *Front) GroupTaskListByGroup() {
 	if f.Method() == "POST" {
 		user := f.GetSession("user").(map[string]interface{})
 		role := qu.ObjToString(user["i_role"])
-		start, _ := f.GetInteger("start")
-		limit, _ := f.GetInteger("length")
-		draw, _ := f.GetInteger("draw")
+		start, _ := f.GetInt("start")
+		limit, _ := f.GetInt("length")
+		draw, _ := f.GetInt("draw")
 		status := f.GetString("s_status")
 		searchStr := f.GetString("search[value]")
 		search := strings.TrimSpace(searchStr)
@@ -50,7 +50,7 @@ func (f *Front) GroupTaskListByGroup() {
 			}
 		}
 		qu.Debug("Query:", query)
-		list, _ := util.Mgo.Find(util.TASKCOLLNAME, query, map[string]interface{}{"_id": -1}, nil, false, start, limit)
+		list, _ := util.Mgo.Find(util.TASKCOLLNAME, query, map[string]interface{}{"_id": -1}, nil, false, int(start), int(limit))
 		count := util.Mgo.Count(util.TASKCOLLNAME, query)
 		for _, l := range *list {
 			if status := qu.ObjToString(l["s_status"]); status == "进行中" { //更新任务进度
@@ -81,9 +81,9 @@ func (f *Front) GroupTaskListByGroup() {
 func (f *Front) GroupTaskListByAdmin() {
 	defer qu.Catch()
 	if f.Method() == "POST" {
-		start, _ := f.GetInteger("start")
-		limit, _ := f.GetInteger("length")
-		draw, _ := f.GetInteger("draw")
+		start, _ := f.GetInt("start")
+		limit, _ := f.GetInt("length")
+		draw, _ := f.GetInt("draw")
 		status := f.GetString("s_status")
 		searchStr := f.GetString("search[value]")
 		search := strings.TrimSpace(searchStr)
@@ -125,7 +125,7 @@ func (f *Front) GroupTaskListByAdmin() {
 		}
 		qu.Debug("Query:", query)
 		count := util.Mgo.Count(util.TASKCOLLNAME, query)
-		list, _ := util.Mgo.Find(util.TASKCOLLNAME, query, map[string]interface{}{"_id": -1}, nil, false, start, limit)
+		list, _ := util.Mgo.Find(util.TASKCOLLNAME, query, map[string]interface{}{"_id": -1}, nil, false, int(start), int(limit))
 		for _, l := range *list {
 			if status := qu.ObjToString(l["s_status"]); status == "进行中" { //更新任务进度
 				//groupId := qu.ObjToString(l["s_groupid"])
@@ -160,9 +160,9 @@ func (f *Front) GroupUserTaskList() {
 	groupTaskId := f.GetString("grouptaskid") //用户组任务id
 	qu.Debug("groupTaskId:", groupTaskId)
 	if f.Method() == "POST" {
-		start, _ := f.GetInteger("start")
-		limit, _ := f.GetInteger("length")
-		draw, _ := f.GetInteger("draw")
+		start, _ := f.GetInt("start")
+		limit, _ := f.GetInt("length")
+		draw, _ := f.GetInt("draw")
 		status := f.GetString("s_status")
 		login := f.GetString("s_login")
 		searchStr := f.GetString("search[value]")
@@ -184,7 +184,7 @@ func (f *Front) GroupUserTaskList() {
 		}
 		qu.Debug("Query:", query)
 		count := util.Mgo.Count(util.TASKCOLLNAME, query)
-		list, _ := util.Mgo.Find(util.TASKCOLLNAME, query, map[string]interface{}{"_id": -1}, nil, false, start, limit)
+		list, _ := util.Mgo.Find(util.TASKCOLLNAME, query, map[string]interface{}{"_id": -1}, nil, false, int(start), int(limit))
 		for _, l := range *list {
 			if status := qu.ObjToString(l["s_status"]); status == "进行中" { //更新任务进度
 				giveNum := qu.IntAll(l["i_givenum"])
@@ -1105,6 +1105,8 @@ func (f *Front) GroupImportData() {
 					m["is_push"] = qu.IntAll(update["is_push"])
 					if qu.IntAll(update["is_push"]) == 1 {
 						isPush = 1
+					} else {
+						isPush = 0
 					}
 					packageM[fmt.Sprint(c1)] = map[string]interface{}{"winner_all": append([]interface{}{}, m)}
 					update["v_baseinfo.package"] = packageM
@@ -1117,6 +1119,8 @@ func (f *Front) GroupImportData() {
 			}
 			if qu.IntAll(update["v_baseinfo.multipackage"]) == 1 && isPush == 1 {
 				update["is_push"] = 1
+			} else {
+				update["is_push"] = 0
 			}
 			lastid = id
 

+ 4 - 6
src/front/menu.go

@@ -1,14 +1,12 @@
 package front
 
 import (
+	. "dataValidation/util"
+	"go.mongodb.org/mongo-driver/bson"
 	"go.mongodb.org/mongo-driver/bson/primitive"
-	"mongodb"
-	qu "qfw/util"
+	qu "jygit.jydev.jianyu360.cn/data_processing/common_utils"
+	"jygit.jydev.jianyu360.cn/data_processing/common_utils/mongodb"
 	"time"
-
-	. "util"
-
-	"go.mongodb.org/mongo-driver/bson"
 )
 
 func (f *Front) Menu() {

+ 15 - 15
src/front/project.go

@@ -1,6 +1,7 @@
 package front
 
 import (
+	"dataValidation/util"
 	"encoding/json"
 	"fmt"
 	"github.com/shopspring/decimal"
@@ -8,16 +9,15 @@ import (
 	"go.mongodb.org/mongo-driver/bson"
 	"go.mongodb.org/mongo-driver/bson/primitive"
 	"io/ioutil"
+	qu "jygit.jydev.jianyu360.cn/data_processing/common_utils"
+	"jygit.jydev.jianyu360.cn/data_processing/common_utils/mongodb"
 	"mime/multipart"
-	"mongodb"
-	qu "qfw/util"
 	"sort"
 	"strconv"
 	"strings"
 	"sync"
 	"sync/atomic"
 	"time"
-	"util"
 )
 
 // ProjectIsExists 获取所有项目名称
@@ -36,9 +36,9 @@ func (f *Front) ProjectIsExists() {
 func (f *Front) ProjectList() {
 	defer qu.Catch()
 	if f.Method() == "POST" {
-		start, _ := f.GetInteger("start")
-		limit, _ := f.GetInteger("length")
-		draw, _ := f.GetInteger("draw")
+		start, _ := f.GetInt("start")
+		limit, _ := f.GetInt("length")
+		draw, _ := f.GetInt("draw")
 		status := f.GetString("s_status")
 		searchStr := f.GetString("search[value]")
 		search := strings.TrimSpace(searchStr)
@@ -59,7 +59,7 @@ func (f *Front) ProjectList() {
 				map[string]interface{}{"s_departname": map[string]interface{}{"$regex": search}},
 			}
 		}
-		list, _ := util.Mgo.Find(util.PROJECTCOLLNAME, query, map[string]interface{}{"_id": -1}, nil, false, start, limit)
+		list, _ := util.Mgo.Find(util.PROJECTCOLLNAME, query, map[string]interface{}{"_id": -1}, nil, false, int(start), int(limit))
 		count := util.Mgo.Count(util.PROJECTCOLLNAME, query)
 		f.ServeJson(map[string]interface{}{"draw": draw, "data": *list, "recordsFiltered": count, "recordsTotal": count})
 	} else {
@@ -373,9 +373,9 @@ func (f *Front) ProjectGroupTaskList() {
 		status := f.GetString("s_status") //任务状态
 		searchStr := f.GetString("search[value]")
 		search := strings.TrimSpace(searchStr)
-		start, _ := f.GetInteger("start")
-		limit, _ := f.GetInteger("length")
-		draw, _ := f.GetInteger("draw")
+		start, _ := f.GetInt("start")
+		limit, _ := f.GetInt("length")
+		draw, _ := f.GetInt("draw")
 		query := map[string]interface{}{ //查找用户组任务
 			"s_projectid": projectid,
 			"s_stype":     "group",
@@ -389,7 +389,7 @@ func (f *Front) ProjectGroupTaskList() {
 			}
 		}
 		qu.Debug("Query:", query)
-		list, _ := util.Mgo.Find(util.TASKCOLLNAME, query, map[string]interface{}{"_id": -1}, nil, false, start, limit)
+		list, _ := util.Mgo.Find(util.TASKCOLLNAME, query, map[string]interface{}{"_id": -1}, nil, false, int(start), int(limit))
 		count := util.Mgo.Count(util.TASKCOLLNAME, query)
 		for _, l := range *list {
 			if status := qu.ObjToString(l["s_status"]); status == "进行中" { //更新任务进度
@@ -1477,9 +1477,9 @@ func (f *Front) ProjectData() {
 	pid := f.GetString("pid")
 	sourceinfo := f.GetString("sourceinfo")
 	if f.Method() == "POST" {
-		start, _ := f.GetInteger("start")
-		limit, _ := f.GetInteger("length")
-		draw, _ := f.GetInteger("draw")
+		start, _ := f.GetInt("start")
+		limit, _ := f.GetInt("length")
+		draw, _ := f.GetInt("draw")
 		searchStr := f.GetString("search[value]")
 		searchStr = strings.TrimSpace(searchStr)
 		query := map[string]interface{}{}
@@ -1489,7 +1489,7 @@ func (f *Front) ProjectData() {
 				map[string]interface{}{"v_baseinfo.title": map[string]interface{}{"$regex": searchStr}},
 			}
 		}
-		list, _ := util.Mgo.Find(sourceinfo, query, bson.M{"_id": 1}, nil, false, start, limit)
+		list, _ := util.Mgo.Find(sourceinfo, query, bson.M{"_id": 1}, nil, false, int(start), int(limit))
 		count := util.Mgo.Count(sourceinfo, query)
 		f.ServeJson(map[string]interface{}{"draw": draw, "data": *list, "recordsFiltered": count, "recordsTotal": count})
 	} else {

+ 7 - 7
src/front/quality.go

@@ -1,12 +1,12 @@
 package front
 
 import (
+	"dataValidation/qua"
+	u "dataValidation/util"
 	"go.mongodb.org/mongo-driver/bson/primitive"
+	qu "jygit.jydev.jianyu360.cn/data_processing/common_utils"
 	"log"
-	qu "qfw/util"
-	"qua"
 	"time"
-	u "util"
 )
 
 func (f *Front) QuaScoreData() {
@@ -55,7 +55,7 @@ func QuaFieldScore(field_tag []string, coll_name string) bool {
 	return true
 }
 
-//计算字段分
+// 计算字段分
 func calculateFieldScore(tmp map[string]interface{}, field_tag []string) map[string]interface{} {
 
 	//所有字段
@@ -121,7 +121,7 @@ func calculateFieldScore(tmp map[string]interface{}, field_tag []string) map[str
 	}
 }
 
-//标的物-计算
+// 标的物-计算
 func calculatePrchasinglist(tmp map[string]interface{}) bool {
 	b_ispurchasing := true //默认需要标注
 	if purchasinglist, ok := tmp["purchasinglist"].([]interface{}); ok {
@@ -151,7 +151,7 @@ func calculatePrchasinglist(tmp map[string]interface{}) bool {
 	return b_ispurchasing
 }
 
-//判断各个标的物是否可用  默认不可用
+// 判断各个标的物是否可用  默认不可用
 func isUsePurchasing(data map[string]interface{}) bool {
 	isUse := false
 	num := 1
@@ -172,7 +172,7 @@ func isUsePurchasing(data map[string]interface{}) bool {
 	return isUse
 }
 
-//是否整体可用 - 默认不可用
+// 是否整体可用 - 默认不可用
 func isUseAllPurchasing(isListUserArr []bool) bool {
 	isUse := false
 	total_num := len(isListUserArr)

+ 39 - 39
src/front/remark.go

@@ -1,20 +1,20 @@
 package front
 
 import (
+	"dataValidation/util"
 	"encoding/json"
 	"fmt"
 	"github.com/shopspring/decimal"
 	"go.mongodb.org/mongo-driver/bson"
+	qu "jygit.jydev.jianyu360.cn/data_processing/common_utils"
+	"jygit.jydev.jianyu360.cn/data_processing/common_utils/mongodb"
 	"math"
-	mgo "mongodb"
-	qu "qfw/util"
 	"regexp"
 	"sort"
 	"strconv"
 	"strings"
 	"sync"
 	"time"
-	"util"
 )
 
 var (
@@ -28,13 +28,13 @@ func (f *Front) RemarkList() {
 	sourceinfo := qu.ObjToString(f.GetString("s_sourceinfo"))
 	if f.Method() == "POST" {
 		//user := f.GetSession("user").(map[string]interface{})
-		start, _ := f.GetInteger("start")
-		limit, _ := f.GetInteger("length")
-		draw, _ := f.GetInteger("draw")
+		start, _ := f.GetInt("start")
+		limit, _ := f.GetInt("length")
+		draw, _ := f.GetInt("draw")
 		searchStr := f.GetString("search[value]")
 		search := strings.TrimSpace(searchStr)
 		query := map[string]interface{}{"s_usertaskid": tid}
-		ckdata, err := f.GetInteger("i_ckdata")
+		ckdata, err := f.GetInt("i_ckdata")
 		if err != nil {
 			ckdata = -1
 		}
@@ -49,7 +49,7 @@ func (f *Front) RemarkList() {
 			}
 		}
 		field := map[string]interface{}{"v_baseinfo.title": 1, "b_istag": 1, "i_ckdata": 1}
-		info, _ := util.Mgo.Find(sourceinfo, query, `{"_id": 1}`, field, false, start, limit)
+		info, _ := util.Mgo.Find(sourceinfo, query, `{"_id": 1}`, field, false, int(start), int(limit))
 		count := util.Mgo.Count(sourceinfo, query)
 		f.ServeJson(map[string]interface{}{
 			"draw":            draw,
@@ -138,7 +138,7 @@ func getDetail(id, coll, stype string, fs []map[string]interface{}) map[string]i
 	} else {
 		baseInfo["detail"] = qu.ObjToString(baseInfo["title"]) + "</br>" + qu.ObjToString(baseInfo["detail"])
 	}
-	baseInfo["_id"] = mgo.BsonIdToSId(baseInfo["_id"])
+	baseInfo["_id"] = mongodb.BsonIdToSId(baseInfo["_id"])
 	purchasingTag, _ := baseInfo["purchasinglist_alltag"].(bool)
 	rep["purchasingTag"] = purchasingTag
 	href := qu.ObjToString(baseInfo["href"])
@@ -652,7 +652,7 @@ func GetNextDataId(id, coll, tid string) string {
 	nextIdQuery := map[string]interface{}{
 		//"b_istag": false,
 		"_id": map[string]interface{}{
-			"$gt": mgo.StringTOBsonId(id),
+			"$gt": mongodb.StringTOBsonId(id),
 		},
 	}
 	if tid != "" {
@@ -660,7 +660,7 @@ func GetNextDataId(id, coll, tid string) string {
 	}
 	one, _ := util.Mgo.Find(coll, nextIdQuery, `{"_id":1}`, `{"_id":1}`, true, 0, 1)
 	if len(*one) == 1 && len((*one)[0]) > 0 {
-		return mgo.BsonIdToSId((*one)[0]["_id"])
+		return mongodb.BsonIdToSId((*one)[0]["_id"])
 	} else {
 		//delete(nextIdQuery, "_id")
 		//one, _ = util.Mgo.Find(coll, nextIdQuery, `{"_id":1}`, `{"_id":1}`, true, 0, 1)
@@ -678,7 +678,7 @@ func GetLastDataId(id, coll, tid string) string {
 	nextIdQuery := map[string]interface{}{
 		//"b_istag": false,
 		"_id": map[string]interface{}{
-			"$lt": mgo.StringTOBsonId(id),
+			"$lt": mongodb.StringTOBsonId(id),
 		},
 	}
 	if tid != "" {
@@ -686,7 +686,7 @@ func GetLastDataId(id, coll, tid string) string {
 	}
 	one, _ := util.Mgo.Find(coll, nextIdQuery, `{"_id":-1}`, `{"_id":1}`, true, 0, 1)
 	if len(*one) == 1 && len((*one)[0]) > 0 {
-		return mgo.BsonIdToSId((*one)[0]["_id"])
+		return mongodb.BsonIdToSId((*one)[0]["_id"])
 	} else {
 		//delete(nextIdQuery, "_id")
 		//one, _ = util.Mgo.Find(coll, nextIdQuery, `{"_id":-1}`, `{"_id":-1}`, true, 0, 1)
@@ -704,7 +704,7 @@ func GetLastDataId(id, coll, tid string) string {
 func GetNextDataId1(id, coll, tid, tag string) string {
 	nextIdQuery := map[string]interface{}{
 		"_id": map[string]interface{}{
-			"$gt": mgo.StringTOBsonId(id),
+			"$gt": mongodb.StringTOBsonId(id),
 		},
 		//"b_check": false,
 	}
@@ -722,7 +722,7 @@ func GetNextDataId1(id, coll, tid, tag string) string {
 	qu.Debug(nextIdQuery)
 	one, _ := util.Mgo.Find(coll, nextIdQuery, `{"_id":1}`, `{"_id":1}`, true, 0, 1)
 	if len(*one) == 1 && len((*one)[0]) > 0 {
-		return mgo.BsonIdToSId((*one)[0]["_id"])
+		return mongodb.BsonIdToSId((*one)[0]["_id"])
 	} else {
 		//delete(nextIdQuery, "_id")
 		//one, _ = util.Mgo.Find(coll, nextIdQuery, `{"_id":1}`, `{"_id":1}`, true, 0, 1)
@@ -739,7 +739,7 @@ func GetNextDataId1(id, coll, tid, tag string) string {
 func GetLastDataId1(id, coll, tid, tag string) string {
 	nextIdQuery := map[string]interface{}{
 		"_id": map[string]interface{}{
-			"$lt": mgo.StringTOBsonId(id),
+			"$lt": mongodb.StringTOBsonId(id),
 		},
 		//"b_check": false,
 	}
@@ -756,7 +756,7 @@ func GetLastDataId1(id, coll, tid, tag string) string {
 	}
 	one, _ := util.Mgo.Find(coll, nextIdQuery, `{"_id":-1}`, `{"_id":1}`, true, 0, 1)
 	if len(*one) == 1 && len((*one)[0]) > 0 {
-		return mgo.BsonIdToSId((*one)[0]["_id"])
+		return mongodb.BsonIdToSId((*one)[0]["_id"])
 	} else {
 		//delete(nextIdQuery, "_id")
 		//one, _ = util.Mgo.Find(coll, nextIdQuery, `{"_id":-1}`, `{"_id":1}`, true, 0, 1)
@@ -776,9 +776,9 @@ func (f *Front) CheckList() {
 		user := f.GetSession("user").(map[string]interface{})
 		iRole := qu.ObjToString(user["i_role"])
 		gid := qu.ObjToString(user["s_groupid"])
-		start, _ := f.GetInteger("start")
-		limit, _ := f.GetInteger("length")
-		draw, _ := f.GetInteger("draw")
+		start, _ := f.GetInt("start")
+		limit, _ := f.GetInt("length")
+		draw, _ := f.GetInt("draw")
 		status := f.GetString("s_status")
 		searchStr := f.GetString("search[value]")
 		search := strings.TrimSpace(searchStr)
@@ -801,13 +801,13 @@ func (f *Front) CheckList() {
 			}
 		}
 		count := util.Mgo.Count(util.TASKCOLLNAME, query)
-		list, _ := util.Mgo.Find(util.TASKCOLLNAME, query, bson.M{"_id": -1}, nil, false, start, limit)
+		list, _ := util.Mgo.Find(util.TASKCOLLNAME, query, bson.M{"_id": -1}, nil, false, int(start), int(limit))
 		for _, l := range *list {
 			if status := qu.ObjToString(l["s_status"]); status == "进行中" { //更新任务进度
 				giveNum := qu.IntAll(l["i_givenum"])
 				sourceinfo := qu.ObjToString(l["s_sourceinfo"])
 
-				tagNum := util.Mgo.Count(sourceinfo, map[string]interface{}{"s_usertaskid": mgo.BsonIdToSId(l["_id"]), "b_istag": true})
+				tagNum := util.Mgo.Count(sourceinfo, map[string]interface{}{"s_usertaskid": mongodb.BsonIdToSId(l["_id"]), "b_istag": true})
 				progressFloat := float64(tagNum) / float64(giveNum)
 				value, _ := strconv.ParseFloat(fmt.Sprintf("%.4f", progressFloat), 64)
 				decimalValue := decimal.NewFromFloat(value)
@@ -830,9 +830,9 @@ func (f *Front) CheckData() {
 	tid := f.GetString("tid")
 	sourceinfo := f.GetString("s_sourceinfo")
 	if f.Method() == "POST" {
-		start, _ := f.GetInteger("start")
-		limit, _ := f.GetInteger("length")
-		draw, _ := f.GetInteger("draw")
+		start, _ := f.GetInt("start")
+		limit, _ := f.GetInt("length")
+		draw, _ := f.GetInt("draw")
 		query := make(map[string]interface{})
 		query["b_istag"] = true
 		query["s_usertaskid"] = tid
@@ -854,7 +854,7 @@ func (f *Front) CheckData() {
 		count := util.Mgo.Count(sourceinfo, query)
 		fields := map[string]interface{}{"v_baseinfo.title": 1, "v_baseinfo.buyer": 1, "v_baseinfo.s_winner": 1, "v_baseinfo.budget": 1,
 			"v_baseinfo.bidamount": 1, "b_check": 1, "i_ckdata": 1, "s_login": 1, "b_istag": 1, "s_excp": 1, "s_excp_info": 1}
-		info, _ := util.Mgo.Find(sourceinfo, query, `{"_id": 1}`, fields, false, start, limit)
+		info, _ := util.Mgo.Find(sourceinfo, query, `{"_id": 1}`, fields, false, int(start), int(limit))
 		f.ServeJson(map[string]interface{}{
 			"draw":            draw,
 			"data":            *info,
@@ -886,11 +886,11 @@ func (f *Front) CheckJyData() {
 	tid := f.GetString("tid")
 	stype := f.GetString("stype")
 	sourceinfo := f.GetString("s_sourceinfo")
-	datatype, _ := f.GetInteger("datatype")
+	datatype, _ := f.GetInt("datatype")
 	if f.Method() == "POST" {
-		start, _ := f.GetInteger("start")
-		limit, _ := f.GetInteger("length")
-		draw, _ := f.GetInteger("draw")
+		start, _ := f.GetInt("start")
+		limit, _ := f.GetInt("length")
+		draw, _ := f.GetInt("draw")
 		query := make(map[string]interface{})
 		if tid != "" {
 			// 任务数据质检
@@ -1024,7 +1024,7 @@ func (f *Front) CheckJyData() {
 		count := util.Mgo.Count(sourceinfo, query)
 		fields := map[string]interface{}{"v_baseinfo.title": 1, "v_baseinfo.buyer": 1, "v_baseinfo.s_winner": 1, "v_baseinfo.budget": 1,
 			"v_baseinfo.bidamount": 1, "b_check": 1, "i_ckdata": 1, "s_login": 1, "b_istag": 1, "s_excp": 1, "s_excp_info": 1}
-		info, _ := util.Mgo.Find(sourceinfo, query, `{"_id": 1}`, fields, false, start, limit)
+		info, _ := util.Mgo.Find(sourceinfo, query, `{"_id": 1}`, fields, false, int(start), int(limit))
 		f.ServeJson(map[string]interface{}{
 			"draw":            draw,
 			"data":            *info,
@@ -1332,7 +1332,7 @@ func (f *Front) CheckResult() {
 	tid := f.GetString("tid")
 	sourceinfo := f.GetString("s_sourceinfo")
 	stype := f.GetString("stype")
-	datatype, _ := f.GetInteger("datatype")
+	datatype, _ := f.GetInt("datatype")
 	var allNum int
 	projcet, _ := util.Mgo.FindById(util.PROJECTCOLLNAME, pid, map[string]interface{}{"v_fields": 1})
 	//tagCount := util.Mgo.Count(sourceinfo, map[string]interface{}{"s_grouptaskid": tid, "b_istag": true})
@@ -1691,9 +1691,9 @@ func (f *Front) JyMarkList() {
 	defer qu.Catch()
 	stype := f.GetString("stype") //all:全量标注;notag:达标数据标注;tag:未达标数据标注
 	if f.Method() == "POST" {
-		start, _ := f.GetInteger("start")
-		limit, _ := f.GetInteger("length")
-		draw, _ := f.GetInteger("draw")
+		start, _ := f.GetInt("start")
+		limit, _ := f.GetInt("length")
+		draw, _ := f.GetInt("draw")
 		sourceInfo := f.GetString("s_sourceinfo") //数据源表
 		istag := f.GetString("b_istag")           //
 		field := f.GetString("field")             //字段
@@ -1788,7 +1788,7 @@ func (f *Front) JyMarkList() {
 		}
 		count := util.Mgo.Count(sourceInfo, query)
 		fields := map[string]interface{}{"v_baseinfo.title": 1, "b_istag": 1, "i_ckdata": 1}
-		list, _ := util.Mgo.Find(sourceInfo, query, map[string]interface{}{"_id": 1}, fields, false, start, limit)
+		list, _ := util.Mgo.Find(sourceInfo, query, map[string]interface{}{"_id": 1}, fields, false, int(start), int(limit))
 		//checkedNum, allNum := GetCheckedAndAllDataInfo(query, coll) //已标和总数信息
 		f.ServeJson(map[string]interface{}{"draw": draw, "data": *list, "recordsFiltered": count, "recordsTotal": count})
 	} else {
@@ -1944,7 +1944,7 @@ func (f *Front) JyUserDataMark() {
 		tmp, _ := util.Mgo.FindById(sourceInfo, infoId, map[string]interface{}{"v_baseinfo": 1, "v_taginfo": 1, "i_ckdata": 1})
 		delete((*tmp), "_id")
 		(*tmp)["updatetime"] = time.Now().Unix()
-		_ = util.Mgo.Update(util.AllToColl, map[string]interface{}{"_id": mgo.StringTOBsonId(infoId)}, map[string]interface{}{"$set": tmp}, true, false)
+		_ = util.Mgo.Update(util.AllToColl, map[string]interface{}{"_id": mongodb.StringTOBsonId(infoId)}, map[string]interface{}{"$set": tmp}, true, false)
 	}
 	/*
 		} else {
@@ -2101,7 +2101,7 @@ func (f *Front) UserDataMark() {
 		tmp, _ := util.Mgo.FindById(sourceInfo, infoId, map[string]interface{}{"v_baseinfo": 1, "v_taginfo": 1, "i_ckdata": 1})
 		delete((*tmp), "_id")
 		(*tmp)["updatetime"] = time.Now().Unix()
-		_ = util.Mgo.Update(util.AllToColl, map[string]interface{}{"_id": mgo.StringTOBsonId(infoId)}, map[string]interface{}{"$set": tmp}, true, false)
+		_ = util.Mgo.Update(util.AllToColl, map[string]interface{}{"_id": mongodb.StringTOBsonId(infoId)}, map[string]interface{}{"$set": tmp}, true, false)
 	}
 	/*
 		} else {
@@ -2585,7 +2585,7 @@ func SaveLog(s_infoid, s_usertaskid, username, userid, role, projectname, s_styp
 func (f *Front) CheckDataPurchase() {
 	defer qu.Catch()
 	if f.Method() == "POST" {
-		datatype, _ := f.GetInteger("datatype")
+		datatype, _ := f.GetInt("datatype")
 		stype := f.GetString("stype")
 		sourceinfo := f.GetString("s_sourceinfo")
 		tid := f.GetString("taskid")

+ 3 - 3
src/front/role.go

@@ -1,11 +1,11 @@
 package front
 
 import (
+	. "dataValidation/util"
 	"encoding/json"
 	"go.mongodb.org/mongo-driver/bson"
-	"mongodb"
-	qu "qfw/util"
-	. "util"
+	qu "jygit.jydev.jianyu360.cn/data_processing/common_utils"
+	"jygit.jydev.jianyu360.cn/data_processing/common_utils/mongodb"
 )
 
 func (f *Front) RoleManager() {

+ 36 - 36
src/front/user.go

@@ -1,6 +1,7 @@
 package front
 
 import (
+	. "dataValidation/util"
 	"encoding/json"
 	"fmt"
 	"github.com/dchest/captcha"
@@ -8,13 +9,12 @@ import (
 	"github.com/shopspring/decimal"
 	"go.mongodb.org/mongo-driver/bson"
 	"go.mongodb.org/mongo-driver/bson/primitive"
-	mgo "mongodb"
-	qu "qfw/util"
+	qu "jygit.jydev.jianyu360.cn/data_processing/common_utils"
+	"jygit.jydev.jianyu360.cn/data_processing/common_utils/mongodb"
 	"strconv"
 	"strings"
 	"sync"
 	"time"
-	. "util"
 )
 
 var store = sessions.NewCookieStore([]byte("jianyu_secret20210422"))
@@ -82,7 +82,7 @@ func (f *Front) Login() {
 				"i_role":    (*user)["i_role"],
 				"s_pwd":     password,
 				"s_login":   username,
-				"id":        mgo.BsonIdToSId((*user)["_id"]),
+				"id":        mongodb.BsonIdToSId((*user)["_id"]),
 			})
 			UserMenu[username] = GetUserMenu(qu.IntAll((*user)["i_role"]))
 			f.ServeJson(map[string]interface{}{
@@ -133,9 +133,9 @@ func (f *Front) Logout() {
 func (f *Front) UserGroup() {
 	defer qu.Catch()
 	if f.Method() == "POST" {
-		start, _ := f.GetInteger("start")
-		limit, _ := f.GetInteger("length")
-		draw, _ := f.GetInteger("draw")
+		start, _ := f.GetInt("start")
+		limit, _ := f.GetInt("length")
+		draw, _ := f.GetInt("draw")
 		searchStr := f.GetString("search[value]")
 		search := strings.TrimSpace(searchStr)
 		status := f.GetString("s_status")
@@ -154,7 +154,7 @@ func (f *Front) UserGroup() {
 				bson.M{"s_name": bson.M{"$regex": search}},
 			}
 		}
-		data, _ := Mgo.Find("s_group", query, `{"i_createtime":-1}`, nil, false, start, limit)
+		data, _ := Mgo.Find("s_group", query, `{"i_createtime":-1}`, nil, false, int(start), int(limit))
 		count := Mgo.Count("s_group", query)
 		f.ServeJson(map[string]interface{}{
 			"draw":            draw,
@@ -365,7 +365,7 @@ func (f *Front) UserManage() {
 	if f.Method() == "POST" {
 		data := GetPostForm(f.Request)
 		gid := qu.ObjToString(data["gid"])
-		draw, _ := f.GetInteger("draw")
+		draw, _ := f.GetInt("draw")
 		query := map[string]interface{}{"s_groupid": gid, "b_delete": false}
 		info, b := Mgo.Find("s_user", query, nil, nil, false, -1, -1)
 		count := Mgo.Count("s_user", query)
@@ -405,9 +405,9 @@ func (f *Front) UserAll() {
 	defer qu.Catch()
 	gid := f.GetString("gid")
 	if f.Method() == "POST" {
-		start, _ := f.GetInteger("start")
-		limit, _ := f.GetInteger("length")
-		draw, _ := f.GetInteger("draw")
+		start, _ := f.GetInt("start")
+		limit, _ := f.GetInt("length")
+		draw, _ := f.GetInt("draw")
 		searchStr := f.GetString("search[value]")
 		search := strings.TrimSpace(searchStr)
 		query := map[string]interface{}{
@@ -427,7 +427,7 @@ func (f *Front) UserAll() {
 				bson.M{"s_login": bson.M{"$regex": search}},
 			}
 		}
-		data, _ := Mgo.Find("s_user", query, `{"i_updatetime":-1}`, nil, false, start, limit)
+		data, _ := Mgo.Find("s_user", query, `{"i_updatetime":-1}`, nil, false, int(start), int(limit))
 		for _, m := range *data {
 			m["s_password"] = qu.SE.DecodeString(qu.ObjToString(m["s_password"]))
 		}
@@ -479,7 +479,7 @@ func (f *Front) UserNew() {
 		stype := f.GetString("stype")
 		irole := f.GetString("i_role")
 		if stype == "group" {
-			size, e := f.GetInteger("size")
+			size, e := f.GetInt("size")
 			if e != nil {
 				f.ServeJson(map[string]interface{}{
 					"rep": false,
@@ -492,8 +492,8 @@ func (f *Front) UserNew() {
 			if len(*info) > 0 {
 				if irole == "3" {
 					oldnum := qu.IntAll((*info)["check_size"])
-					Mgo.UpdateById("s_group", gid, map[string]interface{}{"$set": map[string]interface{}{"check_size": oldnum + size}})
-					for i := 0; i < size; i++ {
+					Mgo.UpdateById("s_group", gid, map[string]interface{}{"$set": map[string]interface{}{"check_size": oldnum + int(size)}})
+					for i := 0; i < int(size); i++ {
 						newUser := make(map[string]interface{})
 						newUser["i_role"] = irole
 						newUser["s_name"] = ""
@@ -509,8 +509,8 @@ func (f *Front) UserNew() {
 					}
 				} else if irole == "4" {
 					oldnum := qu.IntAll((*info)["user_size"])
-					Mgo.UpdateById("s_group", gid, map[string]interface{}{"$set": map[string]interface{}{"user_size": oldnum + size}})
-					for i := 0; i < size; i++ {
+					Mgo.UpdateById("s_group", gid, map[string]interface{}{"$set": map[string]interface{}{"user_size": oldnum + int(size)}})
+					for i := 0; i < int(size); i++ {
 						newUser := make(map[string]interface{})
 						newUser["i_role"] = irole
 						newUser["s_name"] = ""
@@ -548,7 +548,7 @@ func (f *Front) UserNew() {
 				newUser["b_delete"] = false
 				Mgo.Save("s_user", newUser)
 			} else {
-				size, e := f.GetInteger("size")
+				size, e := f.GetInt("size")
 				if e != nil {
 					f.ServeJson(map[string]interface{}{
 						"rep": false,
@@ -560,8 +560,8 @@ func (f *Front) UserNew() {
 				if len(*info) > 0 {
 					if irole == "3" {
 						oldnum := qu.IntAll((*info)["check_size"])
-						Mgo.UpdateById("s_group", gid, map[string]interface{}{"$set": map[string]interface{}{"check_size": oldnum + size}})
-						for i := 0; i < size; i++ {
+						Mgo.UpdateById("s_group", gid, map[string]interface{}{"$set": map[string]interface{}{"check_size": oldnum + int(size)}})
+						for i := 0; i < int(size); i++ {
 							newUser := make(map[string]interface{})
 							newUser["i_role"] = irole
 							newUser["s_name"] = ""
@@ -577,8 +577,8 @@ func (f *Front) UserNew() {
 						}
 					} else if irole == "4" {
 						oldnum := qu.IntAll((*info)["user_size"])
-						Mgo.UpdateById("s_group", gid, map[string]interface{}{"$set": map[string]interface{}{"user_size": oldnum + size}})
-						for i := 0; i < size; i++ {
+						Mgo.UpdateById("s_group", gid, map[string]interface{}{"$set": map[string]interface{}{"user_size": oldnum + int(size)}})
+						for i := 0; i < int(size); i++ {
 							newUser := make(map[string]interface{})
 							newUser["i_role"] = irole
 							newUser["s_name"] = ""
@@ -668,7 +668,7 @@ func (f *Front) UserTaskSave() {
 			login := qu.ObjToString(userInfo["s_login"])
 			givenum := qu.IntAll(userInfo["i_givenum"])
 			userTaskId := primitive.NewObjectID()
-			userTaskIdStr := mgo.BsonIdToSId(userTaskId)
+			userTaskIdStr := mongodb.BsonIdToSId(userTaskId)
 			userTaskIdArr = append(userTaskIdArr, userTaskIdStr)
 			ut := Task{
 				UserId:   userid,
@@ -717,7 +717,7 @@ func (f *Front) UserTaskSave() {
 				//用户分发任务后更新该用户组任务的状态和开始时间
 				Mgo.Update(TASKCOLLNAME,
 					map[string]interface{}{
-						"_id":      mgo.StringTOBsonId(groupTaskId),
+						"_id":      mongodb.StringTOBsonId(groupTaskId),
 						"s_status": "未开始",
 					},
 					map[string]interface{}{
@@ -742,9 +742,9 @@ func (f *Front) UserTaskList() {
 	s_personid := qu.ObjToString(user["id"])
 	gid := qu.ObjToString(user["s_groupid"])
 	if f.Method() == "POST" {
-		start, _ := f.GetInteger("start")
-		limit, _ := f.GetInteger("length")
-		draw, _ := f.GetInteger("draw")
+		start, _ := f.GetInt("start")
+		limit, _ := f.GetInt("length")
+		draw, _ := f.GetInt("draw")
 		status := f.GetString("s_status")
 		searchStr := f.GetString("search[value]")
 		search := strings.TrimSpace(searchStr)
@@ -769,12 +769,12 @@ func (f *Front) UserTaskList() {
 			}
 		}
 		count := Mgo.Count(TASKCOLLNAME, query)
-		list, _ := Mgo.Find(TASKCOLLNAME, query, map[string]interface{}{"_id": -1}, nil, false, start, limit)
+		list, _ := Mgo.Find(TASKCOLLNAME, query, map[string]interface{}{"_id": -1}, nil, false, int(start), int(limit))
 		for _, l := range *list {
 			if status := qu.ObjToString(l["s_status"]); status == "进行中" { //更新任务进度
 				giveNum := qu.IntAll(l["i_givenum"])
 				sourceinfo := qu.ObjToString(l["s_sourceinfo"])
-				tagNum := Mgo.Count(sourceinfo, map[string]interface{}{"s_usertaskid": mgo.BsonIdToSId(l["_id"]), "b_istag": true})
+				tagNum := Mgo.Count(sourceinfo, map[string]interface{}{"s_usertaskid": mongodb.BsonIdToSId(l["_id"]), "b_istag": true})
 				progressFloat := float64(tagNum) / float64(giveNum)
 				value, _ := strconv.ParseFloat(fmt.Sprintf("%.4f", progressFloat), 64)
 				decimalValue := decimal.NewFromFloat(value)
@@ -1028,7 +1028,7 @@ func (f *Front) UserTask() {
 
 	if f.Method() == "POST" {
 
-		num, err := f.GetInteger("num")
+		num, err := f.GetInt("num")
 		grouptaskid := f.GetString("_id")
 		if err != nil {
 			f.ServeJson(map[string]interface{}{"success": false, "msg": "分发数据异常"})
@@ -1072,7 +1072,7 @@ func (f *Front) UserTask() {
 		success = Mgo.UpdateById(TASKCOLLNAME, grouptaskid, map[string]interface{}{
 			"$push": map[string]interface{}{
 				"v_sonids": map[string]interface{}{
-					"$each": append(userTaskIdArr, mgo.BsonIdToSId(userTaskId)),
+					"$each": append(userTaskIdArr, mongodb.BsonIdToSId(userTaskId)),
 				},
 			},
 		})
@@ -1084,7 +1084,7 @@ func (f *Front) UserTask() {
 				//用户分发任务后更新该用户组任务的状态和开始时间
 				Mgo.Update(TASKCOLLNAME,
 					map[string]interface{}{
-						"_id":      mgo.StringTOBsonId(grouptaskid),
+						"_id":      mongodb.StringTOBsonId(grouptaskid),
 						"s_status": "未开始",
 					},
 					map[string]interface{}{
@@ -1097,11 +1097,11 @@ func (f *Front) UserTask() {
 
 				ut := Task{
 					UserId:   s_userid,
-					GiveNum:  num,
+					GiveNum:  int(num),
 					UserName: s_login,
 				}
 				userTaskIdInfo := map[string]Task{}
-				userTaskIdInfo[mgo.BsonIdToSId(userTaskId)] = ut
+				userTaskIdInfo[mongodb.BsonIdToSId(userTaskId)] = ut
 				UpdateSourceInfoByUser(sourceinfo, grouptaskid, userTaskIdInfo) //用户分发任务成功后,同时更新任务数据源表
 			}
 		}
@@ -1116,7 +1116,7 @@ func (f *Front) UserTask() {
 		var data []map[string]interface{}
 		for _, m := range *info {
 			d1 := make(map[string]interface{})
-			d1["_id"] = mgo.BsonIdToSId(m["_id"])
+			d1["_id"] = mongodb.BsonIdToSId(m["_id"])
 			d1["pid"] = m["s_projectid"]
 			d1["coll"] = m["s_sourceinfo"]
 			d1["pname"] = m["s_projectname"]

+ 53 - 0
src/go.mod

@@ -0,0 +1,53 @@
+module dataValidation
+
+go 1.23.6
+
+require (
+	app.yhyue.com/moapp/jybase v0.0.0-20250403014436-53740a2395aa
+	github.com/aliyun/aliyun-oss-go-sdk v3.0.2+incompatible
+	github.com/dchest/captcha v1.1.0
+	github.com/go-ego/gse v0.80.3
+	github.com/gorilla/sessions v1.4.0
+	github.com/robfig/cron v1.2.0
+	github.com/shopspring/decimal v1.4.0
+	github.com/tealeg/xlsx v1.0.5
+	go.mongodb.org/mongo-driver v1.17.3
+	golang.org/x/text v0.23.0
+	jygit.jydev.jianyu360.cn/data_processing/common_utils v0.0.0-20240202055658-e2ef72e18b40
+)
+
+require (
+	github.com/PuerkitoBio/goquery v1.8.0 // indirect
+	github.com/andybalholm/cascadia v1.3.1 // indirect
+	github.com/fsnotify/fsnotify v1.7.0 // indirect
+	github.com/garyburd/redigo v1.6.2 // indirect
+	github.com/go-xweb/httpsession v0.0.0-20141220075701-356d3b4d38d6 // indirect
+	github.com/go-xweb/log v0.0.0-20140701090824-270d183ad77e // indirect
+	github.com/go-xweb/uuid v0.0.0-20140604020037-d7dce341f851 // indirect
+	github.com/gogf/gf/v2 v2.7.0 // indirect
+	github.com/golang/snappy v0.0.4 // indirect
+	github.com/gomodule/redigo v1.8.9 // indirect
+	github.com/gorilla/securecookie v1.1.2 // indirect
+	github.com/howeyc/fsnotify v0.9.0 // indirect
+	github.com/josharian/intern v1.0.0 // indirect
+	github.com/klauspost/compress v1.16.7 // indirect
+	github.com/lunny/csession v0.0.0-20130910075847-fe53c5de3dfd // indirect
+	github.com/mailru/easyjson v0.7.7 // indirect
+	github.com/mattn/go-sqlite3 v1.14.27 // indirect
+	github.com/montanaflynn/stats v0.7.1 // indirect
+	github.com/olivere/elastic/v7 v7.0.32 // indirect
+	github.com/pkg/errors v0.9.1 // indirect
+	github.com/vcaesar/cedar v0.20.2 // indirect
+	github.com/xdg-go/pbkdf2 v1.0.0 // indirect
+	github.com/xdg-go/scram v1.1.2 // indirect
+	github.com/xdg-go/stringprep v1.0.4 // indirect
+	github.com/youmark/pkcs8 v0.0.0-20240726163527-a2c0da244d78 // indirect
+	go.opentelemetry.io/otel v1.14.0 // indirect
+	go.opentelemetry.io/otel/trace v1.14.0 // indirect
+	golang.org/x/crypto v0.26.0 // indirect
+	golang.org/x/net v0.21.0 // indirect
+	golang.org/x/sync v0.12.0 // indirect
+	golang.org/x/sys v0.23.0 // indirect
+	golang.org/x/time v0.11.0 // indirect
+	gopkg.in/mgo.v2 v2.0.0-20190816093944-a6b53ec6cb22 // indirect
+)

+ 296 - 0
src/go.sum

@@ -0,0 +1,296 @@
+app.yhyue.com/moapp/jybase v0.0.0-20250403014436-53740a2395aa h1:F45Yi0O0W7ezagpb4EWc57CGNoQ60HN3Ut7npO/sto4=
+app.yhyue.com/moapp/jybase v0.0.0-20250403014436-53740a2395aa/go.mod h1:OEtMbsn7wY/7MLgV7yDUpVDKExUoj3B8h+4w4ZckJQQ=
+cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw=
+github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU=
+github.com/BurntSushi/toml v1.2.0 h1:Rt8g24XnyGTyglgET/PRUNlrUeu9F5L+7FilkXfZgs0=
+github.com/BurntSushi/toml v1.2.0/go.mod h1:CxXYINrC8qIiEnFrOxCa7Jy5BFHlXnUU2pbicEuybxQ=
+github.com/PuerkitoBio/goquery v1.8.0 h1:PJTF7AmFCFKk1N6V6jmKfrNH9tV5pNE6lZMkG0gta/U=
+github.com/PuerkitoBio/goquery v1.8.0/go.mod h1:ypIiRMtY7COPGk+I/YbZLbxsxn9g5ejnI2HSMtkjZvI=
+github.com/aliyun/aliyun-oss-go-sdk v3.0.2+incompatible h1:8psS8a+wKfiLt1iVDX79F7Y6wUM49Lcha2FMXt4UM8g=
+github.com/aliyun/aliyun-oss-go-sdk v3.0.2+incompatible/go.mod h1:T/Aws4fEfogEE9v+HPhhw+CntffsBHJ8nXQCwKr0/g8=
+github.com/andybalholm/cascadia v1.3.1 h1:nhxRkql1kdYCc8Snf7D5/D3spOX+dBgjA6u8x004T2c=
+github.com/andybalholm/cascadia v1.3.1/go.mod h1:R4bJ1UQfqADjvDa4P6HZHLh/3OxWWEqc0Sk8XGwHqvA=
+github.com/aws/aws-sdk-go v1.43.21/go.mod h1:y4AeaBuwd2Lk+GepC1E9v0qOiTws0MIWAX4oIKwKHZo=
+github.com/benbjohnson/clock v1.1.0/go.mod h1:J11/hYXuz8f4ySSvYwY0FKfm+ezbsZBKZxNJlLklBHA=
+github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU=
+github.com/clbanning/mxj/v2 v2.7.0 h1:WA/La7UGCanFe5NpHF0Q3DNtnCsVoxbPKuyBNHWRyME=
+github.com/clbanning/mxj/v2 v2.7.0/go.mod h1:hNiWqW14h+kc+MdF9C6/YoRfjEJoR3ou6tn/Qo+ve2s=
+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/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/dchest/captcha v1.0.0/go.mod h1:7zoElIawLp7GUMLcj54K9kbw+jEyvz2K0FDdRRYhvWo=
+github.com/dchest/captcha v1.1.0 h1:2kt47EoYUUkaISobUdTbqwx55xvKOJxyScVfw25xzhQ=
+github.com/dchest/captcha v1.1.0/go.mod h1:7zoElIawLp7GUMLcj54K9kbw+jEyvz2K0FDdRRYhvWo=
+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/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c=
+github.com/fatih/color v1.15.0 h1:kOqh6YHBtK8aywxGerMG2Eq3H6Qgoqeo13Bk2Mv/nBs=
+github.com/fatih/color v1.15.0/go.mod h1:0h5ZqXfHYED7Bhv2ZJamyIOUej9KtShiJESRwBDUSsw=
+github.com/fortytw2/leaktest v1.3.0 h1:u8491cBMTQ8ft8aeV+adlcytMZylmA5nnwwkRZjI8vw=
+github.com/fortytw2/leaktest v1.3.0/go.mod h1:jDsjWgpAGjm2CA7WthBh/CdZYEPF31XHquHwclZch5g=
+github.com/fsnotify/fsnotify v1.7.0 h1:8JEhPFa5W2WU7YfeZzPNqzMP6Lwt7L2715Ggo0nosvA=
+github.com/fsnotify/fsnotify v1.7.0/go.mod h1:40Bi/Hjc2AVfZrqy+aj+yEI+/bRxZnMJyTJwOpGvigM=
+github.com/garyburd/redigo v1.6.2 h1:yE/pwKCrbLpLpQICzYTeZ7JsTA/C53wFTJHaEtRqniM=
+github.com/garyburd/redigo v1.6.2/go.mod h1:NR3MbYisc3/PwhQ00EMzDiPmrwpPxAn5GI05/YaO1SY=
+github.com/go-ego/gse v0.80.3 h1:YNFkjMhlhQnUeuoFcUEd1ivh6SOB764rT8GDsEbDiEg=
+github.com/go-ego/gse v0.80.3/go.mod h1:Gt3A9Ry1Eso2Kza4MRaiZ7f2DTAvActmETY46Lxg0gU=
+github.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A=
+github.com/go-logr/logr v1.2.3 h1:2DntVwHkVopvECVRSlL5PSo9eG+cAkDCuckLubN+rq0=
+github.com/go-logr/logr v1.2.3/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A=
+github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag=
+github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE=
+github.com/go-sql-driver/mysql v1.6.0/go.mod h1:DCzpHaOWr8IXmIStZouvnhqoel9Qv2LBy8hT2VhHyBg=
+github.com/go-xweb/httpsession v0.0.0-20141220075701-356d3b4d38d6 h1:DUiWdm3rS8cC96Y0XeVkDeizzEK6X+qiNgXytLVtbkM=
+github.com/go-xweb/httpsession v0.0.0-20141220075701-356d3b4d38d6/go.mod h1:lwPk13GS+i/NK4FkMm68IcJrAwiu+HtjYa1Y4kW59aY=
+github.com/go-xweb/log v0.0.0-20140701090824-270d183ad77e h1:xmffs7hgrWpAOcquZrdlWpAEaAdlI9myaYcUUmhIP7k=
+github.com/go-xweb/log v0.0.0-20140701090824-270d183ad77e/go.mod h1:ASmYUSBf32lWkkNVX/pnOU4MLuUQpFH4qYHvWHt/l0w=
+github.com/go-xweb/uuid v0.0.0-20140604020037-d7dce341f851 h1:D46USD6oGNWzoJ/h5CWaFq3ELLoLoJzllJ03Xh78VYg=
+github.com/go-xweb/uuid v0.0.0-20140604020037-d7dce341f851/go.mod h1:OmDEC58ZYO1Esk+Uy32SB6LWof9lyROl7q76dBFOCWw=
+github.com/go-xweb/xweb v0.2.1 h1:u5t/ttuSfxiIMDTXj/Pouw9C2ASNABWT16JWHyrtdvY=
+github.com/go-xweb/xweb v0.2.1/go.mod h1:vPjYJgfidYAgBKIwiAyKFC1hfczlqsw9rRT8LtwrGew=
+github.com/gogf/gf/v2 v2.7.0 h1:CjxhbMiE7oqf6K8ZtGuKt3dQEwK4vL6LhiI+dI7tJGU=
+github.com/gogf/gf/v2 v2.7.0/go.mod h1:Qu8nimKt9aupJQcdUL85tWF4Mfxocz97zUt8UC4abVI=
+github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q=
+github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=
+github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da/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.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
+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.3/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI=
+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 h1:Sl3u+2BI/kk+VEatbj0scLdrFhjPmbxOc1myhDP41ws=
+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.3/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.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI=
+github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
+github.com/google/gofuzz v1.2.0 h1:xRy4A+RhZaiKjJ1bPfwQ8sedCA+YS2YcCHW6ec7JMi0=
+github.com/google/gofuzz v1.2.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg=
+github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
+github.com/gorilla/securecookie v1.1.2 h1:YCIWL56dvtr73r6715mJs5ZvhtnY73hBvEF8kXD8ePA=
+github.com/gorilla/securecookie v1.1.2/go.mod h1:NfCASbcHqRSY+3a8tlWJwsQap2VX5pwzwo4h3eOamfo=
+github.com/gorilla/sessions v1.4.0 h1:kpIYOp/oi6MG/p5PgxApU8srsSw9tuFbt46Lt7auzqQ=
+github.com/gorilla/sessions v1.4.0/go.mod h1:FLWm50oby91+hl7p/wRxDth9bWSuk0qVL2emc7lT5ik=
+github.com/gorilla/websocket v1.5.0 h1:PPwGk2jz7EePpoHN/+ClbZu8SPxiqlu12wZP/3sWmnc=
+github.com/gorilla/websocket v1.5.0/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE=
+github.com/grokify/html-strip-tags-go v0.0.1 h1:0fThFwLbW7P/kOiTBs03FsJSV9RM2M/Q/MOnCQxKMo0=
+github.com/grokify/html-strip-tags-go v0.0.1/go.mod h1:2Su6romC5/1VXOQMaWL2yb618ARB8iVo6/DR99A6d78=
+github.com/howeyc/fsnotify v0.9.0 h1:0gtV5JmOKH4A8SsFxG2BczSeXWWPvcMT0euZt5gDAxY=
+github.com/howeyc/fsnotify v0.9.0/go.mod h1:41HzSPxBGeFRQKEEwgh49TRw/nKBsYZ2cF1OzPjSJsA=
+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 h1:vlS4z54oSdjm0bgjRigI+G1HpF+tI+9rE5LLzOg8HmY=
+github.com/josharian/intern v1.0.0/go.mod h1:5DoeVV0s6jJacbCEi61lwdGj/aVlrQvzHFFd8Hwg//Y=
+github.com/klauspost/compress v1.13.6/go.mod h1:/3/Vjq9QcHkK5uEr5lBEmyoZ1iFhe47etQ6QUkpK6sk=
+github.com/klauspost/compress v1.16.7 h1:2mk3MPGNzKyxErAw8YaohYh69+pa4sIQSC0fPGCFR9I=
+github.com/klauspost/compress v1.16.7/go.mod h1:ntbaceVETuRiXiv4DpjP66DpAtAGkEQskQzEyD//IeE=
+github.com/kr/pretty v0.1.0 h1:L/CwN0zerZDmRFUapSPitk6f+Q3+0za1rQkzVuMiMFI=
+github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo=
+github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ=
+github.com/kr/text v0.1.0 h1:45sCR5RtlFHMR4UwH9sdQ5TC8v0qDQCHnXt+kaKSTVE=
+github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI=
+github.com/lunny/csession v0.0.0-20130910075847-fe53c5de3dfd h1:DXxmBCahjva4Ox4AWOv6pR1Csv33zSj97SaLOElfIsw=
+github.com/lunny/csession v0.0.0-20130910075847-fe53c5de3dfd/go.mod h1:3w9PScemEkJoLw3OYvLWMoD8XRCmXgGwsSpT6pFpJ0g=
+github.com/magiconair/properties v1.8.6 h1:5ibWZ6iY0NctNGWo87LalDlEZ6R41TqbbDamhfG/Qzo=
+github.com/magiconair/properties v1.8.6/go.mod h1:y3VJvCyxH9uVvJTWEGAELF3aiYNyPKd5NZ3oSwXrF60=
+github.com/mailru/easyjson v0.7.7 h1:UGYAvKxe3sBsEDzO8ZeWOSlIQfWFlxbzLZe7hwFURr0=
+github.com/mailru/easyjson v0.7.7/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc=
+github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA=
+github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg=
+github.com/mattn/go-isatty v0.0.17 h1:BTarxUcIeDqL27Mc+vyvdWYSL28zpIhv3RoTdsLMPng=
+github.com/mattn/go-isatty v0.0.17/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM=
+github.com/mattn/go-runewidth v0.0.9 h1:Lm995f3rfxdpd6TSmuVCHVb/QhupuXlYr8sCI/QdE+0=
+github.com/mattn/go-runewidth v0.0.9/go.mod h1:H031xJmbD/WCDINGzjvQ9THkh0rPKHF+m2gUSrubnMI=
+github.com/mattn/go-sqlite3 v1.14.27 h1:drZCnuvf37yPfs95E5jd9s3XhdVWLal+6BOK6qrv6IU=
+github.com/mattn/go-sqlite3 v1.14.27/go.mod h1:Uh1q+B4BYcTPb+yiD3kU8Ct7aC0hY9fxUwlHK0RXw+Y=
+github.com/montanaflynn/stats v0.0.0-20171201202039-1bf9dbcd8cbe/go.mod h1:wL8QJuTMNUDYhXwkmfOly8iTdp5TEcJFWZD2D7SIkUc=
+github.com/montanaflynn/stats v0.7.1 h1:etflOAAHORrCC44V+aR6Ftzort912ZU+YLiSTuV8eaE=
+github.com/montanaflynn/stats v0.7.1/go.mod h1:etXPPgVO6n31NxCd9KQUMvCM+ve0ruNzt6R8Bnaayow=
+github.com/nsqio/go-nsq v1.1.0/go.mod h1:vKq36oyeVXgsS5Q8YEO7WghqidAVXQlcFxzQbQTuDEY=
+github.com/olekukonko/tablewriter v0.0.5 h1:P2Ga83D34wi1o9J6Wh1mRuqd4mF/x/lgBS7N7AbDhec=
+github.com/olekukonko/tablewriter v0.0.5/go.mod h1:hPp6KlRPjbx+hW8ykQs1w3UBbZlj6HuIJcUGPhkA7kY=
+github.com/olivere/elastic/v7 v7.0.32 h1:R7CXvbu8Eq+WlsLgxmKVKPox0oOwAE/2T9Si5BnvK6E=
+github.com/olivere/elastic/v7 v7.0.32/go.mod h1:c7PVmLe3Fxq77PIfY/bZmxY/TAamBhCzZ8xDOE09a9k=
+github.com/opentracing/opentracing-go v1.2.0/go.mod h1:GxEUsuufX4nBwe+T+Wl9TAgYrxe9dPLANfrWvHYVTgc=
+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_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA=
+github.com/robfig/cron v1.2.0 h1:ZjScXvvxeQ63Dbyxy76Fj3AT3Ut0aKsyd2/tl3DTMuQ=
+github.com/robfig/cron v1.2.0/go.mod h1:JGuDeoQd7Z6yL4zQhZ3OPEVHB7fL6Ka6skscFHfmt2k=
+github.com/shopspring/decimal v1.4.0 h1:bxl37RwXBklmTi0C79JfXCEBD1cqqHt0bbgBAGFp81k=
+github.com/shopspring/decimal v1.4.0/go.mod h1:gawqmDU56v4yIKSwfBSFip1HdCCXN8/+DMd9qYNcwME=
+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/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI=
+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.8.2 h1:+h33VjcLVPDHtOdpUCuF+7gSuG3yGIftsP1YvFihtJ8=
+github.com/stretchr/testify v1.8.2/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4=
+github.com/tealeg/xlsx v1.0.5 h1:+f8oFmvY8Gw1iUXzPk+kz+4GpbDZPK1FhPiQRd+ypgE=
+github.com/tealeg/xlsx v1.0.5/go.mod h1:btRS8dz54TDnvKNosuAqxrM1QgN1udgk9O34bDCnORM=
+github.com/tidwall/pretty v1.0.0/go.mod h1:XNkn88O1ChpSDQmQeStsy+sBenx6DDtFZJxhVysOjyk=
+github.com/vcaesar/cedar v0.20.2 h1:TDx7AdZhilKcfE1WvdToTJf5VrC/FXcUOW+KY1upLZ4=
+github.com/vcaesar/cedar v0.20.2/go.mod h1:lyuGvALuZZDPNXwpzv/9LyxW+8Y6faN7zauFezNsnik=
+github.com/vcaesar/tt v0.20.1 h1:D/jUeeVCNbq3ad8M7hhtB3J9x5RZ6I1n1eZ0BJp7M+4=
+github.com/vcaesar/tt v0.20.1/go.mod h1:cH2+AwGAJm19Wa6xvEa+0r+sXDJBT0QgNQey6mwqLeU=
+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.1.1/go.mod h1:RaEWvsqvNKKvBPvcKeFjrG2cJqOkHTiyTpzz23ni57g=
+github.com/xdg-go/scram v1.1.2 h1:FHX5I5B4i4hKRVRBCFRxq1iQRej7WO3hhBuJf+UUySY=
+github.com/xdg-go/scram v1.1.2/go.mod h1:RT/sEzTbU5y00aCK8UOx6R7YryM0iF1N2MOmC3kKLN4=
+github.com/xdg-go/stringprep v1.0.3/go.mod h1:W3f5j4i+9rC0kuIEJL0ky1VpHXQU3ocBgklLGvcBnW8=
+github.com/xdg-go/stringprep v1.0.4 h1:XLI/Ng3O1Atzq0oBs3TWm+5ZVgkq2aqdlvP9JtoZ6c8=
+github.com/xdg-go/stringprep v1.0.4/go.mod h1:mPGuuIYwz7CmR2bT9j4GbQqutWS1zV24gijq1dTyGkM=
+github.com/youmark/pkcs8 v0.0.0-20181117223130-1be2e3e5546d/go.mod h1:rHwXgn7JulP+udvsHwJoVG1YGAP6VLg4y9I5dyZdqmA=
+github.com/youmark/pkcs8 v0.0.0-20240726163527-a2c0da244d78 h1:ilQV1hzziu+LLM3zUTJ0trRztfwgjqKnBWNtSRkbmwM=
+github.com/youmark/pkcs8 v0.0.0-20240726163527-a2c0da244d78/go.mod h1:aL8wCCfTfSfmXjznFBSZNN13rSJjlIOI1fUNAtF7rmI=
+github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k=
+github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY=
+go.mongodb.org/mongo-driver v1.10.1/go.mod h1:z4XpeoU6w+9Vht+jAFyLgVrD+jGSQQe0+CBWFHNiHt8=
+go.mongodb.org/mongo-driver v1.17.3 h1:TQyXhnsWfWtgAhMtOgtYHMTkZIfBTpMTsMnd9ZBeHxQ=
+go.mongodb.org/mongo-driver v1.17.3/go.mod h1:Hy04i7O2kC4RS06ZrhPRqj/u4DTYkFDAAccj+rVKqgQ=
+go.opencensus.io v0.23.0/go.mod h1:XItmlyltB5F7CS4xOC1DcqMoFqwtC6OG2xF7mCv7P7E=
+go.opentelemetry.io/otel v1.5.0/go.mod h1:Jm/m+rNp/z0eqJc74H7LPwQ3G87qkU/AnnAydAjSAHk=
+go.opentelemetry.io/otel v1.14.0 h1:/79Huy8wbf5DnIPhemGB+zEPVwnN6fuQybr/SRXa6hM=
+go.opentelemetry.io/otel v1.14.0/go.mod h1:o4buv+dJzx8rohcUeRmWUZhqupFvzWis188WlggnNeU=
+go.opentelemetry.io/otel/sdk v1.14.0 h1:PDCppFRDq8A1jL9v6KMI6dYesaq+DFcDZvjsoGvxGzY=
+go.opentelemetry.io/otel/sdk v1.14.0/go.mod h1:bwIC5TjrNG6QDCHNWvW4HLHtUQ4I+VQDsnjhvyZCALM=
+go.opentelemetry.io/otel/trace v1.5.0/go.mod h1:sq55kfhjXYr1zVSyexg0w1mpa03AYXR5eyTkB9NPPdE=
+go.opentelemetry.io/otel/trace v1.14.0 h1:wp2Mmvj41tDsyAJXiWDWpfNsOiIyd38fy85pyKcFq/M=
+go.opentelemetry.io/otel/trace v1.14.0/go.mod h1:8avnQLK+CG77yNLUae4ea2JDQ6iT+gozhnZjy/rw9G8=
+go.uber.org/atomic v1.7.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc=
+go.uber.org/goleak v1.1.11/go.mod h1:cwTWslyiVhfpKIDGSZEM2HlOvcqm+tG4zioyIeLoqMQ=
+go.uber.org/multierr v1.6.0/go.mod h1:cdWPpRnG4AhwMwsgIHip0KRBQjJy5kYEpYjJxpXp9iU=
+go.uber.org/zap v1.22.0/go.mod h1:H4siCOZOrAolnUPJEkfaSjDqyP+BDS0DdDWzwcgt3+U=
+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-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
+golang.org/x/crypto v0.0.0-20220622213112-05595931fe9d/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4=
+golang.org/x/crypto v0.26.0 h1:RrRspgV4mU+YwB4FYnuBoKsUapNIL5cohGAmSH3azsw=
+golang.org/x/crypto v0.26.0/go.mod h1:GY7jblb9wI+FOo5y8/S2oY4zWP07AkOJ4+jxCqdqn54=
+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/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
+golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4=
+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-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-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
+golang.org/x/net v0.0.0-20201110031124-69a78807bb2b/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-20210916014120-12bc252f5db8/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
+golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
+golang.org/x/net v0.0.0-20220127200216-cd36cc0744dd/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk=
+golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c=
+golang.org/x/net v0.21.0 h1:AQyQV4dYCvJ7vGmJyKki9+PBdyvhkSd8EIx/qb0AYv4=
+golang.org/x/net v0.21.0/go.mod h1:bIjVDfnllIU7BJ2DNgfnXvpSvtn8VRwhlsaeUTyUS44=
+golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
+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-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
+golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
+golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
+golang.org/x/sync v0.12.0 h1:MHc5BpPuC30uJk597Ri8TV3CNZcTLu6B6z4lJy+g6Jw=
+golang.org/x/sync v0.12.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA=
+golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/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-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-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20210423082822-04245dca01da/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-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.0.0-20211216021012-1d35b9e2eb4e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.23.0 h1:YfKFowiIMvtgl1UERQoTPPToxltDeZfbj4H7dVUCwmM=
+golang.org/x/sys v0.23.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
+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.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
+golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
+golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ=
+golang.org/x/text v0.3.8/go.mod h1:E6s5w1FMmriuDzIBO73fBruAKo1PCIq6d2Q6DHfQ8WQ=
+golang.org/x/text v0.23.0 h1:D71I7dUrlY+VX0gQShAThNGHFxZ13dGLBHQLVl1mJlY=
+golang.org/x/text v0.23.0/go.mod h1:/BLNzu4aZCJ1+kcD0DNRotWKage4q2rGVAg4o22unh4=
+golang.org/x/time v0.11.0 h1:/bpjEDfN9tkoN/ryeYHnv5hcMlc8ncjMcM4XBk5NWV0=
+golang.org/x/time v0.11.0/go.mod h1:CDIdPxbZBQxdj6cxyCIdrNogrJKMJ7pr37NYpMcMDSg=
+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-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
+golang.org/x/tools v0.1.5/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk=
+golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc=
+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-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc=
+google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo=
+google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c=
+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.2/go.mod h1:JMHMWHQWaTccqQQlmk3MJZS+GWXOdAesneDmEnv2fbc=
+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=
+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 h1:YR8cESwS4TdDjEe65xsg0ogRM/Nc3DYOhEAlW+xobZo=
+gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
+gopkg.in/mgo.v2 v2.0.0-20190816093944-a6b53ec6cb22 h1:VpOs+IwYnYBaFnrNAeB8UUWtL3vEUnzSCL1nVjPhqrw=
+gopkg.in/mgo.v2 v2.0.0-20190816093944-a6b53ec6cb22/go.mod h1:yeKp02qBN3iKW1OzL3MGk2IdtZzaj7SFntXj72NppTA=
+gopkg.in/natefinch/lumberjack.v2 v2.0.0/go.mod h1:l0ndWWf7gzL7RNwBG7wST/UCcT4T24xpD6X8LsfU/+k=
+gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
+gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY=
+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.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
+gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
+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=
+jygit.jydev.jianyu360.cn/data_processing/common_utils v0.0.0-20240202055658-e2ef72e18b40 h1:xTeRmpFgwOdu+NbWg/YntX3MnQpttm7jj33C1+JdBTk=
+jygit.jydev.jianyu360.cn/data_processing/common_utils v0.0.0-20240202055658-e2ef72e18b40/go.mod h1:1Rp0ioZBhikjXHYYXmnzL6RNfvTDM/2XvRB+vuPLurI=

+ 7 - 8
src/main.go

@@ -1,15 +1,14 @@
 package main
 
 import (
-	"crons"
-	_ "filter"
-	"front"
-	"github.com/cron"
-	qu "qfw/util"
+	"app.yhyue.com/moapp/jybase/go-xweb/xweb"
+	"dataValidation/crons"
+	_ "dataValidation/filter"
+	"dataValidation/front"
+	. "dataValidation/util"
+	"github.com/robfig/cron"
+	qu "jygit.jydev.jianyu360.cn/data_processing/common_utils"
 	"time"
-	. "util"
-
-	"github.com/go-xweb/xweb"
 )
 
 func init() {

+ 16 - 16
src/qua/method.go

@@ -1,16 +1,16 @@
 package qua
 
 import (
+	u "dataValidation/util"
 	"github.com/go-ego/gse"
-	qu "qfw/util"
+	qu "jygit.jydev.jianyu360.cn/data_processing/common_utils"
 	"regexp"
 	"strings"
 	"unicode"
 	"unicode/utf8"
-	u "util"
 )
 
-//单位
+// 单位
 var specHeadReg *regexp.Regexp = regexp.MustCompile("^([a-zA-Z]{1,2}[\u4e00-\u9fa5]{6,}|某部|州|自治区|自治州|街道|名称|省|市|县|区|业绩|资格|中标|项目|预算单位)")
 var unHanHeadReg *regexp.Regexp = regexp.MustCompile("^([\u4e00-\u9fa5])")
 var unConReg *regexp.Regexp = regexp.MustCompile("(园|政府|集团|公司|有限|合伙|企|院|学|局|处|校)")
@@ -18,10 +18,10 @@ var unEndReg *regexp.Regexp = regexp.MustCompile("^.*(公司|学(校)?|博物馆
 var unenableReg1 *regexp.Regexp = regexp.MustCompile("^([\u4e00-\u9fa5]{1,2}(责任|有限|有限股份|有限责任|实业)公司|.*(某部|先生|女士|小姐)|工程技术处)$")
 var unenableReg2 *regexp.Regexp = regexp.MustCompile("(\\?|?|单位|#|xxxx|\\*\\*|%|万元|设计企业|免费|代表|代码标识|盖电子|测试测试|删除|错误|吊销|注销|发起人|待清理|&#|护照号|身份证号|\" +\n\t\"法人|&nbsp|国家拨入|借款|积累资金|认股人|--|、|&|`|美元)")
 
-//分词
+// 分词
 var GSE *gse.Segmenter = &gse.Segmenter{}
 
-//编号
+// 编号
 var codeUnConReg *regexp.Regexp = regexp.MustCompile("(null|勘察|测试|设计|设备|项目|标段|工程|监理|范围|分包|月|日|天)")
 var codeUnLenReg *regexp.Regexp = regexp.MustCompile("([\u4e00-\u9fa5]{9,})")
 
@@ -46,7 +46,7 @@ func init() {
 	}
 }
 
-//行业金额校验
+// 行业金额校验
 func checkingClassMoney(money float64, class string) bool {
 	data := classMoneyScope[class]
 	if data != nil {
@@ -59,7 +59,7 @@ func checkingClassMoney(money float64, class string) bool {
 	return false
 }
 
-//企业库检测
+// 企业库检测
 func qyNameIsExistsQYXY(name string) bool {
 	q := map[string]interface{}{"company_name": name}
 	data, _ := u.Mgo_QY.FindOne("qyxy_std", q)
@@ -69,7 +69,7 @@ func qyNameIsExistsQYXY(name string) bool {
 	return false
 }
 
-//采购单位库
+// 采购单位库
 func buyerNameIsExists(name string) bool {
 	q := map[string]interface{}{"buyer_name": name}
 	data, _ := u.Mgo_QY.FindOne("buyer_enterprise", q)
@@ -79,7 +79,7 @@ func buyerNameIsExists(name string) bool {
 	return false
 }
 
-//包含非中文
+// 包含非中文
 func isUnHan(str string) bool {
 	var count int
 	for _, v := range str {
@@ -91,7 +91,7 @@ func isUnHan(str string) bool {
 	return count > 0
 }
 
-//是否含中文
+// 是否含中文
 func isHan(str string) bool {
 	var count int
 	for _, v := range str {
@@ -103,7 +103,7 @@ func isHan(str string) bool {
 	return count > 0
 }
 
-//符号数量
+// 符号数量
 func isCharCount(str string) []int {
 	//中文,英文,数字,其他
 	c1, c2, c3, c4 := 0, 0, 0, 0
@@ -121,7 +121,7 @@ func isCharCount(str string) []int {
 	return []int{c1, c2, c3, c4}
 }
 
-//中文比例-1:3
+// 中文比例-1:3
 func isHanLenToLittle(str string) bool {
 	var count int
 	len := utf8.RuneCountInString(str)
@@ -137,7 +137,7 @@ func isHanLenToLittle(str string) bool {
 	return false
 }
 
-//是否含字母数字
+// 是否含字母数字
 func isAlphanumeric(str string) bool {
 	var count int
 	for _, v := range str {
@@ -149,7 +149,7 @@ func isAlphanumeric(str string) bool {
 	return count > 0
 }
 
-//连续数字
+// 连续数字
 func isRegTimeDateCode(str string) bool {
 	reg := `\d{8}`
 	regx, _ := regexp.Compile(reg)
@@ -162,7 +162,7 @@ func isRegTimeDateCode(str string) bool {
 	return false
 }
 
-//配置字段初始分
+// 配置字段初始分
 func FieldSourceScore(source map[string]interface{}) map[string]int64 {
 	fieldArr := []string{"buyer", "s_winner", "budget", "bidamount", "projectname", "projectcode"}
 	score := make(map[string]int64, 0)
@@ -194,7 +194,7 @@ func FieldSourceScore(source map[string]interface{}) map[string]int64 {
 	return score
 }
 
-//规范-抽取来源字符串
+// 规范-抽取来源字符串
 func normalizedExtFromName(str string) string {
 	if strings.Contains(str, "order") {
 		str = "winnerorder"

+ 26 - 25
src/qua/scorebidamount.go

@@ -1,63 +1,64 @@
 package qua
+
 import (
+	u "dataValidation/util"
 	"fmt"
 	"go.mongodb.org/mongo-driver/bson/primitive"
-	qu "qfw/util"
-	u "util"
+	qu "jygit.jydev.jianyu360.cn/data_processing/common_utils"
 )
 
-func BidamountFieldScore(tmp map[string]interface{},score int64) (map[string]interface{}) {
+func BidamountFieldScore(tmp map[string]interface{}, score int64) map[string]interface{} {
 
 	bidamount := qu.Float64All(tmp["bidamount"])
 	budget := qu.Float64All(tmp["budget"])
-	reason,desc:=fmt.Sprintf("%d初始分",score),""
+	reason, desc := fmt.Sprintf("%d初始分", score), ""
 
 	/*错误项*/
-	if (bidamount < 10.0 || bidamount > 20000000000.0 ) {
+	if bidamount < 10.0 || bidamount > 20000000000.0 {
 		return map[string]interface{}{
-			"score":int64(0),
-			"reason":"错误:大小",
+			"score":  int64(0),
+			"reason": "错误:大小",
 		}
 	}
 
 	/*减分项
-	    "行业范围": 1,
-	    "间隔异常": 2
+	  "行业范围": 1,
+	  "间隔异常": 2
 	*/
 
 	if budget > 0.0 {
-		proportion := bidamount/budget
-		if (proportion>=0.1&&proportion<=0.3)||(proportion>=3&&proportion<=5){
+		proportion := bidamount / budget
+		if (proportion >= 0.1 && proportion <= 0.3) || (proportion >= 3 && proportion <= 5) {
 			desc = "间隔异常"
-			reason+="~"+desc + fmt.Sprintf("-%d",qu.Int64All(u.Bidamount_Score[desc]))
+			reason += "~" + desc + fmt.Sprintf("-%d", qu.Int64All(u.Bidamount_Score[desc]))
 			score -= qu.Int64All(u.Bidamount_Score[desc])
 		}
-		if proportion>=0.001&&proportion<0.1{
+		if proportion >= 0.001 && proportion < 0.1 {
 			return map[string]interface{}{
-				"score":int64(0),
-				"reason":"错误:比例",
+				"score":  int64(0),
+				"reason": "错误:比例",
 			}
 		}
 	}
 
-	class := make(map[string]interface{},0)
-	if topscopeclass, ok := tmp["topscopeclass"].(primitive.A); ok&&len(topscopeclass)>0 {
-		for _,v := range topscopeclass{
+	class := make(map[string]interface{}, 0)
+	if topscopeclass, ok := tmp["topscopeclass"].(primitive.A); ok && len(topscopeclass) > 0 {
+		for _, v := range topscopeclass {
 			value := qu.ObjToString(v)
 			new_value := value[:len(value)-1]
-			if class[new_value]==nil {//校验行业
-				if !checkingClassMoney(bidamount,new_value) {
+			if class[new_value] == nil { //校验行业
+				if !checkingClassMoney(bidamount, new_value) {
 					desc = "行业范围"
-					reason+="~"+desc + fmt.Sprintf("-%d",qu.Int64All(u.Bidamount_Score[desc]))
+					reason += "~" + desc + fmt.Sprintf("-%d", qu.Int64All(u.Bidamount_Score[desc]))
 					score -= qu.Int64All(u.Bidamount_Score[desc])
 				}
-				class[new_value]=1
+				class[new_value] = 1
 			}
 		}
 	}
 
 	return map[string]interface{}{
-		"score":score,
-		"reason":reason,
+		"score":  score,
+		"reason": reason,
 	}
-}
+}

+ 24 - 26
src/qua/scorebudget.go

@@ -1,23 +1,23 @@
 package qua
 
 import (
+	u "dataValidation/util"
 	"fmt"
 	"go.mongodb.org/mongo-driver/bson/primitive"
-	qu "qfw/util"
-	u "util"
+	qu "jygit.jydev.jianyu360.cn/data_processing/common_utils"
 )
 
-func BudgetFieldScore(tmp map[string]interface{},score int64) (map[string]interface{}) {
+func BudgetFieldScore(tmp map[string]interface{}, score int64) map[string]interface{} {
 
 	budget := qu.Float64All(tmp["budget"])
 	bidamount := qu.Float64All(tmp["bidamount"])
-	reason,desc:=fmt.Sprintf("%d初始分",score),""
+	reason, desc := fmt.Sprintf("%d初始分", score), ""
 
 	/*错误项*/
-	if (budget<10.0||budget>20000000000.0)  {
+	if budget < 10.0 || budget > 20000000000.0 {
 		return map[string]interface{}{
-			"score":int64(0),
-			"reason":"错误:大小",
+			"score":  int64(0),
+			"reason": "错误:大小",
 		}
 	}
 
@@ -26,41 +26,39 @@ func BudgetFieldScore(tmp map[string]interface{},score int64) (map[string]interf
 	    "间隔异常": 2
 	*/
 
-	if bidamount > 0.0 && budget >0.0 {
-		proportion := bidamount/budget
-		if (proportion>=0.1&&proportion<=0.3)||(proportion>=3&&proportion<=5){
+	if bidamount > 0.0 && budget > 0.0 {
+		proportion := bidamount / budget
+		if (proportion >= 0.1 && proportion <= 0.3) || (proportion >= 3 && proportion <= 5) {
 			desc = "间隔异常"
-			reason+="~"+desc + fmt.Sprintf("-%d",qu.Int64All(u.Budget_Score[desc]))
+			reason += "~" + desc + fmt.Sprintf("-%d", qu.Int64All(u.Budget_Score[desc]))
 			score -= qu.Int64All(u.Budget_Score[desc])
 		}
-		if proportion>=0.001&&proportion<0.1{
+		if proportion >= 0.001 && proportion < 0.1 {
 			return map[string]interface{}{
-				"score":int64(0),
-				"reason":"错误:比例",
+				"score":  int64(0),
+				"reason": "错误:比例",
 			}
 		}
 	}
 
-	class := make(map[string]interface{},0)
-	if topscopeclass, ok := tmp["topscopeclass"].(primitive.A); budget>0.0&&ok&&len(topscopeclass)>0 {
-		for _,v := range topscopeclass{
+	class := make(map[string]interface{}, 0)
+	if topscopeclass, ok := tmp["topscopeclass"].(primitive.A); budget > 0.0 && ok && len(topscopeclass) > 0 {
+		for _, v := range topscopeclass {
 			value := qu.ObjToString(v)
 			new_value := value[:len(value)-1]
-			if class[new_value]==nil {//校验行业
-				if !checkingClassMoney(budget,new_value) {
+			if class[new_value] == nil { //校验行业
+				if !checkingClassMoney(budget, new_value) {
 					desc = "行业范围"
-					reason+="~"+desc + fmt.Sprintf("-%d",qu.Int64All(u.Budget_Score[desc]))
+					reason += "~" + desc + fmt.Sprintf("-%d", qu.Int64All(u.Budget_Score[desc]))
 					score -= qu.Int64All(u.Budget_Score[desc])
 				}
-				class[new_value]=1
+				class[new_value] = 1
 			}
 		}
 	}
 
-
-
 	return map[string]interface{}{
-		"score":score,
-		"reason":reason,
+		"score":  score,
+		"reason": reason,
 	}
-}
+}

+ 25 - 27
src/qua/scorebuyer.go

@@ -1,32 +1,31 @@
 package qua
 
 import (
+	u "dataValidation/util"
 	"fmt"
-	qu "qfw/util"
+	qu "jygit.jydev.jianyu360.cn/data_processing/common_utils"
 	"unicode/utf8"
-	u "util"
 )
 
-
-func BuyerFieldScore(tmp map[string]interface{},score int64) (map[string]interface{}) {
+func BuyerFieldScore(tmp map[string]interface{}, score int64) map[string]interface{} {
 	buyer := qu.ObjToString(tmp["buyer"])
 	agency := qu.ObjToString(tmp["agency"])
 	winner := qu.ObjToString(tmp["winner"])
-	reason,desc:=fmt.Sprintf("%d初始分",score),""
+	reason, desc := fmt.Sprintf("%d初始分", score), ""
 
 	/*错误项*/
-	if  utf8.RuneCountInString(buyer) < 4 || !isHan(buyer) ||
-		utf8.RuneCountInString(buyer) >= 20{
+	if utf8.RuneCountInString(buyer) < 4 || !isHan(buyer) ||
+		utf8.RuneCountInString(buyer) >= 20 {
 		return map[string]interface{}{
-			"score":int64(0),
-			"reason":"错误:长度",
+			"score":  int64(0),
+			"reason": "错误:长度",
 		}
 	}
 	countArr := isCharCount(buyer)
 	if countArr[0] < 4 {
 		return map[string]interface{}{
-			"score":int64(0),
-			"reason":"错误:中文少",
+			"score":  int64(0),
+			"reason": "错误:中文少",
 		}
 	}
 
@@ -40,57 +39,56 @@ func BuyerFieldScore(tmp map[string]interface{},score int64) (map[string]interfa
 	    "黑名单":2
 	*/
 
-	if  !buyerNameIsExists(buyer)  {
+	if !buyerNameIsExists(buyer) {
 		desc = "单位库"
-		reason+="~"+desc + fmt.Sprintf("-%d",qu.Int64All(u.Buyer_Score[desc]))
+		reason += "~" + desc + fmt.Sprintf("-%d", qu.Int64All(u.Buyer_Score[desc]))
 		score -= qu.Int64All(u.Buyer_Score[desc])
 	}
 
-	if isUnHan(buyer){
+	if isUnHan(buyer) {
 		desc = "非纯中文"
-		reason+="~"+desc + fmt.Sprintf("-%d",qu.Int64All(u.Buyer_Score[desc]))
+		reason += "~" + desc + fmt.Sprintf("-%d", qu.Int64All(u.Buyer_Score[desc]))
 		score -= qu.Int64All(u.Buyer_Score[desc])
 	}
 
 	if specHeadReg.MatchString(buyer) || !unHanHeadReg.MatchString(buyer) {
 		desc = "前缀校验"
-		reason+="~"+desc + fmt.Sprintf("-%d",qu.Int64All(u.Buyer_Score[desc]))
+		reason += "~" + desc + fmt.Sprintf("-%d", qu.Int64All(u.Buyer_Score[desc]))
 		score -= qu.Int64All(u.Buyer_Score[desc])
 	}
 
 	if unConReg.MatchString(buyer) || unEndReg.MatchString(buyer) {
 		if unenableReg1.MatchString(buyer) || unenableReg2.MatchString(buyer) {
 			desc = "黑名单"
-			reason+="~"+desc + fmt.Sprintf("-%d",qu.Int64All(u.Buyer_Score[desc]))
+			reason += "~" + desc + fmt.Sprintf("-%d", qu.Int64All(u.Buyer_Score[desc]))
 			score -= qu.Int64All(u.Buyer_Score[desc])
 		}
-	}else {
+	} else {
 		desc = "后缀校验"
-		reason+="~"+desc + fmt.Sprintf("-%d",qu.Int64All(u.Buyer_Score[desc]))
+		reason += "~" + desc + fmt.Sprintf("-%d", qu.Int64All(u.Buyer_Score[desc]))
 		score -= qu.Int64All(u.Buyer_Score[desc])
 	}
 
 	//与其他单位比对
-	if buyer==agency || buyer==winner {
+	if buyer == agency || buyer == winner {
 		desc = "单位对比"
-		reason+="~"+desc + fmt.Sprintf("-%d",qu.Int64All(u.Buyer_Score[desc]))
+		reason += "~" + desc + fmt.Sprintf("-%d", qu.Int64All(u.Buyer_Score[desc]))
 		score -= qu.Int64All(u.Buyer_Score[desc])
 	}
 
 	//切词首部比对-
 	buyer_jb_arr := GSE.Cut(buyer, true)
-	if len(buyer_jb_arr)>0 && buyer_jb_arr!=nil {
+	if len(buyer_jb_arr) > 0 && buyer_jb_arr != nil {
 		head_char := qu.ObjToString(buyer_jb_arr[0])
-		if utf8.RuneCountInString(head_char) == 1{
+		if utf8.RuneCountInString(head_char) == 1 {
 			desc = "切词"
-			reason+="~"+desc + fmt.Sprintf("-%d",qu.Int64All(u.Buyer_Score[desc]))
+			reason += "~" + desc + fmt.Sprintf("-%d", qu.Int64All(u.Buyer_Score[desc]))
 			score -= qu.Int64All(u.Buyer_Score[desc])
 		}
 	}
 
 	return map[string]interface{}{
-		"score":score,
-		"reason":reason,
+		"score":  score,
+		"reason": reason,
 	}
 }
-

+ 17 - 19
src/qua/scoreprojectcode.go

@@ -1,45 +1,44 @@
 package qua
 
 import (
+	u "dataValidation/util"
 	"fmt"
-	qu "qfw/util"
+	qu "jygit.jydev.jianyu360.cn/data_processing/common_utils"
 	"unicode/utf8"
-	u "util"
 )
 
-func ProjectcodeFieldScore(tmp map[string]interface{},score int64) (map[string]interface{}) {
+func ProjectcodeFieldScore(tmp map[string]interface{}, score int64) map[string]interface{} {
 
 	projectcode := qu.ObjToString(tmp["projectcode"])
-	reason,desc:=fmt.Sprintf("%d初始分",score),""
+	reason, desc := fmt.Sprintf("%d初始分", score), ""
 
 	/*错误项*/
 	l := utf8.RuneCountInString(projectcode)
 	if l > 19 || l < 5 {
 		return map[string]interface{}{
-			"score":int64(0),
-			"reason":"错误:长度",
+			"score":  int64(0),
+			"reason": "错误:长度",
 		}
 	}
 
 	if isRegTimeDateCode(projectcode) {
 		return map[string]interface{}{
-			"score":int64(0),
-			"reason":"错误:日期格式",
+			"score":  int64(0),
+			"reason": "错误:日期格式",
 		}
 	}
 
 	if codeUnConReg.MatchString(projectcode) {
 		return map[string]interface{}{
-			"score":int64(0),
-			"reason":"错误:黑名单",
+			"score":  int64(0),
+			"reason": "错误:黑名单",
 		}
 	}
 
-
 	if !isAlphanumeric(projectcode) {
 		return map[string]interface{}{
-			"score":int64(0),
-			"reason":"错误:不含字母数字",
+			"score":  int64(0),
+			"reason": "错误:不含字母数字",
 		}
 	}
 
@@ -51,20 +50,19 @@ func ProjectcodeFieldScore(tmp map[string]interface{},score int64) (map[string]i
 	countArr := isCharCount(projectcode)
 	if countArr[3] > 6 {
 		desc = "符号过多"
-		reason+="~"+desc + fmt.Sprintf("-%d",qu.Int64All(u.Projectcode_Score[desc]))
+		reason += "~" + desc + fmt.Sprintf("-%d", qu.Int64All(u.Projectcode_Score[desc]))
 		score -= qu.Int64All(u.Projectcode_Score[desc])
 	}
 
 	//连续中文长度超过X个
 	if codeUnLenReg.MatchString(projectcode) {
 		desc = "连续中文"
-		reason+="~"+desc + fmt.Sprintf("-%d",qu.Int64All(u.Projectcode_Score[desc]))
+		reason += "~" + desc + fmt.Sprintf("-%d", qu.Int64All(u.Projectcode_Score[desc]))
 		score -= qu.Int64All(u.Projectcode_Score[desc])
 	}
 
-
 	return map[string]interface{}{
-		"score":score,
-		"reason":reason,
+		"score":  score,
+		"reason": reason,
 	}
-}
+}

+ 15 - 15
src/qua/scoreprojectname.go

@@ -1,27 +1,28 @@
 package qua
 
 import (
+	u "dataValidation/util"
 	"fmt"
-	qu "qfw/util"
+	qu "jygit.jydev.jianyu360.cn/data_processing/common_utils"
 	"unicode/utf8"
-	u "util"
 )
-func ProjectnameFieldScore(tmp map[string]interface{},score int64) (map[string]interface{}) {
+
+func ProjectnameFieldScore(tmp map[string]interface{}, score int64) map[string]interface{} {
 	projectname := qu.ObjToString(tmp["projectname"])
-	reason,desc:=fmt.Sprintf("%d初始分",score),""
+	reason, desc := fmt.Sprintf("%d初始分", score), ""
 
 	/*错误项*/
-	if utf8.RuneCountInString(projectname) <= 6  {
+	if utf8.RuneCountInString(projectname) <= 6 {
 		return map[string]interface{}{
-			"score":int64(0),
-			"reason":"错误:长度",
+			"score":  int64(0),
+			"reason": "错误:长度",
 		}
 	}
 
 	if !isHan(projectname) {
 		return map[string]interface{}{
-			"score":int64(0),
-			"reason":"错误:无中文",
+			"score":  int64(0),
+			"reason": "错误:无中文",
 		}
 	}
 
@@ -30,21 +31,20 @@ func ProjectnameFieldScore(tmp map[string]interface{},score int64) (map[string]i
 	    "中文比例": 2
 	*/
 
-
 	if utf8.RuneCountInString(projectname) >= 40 {
 		desc = "长度过长"
-		reason+="~"+desc + fmt.Sprintf("-%d",qu.Int64All(u.Projectname_Score[desc]))
+		reason += "~" + desc + fmt.Sprintf("-%d", qu.Int64All(u.Projectname_Score[desc]))
 		score -= qu.Int64All(u.Projectname_Score[desc])
 	}
 
 	if !isHanLenToLittle(projectname) {
 		desc = "中文比例"
-		reason+="~"+desc + fmt.Sprintf("-%d",qu.Int64All(u.Projectname_Score[desc]))
+		reason += "~" + desc + fmt.Sprintf("-%d", qu.Int64All(u.Projectname_Score[desc]))
 		score -= qu.Int64All(u.Projectname_Score[desc])
 	}
 
 	return map[string]interface{}{
-		"score":score,
-		"reason":reason,
+		"score":  score,
+		"reason": reason,
 	}
-}
+}

+ 38 - 39
src/qua/scorewinner.go

@@ -1,105 +1,104 @@
 package qua
 
 import (
+	u "dataValidation/util"
 	"fmt"
-	qu "qfw/util"
+	qu "jygit.jydev.jianyu360.cn/data_processing/common_utils"
 	"strings"
 	"unicode/utf8"
-	u "util"
 )
 
-func WinnerFieldScore(tmp map[string]interface{},score int64) (map[string]interface{}) {
+func WinnerFieldScore(tmp map[string]interface{}, score int64) map[string]interface{} {
 	s_winner := qu.ObjToString(tmp["s_winner"])
 	buyer := qu.ObjToString(tmp["buyer"])
 	agency := qu.ObjToString(tmp["agency"])
-	package_map:=*qu.ObjToMap(tmp["package"])
-	reason,desc:=fmt.Sprintf("%d初始分",score),""
+	package_map := *qu.ObjToMap(tmp["package"])
+	reason, desc := fmt.Sprintf("%d初始分", score), ""
 
-	s_winner_arr := strings.Split(s_winner,",")
-	if len(s_winner_arr)!=len(package_map) && len(package_map)>0 {
+	s_winner_arr := strings.Split(s_winner, ",")
+	if len(s_winner_arr) != len(package_map) && len(package_map) > 0 {
 		desc = "分包量"
-		reason+="~"+desc + fmt.Sprintf("-%d",qu.Int64All(u.S_Winner_Score[desc]))
+		reason += "~" + desc + fmt.Sprintf("-%d", qu.Int64All(u.S_Winner_Score[desc]))
 		score -= qu.Int64All(u.S_Winner_Score[desc])
 	}
 
-	for _,winner:=range s_winner_arr{
+	for _, winner := range s_winner_arr {
 		/*错误项*/
-		if  utf8.RuneCountInString(winner) < 4 || !isHan(winner) ||
-			utf8.RuneCountInString(winner) > 20{
+		if utf8.RuneCountInString(winner) < 4 || !isHan(winner) ||
+			utf8.RuneCountInString(winner) > 20 {
 			return map[string]interface{}{
-				"score":int64(0),
-				"reason":"错误",
+				"score":  int64(0),
+				"reason": "错误",
 			}
 		}
 		countArr := isCharCount(winner)
 		if countArr[0] < 4 {
 			return map[string]interface{}{
-				"score":int64(0),
-				"reason":"错误:中文少",
+				"score":  int64(0),
+				"reason": "错误:中文少",
 			}
 		}
 
 		/*减分项
-		    "单位库": 1,
-		    "前缀校验": 1,
-		    "后缀校验": 1,
-		    "非纯中文": 1,
-		    "分包量": 1,
-		    "切词": 2,
-		    "单位对比": 2,
-		    "黑名单": 2
+		  "单位库": 1,
+		  "前缀校验": 1,
+		  "后缀校验": 1,
+		  "非纯中文": 1,
+		  "分包量": 1,
+		  "切词": 2,
+		  "单位对比": 2,
+		  "黑名单": 2
 		*/
 
-		if !qyNameIsExistsQYXY(winner){
+		if !qyNameIsExistsQYXY(winner) {
 			desc = "单位库"
-			reason+="~"+desc + fmt.Sprintf("-%d",qu.Int64All(u.S_Winner_Score[desc]))
+			reason += "~" + desc + fmt.Sprintf("-%d", qu.Int64All(u.S_Winner_Score[desc]))
 			score -= qu.Int64All(u.S_Winner_Score[desc])
 		}
 
-		if isUnHan(winner){
+		if isUnHan(winner) {
 			desc = "非纯中文"
-			reason+="~"+desc + fmt.Sprintf("-%d",qu.Int64All(u.S_Winner_Score[desc]))
+			reason += "~" + desc + fmt.Sprintf("-%d", qu.Int64All(u.S_Winner_Score[desc]))
 			score -= qu.Int64All(u.S_Winner_Score[desc])
 		}
 
 		if specHeadReg.MatchString(winner) || !unHanHeadReg.MatchString(winner) {
 			desc = "前缀校验"
-			reason+="~"+desc + fmt.Sprintf("-%d",qu.Int64All(u.S_Winner_Score[desc]))
+			reason += "~" + desc + fmt.Sprintf("-%d", qu.Int64All(u.S_Winner_Score[desc]))
 			score -= qu.Int64All(u.S_Winner_Score[desc])
 		}
 
 		if unConReg.MatchString(winner) || unEndReg.MatchString(winner) {
 			if unenableReg1.MatchString(winner) || unenableReg2.MatchString(winner) {
 				desc = "黑名单"
-				reason+="~"+desc + fmt.Sprintf("-%d",qu.Int64All(u.S_Winner_Score[desc]))
+				reason += "~" + desc + fmt.Sprintf("-%d", qu.Int64All(u.S_Winner_Score[desc]))
 				score -= qu.Int64All(u.S_Winner_Score[desc])
 			}
-		}else {
+		} else {
 			desc = "后缀校验"
-			reason+="~"+desc + fmt.Sprintf("-%d",qu.Int64All(u.S_Winner_Score[desc]))
+			reason += "~" + desc + fmt.Sprintf("-%d", qu.Int64All(u.S_Winner_Score[desc]))
 			score -= qu.Int64All(u.S_Winner_Score[desc])
 		}
 
-		if (winner==agency || winner==buyer) && winner !="" {
+		if (winner == agency || winner == buyer) && winner != "" {
 			desc = "单位对比"
-			reason+="~"+desc + fmt.Sprintf("-%d",qu.Int64All(u.S_Winner_Score[desc]))
+			reason += "~" + desc + fmt.Sprintf("-%d", qu.Int64All(u.S_Winner_Score[desc]))
 			score -= qu.Int64All(u.S_Winner_Score[desc])
 		}
 		//切词首部比对-影响性能
 		winner_jb_arr := GSE.Cut(winner, true)
-		if len(winner_jb_arr)>0 && winner_jb_arr!=nil {
+		if len(winner_jb_arr) > 0 && winner_jb_arr != nil {
 			head_char := qu.ObjToString(winner_jb_arr[0])
-			if utf8.RuneCountInString(head_char) == 1{
+			if utf8.RuneCountInString(head_char) == 1 {
 				desc = "切词"
-				reason+="~"+desc + fmt.Sprintf("-%d",qu.Int64All(u.S_Winner_Score[desc]))
+				reason += "~" + desc + fmt.Sprintf("-%d", qu.Int64All(u.S_Winner_Score[desc]))
 				score -= qu.Int64All(u.S_Winner_Score[desc])
 			}
 		}
 	}
 
-
 	return map[string]interface{}{
-		"score":score,
-		"reason":reason,
+		"score":  score,
+		"reason": reason,
 	}
 }

+ 1 - 1
src/util/common.go

@@ -4,8 +4,8 @@ import (
 	"fmt"
 	"github.com/aliyun/aliyun-oss-go-sdk/oss"
 	"io/ioutil"
+	qu "jygit.jydev.jianyu360.cn/data_processing/common_utils"
 	"os"
-	qu "qfw/util"
 )
 
 type Task struct {

+ 5 - 4
src/util/config.go

@@ -3,8 +3,9 @@ package util
 import (
 	"go.mongodb.org/mongo-driver/bson"
 	"go.mongodb.org/mongo-driver/mongo"
-	"mongodb"
-	qu "qfw/util"
+	qu "jygit.jydev.jianyu360.cn/data_processing/common_utils"
+	"jygit.jydev.jianyu360.cn/data_processing/common_utils/elastic"
+	"jygit.jydev.jianyu360.cn/data_processing/common_utils/mongodb"
 	"sort"
 	"sync"
 )
@@ -16,7 +17,7 @@ import (
 var (
 	Sysconfig           map[string]interface{} //配置文件
 	Quaconfig           map[string]interface{} //质量配置文件
-	Es                  *Elastic
+	Es                  *elastic.Elastic
 	Mgo                 *mongodb.MongodbSim
 	AllToColl           string              //所有标注数据汇总表
 	Password            string              //默认登陆密码
@@ -123,7 +124,7 @@ func InitConfig() {
 	//MgoHM.InitPool()
 
 	esConf := Sysconfig["es"].(map[string]interface{})
-	Es = &Elastic{
+	Es = &elastic.Elastic{
 		S_esurl:  qu.ObjToString(esConf["addr"]), //http://172.17.145.170:9800
 		I_size:   qu.IntAllDef(esConf["pool"], 10),
 		Username: qu.ObjToString(esConf["user"]),

+ 0 - 422
src/util/elasticSim.go

@@ -1,422 +0,0 @@
-package util
-
-import (
-	"context"
-	"encoding/json"
-	"errors"
-	"fmt"
-	es "gopkg.in/olivere/elastic.v7"
-	"log"
-	"qfw/util"
-	"runtime"
-	"strings"
-	"sync"
-	"time"
-)
-
-type Elastic struct {
-	S_esurl      string
-	I_size       int
-	Addrs        []string
-	Pool         chan *es.Client
-	lastTime     int64
-	lastTimeLock sync.Mutex
-	ntimeout     int
-	Username     string
-	Password     string
-}
-
-func (e *Elastic) InitElasticSize() {
-	e.Pool = make(chan *es.Client, e.I_size)
-	for _, s := range strings.Split(e.S_esurl, ",") {
-		e.Addrs = append(e.Addrs, s)
-	}
-	log.Println(e.Password, e.Username)
-	for i := 0; i < e.I_size; i++ {
-		client, _ := es.NewClient(es.SetURL(e.Addrs...), es.SetBasicAuth(e.Username, e.Password), es.SetMaxRetries(2), es.SetSniff(false))
-		e.Pool <- client
-	}
-}
-
-// 关闭连接
-func (e *Elastic) DestoryEsConn(client *es.Client) {
-	select {
-	case e.Pool <- client:
-		break
-	case <-time.After(time.Second * 1):
-		if client != nil {
-			client.Stop()
-		}
-		client = nil
-	}
-}
-
-func (e *Elastic) GetEsConn() *es.Client {
-	select {
-	case c := <-e.Pool:
-		if c == nil || !c.IsRunning() {
-			log.Println("new esclient.", len(e.Pool))
-			client, err := es.NewClient(es.SetURL(e.Addrs...), es.SetBasicAuth(e.Username, e.Password),
-				es.SetSniff(false))
-			if err == nil && client.IsRunning() {
-				return client
-			}
-		}
-		return c
-	case <-time.After(time.Second * 4):
-		//超时
-		e.ntimeout++
-		e.lastTimeLock.Lock()
-		defer e.lastTimeLock.Unlock()
-		//12秒后允许创建链接
-		c := time.Now().Unix() - e.lastTime
-		if c > 12 {
-			e.lastTime = time.Now().Unix()
-			log.Println("add client..", len(e.Pool))
-			c, _ := es.NewClient(es.SetURL(e.Addrs...), es.SetBasicAuth(e.Username, e.Password), es.SetSniff(false))
-			go func() {
-				for i := 0; i < 2; i++ {
-					client, _ := es.NewClient(es.SetURL(e.Addrs...), es.SetBasicAuth(e.Username, e.Password), es.SetSniff(false))
-					e.Pool <- client
-				}
-			}()
-			return c
-		}
-		return nil
-	}
-}
-
-func (e *Elastic) Get(index, query string) *[]map[string]interface{} {
-	client := e.GetEsConn()
-	defer func() {
-		go e.DestoryEsConn(client)
-	}()
-	var res []map[string]interface{}
-	if client != nil {
-		defer func() {
-			if r := recover(); r != nil {
-				log.Println("[E]", r)
-				for skip := 1; ; skip++ {
-					_, _, _, ok := runtime.Caller(skip)
-					if !ok {
-						break
-					}
-				}
-			}
-		}()
-		searchResult, err := client.Search().Index(index).Source(query).Do(context.Background())
-		if err != nil {
-			log.Println("从ES查询出错", err.Error())
-			return nil
-		}
-		if searchResult.Hits != nil {
-			resNum := len(searchResult.Hits.Hits)
-			if resNum < 5000 {
-				res = make([]map[string]interface{}, resNum)
-				for i, hit := range searchResult.Hits.Hits {
-					parseErr := json.Unmarshal(hit.Source, &res[i])
-					if parseErr == nil && hit.Highlight != nil && res[i] != nil {
-						res[i]["highlight"] = map[string][]string(hit.Highlight)
-					}
-				}
-			} else {
-				log.Println("查询结果太多,查询到:", resNum, "条")
-			}
-		}
-	}
-	return &res
-}
-
-// 关闭elastic
-func (e *Elastic) Close() {
-	for i := 0; i < e.I_size; i++ {
-		cli := <-e.Pool
-		cli.Stop()
-		cli = nil
-	}
-	e.Pool = nil
-	e = nil
-}
-
-//获取连接
-//func (e *Elastic) GetEsConn() (c *es.Client) {
-//	defer util.Catch()
-//	select {
-//	case c = <-e.Pool:
-//		if c == nil || !c.IsRunning() {
-//			client, err := es.NewClient(es.SetURL(addrs...),
-//				es.SetMaxRetries(2), es.SetSniff(false))
-//			if err == nil && client.IsRunning() {
-//				return client
-//			}
-//			return nil
-//		}
-//		return
-//	case <-time.After(time.Second * 7):
-//		//超时
-//		ntimeout++
-//		log.Println("timeout times:", ntimeout)
-//		return nil
-//	}
-//}
-
-func (e *Elastic) BulkSave(index string, obj []map[string]interface{}) {
-	client := e.GetEsConn()
-	defer e.DestoryEsConn(client)
-	if client != nil {
-		req := client.Bulk()
-		for _, v := range obj {
-			//if isDelBefore {
-			//	req = req.Add(es.NewBulkDeleteRequest().Index(index).Id(fmt.Sprintf("%v", v["_id"])))
-			//}
-			id := util.ObjToString(v["_id"])
-			delete(v, "_id")
-			req = req.Add(es.NewBulkIndexRequest().Index(index).Id(id).Doc(v))
-		}
-		_, err := req.Do(context.Background())
-		if err != nil {
-			log.Println("批量保存到ES出错", err.Error())
-		}
-	}
-}
-
-// 根据id删除索引对象
-func (e *Elastic) DelById(index, itype, id string) bool {
-	client := e.GetEsConn()
-	defer e.DestoryEsConn(client)
-	b := false
-	if client != nil {
-		var err error
-		_, err = client.Delete().Index(index).Type(itype).Id(id).Do(context.Background())
-		if err != nil {
-			log.Println("更新检索出错:", err.Error())
-		} else {
-			b = true
-		}
-	}
-	return b
-}
-
-func (e *Elastic) GetNoLimit(index, query string) *[]map[string]interface{} {
-	client := e.GetEsConn()
-	defer e.DestoryEsConn(client)
-	var res []map[string]interface{}
-	if client != nil {
-		defer func() {
-			if r := recover(); r != nil {
-				log.Println("[E]", r)
-				for skip := 1; ; skip++ {
-					_, file, line, ok := runtime.Caller(skip)
-					if !ok {
-						break
-					}
-					go log.Printf("%v,%v\n", file, line)
-				}
-			}
-		}()
-		searchResult, err := client.Search().Index(index).Source(query).Do(context.Background())
-		if err != nil {
-			log.Println("从ES查询出错", err.Error())
-			return nil
-		}
-
-		if searchResult.Hits != nil {
-			resNum := len(searchResult.Hits.Hits)
-			util.Debug(resNum)
-			res = make([]map[string]interface{}, resNum)
-			for i, hit := range searchResult.Hits.Hits {
-				json.Unmarshal(hit.Source, &res[i])
-			}
-		}
-	}
-	return &res
-}
-
-//func (e *Elastic) GetByIdField(index, itype, id, fields string) *map[string]interface{} {
-//	client := e.GetEsConn()
-//	defer e.DestoryEsConn(client)
-//	if client != nil {
-//		defer func() {
-//			if r := recover(); r != nil {
-//				log.Println("[E]", r)
-//				for skip := 1; ; skip++ {
-//					_, file, line, ok := runtime.Caller(skip)
-//					if !ok {
-//						break
-//					}
-//					go log.Printf("%v,%v\n", file, line)
-//				}
-//			}
-//		}()
-//		query := `{"query":{"term":{"_id":"` + id + `"}}`
-//		if len(fields) > 0 {
-//			query = query + `,"_source":[` + fields + `]`
-//		}
-//		query = query + "}"
-//		searchResult, err := client.Search().Index(index).Type(itype).Source(query).Do()
-//		if err != nil {
-//			log.Println("从ES查询出错", err.Error())
-//			return nil
-//		}
-//		var res map[string]interface{}
-//		if searchResult.Hits != nil {
-//			resNum := len(searchResult.Hits.Hits)
-//			if resNum == 1 {
-//				res = make(map[string]interface{})
-//				for _, hit := range searchResult.Hits.Hits {
-//					json.Unmarshal(*hit.Source., &res)
-//				}
-//				return &res
-//			}
-//		}
-//	}
-//	return nil
-//}
-
-func (e *Elastic) Count(index, itype string, query interface{}) int64 {
-	client := e.GetEsConn()
-	defer e.DestoryEsConn(client)
-	if client != nil {
-		defer func() {
-			if r := recover(); r != nil {
-				log.Println("[E]", r)
-				for skip := 1; ; skip++ {
-					_, file, line, ok := runtime.Caller(skip)
-					if !ok {
-						break
-					}
-					go log.Printf("%v,%v\n", file, line)
-				}
-			}
-		}()
-		var qq es.Query
-		if qi, ok2 := query.(es.Query); ok2 {
-			qq = qi
-		}
-		n, err := client.Count(index).Query(qq).Do(context.Background())
-		if err != nil {
-			log.Println("统计出错", err.Error())
-		}
-
-		return n
-	}
-	return 0
-}
-
-//更新一个字段
-//func (e *Elastic) BulkUpdateArr(index, itype string, update []map[string]string) {
-//	client := e.GetEsConn()
-//	defer e.DestoryEsConn(client)
-//	if client != nil {
-//		defer func() {
-//			if r := recover(); r != nil {
-//				log.Println("[E]", r)
-//				for skip := 1; ; skip++ {
-//					_, file, line, ok := runtime.Caller(skip)
-//					if !ok {
-//						break
-//					}
-//					go log.Printf("%v,%v\n", file, line)
-//				}
-//			}
-//		}()
-//		for _, data := range update {
-//			id := data["id"]
-//			updateStr := data["updateStr"]
-//			if id != "" && updateStr != "" {
-//				_, err := client.Update().Index(index).Type(itype).Id(id).Script(updateStr).ScriptLang("groovy").Do()
-//				if err != nil {
-//					log.Println("更新检索出错:", err.Error())
-//				}
-//			} else {
-//				log.Println("数据错误")
-//			}
-//		}
-//	}
-//}
-
-//更新多个字段
-//func (e *Elastic) BulkUpdateMultipleFields(index, itype string, arrs [][]map[string]interface{}) {
-//	client := e.GetEsConn()
-//	defer e.DestoryEsConn(client)
-//	if client != nil {
-//		defer func() {
-//			if r := recover(); r != nil {
-//				log.Println("[E]", r)
-//				for skip := 1; ; skip++ {
-//					_, file, line, ok := runtime.Caller(skip)
-//					if !ok {
-//						break
-//					}
-//					go log.Printf("%v,%v\n", file, line)
-//				}
-//			}
-//		}()
-//		for _, arr := range arrs {
-//			id := arr[0]["id"].(string)
-//			update := arr[1]["update"].([]string)
-//			for _, str := range update {
-//				_, err := client.Update().Index(index).Type(itype).Id(id).Script(str).ScriptLang("groovy").Do()
-//				if err != nil {
-//					log.Println("更新检索出错:", err.Error())
-//				}
-//			}
-//		}
-//	}
-//}
-
-// UpdateBulk 批量修改文档
-func (e *Elastic) UpdateBulk(index, itype string, docs ...[]map[string]interface{}) {
-	client := e.GetEsConn()
-	defer e.DestoryEsConn(client)
-	bulkService := client.Bulk().Index(index).Refresh("true")
-	bulkService.Type(itype)
-	for _, d := range docs {
-		id := d[0]["_id"].(string)
-		doc := es.NewBulkUpdateRequest().Id(id).Doc(d[1])
-		bulkService.Add(doc)
-	}
-	_, err := bulkService.Do(context.Background())
-	if err != nil {
-		fmt.Printf("UpdateBulk all success err is %v\n", err)
-	}
-	//if len(res.Failed()) > 0 {
-	//	fmt.Printf("UpdateBulk all success failed is %v\n", (res.Items[0]))
-	//}
-}
-
-// UpsertBulk 批量修改文档(不存在则插入)
-func (e *Elastic) UpsertBulk(ctx context.Context, index string, ids []string, docs []interface{}) error {
-	client := e.GetEsConn()
-	defer e.DestoryEsConn(client)
-	bulkService := client.Bulk().Index(index).Refresh("true")
-	bulkService.Type("bidding")
-	for i := range ids {
-		doc := es.NewBulkUpdateRequest().Id(ids[i]).Doc(docs[i]).Upsert(docs[i])
-		bulkService.Add(doc)
-	}
-	res, err := bulkService.Do(context.Background())
-	if err != nil {
-		return err
-	}
-	if len(res.Failed()) > 0 {
-		return errors.New(res.Failed()[0].Error.Reason)
-	}
-	return nil
-}
-
-// 批量删除
-func (e *Elastic) DeleteBulk(index string, ids []string) {
-	client := e.GetEsConn()
-	defer e.DestoryEsConn(client)
-	bulkService := client.Bulk().Index(index).Refresh("true")
-	bulkService.Type("bidding")
-	for i := range ids {
-		req := es.NewBulkDeleteRequest().Id(ids[i])
-		bulkService.Add(req)
-	}
-	res, err := bulkService.Do(context.Background())
-	if err != nil {
-		fmt.Printf("DeleteBulk success is %v\n", len(res.Succeeded()))
-	}
-}

+ 2 - 2
src/util/util.go

@@ -1,12 +1,12 @@
 package util
 
 import (
+	util "jygit.jydev.jianyu360.cn/data_processing/common_utils"
 	"net/http"
-	"qfw/util"
 	"strconv"
 )
 
-//数据类型转换
+// 数据类型转换
 func GetPostForm(r *http.Request) map[string]interface{} {
 	val := map[string]interface{}{}
 	for k, _ := range r.Form {