group.go 21.2 KB
Newer Older
落凡尘.'s avatar
落凡尘. 已提交
1 2 3
package group

import (
W
wenxu12345 已提交
4
	api "Open_IM/pkg/base_info"
5 6
	"Open_IM/pkg/common/config"
	"Open_IM/pkg/common/log"
W
wenxu12345 已提交
7
	"Open_IM/pkg/common/token_verify"
8
	"Open_IM/pkg/grpc-etcdv3/getcdv3"
W
wenxu12345 已提交
9
	rpc "Open_IM/pkg/proto/group"
W
wenxu12345 已提交
10
	open_im_sdk "Open_IM/pkg/proto/sdk_ws"
W
wenxu12345 已提交
11
	"Open_IM/pkg/utils"
落凡尘.'s avatar
落凡尘. 已提交
12 13 14 15 16 17 18
	"context"
	"github.com/gin-gonic/gin"
	"net/http"
	"strings"
)

func KickGroupMember(c *gin.Context) {
W
wenxu12345 已提交
19
	params := api.KickGroupMemberReq{}
落凡尘.'s avatar
落凡尘. 已提交
20
	if err := c.BindJSON(&params); err != nil {
W
wenxu12345 已提交
21
		log.NewError("0", "BindJSON failed ", err.Error())
落凡尘.'s avatar
落凡尘. 已提交
22 23 24 25
		c.JSON(http.StatusBadRequest, gin.H{"errCode": 400, "errMsg": err.Error()})
		return
	}

W
wenxu12345 已提交
26
	req := &rpc.KickGroupMemberReq{}
W
wenxu12345 已提交
27
	utils.CopyStructFields(req, &params)
W
wenxu12345 已提交
28 29 30 31 32 33
	var ok bool
	ok, req.OpUserID = token_verify.GetUserIDFromToken(c.Request.Header.Get("token"))
	if !ok {
		log.NewError(req.OperationID, "GetUserIDFromToken false ", c.Request.Header.Get("token"))
		c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": "GetUserIDFromToken failed"})
		return
落凡尘.'s avatar
落凡尘. 已提交
34
	}
W
wenxu12345 已提交
35 36 37

	log.NewInfo(req.OperationID, "KickGroupMember args ", req.String())

W
wenxu12345 已提交
38
	etcdConn := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImGroupName)
W
wenxu12345 已提交
39
	client := rpc.NewGroupClient(etcdConn)
落凡尘.'s avatar
落凡尘. 已提交
40 41
	RpcResp, err := client.KickGroupMember(context.Background(), req)
	if err != nil {
W
wenxu12345 已提交
42
		log.NewError(req.OperationID, "GetGroupMemberList failed ", err.Error(), req.String())
落凡尘.'s avatar
落凡尘. 已提交
43 44 45 46
		c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": err.Error()})
		return
	}

W
wenxu12345 已提交
47 48 49 50
	var memberListResp api.KickGroupMemberResp
	memberListResp.ErrMsg = RpcResp.ErrMsg
	memberListResp.ErrCode = RpcResp.ErrCode
	for _, v := range RpcResp.Id2ResultList {
W
wenxu12345 已提交
51
		memberListResp.UserIDResultList = append(memberListResp.UserIDResultList, &api.UserIDResult{UserID: v.UserID, Result: v.Result})
落凡尘.'s avatar
落凡尘. 已提交
52
	}
W
wenxu12345 已提交
53 54 55 56
	if len(memberListResp.UserIDResultList) == 0 {
		memberListResp.UserIDResultList = []*api.UserIDResult{}
	}

W
wenxu12345 已提交
57
	log.NewInfo(req.OperationID, "KickGroupMember api return ", memberListResp)
落凡尘.'s avatar
落凡尘. 已提交
58 59 60 61
	c.JSON(http.StatusOK, memberListResp)
}

