group.go 20.8 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 27 28 29 30 31 32 33
	req := &rpc.KickGroupMemberReq{}
	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
落凡尘. 已提交
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())
落凡尘.'s avatar
落凡尘. 已提交
43 44 45 46
		c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": err.Error()})
		return
	}

W
wenxu12345 已提交
47 48 49 50 51
	var memberListResp api.KickGroupMemberResp
	memberListResp.ErrMsg = RpcResp.ErrMsg
	memberListResp.ErrCode = RpcResp.ErrCode
	for _, v := range RpcResp.Id2ResultList {
		memberListResp.Data = append(memberListResp.Data, &api.Id2Result{UserID: v.UserID, Result: v.Result})
落凡尘.'s avatar
落凡尘. 已提交
52
	}
W
wenxu12345 已提交
53
	log.NewInfo(req.OperationID, "KickGroupMember api return ", memberListResp)
落凡尘.'s avatar
落凡尘. 已提交
54 55 56 57
	c.JSON(http.StatusOK, memberListResp)
}

func GetGroupMembersInfo(c *gin.Context) {
W
wenxu12345 已提交
58
	params := api.GetGroupMembersInfoReq{}
落凡尘.'s avatar
落凡尘. 已提交
59
	if err := c.BindJSON(&params); err != nil {
W
wenxu12345 已提交
60
		log.NewError("0", "BindJSON failed ", err.Error())
落凡尘.'s avatar
落凡尘. 已提交
61 62 63
		c.JSON(http.StatusBadRequest, gin.H{"errCode": 400, "errMsg": err.Error()})
		return
	}
W
wenxu12345 已提交
64 65 66 67 68 69
	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 已提交
70 71
		//c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": "GetUserIDFromToken failed"})
		api.SetErrCodeMsg(c, http.StatusInternalServerError)
W
wenxu12345 已提交
72
		return
落凡尘.'s avatar
落凡尘. 已提交
73
	}
W
wenxu12345 已提交
74 75 76 77
	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
落凡尘. 已提交
78 79 80

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

W
wenxu12345 已提交
86 87
	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
落凡尘. 已提交
88 89 90 91
	c.JSON(http.StatusOK, memberListResp)
}

func GetGroupMemberList(c *gin.Context) {
W
wenxu12345 已提交
92
	params := api.GetGroupMemberListReq{}
落凡尘.'s avatar
落凡尘. 已提交
93
	if err := c.BindJSON(&params); err != nil {
W
wenxu12345 已提交
94
		log.NewError("0", "BindJSON failed ", err.Error())
落凡尘.'s avatar
落凡尘. 已提交
95 96 97
		c.JSON(http.StatusBadRequest, gin.H{"errCode": 400, "errMsg": err.Error()})
		return
	}
W
wenxu12345 已提交
98 99 100 101 102 103 104 105
	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
落凡尘. 已提交
106
	}
W
wenxu12345 已提交
107 108 109 110 111
	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
落凡尘. 已提交
112 113
	RpcResp, err := client.GetGroupMemberList(context.Background(), req)
	if err != nil {
W
wenxu12345 已提交
114
		log.NewError(req.OperationID, "GetGroupMemberList failed, ", err.Error(), req.String())
落凡尘.'s avatar
落凡尘. 已提交
115 116 117 118
		c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": err.Error()})
		return
	}

W
wenxu12345 已提交
119
	memberListResp := api.GetGroupMemberListResp{CommResp: api.CommResp{ErrCode: RpcResp.ErrCode, ErrMsg: RpcResp.ErrMsg}, Data: RpcResp.MemberList, NextSeq: RpcResp.NextSeq}
落凡尘.'s avatar
落凡尘. 已提交
120
	c.JSON(http.StatusOK, memberListResp)
W
wenxu12345 已提交
121
	log.NewInfo(req.OperationID, "GetGroupMemberList api return ", memberListResp)
