From a1247d9ca450d547164592159895781bc1f45b65 Mon Sep 17 00:00:00 2001 From: junleea <354425203@qq.com> Date: Mon, 7 Oct 2024 15:58:58 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E8=8E=B7=E5=8F=96=E7=BE=A4?= =?UTF-8?q?=E6=88=90=E5=91=98=EF=BC=8C=E6=B7=BB=E5=8A=A0=E7=AE=A1=E7=90=86?= =?UTF-8?q?=E5=91=98=E8=B8=A2=E7=BE=A4=E6=88=90=E5=91=98=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- dao/im.go | 7 ++++++- handler/im.go | 49 +++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 55 insertions(+), 1 deletion(-) diff --git a/dao/im.go b/dao/im.go index d06b52d..deed105 100644 --- a/dao/im.go +++ b/dao/im.go @@ -244,7 +244,7 @@ func FindFriendsIDs(user_id int) []Friend { func FindFriends(user_id int) []FriendRet { var friends []FriendRet - DB.Debug().Raw("select users.id, users.name, users.email from users join friends on users.id = friends.friend_id where friends.user_id = ? and friends.deleted_at is null", user_id).Scan(&friends) + DB.Debug().Raw("select distinct users.id, users.name, users.email from users join friends on users.id = friends.friend_id where friends.user_id = ? and friends.deleted_at is null", user_id).Scan(&friends) return friends } func GetGroups(user_id int) []Group { @@ -289,6 +289,11 @@ func FindGroupUsers(group_id int) []GroupUser { DB.Debug().Where("group_id = ?", group_id).Find(&groupUsers) return groupUsers } +func FindGroupUsersInfo(group_id int) []FriendRet { + var groupUsers []FriendRet + DB.Debug().Raw("select distinct users.id, users.name, users.email from users join group_users on users.id = group_users.user_id where group_users.group_id = ?", group_id).Scan(&groupUsers) + return groupUsers +} func FindGroupByNameLike(groupName string) []Group { var groups []Group diff --git a/handler/im.go b/handler/im.go index 74ed1a9..4db633d 100644 --- a/handler/im.go +++ b/handler/im.go @@ -77,6 +77,7 @@ func SetUpIMGroup(router *gin.Engine) { //获取好友请求 imGroup.POST("/get_friend_request", GetFriendRequest) imGroup.POST("/del_friend_or_group", DelFriendOrGroup) + imGroup.POST("/get_group_users_info", GetGroupUsersInfo) } func generateRandomHexString(length int) (string, error) { bytes := make([]byte, length/2) // 16字节的字符串需要32个十六进制字符,即16个字节 @@ -86,6 +87,31 @@ func generateRandomHexString(length int) (string, error) { return hex.EncodeToString(bytes), nil } +func GetGroupUsersInfo(c *gin.Context) { + var req Message + id, _ := c.Get("id") + user_id := int(id.(float64)) + if err := c.ShouldBind(&req); err == nil { + if req.GroupID == 0 { + c.JSON(http.StatusOK, gin.H{"error": "parameter error", "code": proto.ParameterError, "message": "failed"}) + return + } + group := dao.FindGroupByID(req.GroupID) + if len(group) == 0 { + c.JSON(http.StatusOK, gin.H{"error": "parameter error", "code": proto.ParameterError, "message": "failed"}) + return + } + if group[0].AuthID != user_id { + c.JSON(http.StatusOK, gin.H{"error": "no permission", "code": proto.ParameterError, "message": "不是群主"}) + return + } + data := dao.FindGroupUsersInfo(req.GroupID) + c.JSON(http.StatusOK, gin.H{"code": proto.SuccessCode, "data": data, "message": "success"}) + } else { + c.JSON(http.StatusOK, gin.H{"error": err.Error(), "code": proto.ParameterError, "message": "failed"}) + } +} + func GetGroups(c *gin.Context) { id, _ := c.Get("id") user_id := int(id.(float64)) @@ -137,6 +163,29 @@ func DelFriendOrGroup(c *gin.Context) { } else { c.JSON(http.StatusOK, gin.H{"error": "parameter error", "code": proto.ParameterError, "message": "failed"}) } + } else if req.Type == 4 { + //群管理员删除群成员 + if req.GroupID == 0 { + c.JSON(http.StatusOK, gin.H{"error": "parameter error", "code": proto.ParameterError, "message": "failed"}) + return + } + //获取群 + group := dao.FindGroupByID(req.GroupID) + if len(group) == 0 { + c.JSON(http.StatusOK, gin.H{"error": "parameter error", "code": proto.ParameterError, "message": "failed"}) + return + } + //判断是否是群主 + if group[0].AuthID != cid { + c.JSON(http.StatusOK, gin.H{"error": "no permission", "code": proto.ParameterError, "message": "不是群主"}) + return + } + err2 := service.QuitGroupService(req.To_user_id, req.GroupID) + if err2 == nil { + c.JSON(http.StatusOK, gin.H{"code": proto.SuccessCode, "message": "success"}) + } else { + c.JSON(http.StatusOK, gin.H{"error": err2.Error(), "code": proto.OperationFailed, "message": "failed"}) + } } else { c.JSON(http.StatusOK, gin.H{"error": err.Error(), "code": proto.ParameterError, "message": "failed"}) }