- service:优化

- utils:优化
master
李光春 2 years ago
parent 649fd2b50f
commit 1e97205c34

@ -25,13 +25,6 @@ require (
github.com/sirupsen/logrus v1.8.1
github.com/tencentyun/cos-go-sdk-v5 v0.7.35
github.com/upyun/go-sdk/v3 v3.0.2
go.dtapp.net/goip v1.0.16
go.dtapp.net/gojson v1.0.0
go.dtapp.net/golog v1.0.13
go.dtapp.net/gomongo v1.0.8
go.dtapp.net/goredis v1.0.0
go.dtapp.net/gostring v1.0.3
go.dtapp.net/gotime v1.0.2
go.etcd.io/etcd/client/v3 v3.5.4
go.mongodb.org/mongo-driver v1.9.1
go.uber.org/zap v1.21.0
@ -46,6 +39,7 @@ require (
require (
github.com/baiyubin/aliyun-sts-go-sdk v0.0.0-20180326062324-cfa1a18b161f // indirect
github.com/bitly/go-simplejson v0.5.0 // indirect
github.com/cespare/xxhash/v2 v2.1.2 // indirect
github.com/clbanning/mxj v1.8.4 // indirect
github.com/coreos/go-semver v0.3.0 // indirect
@ -83,6 +77,7 @@ require (
github.com/modern-go/reflect2 v1.0.2 // indirect
github.com/mozillazg/go-httpheader v0.3.1 // indirect
github.com/pkg/errors v0.9.1 // indirect
github.com/saracen/go7z-fixtures v0.0.0-20190623165746-aa6b8fba1d2f // indirect
github.com/saracen/solidblock v0.0.0-20190426153529-45df20abab6f // indirect
github.com/ugorji/go/codec v1.2.7 // indirect
github.com/ulikunitz/xz v0.5.10 // indirect
@ -90,7 +85,6 @@ require (
github.com/xdg-go/scram v1.1.1 // indirect
github.com/xdg-go/stringprep v1.0.3 // indirect
github.com/youmark/pkcs8 v0.0.0-20201027041543-1326539a0a0a // indirect
go.dtapp.net/gorequest v1.0.19 // indirect
go.etcd.io/etcd/api/v3 v3.5.4 // indirect
go.etcd.io/etcd/client/pkg/v3 v3.5.4 // indirect
go.uber.org/atomic v1.9.0 // indirect

@ -35,6 +35,7 @@ github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24
github.com/beorn7/perks v1.0.0/go.mod h1:KWe93zE9D1o94FZ5RNwFwVgaQK1VOXiVxmqh+CedLV8=
github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw=
github.com/bitly/go-simplejson v0.5.0 h1:6IH+V8/tVMab511d5bn4M7EwGXZf9Hj6i2xSwkNEM+Y=
github.com/bitly/go-simplejson v0.5.0/go.mod h1:cXHtHw4XUPsvGaxgjIAn8PhEWG9NfngEKAMDJEczWVA=
github.com/bradfitz/gomemcache v0.0.0-20220106215444-fb4bf637b56d h1:pVrfxiGfwelyab6n21ZBkbkmbevaf+WvMIiR7sr97hw=
github.com/bradfitz/gomemcache v0.0.0-20220106215444-fb4bf637b56d/go.mod h1:H0wQNHz2YrLsuXOZozoeDmnHXkNCRmMW0gwFWDfEZDA=
github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU=
@ -104,7 +105,6 @@ github.com/go-playground/universal-translator v0.17.0/go.mod h1:UkSxE5sNxxRwHyU+
github.com/go-playground/universal-translator v0.18.0 h1:82dyy6p4OuJq4/CByFNOn/jYrnRPArHwAcmLoJZxyho=
github.com/go-playground/universal-translator v0.18.0/go.mod h1:UvRDBj+xPUEGrFYl+lu/H90nyDXpg0fqeB/AQUGNTVA=
github.com/go-playground/validator/v10 v10.4.1/go.mod h1:nlOn6nFhuKACm19sB/8EGNn9GlaMV7XkbRSipzJ0Ii4=
github.com/go-playground/validator/v10 v10.8.0 h1:1kAa0fCrnpv+QYdkdcRzrRM7AyYs5o8+jZdJCz9xj6k=
github.com/go-playground/validator/v10 v10.8.0/go.mod h1:9JhgTzTaE31GZDpH/HSvHiRJrJ3iKAgqqH0Bl/Ocjdk=
github.com/go-playground/validator/v10 v10.11.0 h1:0W+xRM511GY47Yy3bZUbJVitCNg2BOGlCyvTqsp/xIw=
github.com/go-playground/validator/v10 v10.11.0/go.mod h1:i+3WkQ1FvaUjjxh1kSvIA4dMGDBiPU55YFDl0WbKdWU=
@ -126,7 +126,6 @@ github.com/golang-sql/civil v0.0.0-20220223132316-b832511892a9 h1:au07oEsX2xN0kt
github.com/golang-sql/civil v0.0.0-20220223132316-b832511892a9/go.mod h1:8vg3r2VgvsThLBIFL93Qb5yWzgyZWhEmBwUJWevAkK0=
github.com/golang-sql/sqlexp v0.0.0-20170517235910-f1bb20e5a188 h1:+eHOFJl1BaXrQxKX+T06f78590z4qA2ZzBTqahsKSE4=
github.com/golang-sql/sqlexp v0.0.0-20170517235910-f1bb20e5a188/go.mod h1:vXjM/+wXQnTPR4KqTKDgJukSZ6amVRtWMPEjE6sQoK8=
github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b h1:VKtxabqXZkF25pY9ekfRL6a582T4P37/31XEstQ5p58=
github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q=
github.com/golang/glog v1.0.0 h1:nfP3RFugxnNRyKgeWd4oI1nYvXpxrx8ck8ZrcizshdQ=
github.com/golang/glog v1.0.0/go.mod h1:EWib/APOK0SL3dFbYqvxE3UYd8E6s1ouQ7iEp/0LWV4=
@ -156,8 +155,8 @@ github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/
github.com/google/go-cmp v0.5.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
github.com/google/go-cmp v0.5.2/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
github.com/google/go-cmp v0.5.4/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
github.com/google/go-cmp v0.5.5 h1:Khx7svrCpmxxtHBq5j2mp/xVjsi8hQMfNLvJFAlrGgU=
github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
github.com/google/go-cmp v0.5.6 h1:BKbKCqvP6I+rmFHt06ZmyQtvB8xAkWdhFyr0ZUNZcxQ=
github.com/google/go-cmp v0.5.6/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
github.com/google/go-querystring v1.0.0/go.mod h1:odCYkC5MyYFN7vkCjXpyrEuKhc/BUO6wN/zVPAxq5ck=
github.com/google/go-querystring v1.1.0 h1:AnCroh3fv4ZBgVIf1Iwtovgjaw/GiKJo8M8yD/fhyJ8=
@ -242,7 +241,6 @@ github.com/jpillora/backoff v1.0.0/go.mod h1:J/6gKK9jxlEcS3zixgDgUAsiuZ7yrSoa/FX
github.com/json-iterator/go v1.1.6/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU=
github.com/json-iterator/go v1.1.9/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4=
github.com/json-iterator/go v1.1.10/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4=
github.com/json-iterator/go v1.1.11 h1:uVUAXhF2To8cbw/3xN3pxj6kk7TYKs98NIrTqPlMWAQ=
github.com/json-iterator/go v1.1.11/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4=
github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM=
github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo=
@ -280,7 +278,6 @@ github.com/mattn/go-colorable v0.1.1/go.mod h1:FuOcm+DKB9mbwrcAfNl7/TZVBZ6rcncea
github.com/mattn/go-colorable v0.1.6/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc=
github.com/mattn/go-isatty v0.0.5/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s=
github.com/mattn/go-isatty v0.0.7/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s=
github.com/mattn/go-isatty v0.0.12 h1:wuysRhFDzyxgEmMf5xjvJ2M9dZoWAXNNr5LSBS7uHXY=
github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU=
github.com/mattn/go-isatty v0.0.14 h1:yVuAays6BHfxijgZPzw+3Zlu5yQgKGP2/hcQbHb7S9Y=
github.com/mattn/go-isatty v0.0.14/go.mod h1:7GGIvUiUoEMVVmxf/4nioHXj79iQHKdU27kJ6hsGG94=
@ -295,7 +292,6 @@ github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJ
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg=
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0=
github.com/modern-go/reflect2 v1.0.1 h1:9f412s+6RmYXLWZSEzVVgPGK7C2PphHj5RJrvfx9AWI=
github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0=
github.com/modern-go/reflect2 v1.0.2 h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9Gz0M=
github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk=
@ -355,6 +351,7 @@ github.com/rs/zerolog v1.15.0/go.mod h1:xYTKnLHcpfU2225ny5qZjxnj9NvkumZYjJHlAThC
github.com/saracen/go7z v0.0.0-20191010121135-9c09b6bd7fda h1:h+YpzUB/bGVJcLqW+d5GghcCmE/A25KbzjXvWJQi/+o=
github.com/saracen/go7z v0.0.0-20191010121135-9c09b6bd7fda/go.mod h1:MSotTrCv1PwoR8QgU1JurEx+lNNbtr25I+m0zbLyAGw=
github.com/saracen/go7z-fixtures v0.0.0-20190623165746-aa6b8fba1d2f h1:PF9WV5j/x6MT+x/sauUHd4objCvJbZb0wdxZkHSdd5A=
github.com/saracen/go7z-fixtures v0.0.0-20190623165746-aa6b8fba1d2f/go.mod h1:6Ff0ADODZ6S3gYepgZ2w7OqFrTqtFcfwDUhmm8jsUhs=
github.com/saracen/solidblock v0.0.0-20190426153529-45df20abab6f h1:1cJITU3JUI8qNS5T0BlXwANsVdyoJQHQ4hvOxbunPCw=
github.com/saracen/solidblock v0.0.0-20190426153529-45df20abab6f/go.mod h1:LyBTue+RWeyIfN3ZJ4wVxvDuvlGJtDgCLgCb6HCPgps=
github.com/satori/go.uuid v1.2.0 h1:0uYX9dsZ2yD7q2RtLRtPSdGDWzjeM3TbMJP9utgA0ww=
@ -388,7 +385,6 @@ github.com/tidwall/pretty v1.0.0/go.mod h1:XNkn88O1ChpSDQmQeStsy+sBenx6DDtFZJxhV
github.com/ugorji/go v1.1.7/go.mod h1:kZn38zHttfInRq0xu/PH0az30d+z6vm202qpg1oXVMw=
github.com/ugorji/go v1.2.7 h1:qYhyWUUd6WbiM+C6JZAUkIJt/1WrjzNHY9+KCIjVqTo=
github.com/ugorji/go v1.2.7/go.mod h1:nF9osbDWLy6bDVv/Rtoh6QgnvNDpmCalQV5urGCCS6M=
github.com/ugorji/go/codec v1.1.7 h1:2SvQaVZ1ouYrrKKwoSk2pzd4A9evlKJb9oTL+OaLUSs=
github.com/ugorji/go/codec v1.1.7/go.mod h1:Ax+UKWsSmolVDwsd+7N3ZtXu+yMGCf907BLYF3GoBXY=
github.com/ugorji/go/codec v1.2.7 h1:YPXUKf7fYbp/y8xloBqZOw2qaVggbfwMlI8WM3wZUJ0=
github.com/ugorji/go/codec v1.2.7/go.mod h1:WGN1fab3R1fzQlVQTkfxVtIBhWDRqOviHU95kRgeqEY=
@ -411,24 +407,6 @@ github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9de
github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k=
github.com/zenazn/goji v0.9.0/go.mod h1:7S9M489iMyHBNxwZnk9/EHS098H4/F6TATF2mIxtB1Q=
go.dtapp.net/goip v1.0.16 h1:jJoXeLVc8BmlKEc+4T9mL2BFK63RJFd4B9xTMYhFRqg=
go.dtapp.net/goip v1.0.16/go.mod h1:BY2Xo5clizPZFQ8CYOlgg91fHMZR1Ll54f3P0sNHxbg=
go.dtapp.net/gojson v1.0.0 h1:jmRjeWChRyv2tKEByHvnW3kXh1jUcL8B7VurV0Zbygc=
go.dtapp.net/gojson v1.0.0/go.mod h1:TkkpTNxHBKxul0e7gC5MrL1K4ICFB9mQ7wHzjBah3/k=
go.dtapp.net/golog v1.0.13 h1:SnU6G4onDYZPOfZ9cgmj5rHdtGGOWP/Qee31aM49Wj0=
go.dtapp.net/golog v1.0.13/go.mod h1:6w5Lt1x6/yUN3iptAi59irm4kqDJHaolDsrZ9ApsZUQ=
go.dtapp.net/gomongo v1.0.8 h1:tuWHIpCVGIw/JFspczwOZRyeOEyl4zOcauZO6tgKbes=
go.dtapp.net/gomongo v1.0.8/go.mod h1:QlYy1xEY48BBxwuRVV3TAzMn+OwgKp8NXWIF5Z4X70k=
go.dtapp.net/goredis v1.0.0 h1:IvoOvdPeQlT2UR6lbumr+zN0x7ikTz9ro7od7jydD2U=
go.dtapp.net/goredis v1.0.0/go.mod h1:Wmrgb5yfbV7SiIK0NLdBOFWKnrQs+5g8p3t5+cjQkMM=
go.dtapp.net/gorequest v1.0.18 h1:NAogmkEbz4Sln4tt6Li8tF99d3WnHMkbPuYFdNz/xTE=
go.dtapp.net/gorequest v1.0.18/go.mod h1:EwOfdfxsWPszOWrphCWHTN4DbYtU6fyQ/fuWQyQwSnk=
go.dtapp.net/gorequest v1.0.19 h1:ZBkXb/oD59aChfzHfReK6M3M4eu3dwpaPTefe1c8P90=
go.dtapp.net/gorequest v1.0.19/go.mod h1:EwOfdfxsWPszOWrphCWHTN4DbYtU6fyQ/fuWQyQwSnk=
go.dtapp.net/gostring v1.0.3 h1:KSOq4D77/g5yZN/bqWfZ0kOOaPr/P1240vg03+XdENI=
go.dtapp.net/gostring v1.0.3/go.mod h1:+ggrOvgQDQturi1QGsXEpyRN/ZPoRDaqhMujIk5lrgQ=
go.dtapp.net/gotime v1.0.2 h1:CFIJHQXC/4t9bsJhk2cLhjHd6rpdPcJXr8BcHKHDuQo=
go.dtapp.net/gotime v1.0.2/go.mod h1:Gq7eNLr2iMLP18UNWONRq4V3Uhf/ADp4bIrS+Tc6ktY=
go.etcd.io/etcd/api/v3 v3.5.4 h1:OHVyt3TopwtUQ2GKdd5wu3PmmipR4FTwCqoEjSyRdIc=
go.etcd.io/etcd/api/v3 v3.5.4/go.mod h1:5GB2vv4A4AOn3yk7MftYGHkUfGtDHnEraIjym4dYz5A=
go.etcd.io/etcd/client/pkg/v3 v3.5.4 h1:lrneYvz923dvC14R54XcA7FXoZ3mlGZAgmwhfm7HqOg=
@ -603,7 +581,6 @@ google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoA
google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc=
google.golang.org/genproto v0.0.0-20200513103714-09dca8ec2884/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=
google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo=
google.golang.org/genproto v0.0.0-20210602131652-f16073e35f0c h1:wtujag7C+4D6KMoulW9YauvK2lgdvCMS260jsqqBXr0=
google.golang.org/genproto v0.0.0-20210602131652-f16073e35f0c/go.mod h1:UODoCrxHCcBojKKwX1terBiRUaqAsFqJiF615XL43r0=
google.golang.org/genproto v0.0.0-20220526192754-51939a95c655 h1:56rmjc5LUAanErbiNrY+s/Nd47wDQEJkpqS7i43M1I0=
google.golang.org/genproto v0.0.0-20220526192754-51939a95c655/go.mod h1:yKyY4AMRwFiC8yMMNaMi+RkCnjZJt9LoWuvhXjMs+To=
@ -613,7 +590,6 @@ google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQ
google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk=
google.golang.org/grpc v1.33.1/go.mod h1:fr5YgcSWrqhRRxogOsw7RzIpsmvOZ6IcH4kBYTpR3n0=
google.golang.org/grpc v1.36.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU=
google.golang.org/grpc v1.38.0 h1:/9BgsAsa5nWe26HqOlvlgJnqBuktYOLCgjCPqsa56W0=
google.golang.org/grpc v1.38.0/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM=
google.golang.org/grpc v1.46.2 h1:u+MLGgVf7vRdjEYZ8wDFhAVNmhkbJ5hmrA1LMWK1CAQ=
google.golang.org/grpc v1.46.2/go.mod h1:vN9eftEi1UMyUsIF80+uQXhHjbXYbm0uXoFCACuMGWk=
@ -627,7 +603,6 @@ google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2
google.golang.org/protobuf v1.23.1-0.20200526195155-81db48ad09cc/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU=
google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c=
google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw=
google.golang.org/protobuf v1.26.0 h1:bxAC2xTBsZGibn2RTntX0oH50xLsqy1OxA9tTL3p/lk=
google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc=
google.golang.org/protobuf v1.27.1/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc=
google.golang.org/protobuf v1.28.0 h1:w43yiav+6bVFTBQFZX0r7ipe9JQ1QsbMgHwbBziscLw=

@ -1,7 +1,7 @@
package dingdanxia
import (
"go.dtapp.net/golog"
"go.dtapp.net/library/utils/golog"
"go.dtapp.net/library/utils/gomongo"
"go.dtapp.net/library/utils/gorequest"
"gorm.io/gorm"

@ -1,7 +1,7 @@
package dingdanxia
import (
"go.dtapp.net/gomongo"
"go.dtapp.net/library/utils/gomongo"
"go.dtapp.net/library/utils/gorequest"
"net/http"
)

@ -1,8 +1,8 @@
package dingdanxia
import (
"go.dtapp.net/golog"
"go.dtapp.net/library/utils/gojson"
"go.dtapp.net/library/utils/golog"
"go.dtapp.net/library/utils/gorequest"
"gorm.io/datatypes"
)

@ -1,7 +1,7 @@
package dingtalk
import (
"go.dtapp.net/golog"
"go.dtapp.net/library/utils/golog"
"go.dtapp.net/library/utils/gorequest"
"gorm.io/gorm"
)

@ -1,8 +1,8 @@
package dingtalk
import (
"go.dtapp.net/gojson"
"go.dtapp.net/golog"
"go.dtapp.net/library/utils/gojson"
"go.dtapp.net/library/utils/golog"
"go.dtapp.net/library/utils/gorequest"
"gorm.io/datatypes"
)

@ -2,7 +2,7 @@ package douyin
import (
"errors"
"go.dtapp.net/golog"
"go.dtapp.net/library/utils/golog"
"go.dtapp.net/library/utils/gorequest"
"gorm.io/gorm"
"net/http"

@ -1,8 +1,8 @@
package douyin
import (
"go.dtapp.net/gojson"
"go.dtapp.net/golog"
"go.dtapp.net/library/utils/gojson"
"go.dtapp.net/library/utils/golog"
"go.dtapp.net/library/utils/gorequest"
"gorm.io/datatypes"
)

@ -1,8 +1,8 @@
package eastiot
import (
"go.dtapp.net/golog"
"go.dtapp.net/gomongo"
"go.dtapp.net/library/utils/golog"
"go.dtapp.net/library/utils/gomongo"
"go.dtapp.net/library/utils/gorequest"
"gorm.io/gorm"
"time"

@ -1,7 +1,7 @@
package eastiot
import (
"go.dtapp.net/gomongo"
"go.dtapp.net/library/utils/gomongo"
"go.dtapp.net/library/utils/gorequest"
"net/http"
)

@ -1,8 +1,8 @@
package eastiot
import (
"go.dtapp.net/golog"
"go.dtapp.net/library/utils/gojson"
"go.dtapp.net/library/utils/golog"
"go.dtapp.net/library/utils/gorequest"
"gorm.io/datatypes"
)

@ -2,9 +2,9 @@ package ejiaofei
import (
"fmt"
"go.dtapp.net/golog"
"go.dtapp.net/gomongo"
"go.dtapp.net/library/utils/golog"
"go.dtapp.net/library/utils/gomd5"
"go.dtapp.net/library/utils/gomongo"
"go.dtapp.net/library/utils/gorequest"
"gorm.io/gorm"
)

@ -1,7 +1,7 @@
package ejiaofei
import (
"go.dtapp.net/gomongo"
"go.dtapp.net/library/utils/gomongo"
"go.dtapp.net/library/utils/gorequest"
"net/http"
)

@ -1,9 +1,9 @@
package ejiaofei
import (
"go.dtapp.net/golog"
"go.dtapp.net/gomongo"
"go.dtapp.net/library/utils/gojson"
"go.dtapp.net/library/utils/golog"
"go.dtapp.net/library/utils/gomongo"
"go.dtapp.net/library/utils/gorequest"
"gorm.io/datatypes"
)

@ -1,7 +1,7 @@
package feishu
import (
"go.dtapp.net/golog"
"go.dtapp.net/library/utils/golog"
"go.dtapp.net/library/utils/gorequest"
"gorm.io/gorm"
)

@ -1,8 +1,8 @@
package feishu
import (
"go.dtapp.net/gojson"
"go.dtapp.net/golog"
"go.dtapp.net/library/utils/gojson"
"go.dtapp.net/library/utils/golog"
"go.dtapp.net/library/utils/gorequest"
"gorm.io/datatypes"
)

@ -1,9 +1,9 @@
package jd
import (
"go.dtapp.net/golog"
"go.dtapp.net/library/utils/golog"
"go.dtapp.net/library/utils/gorequest"
"go.dtapp.net/gostring"
"go.dtapp.net/library/utils/gostring"
"gorm.io/gorm"
)

@ -1,8 +1,8 @@
package jd
import (
"go.dtapp.net/gojson"
"go.dtapp.net/golog"
"go.dtapp.net/library/utils/gojson"
"go.dtapp.net/library/utils/golog"
"go.dtapp.net/library/utils/gorequest"
"gorm.io/datatypes"
)

@ -1,7 +1,7 @@
package kashangwl
import (
"go.dtapp.net/golog"
"go.dtapp.net/library/utils/golog"
"go.dtapp.net/library/utils/gorequest"
"gorm.io/gorm"
"time"

@ -1,9 +1,9 @@
package kashangwl
import (
"go.dtapp.net/golog"
"go.dtapp.net/library/utils/gorequest"
"go.dtapp.net/library/utils/gojson"
"go.dtapp.net/library/utils/golog"
"go.dtapp.net/library/utils/gorequest"
"gorm.io/datatypes"
)

@ -1,8 +1,8 @@
package kuaishou
import (
"go.dtapp.net/golog"
"go.dtapp.net/gomongo"
"go.dtapp.net/library/utils/golog"
"go.dtapp.net/library/utils/gomongo"
"go.dtapp.net/library/utils/gorequest"
"gorm.io/gorm"
)

@ -1,7 +1,7 @@
package kuaishou
import (
"go.dtapp.net/gomongo"
"go.dtapp.net/library/utils/gomongo"
"go.dtapp.net/library/utils/gorequest"
"net/http"
)

@ -1,8 +1,8 @@
package kuaishou
import (
"go.dtapp.net/gojson"
"go.dtapp.net/golog"
"go.dtapp.net/library/utils/gojson"
"go.dtapp.net/library/utils/golog"
"go.dtapp.net/library/utils/gorequest"
"gorm.io/datatypes"
)

@ -1,10 +1,10 @@
package leshuazf
import (
"go.dtapp.net/golog"
"go.dtapp.net/gomongo"
"go.dtapp.net/library/utils/gorequest"
"go.dtapp.net/library/utils/golog"
"go.dtapp.net/library/utils/gomongo"
"go.dtapp.net/library/utils/gorandom"
"go.dtapp.net/library/utils/gorequest"
"go.dtapp.net/library/utils/gotime"
"gorm.io/gorm"
)

@ -1,7 +1,7 @@
package leshuazf
import (
"go.dtapp.net/gomongo"
"go.dtapp.net/library/utils/gomongo"
"go.dtapp.net/library/utils/gorequest"
"net/http"
)

@ -1,8 +1,8 @@
package leshuazf
import (
"go.dtapp.net/golog"
"go.dtapp.net/library/utils/gojson"
"go.dtapp.net/library/utils/golog"
"go.dtapp.net/library/utils/gorequest"
"gorm.io/datatypes"
)

@ -1,7 +1,7 @@
package meituan
import (
"go.dtapp.net/golog"
"go.dtapp.net/library/utils/golog"
"go.dtapp.net/library/utils/gorequest"
"gorm.io/gorm"
)

@ -1,8 +1,8 @@
package meituan
import (
"go.dtapp.net/golog"
"go.dtapp.net/library/utils/gojson"
"go.dtapp.net/library/utils/golog"
"go.dtapp.net/library/utils/gorequest"
"gorm.io/datatypes"
)

@ -1,8 +1,8 @@
package pconline
import (
"go.dtapp.net/golog"
"go.dtapp.net/gomongo"
"go.dtapp.net/library/utils/golog"
"go.dtapp.net/library/utils/gomongo"
"go.dtapp.net/library/utils/gorequest"
"gorm.io/gorm"
)

@ -1,7 +1,7 @@
package pconline
import (
"go.dtapp.net/gomongo"
"go.dtapp.net/library/utils/gomongo"
"go.dtapp.net/library/utils/gorequest"
"net/http"
)

@ -1,9 +1,9 @@
package pconline
import (
"go.dtapp.net/golog"
"go.dtapp.net/library/utils/gorequest"
"go.dtapp.net/library/utils/gojson"
"go.dtapp.net/library/utils/golog"
"go.dtapp.net/library/utils/gorequest"
"gorm.io/datatypes"
)

@ -2,9 +2,9 @@ package pinduoduo
import (
"fmt"
"go.dtapp.net/golog"
"go.dtapp.net/library/utils/golog"
"go.dtapp.net/library/utils/gorequest"
"go.dtapp.net/gostring"
"go.dtapp.net/library/utils/gostring"
"gorm.io/gorm"
"regexp"
"strconv"

@ -1,8 +1,8 @@
package pinduoduo
import (
"go.dtapp.net/gojson"
"go.dtapp.net/golog"
"go.dtapp.net/library/utils/gojson"
"go.dtapp.net/library/utils/golog"
"go.dtapp.net/library/utils/gorequest"
"gorm.io/datatypes"
)

@ -1,8 +1,8 @@
package pintoto
import (
"go.dtapp.net/golog"
"go.dtapp.net/gomongo"
"go.dtapp.net/library/utils/golog"
"go.dtapp.net/library/utils/gomongo"
"go.dtapp.net/library/utils/gorequest"
"gorm.io/gorm"
"math"

@ -1,7 +1,7 @@
package pintoto
import (
"go.dtapp.net/gomongo"
"go.dtapp.net/library/utils/gomongo"
"go.dtapp.net/library/utils/gorequest"
"net/http"
)

@ -1,8 +1,8 @@
package pintoto
import (
"go.dtapp.net/golog"
"go.dtapp.net/library/utils/gojson"
"go.dtapp.net/library/utils/golog"
"go.dtapp.net/library/utils/gorequest"
"gorm.io/datatypes"
)

@ -1,8 +1,8 @@
package sendcloud
import (
"go.dtapp.net/golog"
"go.dtapp.net/gomongo"
"go.dtapp.net/library/utils/golog"
"go.dtapp.net/library/utils/gomongo"
"go.dtapp.net/library/utils/gorequest"
"gorm.io/gorm"
)
@ -14,7 +14,7 @@ type App struct {
mongo *gomongo.Client // 日志数据库
pgsql *gorm.DB // pgsql数据库
client *gorequest.App // 请求客户端
log *golog.Client // 日志服务
log *golog.Api // 日志服务
logTableName string // 日志表名
logStatus bool // 日志状态
}
@ -26,7 +26,10 @@ func NewApp(apiUser string, apiKey string, pgsql *gorm.DB) *App {
app.pgsql = pgsql
app.logStatus = true
app.logTableName = "sendcloud"
app.log = golog.NewClientApi(pgsql, app.logTableName)
app.log = golog.NewApi(&golog.ApiConfig{
Db: pgsql,
TableName: app.logTableName,
})
}
return app
}
@ -60,9 +63,6 @@ func (app *App) request(url string, params map[string]interface{}, method string
}
// 日志
if app.mongo != nil && app.mongo.Db != nil {
go app.mongoLog(request)
}
if app.logStatus == true {
go app.postgresqlLog(request)
}

@ -1,7 +1,7 @@
package sendcloud
import (
"go.dtapp.net/gomongo"
"go.dtapp.net/library/utils/gomongo"
"go.dtapp.net/library/utils/gorequest"
"net/http"
)

@ -1,15 +1,15 @@
package sendcloud
import (
"go.dtapp.net/golog"
"go.dtapp.net/library/utils/gorequest"
"go.dtapp.net/library/utils/gojson"
"go.dtapp.net/library/utils/golog"
"go.dtapp.net/library/utils/gorequest"
"gorm.io/datatypes"
)
// 记录日志
func (app *App) postgresqlLog(request gorequest.Response) {
app.log.Api.Record(golog.ApiPostgresqlLog{
app.log.Record(golog.ApiPostgresqlLog{
RequestTime: request.RequestTime, //【请求】时间
RequestUri: request.RequestUri, //【请求】链接
RequestUrl: gorequest.UriParse(request.RequestUri).Url, //【请求】链接

@ -2,9 +2,9 @@ package taobao
import (
"fmt"
"go.dtapp.net/golog"
"go.dtapp.net/library/utils/golog"
"go.dtapp.net/library/utils/gorequest"
"go.dtapp.net/gostring"
"go.dtapp.net/library/utils/gostring"
"gorm.io/gorm"
"regexp"
"strconv"

@ -1,8 +1,8 @@
package taobao
import (
"go.dtapp.net/gojson"
"go.dtapp.net/golog"
"go.dtapp.net/library/utils/gojson"
"go.dtapp.net/library/utils/golog"
"go.dtapp.net/library/utils/gorequest"
"gorm.io/datatypes"
)

@ -1,9 +1,9 @@
package wechatminiprogram
import (
"go.dtapp.net/golog"
"go.dtapp.net/library/utils/gorequest"
"go.dtapp.net/library/utils/golog"
"go.dtapp.net/library/utils/goredis"
"go.dtapp.net/library/utils/gorequest"
"gorm.io/gorm"
)

@ -1,9 +1,9 @@
package wechatminiprogram
import (
"go.dtapp.net/golog"
"go.dtapp.net/library/utils/gorequest"
"go.dtapp.net/library/utils/gojson"
"go.dtapp.net/library/utils/golog"
"go.dtapp.net/library/utils/gorequest"
"gorm.io/datatypes"
)

@ -1,9 +1,9 @@
package wechatoffice
import (
"go.dtapp.net/golog"
"go.dtapp.net/library/utils/gorequest"
"go.dtapp.net/library/utils/golog"
"go.dtapp.net/library/utils/goredis"
"go.dtapp.net/library/utils/gorequest"
"gorm.io/gorm"
)

@ -1,9 +1,9 @@
package wechatoffice
import (
"go.dtapp.net/golog"
"go.dtapp.net/library/utils/gorequest"
"go.dtapp.net/library/utils/gojson"
"go.dtapp.net/library/utils/golog"
"go.dtapp.net/library/utils/gorequest"
"gorm.io/datatypes"
)

@ -1,9 +1,9 @@
package wechatopen
import (
"go.dtapp.net/golog"
"go.dtapp.net/library/utils/gorequest"
"go.dtapp.net/library/utils/golog"
"go.dtapp.net/library/utils/goredis"
"go.dtapp.net/library/utils/gorequest"
"gorm.io/gorm"
)

@ -1,9 +1,9 @@
package wechatopen
import (
"go.dtapp.net/golog"
"go.dtapp.net/library/utils/gorequest"
"go.dtapp.net/library/utils/gojson"
"go.dtapp.net/library/utils/golog"
"go.dtapp.net/library/utils/gorequest"
"gorm.io/datatypes"
)

@ -2,8 +2,8 @@ package wechatpayapiv2
import (
"crypto/tls"
"go.dtapp.net/golog"
"go.dtapp.net/gomongo"
"go.dtapp.net/library/utils/golog"
"go.dtapp.net/library/utils/gomongo"
"go.dtapp.net/library/utils/gorequest"
"gorm.io/gorm"
)

@ -1,7 +1,7 @@
package wechatpayapiv2
import (
"go.dtapp.net/gomongo"
"go.dtapp.net/library/utils/gomongo"
"go.dtapp.net/library/utils/gorequest"
"net/http"
)

@ -1,10 +1,10 @@
package wechatpayapiv2
import (
"go.dtapp.net/golog"
"go.dtapp.net/gomongo"
"go.dtapp.net/library/utils/gorequest"
"go.dtapp.net/library/utils/gojson"
"go.dtapp.net/library/utils/golog"
"go.dtapp.net/library/utils/gomongo"
"go.dtapp.net/library/utils/gorequest"
"gorm.io/datatypes"
)

@ -1,8 +1,8 @@
package wechatpayapiv3
import (
"go.dtapp.net/golog"
"go.dtapp.net/gomongo"
"go.dtapp.net/library/utils/golog"
"go.dtapp.net/library/utils/gomongo"
"go.dtapp.net/library/utils/gorequest"
"gorm.io/gorm"
"net/http"

@ -1,7 +1,7 @@
package wechatpayapiv3
import (
"go.dtapp.net/gomongo"
"go.dtapp.net/library/utils/gomongo"
"go.dtapp.net/library/utils/gorequest"
"net/http"
)

@ -1,9 +1,9 @@
package wechatpayapiv3
import (
"go.dtapp.net/golog"
"go.dtapp.net/library/utils/gorequest"
"go.dtapp.net/library/utils/gojson"
"go.dtapp.net/library/utils/golog"
"go.dtapp.net/library/utils/gorequest"
"gorm.io/datatypes"
)

@ -1,7 +1,7 @@
package wechatpayopen
import (
"go.dtapp.net/golog"
"go.dtapp.net/library/utils/golog"
"go.dtapp.net/library/utils/gorequest"
"gorm.io/gorm"
)

@ -1,9 +1,9 @@
package wechatpayopen
import (
"go.dtapp.net/golog"
"go.dtapp.net/library/utils/gorequest"
"go.dtapp.net/library/utils/gojson"
"go.dtapp.net/library/utils/golog"
"go.dtapp.net/library/utils/gorequest"
"gorm.io/datatypes"
)

@ -1,7 +1,7 @@
package wechatqy
import (
"go.dtapp.net/golog"
"go.dtapp.net/library/utils/golog"
"go.dtapp.net/library/utils/gorequest"
"gorm.io/gorm"
)

@ -1,8 +1,8 @@
package wechatqy
import (
"go.dtapp.net/gojson"
"go.dtapp.net/golog"
"go.dtapp.net/library/utils/gojson"
"go.dtapp.net/library/utils/golog"
"go.dtapp.net/library/utils/gorequest"
"gorm.io/datatypes"
)

@ -1,8 +1,8 @@
package wechatunion
import (
"go.dtapp.net/golog"
"go.dtapp.net/goredis"
"go.dtapp.net/library/utils/golog"
"go.dtapp.net/library/utils/goredis"
"go.dtapp.net/library/utils/gorequest"
"gorm.io/gorm"
)

@ -1,8 +1,8 @@
package wechatunion
import (
"go.dtapp.net/gojson"
"go.dtapp.net/golog"
"go.dtapp.net/library/utils/gojson"
"go.dtapp.net/library/utils/golog"
"go.dtapp.net/library/utils/gorequest"
"gorm.io/datatypes"
)

@ -1,8 +1,8 @@
package weishi
import (
"go.dtapp.net/gojson"
"go.dtapp.net/golog"
"go.dtapp.net/library/utils/gojson"
"go.dtapp.net/library/utils/golog"
"go.dtapp.net/library/utils/gorequest"
"gorm.io/datatypes"
)

@ -2,7 +2,7 @@ package weishi
import (
"errors"
"go.dtapp.net/golog"
"go.dtapp.net/library/utils/golog"
"go.dtapp.net/library/utils/gorequest"
"gorm.io/gorm"
"net/http"

@ -2,8 +2,8 @@ package wikeyun
import (
"fmt"
"go.dtapp.net/golog"
"go.dtapp.net/library/utils/goip"
"go.dtapp.net/library/utils/golog"
"go.dtapp.net/library/utils/gorequest"
"gorm.io/gorm"
)

@ -1,8 +1,8 @@
package wikeyun
import (
"go.dtapp.net/golog"
"go.dtapp.net/library/utils/gojson"
"go.dtapp.net/library/utils/golog"
"go.dtapp.net/library/utils/gorequest"
"gorm.io/datatypes"
)

@ -1,9 +1,9 @@
package goip
import (
"go.dtapp.net/goip/ip2region"
v4 "go.dtapp.net/goip/v4"
v6 "go.dtapp.net/goip/v6"
"go.dtapp.net/library/utils/goip/ip2region"
v4 "go.dtapp.net/library/utils/goip/v4"
v6 "go.dtapp.net/library/utils/goip/v6"
"log"
"strings"
)

@ -1,7 +1,7 @@
package golog
import (
"go.dtapp.net/goip"
"go.dtapp.net/library/utils/goip"
"gorm.io/datatypes"
"gorm.io/gorm"
"log"

@ -1,7 +1,7 @@
package golog
import (
"go.dtapp.net/goip"
"go.dtapp.net/library/utils/goip"
"gorm.io/datatypes"
"gorm.io/gorm"
"log"

@ -4,7 +4,7 @@ import (
"database/sql/driver"
"errors"
"fmt"
"go.dtapp.net/gotime"
"go.dtapp.net/library/utils/gotime"
"gorm.io/gorm"
"gorm.io/gorm/schema"
"time"

@ -1,7 +1,7 @@
package gomongo
import (
"go.dtapp.net/gotime"
"go.dtapp.net/library/utils/gotime"
"go.mongodb.org/mongo-driver/bson"
"go.mongodb.org/mongo-driver/bson/bsontype"
"time"

@ -6,7 +6,7 @@ import (
"encoding/json"
"errors"
"fmt"
"go.dtapp.net/gotime"
"go.dtapp.net/library/utils/gotime"
"io"
"io/ioutil"
"net/http"

@ -2,7 +2,7 @@ package gorequest
import (
"encoding/json"
"go.dtapp.net/gostring"
"go.dtapp.net/library/utils/gostring"
"log"
)

@ -1,11 +0,0 @@
kind: pipeline
type: docker
name: clone
steps:
- name: test-golang
image: golang:1.18
commands:
- go env -w GO111MODULE=on
- go env -w GOPROXY=https://goproxy.cn,direct
- go test -v ./...

@ -1,8 +0,0 @@
.env
.git
.svn
.idea
.vscode
*.log
gomod.sh
/vendor/

@ -1,44 +0,0 @@
<h1>
<a href="https://www.dtapp.net/">Golang Ip</a>
</h1>
📦 Golang Ip库组件
[comment]: <> (go)
[![godoc](https://pkg.go.dev/badge/go.dtapp.net/goip?status.svg)](https://pkg.go.dev/go.dtapp.net/goip)
[![goproxy.cn](https://goproxy.cn/stats/go.dtapp.net/goip/badges/download-count.svg)](https://goproxy.cn/stats/go.dtapp.net/goip)
[![goreportcard.com](https://goreportcard.com/badge/go.dtapp.net/goip )](https://goreportcard.com/report/go.dtapp.net/goip)
[![deps.dev](https://img.shields.io/badge/deps-go-red.svg)](https://deps.dev/go/go.dtapp.net/goip)
#### 安装使用
```go
go get -v -u go.dtapp.net/goip
```
#### 导入
```go
import (
"go.dtapp.net/goip"
)
```
```go
package main
import (
"go.dtapp.net/goip"
"testing"
)
func TestGoIp(t *testing.T) {
// 获取Mac地址
t.Log(goip.GetMacAddr())
// 内网ip
t.Log(goip.GetInsideIp())
// 外网ip
t.Log(goip.GetOutsideIp())
}
```

@ -1,89 +0,0 @@
package goip
import (
"strconv"
)
var (
ipv4 = "IPV4"
ipv6 = "IPV6"
)
type AnalyseResult struct {
IP string `json:"ip,omitempty"` // 输入的ip地址
Country string `json:"country,omitempty"` // 国家或地区
Province string `json:"province,omitempty"` // 省份
City string `json:"city,omitempty"` // 城市
Area string `json:"area,omitempty"` // 区域
Isp string `json:"isp,omitempty"` // 运营商
}
func (c *Client) Analyse(item string) AnalyseResult {
isIp := c.isIpv4OrIpv6(item)
switch isIp {
case ipv4:
info := c.V4db.Find(item)
search, err := c.V4Region.MemorySearch(item)
if err != nil {
return AnalyseResult{
IP: info.IP,
Country: info.Country,
Area: info.Area,
}
} else {
return AnalyseResult{
IP: search.IP,
Country: search.Country,
Province: search.Province,
City: search.City,
Isp: info.Area,
}
}
case ipv6:
info := c.V6db.Find(item)
return AnalyseResult{
IP: info.IP,
Country: info.Country,
Province: info.Province,
City: info.City,
Area: info.Area,
Isp: info.Isp,
}
default:
return AnalyseResult{}
}
}
// CheckIpv4 检查数据是不是IPV4
func (c *Client) CheckIpv4(ips string) bool {
if len(ips) > 3 {
return false
}
nums, err := strconv.Atoi(ips)
if err != nil {
return false
}
if nums < 0 || nums > 255 {
return false
}
if len(ips) > 1 && ips[0] == '0' {
return false
}
return true
}
// CheckIpv6 检测是不是IPV6
func (c *Client) CheckIpv6(ips string) bool {
if ips == "" {
return true
}
if len(ips) > 4 {
return false
}
for _, val := range ips {
if !((val >= '0' && val <= '9') || (val >= 'a' && val <= 'f') || (val >= 'A' && val <= 'F')) {
return false
}
}
return true
}

63
vendor/go.dtapp.net/goip/goip.go generated vendored

@ -1,63 +0,0 @@
package goip
import (
"go.dtapp.net/goip/ip2region"
v4 "go.dtapp.net/goip/v4"
v6 "go.dtapp.net/goip/v6"
"log"
"strings"
)
type Client struct {
V4Region ip2region.Ip2Region // IPV4
V4db v4.Pointer // IPV4
V6db v6.Pointer // IPV6
}
// NewIp 实例化
func NewIp() *Client {
app := &Client{}
v4Num := app.V4db.InitIPV4Data()
log.Printf("IPV4 库加载完成 共加载:%d 条 IP 记录\n", v4Num)
v6Num := app.V6db.InitIPV4Data()
log.Printf("IPV6 库加载完成 共加载:%d 条 IP 记录\n", v6Num)
return app
}
func (c *Client) Ipv4(ip string) (res v4.Result, resInfo ip2region.IpInfo) {
res = c.V4db.Find(ip)
resInfo, _ = c.V4Region.MemorySearch(ip)
return res, resInfo
}
func (c *Client) Ipv6(ip string) (res v6.Result) {
res = c.V6db.Find(ip)
return res
}
func (c *Client) isIpv4OrIpv6(ip string) string {
if len(ip) < 7 {
return ""
}
arrIpv4 := strings.Split(ip, ".")
if len(arrIpv4) == 4 {
//. 判断IPv4
for _, val := range arrIpv4 {
if !c.CheckIpv4(val) {
return ""
}
}
return ipv4
}
arrIpv6 := strings.Split(ip, ":")
if len(arrIpv6) == 8 {
// 判断Ipv6
for _, val := range arrIpv6 {
if !c.CheckIpv6(val) {
return "Neither"
}
}
return ipv6
}
return ""
}

90
vendor/go.dtapp.net/goip/ip.go generated vendored

@ -1,90 +0,0 @@
package goip
import (
"encoding/json"
"go.dtapp.net/gorequest"
"net"
)
// GetInsideIp 内网ip
func GetInsideIp() string {
conn, err := net.Dial("udp", "8.8.8.8:80")
if err != nil {
panic(err)
}
defer conn.Close()
localAddr := conn.LocalAddr().(*net.UDPAddr)
return localAddr.IP.String()
}
// Ips 获取全部网卡的全部IP
func Ips() (map[string]string, error) {
ips := make(map[string]string)
//返回 interface 结构体对象的列表,包含了全部网卡信息
interfaces, err := net.Interfaces()
if err != nil {
return nil, err
}
//遍历全部网卡
for _, i := range interfaces {
// Addrs() 方法返回一个网卡上全部的IP列表
address, err := i.Addrs()
if err != nil {
return nil, err
}
//遍历一个网卡上全部的IP列表组合为一个字符串放入对应网卡名称的map中
for _, v := range address {
ips[i.Name] += v.String() + " "
}
}
return ips, nil
}
var respGetOutsideIp struct {
Data struct {
Ip string `json:"ip"`
} `json:"data"`
}
// GetOutsideIp 外网ip
func GetOutsideIp() (ip string) {
ip = "0.0.0.0"
get := gorequest.NewHttp()
get.SetUri("https://api.dtapp.net/ip")
response, err := get.Get()
if err != nil {
return
}
err = json.Unmarshal(response.ResponseBody, &respGetOutsideIp)
if err != nil {
return
}
if respGetOutsideIp.Data.Ip == "" {
return
}
ip = respGetOutsideIp.Data.Ip
return respGetOutsideIp.Data.Ip
}
// GetMacAddr 获取Mac地址
func GetMacAddr() (arrays []string) {
netInterfaces, err := net.Interfaces()
if err != nil {
return arrays
}
for _, netInterface := range netInterfaces {
addr := netInterface.HardwareAddr.String()
if len(addr) == 0 {
continue
}
arrays = append(arrays, addr)
}
return arrays
}

@ -1,17 +0,0 @@
package ip2region
import (
"io/ioutil"
"net/http"
)
func getOnline() ([]byte, error) {
resp, err := http.Get("https://ghproxy.com/?q=https://github.com/lionsoul2014/ip2region/blob/master/data/ip2region.db?raw=true")
if err != nil {
return nil, err
}
defer resp.Body.Close()
body, err := ioutil.ReadAll(resp.Body)
return body, err
}

Binary file not shown.

@ -1,177 +0,0 @@
package ip2region
import (
_ "embed"
"errors"
"go.dtapp.net/gostring"
"io/ioutil"
"log"
"os"
"strconv"
"strings"
)
const (
IndexBlockLength = 12
)
type Ip2Region struct {
// db file handler
dbFileHandler *os.File
//header block info
headerSip []int64
headerPtr []int64
headerLen int64
// super block index info
firstIndexPtr int64
lastIndexPtr int64
totalBlocks int64
// for memory mode only
// the original db binary string
dbFile string
}
//go:embed ip2region.db
var dbBinStr []byte
type IpInfo struct {
IP string `json:"ip,omitempty"` // 输入的ip地址
CityID int64 `json:"city_id,omitempty"` // 城市ID
Country string `json:"country,omitempty"` // 国家
Region string `json:"region,omitempty"` // 区域
Province string `json:"province,omitempty"` // 省份
City string `json:"city,omitempty"` // 城市
ISP string `json:"isp,omitempty"` // 运营商
}
func (ip IpInfo) String() string {
return ip.IP + "|" + strconv.FormatInt(ip.CityID, 10) + "|" + ip.Country + "|" + ip.Region + "|" + ip.Province + "|" + ip.City + "|" + ip.ISP
}
// 获取Ip信息
func getIpInfo(ipStr string, cityId int64, line []byte) (ipInfo IpInfo) {
lineSlice := strings.Split(string(line), "|")
length := len(lineSlice)
ipInfo.CityID = cityId
if length < 5 {
for i := 0; i <= 5-length; i++ {
lineSlice = append(lineSlice, "")
}
}
if lineSlice[0] != "0" {
ipInfo.Country = gostring.SpaceAndLineBreak(lineSlice[0])
}
if lineSlice[1] != "0" {
ipInfo.Region = gostring.SpaceAndLineBreak(lineSlice[1])
}
if lineSlice[2] != "0" {
ipInfo.Province = gostring.SpaceAndLineBreak(lineSlice[2])
}
if lineSlice[3] != "0" {
ipInfo.City = gostring.SpaceAndLineBreak(lineSlice[3])
}
if lineSlice[4] != "0" {
ipInfo.ISP = gostring.SpaceAndLineBreak(lineSlice[4])
}
ipInfo.IP = ipStr
return ipInfo
}
// MemorySearch memory算法整个数据库全部载入内存单次查询都在0.1x毫秒内
func (r *Ip2Region) MemorySearch(ipStr string) (ipInfo IpInfo, err error) {
ipInfo.IP = ipStr
if r.totalBlocks == 0 {
if err != nil {
return ipInfo, err
}
r.firstIndexPtr = getLong(dbBinStr, 0)
r.lastIndexPtr = getLong(dbBinStr, 4)
r.totalBlocks = (r.lastIndexPtr-r.firstIndexPtr)/IndexBlockLength + 1
}
ip, err := ip2long(ipStr)
if err != nil {
return ipInfo, err
}
h := r.totalBlocks
var dataPtr, l int64
for l <= h {
m := (l + h) >> 1
p := r.firstIndexPtr + m*IndexBlockLength
sip := getLong(dbBinStr, p)
if ip < sip {
h = m - 1
} else {
eip := getLong(dbBinStr, p+4)
if ip > eip {
l = m + 1
} else {
dataPtr = getLong(dbBinStr, p+8)
break
}
}
}
if dataPtr == 0 {
return ipInfo, errors.New("not found")
}
dataLen := (dataPtr >> 24) & 0xFF
dataPtr = dataPtr & 0x00FFFFFF
ipInfo = getIpInfo(ipStr, getLong(dbBinStr, dataPtr), dbBinStr[(dataPtr)+4:dataPtr+dataLen])
return ipInfo, nil
}
func getLong(b []byte, offset int64) int64 {
val := int64(b[offset]) |
int64(b[offset+1])<<8 |
int64(b[offset+2])<<16 |
int64(b[offset+3])<<24
return val
}
func ip2long(IpStr string) (int64, error) {
bits := strings.Split(IpStr, ".")
if len(bits) != 4 {
return 0, errors.New("ip format error")
}
var sum int64
for i, n := range bits {
bit, _ := strconv.ParseInt(n, 10, 64)
sum += bit << uint(24-8*i)
}
return sum, nil
}
func (r *Ip2Region) OnlineDownload() (err error) {
tmpData, err := getOnline()
if err != nil {
return errors.New("下载失败 %s" + err.Error())
}
if err := ioutil.WriteFile("./ip2region.db", tmpData, 0644); err == nil {
log.Printf("已下载最新 ip2region 数据库 %s ", "./ip2region.db")
} else {
return errors.New("保存失败")
}
return nil
}

@ -1,58 +0,0 @@
package v4
import (
"bytes"
"compress/zlib"
"encoding/binary"
"io/ioutil"
"net/http"
)
// 解密key
// https://zhangzifan.com/update-qqwry-dat.html
func getKey() (uint32, error) {
resp, err := http.Get("https://update.cz88.net/ip/copywrite.rar")
if err != nil {
return 0, err
}
defer resp.Body.Close()
if body, err := ioutil.ReadAll(resp.Body); err != nil {
return 0, err
} else {
// @see https://stackoverflow.com/questions/34078427/how-to-read-packed-binary-data-in-go
return binary.LittleEndian.Uint32(body[5*4:]), nil
}
}
// 在线获取内容
func getOnline() ([]byte, error) {
resp, err := http.Get("https://update.cz88.net/ip/qqwry.rar")
if err != nil {
return nil, err
}
defer resp.Body.Close()
if body, err := ioutil.ReadAll(resp.Body); err != nil {
return nil, err
} else {
if key, err := getKey(); err != nil {
return nil, err
} else {
for i := 0; i < 0x200; i++ {
key = key * 0x805
key++
key = key & 0xff
body[i] = byte(uint32(body[i]) ^ key)
}
reader, err := zlib.NewReader(bytes.NewReader(body))
if err != nil {
return nil, err
}
return ioutil.ReadAll(reader)
}
}
}

201
vendor/go.dtapp.net/goip/v4/ipv4.go generated vendored

@ -1,201 +0,0 @@
package v4
import (
_ "embed"
"encoding/binary"
"errors"
"go.dtapp.net/gostring"
"golang.org/x/text/encoding/simplifiedchinese"
"io/ioutil"
"log"
"net"
)
var (
header []byte
country []byte
area []byte
offset uint32
start uint32
end uint32
)
//go:embed qqwry.dat
var dat []byte
type Pointer struct {
Offset uint32
ItemLen uint32
IndexLen uint32
}
// Result 返回
type Result struct {
IP string `json:"ip,omitempty"` // 输入的ip地址
Country string `json:"country,omitempty"` // 国家或地区
Area string `json:"area,omitempty"` // 区域
}
// InitIPV4Data 加载
func (q *Pointer) InitIPV4Data() int64 {
buf := dat[0:8]
start := binary.LittleEndian.Uint32(buf[:4])
end := binary.LittleEndian.Uint32(buf[4:])
return int64((end-start)/7 + 1)
}
// ReadData 从文件中读取数据
func (q *Pointer) readData(length uint32) (rs []byte) {
end := q.Offset + length
dataNum := uint32(len(dat))
if q.Offset > dataNum {
return nil
}
if end > dataNum {
end = dataNum
}
rs = dat[q.Offset:end]
q.Offset = end
return rs
}
// Find ip地址查询对应归属地信息
func (q *Pointer) Find(ip string) (res Result) {
// 赋值
res.IP = ip
if net.ParseIP("61.241.55.180").To4() == nil {
// 不是ip地址
return res
}
q.Offset = 0
// 偏移
offset = q.searchIndex(binary.BigEndian.Uint32(net.ParseIP(ip).To4()))
if offset <= 0 {
return
}
q.Offset = offset + q.ItemLen
country, area = q.getAddr()
enc := simplifiedchinese.GBK.NewDecoder()
res.Country, _ = enc.String(string(country))
res.Country = gostring.SpaceAndLineBreak(res.Country)
res.Area, _ = enc.String(string(area))
// Delete CZ88.NET (防止不相关的信息产生干扰)
if res.Area == " CZ88.NET" || res.Area == "" {
res.Area = ""
} else {
res.Area = " " + res.Area
}
res.Area = gostring.SpaceAndLineBreak(res.Area)
return
}
// 获取地址信息
func (q *Pointer) getAddr() ([]byte, []byte) {
mode := q.readData(1)[0]
if mode == 0x01 {
// [IP][0x01][国家和地区信息的绝对偏移地址]
q.Offset = byteToUInt32(q.readData(3))
return q.getAddr()
}
// [IP][0x02][信息的绝对偏移][...] or [IP][国家][...]
_offset := q.Offset - 1
c1 := q.readArea(_offset)
if mode == 0x02 {
q.Offset = 4 + _offset
} else {
q.Offset = _offset + uint32(1+len(c1))
}
c2 := q.readArea(q.Offset)
return c1, c2
}
// 读取区
func (q *Pointer) readArea(offset uint32) []byte {
q.Offset = offset
mode := q.readData(1)[0]
if mode == 0x01 || mode == 0x02 {
return q.readArea(byteToUInt32(q.readData(3)))
}
q.Offset = offset
return q.readString()
}
// 读取字符串
func (q *Pointer) readString() []byte {
data := make([]byte, 0)
for {
buf := q.readData(1)
if buf[0] == 0 {
break
}
data = append(data, buf[0])
}
return data
}
// 搜索索引
func (q *Pointer) searchIndex(ip uint32) uint32 {
q.ItemLen = 4
q.IndexLen = 7
header = dat[0:8]
start = binary.LittleEndian.Uint32(header[:4])
end = binary.LittleEndian.Uint32(header[4:])
buf := make([]byte, q.IndexLen)
for {
mid := start + q.IndexLen*(((end-start)/q.IndexLen)>>1)
buf = dat[mid : mid+q.IndexLen]
_ip := binary.LittleEndian.Uint32(buf[:q.ItemLen])
if end-start == q.IndexLen {
if ip >= binary.LittleEndian.Uint32(dat[end:end+q.ItemLen]) {
buf = dat[end : end+q.IndexLen]
}
return byteToUInt32(buf[q.ItemLen:])
}
if _ip > ip {
end = mid
} else if _ip < ip {
start = mid
} else if _ip == ip {
return byteToUInt32(buf[q.ItemLen:])
}
}
}
// 字节转UInt32
func byteToUInt32(data []byte) uint32 {
i := uint32(data[0]) & 0xff
i |= (uint32(data[1]) << 8) & 0xff00
i |= (uint32(data[2]) << 16) & 0xff0000
return i
}
// OnlineDownload 在线下载
func (q *Pointer) OnlineDownload() (err error) {
tmpData, err := getOnline()
if err != nil {
return errors.New("下载失败")
}
if err := ioutil.WriteFile("./qqwry.dat", tmpData, 0644); err == nil {
log.Printf("已下载最新 纯真 IPv4数据库 %s ", "./qqwry.dat")
} else {
return errors.New("保存失败")
}
return nil
}

Binary file not shown.

@ -1,81 +0,0 @@
package v6
import (
"github.com/saracen/go7z"
"io"
"io/ioutil"
"log"
"net/http"
"os"
)
func getOnline() (data []byte, err error) {
resp, err := http.Get("https://ip.zxinc.org/ip.7z")
if err != nil {
return nil, err
}
defer resp.Body.Close()
body, err := ioutil.ReadAll(resp.Body)
if err != nil {
return nil, err
}
file7z, err := ioutil.TempFile("", "*")
if err != nil {
return nil, err
}
defer os.Remove(file7z.Name())
if err := ioutil.WriteFile(file7z.Name(), body, 0644); err == nil {
return Un7z(file7z.Name())
}
return
}
func Un7z(filePath string) (data []byte, err error) {
sz, err := go7z.OpenReader(filePath)
if err != nil {
return nil, err
}
defer sz.Close()
fileNoNeed, err := ioutil.TempFile("", "*")
if err != nil {
return nil, err
}
fileNeed, err := ioutil.TempFile("", "*")
if err != nil {
return nil, err
}
if err != nil {
return nil, err
}
for {
hdr, err := sz.Next()
if err == io.EOF {
break // End of archive
}
if err != nil {
return nil, err
}
if hdr.Name == "ipv6wry.db" {
if _, err := io.Copy(fileNeed, sz); err != nil {
log.Fatalln("ZX ipv6数据库解压出错", err.Error())
}
} else {
if _, err := io.Copy(fileNoNeed, sz); err != nil {
log.Fatalln("ZX ipv6数据库解压出错", err.Error())
}
}
}
err = fileNoNeed.Close()
if err != nil {
return nil, err
}
defer os.Remove(fileNoNeed.Name())
defer os.Remove(fileNeed.Name())
return ioutil.ReadFile(fileNeed.Name())
}

226
vendor/go.dtapp.net/goip/v6/ipv6.go generated vendored

@ -1,226 +0,0 @@
package v6
import (
_ "embed"
"encoding/binary"
"errors"
"go.dtapp.net/gostring"
"io/ioutil"
"log"
"math/big"
"net"
"strings"
)
var (
header []byte
country []byte
area []byte
v6ip uint64
offset uint32
start uint32
end uint32
)
type Result struct {
IP string `json:"ip,omitempty"` // 输入的ip地址
Country string `json:"country,omitempty"` // 国家
Province string `json:"province,omitempty"` // 省份
City string `json:"city,omitempty"` // 城市
Area string `json:"area,omitempty"` // 区域
Isp string `json:"isp,omitempty"` // 运营商
}
//go:embed ipv6wry.db
var dat []byte
type Pointer struct {
Offset uint32
ItemLen uint32
IndexLen uint32
}
// InitIPV4Data 加载
func (q *Pointer) InitIPV4Data() int64 {
buf := dat[0:8]
start := binary.LittleEndian.Uint32(buf[:4])
end := binary.LittleEndian.Uint32(buf[4:])
return int64((end-start)/7 + 1)
}
// ReadData 从文件中读取数据
func (q *Pointer) readData(length uint32) (rs []byte) {
end := q.Offset + length
dataNum := uint32(len(dat))
if q.Offset > dataNum {
return nil
}
if end > dataNum {
end = dataNum
}
rs = dat[q.Offset:end]
q.Offset = end
return rs
}
// Find ip地址查询对应归属地信息
func (q *Pointer) Find(ip string) (res Result) {
res = Result{}
res.IP = ip
q.Offset = 0
tp := big.NewInt(0)
op := big.NewInt(0)
tp.SetBytes(net.ParseIP(ip).To16())
op.SetString("18446744073709551616", 10)
op.Div(tp, op)
tp.SetString("FFFFFFFFFFFFFFFF", 16)
op.And(op, tp)
v6ip = op.Uint64()
offset = q.searchIndex(v6ip)
q.Offset = offset
country, area = q.getAddr()
// 解析地区数据
info := strings.Split(string(country), "\t")
if len(info) > 0 {
i := 1
for {
if i > len(info) {
break
}
switch i {
case 1:
res.Country = info[i-1]
res.Country = gostring.SpaceAndLineBreak(res.Country)
case 2:
res.Province = info[i-1]
res.Province = gostring.SpaceAndLineBreak(res.Province)
case 3:
res.City = info[i-1]
res.City = gostring.SpaceAndLineBreak(res.City)
case 4:
res.Area = info[i-1]
res.Area = gostring.SpaceAndLineBreak(res.Area)
}
i++ // 自增
}
} else {
res.Country = string(country)
res.Country = gostring.SpaceAndLineBreak(res.Country)
}
// 运营商
res.Isp = string(area)
// Delete ZX (防止不相关的信息产生干扰)
if res.Isp == "ZX" || res.Isp == "" {
res.Isp = ""
} else {
res.Isp = " " + res.Isp
}
res.Isp = gostring.SpaceAndLineBreak(res.Isp)
return
}
func (q *Pointer) getAddr() ([]byte, []byte) {
mode := q.readData(1)[0]
if mode == 0x01 {
// [IP][0x01][国家和地区信息的绝对偏移地址]
q.Offset = byteToUInt32(q.readData(3))
return q.getAddr()
}
// [IP][0x02][信息的绝对偏移][...] or [IP][国家][...]
_offset := q.Offset - 1
c1 := q.readArea(_offset)
if mode == 0x02 {
q.Offset = 4 + _offset
} else {
q.Offset = _offset + uint32(1+len(c1))
}
c2 := q.readArea(q.Offset)
return c1, c2
}
func (q *Pointer) readArea(offset uint32) []byte {
q.Offset = offset
mode := q.readData(1)[0]
if mode == 0x01 || mode == 0x02 {
return q.readArea(byteToUInt32(q.readData(3)))
}
q.Offset = offset
return q.readString()
}
func (q *Pointer) readString() []byte {
data := make([]byte, 0)
for {
buf := q.readData(1)
if buf[0] == 0 {
break
}
data = append(data, buf[0])
}
return data
}
func (q *Pointer) searchIndex(ip uint64) uint32 {
q.ItemLen = 8
q.IndexLen = 11
header = dat[8:24]
start = binary.LittleEndian.Uint32(header[8:])
counts := binary.LittleEndian.Uint32(header[:8])
end = start + counts*q.IndexLen
buf := make([]byte, q.IndexLen)
for {
mid := start + q.IndexLen*(((end-start)/q.IndexLen)>>1)
buf = dat[mid : mid+q.IndexLen]
_ip := binary.LittleEndian.Uint64(buf[:q.ItemLen])
if end-start == q.IndexLen {
if ip >= binary.LittleEndian.Uint64(dat[end:end+q.ItemLen]) {
buf = dat[end : end+q.IndexLen]
}
return byteToUInt32(buf[q.ItemLen:])
}
if _ip > ip {
end = mid
} else if _ip < ip {
start = mid
} else if _ip == ip {
return byteToUInt32(buf[q.ItemLen:])
}
}
}
func byteToUInt32(data []byte) uint32 {
i := uint32(data[0]) & 0xff
i |= (uint32(data[1]) << 8) & 0xff00
i |= (uint32(data[2]) << 16) & 0xff0000
return i
}
// OnlineDownload 在线下载
func (q *Pointer) OnlineDownload() (err error) {
tmpData, err := getOnline()
if err != nil {
return errors.New("下载失败")
}
if err := ioutil.WriteFile("./ipv6wry.db", tmpData, 0644); err == nil {
log.Printf("已下载最新 ZX IPv6数据库 %s ", "./ipv6wry.db")
} else {
return errors.New("保存失败")
}
return nil
}

Binary file not shown.

@ -1,3 +0,0 @@
package goip
const Version = "1.0.16"

@ -1,17 +0,0 @@
kind: pipeline
type: docker
name: clone
steps:
- name: Test
image: golang:1.18
commands:
- go env -w GO111MODULE=on
- go env -w GOPROXY=https://goproxy.cn,direct
- go test -v ./...
- name: Benchmark
image: golang:1.18
commands:
- go env -w GO111MODULE=on
- go env -w GOPROXY=https://goproxy.cn,direct
- go test -bench=. -benchmem

@ -1,8 +0,0 @@
.env
.git
.svn
.idea
.vscode
*.log
gomod.sh
/vendor/

@ -1,47 +0,0 @@
package gojson
import "encoding/json"
func Encode(v interface{}) (string, error) {
bytes, err := json.Marshal(v)
if err != nil {
return "", err
}
return string(bytes), nil
}
func MarshalToString(msg interface{}) (string, error) {
j, e := json.Marshal(msg)
if e != nil {
return "", e
}
return string(j), nil
}
func JsonDecode(data string) (map[string]interface{}, error) {
var dat map[string]interface{}
err := json.Unmarshal([]byte(data), &dat)
return dat, err
}
func JsonDecodeNoError(data string) map[string]interface{} {
var dat map[string]interface{}
_ = json.Unmarshal([]byte(data), &dat)
return dat
}
func JsonEncode(data interface{}) (string, error) {
jsons, err := json.Marshal(data)
return string(jsons), err
}
func JsonEncodeNoError(data interface{}) string {
jsons, _ := json.Marshal(data)
return string(jsons)
}
func JsonDecodesNoError(data string) []string {
var dat []string
_ = json.Unmarshal([]byte(data), &dat)
return dat
}

@ -1,3 +0,0 @@
package gojson
const Version = "1.0.0"

@ -1,11 +0,0 @@
kind: pipeline
type: docker
name: clone
steps:
- name: test-golang
image: golang:1.18
commands:
- go env -w GO111MODULE=on
- go env -w GOPROXY=https://goproxy.cn,direct
- go test -v ./...

@ -1,9 +0,0 @@
.env
.git
.svn
.idea
.vscode
*.log
gomod.sh
/vendor/
time_test.go

@ -1,25 +0,0 @@
<h1>
<a href="https://www.dtapp.net/">Golang Log</a>
</h1>
📦 Golang 日志组件
[comment]: <> (go)
[![godoc](https://pkg.go.dev/badge/go.dtapp.net/golog?status.svg)](https://pkg.go.dev/go.dtapp.net/golog)
[![goproxy.cn](https://goproxy.cn/stats/go.dtapp.net/golog/badges/download-count.svg)](https://goproxy.cn/stats/go.dtapp.net/golog)
[![goreportcard.com](https://goreportcard.com/badge/go.dtapp.net/golog )](https://goreportcard.com/report/go.dtapp.net/golog)
[![deps.dev](https://img.shields.io/badge/deps-go-red.svg)](https://deps.dev/go/go.dtapp.net/golog)
#### 安装使用
```go
go get -v -u go.dtapp.net/golog
```
#### 导入
```go
import (
"go.dtapp.net/golog"
)
```

@ -1,3 +0,0 @@
package golog
const Version = "1.0.13"

@ -1,11 +0,0 @@
kind: pipeline
type: docker
name: clone
steps:
- name: test-golang
image: golang:1.18
commands:
- go env -w GO111MODULE=on
- go env -w GOPROXY=https://goproxy.cn,direct
- go test -v ./...

@ -1,8 +0,0 @@
.env
.git
.svn
.idea
.vscode
*.log
gomod.sh
/vendor/

@ -1,25 +0,0 @@
<h1>
<a href="https://www.dtapp.net/">Golang MongoDB CRUD</a>
</h1>
📦 Golang MongoDB CRUD 组件
[comment]: <> (go)
[![godoc](https://pkg.go.dev/badge/go.dtapp.net/gomongo?status.svg)](https://pkg.go.dev/go.dtapp.net/gomongo)
[![goproxy.cn](https://goproxy.cn/stats/go.dtapp.net/gomongo/badges/download-count.svg)](https://goproxy.cn/stats/go.dtapp.net/gomongo)
[![goreportcard.com](https://goreportcard.com/badge/go.dtapp.net/gomongo)](https://goreportcard.com/report/go.dtapp.net/gomongo)
[![deps.dev](https://img.shields.io/badge/deps-go-red.svg)](https://deps.dev/go/go.dtapp.net/gomongo)
#### 安装使用
```go
go get -v -u go.dtapp.net/gomongo
```
#### 导入
```go
import (
"go.dtapp.net/gomongo"
)
```

Some files were not shown because too many files have changed in this diff Show More

Loading…
Cancel
Save