public GroupEditWindowViewModel(Action close, List <string> memberIds, AntSdkGroupInfo groupInfo)
 {
     IsCreateGroup     = false;
     Title             = "邀请加入讨论组";
     this.GroupInfo    = groupInfo;
     OriginalMemberIds = memberIds;
     this.close        = close;
     ContactInfoViewModel.StateImageClickEvent += StateImageClickEvent;
     ContactListViewModel = new ContactListViewModel(GlobalVariable.ContactInfoViewContainer.GroupEditWindowViewLeft, this);
     LeftPartViewModel    = ContactListViewModel;
     foreach (string memberId in memberIds)
     {
         AntSdkContact_User user = AntSdkService.AntSdkListContactsEntity.users.Find(c => c.userId == memberId);
         if (user == null)//离职人员信息
         {
             user          = new AntSdkContact_User();
             user.picture  = "pack://application:,,,/AntennaChat;Component/Images/离职人员.png";
             user.userName = "******";
             user.userId   = memberId;
         }
         ContactInfoViewModel myselfVM = new ContactInfoViewModel(user, GlobalVariable.ContactInfoViewContainer.GroupEditWindowViewRight);
         if (myselfVM == null)
         {
             continue;
         }
         myselfVM.StateImageVisibility = Visibility.Collapsed;
         GroupMemberList.Add(myselfVM);
     }
     MemberCount = string.Format("已选择{0}个联系人", _GroupMemberList.Count());
     //GroupName = groupInfo.groupName;
     GroupNameWateMark   = groupInfo.groupName;
     GroupNameIsReadOnly = true;
 }
        public void LoadTest()
        {
            GroupMemberList GroupMembers = new GroupMemberList();

            GroupMembers.Load();
            Assert.AreEqual(9, GroupMembers.Count);
        }
        public void UpdateTest()
        {
            //Load up Guids
            PerformerList performers = new PerformerList();
            Performer     performer  = new Performer();

            performers.Load();
            performer = performers.FirstOrDefault(p => p.FirstName == "Hunter");

            GroupList groups = new GroupList();
            Group     group  = new Group();

            groups.Load();
            group = groups.FirstOrDefault(c => c.Name == "Jazz Ensemble");

            InstrumentList instruments = new InstrumentList();
            Instrument     instrument  = new Instrument();

            instruments.Load();
            instrument = instruments.FirstOrDefault(c => c.Description == "Euphonium");

            GroupMember     groupMember  = new GroupMember();
            GroupMemberList groupMembers = new GroupMemberList();

            groupMembers.Load();
            groupMember           = groupMembers.FirstOrDefault(p => p.GroupId == group.Id && p.PerformerId == performer.Id);
            groupMember.StartDate = Convert.ToDateTime("04/24/3000");
            groupMember.EndDate   = Convert.ToDateTime("04/25/3000");

            groupMember.Instrument = instrument.Id;
            int results = groupMember.Update();

            Assert.IsTrue(results == 1);
        }
        // GET: api/GroupMember
        public IEnumerable <GroupMember> Get()
        {
            GroupMemberList groupMembers = new GroupMemberList();

            groupMembers.Load();
            return(groupMembers);
        }
Example #5
0
        public override void OnCreate(Bundle savedInstanceState)
        {
            prefs = PreferenceManager.GetDefaultSharedPreferences(Activity.ApplicationContext);
            var host = prefs.GetString("host", null);

            _manager     = new ApiManager(host);
            requestsList = new GroupMemberList(new List <Model.User>());
            base.OnCreate(savedInstanceState);
        }
        public void addmembers(int _appEntity, int _group)
        {
            GroupMemberList addMember = new GroupMemberList();

            addMember.AddGroupMember(_appEntity, _group);

            //RedirectToAction("Index", "GroupMemberAdd");

            //Load all Group members into Viewdata
            //GroupMemberList gm = new GroupMemberList();
            //ViewData["MyMembers"] = gm.GetGroupMemberList(_group);
        }