func GetGroupMembersInfo(c *gin.Context) {
W
wenxu12345 已提交
62
	params := api.GetGroupMembersInfoReq{}
落凡尘.'s avatar
落凡尘. 已提交
63
	if err := c.BindJSON(&params); err != nil {
W
wenxu12345 已提交
64
		log.NewError("0", "BindJSON failed ", err.Error())
落凡尘.'s avatar
落凡尘. 已提交
65 66 67
		c.JSON(http.StatusBadRequest, gin.H{"errCode": 400, "errMsg": err.Error()})
		return
	}
W
wenxu12345 已提交
68 69 70 71 72 73
	req := &rpc.GetGroupMembersInfoReq{}
	utils.CopyStructFields(req, params)
	var ok bool
	ok, req.OpUserID = token_verify.GetUserIDFromToken(c.Request.Header.Get("token"))
	if !ok {
		log.NewError(req.OperationID, "GetUserIDFromToken false ", c.Request.Header.Get("token"))
W
wenxu12345 已提交
74 75
		//c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": "GetUserIDFromToken failed"})
		api.SetErrCodeMsg(c, http.StatusInternalServerError)
W
wenxu12345 已提交
76
		return
落凡尘.'s avatar
落凡尘. 已提交
77
	}
W
wenxu12345 已提交
78 79 80 81
	log.NewInfo(req.OperationID, "GetGroupMembersInfo args ", req.String())

	etcdConn := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImGroupName)
	client := rpc.NewGroupClient(etcdConn)
落凡尘.'s avatar
落凡尘. 已提交
82 83 84

	RpcResp, err := client.GetGroupMembersInfo(context.Background(), req)
	if err != nil {
W
wenxu12345 已提交
85
		log.NewError(req.OperationID, "GetGroupMemberList failed ", err.Error(), req.String())
落凡尘.'s avatar
落凡尘. 已提交
86 87 88 89
		c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": err.Error()})
		return
	}

W
wenxu12345 已提交
90 91
	memberListResp := api.GetGroupMembersInfoResp{CommResp: api.CommResp{ErrCode: RpcResp.ErrCode, ErrMsg: RpcResp.ErrMsg}, Data: RpcResp.MemberList}
	log.NewInfo(req.OperationID, "GetGroupMembersInfo api return ", memberListResp)
落凡尘.'s avatar
落凡尘. 已提交
92 93 94 95
	c.JSON(http.StatusOK, memberListResp)
}

func GetGroupMemberList(c *gin.Context) {
W
wenxu12345 已提交
96
	params := api.GetGroupMemberListReq{}
落凡尘.'s avatar
落凡尘. 已提交
97
	if err := c.BindJSON(&params); err != nil {
W
wenxu12345 已提交
98
		log.NewError("0", "BindJSON failed ", err.Error())
落凡尘.'s avatar
落凡尘. 已提交
99 100 101
		c.JSON(http.StatusBadRequest, gin.H{"errCode": 400, "errMsg": err.Error()})
		return
	}
W
wenxu12345 已提交
102 103 104 105 106 107 108 109
	req := &rpc.GetGroupMemberListReq{}
	utils.CopyStructFields(req, params)
	var ok bool
	ok, req.OpUserID = token_verify.GetUserIDFromToken(c.Request.Header.Get("token"))
	if !ok {
		log.NewError(req.OperationID, "GetUserIDFromToken false ", c.Request.Header.Get("token"))
		c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": "GetUserIDFromToken failed"})
		return
落凡尘.'s avatar
落凡尘. 已提交
110
	}
W
wenxu12345 已提交
111 112 113 114 115
	log.NewInfo(req.OperationID, "GetGroupMemberList args ", req.String())

	etcdConn := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImGroupName)
	client := rpc.NewGroupClient(etcdConn)

落凡尘.'s avatar
落凡尘. 已提交
116 117
	RpcResp, err := client.GetGroupMemberList(context.Background(), req)
	if err != nil {
W
wenxu12345 已提交
118
		log.NewError(req.OperationID, "GetGroupMemberList failed, ", err.Error(), req.String())
落凡尘.'s avatar
落凡尘. 已提交
119 120 121 122
		c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": err.Error()})
		return
	}

W
wenxu12345 已提交
123 124 125 126
	memberListResp := api.GetGroupMemberListResp{CommResp: api.CommResp{ErrCode: RpcResp.ErrCode, ErrMsg: RpcResp.ErrMsg}, MemberList: RpcResp.MemberList, NextSeq: RpcResp.NextSeq}
	if len(memberListResp.MemberList) == 0 {
		memberListResp.MemberList = []*open_im_sdk.GroupMemberFullInfo{}
	}
W
wenxu12345 已提交
127 128 129 130 131 132 133 134 135 136
	/*
		jsm := &jsonpb.Marshaler{
			OrigName:     true,
			EnumsAsInts:  false,
			EmitDefaults: true,
		}

		var b bytes.Buffer
		err = jsm.MarshalToString(memberListResp.MemberList[0])
	*/
