From 00d64119fa6f91c5ae15085074abf39475c75777 Mon Sep 17 00:00:00 2001 From: withchao <993506633@qq.com> Date: Thu, 9 Feb 2023 14:33:35 +0800 Subject: [PATCH] api to rpc use generic paradigm --- go.mod | 84 +- go.sum | 77 - internal/api/group/group.go | 2469 ++++++++++++++--------------- internal/api/group/group_test.go | 107 ++ internal/api/group/super_group.go | 174 +- pkg/api_struct/group.go | 4 +- pkg/api_struct/manage.go | 3 +- pkg/utils/utils.go | 8 +- 8 files changed, 1513 insertions(+), 1413 deletions(-) create mode 100644 internal/api/group/group_test.go diff --git a/go.mod b/go.mod index ccb41a574..d02d29993 100644 --- a/go.mod +++ b/go.mod @@ -50,6 +50,7 @@ require ( go.mongodb.org/mongo-driver v1.8.3 golang.org/x/image v0.3.0 golang.org/x/net v0.5.0 + golang.org/x/tools v0.1.12 google.golang.org/api v0.103.0 google.golang.org/grpc v1.52.3 google.golang.org/protobuf v1.28.1 @@ -61,13 +62,94 @@ require ( ) require ( + cloud.google.com/go v0.105.0 // indirect + cloud.google.com/go/compute v1.13.0 // indirect + cloud.google.com/go/compute/metadata v0.2.1 // indirect + cloud.google.com/go/firestore v1.9.0 // indirect + cloud.google.com/go/iam v0.8.0 // indirect + cloud.google.com/go/longrunning v0.3.0 // indirect + cloud.google.com/go/storage v1.27.0 // indirect + github.com/KyleBanks/depth v1.2.1 // indirect + github.com/OpenIMSDK/open_log v1.0.0 // indirect + github.com/alibabacloud-go/debug v0.0.0-20190504072949-9472017b5c68 // indirect + github.com/alibabacloud-go/endpoint-util v1.1.0 // indirect + github.com/alibabacloud-go/openapi-util v0.0.9 // indirect + github.com/alibabacloud-go/tea-utils v1.3.9 // indirect + github.com/aliyun/credentials-go v1.1.2 // indirect + github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.12.8 // indirect + github.com/aws/aws-sdk-go-v2/internal/configsources v1.1.14 // indirect + github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.4.8 // indirect + github.com/aws/aws-sdk-go-v2/internal/ini v1.3.15 // indirect + github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.9.8 // indirect + github.com/aws/aws-sdk-go-v2/service/sso v1.11.12 // indirect + github.com/aws/smithy-go v1.12.0 // indirect + github.com/beorn7/perks v1.0.1 // indirect + github.com/cespare/xxhash/v2 v2.1.2 // indirect + github.com/coreos/go-semver v0.3.0 // indirect github.com/coreos/go-systemd/v22 v22.5.0 // indirect + github.com/davecgh/go-spew v1.1.1 // indirect + github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f // indirect + github.com/dustin/go-humanize v1.0.0 // indirect + github.com/eapache/go-resiliency v1.2.0 // indirect + github.com/eapache/go-xerial-snappy v0.0.0-20180814174437-776d5712da21 // indirect + github.com/eapache/queue v1.1.0 // indirect + github.com/gin-contrib/sse v0.1.0 // indirect + github.com/go-openapi/jsonpointer v0.19.5 // indirect + github.com/go-openapi/jsonreference v0.20.0 // indirect github.com/go-openapi/spec v0.20.6 // indirect github.com/go-openapi/swag v0.21.1 // indirect github.com/go-playground/locales v0.14.1 // indirect + github.com/go-playground/universal-translator v0.18.0 // indirect + github.com/go-sql-driver/mysql v1.6.0 // indirect + github.com/go-stack/stack v1.8.0 // indirect + github.com/go-zookeeper/zk v1.0.3 // indirect github.com/goccy/go-json v0.10.0 // indirect + github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e // indirect + github.com/golang/snappy v0.0.3 // indirect + github.com/google/go-cmp v0.5.9 // indirect + github.com/google/uuid v1.3.0 // indirect + github.com/googleapis/enterprise-certificate-proxy v0.2.0 // indirect + github.com/googleapis/gax-go/v2 v2.7.0 // indirect + github.com/hashicorp/go-uuid v1.0.2 // indirect + github.com/jcmturner/aescts/v2 v2.0.0 // indirect + github.com/jcmturner/dnsutils/v2 v2.0.0 // indirect + github.com/jcmturner/gofork v1.0.0 // indirect + github.com/jcmturner/gokrb5/v8 v8.4.2 // indirect + github.com/jcmturner/rpc/v2 v2.0.3 // indirect + github.com/jinzhu/inflection v1.0.0 // indirect + github.com/jinzhu/now v1.1.5 // indirect + github.com/josharian/intern v1.0.0 // indirect + github.com/json-iterator/go v1.1.12 // indirect + github.com/klauspost/compress v1.13.6 // indirect + github.com/klauspost/cpuid v1.3.1 // indirect + github.com/leodido/go-urn v1.2.1 // indirect + github.com/lestrrat-go/strftime v1.0.6 // indirect + github.com/lithammer/shortuuid v3.0.0+incompatible // indirect + github.com/mailru/easyjson v0.7.7 // indirect github.com/mattn/go-isatty v0.0.17 // indirect + github.com/matttproud/golang_protobuf_extensions v1.0.1 // indirect + github.com/minio/md5-simd v1.1.0 // indirect + github.com/minio/sha256-simd v0.1.1 // indirect + github.com/mitchellh/go-homedir v1.1.0 // indirect + github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect + github.com/modern-go/reflect2 v1.0.2 // indirect + github.com/pelletier/go-toml/v2 v2.0.6 // indirect + github.com/pierrec/lz4 v2.6.0+incompatible // indirect + github.com/pmezard/go-difflib v1.0.0 // indirect + github.com/prometheus/client_model v0.2.0 // indirect + github.com/prometheus/common v0.37.0 // indirect + github.com/prometheus/procfs v0.8.0 // indirect + github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475 // indirect + github.com/rs/xid v1.2.1 // indirect + github.com/tjfoc/gmsm v1.3.2 // indirect github.com/ugorji/go/codec v1.2.8 // 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.etcd.io/etcd/api/v3 v3.5.6 // indirect + go.etcd.io/etcd/client/pkg/v3 v3.5.6 // indirect + go.opencensus.io v0.24.0 // indirect go.uber.org/atomic v1.10.0 // indirect go.uber.org/multierr v1.9.0 // indirect go.uber.org/zap v1.24.0 // indirect @@ -77,12 +159,12 @@ require ( golang.org/x/sys v0.4.0 // indirect golang.org/x/text v0.6.0 // indirect golang.org/x/time v0.1.0 // indirect - golang.org/x/tools v0.1.12 // indirect golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2 // indirect google.golang.org/appengine v1.6.7 // indirect google.golang.org/genproto v0.0.0-20230110181048-76db0878b65f // indirect gopkg.in/alexcesaro/quotedprintable.v3 v3.0.0-20150716171945-2caba252f4dc // indirect gopkg.in/ini.v1 v1.66.2 // indirect + gopkg.in/yaml.v2 v2.4.0 // indirect ) replace github.com/Shopify/sarama => github.com/Shopify/sarama v1.29.0 diff --git a/go.sum b/go.sum index 519047e1b..7c85168c7 100644 --- a/go.sum +++ b/go.sum @@ -26,7 +26,6 @@ cloud.google.com/go v0.93.3/go.mod h1:8utlLll2EF5XMAV15woO4lSbWQlk8rer9aLOfLh7+Y cloud.google.com/go v0.94.1/go.mod h1:qAlAugsXlC+JWO+Bke5vCtc9ONxjQT3drlTTnAplMW4= cloud.google.com/go v0.97.0/go.mod h1:GF7l59pYBVlXQIBLx3a761cZ41F9bBH3JUlihCt2Udc= cloud.google.com/go v0.99.0/go.mod h1:w0Xx2nLzqWJPuozYQX+hFfCSI8WioryfRDzkoI/Y2ZA= -cloud.google.com/go v0.100.1/go.mod h1:fs4QogzfH5n2pBXBP9vRiU+eCny7lD2vmFZy79Iuw1U= cloud.google.com/go v0.100.2/go.mod h1:4Xra9TjzAeYHrl5+oeLlzbM2k3mjVhZh4UqTZ//w99A= cloud.google.com/go v0.102.0/go.mod h1:oWcCzKlqJ5zgHQt9YsaeTY9KzIvjyy0ArmiBUgpQ+nc= cloud.google.com/go v0.102.1/go.mod h1:XZ77E9qnTEnrgEOvr4xzfdX5TRo7fB4T2F4O6+34hIU= @@ -39,7 +38,6 @@ cloud.google.com/go/accesscontextmanager v1.3.0/go.mod h1:TgCBehyr5gNMz7ZaH9xubp cloud.google.com/go/accesscontextmanager v1.4.0/go.mod h1:/Kjh7BBu/Gh83sv+K60vN9QE5NJcd80sU33vIe2IFPE= cloud.google.com/go/aiplatform v1.22.0/go.mod h1:ig5Nct50bZlzV6NvKaTwmplLLddFx0YReh9WfTO5jKw= cloud.google.com/go/aiplatform v1.24.0/go.mod h1:67UUvRBKG6GTayHKV8DBv2RtR1t93YRu5B1P3x99mYY= -cloud.google.com/go/aiplatform v1.27.0/go.mod h1:Bvxqtl40l0WImSb04d0hXFU7gDOiq9jQmorivIiWcKg= cloud.google.com/go/analytics v0.11.0/go.mod h1:DjEWCu41bVbYcKyvlws9Er60YE4a//bK6mnhWvQeFNI= cloud.google.com/go/analytics v0.12.0/go.mod h1:gkfj9h6XRf9+TS4bmuhPEShsh3hH8PAZzm/41OOhQd4= cloud.google.com/go/apigateway v1.3.0/go.mod h1:89Z8Bhpmxu6AmUxuVRg/ECRGReEdiP3vQtk4Z1J9rJk= @@ -82,7 +80,6 @@ cloud.google.com/go/bigquery v1.7.0/go.mod h1://okPTzCYNXSlb24MZs83e2Do+h+VXtc4g cloud.google.com/go/bigquery v1.8.0/go.mod h1:J5hqkt3O0uAFnINi6JXValWIb1v0goeZM77hZzJN/fQ= cloud.google.com/go/bigquery v1.42.0/go.mod h1:8dRTJxhtG+vwBKzE5OseQn/hiydoQN3EedCaOdYmxRA= cloud.google.com/go/bigquery v1.43.0/go.mod h1:ZMQcXHsl+xmU1z36G2jNGZmKp9zNY5BUua5wDgmNCfw= -cloud.google.com/go/bigquery v1.44.0/go.mod h1:0Y33VqXTEsbamHJvJHdFmtqHvMIY28aK1+dFsvaChGc= cloud.google.com/go/billing v1.4.0/go.mod h1:g9IdKBEFlItS8bTtlrZdVLWSSdSyFUZKXNS02zKMOZY= cloud.google.com/go/billing v1.5.0/go.mod h1:mztb1tBc3QekhjSgmpf/CV4LzWXLzCArwpLmP2Gm88s= cloud.google.com/go/billing v1.6.0/go.mod h1:WoXzguj+BeHXPbKfNWkqVtDdzORazmCjraY+vrxcyvI= @@ -145,7 +142,6 @@ cloud.google.com/go/dataqna v0.5.0/go.mod h1:90Hyk596ft3zUQ8NkFfvICSIfHFh1Bc7C4c cloud.google.com/go/dataqna v0.6.0/go.mod h1:1lqNpM7rqNLVgWBJyk5NF6Uen2PHym0jtVJonplVsDA= cloud.google.com/go/datastore v1.0.0/go.mod h1:LXYbyblFSglQ5pkeyhO+Qmw7ukd3C+pD7TKLgZqpHYE= cloud.google.com/go/datastore v1.1.0/go.mod h1:umbIZjpQpHh4hmRpGhH4tLFup+FVzqBi1b3c64qFpCk= -cloud.google.com/go/datastore v1.10.0/go.mod h1:PC5UzAmDEkAmkfaknstTYbNpgE49HAgW2J1gcgUfmdM= cloud.google.com/go/datastream v1.2.0/go.mod h1:i/uTP8/fZwgATHS/XFu0TcNUhuA0twZxxQ3EyCUQMwo= cloud.google.com/go/datastream v1.3.0/go.mod h1:cqlOX8xlyYF/uxhiKn6Hbv6WjwPPuI9W2M9SAXwaLLQ= cloud.google.com/go/datastream v1.4.0/go.mod h1:h9dpzScPhDTs5noEMQVWP8Wx8AFBRyS0s8KWPx/9r0g= @@ -167,7 +163,6 @@ cloud.google.com/go/domains v0.6.0/go.mod h1:T9Rz3GasrpYk6mEGHh4rymIhjlnIuB4ofT1 cloud.google.com/go/domains v0.7.0/go.mod h1:PtZeqS1xjnXuRPKE/88Iru/LdfoRyEHYA9nFQf4UKpg= cloud.google.com/go/edgecontainer v0.1.0/go.mod h1:WgkZ9tp10bFxqO8BLPqv2LlfmQF1X8lZqwW4r1BTajk= cloud.google.com/go/edgecontainer v0.2.0/go.mod h1:RTmLijy+lGpQ7BXuTDa4C4ssxyXT34NIuHIgKuP4s5w= -cloud.google.com/go/errorreporting v0.3.0/go.mod h1:xsP2yaAp+OAW4OIm60An2bbLpqIhKXdWR/tawvl7QzU= cloud.google.com/go/essentialcontacts v1.3.0/go.mod h1:r+OnHa5jfj90qIfZDO/VztSFqbQan7HV75p8sA+mdGI= cloud.google.com/go/essentialcontacts v1.4.0/go.mod h1:8tRldvHYsmnBCHdFpvU+GL75oWiBKl80BiqlFh9tp+8= cloud.google.com/go/eventarc v1.7.0/go.mod h1:6ctpF3zTnaQCxUjHUdcfgcA1A2T309+omHZth7gDfmc= @@ -195,7 +190,6 @@ cloud.google.com/go/gkemulticloud v0.4.0/go.mod h1:E9gxVBnseLWCk24ch+P9+B2CoDFJZ cloud.google.com/go/grafeas v0.2.0/go.mod h1:KhxgtF2hb0P191HlY5besjYm6MqTSTj3LSI+M+ByZHc= cloud.google.com/go/gsuiteaddons v1.3.0/go.mod h1:EUNK/J1lZEZO8yPtykKxLXI6JSVN2rg9bN8SXOa0bgM= cloud.google.com/go/gsuiteaddons v1.4.0/go.mod h1:rZK5I8hht7u7HxFQcFei0+AtfS9uSushomRlg+3ua1o= -cloud.google.com/go/iam v0.1.0/go.mod h1:vcUNEa0pEm0qRVpmWepWaFMIAI8/hjB9mO8rNCJtF6c= cloud.google.com/go/iam v0.3.0/go.mod h1:XzJPvDayI+9zsASAFO68Hk07u3z+f+JrT2xXNdp4bnY= cloud.google.com/go/iam v0.5.0/go.mod h1:wPU9Vt0P4UmCux7mqtRu6jcpPAb74cP1fh50J3QpkUc= cloud.google.com/go/iam v0.6.0/go.mod h1:+1AH33ueBne5MzYccyMHtEKqLE4/kJOibtffMHDMFMc= @@ -208,7 +202,6 @@ cloud.google.com/go/ids v1.1.0/go.mod h1:WIuwCaYVOzHIj2OhN9HAwvW+DBdmUAdcWlFxRl+ cloud.google.com/go/ids v1.2.0/go.mod h1:5WXvp4n25S0rA/mQWAg1YEEBBq6/s+7ml1RDCW1IrcY= cloud.google.com/go/iot v1.3.0/go.mod h1:r7RGh2B61+B8oz0AGE+J72AhA0G7tdXItODWsaA2oLs= cloud.google.com/go/iot v1.4.0/go.mod h1:dIDxPOn0UvNDUMD8Ger7FIaTuvMkj+aGk94RPP0iV+g= -cloud.google.com/go/kms v1.4.0/go.mod h1:fajBHndQ+6ubNw6Ss2sSd+SWvjL26RNo/dr7uxsnnOA= cloud.google.com/go/kms v1.5.0/go.mod h1:QJS2YY0eJGBg3mnDfuaCyLauWwBJiHRboYxJ++1xJNg= cloud.google.com/go/kms v1.6.0/go.mod h1:Jjy850yySiasBUDi6KFUwUv2n1+o7QZFyuUJg6OgjA0= cloud.google.com/go/language v1.4.0/go.mod h1:F9dRpNFQmJbkaop6g0JhSBXCNlO90e1KWx5iDdxbWic= @@ -217,13 +210,11 @@ cloud.google.com/go/language v1.7.0/go.mod h1:DJ6dYN/W+SQOjF8e1hLQXMF21AkH2w9wiP cloud.google.com/go/language v1.8.0/go.mod h1:qYPVHf7SPoNNiCL2Dr0FfEFNil1qi3pQEyygwpgVKB8= cloud.google.com/go/lifesciences v0.5.0/go.mod h1:3oIKy8ycWGPUyZDR/8RNnTOYevhaMLqh5vLUXs9zvT8= cloud.google.com/go/lifesciences v0.6.0/go.mod h1:ddj6tSX/7BOnhxCSd3ZcETvtNr8NZ6t/iPhY2Tyfu08= -cloud.google.com/go/logging v1.6.1/go.mod h1:5ZO0mHHbvm8gEmeEUHrmDlTDSu5imF6MUP9OfilNXBw= cloud.google.com/go/longrunning v0.1.1/go.mod h1:UUFxuDWkv22EuY93jjmDMFT5GPQKeFVJBIF6QlTqdsE= cloud.google.com/go/longrunning v0.3.0 h1:NjljC+FYPV3uh5/OwWT6pVU+doBqMg2x/rZlE+CamDs= cloud.google.com/go/longrunning v0.3.0/go.mod h1:qth9Y41RRSUE69rDcOn6DdK3HfQfsUI0YSmW3iIlLJc= cloud.google.com/go/managedidentities v1.3.0/go.mod h1:UzlW3cBOiPrzucO5qWkNkh0w33KFtBJU281hacNvsdE= cloud.google.com/go/managedidentities v1.4.0/go.mod h1:NWSBYbEMgqmbZsLIyKvxrYbtqOsxY1ZrGM+9RgDqInM= -cloud.google.com/go/maps v0.1.0/go.mod h1:BQM97WGyfw9FWEmQMpZ5T6cpovXXSd1cGmFma94eubI= cloud.google.com/go/mediatranslation v0.5.0/go.mod h1:jGPUhGTybqsPQn91pNXw0xVHfuJ3leR1wj37oU3y1f4= cloud.google.com/go/mediatranslation v0.6.0/go.mod h1:hHdBCTYNigsBxshbznuIMFNe5QXEowAuNmmC7h8pu5w= cloud.google.com/go/memcache v1.4.0/go.mod h1:rTOfiGZtJX1AaFUrOgsMHX5kAzaTQ8azHiuDoTPzNsE= @@ -272,9 +263,6 @@ cloud.google.com/go/pubsub v1.0.1/go.mod h1:R0Gpsv3s54REJCy4fxDixWD93lHJMoZTyQ2k cloud.google.com/go/pubsub v1.1.0/go.mod h1:EwwdRX2sKPjnvnqCa270oGRyludottCI76h+R3AArQw= cloud.google.com/go/pubsub v1.2.0/go.mod h1:jhfEVHT8odbXTkndysNHCcx0awwzvfOlguIAii9o8iA= cloud.google.com/go/pubsub v1.3.1/go.mod h1:i+ucay31+CNRpDW4Lu78I4xXG+O1r/MAHgjpRVR+TSU= -cloud.google.com/go/pubsub v1.26.0/go.mod h1:QgBH3U/jdJy/ftjPhTkyXNj543Tin1pRYcdcPRnFIRI= -cloud.google.com/go/pubsub v1.27.1/go.mod h1:hQN39ymbV9geqBnfQq6Xf63yNhUAhv9CZhzp5O6qsW0= -cloud.google.com/go/pubsublite v1.5.0/go.mod h1:xapqNQ1CuLfGi23Yda/9l4bBCKz/wC3KIJ5gKcxveZg= cloud.google.com/go/recaptchaenterprise v1.3.1/go.mod h1:OdD+q+y4XGeAlxRaMn1Y7/GveP6zmq76byL6tjPE7d4= cloud.google.com/go/recaptchaenterprise/v2 v2.1.0/go.mod h1:w9yVqajwroDNTfGuhmOjPDN//rZGySaf6PtFVcSCa7o= cloud.google.com/go/recaptchaenterprise/v2 v2.2.0/go.mod h1:/Zu5jisWGeERrd5HnlS3EUGb/D335f9k51B/FVil0jk= @@ -329,7 +317,6 @@ cloud.google.com/go/serviceusage v1.3.0/go.mod h1:Hya1cozXM4SeSKTAgGXgj97GlqUvF5 cloud.google.com/go/serviceusage v1.4.0/go.mod h1:SB4yxXSaYVuUBYUml6qklyONXNLt83U0Rb+CXyhjEeU= cloud.google.com/go/shell v1.3.0/go.mod h1:VZ9HmRjZBsjLGXusm7K5Q5lzzByZmJHf1d0IWHEN5X4= cloud.google.com/go/shell v1.4.0/go.mod h1:HDxPzZf3GkDdhExzD/gs8Grqk+dmYcEjGShZgYa9URw= -cloud.google.com/go/spanner v1.41.0/go.mod h1:MLYDBJR/dY4Wt7ZaMIQ7rXOTLjYrmxLE/5ve9vFfWos= cloud.google.com/go/speech v1.6.0/go.mod h1:79tcr4FHCimOp56lwC01xnt/WPJZc4v3gzyT7FoBkCM= cloud.google.com/go/speech v1.7.0/go.mod h1:KptqL+BAQIhMsj1kOP2la5DSEEerPDuOP/2mmkhHhZQ= cloud.google.com/go/speech v1.8.0/go.mod h1:9bYIl1/tjsAnMgKGHKmBZzXKEkGgtU+MpdDPTE9f7y0= @@ -370,7 +357,6 @@ cloud.google.com/go/vision/v2 v2.4.0/go.mod h1:VtI579ll9RpVTrdKdkMzckdnwMyX2JILb cloud.google.com/go/vision/v2 v2.5.0/go.mod h1:MmaezXOOE+IWa+cS7OhRRLK2cNv1ZL98zhqFFZaaH2E= cloud.google.com/go/vmmigration v1.2.0/go.mod h1:IRf0o7myyWFSmVR1ItrBSFLFD/rJkfDCUTO4vLlJvsE= cloud.google.com/go/vmmigration v1.3.0/go.mod h1:oGJ6ZgGPQOFdjHuocGcLqX4lc98YQ7Ygq8YQwHh9A7g= -cloud.google.com/go/vmwareengine v0.1.0/go.mod h1:RsdNEf/8UDvKllXhMz5J40XxDrNJNN4sagiox+OI208= cloud.google.com/go/vpcaccess v1.4.0/go.mod h1:aQHVbTWDYUR1EbTApSVvMq1EnT57ppDmQzZ3imqIk4w= cloud.google.com/go/vpcaccess v1.5.0/go.mod h1:drmg4HLk9NkZpGfCmZ3Tz0Bwnm2+DKqViEpeEpOq0m8= cloud.google.com/go/webrisk v1.4.0/go.mod h1:Hn8X6Zr+ziE2aNd8SliSDWpEnSS1u4R9+xXZmFiHmGE= @@ -397,7 +383,6 @@ github.com/OpenIMSDK/openKeeper v0.9.8 h1:7IrOftwpGSyHkM0x10QDM7up1E9iB59cO9YwiT github.com/OpenIMSDK/openKeeper v0.9.8/go.mod h1:RvyRXEcvWbonkmHLtT8KxGSCNlXY7OfDohhu53E6INU= github.com/OpenIMSDK/open_log v1.0.0 h1:ZQ908aWgPqfHOfkQ/oFSV20AZdRwPw+sZjC/sAPd5cA= github.com/OpenIMSDK/open_log v1.0.0/go.mod h1:qWvqF4iT2qBAP1eGGbinc0aAng1Y25X8A9Si1WS3oB4= -github.com/OpenIMSDK/open_utils v1.0.1/go.mod h1:PPRayByXnfu8PR5Xv9wzUMBrm1BV3y7s29GGg8ae47s= github.com/OpenIMSDK/open_utils v1.0.8 h1:IopxWgJwEF5ZAPsRuiZZOfcxNOQOCt/p8VDENcHN9r4= github.com/OpenIMSDK/open_utils v1.0.8/go.mod h1:FLoaQblWUVKQgqt2LrNzfSZLT6D3DICBn1kcOMDLUOI= github.com/PuerkitoBio/purell v1.1.1/go.mod h1:c11w/QuzBsJSee3cPx9rAFu61PvFxuPbtSwDGJws/X0= @@ -466,7 +451,6 @@ github.com/aws/aws-sdk-go-v2/service/sts v1.16.9/go.mod h1:O1IvkYxr+39hRf960Us6j github.com/aws/smithy-go v1.12.0 h1:gXpeZel/jPoWQ7OEmLIgCUnhkFftqNfwWUwAHSlp1v0= github.com/aws/smithy-go v1.12.0/go.mod h1:Tg+OJXh4MB2R/uN61Ko2f6hTZwB/ZYGOtib8J3gBHzA= github.com/benbjohnson/clock v1.1.0 h1:Q92kusRqC1XV2MjkWETPvjJVqKetz1OzxZB7mHJLju8= -github.com/benbjohnson/clock v1.1.0/go.mod h1:J11/hYXuz8f4ySSvYwY0FKfm+ezbsZBKZxNJlLklBHA= github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= github.com/beorn7/perks v1.0.0/go.mod h1:KWe93zE9D1o94FZ5RNwFwVgaQK1VOXiVxmqh+CedLV8= github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM= @@ -474,8 +458,6 @@ github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6r github.com/bwmarrin/snowflake v0.3.0 h1:xm67bEhkKh6ij1790JB83OujPR5CzNe8QuQqAgISZN0= github.com/bwmarrin/snowflake v0.3.0/go.mod h1:NdZxfVWX+oR6y2K0o6qAYv6gIOP9rjG0/E9WsDpxqwE= github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= -github.com/census-instrumentation/opencensus-proto v0.3.0/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= -github.com/cespare/xxhash v1.1.0 h1:a6HrQnmkObjyL+Gs60czilIUGqrzKutQD6XZog3p+ko= github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc= github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= github.com/cespare/xxhash/v2 v2.1.2 h1:YRXhKfTDauu4ajMg1TPgFO5jnlC2HCbmLXMcTG5cbYE= @@ -531,9 +513,7 @@ github.com/fortytw2/leaktest v1.3.0 h1:u8491cBMTQ8ft8aeV+adlcytMZylmA5nnwwkRZjI8 github.com/fortytw2/leaktest v1.3.0/go.mod h1:jDsjWgpAGjm2CA7WthBh/CdZYEPF31XHquHwclZch5g= github.com/frankban/quicktest v1.11.3 h1:8sXhOn0uLys67V8EsXLc6eszDs8VXWxL3iRvebPhedY= github.com/frankban/quicktest v1.11.3/go.mod h1:wRf/ReqHper53s+kmmSZizM8NamnL3IM0I9ntUbOk+k= -github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= github.com/fsnotify/fsnotify v1.4.9 h1:hsms1Qyu0jgnwNXIxa+/V/PDsU6CfLf6CNO8H7IWoS4= -github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ= github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= github.com/gin-contrib/gzip v0.0.5 h1:mhnVU32YnnBh2LPH2iqRqsA/eR7SAqRaD388jL2s/j0= github.com/gin-contrib/gzip v0.0.5/go.mod h1:OPIK6HR0Um2vNmBUTlayD7qle4yVVRZT0PyhdUigrKk= @@ -541,7 +521,6 @@ github.com/gin-contrib/sse v0.1.0 h1:Y/yl/+YNO8GZSjAhjMsSuLt29uWRFHdHYUb5lYOV9qE github.com/gin-contrib/sse v0.1.0/go.mod h1:RHrZQHXnP2xjPF+u1gW/2HnVO7nvIa9PG3Gm+fLHvGI= github.com/gin-gonic/gin v1.7.4/go.mod h1:jD2toBW3GZUr5UMcdrwQA10I7RuaFOl/SGeDjXkfUtY= github.com/gin-gonic/gin v1.7.7/go.mod h1:axIBovoeJpVj8S3BwE0uPMTeReE4+AfFtqpqaZ1qq1U= -github.com/gin-gonic/gin v1.8.1/go.mod h1:ji8BvRH1azfM+SYow9zQ6SZMvR8qOMZHmsCuWR9tTTk= github.com/gin-gonic/gin v1.8.2 h1:UzKToD9/PoFj/V4rvlKqTRKnQYyz8Sc1MJlv4JHPtvY= github.com/gin-gonic/gin v1.8.2/go.mod h1:qw5AYuDrzRTnhvusDsrov+fDIxp9Dleuu12h8nfB398= github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU= @@ -578,7 +557,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.10.0/go.mod h1:74x4gJWsvQexRdW8Pn3dXSGrTK4nAUsbPlLADvpJkos= github.com/go-playground/validator/v10 v10.11.1 h1:prmOlTVv+YjZjmRmNSF3VmspqJIxJWXmqUsHwfTRRkQ= github.com/go-playground/validator/v10 v10.11.1/go.mod h1:i+3WkQ1FvaUjjxh1kSvIA4dMGDBiPU55YFDl0WbKdWU= github.com/go-redis/redis/v8 v8.11.5 h1:AcZZR7igkdvfVmQTPnu9WE37LRrO/YrBH5zWyjDC0oI= @@ -588,11 +566,8 @@ github.com/go-sql-driver/mysql v1.6.0 h1:BCTh4TKNUYmOmMUcQ3IipzF5prigylS7XXjEkfC github.com/go-sql-driver/mysql v1.6.0/go.mod h1:DCzpHaOWr8IXmIStZouvnhqoel9Qv2LBy8hT2VhHyBg= github.com/go-stack/stack v1.8.0 h1:5SgMzNM5HxrEjV0ww2lTmX6E2Izsfxas4+YHWRs3Lsk= github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= -github.com/go-task/slim-sprig v0.0.0-20210107165309-348f09dbbbc0/go.mod h1:fyg7847qk6SyHyPtNmDHnmrv/HOrqktSC+C9fM+CJOE= github.com/go-zookeeper/zk v1.0.3 h1:7M2kwOsc//9VeeFiPtf+uSJlVpU66x9Ba5+8XK7/TDg= github.com/go-zookeeper/zk v1.0.3/go.mod h1:nOB03cncLtlp4t+UAkGSV+9beXP/akpekBwL+UX1Qcw= -github.com/goccy/go-json v0.9.7/go.mod h1:6MelG93GURQebXPDq3khkgXZkazVtN9CRI+MGFi0w8I= -github.com/goccy/go-json v0.9.11/go.mod h1:6MelG93GURQebXPDq3khkgXZkazVtN9CRI+MGFi0w8I= github.com/goccy/go-json v0.10.0 h1:mXKd9Qw4NuzShiRlOXKews24ufknHO7gx30lsDyokKA= github.com/goccy/go-json v0.10.0/go.mod h1:6MelG93GURQebXPDq3khkgXZkazVtN9CRI+MGFi0w8I= github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= @@ -672,12 +647,10 @@ github.com/google/pprof v0.0.0-20201023163331-3e6fc7fc9c4c/go.mod h1:kpwsk12EmLe github.com/google/pprof v0.0.0-20201203190320-1bf35d6f28c2/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= github.com/google/pprof v0.0.0-20210122040257-d980be63207e/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= github.com/google/pprof v0.0.0-20210226084205-cbba55b83ad5/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= -github.com/google/pprof v0.0.0-20210407192527-94a9f03dee38/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= github.com/google/pprof v0.0.0-20210601050228-01bbb1931b22/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= github.com/google/pprof v0.0.0-20210609004039-a478d1d731e9/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= github.com/google/pprof v0.0.0-20210720184732-4bb14d4b1be1/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= -github.com/google/uuid v1.1.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/google/uuid v1.3.0 h1:t6JiXgmwXMjEs8VusXIJk2BXHsn+wx8BZdTaoZ5fu7I= github.com/google/uuid v1.3.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= @@ -710,7 +683,6 @@ github.com/hashicorp/go-uuid v1.0.2 h1:cfejS+Tpcp13yd5nYHWDI6qVCny6wyX2Mt5SGur2I github.com/hashicorp/go-uuid v1.0.2/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= -github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU= github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= github.com/ianlancetaylor/demangle v0.0.0-20200824232613-28f6c0f3b639/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= github.com/jcmturner/aescts/v2 v2.0.0 h1:9YKLH6ey7H4eDBXW8khjYslgyqG2xZikXP0EQFKrle8= @@ -735,7 +707,6 @@ github.com/jinzhu/now v1.1.5/go.mod h1:d3SSVoowX0Lcu0IBviAWJpolVfI5UJVZZ7cO71lE/ 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/jonboulle/clockwork v0.3.0 h1:9BSCMi8C+0qdApAp4auwX0RkLGUjs956h0EkuQymUhg= -github.com/jonboulle/clockwork v0.3.0/go.mod h1:Pkfl5aHPm1nk2H9h0bjmnJD/BcgbGXUBGnn1kMkgxc8= 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/jpillora/backoff v1.0.0/go.mod h1:J/6gKK9jxlEcS3zixgDgUAsiuZ7yrSoa/FX5e0EB2j4= @@ -753,7 +724,6 @@ github.com/julienschmidt/httprouter v1.3.0/go.mod h1:JR6WtHb+2LUe8TCKY3cZOxFyyO8 github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= github.com/klauspost/compress v1.12.2/go.mod h1:8dP1Hq4DHOhN9w426knH3Rhby4rFm6D8eO+e+Dq5Gzg= -github.com/klauspost/compress v1.13.5/go.mod h1:/3/Vjq9QcHkK5uEr5lBEmyoZ1iFhe47etQ6QUkpK6sk= github.com/klauspost/compress v1.13.6 h1:P76CopJELS0TiO2mebmnzgWaajssP/EszplttgQxcgc= github.com/klauspost/compress v1.13.6/go.mod h1:/3/Vjq9QcHkK5uEr5lBEmyoZ1iFhe47etQ6QUkpK6sk= github.com/klauspost/cpuid v1.2.3/go.mod h1:Pj4uuM528wm8OyEC2QMXAi2YiTZ96dNQPGgoMS4s3ek= @@ -787,8 +757,6 @@ github.com/mailru/easyjson v0.7.6/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJ github.com/mailru/easyjson v0.7.7 h1:UGYAvKxe3sBsEDzO8ZeWOSlIQfWFlxbzLZe7hwFURr0= github.com/mailru/easyjson v0.7.7/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc= github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU= -github.com/mattn/go-isatty v0.0.14/go.mod h1:7GGIvUiUoEMVVmxf/4nioHXj79iQHKdU27kJ6hsGG94= -github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM= 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/matttproud/golang_protobuf_extensions v1.0.1 h1:4hp9jkHxhMHkqkrB3Ix0jegS5sx/RkqARlsWZ6pIwiU= @@ -816,29 +784,17 @@ github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f/go.mod h1:qRW github.com/nfnt/resize v0.0.0-20180221191011-83c6a9932646 h1:zYyBkD/k9seD2A7fsi6Oo2LfFZAehjjQMERAvZLEDnQ= github.com/nfnt/resize v0.0.0-20180221191011-83c6a9932646/go.mod h1:jpp1/29i3P1S/RLdc7JQKbRpFeM1dOBd8T9ki5s+AY8= github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno= -github.com/nxadm/tail v1.4.4/go.mod h1:kenIhsEOeOJmVchQTgglprH7qJGnHDVpk1VPCcaMI8A= github.com/nxadm/tail v1.4.8 h1:nPr65rt6Y5JFSKQO7qToXr7pePgD6Gwiw05lkbyAQTE= -github.com/nxadm/tail v1.4.8/go.mod h1:+ncqLTQzXmGhMZNUePPaPqPvBxHAIsmXswZKocGu+AU= github.com/olivere/elastic/v7 v7.0.23 h1:b7tjMogDMhf2CisGI+L02LXLVa0ZyE82Z15XfW1e8t8= github.com/olivere/elastic/v7 v7.0.23/go.mod h1:OuWmD2DiuYhddWegBKPWQuelVKBLrW0fa/VUYgxuGTY= -github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= -github.com/onsi/ginkgo v1.12.1/go.mod h1:zj2OWP4+oCPe1qIXoGWkgMRwljMUYCdkwsT2108oapk= -github.com/onsi/ginkgo v1.16.4/go.mod h1:dX+/inL/fNMqNlz0e9LfyB9TswhZpCVdJM/Z6Vvnwo0= github.com/onsi/ginkgo v1.16.5 h1:8xi0RTUf59SOSfEtZMvwTvXYMzG4gV23XVHOZiXNtnE= -github.com/onsi/ginkgo v1.16.5/go.mod h1:+E8gABHa3K6zRBolWtd+ROzc/U5bkGt0FwiG042wbpU= -github.com/onsi/ginkgo/v2 v2.0.0/go.mod h1:vw5CSIxN1JObi/U8gcbwft7ZxR2dgaR70JSE3/PpL4c= -github.com/onsi/gomega v1.7.1/go.mod h1:XdKZgCCFLUoM/7CFJVPcG8C1xQ1AJ0vpAezJrB7JYyY= -github.com/onsi/gomega v1.10.1/go.mod h1:iN09h71vgCQne3DLsj+A5owkum+a2tYe+TOCB1ybHNo= -github.com/onsi/gomega v1.17.0/go.mod h1:HnhC7FXeEQY45zxNK3PPoIUhzk/80Xly9PcubAlGdZY= github.com/onsi/gomega v1.18.1 h1:M1GfJqGRrBrrGGsbxzV5dqM2U2ApXefZCQpkukxYRLE= -github.com/onsi/gomega v1.18.1/go.mod h1:0q+aL8jAiMXy9hbwj2mr5GziHiwhAIQpFmmtT5hitRs= github.com/opentracing/opentracing-go v1.2.0/go.mod h1:GxEUsuufX4nBwe+T+Wl9TAgYrxe9dPLANfrWvHYVTgc= github.com/otiai10/copy v1.7.0/go.mod h1:rmRl6QPdJj6EiUqXQ/4Nn2lLXoNQjFCQbbNrxgc/t3U= github.com/otiai10/curr v0.0.0-20150429015615-9b4961190c95/go.mod h1:9qAhocn7zKJG+0mI8eUu6xqkFDYS2kb2saOteoSB3cE= github.com/otiai10/curr v1.0.0/go.mod h1:LskTG5wDwr8Rs+nNQ+1LlxRjAtTZZjtJW4rMXl6j4vs= github.com/otiai10/mint v1.3.0/go.mod h1:F5AjcsTsWUqX+Na9fpHb52P8pcRX2CI6A3ctIT91xUo= github.com/otiai10/mint v1.3.3/go.mod h1:/yxELlJQ0ufhjUwhshSj+wFjZ78CnZ48/1wtmBH1OTc= -github.com/pelletier/go-toml/v2 v2.0.1/go.mod h1:r9LEWfGN8R5k0VXJ+0BkIe7MYkRdwZOjgMj2KwnJFUo= github.com/pelletier/go-toml/v2 v2.0.6 h1:nrzqCb7j9cDFj2coyLNLaZuJTLjWjlaz6nvTvIwycIU= github.com/pelletier/go-toml/v2 v2.0.6/go.mod h1:eumQOmlWiOPt5WriQQqoM5y18pDHwha2N+QD+EUNTek= github.com/pierrec/lz4 v2.6.0+incompatible h1:Ix9yFKn1nSPBLFl/yZknTp8TU5G4Ps0JDmguYK6iH1A= @@ -895,7 +851,6 @@ github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeV github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo= github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE= github.com/sirupsen/logrus v1.6.0/go.mod h1:7uNnSEd1DgxDLC74fIahvMZmmYsHGZGEOFrfsX/uA88= -github.com/sirupsen/logrus v1.8.1/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0= github.com/sirupsen/logrus v1.9.0 h1:trlNQbNUG3OdDrDil03MCb1H2o9nJ1x4/5LYw7byDE0= github.com/sirupsen/logrus v1.9.0/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ= github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc= @@ -938,10 +893,7 @@ github.com/tidwall/pretty v1.0.0/go.mod h1:XNkn88O1ChpSDQmQeStsy+sBenx6DDtFZJxhV github.com/tjfoc/gmsm v1.3.2 h1:7JVkAn5bvUJ7HtU08iW6UiD+UTmJTIToHCfeFzkcCxM= github.com/tjfoc/gmsm v1.3.2/go.mod h1:HaUcFuY0auTiaHB9MHFGCPx5IaLhTUd2atbCFBQXn9w= 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/go.mod h1:Ax+UKWsSmolVDwsd+7N3ZtXu+yMGCf907BLYF3GoBXY= -github.com/ugorji/go/codec v1.2.7/go.mod h1:WGN1fab3R1fzQlVQTkfxVtIBhWDRqOviHU95kRgeqEY= github.com/ugorji/go/codec v1.2.8 h1:sgBJS6COt0b/P40VouWKdseidkDgHxYGm0SAglUHfP0= github.com/ugorji/go/codec v1.2.8/go.mod h1:UNopzCgEMSXjBc6AOMqYvWC1ktqTAfzJZUZgYf6w6lg= github.com/urfave/cli/v2 v2.3.0/go.mod h1:LJmUH05zAU44vOAcrfzZQKsZbVcdbOG8rtL3/XcUArI= @@ -962,15 +914,11 @@ github.com/yuin/goldmark v1.1.32/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/yuin/goldmark v1.4.0/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= -github.com/yuin/goldmark v1.4.1/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= -go.etcd.io/etcd/api/v3 v3.5.5/go.mod h1:KFtNaxGDw4Yx/BA4iPPwevUTAuqcsPxzyX8PHydchN8= go.etcd.io/etcd/api/v3 v3.5.6 h1:Cy2qx3npLcYqTKqGJzMypnMv2tiRyifZJ17BlWIWA7A= go.etcd.io/etcd/api/v3 v3.5.6/go.mod h1:KFtNaxGDw4Yx/BA4iPPwevUTAuqcsPxzyX8PHydchN8= -go.etcd.io/etcd/client/pkg/v3 v3.5.5/go.mod h1:ggrwbk069qxpKPq8/FKkQ3Xq9y39kbFR4LnKszpRXeQ= go.etcd.io/etcd/client/pkg/v3 v3.5.6 h1:TXQWYceBKqLp4sa87rcPs11SXxUA/mHwH975v+BDvLU= go.etcd.io/etcd/client/pkg/v3 v3.5.6/go.mod h1:ggrwbk069qxpKPq8/FKkQ3Xq9y39kbFR4LnKszpRXeQ= -go.etcd.io/etcd/client/v3 v3.5.5/go.mod h1:aApjR4WGlSumpnJ2kloS75h6aHUmAyaPLjHMxpc7E7c= go.etcd.io/etcd/client/v3 v3.5.6 h1:coLs69PWCXE9G4FKquzNaSHrRyMCAXwF+IX1tAPVO8E= go.etcd.io/etcd/client/v3 v3.5.6/go.mod h1:f6GRinRMCsFVv9Ht42EyY7nfsVGwrNO0WEoS2pRKzQk= go.mongodb.org/mongo-driver v1.8.3 h1:TDKlTkGDKm9kkJVUOAXDK5/fkqKHJVwYQSpoRfB43R4= @@ -989,7 +937,6 @@ go.uber.org/atomic v1.7.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc= go.uber.org/atomic v1.10.0 h1:9qC72Qh0+3MqyJbAn8YU5xVq1frD8bn3JtD2oXtafVQ= go.uber.org/atomic v1.10.0/go.mod h1:LUxbIzbOniOlMKjJjyPfpl4v+PKK2cNJn91OQbhoJI0= go.uber.org/goleak v1.1.11 h1:wy28qYRKZgnJTxGxvye5/wgWr1EKjmUDGYox5mGlRlI= -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/multierr v1.9.0 h1:7fIwc/ZtS0q++VgcfqFDxSBZVv/Xo49/SYnDFupUwlI= go.uber.org/multierr v1.9.0/go.mod h1:X2jQV1h+kxSjClGpnseKVIxpmcjrj7MNnI0bnlfKTVQ= @@ -1007,7 +954,6 @@ golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPh golang.org/x/crypto v0.0.0-20201112155050-0c6587e931a9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20201216223049-8b5274cf687f/go.mod h1:jdWPYTVW3xRLrWPugEBEK3UY2ZEsg3UU495nc5E+M+I= golang.org/x/crypto v0.0.0-20210421170649-83a5a9bb288b/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4= -golang.org/x/crypto v0.0.0-20210711020723-a769d52b0f97/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= golang.org/x/crypto v0.0.0-20211215153901-e495a2d5b3d3/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= golang.org/x/crypto v0.5.0 h1:U/0M97KRkSFvyD/3FSmdP5W5swImpNgle/EHFhOsQPE= @@ -1024,7 +970,6 @@ golang.org/x/exp v0.0.0-20200207192155-f17229e696bd/go.mod h1:J/WKrq2StrnmMY6+EH golang.org/x/exp v0.0.0-20200224162631-6cc2880d07d6/go.mod h1:3jZMyOhIsHpP37uCMkUooju7aAi5cS1Q23tOzKc+0MU= golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js= golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= -golang.org/x/image v0.0.0-20220902085622-e7cb96979f69/go.mod h1:doUCurBvlfPMKfmIpRIywoHmhN3VyhnoFDbvIEWF4hY= golang.org/x/image v0.3.0 h1:HTDXbdK9bjfSWkPzDJIw89W8CAtfFGduujWs33NLLsg= golang.org/x/image v0.3.0/go.mod h1:fXd9211C/0VTlYuAcOhW8dY/RtEJqODXOWBDpmYBf+A= golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= @@ -1050,12 +995,10 @@ golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.4.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.4.1/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= -golang.org/x/mod v0.6.0-dev.0.20220106191415-9b9b3d81d5e3/go.mod h1:3p9vT2HGsQu2K1YbXdKPJLVgG5VJdoTa1poYQBtP1AY= golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4 h1:6zppjxzCulZykYSLyVDYbneBfbaBIQPYMevg0bEwv2s= 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-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20181114220301-adae6a3d119a/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190108225652-1e06a53dbb7e/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= @@ -1078,7 +1021,6 @@ golang.org/x/net v0.0.0-20200324143707-d3edc9973b7e/go.mod h1:qpuaurCH72eLCgpAm/ golang.org/x/net v0.0.0-20200501053045-e0ff5e5a1de5/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= golang.org/x/net v0.0.0-20200506145744-7e3656a0809f/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= golang.org/x/net v0.0.0-20200513185701-a91f0712d120/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= -golang.org/x/net v0.0.0-20200520004742-59133d7f0dd7/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= golang.org/x/net v0.0.0-20200520182314-0ba52f642ac2/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= golang.org/x/net v0.0.0-20200625001655-4c5254603344/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= golang.org/x/net v0.0.0-20200707034311-ab3426394381/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= @@ -1093,11 +1035,9 @@ golang.org/x/net v0.0.0-20210316092652-d523dce5a7f4/go.mod h1:RBQZq4jEuRlivfhVLd golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM= golang.org/x/net v0.0.0-20210421230115-4e50805a0758/go.mod h1:72T/g9IO56b78aLF+1Kcs5dz7/ng1VjMUvfKvpfy+jM= golang.org/x/net v0.0.0-20210427231257-85d9c07bbe3a/go.mod h1:OJAsFXCWl8Ukc7SiCT/9KSuxbyM7479/AVlXFRxuMCk= -golang.org/x/net v0.0.0-20210428140749-89ef3d95e781/go.mod h1:OJAsFXCWl8Ukc7SiCT/9KSuxbyM7479/AVlXFRxuMCk= golang.org/x/net v0.0.0-20210503060351-7fd8e65b6420/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20210525063256-abc453219eb5/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20210805182204-aaa1db679c0d/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= -golang.org/x/net v0.0.0-20211015210444-4f30a5c0130f/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-20220225172249-27dd8689420f/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= @@ -1158,7 +1098,6 @@ golang.org/x/sync v0.1.0 h1:wsuoTGHzEhffawBOhz5CYhcrV4IdKZbEyZjBMuTp12o= golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20181116152217-5ac8a444bdc5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190312061237-fead79001313/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -1169,11 +1108,8 @@ golang.org/x/sys v0.0.0-20190507160741-ecd444e8653b/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20190606165138-5da285871e9c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190624142023-c5567b49c5d0/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190726091711-fc99dfbffb4e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190904154756-749cb33beabd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191001151750-bb3f8db39f24/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20191005200804-aed5e4c7ecf9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20191120155948-bd437916bb0e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191204072324-ce4227a45e2e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191228213918-04cbcbbfeed8/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200106162015-b016eb3dc98e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -1199,7 +1135,6 @@ golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20201201145000-ef89a241ccb3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210104204734-6f8348627aad/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210112080510-489259a85091/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210119212857-b64e53b001e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210124154548-22da62e12c0c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210220050731-9a76102bfb43/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -1221,7 +1156,6 @@ golang.org/x/sys v0.0.0-20210806184541-e5e7981a1069/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.0.0-20210809222454-d867a43fc93e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210823070655-63515b42dcdf/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210908233432-aa78b53d3365/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20211019181941-9d821ace8654/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20211124211545-fe61309f8881/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20211210111614-af8b64212486/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20211216021012-1d35b9e2eb4e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= @@ -1248,7 +1182,6 @@ golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXR 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/term v0.3.0/go.mod h1:q750SLmJuPmVoN1blW3UFBPREJfb1KmY3vwxfr+nFDA= -golang.org/x/term v0.4.0/go.mod h1:9P2UbLfCdcvo3p/nzKvsmas4TnlujnuoV9hGgYzW1lQ= golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= @@ -1266,7 +1199,6 @@ golang.org/x/text v0.6.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= -golang.org/x/time v0.0.0-20220922220347-f3bd1da661af/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.1.0 h1:xYY+Bajn2a7VBmTM5GikTmnK8ZuX8YgnQCqZpbBNtmA= golang.org/x/time v0.1.0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= @@ -1317,7 +1249,6 @@ golang.org/x/tools v0.0.0-20200904185747-39188db58858/go.mod h1:Cj7w3i3Rnn0Xh82u golang.org/x/tools v0.0.0-20201110124207-079ba7bd75cd/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.0.0-20201201161351-ac6f37ff4c2a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.0.0-20201208233053-a543418bbed2/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/tools v0.0.0-20201224043029-2b0845dc783e/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.0.0-20210105154028-b0ab187a4818/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.1.0/go.mod h1:xkSsbof2nBLbhDlRMhhhyNLN/zl3eTqcnHD5viDpcZ0= @@ -1327,7 +1258,6 @@ golang.org/x/tools v0.1.3/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.4/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.5/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.7/go.mod h1:LGqMHiF4EqQNHR1JncWGqT5BVaXmza+X+BDGol+dOxo= -golang.org/x/tools v0.1.10/go.mod h1:Uh6Zz+xoGYZom868N8YTex3t7RhtHDBrE8Gzo9bV56E= golang.org/x/tools v0.1.12 h1:VveCTK38A2rkS8ZqFY25HIDFscX5X9OoEhJd3quQmXU= 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= @@ -1502,10 +1432,7 @@ google.golang.org/genproto v0.0.0-20221014213838-99cd37c6964a/go.mod h1:1vXfmgAz google.golang.org/genproto v0.0.0-20221024153911-1573dae28c9c/go.mod h1:9qHF0xnpdSfF6knlcsnpzUu5y+rpwgbvsyGAZPBMg4s= google.golang.org/genproto v0.0.0-20221024183307-1bc688fe9f3e/go.mod h1:9qHF0xnpdSfF6knlcsnpzUu5y+rpwgbvsyGAZPBMg4s= google.golang.org/genproto v0.0.0-20221027153422-115e99e71e1c/go.mod h1:CGI5F/G+E5bKwmfYo09AXuVN4dD894kIKUFmVbP2/Fo= -google.golang.org/genproto v0.0.0-20221114212237-e4508ebdbee1/go.mod h1:rZS5c/ZVYMaOGBfO68GWtjOw/eLaZM1X6iVtgjZ+EWg= -google.golang.org/genproto v0.0.0-20221117204609-8f9c96812029/go.mod h1:rZS5c/ZVYMaOGBfO68GWtjOw/eLaZM1X6iVtgjZ+EWg= google.golang.org/genproto v0.0.0-20221118155620-16455021b5e6/go.mod h1:rZS5c/ZVYMaOGBfO68GWtjOw/eLaZM1X6iVtgjZ+EWg= -google.golang.org/genproto v0.0.0-20221201164419-0e50fba7f41c/go.mod h1:rZS5c/ZVYMaOGBfO68GWtjOw/eLaZM1X6iVtgjZ+EWg= google.golang.org/genproto v0.0.0-20230110181048-76db0878b65f h1:BWUVssLB0HVOSY78gIdvk1dTVYtT1y8SBWtPYuTJ/6w= google.golang.org/genproto v0.0.0-20230110181048-76db0878b65f/go.mod h1:RGgjbofJ8xD9Sq1VVhDM1Vok1vRONV+rg+CjzG4SZKM= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= @@ -1544,7 +1471,6 @@ google.golang.org/grpc v1.48.0/go.mod h1:vN9eftEi1UMyUsIF80+uQXhHjbXYbm0uXoFCACu google.golang.org/grpc v1.49.0/go.mod h1:ZgQEeidpAuNRZ8iRrlBKXZQP1ghovWIVhdJRyCDK+GI= google.golang.org/grpc v1.50.0/go.mod h1:ZgQEeidpAuNRZ8iRrlBKXZQP1ghovWIVhdJRyCDK+GI= google.golang.org/grpc v1.50.1/go.mod h1:ZgQEeidpAuNRZ8iRrlBKXZQP1ghovWIVhdJRyCDK+GI= -google.golang.org/grpc v1.51.0/go.mod h1:wgNDFcnuBGmxLKI/qn4T+m5BtEBYXJPvibbUPsAIPww= google.golang.org/grpc v1.52.3 h1:pf7sOysg4LdgBqduXveGKrcEwbStiK2rtfghdzlUYDQ= google.golang.org/grpc v1.52.3/go.mod h1:pu6fVzoFb+NBYNAvQL08ic+lvB2IojljRYuun5vorUY= google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.1.0/go.mod h1:6Kw0yEErY5E/yWrBtf03jp27GLLJujG4z/JK95pnjjw= @@ -1574,17 +1500,14 @@ gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f/go.mod h1:Co6ibVJAznAaIkqp8 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/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI= -gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys= gopkg.in/gomail.v2 v2.0.0-20160411212932-81ebce5c23df h1:n7WqCuqOuCbNr617RXOY0AWRXxgwEyPp2z+p0+hgMuE= gopkg.in/gomail.v2 v2.0.0-20160411212932-81ebce5c23df/go.mod h1:LRQQ+SO6ZHR7tOkpBDuZnXENFzX8qRjMDMyPD6BRkCw= gopkg.in/ini.v1 v1.56.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= -gopkg.in/ini.v1 v1.57.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= gopkg.in/ini.v1 v1.66.2 h1:XfR1dOYubytKy4Shzc2LHrrGhU0lDCfDGG1yLPmpgsI= gopkg.in/ini.v1 v1.66.2/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= 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/tomb.v1 v1.0.0-20141024135613-dd632973f1e7 h1:uRGJdciOHaEIrze2W8Q3AKkepLTh2hOroT7a+7czfdQ= -gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw= gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.3/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= diff --git a/internal/api/group/group.go b/internal/api/group/group.go index f18267f84..31d52f7cd 100644 --- a/internal/api/group/group.go +++ b/internal/api/group/group.go @@ -1,409 +1,1041 @@ package group -import ( - common "Open_IM/internal/api_to_rpc" - api "Open_IM/pkg/api_struct" - "Open_IM/pkg/common/config" - "Open_IM/pkg/common/constant" - "Open_IM/pkg/common/log" - "Open_IM/pkg/common/token_verify" - "Open_IM/pkg/common/tracelog" - "Open_IM/pkg/getcdv3" - rpc "Open_IM/pkg/proto/group" - "Open_IM/pkg/utils" - "context" - "github.com/golang/protobuf/ptypes/wrappers" - "google.golang.org/grpc" +//import ( +// common "Open_IM/internal/api_to_rpc" +// api "Open_IM/pkg/api_struct" +// "Open_IM/pkg/common/config" +// "Open_IM/pkg/common/constant" +// "Open_IM/pkg/common/log" +// "Open_IM/pkg/common/token_verify" +// "Open_IM/pkg/common/tracelog" +// rpc "Open_IM/pkg/proto/group" +// "Open_IM/pkg/utils" +// "context" +// "github.com/golang/protobuf/ptypes/wrappers" +// "google.golang.org/grpc" +// +// "github.com/gin-gonic/gin" +// +// "net/http" +// "strings" +//) - "github.com/gin-gonic/gin" +//func NewApiNotReqData[B any](c *gin.Context, name string) *ApiRpc[struct{}, B] { +// return NewApiRpc[struct{}, B](c, name).IgnoreRequest() +//} +// +//func NewApiNotRespData[B any](c *gin.Context, name string) *ApiRpc[struct{}, B] { +// return NewApiRpc[struct{}, B](c, name).IgnoreResponse() +//} +// +//func NewApiNotReqRespData(c *gin.Context, name string) *ApiRpc[struct{}, struct{}] { +// return NewApiRpc[struct{}, struct{}](c, name).IgnoreRequest().IgnoreResponse() +//} - "net/http" - "strings" +//func NewApiRpc[A, B any, C, D any, Z any](c *gin.Context, name string, client func(conn *grpc.ClientConn) Z, rpc func(client Z, ctx context.Context, req A, options ...grpc.CallOption) (B, error)) *ApiRpc[A, B, C, D, Z] { +// return &ApiRpc[A, B, C, D, Z]{ +// c: c, +// name: name, +// client: client, +// rpc: rpc, +// } +//} +// +//type ApiRpc[A, B any, C, D any, Z any] struct { +// c *gin.Context +// name string +// client func(conn *grpc.ClientConn) Z +// rpc func(client Z, ctx context.Context, req A, options ...grpc.CallOption) (B, error) +// before func(apiReq *C, rpcReq *C, bind func() error) error +// after func(rpcResp *B, apiResp *D, bind func() error) error +//} +// +//func (a *ApiRpc[A, B, C, D, Z]) Before(fn func(apiReq *C, rpcReq *C, bind func() error) error) { +// a.before = fn +//} +// +//func (a *ApiRpc[A, B, C, D, Z]) After(fn func(rpcResp *B, apiResp *D, bind func() error) error) { +// a.after = fn +//} +// +//func (a *ApiRpc[A, B, C, D, Z]) Execute() { +// +//} - jsonData "Open_IM/internal/utils" -) +//func NewApiRpc[A, B any, C, D any, Z any](c *gin.Context, name string, client func(conn *grpc.ClientConn) Z, rpc func(client Z, ctx context.Context, req A, options ...grpc.CallOption) (B, error)) *ApiRpc[A, B, C, D, Z] { +// return &ApiRpc[A, B, C, D, Z]{ +// c: c, +// name: name, +// client: client, +// rpc: rpc, +// } +//} +// +//type ApiRpc[A, B any, C, D any, Z any] struct { +// c *gin.Context +// name string +// client func(conn *grpc.ClientConn) Z +// rpc func(client Z, ctx context.Context, req A, options ...grpc.CallOption) (B, error) +// before func(apiReq *C, rpcReq *C, bind func() error) error +// after func(rpcResp *B, apiResp *D, bind func() error) error +//} +// +//func (a *ApiRpc[A, B, C, D, Z]) Before(fn func(apiReq *C, rpcReq *C, bind func() error) error) { +// a.before = fn +//} +// +//func (a *ApiRpc[A, B, C, D, Z]) After(fn func(rpcResp *B, apiResp *D, bind func() error) error) { +// a.after = fn +//} +// +//func (a *ApiRpc[A, B, C, D, Z]) Execute() { +// +//} -// @Summary 把用户踢出群组 -// @Description 把用户踢出群组 -// @Tags 群组相关 -// @ID KickGroupMember -// @Accept json -// @Param token header string true "im token" -// @Param req body api.KickGroupMemberReq true "GroupID为要操作的群ID
kickedUserIDList为要踢出的群用户ID
reason为原因" -// @Produce json -// @Success 0 {object} api.KickGroupMemberResp "result为结果码, -1为失败, 0为成功" -// @Failure 500 {object} api.Swagger500Resp "errCode为500 一般为服务器内部错误" -// @Failure 400 {object} api.Swagger400Resp "errCode为400 一般为参数输入错误, token未带上等" -// @Router /group/kick_group [post] -func KickGroupMember(c *gin.Context) { - params := api.KickGroupMemberReq{} - if err := c.BindJSON(¶ms); err != nil { - log.NewError("0", "BindJSON failed ", err.Error()) - c.JSON(http.StatusBadRequest, gin.H{"errCode": 400, "errMsg": err.Error()}) - return - } - if len(params.KickedUserIDList) > constant.MaxNotificationNum { - errMsg := params.OperationID + " too many members " + utils.Int32ToString(int32(len(params.KickedUserIDList))) - log.Error(params.OperationID, errMsg) - c.JSON(http.StatusOK, gin.H{"errCode": 400, "errMsg": errMsg}) - return - } - req := &rpc.KickGroupMemberReq{} - utils.CopyStructFields(req, ¶ms) - var ok bool - var errInfo string - ok, req.OpUserID, errInfo = token_verify.GetUserIDFromToken(c.Request.Header.Get("token"), req.OperationID) - if !ok { - errMsg := req.OperationID + " " + "GetUserIDFromToken failed " + errInfo + " token:" + c.Request.Header.Get("token") - log.NewError(req.OperationID, errMsg) - c.JSON(http.StatusBadRequest, gin.H{"errCode": 500, "errMsg": errMsg}) - return - } +//func KickGroupMember(c *gin.Context) { +// //bind := NewApiBind[Ignore, Ignore](c) +// +// //bind:= ApiBind[Ignore, Ignore](nil) +// +// //var bind ApiBind[int, int] +// // +// //NewRpc(bind, "", group.NewGroupClient, group.GroupClient.KickGroupMember) +// +// //common.ApiToRpc(c, &api.KickGroupMemberReq{}, nil, config.Config.RpcRegisterName.OpenImGroupName, rpc.NewGroupClient, utils.GetFuncName()) +//} - log.NewInfo(req.OperationID, "KickGroupMember args ", req.String()) - - etcdConn := rpc.GetDefaultConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImGroupName, req.OperationID) - if etcdConn == nil { - errMsg := req.OperationID + "getcdv3.GetDefaultConn == nil" - log.NewError(req.OperationID, errMsg) - c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": errMsg}) - return - } - client := rpc.NewGroupClient(etcdConn) - RpcResp, err := client.KickGroupMember(context.Background(), req) - if err != nil { - log.NewError(req.OperationID, "FindGroupMemberAll failed ", err.Error(), req.String()) - c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": err.Error()}) - return - } - - var memberListResp api.KickGroupMemberResp - memberListResp.ErrMsg = RpcResp.CommonResp.ErrMsg - memberListResp.ErrCode = RpcResp.CommonResp.ErrCode - for _, v := range RpcResp.Id2ResultList { - memberListResp.UserIDResultList = append(memberListResp.UserIDResultList, &api.UserIDResult{UserID: v.UserID, Result: v.Result}) - } - if len(memberListResp.UserIDResultList) == 0 { - memberListResp.UserIDResultList = []*api.UserIDResult{} - } - - log.NewInfo(req.OperationID, "KickGroupMember api return ", memberListResp) - c.JSON(http.StatusOK, memberListResp) -} - -// @Summary 获取群成员信息 -// @Description 获取群成员信息 -// @Tags 群组相关 -// @ID GetGroupMembersInfo -// @Accept json -// @Param token header string true "im token" -// @Param req body api.GetGroupMembersInfoReq true "groupID为要获取的群ID
memberList为要获取群成员的群ID列表" -// @Produce json -// @Success 0 {object} api.GetGroupMembersInfoResp{data=[]open_im_sdk.GroupMemberFullInfo} -// @Failure 500 {object} api.Swagger500Resp "errCode为500 一般为服务器内部错误" -// @Failure 400 {object} api.Swagger400Resp "errCode为400 一般为参数输入错误, token未带上等" -// @Router /group/get_group_members_info [post] -func GetGroupMembersInfo(c *gin.Context) { - params := api.GetGroupMembersInfoReq{} - if err := c.BindJSON(¶ms); err != nil { - log.NewError("0", "BindJSON failed ", err.Error()) - c.JSON(http.StatusBadRequest, gin.H{"errCode": 400, "errMsg": err.Error()}) - return - } - req := &rpc.GetGroupMembersInfoReq{} - utils.CopyStructFields(req, params) - - var ok bool - var errInfo string - ok, req.OpUserID, errInfo = token_verify.GetUserIDFromToken(c.Request.Header.Get("token"), req.OperationID) - if !ok { - errMsg := req.OperationID + " " + "GetUserIDFromToken failed " + errInfo + " token:" + c.Request.Header.Get("token") - log.NewError(req.OperationID, errMsg) - c.JSON(http.StatusBadRequest, gin.H{"errCode": 500, "errMsg": errMsg}) - return - } - - log.NewInfo(req.OperationID, "GetGroupMembersInfo args ", req.String()) - - etcdConn := rpc.GetDefaultConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImGroupName, req.OperationID) - if etcdConn == nil { - errMsg := req.OperationID + "getcdv3.GetDefaultConn == nil" - log.NewError(req.OperationID, errMsg) - c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": errMsg}) - return - } - client := rpc.NewGroupClient(etcdConn) - - RpcResp, err := client.GetGroupMembersInfo(context.Background(), req) - if err != nil { - log.NewError(req.OperationID, "FindGroupMemberAll failed ", err.Error(), req.String()) - c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": err.Error()}) - return - } - - memberListResp := api.GetGroupMembersInfoResp{CommResp: api.CommResp{ErrCode: RpcResp.CommonResp.ErrCode, ErrMsg: RpcResp.CommonResp.ErrMsg}, MemberList: RpcResp.MemberList} - memberListResp.Data = jsonData.JsonDataList(RpcResp.MemberList) - log.NewInfo(req.OperationID, "GetGroupMembersInfo api return ", memberListResp) - c.JSON(http.StatusOK, memberListResp) -} - -func GetGroupMemberList(c *gin.Context) { - params := api.GetGroupMemberListReq{} - if err := c.BindJSON(¶ms); err != nil { - log.NewError("0", "BindJSON failed ", err.Error()) - c.JSON(http.StatusBadRequest, gin.H{"errCode": 400, "errMsg": err.Error()}) - return - } - req := &rpc.GetGroupMemberListReq{} - utils.CopyStructFields(req, params) - - var ok bool - var errInfo string - ok, req.OpUserID, errInfo = token_verify.GetUserIDFromToken(c.Request.Header.Get("token"), req.OperationID) - if !ok { - errMsg := req.OperationID + " " + "GetUserIDFromToken failed " + errInfo + " token:" + c.Request.Header.Get("token") - log.NewError(req.OperationID, errMsg) - c.JSON(http.StatusBadRequest, gin.H{"errCode": 500, "errMsg": errMsg}) - return - } - - log.NewInfo(req.OperationID, "FindGroupMemberAll args ", req.String()) - - etcdConn := rpc.GetDefaultConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImGroupName, req.OperationID) - if etcdConn == nil { - errMsg := req.OperationID + "getcdv3.GetDefaultConn == nil" - log.NewError(req.OperationID, errMsg) - c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": errMsg}) - return - } - client := rpc.NewGroupClient(etcdConn) - - RpcResp, err := client.GetGroupMemberList(context.Background(), req) - if err != nil { - log.NewError(req.OperationID, "FindGroupMemberAll failed, ", err.Error(), req.String()) - c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": err.Error()}) - return - } - - memberListResp := api.GetGroupMemberListResp{CommResp: api.CommResp{ErrCode: RpcResp.CommonResp.ErrCode, ErrMsg: RpcResp.CommonResp.ErrMsg}, MemberList: RpcResp.MemberList, NextSeq: RpcResp.NextSeq} - memberListResp.Data = jsonData.JsonDataList(memberListResp.MemberList) - - log.NewInfo(req.OperationID, "FindGroupMemberAll api return ", memberListResp) - c.JSON(http.StatusOK, memberListResp) -} - -// @Summary 获取全部群成员列表 -// @Description 获取全部群成员列表 -// @Tags 群组相关 -// @ID GetGroupAllMemberList -// @Accept json -// @Param token header string true "im token" -// @Param req body api.GetGroupAllMemberReq true "GroupID为要获取群成员的群ID" -// @Produce json -// @Success 0 {object} api.GetGroupAllMemberResp{data=[]open_im_sdk.GroupMemberFullInfo} -// @Failure 500 {object} api.Swagger500Resp "errCode为500 一般为服务器内部错误" -// @Failure 400 {object} api.Swagger400Resp "errCode为400 一般为参数输入错误, token未带上等" -// @Router /group/get_group_all_member_list [post] -func GetGroupAllMemberList(c *gin.Context) { - params := api.GetGroupAllMemberReq{} - if err := c.BindJSON(¶ms); err != nil { - log.NewError("0", "BindJSON failed ", err.Error()) - c.JSON(http.StatusBadRequest, gin.H{"errCode": 400, "errMsg": err.Error()}) - return - } - req := &rpc.GetGroupAllMemberReq{} - utils.CopyStructFields(req, ¶ms) - - var ok bool - var errInfo string - ok, req.OpUserID, errInfo = token_verify.GetUserIDFromToken(c.Request.Header.Get("token"), req.OperationID) - if !ok { - errMsg := req.OperationID + " " + "GetUserIDFromToken failed " + errInfo + " token:" + c.Request.Header.Get("token") - log.NewError(req.OperationID, errMsg) - c.JSON(http.StatusBadRequest, gin.H{"errCode": 500, "errMsg": errMsg}) - return - } - - log.NewInfo(req.OperationID, "GetGroupAllMember args ", req.String()) - - etcdConn := rpc.GetDefaultConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImGroupName, req.OperationID) - if etcdConn == nil { - errMsg := req.OperationID + "getcdv3.GetDefaultConn == nil" - log.NewError(req.OperationID, errMsg) - c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": errMsg}) - return - } - maxSizeOption := grpc.MaxCallRecvMsgSize(1024 * 1024 * constant.GroupRPCRecvSize) - client := rpc.NewGroupClient(etcdConn) - RpcResp, err := client.GetGroupAllMember(context.Background(), req, maxSizeOption) - if err != nil { - log.NewError(req.OperationID, "GetGroupAllMember failed err", err.Error(), req.String()) - c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": err.Error()}) - return - } - - memberListResp := api.GetGroupAllMemberResp{CommResp: api.CommResp{ErrCode: RpcResp.CommonResp.ErrCode, ErrMsg: RpcResp.CommonResp.ErrMsg}, MemberList: RpcResp.MemberList} - memberListResp.Data = jsonData.JsonDataList(memberListResp.MemberList) - log.NewInfo(req.OperationID, "GetGroupAllMember api return ", len(memberListResp.MemberList)) - c.JSON(http.StatusOK, memberListResp) -} - -// @Summary 获取用户加入群列表 -// @Description 获取用户加入群列表 -// @Tags 群组相关 -// @ID GetJoinedGroupList -// @Accept json -// @Param token header string true "im token" -// @Param req body api.GetJoinedGroupListReq true "fromUserID为要获取的用户ID" -// @Produce json -// @Success 0 {object} api.GetJoinedGroupListResp{data=[]open_im_sdk.GroupInfo} -// @Failure 500 {object} api.Swagger500Resp "errCode为500 一般为服务器内部错误" -// @Failure 400 {object} api.Swagger400Resp "errCode为400 一般为参数输入错误, token未带上等" -// @Router /group/get_joined_group_list [post] -func GetJoinedGroupList(c *gin.Context) { - params := api.GetJoinedGroupListReq{} - if err := c.BindJSON(¶ms); err != nil { - log.NewError("0", "BindJSON failed ", err.Error()) - c.JSON(http.StatusBadRequest, gin.H{"errCode": 400, "errMsg": err.Error()}) - return - } - req := &rpc.GetJoinedGroupListReq{} - utils.CopyStructFields(req, params) - - var ok bool - var errInfo string - ok, req.OpUserID, errInfo = token_verify.GetUserIDFromToken(c.Request.Header.Get("token"), req.OperationID) - if !ok { - errMsg := req.OperationID + " " + "GetUserIDFromToken failed " + errInfo + " token:" + c.Request.Header.Get("token") - log.NewError(req.OperationID, errMsg) - c.JSON(http.StatusBadRequest, gin.H{"errCode": 500, "errMsg": errMsg}) - return - } - - log.NewInfo(req.OperationID, "FindJoinedGroup args ", req.String()) - - etcdConn := rpc.GetDefaultConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImGroupName, req.OperationID) - if etcdConn == nil { - errMsg := req.OperationID + "getcdv3.GetDefaultConn == nil" - log.NewError(req.OperationID, errMsg) - c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": errMsg}) - return - } - client := rpc.NewGroupClient(etcdConn) - RpcResp, err := client.GetJoinedGroupList(context.Background(), req) - if err != nil { - log.NewError(req.OperationID, "FindJoinedGroup failed ", err.Error(), req.String()) - c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": err.Error()}) - return - } - - GroupListResp := api.GetJoinedGroupListResp{CommResp: api.CommResp{ErrCode: RpcResp.CommonResp.ErrCode, ErrMsg: RpcResp.CommonResp.ErrMsg}, GroupInfoList: RpcResp.GroupList} - GroupListResp.Data = jsonData.JsonDataList(GroupListResp.GroupInfoList) - log.NewInfo(req.OperationID, "FindJoinedGroup api return ", GroupListResp) - c.JSON(http.StatusOK, GroupListResp) -} - -// @Summary 将用户拉入群组 -// @Description 将用户拉入群组 -// @Tags 群组相关 -// @ID InviteUserToGroup -// @Accept json -// @Param token header string true "im token" -// @Param req body api.InviteUserToGroupReq true "groupID为要拉进的群组ID
invitedUserIDList为要获取群成员的群ID列表
reason为原因" -// @Produce json -// @Success 0 {object} api.InviteUserToGroupResp "result为结果码, -1为失败, 0为成功"" -// @Failure 500 {object} api.Swagger500Resp "errCode为500 一般为服务器内部错误" -// @Failure 400 {object} api.Swagger400Resp "errCode为400 一般为参数输入错误, token未带上等" -// @Router /group/invite_user_to_group [post] -func InviteUserToGroup(c *gin.Context) { - params := api.InviteUserToGroupReq{} - if err := c.BindJSON(¶ms); err != nil { - log.NewError("0", "BindJSON failed ", err.Error()) - c.JSON(http.StatusBadRequest, gin.H{"errCode": 400, "errMsg": err.Error()}) - return - } - if len(params.InvitedUserIDList) > constant.MaxNotificationNum { - errMsg := params.OperationID + " too many members " + utils.Int32ToString(int32(len(params.InvitedUserIDList))) - log.Error(params.OperationID, errMsg) - c.JSON(http.StatusOK, gin.H{"errCode": 400, "errMsg": errMsg}) - return - } - req := &rpc.InviteUserToGroupReq{} - utils.CopyStructFields(req, ¶ms) - - var ok bool - var errInfo string - ok, req.OpUserID, errInfo = token_verify.GetUserIDFromToken(c.Request.Header.Get("token"), req.OperationID) - if !ok { - errMsg := req.OperationID + " " + "GetUserIDFromToken failed " + errInfo + " token:" + c.Request.Header.Get("token") - log.NewError(req.OperationID, errMsg) - c.JSON(http.StatusBadRequest, gin.H{"errCode": 500, "errMsg": errMsg}) - return - } - - log.NewInfo(req.OperationID, "InviteUserToGroup args ", req.String()) - - etcdConn := rpc.GetDefaultConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImGroupName, req.OperationID) - if etcdConn == nil { - errMsg := req.OperationID + "getcdv3.GetDefaultConn == nil" - log.NewError(req.OperationID, errMsg) - c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": errMsg}) - return - } - client := rpc.NewGroupClient(etcdConn) - RpcResp, err := client.InviteUserToGroup(context.Background(), req) - if err != nil { - log.NewError(req.OperationID, "InviteUserToGroup failed ", err.Error(), req.String()) - c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": err.Error()}) - return - } - - resp := api.InviteUserToGroupResp{CommResp: api.CommResp{ErrCode: RpcResp.CommonResp.ErrCode, ErrMsg: RpcResp.CommonResp.ErrMsg}} - for _, v := range RpcResp.Id2ResultList { - resp.UserIDResultList = append(resp.UserIDResultList, &api.UserIDResult{UserID: v.UserID, Result: v.Result}) - } - - if len(resp.UserIDResultList) == 0 { - resp.UserIDResultList = *new([]*api.UserIDResult) - } - - log.NewInfo(req.OperationID, "InviteUserToGroup api return ", resp) - c.JSON(http.StatusOK, resp) -} - -// @Summary 创建群组 -// @Description 创建群组 -// @Tags 群组相关 -// @ID CreateGroup -// @Accept json -// @Param token header string true "im token" -// @Param req body api.CreateGroupReq true "groupType这里填0代表普通群
groupName为群名称
introduction为群介绍
notification为群公共
ownerUserID为群主ID
ex为群扩展字段
memberList中对象roleLevel为群员角色,1为普通用户 2为群主 3为管理员" -// @Produce json -// @Success 0 {object} api.CreateGroupResp{data=open_im_sdk.GroupInfo} -// @Failure 500 {object} api.Swagger500Resp "errCode为500 一般为服务器内部错误" -// @Failure 400 {object} api.Swagger400Resp "errCode为400 一般为参数输入错误, token未带上等" -// @Router /group/create_group [post] -//func CreateGroup(c *gin.Context) { -// params := api.CreateGroupReq{} +//func KickGroupMember(c *gin.Context) { +// params := api.KickGroupMemberReq{} // if err := c.BindJSON(¶ms); err != nil { // log.NewError("0", "BindJSON failed ", err.Error()) // c.JSON(http.StatusBadRequest, gin.H{"errCode": 400, "errMsg": err.Error()}) // return // } -// -// if len(params.MemberList) > constant.MaxNotificationNum { -// errMsg := params.OperationID + " too many members " + utils.Int32ToString(int32(len(params.MemberList))) +// if len(params.KickedUserIDList) > constant.MaxNotificationNum { +// errMsg := params.OperationID + " too many members " + utils.Int32ToString(int32(len(params.KickedUserIDList))) // log.Error(params.OperationID, errMsg) // c.JSON(http.StatusOK, gin.H{"errCode": 400, "errMsg": errMsg}) // return // } -// req := &rpc.CreateGroupReq{GroupInfo: &open_im_sdk.GroupInfo{}} -// utils.CopyStructFields(req.GroupInfo, ¶ms) -// -// for _, v := range params.MemberList { -// req.InitMemberList = append(req.InitMemberList, &rpc.GroupAddMemberInfo{UserID: v.UserID, RoleLevel: v.RoleLevel}) +// req := &rpc.KickGroupMemberReq{} +// utils.CopyStructFields(req, ¶ms) +// var ok bool +// var errInfo string +// ok, req.OpUserID, errInfo = token_verify.GetUserIDFromToken(c.Request.Header.Get("token"), req.OperationID) +// if !ok { +// errMsg := req.OperationID + " " + "GetUserIDFromToken failed " + errInfo + " token:" + c.Request.Header.Get("token") +// log.NewError(req.OperationID, errMsg) +// c.JSON(http.StatusBadRequest, gin.H{"errCode": 500, "errMsg": errMsg}) +// return // } // +// log.NewInfo(req.OperationID, "KickGroupMember args ", req.String()) +// +// etcdConn := rpc.GetDefaultConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImGroupName, req.OperationID) +// if etcdConn == nil { +// errMsg := req.OperationID + "getcdv3.GetDefaultConn == nil" +// log.NewError(req.OperationID, errMsg) +// c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": errMsg}) +// return +// } +// client := rpc.NewGroupClient(etcdConn) +// RpcResp, err := client.KickGroupMember(context.Background(), req) +// if err != nil { +// log.NewError(req.OperationID, "FindGroupMemberAll failed ", err.Error(), req.String()) +// c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": err.Error()}) +// return +// } +// +// var memberListResp api.KickGroupMemberResp +// memberListResp.ErrMsg = RpcResp.CommonResp.ErrMsg +// memberListResp.ErrCode = RpcResp.CommonResp.ErrCode +// for _, v := range RpcResp.Id2ResultList { +// memberListResp.UserIDResultList = append(memberListResp.UserIDResultList, &api.UserIDResult{UserID: v.UserID, Result: v.Result}) +// } +// if len(memberListResp.UserIDResultList) == 0 { +// memberListResp.UserIDResultList = []*api.UserIDResult{} +// } +// +// log.NewInfo(req.OperationID, "KickGroupMember api return ", memberListResp) +// c.JSON(http.StatusOK, memberListResp) +//} +// +//func GetGroupMembersInfo(c *gin.Context) { +// params := api.GetGroupMembersInfoReq{} +// if err := c.BindJSON(¶ms); err != nil { +// log.NewError("0", "BindJSON failed ", err.Error()) +// c.JSON(http.StatusBadRequest, gin.H{"errCode": 400, "errMsg": err.Error()}) +// return +// } +// req := &rpc.GetGroupMembersInfoReq{} +// utils.CopyStructFields(req, params) +// +// var ok bool +// var errInfo string +// ok, req.OpUserID, errInfo = token_verify.GetUserIDFromToken(c.Request.Header.Get("token"), req.OperationID) +// if !ok { +// errMsg := req.OperationID + " " + "GetUserIDFromToken failed " + errInfo + " token:" + c.Request.Header.Get("token") +// log.NewError(req.OperationID, errMsg) +// c.JSON(http.StatusBadRequest, gin.H{"errCode": 500, "errMsg": errMsg}) +// return +// } +// +// log.NewInfo(req.OperationID, "GetGroupMembersInfo args ", req.String()) +// +// etcdConn := rpc.GetDefaultConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImGroupName, req.OperationID) +// if etcdConn == nil { +// errMsg := req.OperationID + "getcdv3.GetDefaultConn == nil" +// log.NewError(req.OperationID, errMsg) +// c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": errMsg}) +// return +// } +// client := rpc.NewGroupClient(etcdConn) +// +// RpcResp, err := client.GetGroupMembersInfo(context.Background(), req) +// if err != nil { +// log.NewError(req.OperationID, "FindGroupMemberAll failed ", err.Error(), req.String()) +// c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": err.Error()}) +// return +// } +// +// memberListResp := api.GetGroupMembersInfoResp{CommResp: api.CommResp{ErrCode: RpcResp.CommonResp.ErrCode, ErrMsg: RpcResp.CommonResp.ErrMsg}, MemberList: RpcResp.MemberList} +// memberListResp.Data = jsonData.JsonDataList(RpcResp.MemberList) +// log.NewInfo(req.OperationID, "GetGroupMembersInfo api return ", memberListResp) +// c.JSON(http.StatusOK, memberListResp) +//} +// +//func GetGroupMemberList(c *gin.Context) { +// params := api.GetGroupMemberListReq{} +// if err := c.BindJSON(¶ms); err != nil { +// log.NewError("0", "BindJSON failed ", err.Error()) +// c.JSON(http.StatusBadRequest, gin.H{"errCode": 400, "errMsg": err.Error()}) +// return +// } +// req := &rpc.GetGroupMemberListReq{} +// utils.CopyStructFields(req, params) +// +// var ok bool +// var errInfo string +// ok, req.OpUserID, errInfo = token_verify.GetUserIDFromToken(c.Request.Header.Get("token"), req.OperationID) +// if !ok { +// errMsg := req.OperationID + " " + "GetUserIDFromToken failed " + errInfo + " token:" + c.Request.Header.Get("token") +// log.NewError(req.OperationID, errMsg) +// c.JSON(http.StatusBadRequest, gin.H{"errCode": 500, "errMsg": errMsg}) +// return +// } +// +// log.NewInfo(req.OperationID, "FindGroupMemberAll args ", req.String()) +// +// etcdConn := rpc.GetDefaultConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImGroupName, req.OperationID) +// if etcdConn == nil { +// errMsg := req.OperationID + "getcdv3.GetDefaultConn == nil" +// log.NewError(req.OperationID, errMsg) +// c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": errMsg}) +// return +// } +// client := rpc.NewGroupClient(etcdConn) +// +// RpcResp, err := client.GetGroupMemberList(context.Background(), req) +// if err != nil { +// log.NewError(req.OperationID, "FindGroupMemberAll failed, ", err.Error(), req.String()) +// c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": err.Error()}) +// return +// } +// +// memberListResp := api.GetGroupMemberListResp{CommResp: api.CommResp{ErrCode: RpcResp.CommonResp.ErrCode, ErrMsg: RpcResp.CommonResp.ErrMsg}, MemberList: RpcResp.MemberList, NextSeq: RpcResp.NextSeq} +// memberListResp.Data = jsonData.JsonDataList(memberListResp.MemberList) +// +// log.NewInfo(req.OperationID, "FindGroupMemberAll api return ", memberListResp) +// c.JSON(http.StatusOK, memberListResp) +//} +// +//func GetGroupAllMemberList(c *gin.Context) { +// params := api.GetGroupAllMemberReq{} +// if err := c.BindJSON(¶ms); err != nil { +// log.NewError("0", "BindJSON failed ", err.Error()) +// c.JSON(http.StatusBadRequest, gin.H{"errCode": 400, "errMsg": err.Error()}) +// return +// } +// req := &rpc.GetGroupAllMemberReq{} +// utils.CopyStructFields(req, ¶ms) +// +// var ok bool +// var errInfo string +// ok, req.OpUserID, errInfo = token_verify.GetUserIDFromToken(c.Request.Header.Get("token"), req.OperationID) +// if !ok { +// errMsg := req.OperationID + " " + "GetUserIDFromToken failed " + errInfo + " token:" + c.Request.Header.Get("token") +// log.NewError(req.OperationID, errMsg) +// c.JSON(http.StatusBadRequest, gin.H{"errCode": 500, "errMsg": errMsg}) +// return +// } +// +// log.NewInfo(req.OperationID, "GetGroupAllMember args ", req.String()) +// +// etcdConn := rpc.GetDefaultConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImGroupName, req.OperationID) +// if etcdConn == nil { +// errMsg := req.OperationID + "getcdv3.GetDefaultConn == nil" +// log.NewError(req.OperationID, errMsg) +// c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": errMsg}) +// return +// } +// maxSizeOption := grpc.MaxCallRecvMsgSize(1024 * 1024 * constant.GroupRPCRecvSize) +// client := rpc.NewGroupClient(etcdConn) +// RpcResp, err := client.GetGroupAllMember(context.Background(), req, maxSizeOption) +// if err != nil { +// log.NewError(req.OperationID, "GetGroupAllMember failed err", err.Error(), req.String()) +// c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": err.Error()}) +// return +// } +// +// memberListResp := api.GetGroupAllMemberResp{CommResp: api.CommResp{ErrCode: RpcResp.CommonResp.ErrCode, ErrMsg: RpcResp.CommonResp.ErrMsg}, MemberList: RpcResp.MemberList} +// memberListResp.Data = jsonData.JsonDataList(memberListResp.MemberList) +// log.NewInfo(req.OperationID, "GetGroupAllMember api return ", len(memberListResp.MemberList)) +// c.JSON(http.StatusOK, memberListResp) +//} +// +//func GetJoinedGroupList(c *gin.Context) { +// params := api.GetJoinedGroupListReq{} +// if err := c.BindJSON(¶ms); err != nil { +// log.NewError("0", "BindJSON failed ", err.Error()) +// c.JSON(http.StatusBadRequest, gin.H{"errCode": 400, "errMsg": err.Error()}) +// return +// } +// req := &rpc.GetJoinedGroupListReq{} +// utils.CopyStructFields(req, params) +// +// var ok bool +// var errInfo string +// ok, req.OpUserID, errInfo = token_verify.GetUserIDFromToken(c.Request.Header.Get("token"), req.OperationID) +// if !ok { +// errMsg := req.OperationID + " " + "GetUserIDFromToken failed " + errInfo + " token:" + c.Request.Header.Get("token") +// log.NewError(req.OperationID, errMsg) +// c.JSON(http.StatusBadRequest, gin.H{"errCode": 500, "errMsg": errMsg}) +// return +// } +// +// log.NewInfo(req.OperationID, "FindJoinedGroup args ", req.String()) +// +// etcdConn := rpc.GetDefaultConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImGroupName, req.OperationID) +// if etcdConn == nil { +// errMsg := req.OperationID + "getcdv3.GetDefaultConn == nil" +// log.NewError(req.OperationID, errMsg) +// c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": errMsg}) +// return +// } +// client := rpc.NewGroupClient(etcdConn) +// RpcResp, err := client.GetJoinedGroupList(context.Background(), req) +// if err != nil { +// log.NewError(req.OperationID, "FindJoinedGroup failed ", err.Error(), req.String()) +// c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": err.Error()}) +// return +// } +// +// GroupListResp := api.GetJoinedGroupListResp{CommResp: api.CommResp{ErrCode: RpcResp.CommonResp.ErrCode, ErrMsg: RpcResp.CommonResp.ErrMsg}, GroupInfoList: RpcResp.GroupList} +// GroupListResp.Data = jsonData.JsonDataList(GroupListResp.GroupInfoList) +// log.NewInfo(req.OperationID, "FindJoinedGroup api return ", GroupListResp) +// c.JSON(http.StatusOK, GroupListResp) +//} +// +//func InviteUserToGroup(c *gin.Context) { +// params := api.InviteUserToGroupReq{} +// if err := c.BindJSON(¶ms); err != nil { +// log.NewError("0", "BindJSON failed ", err.Error()) +// c.JSON(http.StatusBadRequest, gin.H{"errCode": 400, "errMsg": err.Error()}) +// return +// } +// if len(params.InvitedUserIDList) > constant.MaxNotificationNum { +// errMsg := params.OperationID + " too many members " + utils.Int32ToString(int32(len(params.InvitedUserIDList))) +// log.Error(params.OperationID, errMsg) +// c.JSON(http.StatusOK, gin.H{"errCode": 400, "errMsg": errMsg}) +// return +// } +// req := &rpc.InviteUserToGroupReq{} +// utils.CopyStructFields(req, ¶ms) +// +// var ok bool +// var errInfo string +// ok, req.OpUserID, errInfo = token_verify.GetUserIDFromToken(c.Request.Header.Get("token"), req.OperationID) +// if !ok { +// errMsg := req.OperationID + " " + "GetUserIDFromToken failed " + errInfo + " token:" + c.Request.Header.Get("token") +// log.NewError(req.OperationID, errMsg) +// c.JSON(http.StatusBadRequest, gin.H{"errCode": 500, "errMsg": errMsg}) +// return +// } +// +// log.NewInfo(req.OperationID, "InviteUserToGroup args ", req.String()) +// +// etcdConn := rpc.GetDefaultConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImGroupName, req.OperationID) +// if etcdConn == nil { +// errMsg := req.OperationID + "getcdv3.GetDefaultConn == nil" +// log.NewError(req.OperationID, errMsg) +// c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": errMsg}) +// return +// } +// client := rpc.NewGroupClient(etcdConn) +// RpcResp, err := client.InviteUserToGroup(context.Background(), req) +// if err != nil { +// log.NewError(req.OperationID, "InviteUserToGroup failed ", err.Error(), req.String()) +// c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": err.Error()}) +// return +// } +// +// resp := api.InviteUserToGroupResp{CommResp: api.CommResp{ErrCode: RpcResp.CommonResp.ErrCode, ErrMsg: RpcResp.CommonResp.ErrMsg}} +// for _, v := range RpcResp.Id2ResultList { +// resp.UserIDResultList = append(resp.UserIDResultList, &api.UserIDResult{UserID: v.UserID, Result: v.Result}) +// } +// +// if len(resp.UserIDResultList) == 0 { +// resp.UserIDResultList = *new([]*api.UserIDResult) +// } +// +// log.NewInfo(req.OperationID, "InviteUserToGroup api return ", resp) +// c.JSON(http.StatusOK, resp) +//} +// +//// @Summary 创建群组 +//// @Description 创建群组 +//// @Tags 群组相关 +//// @ID CreateGroup +//// @Accept json +//// @Param token header string true "im token" +//// @Param req body api.CreateGroupReq true "groupType这里填0代表普通群
groupName为群名称
introduction为群介绍
notification为群公共
ownerUserID为群主ID
ex为群扩展字段
memberList中对象roleLevel为群员角色,1为普通用户 2为群主 3为管理员" +//// @Produce json +//// @Success 0 {object} api.CreateGroupResp{data=open_im_sdk.GroupInfo} +//// @Failure 500 {object} api.Swagger500Resp "errCode为500 一般为服务器内部错误" +//// @Failure 400 {object} api.Swagger400Resp "errCode为400 一般为参数输入错误, token未带上等" +//// @Router /group/create_group [post] +////func CreateGroup(c *gin.Context) { +//// params := api.CreateGroupReq{} +//// if err := c.BindJSON(¶ms); err != nil { +//// log.NewError("0", "BindJSON failed ", err.Error()) +//// c.JSON(http.StatusBadRequest, gin.H{"errCode": 400, "errMsg": err.Error()}) +//// return +//// } +//// +//// if len(params.MemberList) > constant.MaxNotificationNum { +//// errMsg := params.OperationID + " too many members " + utils.Int32ToString(int32(len(params.MemberList))) +//// log.Error(params.OperationID, errMsg) +//// c.JSON(http.StatusOK, gin.H{"errCode": 400, "errMsg": errMsg}) +//// return +//// } +//// req := &rpc.CreateGroupReq{GroupInfo: &open_im_sdk.GroupInfo{}} +//// utils.CopyStructFields(req.GroupInfo, ¶ms) +//// +//// for _, v := range params.MemberList { +//// req.InitMemberList = append(req.InitMemberList, &rpc.GroupAddMemberInfo{UserID: v.UserID, RoleLevel: v.RoleLevel}) +//// } +//// +//// var ok bool +//// var errInfo string +//// ok, req.OpUserID, errInfo = token_verify.GetUserIDFromToken(c.Request.Header.Get("token"), req.OperationID) +//// if !ok { +//// errMsg := req.OperationID + " " + "GetUserIDFromToken failed " + errInfo + " token:" + c.Request.Header.Get("token") +//// log.NewError(req.OperationID, errMsg) +//// c.JSON(http.StatusBadRequest, gin.H{"errCode": 400, "errMsg": errMsg}) +//// return +//// } +//// +//// req.OwnerUserID = params.OwnerUserID +//// req.OperationID = params.OperationID +//// +//// log.NewInfo(req.OperationID, "CreateGroup args ", req.String()) +//// +//// etcdConn := getcdv3.GetDefaultConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImGroupName, req.OperationID) +//// if etcdConn == nil { +//// errMsg := req.OperationID + "getcdv3.GetDefaultConn == nil" +//// log.NewError(req.OperationID, errMsg) +//// c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": errMsg}) +//// return +//// } +//// client := rpc.NewGroupClient(etcdConn) +//// RpcResp, err := client.CreateGroup(context.Background(), req) +//// if err != nil { +//// log.NewError(req.OperationID, "CreateGroup failed ", err.Error(), req.String()) +//// c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": "call rpc server failed"}) +//// return +//// } +//// +//// resp := api.CreateGroupResp{CommResp: api.CommResp{ErrCode: RpcResp.ErrCode, ErrMsg: RpcResp.ErrMsg}} +//// if RpcResp.ErrCode == 0 { +//// utils.CopyStructFields(&resp.GroupInfo, RpcResp.GroupInfo) +//// resp.Data = jsonData.JsonDataOne(&resp.GroupInfo) +//// } +//// log.NewInfo(req.OperationID, "CreateGroup api return ", resp) +//// c.JSON(http.StatusOK, resp) +////} +// +//func NewCreateGroup(c *gin.Context) { +// common.ApiToRpc(c, &api.CreateGroupReq{}, &api.CreateGroupResp{}, +// config.Config.RpcRegisterName.OpenImGroupName, rpc.NewGroupClient, "CreateGroup") +//} +// +//func GetRecvGroupApplicationList(c *gin.Context) { +// params := api.GetGroupApplicationListReq{} +// if err := c.BindJSON(¶ms); err != nil { +// log.NewError("0", "BindJSON failed ", err.Error()) +// c.JSON(http.StatusBadRequest, gin.H{"errCode": 400, "errMsg": err.Error()}) +// return +// } +// req := &rpc.GetGroupApplicationListReq{} +// utils.CopyStructFields(req, params) +// var ok bool +// var errInfo string +// ok, req.OpUserID, errInfo = token_verify.GetUserIDFromToken(c.Request.Header.Get("token"), req.OperationID) +// if !ok { +// errMsg := req.OperationID + " " + "GetUserIDFromToken failed " + errInfo + " token:" + c.Request.Header.Get("token") +// log.NewError(req.OperationID, errMsg) +// c.JSON(http.StatusBadRequest, gin.H{"errCode": 400, "errMsg": errMsg}) +// return +// } +// log.NewInfo(req.OperationID, "GetGroupApplicationList args ", req.String()) +// +// etcdConn := rpc.GetDefaultConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImGroupName, req.OperationID) +// if etcdConn == nil { +// errMsg := req.OperationID + "getcdv3.GetDefaultConn == nil" +// log.NewError(req.OperationID, errMsg) +// c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": errMsg}) +// return +// } +// client := rpc.NewGroupClient(etcdConn) +// reply, err := client.GetGroupApplicationList(context.Background(), req) +// if err != nil { +// log.NewError(req.OperationID, "GetGroupApplicationList failed ", err.Error(), req.String()) +// c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": err.Error()}) +// return +// } +// +// resp := api.GetGroupApplicationListResp{CommResp: api.CommResp{ErrCode: reply.CommonResp.ErrCode, ErrMsg: reply.CommonResp.ErrMsg}, GroupRequestList: reply.GroupRequestList} +// resp.Data = jsonData.JsonDataList(resp.GroupRequestList) +// log.NewInfo(req.OperationID, "GetGroupApplicationList api return ", resp) +// c.JSON(http.StatusOK, resp) +//} +// +//func GetUserReqGroupApplicationList(c *gin.Context) { +// common.ApiToRpc(c, &api.GetUserReqGroupApplicationListReq{}, &api.GetUserRespGroupApplicationResp{}, +// config.Config.RpcRegisterName.OpenImGroupName, rpc.NewGroupClient, "GetGroupApplicationList") +//} +// +//func GetGroupsInfo(c *gin.Context) { +// params := api.GetGroupInfoReq{} +// if err := c.BindJSON(¶ms); err != nil { +// log.NewError("0", "BindJSON failed ", err.Error()) +// c.JSON(http.StatusBadRequest, gin.H{"errCode": 400, "errMsg": err.Error()}) +// return +// } +// req := &rpc.GetGroupsInfoReq{} +// utils.CopyStructFields(req, ¶ms) +// +// var ok bool +// var errInfo string +// ok, req.OpUserID, errInfo = token_verify.GetUserIDFromToken(c.Request.Header.Get("token"), req.OperationID) +// if !ok { +// errMsg := req.OperationID + " " + "GetUserIDFromToken failed " + errInfo + " token:" + c.Request.Header.Get("token") +// log.NewError(req.OperationID, errMsg) +// c.JSON(http.StatusBadRequest, gin.H{"errCode": 500, "errMsg": errMsg}) +// return +// } +// +// log.NewInfo(req.OperationID, "GetGroupsInfo args ", req.String()) +// etcdConn := rpc.GetDefaultConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImGroupName, req.OperationID) +// if etcdConn == nil { +// errMsg := req.OperationID + "getcdv3.GetDefaultConn == nil" +// log.NewError(req.OperationID, errMsg) +// c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": errMsg}) +// return +// } +// client := rpc.NewGroupClient(etcdConn) +// RpcResp, err := client.GetGroupsInfo(context.Background(), req) +// if err != nil { +// log.NewError(req.OperationID, "GetGroupsInfo failed ", err.Error(), req.String()) +// c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": "call rpc server failed"}) +// return +// } +// +// resp := api.GetGroupInfoResp{CommResp: api.CommResp{ErrCode: RpcResp.CommonResp.ErrCode, ErrMsg: RpcResp.CommonResp.ErrMsg}, GroupInfoList: RpcResp.GroupInfoList} +// resp.Data = jsonData.JsonDataList(resp.GroupInfoList) +// log.NewInfo(req.OperationID, "GetGroupsInfo api return ", resp) +// c.JSON(http.StatusOK, resp) +//} +// +////func transferGroupInfo(input []*open_im_sdk.GroupInfo) []*api.GroupInfoAlias { +//// var result []*api.GroupInfoAlias +//// for _, v := range input { +//// t := &api.GroupInfoAlias{} +//// utils.CopyStructFields(t, &v) +//// if v.NeedVerification != nil { +//// t.NeedVerification = v.NeedVerification.Value +//// } +//// result = append(result, t) +//// } +//// return result +////} +// +////process application +// +//// @Summary 处理加群消息 +//// @Description 处理加群消息 +//// @Tags 群组相关 +//// @ID ApplicationGroupResponse +//// @Accept json +//// @Param token header string true "im token" +//// @Param req body api.ApplicationGroupResponseReq true "groupID为要处理的群ID
fromUserID为要处理的用户ID
handleMsg为处理结果信息
handleResult为处理结果 1为同意加群 2为拒绝加群" +//// @Produce json +//// @Success 0 {object} api.ApplicationGroupResponseResp +//// @Failure 500 {object} api.Swagger500Resp "errCode为500 一般为服务器内部错误" +//// @Failure 400 {object} api.Swagger400Resp "errCode为400 一般为参数输入错误, token未带上等" +//// @Router /group/group_application_response [post] +//func ApplicationGroupResponse(c *gin.Context) { +// params := api.ApplicationGroupResponseReq{} +// if err := c.BindJSON(¶ms); err != nil { +// log.NewError("0", "BindJSON failed ", err.Error()) +// c.JSON(http.StatusBadRequest, gin.H{"errCode": 400, "errMsg": err.Error()}) +// return +// } +// req := &rpc.GroupApplicationResponseReq{} +// utils.CopyStructFields(req, ¶ms) +// +// var ok bool +// var errInfo string +// ok, req.OpUserID, errInfo = token_verify.GetUserIDFromToken(c.Request.Header.Get("token"), req.OperationID) +// if !ok { +// errMsg := req.OperationID + " " + "GetUserIDFromToken failed " + errInfo + " token:" + c.Request.Header.Get("token") +// log.NewError(req.OperationID, errMsg) +// c.JSON(http.StatusBadRequest, gin.H{"errCode": 500, "errMsg": errMsg}) +// return +// } +// +// log.NewInfo(req.OperationID, "ApplicationGroupResponse args ", req.String()) +// +// etcdConn := rpc.GetDefaultConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImGroupName, req.OperationID) +// if etcdConn == nil { +// errMsg := req.OperationID + "getcdv3.GetDefaultConn == nil" +// log.NewError(req.OperationID, errMsg) +// c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": errMsg}) +// return +// } +// client := rpc.NewGroupClient(etcdConn) +// reply, err := client.GroupApplicationResponse(context.Background(), req) +// if err != nil { +// log.NewError(req.OperationID, "GroupApplicationResponse failed ", req.String()) +// c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": err.Error()}) +// return +// } +// +// resp := api.ApplicationGroupResponseResp{CommResp: api.CommResp{ErrCode: reply.CommonResp.ErrCode, ErrMsg: reply.CommonResp.ErrMsg}} +// log.NewInfo(req.OperationID, "ApplicationGroupResponse api return ", resp) +// c.JSON(http.StatusOK, resp) +//} +// +//// @Summary 加入群聊 +//// @Description 加入群聊 +//// @Tags 群组相关 +//// @ID JoinGroup +//// @Accept json +//// @Param token header string true "im token" +//// @Param req body api.JoinGroupReq true "reqMessage为申请进群信息
groupID为申请的群ID" +//// @Produce json +//// @Success 0 {object} api.JoinGroupResp +//// @Failure 500 {object} api.Swagger500Resp "errCode为500 一般为服务器内部错误" +//// @Failure 400 {object} api.Swagger400Resp "errCode为400 一般为参数输入错误, token未带上等" +//// @Router /group/join_group [post] +//func JoinGroup(c *gin.Context) { +// params := api.JoinGroupReq{} +// if err := c.BindJSON(¶ms); err != nil { +// log.NewError("0", "BindJSON failed ", err.Error()) +// c.JSON(http.StatusBadRequest, gin.H{"errCode": 400, "errMsg": err.Error()}) +// return +// } +// req := &rpc.JoinGroupReq{} +// utils.CopyStructFields(req, params) +// +// var ok bool +// var errInfo string +// ok, req.OpUserID, errInfo = token_verify.GetUserIDFromToken(c.Request.Header.Get("token"), req.OperationID) +// if !ok { +// errMsg := req.OperationID + " " + "GetUserIDFromToken failed " + errInfo + " token:" + c.Request.Header.Get("token") +// log.NewError(req.OperationID, errMsg) +// c.JSON(http.StatusBadRequest, gin.H{"errCode": 500, "errMsg": errMsg}) +// return +// } +// +// log.NewInfo(req.OperationID, "JoinGroup args ", req.String()) +// etcdConn := rpc.GetDefaultConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImGroupName, req.OperationID) +// if etcdConn == nil { +// errMsg := req.OperationID + "getcdv3.GetDefaultConn == nil" +// log.NewError(req.OperationID, errMsg) +// c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": errMsg}) +// return +// } +// client := rpc.NewGroupClient(etcdConn) +// +// RpcResp, err := client.JoinGroup(context.Background(), req) +// if err != nil { +// log.NewError(req.OperationID, "JoinGroup failed ", err.Error(), req.String()) +// c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": "call rpc server failed"}) +// return +// } +// resp := api.CommResp{ErrCode: RpcResp.CommonResp.ErrCode, ErrMsg: RpcResp.CommonResp.ErrMsg} +// log.NewInfo(req.OperationID, "JoinGroup api return", RpcResp.String()) +// c.JSON(http.StatusOK, resp) +//} +// +//// @Summary 当前用户退出群聊 +//// @Description 当前用户退出群聊 +//// @Tags 群组相关 +//// @ID QuitGroup +//// @Accept json +//// @Param token header string true "im token" +//// @Param req body api.QuitGroupReq true "groupID为要退出的群ID" +//// @Produce json +//// @Success 0 {object} api.QuitGroupResp +//// @Failure 500 {object} api.Swagger500Resp "errCode为500 一般为服务器内部错误" +//// @Failure 400 {object} api.Swagger400Resp "errCode为400 一般为参数输入错误, token未带上等" +//// @Router /group/quit_group [post] +//func QuitGroup(c *gin.Context) { +// params := api.QuitGroupReq{} +// if err := c.BindJSON(¶ms); err != nil { +// log.NewError("0", "BindJSON failed ", err.Error()) +// c.JSON(http.StatusBadRequest, gin.H{"errCode": 400, "errMsg": err.Error()}) +// return +// } +// req := &rpc.QuitGroupReq{} +// utils.CopyStructFields(req, ¶ms) +// +// var ok bool +// var errInfo string +// ok, req.OpUserID, errInfo = token_verify.GetUserIDFromToken(c.Request.Header.Get("token"), req.OperationID) +// if !ok { +// errMsg := req.OperationID + " " + "GetUserIDFromToken failed " + errInfo + " token:" + c.Request.Header.Get("token") +// log.NewError(req.OperationID, errMsg) +// c.JSON(http.StatusBadRequest, gin.H{"errCode": 500, "errMsg": errMsg}) +// return +// } +// +// log.NewInfo(req.OperationID, "QuitGroup args ", req.String()) +// +// etcdConn := rpc.GetDefaultConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImGroupName, req.OperationID) +// if etcdConn == nil { +// errMsg := req.OperationID + "getcdv3.GetDefaultConn == nil" +// log.NewError(req.OperationID, errMsg) +// c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": errMsg}) +// return +// } +// client := rpc.NewGroupClient(etcdConn) +// RpcResp, err := client.QuitGroup(context.Background(), req) +// if err != nil { +// log.NewError(req.OperationID, "call quit group rpc server failed,err=%s", err.Error()) +// c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": "call rpc server failed"}) +// return +// } +// resp := api.CommResp{ErrCode: RpcResp.CommonResp.ErrCode, ErrMsg: RpcResp.CommonResp.ErrMsg} +// log.NewInfo(req.OperationID, "QuitGroup api return", RpcResp.String()) +// c.JSON(http.StatusOK, resp) +//} +// +//// @Summary 设置群信息 +//// @Description 设置群信息 +//// @Tags 群组相关 +//// @ID SetGroupInfo +//// @Accept json +//// @Param token header string true "im token" +//// @Param req body api.SetGroupInfoReq true "groupID为要修改的群ID
groupName为新的群名称
notification为群介绍
introduction为群公告
needVerification为加群验证 0为申请需要同意 邀请直接进 1为所有人进群需要验证,除了群主管理员邀请进群 2为直接进群" +//// @Produce json +//// @Success 0 {object} api.SetGroupInfoResp +//// @Failure 500 {object} api.Swagger500Resp "errCode为500 一般为服务器内部错误" +//// @Failure 400 {object} api.Swagger400Resp "errCode为400 一般为参数输入错误, token未带上等" +//// @Router /group/set_group_info [post] +////func SetGroupInfo(c *gin.Context) { +//// params := api.SetGroupInfoReq{} +//// if err := c.BindJSON(¶ms); err != nil { +//// log.NewError("0", "BindJSON failed ", err.Error()) +//// c.JSON(http.StatusBadRequest, gin.H{"errCode": 400, "errMsg": err.Error()}) +//// return +//// } +//// req := &rpc.SetGroupInfoReq{GroupInfoForSet: &open_im_sdk.GroupInfoForSet{}} +//// utils.CopyStructFields(req.GroupInfoForSet, ¶ms) +//// req.OperationID = params.OperationID +//// argsHandle(¶ms, req) +//// var ok bool +//// var errInfo string +//// ok, req.OpUserID, errInfo = token_verify.GetUserIDFromToken(c.Request.Header.Get("token"), req.OperationID) +//// if !ok { +//// errMsg := req.OperationID + " " + "GetUserIDFromToken failed " + errInfo + " token:" + c.Request.Header.Get("token") +//// log.NewError(req.OperationID, errMsg) +//// c.JSON(http.StatusBadRequest, gin.H{"errCode": 500, "errMsg": errMsg}) +//// return +//// } +//// +//// log.NewInfo(req.OperationID, "SetGroupInfo args ", req.String()) +//// +//// etcdConn := getcdv3.GetDefaultConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImGroupName, req.OperationID) +//// if etcdConn == nil { +//// errMsg := req.OperationID + "getcdv3.GetDefaultConn == nil" +//// log.NewError(req.OperationID, errMsg) +//// c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": errMsg}) +//// return +//// } +//// client := rpc.NewGroupClient(etcdConn) +//// RpcResp, err := client.SetGroupInfo(context.Background(), req) +//// if err != nil { +//// log.NewError(req.OperationID, "SetGroupInfo failed ", err.Error(), req.String()) +//// c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": "call rpc server failed"}) +//// return +//// } +//// resp := api.SetGroupInfoResp{CommResp: api.CommResp{ErrCode: RpcResp.CommonResp.ErrCode, ErrMsg: RpcResp.CommonResp.ErrMsg}} +//// c.JSON(http.StatusOK, resp) +//// log.NewInfo(req.OperationID, "SetGroupInfo api return ", resp) +////} +// +//func NewSetGroupInfo(c *gin.Context) { +// common.ApiToRpc(c, &api.SetGroupInfoReq{}, &api.SetGroupInfoResp{}, +// config.Config.RpcRegisterName.OpenImGroupName, rpc.NewGroupClient, "SetGroupInfo") +//} +// +//func argsHandle(params *api.SetGroupInfoReq, req *rpc.SetGroupInfoReq) { +// if params.NeedVerification != nil { +// req.GroupInfoForSet.NeedVerification = &wrappers.Int32Value{Value: *params.NeedVerification} +// log.NewInfo(req.OperationID, "NeedVerification ", req.GroupInfoForSet.NeedVerification) +// } +// if params.LookMemberInfo != nil { +// req.GroupInfoForSet.LookMemberInfo = &wrappers.Int32Value{Value: *params.LookMemberInfo} +// log.NewInfo(req.OperationID, "LookMemberInfo ", req.GroupInfoForSet.LookMemberInfo) +// } +// if params.ApplyMemberFriend != nil { +// req.GroupInfoForSet.ApplyMemberFriend = &wrappers.Int32Value{Value: *params.ApplyMemberFriend} +// log.NewInfo(req.OperationID, "ApplyMemberFriend ", req.GroupInfoForSet.ApplyMemberFriend) +// } +//} +// +//// @Summary 转让群主 +//// @Description 转让群主 +//// @Tags 群组相关 +//// @ID TransferGroupOwner +//// @Accept json +//// @Param token header string true "im token" +//// @Param req body api.TransferGroupOwnerReq true "GroupID为要操作的群ID
oldOwnerUserID为老群主ID
newOwnerUserID为新群主ID" +//// @Produce json +//// @Success 0 {object} api.TransferGroupOwnerResp +//// @Failure 500 {object} api.Swagger500Resp "errCode为500 一般为服务器内部错误" +//// @Failure 400 {object} api.Swagger400Resp "errCode为400 一般为参数输入错误, token未带上等" +//// @Router /group/transfer_group [post] +//func TransferGroupOwner(c *gin.Context) { +// params := api.TransferGroupOwnerReq{} +// if err := c.BindJSON(¶ms); err != nil { +// log.NewError("0", "BindJSON failed ", err.Error()) +// c.JSON(http.StatusBadRequest, gin.H{"errCode": 400, "errMsg": err.Error()}) +// return +// } +// req := &rpc.TransferGroupOwnerReq{} +// utils.CopyStructFields(req, ¶ms) +// +// var ok bool +// var errInfo string +// ok, req.OpUserID, errInfo = token_verify.GetUserIDFromToken(c.Request.Header.Get("token"), req.OperationID) +// if !ok { +// errMsg := req.OperationID + " " + "GetUserIDFromToken failed " + errInfo + " token:" + c.Request.Header.Get("token") +// log.NewError(req.OperationID, errMsg) +// c.JSON(http.StatusBadRequest, gin.H{"errCode": 500, "errMsg": errMsg}) +// return +// } +// +// log.NewInfo(req.OperationID, "TransferGroupOwner args ", req.String()) +// +// etcdConn := rpc.GetDefaultConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImGroupName, req.OperationID) +// if etcdConn == nil { +// errMsg := req.OperationID + "getcdv3.GetDefaultConn == nil" +// log.NewError(req.OperationID, errMsg) +// c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": errMsg}) +// return +// } +// client := rpc.NewGroupClient(etcdConn) +// reply, err := client.TransferGroupOwner(context.Background(), req) +// if err != nil { +// log.NewError(req.OperationID, "TransferGroupOwner failed ", req.String()) +// c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": err.Error()}) +// return +// } +// +// resp := api.TransferGroupOwnerResp{CommResp: api.CommResp{ErrCode: reply.CommonResp.ErrCode, ErrMsg: reply.CommonResp.ErrMsg}} +// log.NewInfo(req.OperationID, "TransferGroupOwner api return ", resp) +// c.JSON(http.StatusOK, resp) +//} +// +//// @Summary 解散群组 +//// @Description 解散群组 +//// @Tags 群组相关 +//// @ID DismissGroup +//// @Accept json +//// @Param token header string true "im token" +//// @Param req body api.DismissGroupReq true "groupID为要解散的群组ID" +//// @Produce json +//// @Success 0 {object} api.DismissGroupResp +//// @Failure 500 {object} api.Swagger500Resp "errCode为500 一般为服务器内部错误" +//// @Failure 400 {object} api.Swagger400Resp "errCode为400 一般为参数输入错误, token未带上等" +//// @Router /group/dismiss_group [post] +//func DismissGroup(c *gin.Context) { +// params := api.DismissGroupReq{} +// if err := c.BindJSON(¶ms); err != nil { +// log.NewError("0", "BindJSON failed ", err.Error()) +// c.JSON(http.StatusBadRequest, gin.H{"errCode": 400, "errMsg": err.Error()}) +// return +// } +// req := &rpc.DismissGroupReq{} +// utils.CopyStructFields(req, ¶ms) +// +// var ok bool +// var errInfo string +// ok, req.OpUserID, errInfo = token_verify.GetUserIDFromToken(c.Request.Header.Get("token"), req.OperationID) +// if !ok { +// errMsg := req.OperationID + " " + "GetUserIDFromToken failed " + errInfo + " token:" + c.Request.Header.Get("token") +// log.NewError(req.OperationID, errMsg) +// c.JSON(http.StatusBadRequest, gin.H{"errCode": 500, "errMsg": errMsg}) +// return +// } +// +// log.NewInfo(req.OperationID, utils.GetSelfFuncName(), " args ", req.String()) +// +// etcdConn := rpc.GetDefaultConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImGroupName, req.OperationID) +// if etcdConn == nil { +// errMsg := req.OperationID + "getcdv3.GetDefaultConn == nil" +// log.NewError(req.OperationID, errMsg) +// c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": errMsg}) +// return +// } +// client := rpc.NewGroupClient(etcdConn) +// reply, err := client.DismissGroup(context.Background(), req) +// if err != nil { +// log.NewError(req.OperationID, utils.GetSelfFuncName(), " failed ", req.String()) +// c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": err.Error()}) +// return +// } +// +// resp := api.DismissGroupResp{CommResp: api.CommResp{ErrCode: reply.CommonResp.ErrCode, ErrMsg: reply.CommonResp.ErrMsg}} +// log.NewInfo(req.OperationID, utils.GetSelfFuncName(), " api return ", resp) +// c.JSON(http.StatusOK, resp) +//} +// +//// @Summary 禁言群成员 +//// @Description 禁言群成员 +//// @Tags 群组相关 +//// @ID MuteGroupMember +//// @Accept json +//// @Param token header string true "im token" +//// @Param req body api.MuteGroupMemberReq true "groupID为群组ID
userID为要禁言的用户ID
mutedSeconds为禁言秒数" +//// @Produce json +//// @Success 0 {object} api.DismissGroupResp +//// @Failure 500 {object} api.Swagger500Resp "errCode为500 一般为服务器内部错误" +//// @Failure 400 {object} api.Swagger400Resp "errCode为400 一般为参数输入错误, token未带上等" +//// @Router /group/mute_group_member [post] +//func MuteGroupMember(c *gin.Context) { +// params := api.MuteGroupMemberReq{} +// if err := c.BindJSON(¶ms); err != nil { +// log.NewError("0", "BindJSON failed ", err.Error()) +// c.JSON(http.StatusBadRequest, gin.H{"errCode": 400, "errMsg": err.Error()}) +// return +// } +// req := &rpc.MuteGroupMemberReq{} +// utils.CopyStructFields(req, ¶ms) +// +// var ok bool +// var errInfo string +// ok, req.OpUserID, errInfo = token_verify.GetUserIDFromToken(c.Request.Header.Get("token"), req.OperationID) +// if !ok { +// errMsg := req.OperationID + " " + "GetUserIDFromToken failed " + errInfo + " token:" + c.Request.Header.Get("token") +// log.NewError(req.OperationID, errMsg) +// c.JSON(http.StatusBadRequest, gin.H{"errCode": 500, "errMsg": errMsg}) +// return +// } +// +// log.NewInfo(req.OperationID, utils.GetSelfFuncName(), " api args ", req.String()) +// +// etcdConn := rpc.GetDefaultConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImGroupName, req.OperationID) +// if etcdConn == nil { +// errMsg := req.OperationID + "getcdv3.GetDefaultConn == nil" +// log.NewError(req.OperationID, errMsg) +// c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": errMsg}) +// return +// } +// client := rpc.NewGroupClient(etcdConn) +// reply, err := client.MuteGroupMember(context.Background(), req) +// if err != nil { +// log.NewError(req.OperationID, utils.GetSelfFuncName(), " failed ", req.String()) +// c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": err.Error()}) +// return +// } +// +// resp := api.MuteGroupMemberResp{CommResp: api.CommResp{ErrCode: reply.CommonResp.ErrCode, ErrMsg: reply.CommonResp.ErrMsg}} +// log.NewInfo(req.OperationID, utils.GetSelfFuncName(), " api return ", resp) +// c.JSON(http.StatusOK, resp) +//} +// +//// @Summary 取消禁言群成员 +//// @Description 取消禁言群成员 +//// @Tags 群组相关 +//// @ID CancelMuteGroupMember +//// @Accept json +//// @Param token header string true "im token" +//// @Param req body api.CancelMuteGroupMemberReq true "groupID为群组ID
userID为要取消禁言的用户ID" +//// @Produce json +//// @Success 0 {object} api.CancelMuteGroupMemberResp +//// @Failure 500 {object} api.Swagger500Resp "errCode为500 一般为服务器内部错误" +//// @Failure 400 {object} api.Swagger400Resp "errCode为400 一般为参数输入错误, token未带上等" +//// @Router /group/cancel_mute_group_member [post] +//func CancelMuteGroupMember(c *gin.Context) { +// nCtx := tracelog.NewCtx(c, utils.GetSelfFuncName()) +// defer log.ShowLog(c) +// +// params := api.CancelMuteGroupMemberReq{} +// if err := c.BindJSON(¶ms); err != nil { +// tracelog.WriteErrorResponse(nCtx, "BindJSON", err) +// return +// } +// tracelog.SetCtxInfo(nCtx, "BindJSON", nil, "params", params) +// req := &rpc.CancelMuteGroupMemberReq{} +// utils.CopyStructFields(req, ¶ms) +// +// //var err error +// //if err, req.OpUserID, _ = token_verify.ParseUserIDFromToken(c.Request.Header.Get("token"), req.OperationID); err != nil { +// // tracelog.WriteErrorResponse(nCtx, "ParseUserIDFromToken", err) +// // return +// //} +// tracelog.SetCtxInfo(nCtx, "ParseUserIDFromToken", nil, "token", c.Request.Header.Get("token"), "OpUserID", req.OpUserID) +// +// etcdConn := rpc.GetDefaultConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImGroupName, req.OperationID) +// +// client := rpc.NewGroupClient(etcdConn) +// reply, err := client.CancelMuteGroupMember(nCtx, req) +// if err != nil { +// tracelog.WriteErrorResponse(nCtx, "CancelMuteGroupMember", err) +// return +// } +// +// tracelog.SetCtxInfo(nCtx, "CancelMuteGroupMember", nil, "req", req.String(), "resp", reply.String()) +// resp := api.CancelMuteGroupMemberResp{CommResp: api.CommResp{ErrCode: reply.CommonResp.ErrCode, ErrMsg: reply.CommonResp.ErrMsg}} +// c.JSON(http.StatusOK, resp) +//} +// +//// @Summary 禁言群组 +//// @Description 禁言群组 +//// @Tags 群组相关 +//// @ID MuteGroup +//// @Accept json +//// @Param token header string true "im token" +//// @Param req body api.MuteGroupReq true "groupID为群组ID" +//// @Produce json +//// @Success 0 {object} api.MuteGroupResp +//// @Failure 500 {object} api.MuteGroupResp "errCode为500 一般为服务器内部错误" +//// @Failure 400 {object} api.MuteGroupResp "errCode为400 一般为参数输入错误, token未带上等" +//// @Router /group/mute_group [post] +//func MuteGroup(c *gin.Context) { +// params := api.MuteGroupReq{} +// if err := c.BindJSON(¶ms); err != nil { +// log.NewError("0", "BindJSON failed ", err.Error()) +// c.JSON(http.StatusBadRequest, gin.H{"errCode": 400, "errMsg": err.Error()}) +// return +// } +// req := &rpc.MuteGroupReq{} +// utils.CopyStructFields(req, ¶ms) +// // var ok bool // var errInfo string // ok, req.OpUserID, errInfo = token_verify.GetUserIDFromToken(c.Request.Header.Get("token"), req.OperationID) @@ -414,12 +1046,9 @@ func InviteUserToGroup(c *gin.Context) { // return // } // -// req.OwnerUserID = params.OwnerUserID -// req.OperationID = params.OperationID +// log.NewInfo(req.OperationID, utils.GetSelfFuncName(), " api args ", req.String()) // -// log.NewInfo(req.OperationID, "CreateGroup args ", req.String()) -// -// etcdConn := getcdv3.GetDefaultConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImGroupName, req.OperationID) +// etcdConn := rpc.GetDefaultConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImGroupName, req.OperationID) // if etcdConn == nil { // errMsg := req.OperationID + "getcdv3.GetDefaultConn == nil" // log.NewError(req.OperationID, errMsg) @@ -427,349 +1056,40 @@ func InviteUserToGroup(c *gin.Context) { // return // } // client := rpc.NewGroupClient(etcdConn) -// RpcResp, err := client.CreateGroup(context.Background(), req) +// reply, err := client.MuteGroup(context.Background(), req) // if err != nil { -// log.NewError(req.OperationID, "CreateGroup failed ", err.Error(), req.String()) -// c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": "call rpc server failed"}) +// log.NewError(req.OperationID, utils.GetSelfFuncName(), " failed ", req.String()) +// c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": err.Error()}) // return // } // -// resp := api.CreateGroupResp{CommResp: api.CommResp{ErrCode: RpcResp.ErrCode, ErrMsg: RpcResp.ErrMsg}} -// if RpcResp.ErrCode == 0 { -// utils.CopyStructFields(&resp.GroupInfo, RpcResp.GroupInfo) -// resp.Data = jsonData.JsonDataOne(&resp.GroupInfo) -// } -// log.NewInfo(req.OperationID, "CreateGroup api return ", resp) +// resp := api.MuteGroupResp{CommResp: api.CommResp{ErrCode: reply.CommonResp.ErrCode, ErrMsg: reply.CommonResp.ErrMsg}} +// log.NewInfo(req.OperationID, utils.GetSelfFuncName(), " api return ", resp) // c.JSON(http.StatusOK, resp) //} - -func NewCreateGroup(c *gin.Context) { - common.ApiToRpc(c, &api.CreateGroupReq{}, &api.CreateGroupResp{}, - config.Config.RpcRegisterName.OpenImGroupName, rpc.NewGroupClient, "CreateGroup") -} - -// @Summary 获取用户收到的加群信息列表 -// @Description 获取用户收到的加群信息列表 -// @Tags 群组相关 -// @ID GetRecvGroupApplicationList -// @Accept json -// @Param token header string true "im token" -// @Param req body api.GetGroupApplicationListReq true "fromUserID为要获取的用户ID" -// @Produce json -// @Success 0 {object} api.GetGroupApplicationListResp{data=[]open_im_sdk.GroupRequest} -// @Failure 500 {object} api.Swagger500Resp "errCode为500 一般为服务器内部错误" -// @Failure 400 {object} api.Swagger400Resp "errCode为400 一般为参数输入错误, token未带上等" -// @Router /group/get_recv_group_applicationList [post] -func GetRecvGroupApplicationList(c *gin.Context) { - params := api.GetGroupApplicationListReq{} - if err := c.BindJSON(¶ms); err != nil { - log.NewError("0", "BindJSON failed ", err.Error()) - c.JSON(http.StatusBadRequest, gin.H{"errCode": 400, "errMsg": err.Error()}) - return - } - req := &rpc.GetGroupApplicationListReq{} - utils.CopyStructFields(req, params) - var ok bool - var errInfo string - ok, req.OpUserID, errInfo = token_verify.GetUserIDFromToken(c.Request.Header.Get("token"), req.OperationID) - if !ok { - errMsg := req.OperationID + " " + "GetUserIDFromToken failed " + errInfo + " token:" + c.Request.Header.Get("token") - log.NewError(req.OperationID, errMsg) - c.JSON(http.StatusBadRequest, gin.H{"errCode": 400, "errMsg": errMsg}) - return - } - log.NewInfo(req.OperationID, "GetGroupApplicationList args ", req.String()) - - etcdConn := rpc.GetDefaultConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImGroupName, req.OperationID) - if etcdConn == nil { - errMsg := req.OperationID + "getcdv3.GetDefaultConn == nil" - log.NewError(req.OperationID, errMsg) - c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": errMsg}) - return - } - client := rpc.NewGroupClient(etcdConn) - reply, err := client.GetGroupApplicationList(context.Background(), req) - if err != nil { - log.NewError(req.OperationID, "GetGroupApplicationList failed ", err.Error(), req.String()) - c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": err.Error()}) - return - } - - resp := api.GetGroupApplicationListResp{CommResp: api.CommResp{ErrCode: reply.CommonResp.ErrCode, ErrMsg: reply.CommonResp.ErrMsg}, GroupRequestList: reply.GroupRequestList} - resp.Data = jsonData.JsonDataList(resp.GroupRequestList) - log.NewInfo(req.OperationID, "GetGroupApplicationList api return ", resp) - c.JSON(http.StatusOK, resp) -} - -// @Summary 获取用户加群申请列表 -// @Description 获取用户加群申请列表 -// @Tags 群组相关 -// @ID GetUserReqGroupApplicationList -// @Accept json -// @Param token header string true "im token" -// @Param req body api.GetUserReqGroupApplicationListReq true "userID为要获取的用户ID" -// @Produce json -// @Success 0 {object} api.GetGroupApplicationListResp{data=[]open_im_sdk.GroupRequest} -// @Failure 500 {object} api.Swagger500Resp "errCode为500 一般为服务器内部错误" -// @Failure 400 {object} api.Swagger400Resp "errCode为400 一般为参数输入错误, token未带上等" -// @Router /group/get_user_req_group_applicationList [post] -func GetUserReqGroupApplicationList(c *gin.Context) { - common.ApiToRpc(c, &api.GetUserReqGroupApplicationListReq{}, &api.GetUserRespGroupApplicationResp{}, - config.Config.RpcRegisterName.OpenImGroupName, rpc.NewGroupClient, "GetGroupApplicationList") -} - -// @Summary 通过群ID列表获取群信息 -// @Description 通过群ID列表获取群信息 -// @Tags 群组相关 -// @ID GetGroupsInfo -// @Accept json -// @Param token header string true "im token" -// @Param req body api.GetGroupInfoReq true "groupIDList为群ID列表" -// @Produce json -// @Success 0 {object} api.GetGroupInfoResp -// @Failure 500 {object} api.Swagger500Resp "errCode为500 一般为服务器内部错误" -// @Failure 400 {object} api.Swagger400Resp "errCode为400 一般为参数输入错误, token未带上等" -// @Router /group/get_groups_info [post] -func GetGroupsInfo(c *gin.Context) { - params := api.GetGroupInfoReq{} - if err := c.BindJSON(¶ms); err != nil { - log.NewError("0", "BindJSON failed ", err.Error()) - c.JSON(http.StatusBadRequest, gin.H{"errCode": 400, "errMsg": err.Error()}) - return - } - req := &rpc.GetGroupsInfoReq{} - utils.CopyStructFields(req, ¶ms) - - var ok bool - var errInfo string - ok, req.OpUserID, errInfo = token_verify.GetUserIDFromToken(c.Request.Header.Get("token"), req.OperationID) - if !ok { - errMsg := req.OperationID + " " + "GetUserIDFromToken failed " + errInfo + " token:" + c.Request.Header.Get("token") - log.NewError(req.OperationID, errMsg) - c.JSON(http.StatusBadRequest, gin.H{"errCode": 500, "errMsg": errMsg}) - return - } - - log.NewInfo(req.OperationID, "GetGroupsInfo args ", req.String()) - etcdConn := rpc.GetDefaultConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImGroupName, req.OperationID) - if etcdConn == nil { - errMsg := req.OperationID + "getcdv3.GetDefaultConn == nil" - log.NewError(req.OperationID, errMsg) - c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": errMsg}) - return - } - client := rpc.NewGroupClient(etcdConn) - RpcResp, err := client.GetGroupsInfo(context.Background(), req) - if err != nil { - log.NewError(req.OperationID, "GetGroupsInfo failed ", err.Error(), req.String()) - c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": "call rpc server failed"}) - return - } - - resp := api.GetGroupInfoResp{CommResp: api.CommResp{ErrCode: RpcResp.CommonResp.ErrCode, ErrMsg: RpcResp.CommonResp.ErrMsg}, GroupInfoList: RpcResp.GroupInfoList} - resp.Data = jsonData.JsonDataList(resp.GroupInfoList) - log.NewInfo(req.OperationID, "GetGroupsInfo api return ", resp) - c.JSON(http.StatusOK, resp) -} - -//func transferGroupInfo(input []*open_im_sdk.GroupInfo) []*api.GroupInfoAlias { -// var result []*api.GroupInfoAlias -// for _, v := range input { -// t := &api.GroupInfoAlias{} -// utils.CopyStructFields(t, &v) -// if v.NeedVerification != nil { -// t.NeedVerification = v.NeedVerification.Value -// } -// result = append(result, t) -// } -// return result -//} - -//process application - -// @Summary 处理加群消息 -// @Description 处理加群消息 -// @Tags 群组相关 -// @ID ApplicationGroupResponse -// @Accept json -// @Param token header string true "im token" -// @Param req body api.ApplicationGroupResponseReq true "groupID为要处理的群ID
fromUserID为要处理的用户ID
handleMsg为处理结果信息
handleResult为处理结果 1为同意加群 2为拒绝加群" -// @Produce json -// @Success 0 {object} api.ApplicationGroupResponseResp -// @Failure 500 {object} api.Swagger500Resp "errCode为500 一般为服务器内部错误" -// @Failure 400 {object} api.Swagger400Resp "errCode为400 一般为参数输入错误, token未带上等" -// @Router /group/group_application_response [post] -func ApplicationGroupResponse(c *gin.Context) { - params := api.ApplicationGroupResponseReq{} - if err := c.BindJSON(¶ms); err != nil { - log.NewError("0", "BindJSON failed ", err.Error()) - c.JSON(http.StatusBadRequest, gin.H{"errCode": 400, "errMsg": err.Error()}) - return - } - req := &rpc.GroupApplicationResponseReq{} - utils.CopyStructFields(req, ¶ms) - - var ok bool - var errInfo string - ok, req.OpUserID, errInfo = token_verify.GetUserIDFromToken(c.Request.Header.Get("token"), req.OperationID) - if !ok { - errMsg := req.OperationID + " " + "GetUserIDFromToken failed " + errInfo + " token:" + c.Request.Header.Get("token") - log.NewError(req.OperationID, errMsg) - c.JSON(http.StatusBadRequest, gin.H{"errCode": 500, "errMsg": errMsg}) - return - } - - log.NewInfo(req.OperationID, "ApplicationGroupResponse args ", req.String()) - - etcdConn := rpc.GetDefaultConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImGroupName, req.OperationID) - if etcdConn == nil { - errMsg := req.OperationID + "getcdv3.GetDefaultConn == nil" - log.NewError(req.OperationID, errMsg) - c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": errMsg}) - return - } - client := rpc.NewGroupClient(etcdConn) - reply, err := client.GroupApplicationResponse(context.Background(), req) - if err != nil { - log.NewError(req.OperationID, "GroupApplicationResponse failed ", req.String()) - c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": err.Error()}) - return - } - - resp := api.ApplicationGroupResponseResp{CommResp: api.CommResp{ErrCode: reply.CommonResp.ErrCode, ErrMsg: reply.CommonResp.ErrMsg}} - log.NewInfo(req.OperationID, "ApplicationGroupResponse api return ", resp) - c.JSON(http.StatusOK, resp) -} - -// @Summary 加入群聊 -// @Description 加入群聊 -// @Tags 群组相关 -// @ID JoinGroup -// @Accept json -// @Param token header string true "im token" -// @Param req body api.JoinGroupReq true "reqMessage为申请进群信息
groupID为申请的群ID" -// @Produce json -// @Success 0 {object} api.JoinGroupResp -// @Failure 500 {object} api.Swagger500Resp "errCode为500 一般为服务器内部错误" -// @Failure 400 {object} api.Swagger400Resp "errCode为400 一般为参数输入错误, token未带上等" -// @Router /group/join_group [post] -func JoinGroup(c *gin.Context) { - params := api.JoinGroupReq{} - if err := c.BindJSON(¶ms); err != nil { - log.NewError("0", "BindJSON failed ", err.Error()) - c.JSON(http.StatusBadRequest, gin.H{"errCode": 400, "errMsg": err.Error()}) - return - } - req := &rpc.JoinGroupReq{} - utils.CopyStructFields(req, params) - - var ok bool - var errInfo string - ok, req.OpUserID, errInfo = token_verify.GetUserIDFromToken(c.Request.Header.Get("token"), req.OperationID) - if !ok { - errMsg := req.OperationID + " " + "GetUserIDFromToken failed " + errInfo + " token:" + c.Request.Header.Get("token") - log.NewError(req.OperationID, errMsg) - c.JSON(http.StatusBadRequest, gin.H{"errCode": 500, "errMsg": errMsg}) - return - } - - log.NewInfo(req.OperationID, "JoinGroup args ", req.String()) - etcdConn := rpc.GetDefaultConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImGroupName, req.OperationID) - if etcdConn == nil { - errMsg := req.OperationID + "getcdv3.GetDefaultConn == nil" - log.NewError(req.OperationID, errMsg) - c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": errMsg}) - return - } - client := rpc.NewGroupClient(etcdConn) - - RpcResp, err := client.JoinGroup(context.Background(), req) - if err != nil { - log.NewError(req.OperationID, "JoinGroup failed ", err.Error(), req.String()) - c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": "call rpc server failed"}) - return - } - resp := api.CommResp{ErrCode: RpcResp.CommonResp.ErrCode, ErrMsg: RpcResp.CommonResp.ErrMsg} - log.NewInfo(req.OperationID, "JoinGroup api return", RpcResp.String()) - c.JSON(http.StatusOK, resp) -} - -// @Summary 当前用户退出群聊 -// @Description 当前用户退出群聊 -// @Tags 群组相关 -// @ID QuitGroup -// @Accept json -// @Param token header string true "im token" -// @Param req body api.QuitGroupReq true "groupID为要退出的群ID" -// @Produce json -// @Success 0 {object} api.QuitGroupResp -// @Failure 500 {object} api.Swagger500Resp "errCode为500 一般为服务器内部错误" -// @Failure 400 {object} api.Swagger400Resp "errCode为400 一般为参数输入错误, token未带上等" -// @Router /group/quit_group [post] -func QuitGroup(c *gin.Context) { - params := api.QuitGroupReq{} - if err := c.BindJSON(¶ms); err != nil { - log.NewError("0", "BindJSON failed ", err.Error()) - c.JSON(http.StatusBadRequest, gin.H{"errCode": 400, "errMsg": err.Error()}) - return - } - req := &rpc.QuitGroupReq{} - utils.CopyStructFields(req, ¶ms) - - var ok bool - var errInfo string - ok, req.OpUserID, errInfo = token_verify.GetUserIDFromToken(c.Request.Header.Get("token"), req.OperationID) - if !ok { - errMsg := req.OperationID + " " + "GetUserIDFromToken failed " + errInfo + " token:" + c.Request.Header.Get("token") - log.NewError(req.OperationID, errMsg) - c.JSON(http.StatusBadRequest, gin.H{"errCode": 500, "errMsg": errMsg}) - return - } - - log.NewInfo(req.OperationID, "QuitGroup args ", req.String()) - - etcdConn := rpc.GetDefaultConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImGroupName, req.OperationID) - if etcdConn == nil { - errMsg := req.OperationID + "getcdv3.GetDefaultConn == nil" - log.NewError(req.OperationID, errMsg) - c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": errMsg}) - return - } - client := rpc.NewGroupClient(etcdConn) - RpcResp, err := client.QuitGroup(context.Background(), req) - if err != nil { - log.NewError(req.OperationID, "call quit group rpc server failed,err=%s", err.Error()) - c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": "call rpc server failed"}) - return - } - resp := api.CommResp{ErrCode: RpcResp.CommonResp.ErrCode, ErrMsg: RpcResp.CommonResp.ErrMsg} - log.NewInfo(req.OperationID, "QuitGroup api return", RpcResp.String()) - c.JSON(http.StatusOK, resp) -} - -// @Summary 设置群信息 -// @Description 设置群信息 -// @Tags 群组相关 -// @ID SetGroupInfo -// @Accept json -// @Param token header string true "im token" -// @Param req body api.SetGroupInfoReq true "groupID为要修改的群ID
groupName为新的群名称
notification为群介绍
introduction为群公告
needVerification为加群验证 0为申请需要同意 邀请直接进 1为所有人进群需要验证,除了群主管理员邀请进群 2为直接进群" -// @Produce json -// @Success 0 {object} api.SetGroupInfoResp -// @Failure 500 {object} api.Swagger500Resp "errCode为500 一般为服务器内部错误" -// @Failure 400 {object} api.Swagger400Resp "errCode为400 一般为参数输入错误, token未带上等" -// @Router /group/set_group_info [post] -//func SetGroupInfo(c *gin.Context) { -// params := api.SetGroupInfoReq{} +// +//// @Summary 取消禁言群组 +//// @Description 取消禁言群组 +//// @Tags 群组相关 +//// @ID CancelMuteGroup +//// @Accept json +//// @Param token header string true "im token" +//// @Param req body api.CancelMuteGroupReq true "groupID为群组ID" +//// @Produce json +//// @Success 0 {object} api.CancelMuteGroupResp +//// @Failure 500 {object} api.Swagger500Resp "errCode为500 一般为服务器内部错误" +//// @Failure 400 {object} api.Swagger400Resp "errCode为400 一般为参数输入错误, token未带上等" +//// @Router /group/cancel_mute_group [post] +//func CancelMuteGroup(c *gin.Context) { +// params := api.CancelMuteGroupReq{} // if err := c.BindJSON(¶ms); err != nil { // log.NewError("0", "BindJSON failed ", err.Error()) // c.JSON(http.StatusBadRequest, gin.H{"errCode": 400, "errMsg": err.Error()}) // return // } -// req := &rpc.SetGroupInfoReq{GroupInfoForSet: &open_im_sdk.GroupInfoForSet{}} -// utils.CopyStructFields(req.GroupInfoForSet, ¶ms) -// req.OperationID = params.OperationID -// argsHandle(¶ms, req) +// req := &rpc.CancelMuteGroupReq{} +// utils.CopyStructFields(req, ¶ms) +// // var ok bool // var errInfo string // ok, req.OpUserID, errInfo = token_verify.GetUserIDFromToken(c.Request.Header.Get("token"), req.OperationID) @@ -780,9 +1100,9 @@ func QuitGroup(c *gin.Context) { // return // } // -// log.NewInfo(req.OperationID, "SetGroupInfo args ", req.String()) +// log.NewInfo(req.OperationID, utils.GetSelfFuncName(), " api args ", req.String()) // -// etcdConn := getcdv3.GetDefaultConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImGroupName, req.OperationID) +// etcdConn := rpc.GetDefaultConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImGroupName, req.OperationID) // if etcdConn == nil { // errMsg := req.OperationID + "getcdv3.GetDefaultConn == nil" // log.NewError(req.OperationID, errMsg) @@ -790,523 +1110,188 @@ func QuitGroup(c *gin.Context) { // return // } // client := rpc.NewGroupClient(etcdConn) -// RpcResp, err := client.SetGroupInfo(context.Background(), req) +// reply, err := client.CancelMuteGroup(context.Background(), req) // if err != nil { -// log.NewError(req.OperationID, "SetGroupInfo failed ", err.Error(), req.String()) -// c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": "call rpc server failed"}) +// log.NewError(req.OperationID, utils.GetSelfFuncName(), " failed ", req.String()) +// c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": err.Error()}) // return // } -// resp := api.SetGroupInfoResp{CommResp: api.CommResp{ErrCode: RpcResp.CommonResp.ErrCode, ErrMsg: RpcResp.CommonResp.ErrMsg}} +// +// resp := api.CancelMuteGroupResp{CommResp: api.CommResp{ErrCode: reply.CommonResp.ErrCode, ErrMsg: reply.CommonResp.ErrMsg}} +// log.NewInfo(req.OperationID, utils.GetSelfFuncName(), " api return ", resp) // c.JSON(http.StatusOK, resp) -// log.NewInfo(req.OperationID, "SetGroupInfo api return ", resp) //} - -func NewSetGroupInfo(c *gin.Context) { - common.ApiToRpc(c, &api.SetGroupInfoReq{}, &api.SetGroupInfoResp{}, - config.Config.RpcRegisterName.OpenImGroupName, rpc.NewGroupClient, "SetGroupInfo") -} - -func argsHandle(params *api.SetGroupInfoReq, req *rpc.SetGroupInfoReq) { - if params.NeedVerification != nil { - req.GroupInfoForSet.NeedVerification = &wrappers.Int32Value{Value: *params.NeedVerification} - log.NewInfo(req.OperationID, "NeedVerification ", req.GroupInfoForSet.NeedVerification) - } - if params.LookMemberInfo != nil { - req.GroupInfoForSet.LookMemberInfo = &wrappers.Int32Value{Value: *params.LookMemberInfo} - log.NewInfo(req.OperationID, "LookMemberInfo ", req.GroupInfoForSet.LookMemberInfo) - } - if params.ApplyMemberFriend != nil { - req.GroupInfoForSet.ApplyMemberFriend = &wrappers.Int32Value{Value: *params.ApplyMemberFriend} - log.NewInfo(req.OperationID, "ApplyMemberFriend ", req.GroupInfoForSet.ApplyMemberFriend) - } -} - -// @Summary 转让群主 -// @Description 转让群主 -// @Tags 群组相关 -// @ID TransferGroupOwner -// @Accept json -// @Param token header string true "im token" -// @Param req body api.TransferGroupOwnerReq true "GroupID为要操作的群ID
oldOwnerUserID为老群主ID
newOwnerUserID为新群主ID" -// @Produce json -// @Success 0 {object} api.TransferGroupOwnerResp -// @Failure 500 {object} api.Swagger500Resp "errCode为500 一般为服务器内部错误" -// @Failure 400 {object} api.Swagger400Resp "errCode为400 一般为参数输入错误, token未带上等" -// @Router /group/transfer_group [post] -func TransferGroupOwner(c *gin.Context) { - params := api.TransferGroupOwnerReq{} - if err := c.BindJSON(¶ms); err != nil { - log.NewError("0", "BindJSON failed ", err.Error()) - c.JSON(http.StatusBadRequest, gin.H{"errCode": 400, "errMsg": err.Error()}) - return - } - req := &rpc.TransferGroupOwnerReq{} - utils.CopyStructFields(req, ¶ms) - - var ok bool - var errInfo string - ok, req.OpUserID, errInfo = token_verify.GetUserIDFromToken(c.Request.Header.Get("token"), req.OperationID) - if !ok { - errMsg := req.OperationID + " " + "GetUserIDFromToken failed " + errInfo + " token:" + c.Request.Header.Get("token") - log.NewError(req.OperationID, errMsg) - c.JSON(http.StatusBadRequest, gin.H{"errCode": 500, "errMsg": errMsg}) - return - } - - log.NewInfo(req.OperationID, "TransferGroupOwner args ", req.String()) - - etcdConn := rpc.GetDefaultConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImGroupName, req.OperationID) - if etcdConn == nil { - errMsg := req.OperationID + "getcdv3.GetDefaultConn == nil" - log.NewError(req.OperationID, errMsg) - c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": errMsg}) - return - } - client := rpc.NewGroupClient(etcdConn) - reply, err := client.TransferGroupOwner(context.Background(), req) - if err != nil { - log.NewError(req.OperationID, "TransferGroupOwner failed ", req.String()) - c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": err.Error()}) - return - } - - resp := api.TransferGroupOwnerResp{CommResp: api.CommResp{ErrCode: reply.CommonResp.ErrCode, ErrMsg: reply.CommonResp.ErrMsg}} - log.NewInfo(req.OperationID, "TransferGroupOwner api return ", resp) - c.JSON(http.StatusOK, resp) -} - -// @Summary 解散群组 -// @Description 解散群组 -// @Tags 群组相关 -// @ID DismissGroup -// @Accept json -// @Param token header string true "im token" -// @Param req body api.DismissGroupReq true "groupID为要解散的群组ID" -// @Produce json -// @Success 0 {object} api.DismissGroupResp -// @Failure 500 {object} api.Swagger500Resp "errCode为500 一般为服务器内部错误" -// @Failure 400 {object} api.Swagger400Resp "errCode为400 一般为参数输入错误, token未带上等" -// @Router /group/dismiss_group [post] -func DismissGroup(c *gin.Context) { - params := api.DismissGroupReq{} - if err := c.BindJSON(¶ms); err != nil { - log.NewError("0", "BindJSON failed ", err.Error()) - c.JSON(http.StatusBadRequest, gin.H{"errCode": 400, "errMsg": err.Error()}) - return - } - req := &rpc.DismissGroupReq{} - utils.CopyStructFields(req, ¶ms) - - var ok bool - var errInfo string - ok, req.OpUserID, errInfo = token_verify.GetUserIDFromToken(c.Request.Header.Get("token"), req.OperationID) - if !ok { - errMsg := req.OperationID + " " + "GetUserIDFromToken failed " + errInfo + " token:" + c.Request.Header.Get("token") - log.NewError(req.OperationID, errMsg) - c.JSON(http.StatusBadRequest, gin.H{"errCode": 500, "errMsg": errMsg}) - return - } - - log.NewInfo(req.OperationID, utils.GetSelfFuncName(), " args ", req.String()) - - etcdConn := rpc.GetDefaultConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImGroupName, req.OperationID) - if etcdConn == nil { - errMsg := req.OperationID + "getcdv3.GetDefaultConn == nil" - log.NewError(req.OperationID, errMsg) - c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": errMsg}) - return - } - client := rpc.NewGroupClient(etcdConn) - reply, err := client.DismissGroup(context.Background(), req) - if err != nil { - log.NewError(req.OperationID, utils.GetSelfFuncName(), " failed ", req.String()) - c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": err.Error()}) - return - } - - resp := api.DismissGroupResp{CommResp: api.CommResp{ErrCode: reply.CommonResp.ErrCode, ErrMsg: reply.CommonResp.ErrMsg}} - log.NewInfo(req.OperationID, utils.GetSelfFuncName(), " api return ", resp) - c.JSON(http.StatusOK, resp) -} - -// @Summary 禁言群成员 -// @Description 禁言群成员 -// @Tags 群组相关 -// @ID MuteGroupMember -// @Accept json -// @Param token header string true "im token" -// @Param req body api.MuteGroupMemberReq true "groupID为群组ID
userID为要禁言的用户ID
mutedSeconds为禁言秒数" -// @Produce json -// @Success 0 {object} api.DismissGroupResp -// @Failure 500 {object} api.Swagger500Resp "errCode为500 一般为服务器内部错误" -// @Failure 400 {object} api.Swagger400Resp "errCode为400 一般为参数输入错误, token未带上等" -// @Router /group/mute_group_member [post] -func MuteGroupMember(c *gin.Context) { - params := api.MuteGroupMemberReq{} - if err := c.BindJSON(¶ms); err != nil { - log.NewError("0", "BindJSON failed ", err.Error()) - c.JSON(http.StatusBadRequest, gin.H{"errCode": 400, "errMsg": err.Error()}) - return - } - req := &rpc.MuteGroupMemberReq{} - utils.CopyStructFields(req, ¶ms) - - var ok bool - var errInfo string - ok, req.OpUserID, errInfo = token_verify.GetUserIDFromToken(c.Request.Header.Get("token"), req.OperationID) - if !ok { - errMsg := req.OperationID + " " + "GetUserIDFromToken failed " + errInfo + " token:" + c.Request.Header.Get("token") - log.NewError(req.OperationID, errMsg) - c.JSON(http.StatusBadRequest, gin.H{"errCode": 500, "errMsg": errMsg}) - return - } - - log.NewInfo(req.OperationID, utils.GetSelfFuncName(), " api args ", req.String()) - - etcdConn := rpc.GetDefaultConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImGroupName, req.OperationID) - if etcdConn == nil { - errMsg := req.OperationID + "getcdv3.GetDefaultConn == nil" - log.NewError(req.OperationID, errMsg) - c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": errMsg}) - return - } - client := rpc.NewGroupClient(etcdConn) - reply, err := client.MuteGroupMember(context.Background(), req) - if err != nil { - log.NewError(req.OperationID, utils.GetSelfFuncName(), " failed ", req.String()) - c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": err.Error()}) - return - } - - resp := api.MuteGroupMemberResp{CommResp: api.CommResp{ErrCode: reply.CommonResp.ErrCode, ErrMsg: reply.CommonResp.ErrMsg}} - log.NewInfo(req.OperationID, utils.GetSelfFuncName(), " api return ", resp) - c.JSON(http.StatusOK, resp) -} - -// @Summary 取消禁言群成员 -// @Description 取消禁言群成员 -// @Tags 群组相关 -// @ID CancelMuteGroupMember -// @Accept json -// @Param token header string true "im token" -// @Param req body api.CancelMuteGroupMemberReq true "groupID为群组ID
userID为要取消禁言的用户ID" -// @Produce json -// @Success 0 {object} api.CancelMuteGroupMemberResp -// @Failure 500 {object} api.Swagger500Resp "errCode为500 一般为服务器内部错误" -// @Failure 400 {object} api.Swagger400Resp "errCode为400 一般为参数输入错误, token未带上等" -// @Router /group/cancel_mute_group_member [post] -func CancelMuteGroupMember(c *gin.Context) { - nCtx := tracelog.NewCtx(c, utils.GetSelfFuncName()) - defer log.ShowLog(c) - - params := api.CancelMuteGroupMemberReq{} - if err := c.BindJSON(¶ms); err != nil { - tracelog.WriteErrorResponse(nCtx, "BindJSON", err) - return - } - tracelog.SetCtxInfo(nCtx, "BindJSON", nil, "params", params) - req := &rpc.CancelMuteGroupMemberReq{} - utils.CopyStructFields(req, ¶ms) - - //var err error - //if err, req.OpUserID, _ = token_verify.ParseUserIDFromToken(c.Request.Header.Get("token"), req.OperationID); err != nil { - // tracelog.WriteErrorResponse(nCtx, "ParseUserIDFromToken", err) - // return - //} - tracelog.SetCtxInfo(nCtx, "ParseUserIDFromToken", nil, "token", c.Request.Header.Get("token"), "OpUserID", req.OpUserID) - - etcdConn := rpc.GetDefaultConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImGroupName, req.OperationID) - - client := rpc.NewGroupClient(etcdConn) - reply, err := client.CancelMuteGroupMember(nCtx, req) - if err != nil { - tracelog.WriteErrorResponse(nCtx, "CancelMuteGroupMember", err) - return - } - - tracelog.SetCtxInfo(nCtx, "CancelMuteGroupMember", nil, "req", req.String(), "resp", reply.String()) - resp := api.CancelMuteGroupMemberResp{CommResp: api.CommResp{ErrCode: reply.CommonResp.ErrCode, ErrMsg: reply.CommonResp.ErrMsg}} - c.JSON(http.StatusOK, resp) -} - -// @Summary 禁言群组 -// @Description 禁言群组 -// @Tags 群组相关 -// @ID MuteGroup -// @Accept json -// @Param token header string true "im token" -// @Param req body api.MuteGroupReq true "groupID为群组ID" -// @Produce json -// @Success 0 {object} api.MuteGroupResp -// @Failure 500 {object} api.MuteGroupResp "errCode为500 一般为服务器内部错误" -// @Failure 400 {object} api.MuteGroupResp "errCode为400 一般为参数输入错误, token未带上等" -// @Router /group/mute_group [post] -func MuteGroup(c *gin.Context) { - params := api.MuteGroupReq{} - if err := c.BindJSON(¶ms); err != nil { - log.NewError("0", "BindJSON failed ", err.Error()) - c.JSON(http.StatusBadRequest, gin.H{"errCode": 400, "errMsg": err.Error()}) - return - } - req := &rpc.MuteGroupReq{} - utils.CopyStructFields(req, ¶ms) - - var ok bool - var errInfo string - ok, req.OpUserID, errInfo = token_verify.GetUserIDFromToken(c.Request.Header.Get("token"), req.OperationID) - if !ok { - errMsg := req.OperationID + " " + "GetUserIDFromToken failed " + errInfo + " token:" + c.Request.Header.Get("token") - log.NewError(req.OperationID, errMsg) - c.JSON(http.StatusBadRequest, gin.H{"errCode": 400, "errMsg": errMsg}) - return - } - - log.NewInfo(req.OperationID, utils.GetSelfFuncName(), " api args ", req.String()) - - etcdConn := rpc.GetDefaultConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImGroupName, req.OperationID) - if etcdConn == nil { - errMsg := req.OperationID + "getcdv3.GetDefaultConn == nil" - log.NewError(req.OperationID, errMsg) - c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": errMsg}) - return - } - client := rpc.NewGroupClient(etcdConn) - reply, err := client.MuteGroup(context.Background(), req) - if err != nil { - log.NewError(req.OperationID, utils.GetSelfFuncName(), " failed ", req.String()) - c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": err.Error()}) - return - } - - resp := api.MuteGroupResp{CommResp: api.CommResp{ErrCode: reply.CommonResp.ErrCode, ErrMsg: reply.CommonResp.ErrMsg}} - log.NewInfo(req.OperationID, utils.GetSelfFuncName(), " api return ", resp) - c.JSON(http.StatusOK, resp) -} - -// @Summary 取消禁言群组 -// @Description 取消禁言群组 -// @Tags 群组相关 -// @ID CancelMuteGroup -// @Accept json -// @Param token header string true "im token" -// @Param req body api.CancelMuteGroupReq true "groupID为群组ID" -// @Produce json -// @Success 0 {object} api.CancelMuteGroupResp -// @Failure 500 {object} api.Swagger500Resp "errCode为500 一般为服务器内部错误" -// @Failure 400 {object} api.Swagger400Resp "errCode为400 一般为参数输入错误, token未带上等" -// @Router /group/cancel_mute_group [post] -func CancelMuteGroup(c *gin.Context) { - params := api.CancelMuteGroupReq{} - if err := c.BindJSON(¶ms); err != nil { - log.NewError("0", "BindJSON failed ", err.Error()) - c.JSON(http.StatusBadRequest, gin.H{"errCode": 400, "errMsg": err.Error()}) - return - } - req := &rpc.CancelMuteGroupReq{} - utils.CopyStructFields(req, ¶ms) - - var ok bool - var errInfo string - ok, req.OpUserID, errInfo = token_verify.GetUserIDFromToken(c.Request.Header.Get("token"), req.OperationID) - if !ok { - errMsg := req.OperationID + " " + "GetUserIDFromToken failed " + errInfo + " token:" + c.Request.Header.Get("token") - log.NewError(req.OperationID, errMsg) - c.JSON(http.StatusBadRequest, gin.H{"errCode": 500, "errMsg": errMsg}) - return - } - - log.NewInfo(req.OperationID, utils.GetSelfFuncName(), " api args ", req.String()) - - etcdConn := rpc.GetDefaultConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImGroupName, req.OperationID) - if etcdConn == nil { - errMsg := req.OperationID + "getcdv3.GetDefaultConn == nil" - log.NewError(req.OperationID, errMsg) - c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": errMsg}) - return - } - client := rpc.NewGroupClient(etcdConn) - reply, err := client.CancelMuteGroup(context.Background(), req) - if err != nil { - log.NewError(req.OperationID, utils.GetSelfFuncName(), " failed ", req.String()) - c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": err.Error()}) - return - } - - resp := api.CancelMuteGroupResp{CommResp: api.CommResp{ErrCode: reply.CommonResp.ErrCode, ErrMsg: reply.CommonResp.ErrMsg}} - log.NewInfo(req.OperationID, utils.GetSelfFuncName(), " api return ", resp) - c.JSON(http.StatusOK, resp) -} - -//SetGroupMemberNickname - -func SetGroupMemberNickname(c *gin.Context) { - params := api.SetGroupMemberNicknameReq{} - if err := c.BindJSON(¶ms); err != nil { - log.NewError("0", "BindJSON failed ", err.Error()) - c.JSON(http.StatusBadRequest, gin.H{"errCode": 400, "errMsg": err.Error()}) - return - } - req := &rpc.SetGroupMemberNicknameReq{} - utils.CopyStructFields(req, ¶ms) - - var ok bool - var errInfo string - ok, req.OpUserID, errInfo = token_verify.GetUserIDFromToken(c.Request.Header.Get("token"), req.OperationID) - if !ok { - errMsg := req.OperationID + " " + "GetUserIDFromToken failed " + errInfo + " token:" + c.Request.Header.Get("token") - log.NewError(req.OperationID, errMsg) - c.JSON(http.StatusBadRequest, gin.H{"errCode": 500, "errMsg": errMsg}) - return - } - - log.NewInfo(req.OperationID, utils.GetSelfFuncName(), " api args ", req.String()) - - etcdConn := rpc.GetDefaultConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImGroupName, req.OperationID) - if etcdConn == nil { - errMsg := req.OperationID + "getcdv3.GetDefaultConn == nil" - log.NewError(req.OperationID, errMsg) - c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": errMsg}) - return - } - client := rpc.NewGroupClient(etcdConn) - reply, err := client.SetGroupMemberNickname(context.Background(), req) - if err != nil { - log.NewError(req.OperationID, utils.GetSelfFuncName(), " failed ", req.String()) - c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": err.Error()}) - return - } - - resp := api.SetGroupMemberNicknameResp{CommResp: api.CommResp{ErrCode: reply.CommonResp.ErrCode, ErrMsg: reply.CommonResp.ErrMsg}} - log.NewInfo(req.OperationID, utils.GetSelfFuncName(), " api return ", resp) - c.JSON(http.StatusOK, resp) -} - -// @Summary 修改群成员信息 -// @Description 修改群成员信息 -// @Tags 群组相关 -// @ID SetGroupMemberInfo -// @Accept json -// @Param token header string true "im token" -// @Param req body api.SetGroupMemberInfoReq true "除了operationID, userID, groupID其他参数可选
ex为拓展字段
faceURL为群头像
nickName为群昵称
roleLevel为群员角色,1为普通用户 2为群主 3为管理员" -// @Produce json -// @Success 0 {object} api.SetGroupMemberInfoResp -// @Failure 500 {object} api.Swagger500Resp "errCode为500 一般为服务器内部错误" -// @Failure 400 {object} api.Swagger400Resp "errCode为400 一般为参数输入错误, token未带上等" -// @Router /group/set_group_member_info [post] -func SetGroupMemberInfo(c *gin.Context) { - var ( - req api.SetGroupMemberInfoReq - resp api.SetGroupMemberInfoResp - ) - if err := c.BindJSON(&req); err != nil { - log.NewError("0", "BindJSON failed ", err.Error()) - c.JSON(http.StatusBadRequest, gin.H{"errCode": 400, "errMsg": err.Error()}) - return - } - log.NewInfo(req.OperationID, utils.GetSelfFuncName(), req) - var opUserID string - ok, opUserID, errInfo := token_verify.GetUserIDFromToken(c.Request.Header.Get("token"), req.OperationID) - if !ok { - errMsg := req.OperationID + " " + "GetUserIDFromToken failed " + errInfo + " token:" + c.Request.Header.Get("token") - log.NewError(req.OperationID, errMsg) - c.JSON(http.StatusBadRequest, gin.H{"errCode": 500, "errMsg": errMsg}) - return - } - - reqPb := &rpc.SetGroupMemberInfoReq{ - GroupID: req.GroupID, - UserID: req.UserID, - OperationID: req.OperationID, - OpUserID: opUserID, - } - if req.Nickname != nil { - reqPb.Nickname = &wrappers.StringValue{Value: *req.Nickname} - } - if req.FaceURL != nil { - reqPb.FaceURL = &wrappers.StringValue{Value: *req.FaceURL} - } - if req.Ex != nil { - reqPb.Ex = &wrappers.StringValue{Value: *req.Ex} - } - if req.RoleLevel != nil { - reqPb.RoleLevel = &wrappers.Int32Value{Value: *req.RoleLevel} - } - log.NewInfo(req.OperationID, utils.GetSelfFuncName(), " api args ", reqPb.String()) - etcdConn := rpc.GetDefaultConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImGroupName, req.OperationID) - if etcdConn == nil { - errMsg := req.OperationID + "getcdv3.GetDefaultConn == nil" - log.NewError(req.OperationID, errMsg) - c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": errMsg}) - return - } - client := rpc.NewGroupClient(etcdConn) - respPb, err := client.SetGroupMemberInfo(context.Background(), reqPb) - if err != nil { - log.NewError(req.OperationID, utils.GetSelfFuncName(), " failed ", err.Error()) - c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": err.Error()}) - return - } - - resp.ErrMsg = respPb.CommonResp.ErrMsg - resp.ErrCode = respPb.CommonResp.ErrCode - log.NewInfo(req.OperationID, utils.GetSelfFuncName(), " api return ", resp) - c.JSON(http.StatusOK, resp) -} - -func GetGroupAbstractInfo(c *gin.Context) { - type GetGroupAbstractInfoReq struct { - //OperationID string `json:"operationID"` - GroupID string `json:"groupID"` - } - type GetGroupAbstractInfoResp struct { - GroupMemberNumber int32 `json:"groupMemberNumber"` - GroupMemberListHash uint64 `json:"groupMemberListHash"` - } - //common.ApiToRpc(c, &api.GetGroupAbstractInfoReq{}, &GetGroupAbstractInfoResp{}, config.Config.RpcRegisterName.OpenImGroupName, rpc.NewGroupClient, utils.GetSelfFuncName(), token_verify.ParseUserIDFromToken) - common.ApiToRpc(c, &api.GetGroupAbstractInfoReq{}, &GetGroupAbstractInfoResp{}, config.Config.RpcRegisterName.OpenImGroupName, rpc.NewGroupClient, utils.GetSelfFuncName()) - - //var ( - //req api.GetGroupAbstractInfoReq - //resp api.GetGroupAbstractInfoResp - //) - //nCtx := tracelog.NewCtx(c, utils.GetSelfFuncName()) - //if err := c.BindJSON(&req); err != nil { - // log.NewError("0", "BindJSON failed ", err.Error()) - // c.JSON(http.StatusBadRequest, gin.H{"errCode": 400, "errMsg": err.Error()}) - // return - //} - //ok, opUserID, errInfo := token_verify.GetUserIDFromToken(c.Request.Header.Get("token"), req.OperationID) - //if !ok { - // errMsg := req.OperationID + " " + "GetUserIDFromToken failed " + errInfo + " token:" + c.Request.Header.Get("token") - // log.NewError(req.OperationID, errMsg) - // c.JSON(http.StatusBadRequest, gin.H{"errCode": 500, "errMsg": errMsg}) - // return - //} - // - //etcdConn := getcdv3.GetDefaultConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImGroupName, req.OperationID) - //if etcdConn == nil { - // errMsg := req.OperationID + "getcdv3.GetDefaultConn == nil" - // log.NewError(req.OperationID, errMsg) - // c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": errMsg}) - // return - //} - //client := rpc.NewGroupClient(etcdConn) - //md := metadata.Pairs("operationID", req.OperationID, "opUserID", opUserID) - //respPb, err := client.GetGroupAbstractInfo(metadata.NewOutgoingContext(c, md), &rpc.GetGroupAbstractInfoReq{ - // GroupID: req.GroupID, - // OpUserID: opUserID, - // OperationID: req.OperationID, - //}) - //log.NewInfo(req.OperationID, utils.GetSelfFuncName(), " api args ", respPb.String()) - //if err != nil { - // //log.NewError(req.OperationID, utils.GetSelfFuncName(), " failed ", err.Error()) - // //c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": err.Error()}) - // tracelog.WriteErrorResponse(nCtx, "GetGroupAbstractInfo", utils.Wrap(err, "")) - // return - //} - //resp.GroupMemberNumber = respPb.GroupMemberNumber - //resp.GroupMemberListHash = respPb.GroupMemberListHash - //log.NewInfo(req.OperationID, utils.GetSelfFuncName(), " api return ", resp) - //c.JSON(http.StatusOK, resp) - //return -} +// +////SetGroupMemberNickname +// +//func SetGroupMemberNickname(c *gin.Context) { +// params := api.SetGroupMemberNicknameReq{} +// if err := c.BindJSON(¶ms); err != nil { +// log.NewError("0", "BindJSON failed ", err.Error()) +// c.JSON(http.StatusBadRequest, gin.H{"errCode": 400, "errMsg": err.Error()}) +// return +// } +// req := &rpc.SetGroupMemberNicknameReq{} +// utils.CopyStructFields(req, ¶ms) +// +// var ok bool +// var errInfo string +// ok, req.OpUserID, errInfo = token_verify.GetUserIDFromToken(c.Request.Header.Get("token"), req.OperationID) +// if !ok { +// errMsg := req.OperationID + " " + "GetUserIDFromToken failed " + errInfo + " token:" + c.Request.Header.Get("token") +// log.NewError(req.OperationID, errMsg) +// c.JSON(http.StatusBadRequest, gin.H{"errCode": 500, "errMsg": errMsg}) +// return +// } +// +// log.NewInfo(req.OperationID, utils.GetSelfFuncName(), " api args ", req.String()) +// +// etcdConn := rpc.GetDefaultConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImGroupName, req.OperationID) +// if etcdConn == nil { +// errMsg := req.OperationID + "getcdv3.GetDefaultConn == nil" +// log.NewError(req.OperationID, errMsg) +// c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": errMsg}) +// return +// } +// client := rpc.NewGroupClient(etcdConn) +// reply, err := client.SetGroupMemberNickname(context.Background(), req) +// if err != nil { +// log.NewError(req.OperationID, utils.GetSelfFuncName(), " failed ", req.String()) +// c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": err.Error()}) +// return +// } +// +// resp := api.SetGroupMemberNicknameResp{CommResp: api.CommResp{ErrCode: reply.CommonResp.ErrCode, ErrMsg: reply.CommonResp.ErrMsg}} +// log.NewInfo(req.OperationID, utils.GetSelfFuncName(), " api return ", resp) +// c.JSON(http.StatusOK, resp) +//} +// +//// @Summary 修改群成员信息 +//// @Description 修改群成员信息 +//// @Tags 群组相关 +//// @ID SetGroupMemberInfo +//// @Accept json +//// @Param token header string true "im token" +//// @Param req body api.SetGroupMemberInfoReq true "除了operationID, userID, groupID其他参数可选
ex为拓展字段
faceURL为群头像
nickName为群昵称
roleLevel为群员角色,1为普通用户 2为群主 3为管理员" +//// @Produce json +//// @Success 0 {object} api.SetGroupMemberInfoResp +//// @Failure 500 {object} api.Swagger500Resp "errCode为500 一般为服务器内部错误" +//// @Failure 400 {object} api.Swagger400Resp "errCode为400 一般为参数输入错误, token未带上等" +//// @Router /group/set_group_member_info [post] +//func SetGroupMemberInfo(c *gin.Context) { +// var ( +// req api.SetGroupMemberInfoReq +// resp api.SetGroupMemberInfoResp +// ) +// if err := c.BindJSON(&req); err != nil { +// log.NewError("0", "BindJSON failed ", err.Error()) +// c.JSON(http.StatusBadRequest, gin.H{"errCode": 400, "errMsg": err.Error()}) +// return +// } +// log.NewInfo(req.OperationID, utils.GetSelfFuncName(), req) +// var opUserID string +// ok, opUserID, errInfo := token_verify.GetUserIDFromToken(c.Request.Header.Get("token"), req.OperationID) +// if !ok { +// errMsg := req.OperationID + " " + "GetUserIDFromToken failed " + errInfo + " token:" + c.Request.Header.Get("token") +// log.NewError(req.OperationID, errMsg) +// c.JSON(http.StatusBadRequest, gin.H{"errCode": 500, "errMsg": errMsg}) +// return +// } +// +// reqPb := &rpc.SetGroupMemberInfoReq{ +// GroupID: req.GroupID, +// UserID: req.UserID, +// OperationID: req.OperationID, +// OpUserID: opUserID, +// } +// if req.Nickname != nil { +// reqPb.Nickname = &wrappers.StringValue{Value: *req.Nickname} +// } +// if req.FaceURL != nil { +// reqPb.FaceURL = &wrappers.StringValue{Value: *req.FaceURL} +// } +// if req.Ex != nil { +// reqPb.Ex = &wrappers.StringValue{Value: *req.Ex} +// } +// if req.RoleLevel != nil { +// reqPb.RoleLevel = &wrappers.Int32Value{Value: *req.RoleLevel} +// } +// log.NewInfo(req.OperationID, utils.GetSelfFuncName(), " api args ", reqPb.String()) +// etcdConn := rpc.GetDefaultConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImGroupName, req.OperationID) +// if etcdConn == nil { +// errMsg := req.OperationID + "getcdv3.GetDefaultConn == nil" +// log.NewError(req.OperationID, errMsg) +// c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": errMsg}) +// return +// } +// client := rpc.NewGroupClient(etcdConn) +// respPb, err := client.SetGroupMemberInfo(context.Background(), reqPb) +// if err != nil { +// log.NewError(req.OperationID, utils.GetSelfFuncName(), " failed ", err.Error()) +// c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": err.Error()}) +// return +// } +// +// resp.ErrMsg = respPb.CommonResp.ErrMsg +// resp.ErrCode = respPb.CommonResp.ErrCode +// log.NewInfo(req.OperationID, utils.GetSelfFuncName(), " api return ", resp) +// c.JSON(http.StatusOK, resp) +//} +// +//func GetGroupAbstractInfo(c *gin.Context) { +// type GetGroupAbstractInfoReq struct { +// //OperationID string `json:"operationID"` +// GroupID string `json:"groupID"` +// } +// type GetGroupAbstractInfoResp struct { +// GroupMemberNumber int32 `json:"groupMemberNumber"` +// GroupMemberListHash uint64 `json:"groupMemberListHash"` +// } +// //common.ApiToRpc(c, &api.GetGroupAbstractInfoReq{}, &GetGroupAbstractInfoResp{}, config.Config.RpcRegisterName.OpenImGroupName, rpc.NewGroupClient, utils.GetSelfFuncName(), token_verify.ParseUserIDFromToken) +// common.ApiToRpc(c, &api.GetGroupAbstractInfoReq{}, &GetGroupAbstractInfoResp{}, config.Config.RpcRegisterName.OpenImGroupName, rpc.NewGroupClient, utils.GetSelfFuncName()) +// +// //var ( +// //req api.GetGroupAbstractInfoReq +// //resp api.GetGroupAbstractInfoResp +// //) +// //nCtx := tracelog.NewCtx(c, utils.GetSelfFuncName()) +// //if err := c.BindJSON(&req); err != nil { +// // log.NewError("0", "BindJSON failed ", err.Error()) +// // c.JSON(http.StatusBadRequest, gin.H{"errCode": 400, "errMsg": err.Error()}) +// // return +// //} +// //ok, opUserID, errInfo := token_verify.GetUserIDFromToken(c.Request.Header.Get("token"), req.OperationID) +// //if !ok { +// // errMsg := req.OperationID + " " + "GetUserIDFromToken failed " + errInfo + " token:" + c.Request.Header.Get("token") +// // log.NewError(req.OperationID, errMsg) +// // c.JSON(http.StatusBadRequest, gin.H{"errCode": 500, "errMsg": errMsg}) +// // return +// //} +// // +// //etcdConn := getcdv3.GetDefaultConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImGroupName, req.OperationID) +// //if etcdConn == nil { +// // errMsg := req.OperationID + "getcdv3.GetDefaultConn == nil" +// // log.NewError(req.OperationID, errMsg) +// // c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": errMsg}) +// // return +// //} +// //client := rpc.NewGroupClient(etcdConn) +// //md := metadata.Pairs("operationID", req.OperationID, "opUserID", opUserID) +// //respPb, err := client.GetGroupAbstractInfo(metadata.NewOutgoingContext(c, md), &rpc.GetGroupAbstractInfoReq{ +// // GroupID: req.GroupID, +// // OpUserID: opUserID, +// // OperationID: req.OperationID, +// //}) +// //log.NewInfo(req.OperationID, utils.GetSelfFuncName(), " api args ", respPb.String()) +// //if err != nil { +// // //log.NewError(req.OperationID, utils.GetSelfFuncName(), " failed ", err.Error()) +// // //c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": err.Error()}) +// // tracelog.WriteErrorResponse(nCtx, "GetGroupAbstractInfo", utils.Wrap(err, "")) +// // return +// //} +// //resp.GroupMemberNumber = respPb.GroupMemberNumber +// //resp.GroupMemberListHash = respPb.GroupMemberListHash +// //log.NewInfo(req.OperationID, utils.GetSelfFuncName(), " api return ", resp) +// //c.JSON(http.StatusOK, resp) +// //return +//} diff --git a/internal/api/group/group_test.go b/internal/api/group/group_test.go new file mode 100644 index 000000000..aeaa01537 --- /dev/null +++ b/internal/api/group/group_test.go @@ -0,0 +1,107 @@ +package group + +import ( + "Open_IM/pkg/api_struct" + "Open_IM/pkg/proto/group" + "context" + "github.com/gin-gonic/gin" + "google.golang.org/grpc" + "testing" +) + +type Ignore struct{} + +func temp(client group.GroupClient, ctx context.Context, in *group.KickGroupMemberReq, opts ...grpc.CallOption) (*group.KickGroupMemberResp, error) { + + return nil, nil +} + +type ApiBind[A, B any] interface { + OperationID() string + OpUserID() (string, error) + Bind(*A) error + Error(error) + Write(*B) +} + +func NewApiBind[A, B any](c *gin.Context) ApiBind[A, B] { + return &ginApiBind[A, B]{ + c: c, + } +} + +type ginApiBind[A, B any] struct { + c *gin.Context +} + +func (g *ginApiBind[A, B]) OperationID() string { + return g.c.GetHeader("operationID") +} + +func (g *ginApiBind[A, B]) OpUserID() (string, error) { + return "", nil +} + +func (g *ginApiBind[A, B]) Bind(a *A) error { + return g.c.BindJSON(a) +} + +func (g *ginApiBind[A, B]) Error(err error) { + //TODO implement me +} + +func (g *ginApiBind[A, B]) Write(b *B) { + //TODO implement me +} + +func TestName(t *testing.T) { + //var bind ApiBind[int, int] + //NewRpc(bind, "", group.NewGroupClient, temp) + + var c *gin.Context + NewRpc(NewApiBind[api_struct.KickGroupMemberReq, api_struct.KickGroupMemberResp](c), "", group.NewGroupClient, group.GroupClient.KickGroupMember) + +} + +func KickGroupMember(c *gin.Context) { + // 默认 全部自动 + NewRpc(NewApiBind[api_struct.KickGroupMemberReq, api_struct.KickGroupMemberResp](c), "", group.NewGroupClient, group.GroupClient.KickGroupMember).Execute() + // 可以自定义编辑请求和响应 + NewRpc(NewApiBind[api_struct.KickGroupMemberReq, api_struct.KickGroupMemberResp](c), "", group.NewGroupClient, group.GroupClient.KickGroupMember).Before(func(apiReq *interface{}, rpcReq *interface{}, bind func() error) error { + return bind() + }).After(func(rpcResp api_struct.KickGroupMemberResp, apiResp *interface{}, bind func() error) error { + return bind() + }).Execute() +} + +func NewRpc[A, B any, C, D any, Z any](bind ApiBind[A, B], name string, client func(conn *grpc.ClientConn) Z, rpc func(client Z, ctx context.Context, req C, options ...grpc.CallOption) (D, error)) *RpcRun[A, B, C, D, Z] { + return &RpcRun[A, B, C, D, Z]{ + bind: bind, + name: name, + client: client, + rpc: rpc, + } +} + +type RpcRun[A, B any, C, D any, Z any] struct { + bind ApiBind[A, B] + name string + client func(conn *grpc.ClientConn) Z + rpc func(client Z, ctx context.Context, req C, options ...grpc.CallOption) (D, error) + before func(apiReq C, rpcReq C, bind func() error) error + after func(rpcResp B, apiResp D, bind func() error) error +} + +func (a *RpcRun[A, B, C, D, Z]) Before(fn func(apiReq C, rpcReq C, bind func() error) error) *RpcRun[A, B, C, D, Z] { + a.before = fn + return a +} + +func (a *RpcRun[A, B, C, D, Z]) After(fn func(rpcResp B, apiResp D, bind func() error) error) *RpcRun[A, B, C, D, Z] { + a.after = fn + return a +} + +func (a *RpcRun[A, B, C, D, Z]) Execute() { + +} diff --git a/internal/api/group/super_group.go b/internal/api/group/super_group.go index a78f589c5..5d6c9c2d7 100644 --- a/internal/api/group/super_group.go +++ b/internal/api/group/super_group.go @@ -1,89 +1,89 @@ package group -import ( - jsonData "Open_IM/internal/utils" - api "Open_IM/pkg/api_struct" - "Open_IM/pkg/common/config" - "Open_IM/pkg/common/log" - "Open_IM/pkg/common/token_verify" - "Open_IM/pkg/getcdv3" - rpc "Open_IM/pkg/proto/group" - "Open_IM/pkg/utils" - "context" - "github.com/gin-gonic/gin" - "net/http" - "strings" -) - -func GetJoinedSuperGroupList(c *gin.Context) { - req := api.GetJoinedSuperGroupListReq{} - if err := c.BindJSON(&req); err != nil { - log.NewError("0", "BindJSON failed ", err.Error()) - c.JSON(http.StatusBadRequest, gin.H{"errCode": 400, "errMsg": err.Error()}) - return - } - log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "req: ", req) - ok, opUserID, errInfo := token_verify.GetUserIDFromToken(c.Request.Header.Get("token"), req.OperationID) - if !ok { - errMsg := req.OperationID + " " + "GetUserIDFromToken failed " + errInfo + " token:" + c.Request.Header.Get("token") - log.NewError(req.OperationID, errMsg) - c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": errMsg}) - return - } - reqPb := rpc.GetJoinedSuperGroupListReq{OperationID: req.OperationID, OpUserID: opUserID, UserID: req.FromUserID} - etcdConn := rpc.GetDefaultConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImGroupName, req.OperationID) - if etcdConn == nil { - errMsg := req.OperationID + "getcdv3.GetDefaultConn == nil" - log.NewError(req.OperationID, errMsg) - c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": errMsg}) - return - } - client := rpc.NewGroupClient(etcdConn) - rpcResp, err := client.GetJoinedSuperGroupList(context.Background(), &reqPb) - if err != nil { - log.NewError(req.OperationID, "InviteUserToGroup failed ", err.Error(), reqPb.String()) - c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": err.Error()}) - return - } - GroupListResp := api.GetJoinedSuperGroupListResp{GetJoinedGroupListResp: api.GetJoinedGroupListResp{CommResp: api.CommResp{ErrCode: rpcResp.CommonResp.ErrCode, ErrMsg: rpcResp.CommonResp.ErrMsg}, GroupInfoList: rpcResp.GroupList}} - GroupListResp.Data = jsonData.JsonDataList(GroupListResp.GroupInfoList) - log.NewInfo(req.OperationID, "GetJoinedSuperGroupList api return ", GroupListResp) - c.JSON(http.StatusOK, GroupListResp) -} - -func GetSuperGroupsInfo(c *gin.Context) { - req := api.GetSuperGroupsInfoReq{} - if err := c.BindJSON(&req); err != nil { - log.NewError("0", "BindJSON failed ", err.Error()) - c.JSON(http.StatusBadRequest, gin.H{"errCode": 400, "errMsg": err.Error()}) - return - } - log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "req: ", req) - ok, opUserID, errInfo := token_verify.GetUserIDFromToken(c.Request.Header.Get("token"), req.OperationID) - if !ok { - errMsg := req.OperationID + " " + "GetUserIDFromToken failed " + errInfo + " token:" + c.Request.Header.Get("token") - log.NewError(req.OperationID, errMsg) - c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": errMsg}) - return - } - reqPb := rpc.GetSuperGroupsInfoReq{OperationID: req.OperationID, OpUserID: opUserID, GroupIDList: req.GroupIDList} - etcdConn := rpc.GetDefaultConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImGroupName, req.OperationID) - if etcdConn == nil { - errMsg := req.OperationID + "getcdv3.GetDefaultConn == nil" - log.NewError(req.OperationID, errMsg) - c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": errMsg}) - return - } - client := rpc.NewGroupClient(etcdConn) - rpcResp, err := client.GetSuperGroupsInfo(context.Background(), &reqPb) - if err != nil { - log.NewError(req.OperationID, "InviteUserToGroup failed ", err.Error(), reqPb.String()) - c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": err.Error()}) - return - } - - resp := api.GetSuperGroupsInfoResp{GetGroupInfoResp: api.GetGroupInfoResp{CommResp: api.CommResp{ErrCode: rpcResp.CommonResp.ErrCode, ErrMsg: rpcResp.CommonResp.ErrMsg}, GroupInfoList: rpcResp.GroupInfoList}} - resp.Data = jsonData.JsonDataList(resp.GroupInfoList) - log.NewInfo(req.OperationID, "GetGroupsInfo api return ", resp) - c.JSON(http.StatusOK, resp) -} +//import ( +// jsonData "Open_IM/internal/utils" +// api "Open_IM/pkg/api_struct" +// "Open_IM/pkg/common/config" +// "Open_IM/pkg/common/log" +// "Open_IM/pkg/common/token_verify" +// "Open_IM/pkg/getcdv3" +// rpc "Open_IM/pkg/proto/group" +// "Open_IM/pkg/utils" +// "context" +// "github.com/gin-gonic/gin" +// "net/http" +// "strings" +//) +// +//func GetJoinedSuperGroupList(c *gin.Context) { +// req := api.GetJoinedSuperGroupListReq{} +// if err := c.BindJSON(&req); err != nil { +// log.NewError("0", "BindJSON failed ", err.Error()) +// c.JSON(http.StatusBadRequest, gin.H{"errCode": 400, "errMsg": err.Error()}) +// return +// } +// log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "req: ", req) +// ok, opUserID, errInfo := token_verify.GetUserIDFromToken(c.Request.Header.Get("token"), req.OperationID) +// if !ok { +// errMsg := req.OperationID + " " + "GetUserIDFromToken failed " + errInfo + " token:" + c.Request.Header.Get("token") +// log.NewError(req.OperationID, errMsg) +// c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": errMsg}) +// return +// } +// reqPb := rpc.GetJoinedSuperGroupListReq{OperationID: req.OperationID, OpUserID: opUserID, UserID: req.FromUserID} +// etcdConn := rpc.GetDefaultConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImGroupName, req.OperationID) +// if etcdConn == nil { +// errMsg := req.OperationID + "getcdv3.GetDefaultConn == nil" +// log.NewError(req.OperationID, errMsg) +// c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": errMsg}) +// return +// } +// client := rpc.NewGroupClient(etcdConn) +// rpcResp, err := client.GetJoinedSuperGroupList(context.Background(), &reqPb) +// if err != nil { +// log.NewError(req.OperationID, "InviteUserToGroup failed ", err.Error(), reqPb.String()) +// c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": err.Error()}) +// return +// } +// GroupListResp := api.GetJoinedSuperGroupListResp{GetJoinedGroupListResp: api.GetJoinedGroupListResp{CommResp: api.CommResp{ErrCode: rpcResp.CommonResp.ErrCode, ErrMsg: rpcResp.CommonResp.ErrMsg}, GroupInfoList: rpcResp.GroupList}} +// GroupListResp.Data = jsonData.JsonDataList(GroupListResp.GroupInfoList) +// log.NewInfo(req.OperationID, "GetJoinedSuperGroupList api return ", GroupListResp) +// c.JSON(http.StatusOK, GroupListResp) +//} +// +//func GetSuperGroupsInfo(c *gin.Context) { +// req := api.GetSuperGroupsInfoReq{} +// if err := c.BindJSON(&req); err != nil { +// log.NewError("0", "BindJSON failed ", err.Error()) +// c.JSON(http.StatusBadRequest, gin.H{"errCode": 400, "errMsg": err.Error()}) +// return +// } +// log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "req: ", req) +// ok, opUserID, errInfo := token_verify.GetUserIDFromToken(c.Request.Header.Get("token"), req.OperationID) +// if !ok { +// errMsg := req.OperationID + " " + "GetUserIDFromToken failed " + errInfo + " token:" + c.Request.Header.Get("token") +// log.NewError(req.OperationID, errMsg) +// c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": errMsg}) +// return +// } +// reqPb := rpc.GetSuperGroupsInfoReq{OperationID: req.OperationID, OpUserID: opUserID, GroupIDList: req.GroupIDList} +// etcdConn := rpc.GetDefaultConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImGroupName, req.OperationID) +// if etcdConn == nil { +// errMsg := req.OperationID + "getcdv3.GetDefaultConn == nil" +// log.NewError(req.OperationID, errMsg) +// c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": errMsg}) +// return +// } +// client := rpc.NewGroupClient(etcdConn) +// rpcResp, err := client.GetSuperGroupsInfo(context.Background(), &reqPb) +// if err != nil { +// log.NewError(req.OperationID, "InviteUserToGroup failed ", err.Error(), reqPb.String()) +// c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": err.Error()}) +// return +// } +// +// resp := api.GetSuperGroupsInfoResp{GetGroupInfoResp: api.GetGroupInfoResp{CommResp: api.CommResp{ErrCode: rpcResp.CommonResp.ErrCode, ErrMsg: rpcResp.CommonResp.ErrMsg}, GroupInfoList: rpcResp.GroupInfoList}} +// resp.Data = jsonData.JsonDataList(resp.GroupInfoList) +// log.NewInfo(req.OperationID, "GetGroupsInfo api return ", resp) +// c.JSON(http.StatusOK, resp) +//} diff --git a/pkg/api_struct/group.go b/pkg/api_struct/group.go index b15458d79..a2c3c99c9 100644 --- a/pkg/api_struct/group.go +++ b/pkg/api_struct/group.go @@ -22,7 +22,7 @@ type KickGroupMemberReq struct { } type KickGroupMemberResp struct { CommResp - UserIDResultList []*UserIDResult `json:"data"` + //UserIDResultList []*UserIDResult `json:"data"` } type GetGroupMembersInfoReq struct { @@ -44,7 +44,7 @@ type InviteUserToGroupReq struct { } type InviteUserToGroupResp struct { CommResp - UserIDResultList []*UserIDResult `json:"data"` + //UserIDResultList []*UserIDResult `json:"data"` } type GetJoinedGroupListReq struct { diff --git a/pkg/api_struct/manage.go b/pkg/api_struct/manage.go index 4e6c6977b..0d5bb4307 100644 --- a/pkg/api_struct/manage.go +++ b/pkg/api_struct/manage.go @@ -3,7 +3,6 @@ package api_struct import ( pbRelay "Open_IM/pkg/proto/relay" server_api_params "Open_IM/pkg/proto/sdk_ws" - pbUser "Open_IM/pkg/proto/user" ) type DeleteUsersReq struct { @@ -35,7 +34,7 @@ type AccountCheckReq struct { } type AccountCheckResp struct { CommResp - ResultList []*pbUser.AccountCheckResp_SingleUserStatus `json:"data"` + //ResultList []*pbUser.AccountCheckResp_SingleUserStatus `json:"data"` } type ManagementSendMsg struct { diff --git a/pkg/utils/utils.go b/pkg/utils/utils.go index de5e0eb5f..2590f4469 100644 --- a/pkg/utils/utils.go +++ b/pkg/utils/utils.go @@ -38,8 +38,12 @@ func GetSelfFuncName() string { return cleanUpFuncName(runtime.FuncForPC(pc).Name()) } -func GetFuncName(skip int) string { - pc, _, _, _ := runtime.Caller(skip + 1) +func GetFuncName(skips ...int) string { + skip := 1 + if len(skips) > 0 { + skip = skips[0] + 1 + } + pc, _, _, _ := runtime.Caller(skip) return cleanUpFuncName(runtime.FuncForPC(pc).Name()) }