落凡尘.'s avatar
落凡尘. 已提交
122 123
}

落凡尘.'s avatar
落凡尘. 已提交
124
func GetGroupAllMember(c *gin.Context) {
W
wenxu12345 已提交
125
	params := api.GetGroupAllMemberReq{}
落凡尘.'s avatar
落凡尘. 已提交
126
	if err := c.BindJSON(&params); err != nil {
W
wenxu12345 已提交
127
		log.NewError("0", "BindJSON failed ", err.Error())
落凡尘.'s avatar
落凡尘. 已提交
128 129 130
		c.JSON(http.StatusBadRequest, gin.H{"errCode": 400, "errMsg": err.Error()})
		return
	}
W
wenxu12345 已提交
131 132 133 134 135 136 137 138
	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
落凡尘. 已提交
139
	}
W
wenxu12345 已提交
140 141 142 143
	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
落凡尘. 已提交
144 145
	RpcResp, err := client.GetGroupAllMember(context.Background(), req)
	if err != nil {
W
wenxu12345 已提交
146
		log.NewError(req.OperationID, "GetGroupAllMember failed ", err.Error(), req.String())
落凡尘.'s avatar
落凡尘. 已提交
147 148 149 150
		c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": err.Error()})
		return
	}

W
wenxu12345 已提交
151
	memberListResp := api.GetGroupAllMemberResp{CommResp: api.CommResp{ErrCode: RpcResp.ErrCode, ErrMsg: RpcResp.ErrMsg}, Data: RpcResp.MemberList}
落凡尘.'s avatar
落凡尘. 已提交
152
	c.JSON(http.StatusOK, memberListResp)
W
wenxu12345 已提交
153
	log.NewInfo(req.OperationID, "GetGroupAllMember api return ", memberListResp)
落凡尘.'s avatar
落凡尘. 已提交
154 155 156
}

func GetJoinedGroupList(c *gin.Context) {
W
wenxu12345 已提交
157
	params := api.GetJoinedGroupListReq{}
落凡尘.'s avatar
落凡尘. 已提交
158
	if err := c.BindJSON(&params); err != nil {
W
wenxu12345 已提交
159
		log.NewError("0", "BindJSON failed ", err.Error())
落凡尘.'s avatar
落凡尘. 已提交
160 161 162
		c.JSON(http.StatusBadRequest, gin.H{"errCode": 400, "errMsg": err.Error()})
		return
	}
W
wenxu12345 已提交
163 164 165 166 167 168 169 170
	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
落凡尘. 已提交
171
	}
W
wenxu12345 已提交
172
	log.NewInfo(req.OperationID, "GetJoinedGroupList args ", req.String())
落凡尘.'s avatar
落凡尘. 已提交
173

W
wenxu12345 已提交
174 175
	etcdConn := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImGroupName)
	client := rpc.NewGroupClient(etcdConn)
落凡尘.'s avatar
落凡尘. 已提交
176 177
	RpcResp, err := client.GetJoinedGroupList(context.Background(), req)
	if err != nil {
W
wenxu12345 已提交
178
		log.NewError(req.OperationID, "GetJoinedGroupList failed  ", err.Error(), req.String())
落凡尘.'s avatar
落凡尘. 已提交
179 180 181 182
		c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": err.Error()})
		return
	}

W
wenxu12345 已提交
183
	GroupListResp := api.GetJoinedGroupListResp{CommResp: api.CommResp{ErrCode: RpcResp.ErrCode, ErrMsg: RpcResp.ErrMsg}, Data: RpcResp.GroupList}
programor_guo's avatar
programor_guo 已提交
184 185 186
	if len(RpcResp.GroupList) == 0 {
		GroupListResp.Data = []*open_im_sdk.GroupInfo{}
	}
落凡尘.'s avatar
落凡尘. 已提交
187
	c.JSON(http.StatusOK, GroupListResp)