W
wenxu12345 已提交
137
	log.NewInfo(req.OperationID, "GetGroupMemberList api return ", memberListResp)
W
wenxu12345 已提交
138
	c.JSON(http.StatusOK, memberListResp)
落凡尘.'s avatar
落凡尘. 已提交
139 140
}

落凡尘.'s avatar
落凡尘. 已提交
141
func GetGroupAllMember(c *gin.Context) {
W
wenxu12345 已提交
142
	params := api.GetGroupAllMemberReq{}
落凡尘.'s avatar
落凡尘. 已提交
143
	if err := c.BindJSON(&params); err != nil {
W
wenxu12345 已提交
144
		log.NewError("0", "BindJSON failed ", err.Error())
落凡尘.'s avatar
落凡尘. 已提交
145 146 147
		c.JSON(http.StatusBadRequest, gin.H{"errCode": 400, "errMsg": err.Error()})
		return
	}
W
wenxu12345 已提交
148 149 150 151 152 153 154 155
	req := &rpc.GetGroupAllMemberReq{}
	utils.CopyStructFields(req, params)
	var ok bool
	ok, req.OpUserID = token_verify.GetUserIDFromToken(c.Request.Header.Get("token"))
	if !ok {
		log.NewError(req.OperationID, "GetUserIDFromToken false ", c.Request.Header.Get("token"))
		c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": "GetUserIDFromToken failed"})
		return
落凡尘.'s avatar
落凡尘. 已提交
156
	}
W
wenxu12345 已提交
157 158 159 160
	log.NewInfo(req.OperationID, "GetGroupAllMember args ", req.String())

	etcdConn := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImGroupName)
	client := rpc.NewGroupClient(etcdConn)
落凡尘.'s avatar
落凡尘. 已提交
161 162
	RpcResp, err := client.GetGroupAllMember(context.Background(), req)
	if err != nil {
W
wenxu12345 已提交
163
		log.NewError(req.OperationID, "GetGroupAllMember failed ", err.Error(), req.String())
落凡尘.'s avatar
落凡尘. 已提交
164 165 166 167
		c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": err.Error()})
		return
	}

W
wenxu12345 已提交
168
	memberListResp := api.GetGroupAllMemberResp{CommResp: api.CommResp{ErrCode: RpcResp.ErrCode, ErrMsg: RpcResp.ErrMsg}, Data: RpcResp.MemberList}
落凡尘.'s avatar
落凡尘. 已提交
169
	c.JSON(http.StatusOK, memberListResp)
W
wenxu12345 已提交
170
	log.NewInfo(req.OperationID, "GetGroupAllMember api return ", memberListResp)
落凡尘.'s avatar
落凡尘. 已提交
171 172 173
}

func GetJoinedGroupList(c *gin.Context) {
W
wenxu12345 已提交
174
	params := api.GetJoinedGroupListReq{}
落凡尘.'s avatar
落凡尘. 已提交
175
	if err := c.BindJSON(&params); err != nil {
W
wenxu12345 已提交
176
		log.NewError("0", "BindJSON failed ", err.Error())
落凡尘.'s avatar
落凡尘. 已提交
177 178 179
		c.JSON(http.StatusBadRequest, gin.H{"errCode": 400, "errMsg": err.Error()})
		return
	}
W
wenxu12345 已提交
180 181 182 183 184 185 186 187
	req := &rpc.GetJoinedGroupListReq{}
	utils.CopyStructFields(req, params)
	var ok bool
	ok, req.OpUserID = token_verify.GetUserIDFromToken(c.Request.Header.Get("token"))
	if !ok {
		log.NewError(req.OperationID, "GetUserIDFromToken false ", c.Request.Header.Get("token"))
		c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": "GetUserIDFromToken failed"})
		return
落凡尘.'s avatar
落凡尘. 已提交
188
	}
W
wenxu12345 已提交
189
	log.NewInfo(req.OperationID, "GetJoinedGroupList args ", req.String())
落凡尘.'s avatar
落凡尘. 已提交
190

W
wenxu12345 已提交
191 192
	etcdConn := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImGroupName)
	client := rpc.NewGroupClient(etcdConn)