Example #7
0
        //
        // GET: /Groups/Details/5

        public ActionResult Details(int id = 0)
        {
            GroupTitle grouptitle = db.GroupTitles.Single(g => g.GroupTitleID == id);

            if (grouptitle == null)
            {
                return(HttpNotFound());
            }
            GroupMemberList gm = new GroupMemberList();

            ViewData["GroupMembers"] = gm.GetGroupMemberList(id);
            return(View(grouptitle));
        }
 public GroupEditWindowViewModel(Action close, List <string> memberIds)
 {
     OriginalMemberIds = memberIds;
     IsCreateGroup     = true;
     Title             = "创建讨论组";
     this.close        = close;
     ContactInfoViewModel.StateImageClickEvent += StateImageClickEvent;
     ContactListViewModel = new ContactListViewModel(GlobalVariable.ContactInfoViewContainer.GroupEditWindowViewLeft, this);
     LeftPartViewModel    = ContactListViewModel;
     foreach (string id in memberIds)
     {
         ContactInfoViewModel vm = new ContactInfoViewModel(AntSdkService.AntSdkListContactsEntity.users.Find(c => c.userId == id), GlobalVariable.ContactInfoViewContainer.GroupEditWindowViewRight);
         vm.StateImageVisibility = Visibility.Collapsed;
         GroupMemberList.Add(vm);
     }
     MemberCount = string.Format("已选择{0}个联系人", _GroupMemberList.Count());
 }
