public JsonResultModel HandleApply(int applyid, int userid, short result, string reason)
        {
            var ds = _dal.HandleApply(applyid, userid, result, reason);
            //转换成相应的推送model id,applytype,targetid,userid
            ApplyHandledMessgae message = ds.Tables[0].Rows.Cast <DataRow>().Select(x => new ApplyHandledMessgae
            {
                id        = x["id"].ToInt(),
                result    = x["result"].ToShort(),
                applyuid  = x["userid"].ToInt(),
                targetid  = x["targetid"].ToInt(),
                applytype = x["applytype"].ToShort()
            }).FirstOrDefault();

            if (message.result == 1)
            {
                #region 返回加好友的信息
                if (message.applytype == ApplyType.Friend.GetHashCode())
                {
                    //好友信息
                    //发送给申请方
                    message.friend = ds.Tables[1].Rows.Cast <DataRow>().Select(x => new UserFriendAddedMessage
                    {
                        groupid  = x["groupid"].ToInt(),
                        avatar   = x["friendavatar"].ToString(),
                        id       = x["friendid"].ToInt(),
                        sign     = x["friendremark"].ToString(),
                        type     = LayIMConst.LayIMFriendType,
                        username = x["friendname"].ToString()
                    }).FirstOrDefault();
                    //发送给当前操作人
                    message.mine = ds.Tables[2].Rows.Cast <DataRow>().Select(x => new UserFriendAddedMessage
                    {
                        groupid  = x["groupid"].ToInt(),
                        avatar   = x["friendavatar"].ToString(),
                        id       = x["friendid"].ToInt(),
                        sign     = x["friendremark"].ToString(),
                        type     = LayIMConst.LayIMFriendType,
                        username = x["friendname"].ToString()
                    }).FirstOrDefault();
                }
                #endregion

                #region 返回群信息
                if (message.applytype == ApplyType.UserJoinGroup.GetHashCode())
                {
                    message.group = ds.Tables[1].Rows.Cast <DataRow>().Select(x => new UserGroupCreatedMessage
                    {
                        id        = x["groupid"].ToInt(),
                        groupname = x["groupname"].ToString(),
                        avatar    = x["avatar"].ToString(),
                        memebers  = x["members"].ToInt(),
                        type      = LayIMConst.LayIMGroupType
                    }).FirstOrDefault();
                }
                #endregion
            }
            return(JsonResultHelper.CreateJson(message, true));
        }
Beispiel #2
0
        /// <summary>
        /// 发送请求被处理的消息
        /// </summary>
        /// <param name="message"></param>
        public static void SendMessage(ApplyHandledMessgae message)
        {
            short agreeFlag  = 1;
            short refuseFlag = 2;

            //只有有消息,并且同意
            if (message.id > 0)
            {
                var userid = message.applyuid.ToString();
                if (message.result == refuseFlag)
                {
                    //如果是被拒绝,只需要发送一条提示消息即可

                    var msg = new ApplySendedMessage
                    {
                        msg = "您的" + (message.applytype == 0 ? "好友" : "加群") + "请求已经被处理,请点击查看详情"
                    };
                    SendMessage(msg, userid, ChatToClientType.ApplyHandledToClient);
                }
                else if (message.result == agreeFlag)
                {
                    //如果同意了,判断如果是加群,需要给群发送消息:某某某已经加入群,如果是加好友,发送一条消息,我们已经成为好友了,开始聊天吧。
                    var msg = "您的" + (message.applytype == 0 ? "好友" : "加群") + "请求已经被处理,请点击查看详情";
                    if (message.applytype == ApplyType.Friend.GetHashCode())
                    {
                        //这里的friend是为了配合 LayIM的 addList接口
                        SendMessage(new { friend = message.friend, msg = msg }, userid, ChatToClientType.ApplyHandledToClient);
                    }
                    else
                    {
                        //发送群信息 group也是为了配合Layim的addList接口
                        SendMessage(new { group = message.group, msg = msg }, userid, ChatToClientType.ApplyHandledToClient);
                        //还需要给群发一条,xxx加入群的消息
                        SendMessage(message.friend.username, message.group.id);
                    }
                }
            }
        }