落凡尘.'s avatar
落凡尘. 已提交
193 194
	RpcResp, err := client.GetJoinedGroupList(context.Background(), req)
	if err != nil {
W
wenxu12345 已提交
195
		log.NewError(req.OperationID, "GetJoinedGroupList failed  ", err.Error(), req.String())
落凡尘.'s avatar
落凡尘. 已提交
196 197 198 199
		c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": err.Error()})
		return
	}

W
wenxu12345 已提交
200
	GroupListResp := api.GetJoinedGroupListResp{CommResp: api.CommResp{ErrCode: RpcResp.ErrCode, ErrMsg: RpcResp.ErrMsg}, GroupInfoList: RpcResp.GroupList}
落凡尘.'s avatar
落凡尘. 已提交
201
	c.JSON(http.StatusOK, GroupListResp)
W
wenxu12345 已提交
202
	log.NewInfo(req.OperationID, "GetJoinedGroupList api return ", GroupListResp)
落凡尘.'s avatar
落凡尘. 已提交
203 204 205
}

func InviteUserToGroup(c *gin.Context) {
W
wenxu12345 已提交
206
	params := api.InviteUserToGroupReq{}
落凡尘.'s avatar
落凡尘. 已提交
207
	if err := c.BindJSON(&params); err != nil {
W
wenxu12345 已提交
208
		log.NewError("0", "BindJSON failed ", err.Error())
落凡尘.'s avatar
落凡尘. 已提交
209 210 211
		c.JSON(http.StatusBadRequest, gin.H{"errCode": 400, "errMsg": err.Error()})
		return
	}
W
wenxu12345 已提交
212
	req := &rpc.InviteUserToGroupReq{}
W
wenxu12345 已提交
213
	utils.CopyStructFields(req, &params)
W
wenxu12345 已提交
214 215 216 217 218 219
	var ok bool
	ok, req.OpUserID = token_verify.GetUserIDFromToken(c.Request.Header.Get("token"))
	if !ok {
		log.NewError(req.OperationID, "GetUserIDFromToken false ", c.Request.Header.Get("token"))
		c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": "GetUserIDFromToken failed"})
		return
落凡尘.'s avatar
落凡尘. 已提交
220
	}
W
wenxu12345 已提交
221
	log.NewInfo(req.OperationID, "InviteUserToGroup args ", req.String())
落凡尘.'s avatar
落凡尘. 已提交
222

W
wenxu12345 已提交
223 224
	etcdConn := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImGroupName)
	client := rpc.NewGroupClient(etcdConn)
落凡尘.'s avatar
落凡尘. 已提交
225 226
	RpcResp, err := client.InviteUserToGroup(context.Background(), req)
	if err != nil {
W
wenxu12345 已提交
227
		log.NewError(req.OperationID, "InviteUserToGroup failed ", err.Error(), req.String())
落凡尘.'s avatar
落凡尘. 已提交
228 229 230 231
		c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": err.Error()})
		return
	}

W
wenxu12345 已提交
232
	resp := api.InviteUserToGroupResp{CommResp: api.CommResp{ErrCode: RpcResp.ErrCode, ErrMsg: RpcResp.ErrMsg}}
W
wenxu12345 已提交
233
	for _, v := range RpcResp.Id2ResultList {
W
wenxu12345 已提交
234
		resp.UserIDResultList = append(resp.UserIDResultList, api.UserIDResult{UserID: v.UserID, Result: v.Result})
落凡尘.'s avatar
落凡尘. 已提交
235
	}
W
wenxu12345 已提交
236 237
	c.JSON(http.StatusOK, resp)
	log.NewInfo(req.OperationID, "InviteUserToGroup api return ", resp)
W
wenxu12345 已提交
238 239 240
}

func CreateGroup(c *gin.Context) {
W
wenxu12345 已提交
241
	params := api.CreateGroupReq{}
W
wenxu12345 已提交
242
	if err := c.BindJSON(&params); err != nil {
W
wenxu12345 已提交
243
		log.NewError("0", "BindJSON failed ", err.Error())
W
wenxu12345 已提交
244 245 246
		c.JSON(http.StatusBadRequest, gin.H{"errCode": 400, "errMsg": err.Error()})
		return
	}
W
wenxu12345 已提交
247
	req := &rpc.CreateGroupReq{}
W
wenxu12345 已提交
248 249 250 251
	utils.CopyStructFields(req, &params)
	for _, v := range params.MemberList {
		req.InitMemberList = append(req.InitMemberList, &rpc.GroupAddMemberInfo{UserID: v.UserID, RoleLevel: v.RoleLevel})
	}
W
wenxu12345 已提交
252 253 254 255 256 257
	var ok bool
	ok, req.OpUserID = token_verify.GetUserIDFromToken(c.Request.Header.Get("token"))
	if !ok {
		log.NewError(req.OperationID, "GetUserIDFromToken false ", c.Request.Header.Get("token"))
		c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": "GetUserIDFromToken failed"})
		return
W
wenxu12345 已提交
258
	}
W
wenxu12345 已提交
259 260 261 262
	log.NewInfo(req.OperationID, "CreateGroup args ", req.String())

	etcdConn := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImGroupName)
	client := rpc.NewGroupClient(etcdConn)