Example #9
0
 public MultiContactsSelectViewModel(List <string> memberIds)
 {
     OriginalMemberIds = memberIds;
     Title             = "选择联系人";
     ContactInfoViewModel.StateImageClickEvent += StateImageClickEvent;
     ContactListViewModel = new ContactListViewModel(GlobalVariable.ContactInfoViewContainer.MultiContactsSelectLeft, this);
     LeftPartViewModel    = ContactListViewModel;
     if (memberIds != null)
     {
         foreach (string id in memberIds)
         {
             ContactInfoViewModel vm = new ContactInfoViewModel(AntSdkService.AntSdkListContactsEntity.users.Find(c => c.userId == id), GlobalVariable.ContactInfoViewContainer.MultiContactsSelectRight);
             GroupMemberList.Add(vm);
         }
     }
     MemberCount = string.Format("已选择{0}个联系人", _GroupMemberList.Count());
 }
        protected override void OnCreate(Bundle savedInstanceState)
        {
            SetContentView(Resource.Layout.InviteActivity);
            prefs = PreferenceManager.GetDefaultSharedPreferences(this);
            var host = prefs.GetString("host", null);

            _manager    = new ApiManager(host);
            invitesList = new GroupMemberList(new List <Model.User>());
            CustomizeToolbarAndViewPager();
            var group_id = Intent.GetIntExtra("group_id", 0);

            if (group_id > 0)
            {
                ShowUsers(group_id);
                id = group_id;
            }

            base.OnCreate(savedInstanceState);
        }
        /// <summary>
        /// 根据成员名字组成默认群名
        /// </summary>
        /// <returns></returns>
        private string GetNewGroupName()
        {
            var newName   = string.Empty;
            var newNameBd = new StringBuilder();
            var nameList  = GroupMemberList.Select(c => c.User.userName).ToArray();

            foreach (var name in nameList)
            {
                if (newNameBd.Length >= 10)
                {
                    break;
                }
                else
                {
                    newNameBd.Append(name + ",");
                }
            }
            newName = newNameBd.ToString().Substring(0, 10) + "...";
            return(newName);
        }
        public ActionResult Index(int id, string search_string)
        {
            //Load all Group members into Viewdata
            GroupMemberList gm = new GroupMemberList();

            ViewData["MyMembers"] = gm.GetGroupMemberList(id);

            ViewBag.GroupName = _getGroupName(id);
            ViewBag.GroupID   = id;

            if (!String.IsNullOrEmpty(search_string))
            {
                GetPeople mySearch = new GetPeople();

                return(View(mySearch.GetSearchedEmployed(search_string)));
            }
            else
            {
                return(View());
            }
        }
        public void LoadById()
        {
            //Load up Guids
            PerformerList performers = new PerformerList();
            Performer     performer  = new Performer();

            performers.Load();
            performer = performers.FirstOrDefault(p => p.FirstName == "Hunter");

            GroupList groups = new GroupList();
            Group     group  = new Group();

            groups.Load();
            group = groups.FirstOrDefault(c => c.Name == "Jazz Ensemble");

            InstrumentList instruments = new InstrumentList();
            Instrument     instrument  = new Instrument();

            instruments.Load();
            instrument = instruments.FirstOrDefault(c => c.Description == "Euphonium");

            GroupMember     groupMember  = new GroupMember();
            GroupMemberList groupMembers = new GroupMemberList();

            groupMembers.Load();
            groupMember           = groupMembers.FirstOrDefault(p => p.GroupId == group.Id && p.PerformerId == performer.Id);
            groupMember.StartDate = Convert.ToDateTime("04/24/3000");
            groupMember.EndDate   = Convert.ToDateTime("04/25/3000");

            GroupMember newgroupmember = new GroupMember {
                Id = groupMember.Id
            };

            newgroupmember.LoadById();

            Assert.AreEqual(groupMember.Instrument, newgroupmember.Instrument);
        }
        /// <summary>
        /// 将消息中的东西替换为CQ码
        /// </summary>
        /// <param name="message">原始消息</param>
        /// <returns></returns>
        public static string Start(ReceiveMessage message)
        {
            string result = string.Empty;
            string msg    = message.CurrentPacket.Data.Content;

            switch (message.CurrentPacket.Data.MsgType)
            {
            case "AtMsg":
            {
                TextMessage textMessage = JsonConvert.DeserializeObject <TextMessage>(msg);
                result = textMessage.Content;
                GroupMemberList ls = JsonConvert.DeserializeObject <GroupMemberList>(WebAPI.GetGroupMemberList(message.CurrentPacket.Data.FromGroupId));
                foreach (var item in textMessage.UserID)
                {
                    GroupMemberList.Memberlist mem = ls.MemberList.Where(x => x.MemberUin == item).First();
                    foreach (var pro in mem.GetType().GetProperties())
                    {
                        if (string.IsNullOrEmpty(pro.GetValue(mem).ToString()))
                        {
                            pro.SetValue(mem, null);
                        }
                    }
                    string originStr = "@" + (mem.AutoRemark ?? mem.GroupCard ?? mem.NickName);
                    result = result.Replace(originStr, CQApi.CQCode_At(item).ToSendString());
                }
                break;
            }

            case "TextMsg":
                result = msg;
                break;

            case "PicMsg":
            {
                PicMessage picMessage = JsonConvert.DeserializeObject <PicMessage>(message.CurrentPacket.Data.Content);
                if (!Directory.Exists("data\\image"))
                {
                    Directory.CreateDirectory("data\\image");
                }
                result = picMessage.Content;
                foreach (var item in picMessage.GroupPic)
                {
                    string md5  = GenerateMD5(item.FileMd5).ToUpper();
                    string path = $"data\\image\\{md5}.cqimg";
                    if (!File.Exists(path))
                    {
                        IniConfig ini = new IniConfig(path);
                        ini.Object.Add(new ISection("image"));
                        ini.Object["image"]["md5"]  = item.FileMd5;
                        ini.Object["image"]["size"] = item.FileSize;
                        ini.Object["image"]["url"]  = item.Url;
                        ini.Save();
                    }
                    result += CQApi.CQCode_Image(md5);
                }
                break;
            }

            case "VoiceMsg":
            {
                if (!Directory.Exists("data\\record\\"))
                {
                    Directory.CreateDirectory("data\\record\\");
                }
                JObject json = JObject.Parse(msg);
                string  url  = json["Url"].ToString();
                string  MD5  = GenerateMD5(url);
                string  path = "data\\record\\" + MD5 + ".silk";
                if (!File.Exists(path))
                {
                    IniConfig ini = new IniConfig(path);
                    ini.Object.Add(new ISection("record"));
                    ini.Object["record"]["url"] = url;
                    ini.Save();
                }
                result = CQApi.CQCode_Record(MD5 + ".silk").ToString();
                break;
            }
            }
            result = Regex.Replace(result, "\\[表情(\\d*)\\]", "[CQ:face,id=$1]");
            foreach (var a in result)
            {
                if (a == '\ud83d' && result.IndexOf(a) != result.Length - 1)
                {
                    string str  = a.ToString() + result[result.IndexOf(a) + 1].ToString();
                    string text = "";
                    foreach (var item in Encoding.UTF32.GetBytes(str))
                    {
                        text += item.ToString("x");
                    }
                    result = result.Replace(str, CQApi.CQCode_Emoji(Convert.ToInt32(text, 16)).ToString());
                    break;
                }
            }
            return(result);
        }
        //public string NewGroupPicture;
        /// <summary>
        /// 更新讨论组
        /// </summary>
        private void UpdateGroup()
        {
            if (GroupInfo == null)
            {
                return;
            }
            AntSdkUpdateGroupInput input = new AntSdkUpdateGroupInput();

            input.userId       = AntSdkService.AntSdkLoginOutput.userId;
            input.groupId      = this.GroupInfo.groupId;
            NewGroupMemberList = new List <AntSdkContact_User>();
            foreach (ContactInfoViewModel vm in GroupMemberList)
            {
                if (!OriginalMemberIds.Contains(vm.User.userId))
                {
                    if (input.userIds == null)
                    {
                        input.userIds = new List <string>();
                    }
                    input.userIds.Add(vm.User.userId);
                    if (input.userNames == null)
                    {
                        input.userNames = new List <string>();
                    }
                    input.userNames.Add(vm.User.userName);
                    NewGroupMemberList.Add(vm.User);
                }
            }
            if (NewGroupMemberList.Count != 0)
            {
                BaseOutput output  = new BaseOutput();
                var        errCode = 0;
                string     errMsg  = string.Empty;
                //TODO:AntSdk_Modify
                //DONE:AntSdk_Modify
                var isResult = AntSdkService.UpdateGroup(input, ref errCode, ref errMsg);
                if (!isResult)
                {
                    NewGroupMemberList = null;
                    MessageBoxWindow.Show(errMsg, GlobalVariable.WarnOrSuccess.Warn);
                    return;
                }
                //if (!(new HttpService()).UpdateGroup(input, ref output, ref errMsg))
                //{
                //    NewGroupMemberList = null;
                //    if (output.errorCode != "1004")
                //    {
                //        MessageBoxWindow.Show(errMsg,GlobalVariable.WarnOrSuccess.Warn);
                //    }
                //    return;
                //    //OnUpdateGroupEvent(input.groupId, input.userIds);
                //}
                string[] ThreadParams = new string[3];
                ThreadParams[0] = this.GroupInfo.groupId;
                ThreadParams[1] = ImageHandle.GetGroupPicture(GroupMemberList.Select(c => c.Photo).ToList());
                ThreadParams[2] = string.IsNullOrEmpty(this.GroupInfo.groupName) ? "" : this.GroupInfo.groupName;
                Thread UpdateGroupPictureThread = new Thread(GroupPublicFunction.UpdateGroupPicture);
                UpdateGroupPictureThread.Start(ThreadParams);
                //this.NewGroupPicture = input.groupPicture;
            }
            App.Current.Dispatcher.BeginInvoke((Action)(() =>
            {
                this.close.Invoke();
            }));
        }