W
wenxu12345 已提交
188
	log.NewInfo(req.OperationID, "GetJoinedGroupList api return ", GroupListResp)
落凡尘.'s avatar
落凡尘. 已提交
189 190 191
}

func InviteUserToGroup(c *gin.Context) {
W
wenxu12345 已提交
192
	params := api.InviteUserToGroupReq{}
落凡尘.'s avatar
落凡尘. 已提交
193
	if err := c.BindJSON(&params); err != nil {
W
wenxu12345 已提交
194
		log.NewError("0", "BindJSON failed ", err.Error())
落凡尘.'s avatar
落凡尘. 已提交
195 196 197
		c.JSON(http.StatusBadRequest, gin.H{"errCode": 400, "errMsg": err.Error()})
		return
	}
W
wenxu12345 已提交
198 199 200 201 202 203 204 205
	req := &rpc.InviteUserToGroupReq{}
	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
落凡尘. 已提交
206
	}
W
wenxu12345 已提交
207
	log.NewInfo(req.OperationID, "InviteUserToGroup args ", req.String())
落凡尘.'s avatar
落凡尘. 已提交
208

W
wenxu12345 已提交
209 210
	etcdConn := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImGroupName)
	client := rpc.NewGroupClient(etcdConn)
落凡尘.'s avatar
落凡尘. 已提交
211 212
	RpcResp, err := client.InviteUserToGroup(context.Background(), req)
	if err != nil {
W
wenxu12345 已提交
213
		log.NewError(req.OperationID, "InviteUserToGroup failed ", err.Error(), req.String())
落凡尘.'s avatar
落凡尘. 已提交
214 215 216 217
		c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": err.Error()})
		return
	}

W
wenxu12345 已提交
218 219 220
	Resp := api.InviteUserToGroupResp{CommResp: api.CommResp{ErrCode: RpcResp.ErrCode, ErrMsg: RpcResp.ErrMsg}}
	for _, v := range RpcResp.Id2ResultList {
		Resp.Data = append(Resp.Data, api.Id2Result{UserID: v.UserID, Result: v.Result})
落凡尘.'s avatar
落凡尘. 已提交
221
	}
W
wenxu12345 已提交
222 223
	c.JSON(http.StatusOK, Resp)
	log.NewInfo(req.OperationID, "InviteUserToGroup api return ", Resp)
W
wenxu12345 已提交
224 225 226
}

func CreateGroup(c *gin.Context) {
W
wenxu12345 已提交
227
	params := api.CreateGroupReq{}
W
wenxu12345 已提交
228
	if err := c.BindJSON(&params); err != nil {
W
wenxu12345 已提交
229
		log.NewError("0", "BindJSON failed ", err.Error())
W
wenxu12345 已提交
230 231 232
		c.JSON(http.StatusBadRequest, gin.H{"errCode": 400, "errMsg": err.Error()})
		return
	}
W
wenxu12345 已提交
233
	req := &rpc.CreateGroupReq{}
W
wenxu12345 已提交
234 235 236 237
	utils.CopyStructFields(req, &params)
	for _, v := range params.MemberList {
		req.InitMemberList = append(req.InitMemberList, &rpc.GroupAddMemberInfo{UserID: v.UserID, RoleLevel: v.RoleLevel})
	}
W
wenxu12345 已提交
238 239 240 241 242 243
	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 已提交
244
	}
W
wenxu12345 已提交
245 246 247 248
	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 已提交
249 250
	RpcResp, err := client.CreateGroup(context.Background(), req)
	if err != nil {
W
wenxu12345 已提交
251
		log.NewError(req.OperationID, "CreateGroup failed ", err.Error(), req.String())
W
wenxu12345 已提交
252 253 254
		c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": "call  rpc server failed"})
		return
	}
W
wenxu12345 已提交
255