W
wenxu12345 已提交
263 264
	RpcResp, err := client.CreateGroup(context.Background(), req)
	if err != nil {
W
wenxu12345 已提交
265
		log.NewError(req.OperationID, "CreateGroup failed ", err.Error(), req.String())
W
wenxu12345 已提交
266 267 268
		c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": "call  rpc server failed"})
		return
	}
W
wenxu12345 已提交
269

W
wenxu12345 已提交
270
	resp := api.CreateGroupResp{CommResp: api.CommResp{ErrCode: RpcResp.ErrCode, ErrMsg: RpcResp.ErrMsg}}
W
wenxu12345 已提交
271
	if RpcResp.ErrCode == 0 {
W
wenxu12345 已提交
272
		utils.CopyStructFields(&resp.GroupInfo, RpcResp.GroupInfo)
W
wenxu12345 已提交
273
	}
W
wenxu12345 已提交
274
	log.NewInfo(req.OperationID, "CreateGroup api return ", resp)
W
wenxu12345 已提交
275
	c.JSON(http.StatusOK, resp)
W
wenxu12345 已提交
276 277
}

W
wenxu12345 已提交
278
//  群主或管理员收到的
W
wenxu12345 已提交
279
func GetGroupApplicationList(c *gin.Context) {
W
wenxu12345 已提交
280
	params := api.GetGroupApplicationListReq{}
W
wenxu12345 已提交
281
	if err := c.BindJSON(&params); err != nil {
W
wenxu12345 已提交
282
		log.NewError("0", "BindJSON failed ", err.Error())
W
wenxu12345 已提交
283 284 285
		c.JSON(http.StatusBadRequest, gin.H{"errCode": 400, "errMsg": err.Error()})
		return
	}
W
wenxu12345 已提交
286 287 288 289 290 291 292
	req := &rpc.GetGroupApplicationListReq{}
	utils.CopyStructFields(req, params)
	var ok bool
	ok, req.OpUserID = token_verify.GetUserIDFromToken(c.Request.Header.Get("token"))
	if !ok {
		log.NewError(req.OperationID, "GetUserIDFromToken false ", c.Request.Header.Get("token"))
		c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": "GetUserIDFromToken failed"})
W
wenxu12345 已提交
293 294
		return
	}
W
wenxu12345 已提交
295 296 297 298 299
	log.NewInfo(req.OperationID, "GetGroupApplicationList args ", req.String())

	etcdConn := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImGroupName)
	client := rpc.NewGroupClient(etcdConn)
	reply, err := client.GetGroupApplicationList(context.Background(), req)
W
wenxu12345 已提交
300
	if err != nil {
W
wenxu12345 已提交
301
		log.NewError(req.OperationID, "GetGroupApplicationList failed ", err.Error(), req.String())
W
wenxu12345 已提交
302 303 304 305
		c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": err.Error()})
		return
	}

W
wenxu12345 已提交
306 307 308 309
	resp := api.GetGroupApplicationListResp{CommResp: api.CommResp{ErrCode: reply.ErrCode, ErrMsg: reply.ErrMsg}, GroupRequestList: reply.GroupRequestList}
	if len(resp.GroupRequestList) == 0 {
		resp.GroupRequestList = []*open_im_sdk.GroupRequest{}
	}
W
wenxu12345 已提交
310
	log.NewInfo(req.OperationID, "GetGroupApplicationList api return ", resp)
W
wenxu12345 已提交
311
	c.JSON(http.StatusOK, resp)
W
wenxu12345 已提交
312 313 314
}

