Пример #1
0
        public Response SendIMSystemMsg(CustomInfo customeInfo, string userCode)
        {
            var         reqRest     = new RestRequest("v4/openim/sendmsg", Method.POST);
            MessageInfo messageInfo = new MessageInfo();

            messageInfo.SyncOtherMachine = 2;
            messageInfo.To_Account       = userCode;
            messageInfo.MsgRandom        = new Random().Next(999999);

            MessageBody messageBody = new MessageBody();

            messageBody.MsgType = "TIMCustomElem";

            MessageContent messageContent = new MessageContent();
            DataInfo       dataInfo       = new DataInfo();

            dataInfo.userAction = 10;
            dataInfo.customInfo = customeInfo;
            messageContent.Data = JsonConvert.SerializeObject(dataInfo);

            messageBody.MsgContent = messageContent;
            messageInfo.MsgBody.Add(messageBody);

            reqRest.AddJsonBody(messageInfo);
            return(RestApiHelper.SendIMRequestAndGetResponse(reqRest));
        }
Пример #2
0
        public Response ImportAccount(User user)
        {
            var           reqRest = new RestRequest("v4/im_open_login_svc/account_import", Method.POST);
            AccountImport account = new AccountImport();

            account.Identifier = user.Code;
            if (user.PetName.Length >= 10)
            {
                account.Nick = user.PetName.Substring(0, 9);
            }
            else
            {
                account.Nick = user.PetName;
            }
            if (!string.IsNullOrEmpty(user.HeadUrl))
            {
                account.FaceUrl = user.HeadUrl;
            }
            else
            {
                account.FaceUrl = "";
            }
            reqRest.AddJsonBody(account);
            return(RestApiHelper.SendIMRequestAndGetResponse(reqRest));
        }
Пример #3
0
        //同步设置IM群管理员
        //文档: https://www.qcloud.com/document/product/269/1623
        public Response SetIMGroupAdmin(ClubUser obj)
        {
            string role;

            if (obj.IsAdmin)
            {
                role = "Admin";
            }
            else
            {
                role = "Member";
            }
            IMGroup imGroup = new IMGroup();

            imGroup.GroupId        = obj.ClubId;
            imGroup.Member_Account = obj.UserCode;
            imGroup.Role           = role;
            //请求IM接口
            var reqRest = new RestRequest("v4/group_open_http_svc/modify_group_member_info", Method.POST);

            reqRest.AddJsonBody(imGroup);

            var result = RestApiHelper.SendIMRequestAndGetResponse(reqRest);

            return(result);
        }
Пример #4
0
        public Response Execute(User currentUser, string request)
        {
            var      req = JsonConvert.DeserializeObject <Request <IMGroup> >(request);
            var      obj = req.Entities.FirstOrDefault();
            var      userCodeListArray = GetClubUserList(obj.GroupId);
            Response result            = new Response();

            foreach (var item in userCodeListArray)//循环一次取500个群成员,如果有500人以上,会循环2次以上
            {
                //请求IM接口
                obj.Members_Account.AddRange(item);
                var reqRest = new RestRequest("v4/group_open_http_svc/forbid_send_msg", Method.POST);
                reqRest.AddJsonBody(obj);
                result = RestApiHelper.SendIMRequestAndGetResponse(reqRest);
                if (result.IsSuccess == false)
                {
                    break;
                }
                obj.Members_Account.Clear();
            }
            if (userCodeListArray.Count == 0)
            {
                return(ResultHelper.Fail("没有可以禁言的成员"));// 即没有获取到普通用户, 此时群里只有管理员或者创建者
            }
            return(result);
        }