W
wenxu12345 已提交
256
	resp := api.CreateGroupResp{CommResp: api.CommResp{ErrCode: RpcResp.ErrCode, ErrMsg: RpcResp.ErrMsg}}
W
wenxu12345 已提交
257
	if RpcResp.ErrCode == 0 {
W
wenxu12345 已提交
258
		utils.CopyStructFields(&resp.GroupInfo, RpcResp.GroupInfo)
W
wenxu12345 已提交
259
	}
W
wenxu12345 已提交
260
	log.NewInfo(req.OperationID, "CreateGroup api return ", resp)
W
wenxu12345 已提交
261
	c.JSON(http.StatusOK, resp)
W
wenxu12345 已提交
262 263
}

W
wenxu12345 已提交
264
//  群主或管理员收到的
W
wenxu12345 已提交
265
func GetGroupApplicationList(c *gin.Context) {
W
wenxu12345 已提交
266
	params := api.GetGroupApplicationListReq{}
W
wenxu12345 已提交
267
	if err := c.BindJSON(&params); err != nil {
W
wenxu12345 已提交
268
		log.NewError("0", "BindJSON failed ", err.Error())
W
wenxu12345 已提交
269 270 271
		c.JSON(http.StatusBadRequest, gin.H{"errCode": 400, "errMsg": err.Error()})
		return
	}
W
wenxu12345 已提交
272 273 274 275 276 277 278
	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 已提交
279 280
		return
	}
W
wenxu12345 已提交
281 282 283 284 285
	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 已提交
286
	if err != nil {
W
wenxu12345 已提交
287
		log.NewError(req.OperationID, "GetGroupApplicationList failed ", err.Error(), req.String())
W
wenxu12345 已提交
288 289 290 291
		c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": err.Error()})
		return
	}

W
wenxu12345 已提交
292 293 294 295
	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 已提交
296
	log.NewInfo(req.OperationID, "GetGroupApplicationList api return ", resp)
W
wenxu12345 已提交
297
	c.JSON(http.StatusOK, resp)
W
wenxu12345 已提交
298 299 300
}

func GetGroupsInfo(c *gin.Context) {
W
wenxu12345 已提交
301
	params := api.GetGroupInfoReq{}
W
wenxu12345 已提交
302
	if err := c.BindJSON(&params); err != nil {
W
wenxu12345 已提交
303
		log.NewError("0", "BindJSON failed ", err.Error())
W
wenxu12345 已提交
304 305 306
		c.JSON(http.StatusBadRequest, gin.H{"errCode": 400, "errMsg": err.Error()})
		return
	}
W
wenxu12345 已提交
307
	req := &rpc.GetGroupsInfoReq{}
W
wenxu12345 已提交
308
	utils.CopyStructFields(req, &params)
W
wenxu12345 已提交
309 310 311 312 313 314
	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 已提交
315
	}
W
wenxu12345 已提交
316 317 318 319
	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 已提交
320 321
	RpcResp, err := client.GetGroupsInfo(context.Background(), req)
	if err != nil {
W
wenxu12345 已提交
322
		log.NewError(req.OperationID, "GetGroupsInfo failed ", err.Error(), req.String())
W
wenxu12345 已提交
323 324 325 326
		c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": "call  rpc server failed"})
		return
	}

W
wenxu12345 已提交
327 328 329 330
	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 已提交
331
	log.NewInfo(req.OperationID, "GetGroupsInfo api return ", resp)
W
wenxu12345 已提交
332
	c.JSON(http.StatusOK, resp)
W
wenxu12345 已提交
333 334
}