func GetGroupsInfo(c *gin.Context) {
W
wenxu12345 已提交
315
	params := api.GetGroupInfoReq{}
W
wenxu12345 已提交
316
	if err := c.BindJSON(&params); err != nil {
W
wenxu12345 已提交
317
		log.NewError("0", "BindJSON failed ", err.Error())
W
wenxu12345 已提交
318 319 320
		c.JSON(http.StatusBadRequest, gin.H{"errCode": 400, "errMsg": err.Error()})
		return
	}
W
wenxu12345 已提交
321
	req := &rpc.GetGroupsInfoReq{}
W
wenxu12345 已提交
322
	utils.CopyStructFields(req, &params)
W
wenxu12345 已提交
323 324 325 326 327 328
	var ok bool
	ok, req.OpUserID = token_verify.GetUserIDFromToken(c.Request.Header.Get("token"))
	if !ok {
		log.NewError(req.OperationID, "GetUserIDFromToken false ", c.Request.Header.Get("token"))
		c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": "GetUserIDFromToken failed"})
		return
W
wenxu12345 已提交
329
	}
W
wenxu12345 已提交
330 331 332 333
	log.NewInfo(req.OperationID, "GetGroupsInfo args ", req.String())

	etcdConn := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImGroupName)
	client := rpc.NewGroupClient(etcdConn)
W
wenxu12345 已提交
334 335
	RpcResp, err := client.GetGroupsInfo(context.Background(), req)
	if err != nil {
W
wenxu12345 已提交
336
		log.NewError(req.OperationID, "GetGroupsInfo failed ", err.Error(), req.String())
W
wenxu12345 已提交
337 338 339 340
		c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": "call  rpc server failed"})
		return
	}

W
wenxu12345 已提交
341 342 343 344
	resp := api.GetGroupInfoResp{CommResp: api.CommResp{ErrCode: RpcResp.ErrCode, ErrMsg: RpcResp.ErrMsg}, GroupInfoList: RpcResp.GroupInfoList}
	if len(resp.GroupInfoList) == 0 {
		resp.GroupInfoList = []*open_im_sdk.GroupInfo{}
	}
W
wenxu12345 已提交
345
	log.NewInfo(req.OperationID, "GetGroupsInfo api return ", resp)
W
wenxu12345 已提交
346
	c.JSON(http.StatusOK, resp)
W
wenxu12345 已提交
347 348
}

W
wenxu12345 已提交
349
//process application
W
wenxu12345 已提交
350
func ApplicationGroupResponse(c *gin.Context) {
W
wenxu12345 已提交
351
	params := api.ApplicationGroupResponseReq{}
W
wenxu12345 已提交
352
	if err := c.BindJSON(&params); err != nil {
W
wenxu12345 已提交
353
		log.NewError("0", "BindJSON failed ", err.Error())
W
wenxu12345 已提交
354 355 356
		c.JSON(http.StatusBadRequest, gin.H{"errCode": 400, "errMsg": err.Error()})
		return
	}
W
wenxu12345 已提交
357
	req := &rpc.GroupApplicationResponseReq{}
W
wenxu12345 已提交
358
	utils.CopyStructFields(req, &params)
W
wenxu12345 已提交
359 360 361 362 363
	var ok bool
	ok, req.OpUserID = token_verify.GetUserIDFromToken(c.Request.Header.Get("token"))
	if !ok {
		log.NewError(req.OperationID, "GetUserIDFromToken false ", c.Request.Header.Get("token"))
		c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": "GetUserIDFromToken failed"})
W
wenxu12345 已提交
364 365
		return
	}
W
wenxu12345 已提交
366
	log.NewInfo(req.OperationID, "ApplicationGroupResponse args ", req.String())
W
wenxu12345 已提交
367

W
wenxu12345 已提交
368 369 370
	etcdConn := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImGroupName)
	client := rpc.NewGroupClient(etcdConn)
	reply, err := client.GroupApplicationResponse(context.Background(), req)
W
wenxu12345 已提交
371
	if err != nil {
W
wenxu12345 已提交
372
		log.NewError(req.OperationID, "GroupApplicationResponse failed ", req.String())
W
wenxu12345 已提交
373 374 375 376
		c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": err.Error()})
		return
	}

W
wenxu12345 已提交
377
	resp := api.ApplicationGroupResponseResp{CommResp: api.CommResp{ErrCode: reply.CommonResp.ErrCode, ErrMsg: reply.CommonResp.ErrMsg}}
W
wenxu12345 已提交
378
	log.NewInfo(req.OperationID, "ApplicationGroupResponse api return ", resp)
