Compare commits

..

No commits in common. "729f333fb0117bf5cc36b09a9fb9e233fd7be489" and "63215bba4a654c273be940b5bc1fac24ac45ea5c" have entirely different histories.

3 changed files with 15 additions and 134 deletions

View File

@ -78,9 +78,9 @@ func GetMsgGroupByIndex(group_id, index int) ([]GroupMessage, error) {
}
func GetGroupRequestUsers(user_id int) []GroupRequestUsers {
var users []GroupRequestUsers
DB.Raw("select id,im_id,name,email,group_id FROM (SELECT im_id,from_user_id,group_id FROM (( SELECT id as im_id,from_user_id,group_id FROM messages WHERE type=? and status=? ) as m JOIN groups as g on g.id=m.group_id ) where g.auth_id=? ) as e JOIN users as u ON e.from_user_id=u.id", proto.MSG_TYPE_GROUP_ADD, 0, user_id).Scan(&users)
func GetGroupRequestUsers(user_id int) []FriendRequest {
var users []FriendRequest
DB.Raw("select id,im_id,name,email FROM (SELECT im_id,from_user_id,group_id FROM (( SELECT id as im_id,from_user_id,group_id FROM messages WHERE type=? and status=? ) as m JOIN groups as g on g.id=m.group_id ) where g.auth_id=? ) as e JOIN users as u ON e.from_user_id=u.id", proto.MSG_TYPE_GROUP_INVI, 0, user_id).Scan(&users)
return users
}
@ -244,7 +244,7 @@ func FindFriendsIDs(user_id int) []Friend {
func FindFriends(user_id int) []FriendRet {
var friends []FriendRet
DB.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)
DB.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)
return friends
}
func GetGroups(user_id int) []Group {
@ -278,11 +278,6 @@ type FriendRequest struct {
Age int `json:"age"`
}
type GroupRequestUsers struct {
FriendRequest
GroupID int `json:"group_id"`
}
func GetFriendRequest(user_id int) []FriendRequest {
var users []FriendRequest
DB.Raw("select users.id,users.name,users.email,users.age,messages.id as im_id from users join messages on users.id = messages.from_user_id where messages.to_user_id = ? and messages.type = ? and status = ?", user_id, proto.MSG_TYPE_FRIEND, 0).Scan(&users)
@ -294,11 +289,6 @@ func FindGroupUsers(group_id int) []GroupUser {
DB.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 = ? and group_users.deleted_at is null", group_id).Scan(&groupUsers)
return groupUsers
}
func FindGroupByNameLike(groupName string) []Group {
var groups []Group

View File

@ -77,7 +77,6 @@ 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个字节
@ -87,31 +86,6 @@ 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))
@ -160,29 +134,6 @@ func DelFriendOrGroup(c *gin.Context) {
} else {
c.JSON(http.StatusOK, gin.H{"error": err2.Error(), "code": proto.OperationFailed, "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,group_id is null"})
return
}
//获取群
group := dao.FindGroupByID(req.GroupID)
if len(group) == 0 {
c.JSON(http.StatusOK, gin.H{"error": "parameter error", "code": proto.ParameterError, "message": "failed group not found"})
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": "parameter error", "code": proto.ParameterError, "message": "failed"})
}
@ -203,6 +154,7 @@ func GetMessage(c *gin.Context) {
id := int(user_id.(float64))
//解析参数
if err := c.ShouldBind(&req); err == nil {
if req.Type == 2 {
msgs, err2 := dao.GetMsgGroupByIndex(req.GroupID, req.Index)
if err2 == nil {
@ -265,52 +217,27 @@ func AcceptInvite(c *gin.Context) {
user_id, _ := c.Get("id")
cid := int(user_id.(float64))
if err := c.ShouldBind(&req); err == nil {
if req.Type == 1 {
//同意添加好友
err2 := service.AddFriendService(req.ID, cid, req.To_user_id)
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 if req.Type == 2 {
//同意加入群聊
err3 := service.JoinGroupService(req.ID, cid, req.To_user_id, req.GroupID)
if err3 == nil {
c.JSON(http.StatusOK, gin.H{"code": proto.SuccessCode, "message": "success"})
} else {
c.JSON(http.StatusOK, gin.H{"error": err3.Error(), "code": proto.OperationFailed, "message": "failed"})
}
err2 := service.AddFriendService(req.ID, cid, req.To_user_id)
if err2 == nil {
c.JSON(http.StatusOK, gin.H{"code": proto.SuccessCode, "message": "success"})
} else {
c.JSON(http.StatusOK, gin.H{"error": err.Error(), "code": proto.ParameterError, "message": "failed"})
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"})
}
}
func RejectInvite(c *gin.Context) {
var req Message
user_id, _ := c.Get("id")
cid := int(user_id.(float64))
if err := c.ShouldBind(&req); err == nil {
if req.Type == 1 {
//拒绝添加好友
err2 := service.RejectFriendService(req.ID, cid, req.To_user_id)
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 if req.Type == 2 {
//拒绝加入群聊
err3 := service.RejectGroupService(req.ID, cid, req.To_user_id, req.GroupID)
if err3 == nil {
c.JSON(http.StatusOK, gin.H{"code": proto.SuccessCode, "message": "success"})
} else {
c.JSON(http.StatusOK, gin.H{"error": err3.Error(), "code": proto.OperationFailed, "message": "failed"})
}
err2 := service.RejectFriendService(req.ID, cid, req.To_user_id)
if err2 == nil {
c.JSON(http.StatusOK, gin.H{"code": proto.SuccessCode, "message": "success"})
} else {
c.JSON(http.StatusOK, gin.H{"error": "parameter error", "code": proto.ParameterError, "message": "failed type error"})
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"})

View File

@ -317,7 +317,7 @@ func GetGroupByNameLike(name string) []dao.Group {
return groups
}
func GetGroupRequestUsers(user_id int) []dao.GroupRequestUsers {
func GetGroupRequestUsers(user_id int) []dao.FriendRequest {
//获取群聊请求
users := dao.GetGroupRequestUsers(user_id)
return users
@ -370,39 +370,3 @@ func SetRobotMsg(person_id, robot_id int, msg string) {
return
}
}
// 同意用户加入群聊
func JoinGroupService(im_id, cid, user_id, group_id int) error {
group := dao.FindGroup(group_id)
if len(group) == 0 {
return errors.New("no such group")
}
if group[0].AuthID != cid {
return errors.New("no permission")
}
//判断是否在群里
groupUser := dao.FindGroupUser(user_id, group_id)
if len(groupUser) > 0 {
return errors.New("已在群里")
}
err, _ := dao.JoinGroup(group_id, user_id)
if err != nil {
return err
}
err = dao.UpdateMessageStatus(uint(im_id), 1)
return err
}
func RejectGroupService(im_id, cid, user_id, group_id int) error {
group := dao.FindGroup(group_id)
if len(group) == 0 {
return errors.New("no such group")
}
if group[0].AuthID != cid {
return errors.New("no permission")
}
err := dao.UpdateMessageStatus(uint(im_id), 1) // 拒绝,设为已读
return err
}