diff --git a/code/makecode.go b/code/makecode.go index f56be93..2779580 100644 --- a/code/makecode.go +++ b/code/makecode.go @@ -1144,10 +1144,16 @@ func (that *MakeCode) Search(table string, userData Map, req *http.Request, db * } } if len(keyword) > 1 { - if data["OR"] != nil { - data = Map{"AND": data, "OR": keyword} + + if data["AND"] != nil { + and := data.GetMap("AND") + for k, v := range keyword { + and[k] = v + } + + //data = Map{"AND":Map{"OR": keyword} data, } } else { - data["OR"] = keyword + data["AND"] = keyword } } diff --git a/dri/mongodb/mongodb.go b/dri/mongodb/mongodb.go new file mode 100644 index 0000000..42c5238 --- /dev/null +++ b/dri/mongodb/mongodb.go @@ -0,0 +1,119 @@ +package mongodb + +import ( + . "code.hoteas.com/golang/hotime/common" + "context" + "fmt" + "go.mongodb.org/mongo-driver/mongo" + "go.mongodb.org/mongo-driver/mongo/options" +) + +type mongoDb struct { + Client *mongo.Client + Ctx context.Context + DataBase *mongo.Database + Connect *mongo.Collection + LastErr error +} + +func Init(database, url string) (*mongoDb, error) { + db := mongoDb{} + clientOptions := options.Client().ApplyURI(url) + + db.Ctx = context.TODO() + // Connect to MongoDB + var err error + db.Client, err = mongo.Connect(db.Ctx, clientOptions) + if err != nil { + return nil, err + } + // Check the connection + err = db.Client.Ping(db.Ctx, nil) + if err != nil { + return nil, err + } + fmt.Println("Connected to MongoDB!") + //databases, err := db.Client.ListDatabaseNames(db.Ctx, bson.M{}) + //if err != nil { + // return nil, err + //} + //fmt.Println(databases) + db.DataBase = db.Client.Database(database) + return &db, nil + +} + +func (that *mongoDb) Insert(table string, data interface{}) string { + collection := that.DataBase.Collection(table) + re, err := collection.InsertOne(that.Ctx, data) + if err != nil { + that.LastErr = err + return "" + } + return ObjToStr(re.InsertedID) +} + +func (that *mongoDb) InsertMany(table string, data ...interface{}) Slice { + collection := that.DataBase.Collection(table) + re, err := collection.InsertMany(that.Ctx, data) + if err != nil { + that.LastErr = err + return Slice{} + } + + return ObjToSlice(re.InsertedIDs) + +} + +func (that *mongoDb) Get(table string, where Map) Map { + results := []Map{} + var cursor *mongo.Cursor + var err error + collection := that.DataBase.Collection(table) + if cursor, err = collection.Find(that.Ctx, where, options.Find().SetSkip(0), options.Find().SetLimit(2)); err != nil { + that.LastErr = err + return nil + } + //延迟关闭游标 + defer func() { + if err := cursor.Close(that.Ctx); err != nil { + that.LastErr = err + + } + }() + //这里的结果遍历可以使用另外一种更方便的方式: + if err = cursor.All(that.Ctx, &results); err != nil { + that.LastErr = err + return nil + } + return results[0] +} + +func (that mongoDb) Select(table string, where Map, page, pageRow int64) []Map { + page = (page - 1) * pageRow + if page < 0 { + page = 0 + } + results := []Map{} + var cursor *mongo.Cursor + var err error + collection := that.DataBase.Collection(table) + if cursor, err = collection.Find(that.Ctx, where, options.Find().SetSkip(page), options.Find().SetLimit(pageRow)); err != nil { + that.LastErr = err + return results + } + //延迟关闭游标 + defer func() { + if err := cursor.Close(that.Ctx); err != nil { + that.LastErr = err + + } + }() + //这里的结果遍历可以使用另外一种更方便的方式: + + if err = cursor.All(that.Ctx, &results); err != nil { + that.LastErr = err + return results + } + return results +} diff --git a/go.mod b/go.mod index 6f292de..8a457ff 100644 --- a/go.mod +++ b/go.mod @@ -12,5 +12,6 @@ require ( github.com/sirupsen/logrus v1.8.1 github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.364 github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/ocr v1.0.364 + go.mongodb.org/mongo-driver v1.10.1 golang.org/x/net v0.0.0-20220225172249-27dd8689420f ) diff --git a/go.sum b/go.sum index 7157cde..7994667 100644 --- a/go.sum +++ b/go.sum @@ -14,10 +14,16 @@ github.com/go-pay/gopay v1.5.78 h1:wIHp8g/jK0ik5bZo2MWt3jAQsktT3nkdXZxlRZvljko= github.com/go-pay/gopay v1.5.78/go.mod h1:M6Nlk2VdZHCbWphOw3rtbnz4SiOk6Xvxg6mxwDfg+Ps= github.com/go-sql-driver/mysql v1.6.0 h1:BCTh4TKNUYmOmMUcQ3IipzF5prigylS7XXjEkfCHuOE= github.com/go-sql-driver/mysql v1.6.0/go.mod h1:DCzpHaOWr8IXmIStZouvnhqoel9Qv2LBy8hT2VhHyBg= +github.com/golang/snappy v0.0.1 h1:Qgr9rKW7uDUkrbSmQeiDsGa8SjGyCOGtuasMWwvp2P4= +github.com/golang/snappy v0.0.1/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= github.com/gomodule/redigo v1.8.5 h1:nRAxCa+SVsyjSBrtZmG/cqb6VbTmuRzpg/PoTFlpumc= github.com/gomodule/redigo v1.8.5/go.mod h1:P9dn9mFrCBvWhGE1wpxx6fgq7BAeLBk+UUUzlpkBYO0= +github.com/google/go-cmp v0.5.2/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/h2non/parth v0.0.0-20190131123155-b4df798d6542 h1:2VTzZjLZBgl62/EtslCrtky5vbi9dd7HrQPQIx6wqiw= github.com/h2non/parth v0.0.0-20190131123155-b4df798d6542/go.mod h1:Ow0tF8D4Kplbc8s8sSb3V2oUCygFHVp8gC3Dn6U4MNI= +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/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= @@ -25,8 +31,12 @@ github.com/mattn/go-sqlite3 v1.14.12 h1:TJ1bhYJPV44phC+IMu1u2K/i5RriLTPe+yc68XDJ github.com/mattn/go-sqlite3 v1.14.12/go.mod h1:NyWgC/yNuGj7Q9rpYnZvas74GogHl5/Z4A/KQRfk6bU= github.com/mohae/deepcopy v0.0.0-20170929034955-c48cc78d4826 h1:RWengNIwukTxcDr9M+97sNutRR1RKhG96O6jWumTTnw= github.com/mohae/deepcopy v0.0.0-20170929034955-c48cc78d4826/go.mod h1:TaXosZuwdSHYgviHp1DAtfrULt5eUgsSMsZf+YrPgl8= +github.com/montanaflynn/stats v0.0.0-20171201202039-1bf9dbcd8cbe h1:iruDEfMl2E6fbMZ9s0scYfZQ84/6SPL6zC8ACM2oIL0= +github.com/montanaflynn/stats v0.0.0-20171201202039-1bf9dbcd8cbe/go.mod h1:wL8QJuTMNUDYhXwkmfOly8iTdp5TEcJFWZD2D7SIkUc= github.com/nbio/st v0.0.0-20140626010706-e9e8d9816f32/go.mod h1:9wM+0iRr9ahx58uYLpLIr5fm8diHn0JbqRycJi6w0Ms= github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno= +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/silenceper/wechat/v2 v2.1.2 h1:+QfIMiYfwST2ZloTwmYp0O0p5Y1LYRZxfLWfMuSE30k= @@ -39,20 +49,36 @@ github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+ github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= github.com/stretchr/testify v1.2.3-0.20181224173747-660f15d67dbb/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA= +github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.7.0 h1:nwc3DEeHmmLAfoZucVR881uASk0Mfjw8xYJ99tb5CcY= github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.364 h1:X1Jws4XqrTH+p7FBQ7BpjW4qFXObKHWm0/XhW/GvqRs= github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.364/go.mod h1:7sCQWVkxcsR38nffDW057DRGk8mUjK1Ing/EFOK8s8Y= github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/ocr v1.0.364 h1:kbor60vo37v7Hu+i17gooox9Rw281fVHNna8zwtDG1w= github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/ocr v1.0.364/go.mod h1:LeIUBOLhc+Y5YCEpZrULPD9lgoXXV4/EmIcoEvmHz9c= +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.1.1 h1:VOMT+81stJgXW3CpHyqHN3AXDYIMsx56mEFrB37Mb/E= +github.com/xdg-go/scram v1.1.1/go.mod h1:RaEWvsqvNKKvBPvcKeFjrG2cJqOkHTiyTpzz23ni57g= +github.com/xdg-go/stringprep v1.0.3 h1:kdwGpVNwPFtjs98xCGkHjQtGKh86rDcRZN17QEMCOIs= +github.com/xdg-go/stringprep v1.0.3/go.mod h1:W3f5j4i+9rC0kuIEJL0ky1VpHXQU3ocBgklLGvcBnW8= +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.10.1 h1:NujsPveKwHaWuKUer/ceo9DzEe7HIj1SlJ6uvXZG0S4= +go.mongodb.org/mongo-driver v1.10.1/go.mod h1:z4XpeoU6w+9Vht+jAFyLgVrD+jGSQQe0+CBWFHNiHt8= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20210220033148-5ea612d1eb83/go.mod h1:jdWPYTVW3xRLrWPugEBEK3UY2ZEsg3UU495nc5E+M+I= golang.org/x/crypto v0.0.0-20220331220935-ae2d96664a29 h1:tkVvjkPTB7pnW3jnid7kNyAMPVWllTNOf/qKDze4p9o= golang.org/x/crypto v0.0.0-20220331220935-ae2d96664a29/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= +golang.org/x/crypto v0.0.0-20220622213112-05595931fe9d h1:sK3txAijHtOK88l68nt020reeT1ZdKLIYetKl95FzVY= +golang.org/x/crypto v0.0.0-20220622213112-05595931fe9d/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20220225172249-27dd8689420f h1:oA4XRj0qtSt8Yo1Zms0CUlsT3KG69V2UGQWPBxujDmc= golang.org/x/net v0.0.0-20220225172249-27dd8689420f/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= +golang.org/x/sync v0.0.0-20210220032951-036812b2e83c h1:5KslGYwFpkhGh+Q16bwMP3cOontH8FOep7tGV86Y7SQ= +golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sys v0.0.0-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.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -66,12 +92,16 @@ golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9sn 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.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/text v0.3.7 h1:olpwvP2KacW1ZWvsR7uQhoyTYvKAupfQrRGBFM352Gk= golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/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-20200227125254-8fa46927fb4f/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/h2non/gock.v1 v1.0.15 h1:SzLqcIlb/fDfg7UvukMpNcWsu7sI5tWwL+KCATZqks0= gopkg.in/h2non/gock.v1 v1.0.15/go.mod h1:sX4zAkdYX1TRGJ2JY156cFspQn4yRWn6p9EMdODlynE= gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= 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= +gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= diff --git a/vendor/modules.txt b/vendor/modules.txt index 3a6cc55..4888f5a 100644 --- a/vendor/modules.txt +++ b/vendor/modules.txt @@ -23,13 +23,26 @@ github.com/go-pay/gopay/wechat/v3 # github.com/go-sql-driver/mysql v1.6.0 ## explicit github.com/go-sql-driver/mysql +# github.com/golang/snappy v0.0.1 +github.com/golang/snappy # github.com/gomodule/redigo v1.8.5 github.com/gomodule/redigo/redis +# github.com/klauspost/compress v1.13.6 +github.com/klauspost/compress +github.com/klauspost/compress/fse +github.com/klauspost/compress/huff0 +github.com/klauspost/compress/internal/snapref +github.com/klauspost/compress/zstd +github.com/klauspost/compress/zstd/internal/xxhash # github.com/mattn/go-sqlite3 v1.14.12 ## explicit github.com/mattn/go-sqlite3 # github.com/mohae/deepcopy v0.0.0-20170929034955-c48cc78d4826 github.com/mohae/deepcopy +# github.com/montanaflynn/stats v0.0.0-20171201202039-1bf9dbcd8cbe +github.com/montanaflynn/stats +# github.com/pkg/errors v0.9.1 +github.com/pkg/errors # github.com/silenceper/wechat/v2 v2.1.2 ## explicit github.com/silenceper/wechat/v2 @@ -106,13 +119,65 @@ github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common/regions # github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/ocr v1.0.364 ## explicit github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/ocr/v20181119 -# golang.org/x/crypto v0.0.0-20220331220935-ae2d96664a29 +# github.com/xdg-go/pbkdf2 v1.0.0 +github.com/xdg-go/pbkdf2 +# github.com/xdg-go/scram v1.1.1 +github.com/xdg-go/scram +# github.com/xdg-go/stringprep v1.0.3 +github.com/xdg-go/stringprep +# github.com/youmark/pkcs8 v0.0.0-20181117223130-1be2e3e5546d +github.com/youmark/pkcs8 +# go.mongodb.org/mongo-driver v1.10.1 +## explicit +go.mongodb.org/mongo-driver/bson +go.mongodb.org/mongo-driver/bson/bsoncodec +go.mongodb.org/mongo-driver/bson/bsonoptions +go.mongodb.org/mongo-driver/bson/bsonrw +go.mongodb.org/mongo-driver/bson/bsontype +go.mongodb.org/mongo-driver/bson/primitive +go.mongodb.org/mongo-driver/event +go.mongodb.org/mongo-driver/internal +go.mongodb.org/mongo-driver/internal/randutil +go.mongodb.org/mongo-driver/internal/randutil/rand +go.mongodb.org/mongo-driver/internal/uuid +go.mongodb.org/mongo-driver/mongo +go.mongodb.org/mongo-driver/mongo/address +go.mongodb.org/mongo-driver/mongo/description +go.mongodb.org/mongo-driver/mongo/options +go.mongodb.org/mongo-driver/mongo/readconcern +go.mongodb.org/mongo-driver/mongo/readpref +go.mongodb.org/mongo-driver/mongo/writeconcern +go.mongodb.org/mongo-driver/tag +go.mongodb.org/mongo-driver/version +go.mongodb.org/mongo-driver/x/bsonx +go.mongodb.org/mongo-driver/x/bsonx/bsoncore +go.mongodb.org/mongo-driver/x/mongo/driver +go.mongodb.org/mongo-driver/x/mongo/driver/auth +go.mongodb.org/mongo-driver/x/mongo/driver/auth/internal/awsv4 +go.mongodb.org/mongo-driver/x/mongo/driver/auth/internal/gssapi +go.mongodb.org/mongo-driver/x/mongo/driver/connstring +go.mongodb.org/mongo-driver/x/mongo/driver/dns +go.mongodb.org/mongo-driver/x/mongo/driver/mongocrypt +go.mongodb.org/mongo-driver/x/mongo/driver/mongocrypt/options +go.mongodb.org/mongo-driver/x/mongo/driver/ocsp +go.mongodb.org/mongo-driver/x/mongo/driver/operation +go.mongodb.org/mongo-driver/x/mongo/driver/session +go.mongodb.org/mongo-driver/x/mongo/driver/topology +go.mongodb.org/mongo-driver/x/mongo/driver/wiremessage +# golang.org/x/crypto v0.0.0-20220622213112-05595931fe9d +golang.org/x/crypto/ocsp +golang.org/x/crypto/pbkdf2 golang.org/x/crypto/pkcs12 golang.org/x/crypto/pkcs12/internal/rc2 # golang.org/x/net v0.0.0-20220225172249-27dd8689420f ## explicit golang.org/x/net/websocket +# golang.org/x/sync v0.0.0-20210220032951-036812b2e83c +golang.org/x/sync/errgroup # golang.org/x/sys v0.0.0-20211216021012-1d35b9e2eb4e golang.org/x/sys/internal/unsafeheader golang.org/x/sys/unix golang.org/x/sys/windows +# golang.org/x/text v0.3.7 +golang.org/x/text/transform +golang.org/x/text/unicode/norm