W
wenxu12345 已提交
379
	c.JSON(http.StatusOK, resp)
W
wenxu12345 已提交
380 381 382
}

func JoinGroup(c *gin.Context) {
W
wenxu12345 已提交
383
	params := api.JoinGroupReq{}
W
wenxu12345 已提交
384
	if err := c.BindJSON(&params); err != nil {
W
wenxu12345 已提交
385
		log.NewError("0", "BindJSON failed ", err.Error())
W
wenxu12345 已提交
386 387 388
		c.JSON(http.StatusBadRequest, gin.H{"errCode": 400, "errMsg": err.Error()})
		return
	}
W
wenxu12345 已提交
389 390 391 392 393 394 395 396
	req := &rpc.JoinGroupReq{}
	utils.CopyStructFields(req, params)
	var ok bool
	ok, req.OpUserID = token_verify.GetUserIDFromToken(c.Request.Header.Get("token"))
	if !ok {
		log.NewError(req.OperationID, "GetUserIDFromToken false ", c.Request.Header.Get("token"))
		c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": "GetUserIDFromToken failed"})
		return
W
wenxu12345 已提交
397
	}
W
wenxu12345 已提交
398 399 400 401
	log.NewInfo(req.OperationID, "JoinGroup args ", req.String())
	etcdConn := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImGroupName)
	client := rpc.NewGroupClient(etcdConn)

W
wenxu12345 已提交
402 403
	RpcResp, err := client.JoinGroup(context.Background(), req)
	if err != nil {
W
wenxu12345 已提交
404
		log.NewError(req.OperationID, "JoinGroup failed ", err.Error(), req.String())
W
wenxu12345 已提交
405 406 407
		c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": "call  rpc server failed"})
		return
	}
W
wenxu12345 已提交
408
	resp := api.CommResp{ErrCode: RpcResp.CommonResp.ErrCode, ErrMsg: RpcResp.CommonResp.ErrMsg}
W
wenxu12345 已提交
409
	log.NewInfo(req.OperationID, "JoinGroup api return", RpcResp.String())
W
wenxu12345 已提交
410
	c.JSON(http.StatusOK, resp)
W
wenxu12345 已提交
411 412 413
}

func QuitGroup(c *gin.Context) {
W
wenxu12345 已提交
414
	params := api.QuitGroupReq{}
W
wenxu12345 已提交
415
	if err := c.BindJSON(&params); err != nil {
W
wenxu12345 已提交
416
		log.NewError("0", "BindJSON failed ", err.Error())
W
wenxu12345 已提交
417 418 419
		c.JSON(http.StatusBadRequest, gin.H{"errCode": 400, "errMsg": err.Error()})
		return
	}
W
wenxu12345 已提交
420
	req := &rpc.QuitGroupReq{}
W
wenxu12345 已提交
421
	utils.CopyStructFields(req, &params)
W
wenxu12345 已提交
422 423 424 425 426 427
	var ok bool
	ok, req.OpUserID = token_verify.GetUserIDFromToken(c.Request.Header.Get("token"))
	if !ok {
		log.NewError(req.OperationID, "GetUserIDFromToken false ", c.Request.Header.Get("token"))
		c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": "GetUserIDFromToken failed"})
		return
W
wenxu12345 已提交
428
	}
W
wenxu12345 已提交
429 430 431 432
	log.NewInfo(req.OperationID, "QuitGroup args ", req.String())

	etcdConn := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImGroupName)
	client := rpc.NewGroupClient(etcdConn)
W
wenxu12345 已提交
433 434
	RpcResp, err := client.QuitGroup(context.Background(), req)
	if err != nil {
W
wenxu12345 已提交
435
		log.NewError(req.OperationID, "call quit group rpc server failed,err=%s", err.Error())
W
wenxu12345 已提交
436 437 438
		c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": "call  rpc server failed"})
		return
	}
W
wenxu12345 已提交
439
	resp := api.CommResp{ErrCode: RpcResp.CommonResp.ErrCode, ErrMsg: RpcResp.CommonResp.ErrMsg}
W
wenxu12345 已提交
440
	log.NewInfo(req.OperationID, "QuitGroup api return", RpcResp.String())
W
wenxu12345 已提交
441
	c.JSON(http.StatusOK, resp)
W
wenxu12345 已提交
442 443 444
}

