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())
}