W
wenxu12345 已提交
335
//process application
W
wenxu12345 已提交
336
func ApplicationGroupResponse(c *gin.Context) {
W
wenxu12345 已提交
337
	params := api.ApplicationGroupResponseReq{}
W
wenxu12345 已提交
338
	if err := c.BindJSON(&params); err != nil {
W
wenxu12345 已提交
339
		log.NewError("0", "BindJSON failed ", err.Error())
W
wenxu12345 已提交
340 341 342
		c.JSON(http.StatusBadRequest, gin.H{"errCode": 400, "errMsg": err.Error()})
		return
	}
W
wenxu12345 已提交
343
	req := &rpc.GroupApplicationResponseReq{}
W
wenxu12345 已提交
344
	utils.CopyStructFields(req, &params)
W
wenxu12345 已提交
345 346 347 348 349
	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 已提交
350 351
		return
	}
W
wenxu12345 已提交
352
	log.NewInfo(req.OperationID, "ApplicationGroupResponse args ", req.String())
W
wenxu12345 已提交
353

W
wenxu12345 已提交
354 355 356
	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 已提交
357
	if err != nil {
W
wenxu12345 已提交
358
		log.NewError(req.OperationID, "GroupApplicationResponse failed ", req.String())
W
wenxu12345 已提交
359 360 361 362
		c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": err.Error()})
		return
	}

W
wenxu12345 已提交
363
	resp := api.ApplicationGroupResponseResp{CommResp: api.CommResp{ErrCode: reply.CommonResp.ErrCode, ErrMsg: reply.CommonResp.ErrMsg}}
W
wenxu12345 已提交
364
	log.NewInfo(req.OperationID, "ApplicationGroupResponse api return ", resp)
W
wenxu12345 已提交
365
	c.JSON(http.StatusOK, resp)
W
wenxu12345 已提交
366 367 368
}

func JoinGroup(c *gin.Context) {
W
wenxu12345 已提交
369
	params := api.JoinGroupReq{}
W
wenxu12345 已提交
370
	if err := c.BindJSON(&params); err != nil {
W
wenxu12345 已提交
371
		log.NewError("0", "BindJSON failed ", err.Error())
W
wenxu12345 已提交
372 373 374
		c.JSON(http.StatusBadRequest, gin.H{"errCode": 400, "errMsg": err.Error()})
		return
	}
W
wenxu12345 已提交
375 376 377 378 379 380 381 382
	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 已提交
383
	}
W
wenxu12345 已提交
384 385 386 387
	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 已提交
388 389
	RpcResp, err := client.JoinGroup(context.Background(), req)
	if err != nil {
W
wenxu12345 已提交
390
		log.NewError(req.OperationID, "JoinGroup failed ", err.Error(), req.String())
W
wenxu12345 已提交
391 392 393
		c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": "call  rpc server failed"})
		return
	}
W
wenxu12345 已提交
394
	resp := api.CommResp{ErrCode: RpcResp.CommonResp.ErrCode, ErrMsg: RpcResp.CommonResp.ErrMsg}
W
wenxu12345 已提交
395
	log.NewInfo(req.OperationID, "JoinGroup api return", RpcResp.String())
W
wenxu12345 已提交
396
	c.JSON(http.StatusOK, resp)
W
wenxu12345 已提交
397 398 399
}

func QuitGroup(c *gin.Context) {
W
wenxu12345 已提交
400
	params := api.QuitGroupReq{}
W
wenxu12345 已提交
401
	if err := c.BindJSON(&params); err != nil {
W
wenxu12345 已提交
402
		log.NewError("0", "BindJSON failed ", err.Error())
W
wenxu12345 已提交
403 404 405
		c.JSON(http.StatusBadRequest, gin.H{"errCode": 400, "errMsg": err.Error()})
		return
	}
W
wenxu12345 已提交
406
	req := &rpc.QuitGroupReq{}
W
wenxu12345 已提交
407
	utils.CopyStructFields(req, &params)
W
wenxu12345 已提交
408 409 410 411 412 413
	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 已提交
414
	}
W
wenxu12345 已提交
415 416 417 418
	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 已提交
419 420
	RpcResp, err := client.QuitGroup(context.Background(), req)
	if err != nil {
W
wenxu12345 已提交
421
		log.NewError(req.OperationID, "call quit group rpc server failed,err=%s", err.Error())
W
wenxu12345 已提交
422 423 424
		c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": "call  rpc server failed"})
		return
	}