Пример #5
0
        /// <summary>
        /// 同步已有的俱乐部到IM群
        /// </summary>
        /// <param name="clubId"></param>
        /// <returns></returns>
        public Response ImportExistClubToIMGroup(string clubId)
        {
            //新建IM群 文档:https://www.qcloud.com/document/product/269/1615
            var sql = @"
  SELECT 
	TOP 1 
    b.Id AS GroupId,
	c.Code AS Owner_Account,
	b.Name ,
	b.Introduce AS Introduction,
	b.HeadUrl AS FaceUrl
 FROM dbo.ClubUser a
 INNER JOIN dbo.Club b ON a.ClubId=b.Id
 INNER JOIN dbo.UserAccount c ON a.UserId=c.Id
 WHERE ClubId=@ClubId AND a.IsCreator=1 AND a.IsAdmin =1

";
            var cmd = CommandHelper.CreateText <IMGroup>(FetchType.Fetch, sql);

            cmd.Params.Add("@ClubId", clubId);

            var     result = DbContext.GetInstance().Execute(cmd);
            IMGroup obj    = result.FirstEntity <IMGroup>();

            if (obj == null)
            {
                return(ResultHelper.Success());
            }
            if (obj.Name.Length >= 6)
            {
                obj.Name = obj.Name.Substring(0, 5) + "...";
            }

            if (obj.Introduction.Length >= 71)
            {
                obj.Introduction = obj.Introduction.Substring(0, 70);
            }

            obj.Type            = "Public";//Public 是公开群, 最大成员数2000 https://www.qcloud.com/document/product/269/1615
            obj.ApplyJoinOption = "FreeAccess";
            obj.MemberList      = GetUserList(clubId);
            foreach (var item in obj.MemberList)
            {
                if (item.Member_Account == obj.Owner_Account)
                {
                    item.Role = null;
                }
            }
            //请求导入
            var reqRest = new RestRequest("v4/group_open_http_svc/create_group", Method.POST);

            reqRest.AddJsonBody(obj);
            return(RestApiHelper.SendIMRequestAndGetResponse(reqRest));
        }
Пример #6
0
        /// <summary>
        /// 同步IM 移交群给某人
        /// </summary>
        /// <returns></returns>
        public Response ChangeGroupOwner(string clubId, string NewOwner_Account)
        {
            IMGroup obj = new IMGroup();

            obj.GroupId          = clubId;
            obj.NewOwner_Account = NewOwner_Account;
            //请求IM接口
            var reqRest = new RestRequest("v4/group_open_http_svc/change_group_owner", Method.POST);

            reqRest.AddJsonBody(obj);
            return(RestApiHelper.SendIMRequestAndGetResponse(reqRest));
        }
Пример #7
0
        /// <summary>
        /// 修改IM群
        /// </summary>
        /// <returns></returns>
        public Response UpdateIMGroup(Club club)
        {
            Response result = new Response();
            IMGroup  obj    = new IMGroup();

            obj.GroupId = club.Id;
            obj.FaceUrl = club.HeadUrl;
            obj.Name    = club.Name;
            //请求导入
            var reqRest = new RestRequest("v4/group_open_http_svc/modify_group_base_info", Method.POST);

            reqRest.AddJsonBody(obj);
            return(RestApiHelper.SendIMRequestAndGetResponse(reqRest));
        }
Пример #8
0
        /// <summary>
        /// 删除IM群成员
        /// </summary>
        /// <returns></returns>
        public Response RemoveGroupMember(Request <ClubUser> req)
        {
            IMGroup obj = new IMGroup();

            obj.Silence = 1;
            obj.GroupId = req.Entities.First().ClubId;//列表里面的所有clubId 都是一样的
            foreach (var clubUser in req.Entities)
            {
                obj.MemberToDel_Account.Add(clubUser.UserCode);
            }
            //请求腾讯IM接口
            var reqRest = new RestRequest("v4/group_open_http_svc/delete_group_member", Method.POST);

            reqRest.AddJsonBody(obj);
            return(RestApiHelper.SendIMRequestAndGetResponse(reqRest));
        }
Пример #9
0
        //同步设置IM群成员昵称
        //文档: https://www.qcloud.com/document/product/269/1623
        public Response SetIMGroupAdmin(ClubUser obj)
        {
            IMGroup imGroup = new IMGroup();

            imGroup.GroupId        = obj.ClubId;
            imGroup.Member_Account = obj.UserCode;
            imGroup.NameCard       = obj.PetName;
            //请求IM接口
            var reqRest = new RestRequest("v4/group_open_http_svc/modify_group_member_info", Method.POST);

            reqRest.AddJsonBody(imGroup);

            var result = RestApiHelper.SendIMRequestAndGetResponse(reqRest);

            return(result);
        }
Пример #10
0
        /// <summary>
        /// 同步导入这个人到腾讯IM群(无消息)
        /// </summary>
        /// <param name="clubId"></param>
        /// <param name="userCode"></param>
        /// <returns></returns>
        public Response ImportToIMGroup(string clubId, string userCode)
        {
            IMGroup obj = new IMGroup();

            obj.GroupId = clubId;
            IMGroupMember groupMember = new IMGroupMember();

            groupMember.Member_Account = userCode;
            obj.MemberList.Add(groupMember);

            //请求IM接口
            var reqRest = new RestRequest("v4/group_open_http_svc/import_group_member", Method.POST);

            reqRest.AddJsonBody(obj);

            var result = RestApiHelper.SendIMRequestAndGetResponse(reqRest);

            return(result);
        }