Example #16
0
 public InviteAdapter(GroupMemberList membersList)
 {
     _membersList = membersList;
 }
        private void CreateGroup()
        {
            // 讨论组名不能为空
            //if (string.IsNullOrWhiteSpace(GroupName))
            //{
            //    GroupNameBorderBrush = new SolidColorBrush(Colors.Red);
            //    //GroupNameBorderThickness = new Thickness(1, 1, 1, 1);
            //    return;
            //}
            //else
            //{
            //    GroupNameBorderBrush = new SolidColorBrush((System.Windows.Media.Color)System.Windows.Media.ColorConverter.ConvertFromString("#e0e0e0"));
            //    //GroupNameBorderThickness = new Thickness(0);
            //}
            // 讨论组成员不能少于3
            if (GroupMemberList == null || GroupMemberList.Count < 3)
            {
                MessageBoxWindow.Show("讨论组至少需要包括三个成员", GlobalVariable.WarnOrSuccess.Warn);
                return;
            }
            if (string.IsNullOrWhiteSpace(GroupName.Trim(' ')))//自定义群名为空 取默认值
            {
                GroupName = GetNewGroupName();
            }
            GroupName = GroupName.TrimStart(' ');
            #region 旧代码
            CreateGroupInput input = new CreateGroupInput();
            input.token     = AntSdkService.AntSdkLoginOutput.token;
            input.version   = GlobalVariable.Version;
            input.userId    = AntSdkService.AntSdkLoginOutput.userId;
            input.groupName = GroupName;
            //获取讨论组成员头像
            //List<string> picList = new List<string>();
            //foreach (ContactInfoViewModel m in GroupMemberList)
            //{
            //    picList.Add(m.Photo);
            //}
            //input.groupPicture = ImageHandle.GetGroupPicture(picList);
            //input.groupPicture =;
            input.userIds = string.Join(",", GroupMemberList.Select(c => c.User.userId).ToArray());
            //CreateGroupOutput output = new CreateGroupOutput();
            var errCode = 0;
            var errMsg  = string.Empty;

            //if (!(new HttpService()).CreateGroup(input, ref output, ref errMsg))
            //{
            //    if (output.errorCode != "1004")
            //    {
            //        MessageBoxWindow.Show(errMsg,GlobalVariable.WarnOrSuccess.Warn);
            //    }
            //    return;
            //}
            //output.group.groupPicture = ImageHandle.GetGroupPicture(GroupMemberList.Select(c => c.Photo).ToList());
            //ThreadPool.QueueUserWorkItem(m =>
            //{

            //});
            #endregion

            AntSdkCreateGroupInput newGroupInput = new AntSdkCreateGroupInput();
            newGroupInput.userId    = AntSdkService.AntSdkLoginOutput.userId;
            newGroupInput.groupName = GroupName;
            newGroupInput.userIds   = GroupMemberList.Select(c => c.User.userId).ToArray();
            //newGroupInput.groupPicture = ImageHandle.GetGroupPicture(GroupMemberList.Select(c => c.Photo).ToList());
            //TODO:AntSdk_Modify
            //DONE:AntSdk_Modify
            AntSdkCreateGroupOutput createGroupOutput = AntSdkService.CreateGroup(newGroupInput, ref errCode, ref errMsg);
            if (createGroupOutput == null)
            {
                if (!AntSdkService.AntSdkIsConnected)
                {
                    errMsg = "网络已断开,请检查网络";
                }
                if (!string.IsNullOrEmpty(errMsg))
                {
                    MessageBoxWindow.Show(errMsg, GlobalVariable.WarnOrSuccess.Warn);
                }
                return;
            }
            createGroupOutput.groupPicture = ImageHandle.GetGroupPicture(GroupMemberList.Select(c => c.Photo).ToList());
            //异步更新讨论组头像,这里需要用前台线程,因此不能用线程池
            string[] ThreadParams = new string[3];
            ThreadParams[0] = createGroupOutput.groupId;
            ThreadParams[1] = createGroupOutput.groupPicture;
            ThreadParams[2] = string.IsNullOrEmpty(createGroupOutput.groupName) ? "" : createGroupOutput.groupName;
            Thread UpdateGroupPictureThread = new Thread(GroupPublicFunction.UpdateGroupPicture);
            UpdateGroupPictureThread.Start(ThreadParams);
            this.CreateGroupOutput = createGroupOutput;
            App.Current.Dispatcher.BeginInvoke((Action)(() =>
            {
                this.close.Invoke();
            }));
        }
        /// <summary>
        /// 状态图点击事件
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="isSelect">True表示在创建讨论组左侧选中,False表示在左侧取消选择,Null表示在右侧点击</param>
        private void StateImageClickEvent(object sender, bool?isSelect)
        {
            ContactInfoViewModel senderVM = sender as ContactInfoViewModel;

            if (senderVM == null)
            {
                return;
            }
            ContactInfoViewModel existVM           = GroupMemberList.FirstOrDefault(c => c.User.userId == senderVM.User.userId);
            ContactInfoViewModel ContactListTempVM = null;

            if (ContactListViewModel.ContactInfoViewModelList != null)
            {
                ContactListTempVM = ContactListViewModel.ContactInfoViewModelList.FirstOrDefault(c => c.User.userId == senderVM.User.userId);
            }
            if (isSelect == true)//选择组织结构列表中联系人
            {
                if (existVM == null)
                {
                    ContactInfoViewModel tempVM = new ContactInfoViewModel(senderVM.User, GlobalVariable.ContactInfoViewContainer.GroupEditWindowViewRight);
                    GroupMemberList.Add(tempVM);
                    MemberCount = string.Format("已选择{0}个联系人", _GroupMemberList.Count());
                    //tempVM.MouseLeftButtonDownEvent += ModifyColorOnMouseClick;
                }
                //if (ContactListTempVM != null && ContactListTempVM != sender)//如果是从搜索列表里来的
                if (ContactListTempVM != null && ContactListTempVM.IsMouseClick == false)//如果是从搜索列表里来的
                {
                    ContactListTempVM.OnStateImageClickEventEvent(ContactListTempVM, true);
                }
            }
            else if (isSelect == false)//取消选中组织结构列表中联系人
            {
                if (existVM != null)
                {
                    GroupMemberList.Remove(existVM);
                    MemberCount = string.Format("已选择{0}个联系人", _GroupMemberList.Count());
                }
                if (ContactListTempVM != null && ContactListTempVM.IsMouseClick == true)
                {
                    ContactListTempVM.OnStateImageClickEventEvent(ContactListTempVM, false);
                }
            }
            else //从右侧讨论成员中删除联系人
            {
                bool isLeftExist = false;
                if (ContactListTempVM != null && ContactListTempVM != sender)
                {
                    ContactListTempVM.OnStateImageClickEventEvent(ContactListTempVM, false);
                    isLeftExist = true;
                }
                if (_QueryContactList != null && _QueryContactList.QueryContactList != null)
                {
                    ContactInfoViewModel tempVM = _QueryContactList.QueryContactList.FirstOrDefault(c => c.User.userId == senderVM.User.userId);
                    if (tempVM != null)
                    {
                        tempVM.OnStateImageClickEventEvent(tempVM, false);
                        isLeftExist = true;
                    }
                }
                if (isLeftExist == false)//左侧组织结构或者搜索列表中都还未加载,则直接从右侧列表删除即可
                {
                    if (existVM != null)
                    {
                        GroupMemberList.Remove(existVM);
                        MemberCount = string.Format("已选择{0}个联系人", _GroupMemberList.Count());
                    }
                }
            }
        }