W
wenxu12345 已提交
425
	resp := api.CommResp{ErrCode: RpcResp.CommonResp.ErrCode, ErrMsg: RpcResp.CommonResp.ErrMsg}
W
wenxu12345 已提交
426
	log.NewInfo(req.OperationID, "QuitGroup api return", RpcResp.String())
W
wenxu12345 已提交
427
	c.JSON(http.StatusOK, resp)
W
wenxu12345 已提交
428 429 430
}

func SetGroupInfo(c *gin.Context) {
W
wenxu12345 已提交
431
	params := api.SetGroupInfoReq{}
W
wenxu12345 已提交
432
	if err := c.BindJSON(&params); err != nil {
W
wenxu12345 已提交
433
		log.NewError("0", "BindJSON failed ", err.Error())
W
wenxu12345 已提交
434 435 436
		c.JSON(http.StatusBadRequest, gin.H{"errCode": 400, "errMsg": err.Error()})
		return
	}
W
wenxu12345 已提交
437 438 439
	req := &rpc.SetGroupInfoReq{GroupInfo: &open_im_sdk.GroupInfo{}}
	utils.CopyStructFields(req.GroupInfo, &params.Group)
	req.OperationID = params.OperationID
W
wenxu12345 已提交
440 441 442 443 444 445
	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 已提交
446
	}
W
wenxu12345 已提交
447 448 449 450
	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 已提交
451 452
	RpcResp, err := client.SetGroupInfo(context.Background(), req)
	if err != nil {
W
wenxu12345 已提交
453
		log.NewError(req.OperationID, "SetGroupInfo failed ", err.Error(), req.String())
W
wenxu12345 已提交
454 455 456
		c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": "call  rpc server failed"})
		return
	}
W
wenxu12345 已提交
457
	resp := api.SetGroupInfoResp{CommResp: api.CommResp{ErrCode: RpcResp.CommonResp.ErrCode, ErrMsg: RpcResp.CommonResp.ErrMsg}}
W
wenxu12345 已提交
458 459
	c.JSON(http.StatusOK, resp)
	log.NewInfo(req.OperationID, "SetGroupInfo api return ", resp)
W
wenxu12345 已提交
460 461 462
}

func TransferGroupOwner(c *gin.Context) {
W
wenxu12345 已提交
463
	params := api.TransferGroupOwnerReq{}
W
wenxu12345 已提交
464
	if err := c.BindJSON(&params); err != nil {
W
wenxu12345 已提交
465
		log.NewError("0", "BindJSON failed ", err.Error())
W
wenxu12345 已提交
466 467 468
		c.JSON(http.StatusBadRequest, gin.H{"errCode": 400, "errMsg": err.Error()})
		return
	}
W
wenxu12345 已提交
469 470 471 472 473 474 475
	req := &rpc.TransferGroupOwnerReq{}
	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 已提交
476 477
		return
	}
W
wenxu12345 已提交
478
	log.NewInfo(req.OperationID, "TransferGroupOwner args ", req.String())
W
wenxu12345 已提交
479

W
wenxu12345 已提交
480 481 482
	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 已提交
483
	if err != nil {
W
wenxu12345 已提交
484
		log.NewError(req.OperationID, "TransferGroupOwner failed ", req.String())
W
wenxu12345 已提交
485 486 487
		c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": err.Error()})
		return
	}
W
wenxu12345 已提交
488
	resp := api.CommResp{ErrCode: reply.CommonResp.ErrCode, ErrMsg: reply.CommonResp.ErrMsg}
W
wenxu12345 已提交
489 490
	c.JSON(http.StatusOK, resp)
	log.NewInfo(req.OperationID, "TransferGroupOwner api return ", resp)
W
wenxu12345 已提交
491
}