diff --git a/handler/im.go b/handler/im.go index bb31805..cb3cd7b 100644 --- a/handler/im.go +++ b/handler/im.go @@ -203,7 +203,6 @@ 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 { @@ -266,27 +265,52 @@ func AcceptInvite(c *gin.Context) { user_id, _ := c.Get("id") cid := int(user_id.(float64)) if err := c.ShouldBind(&req); err == nil { - err2 := service.AddFriendService(req.ID, cid, req.To_user_id) - if err2 == nil { - c.JSON(http.StatusOK, gin.H{"code": proto.SuccessCode, "message": "success"}) + 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"}) + } } else { - c.JSON(http.StatusOK, gin.H{"error": err2.Error(), "code": proto.OperationFailed, "message": "failed"}) + c.JSON(http.StatusOK, gin.H{"error": err.Error(), "code": proto.ParameterError, "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 { - err2 := service.RejectFriendService(req.ID, cid, req.To_user_id) - if err2 == nil { - c.JSON(http.StatusOK, gin.H{"code": proto.SuccessCode, "message": "success"}) + 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"}) + } } else { - c.JSON(http.StatusOK, gin.H{"error": err2.Error(), "code": proto.OperationFailed, "message": "failed"}) + c.JSON(http.StatusOK, gin.H{"error": "parameter error", "code": proto.ParameterError, "message": "failed type error"}) } } else { c.JSON(http.StatusOK, gin.H{"error": err.Error(), "code": proto.ParameterError, "message": "failed"}) diff --git a/service/imService.go b/service/imService.go index e321cbe..8023eb7 100644 --- a/service/imService.go +++ b/service/imService.go @@ -370,3 +370,39 @@ 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 +}