Example #19
0
        /// <summary>
        /// 将消息中的东西替换为CQ码
        /// </summary>
        /// <param name="message">原始消息</param>
        /// <returns></returns>
        public static string Start(ReceiveMessage message)
        {
            string result = string.Empty;
            string msg    = message.CurrentPacket.Data.Content;

            switch (message.CurrentPacket.Data.MsgType)
            {
            case "TempSessionMsg":
                if (msg.Contains("图片"))
                {
                    var c = JsonConvert.DeserializeObject <PicMessage>(msg).FriendPic;
                    foreach (var item in c)
                    {
                        result += MakeCQImage(item);
                    }
                }
                else
                {
                    result = JObject.Parse(msg)["Content"].ToString();
                }

                break;

            case "AtMsg":
            {
                //at消息主要将消息中的at消息转变为CQ码
                //而@人名 中的人名格式可能会不同,不能直接用群名片替换,所以要从群成员列表寻找这个人
                //按备注->群名片->昵称的顺序,替换可能出现的名称
                TextMessage textMessage = JsonConvert.DeserializeObject <TextMessage>(msg);
                result = textMessage.Content;
                //从缓存寻找这个群
                GroupMemberList ls = MemberSave.Find(x => x.GroupUin == message.CurrentPacket.Data.FromGroupId);
                if (ls == null)         //未在缓存找到,将这个群加入缓存
                {
                    ls = JsonConvert.DeserializeObject <GroupMemberList>(
                        WebAPI.GetGroupMemberList(message.CurrentPacket.Data.FromGroupId));
                    MemberSave.Add(ls);
                }

                foreach (var item in textMessage.UserID)
                {
                    GroupMemberList.Memberlist mem = ls.MemberList.Where(x => x.MemberUin == item).First();
                    foreach (var pro in mem.GetType().GetProperties())
                    {
                        //将空文本变成null,方便后续??运算符
                        try
                        {
                            if (string.IsNullOrEmpty(pro.GetValue(mem).ToString()))
                            {
                                pro.SetValue(mem, null);
                            }
                        }
                        catch (NullReferenceException e)
                        {
                            pro.SetValue(mem, null);         //如果是null则会跳至catch块
                        }
                    }

                    string originStr = "@" + (mem.AutoRemark ?? mem.GroupCard ?? mem.NickName);
                    result = result.Replace(originStr, CQApi.CQCode_At(item).ToSendString());
                }

                break;
            }

            case "TextMsg":
                result = msg;
                break;

            case "PicMsg":
            {
                //图片消息是将图片消息的信息配置进image文件夹下的以MD5为名称的cqimg文件内
                PicMessage picMessage =
                    JsonConvert.DeserializeObject <PicMessage>(message.CurrentPacket.Data.Content);
                if (!Directory.Exists("data\\image"))
                {
                    Directory.CreateDirectory("data\\image");
                }
                result = picMessage.Content;
                if (picMessage.GroupPic != null)         //是群图片消息
                {
                    foreach (var item in picMessage.GroupPic)
                    {
                        result += MakeCQImage(item);
                    }
                }
                else         //是好友图片消息
                {
                    foreach (var item in picMessage.FriendPic)
                    {
                        result += MakeCQImage(item);
                    }
                }
                break;
            }

            case "VoiceMsg":
            {
                if (!Directory.Exists("data\\record\\"))
                {
                    Directory.CreateDirectory("data\\record\\");
                }
                JObject json = JObject.Parse(msg);
                string  url  = json["Url"].ToString();
                string  MD5  = GenerateMD5(url);
                string  path = "data\\record\\" + MD5 + ".silk";
                if (!File.Exists(path))
                {
                    IniConfig ini = new IniConfig(path);
                    ini.Object.Add(new ISection("record"));
                    ini.Object["record"]["url"] = url;
                    ini.Save();
                }

                result = CQApi.CQCode_Record(MD5 + ".silk").ToString();
                break;
            }

            case "RedBagMsg":
            {
                string title = JObject.Parse(msg)["Content"]?.ToString();
                result = $"[CQ:hb,title={title}]";
                break;
            }

            case "XmlMsg":
            {
                result = JObject.Parse(msg)["Content"].ToString();
                var xml   = new XmlDocument();
                int index = result.IndexOf("</msg>");
                result = result.Substring(0, index + "</msg>".Length);
                xml.LoadXml(result);
                var root = xml.FirstChild.NextSibling;
                foreach (XmlAttribute item in root.Attributes)
                {
                    if (item.Name == "actionData" && item.Value.Contains("group:"))
                    {
                        result = $"[CQ:contact,id={item.Value.Replace("group:", "")},type=group]";
                        break;
                    }
                    else if (item.Name == "actionData" && item.Value.Contains("AppCmd://OpenContactInfo/?uin"))
                    {
                        result = $"[CQ:contact,id={item.Value.Replace("AppCmd://OpenContactInfo/?uin=", "")},type=qq]";
                        break;
                    }
                    else if (item.Name == "url" && item.Value.Contains("y.music.163.com"))
                    {
                        int musicid = Convert.ToInt32(Regex.Replace(item.Value, "https:\\/\\/y.music.163.com\\/m/song\\/([0-9]*)\\/\\?userid=([0-9]*)", "$1"));
                        int userid  = Convert.ToInt32(Regex.Replace(item.Value, "https:\\/\\/y.music.163.com\\/m/song\\/([0-9]*)\\/\\?userid=([0-9]*)", "$2"));
                        result = $"[CQ:music,type=163,id={musicid},userid={userid}]";
                        break;
                    }
                }
                if (!result.StartsWith("[CQ:"))
                {
                    result = $"[CQ:rich,content={result.Replace("\n","").Replace("\r","")}]";
                }
                break;
            }

            case "JsonMsg":
            {
                result = JObject.Parse(msg)["Content"].ToString();
                result = result.Substring(result.IndexOf("{\"app\":\""));
                var json = JObject.Parse(result);
                if (json["meta"]["music"] != null)
                {
                    var musicroot = json["meta"]["music"];
                    int musicid   = Convert.ToInt32(Regex.Replace(musicroot["jumpUrl"].ToString(), "https:\\/\\/y.music.163.com\\/m/song\\/([0-9]*)\\/\\?userid=([0-9]*)", "$1"));
                    int userid    = Convert.ToInt32(Regex.Replace(musicroot["jumpUrl"].ToString(), "https:\\/\\/y.music.163.com\\/m/song\\/([0-9]*)\\/\\?userid=([0-9]*)", "$2"));
                    result = $"[CQ:music,type=163,id={musicid},userid={userid},title={musicroot["title"]},desc={musicroot["desc"]}]";
                }
                else
                {
                    result = $"[CQ:rich,title={json["prompt"]}]";
                }
                break;
            }
            }

            result = Regex.Replace(result, "\\[表情(\\d*)\\]", "[CQ:face,id=$1]"); //处理QQ表情信息
            //处理emoji消息
            foreach (var a in result)
            {
                //UTF-8下,大部分的emoji都是以\ud83d开头
                if (a == '\ud83d' && result.IndexOf(a) != result.Length - 1)
                {
                    //取这个emoji
                    string        str   = a.ToString() + result[result.IndexOf(a) + 1].ToString();
                    UTF32Encoding enc   = new UTF32Encoding(true, false);
                    byte[]        bytes = enc.GetBytes(str); //转换字节数组
                    //使用BitConvert将字节数组转换为16进制,之后转换为10进制即可
                    result = result.Replace(str,
                                            CQApi.CQCode_Emoji(Convert.ToInt32(BitConverter.ToString(bytes).Replace("-", ""), 16))
                                            .ToString());
                    break;
                }
            }

            return(result);
        }
Example #20
0
 public RequestAdapter(GroupMemberList membersList)
 {
     _membersList = membersList;
 }