Exemplo n.º 1
0
        /// <summary>
        /// 以发送聊天室消息方法实现:业务处理聊天室禁言与解禁
        /// </summary>
        /// <returns></returns>
        public ReturnValueModel ChatroomSend(ChatroomSendInputDto dto, WorkUser workUser)
        {
            ReturnValueModel rvm = new ReturnValueModel();

            var meetInfo = _rep.FirstOrDefault <MeetInfo>(s => s != null && s.IsDeleted != 1 && s.Id == dto.Id);

            if (meetInfo == null)
            {
                rvm.Msg     = "获取会议失败";
                rvm.Success = false;
                rvm.Result  = "";
                return(rvm);
            }

            string appKey    = ConfigurationManager.AppSettings["RongCloudAppKey"];
            string appSecret = ConfigurationManager.AppSettings["RongCloudAppSecret"];
            string _host     = ConfigurationManager.AppSettings["RongCloudUrl"];
            string url       = $"{_host}/message/chatroom/publish.json";

            StringBuilder sb = new StringBuilder();

            var content = RongJsonUtil.ObjToJsonString(new
            {
                content     = dto.Content,
                messageName = "TextMessage",
                extra       = "extra"
                              //user = new
                              //{
                              //    id = workUser.User.Id,
                              //    name = "系统管理员",
                              //    icon = "http://example.com/p1.png",
                              //    extra = "extra"
                              //}
            });
            var objectName = $"RCFK:{dto.Content}";

            sb.Append("&fromUserId=").Append(HttpUtility.UrlEncode(workUser.User.Id, Encoding.UTF8)); //发送人用户 Id
            sb.Append("&toChatroomId=").Append(HttpUtility.UrlEncode(dto.Id, Encoding.UTF8));         //接收聊天室 Id
            sb.Append("&objectName=").Append(HttpUtility.UrlEncode(objectName, Encoding.UTF8));
            sb.Append("&content=").Append(HttpUtility.UrlEncode(content, Encoding.UTF8));
            String body = sb.ToString();

            if (body.IndexOf("&") == 0)
            {
                body = body.Substring(1, body.Length - 1);
            }
            string result = RongHttpClient.ExecutePost(appKey, appSecret, body, url, "application/x-www-form-urlencoded");
            var    res    = (ResponseResult)RongJsonUtil.JsonStringToObj <ResponseResult>(result);

            if (res.Code == 200)
            {
                meetInfo.UpdateTime       = DateTime.Now;
                meetInfo.UpdateUser       = workUser.User.Id;
                meetInfo.IsForbiddenWords = dto.Content == "Close" ? 1 : 0;
                _rep.Update(meetInfo);
                _rep.Insert <RongCloudChatRoomHandle>(new RongCloudChatRoomHandle
                {
                    Id         = Guid.NewGuid().ToString(),
                    CreateUser = workUser.User.Id,
                    CreateTime = DateTime.UtcNow.AddHours(8),
                    ChatRoomId = dto.Id,
                    Event      = dto.Content,
                });
                _rep.SaveChanges();

                rvm.Msg     = "success";
                rvm.Success = true;
                rvm.Result  = res;
                return(rvm);
            }
            else
            {
                rvm.Msg     = "消息失败";
                rvm.Success = false;
                rvm.Result  = result;
                return(rvm);
            }
        }
        public IHttpActionResult ChatroomSend(ChatroomSendInputDto inputDto)
        {
            var ret = _rongCloudService.ChatroomSend(inputDto, WorkUser);

            return(Ok(ret));
        }