func SetGroupInfo(c *gin.Context) {
W
wenxu12345 已提交
445
	params := api.SetGroupInfoReq{}
W
wenxu12345 已提交
446
	if err := c.BindJSON(&params); err != nil {
W
wenxu12345 已提交
447
		log.NewError("0", "BindJSON failed ", err.Error())
W
wenxu12345 已提交
448 449 450
		c.JSON(http.StatusBadRequest, gin.H{"errCode": 400, "errMsg": err.Error()})
		return
	}
W
wenxu12345 已提交
451 452 453
	req := &rpc.SetGroupInfoReq{GroupInfo: &open_im_sdk.GroupInfo{}}
	utils.CopyStructFields(req.GroupInfo, &params.Group)
	req.OperationID = params.OperationID
W
wenxu12345 已提交
454 455 456 457 458 459
	var ok bool
	ok, req.OpUserID = token_verify.GetUserIDFromToken(c.Request.Header.Get("token"))
	if !ok {
		log.NewError(req.OperationID, "GetUserIDFromToken false ", c.Request.Header.Get("token"))
		c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": "GetUserIDFromToken failed"})
		return
W
wenxu12345 已提交
460
	}
W
wenxu12345 已提交
461 462 463 464
	log.NewInfo(req.OperationID, "SetGroupInfo args ", req.String())

	etcdConn := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImGroupName)
	client := rpc.NewGroupClient(etcdConn)
W
wenxu12345 已提交
465 466
	RpcResp, err := client.SetGroupInfo(context.Background(), req)
	if err != nil {
W
wenxu12345 已提交
467
		log.NewError(req.OperationID, "SetGroupInfo failed ", err.Error(), req.String())
W
wenxu12345 已提交
468 469 470
		c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": "call  rpc server failed"})
		return
	}
W
wenxu12345 已提交
471
	resp := api.SetGroupInfoResp{CommResp: api.CommResp{ErrCode: RpcResp.CommonResp.ErrCode, ErrMsg: RpcResp.CommonResp.ErrMsg}}
W
wenxu12345 已提交
472 473
	c.JSON(http.StatusOK, resp)
	log.NewInfo(req.OperationID, "SetGroupInfo api return ", resp)
W
wenxu12345 已提交
474 475 476
}

func TransferGroupOwner(c *gin.Context) {
W
wenxu12345 已提交
477
	params := api.TransferGroupOwnerReq{}
W
wenxu12345 已提交
478
	if err := c.BindJSON(&params); err != nil {
W
wenxu12345 已提交
479
		log.NewError("0", "BindJSON failed ", err.Error())
W
wenxu12345 已提交
480 481 482
		c.JSON(http.StatusBadRequest, gin.H{"errCode": 400, "errMsg": err.Error()})
		return
	}
W
wenxu12345 已提交
483
	req := &rpc.TransferGroupOwnerReq{}
W
wenxu12345 已提交
484
	utils.CopyStructFields(req, &params)
W
wenxu12345 已提交
485 486 487 488 489
	var ok bool
	ok, req.OpUserID = token_verify.GetUserIDFromToken(c.Request.Header.Get("token"))
	if !ok {
		log.NewError(req.OperationID, "GetUserIDFromToken false ", c.Request.Header.Get("token"))
		c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": "GetUserIDFromToken failed"})
W
wenxu12345 已提交
490 491
		return
	}
W
wenxu12345 已提交
492
	log.NewInfo(req.OperationID, "TransferGroupOwner args ", req.String())
W
wenxu12345 已提交
493

W
wenxu12345 已提交
494 495 496
	etcdConn := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImGroupName)
	client := rpc.NewGroupClient(etcdConn)
	reply, err := client.TransferGroupOwner(context.Background(), req)
W
wenxu12345 已提交
497
	if err != nil {
W
wenxu12345 已提交
498
		log.NewError(req.OperationID, "TransferGroupOwner failed ", req.String())
W
wenxu12345 已提交
499 500 501 502
		c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": err.Error()})
		return
	}

W
wenxu12345 已提交
503
	resp := api.TransferGroupOwnerResp{CommResp: api.CommResp{ErrCode: reply.CommonResp.ErrCode, ErrMsg: reply.CommonResp.ErrMsg}}
W
wenxu12345 已提交
504
	log.NewInfo(req.OperationID, "TransferGroupOwner api return ", resp)
W
wenxu12345 已提交
505 506
	c.JSON(http.StatusOK, resp)

W
wenxu12345 已提交
507
}