public 流水明细(GroupMemberInfoWithBocai gr, string zseq) { zse = zseq; InitializeComponent(); linshi = gr; label1.Text = "昵称:" + gr.GetNickName(); label2.Text = "备注:" + gr.RemarkName; label3.Text = "总下注:" + gr.zongxiazhu.ToString(); label4.Text = "总盈亏:" + gr.zongyingkui.ToString(); }
/// <summary> /// 处理群成员数量减少事件 /// </summary> /// <param name="subType">事件类型。1为群员离开;2为群员被踢为;3为自己(即登录号)被踢</param> /// <param name="sendTime">事件发生时间的时间戳</param> /// <param name="fromGroup">事件来源群号</param> /// <param name="fromQq">事件来源QQ</param> /// <param name="target">被操作的QQ</param> /// <returns></returns> public override int ProcessGroupMemberDecrease(int subType, int sendTime, long fromGroup, long fromQq, long target) { MyLogUtil.ToLogFotTest("处理群员减少" + fromGroup + "_" + fromQq + "_" + target); if (CacheData.IsAutoAddGroupMemberJifen && CacheData.IsInitComplete && fromGroup == CacheData.CurrentSelectedGroupId) { try { lock (Obj) { MyLogUtil.ToLogFotTest("处理群员减少1"); //先查询是否已经有他的数据了 GroupMemberInfoWithBocai g = CacheData.SearchMemberInfo.GetValue(CacheData.GroupMemberInfoDic, target); if (g != null)//移除该qq会员在列表中的显示 { MyLogUtil.ToLogFotTest("处理群员减少2,选中的用户的索引:" + g.ArrIndex + "_昵称" + CacheData.GroupMemberInfoList[g.ArrIndex].GroupMemberBaseInfo.NickName + "_target:" + target); List <GroupMemberInfoWithBocai> list = new List <GroupMemberInfoWithBocai>(); for (int i = 0; i < CacheData.GroupMemberInfoList.Count; i++) { GroupMemberInfoWithBocai groupMember = CacheData.GroupMemberInfoList[i]; if (groupMember.GroupMemberBaseInfo.Number != target) { groupMember.ArrIndex = list.Count; list.Add(groupMember); } } CacheData.GroupMemberInfoList = list; CacheData.SearchMemberInfo.Remove(CacheData.GroupMemberInfoDic, target); CacheData.MainFrom.RefreshGroupMemberList(); /* * CacheData.GroupMemberInfoList[g.ArrIndex] = null;//由于每个成员对象中存了在当前列表中的索引(以免每次查找都要遍历列表),为了避免重建每个对象的索引,直接置为空 * CacheData.SearchMemberInfo.Remove(CacheData.GroupMemberInfoDic, target); * CacheData.MainFrom.RefreshGroupMemberList(); */ } else { MyLogUtil.ToLogFotTest("处理群员减少2"); } } } catch (Exception ex) { MyLogUtil.ToLogFotTest("当群员退群后,自动删减用户时出现异常,原因:" + ex); //CacheData.CoolQApi.AddLog(40, CoolQLogLevel.Debug, "当群员退群后,自动删减用户时出现异常,原因" + ex); } } return(base.ProcessGroupMemberDecrease(subType, sendTime, fromGroup, fromQq, target)); }
/// <summary> /// 获取群成员,并缓存 /// </summary> /// <param name="api"></param> /// <param name="groupId"></param> /// <returns></returns> public static List <GroupMemberInfoWithBocai> GetGroupMemberListAndCache(ICoolQApi api, long groupId) { List <GroupMemberInfoWithBocai> list = new List <GroupMemberInfoWithBocai>(); Dictionary <long, GroupMemberInfoWithBocai> keyVal = new Dictionary <long, GroupMemberInfoWithBocai>(); ModelWithSourceString <IEnumerable <GroupMemberInfo> > result = CoolApiExtensions.GetGroupMemberList(api, groupId); IEnumerable <GroupMemberInfo> iterator = result.Model; if (iterator != null) { foreach (GroupMemberInfo memberInfo in iterator) { GroupMemberInfoWithBocai groupMemberInfoWithBocai = new GroupMemberInfoWithBocai(memberInfo, list.Count); //增加短名字 //===================2018-02=================== string shortName = "";// Regex.Replace(g.NickName, @"\[[^\]]*?\]", ""); shortName = function.filtetStingSpecial(groupMemberInfoWithBocai.GroupMemberBaseInfo.NickName); //===================2018-02=================== shortName = shortName.Replace("'", "").Replace("/", "").Replace("\\", "").Replace("\"", "").Replace(".", ""); bool isHanzi = false; for (int ii = 0; ii < shortName.Length; ii++) { if ((int)shortName[ii] > 127) { //是汉字 isHanzi = true; break; } } if (isHanzi) { shortName = shortName.Length > 2 ? shortName.Substring(0, 2) : shortName; } else { shortName = shortName.Length > 4 ? shortName.Substring(0, 4) : shortName; } groupMemberInfoWithBocai.NickNameShort = shortName; list.Add(groupMemberInfoWithBocai); keyVal.Add(memberInfo.Number, groupMemberInfoWithBocai); } } CacheData.GroupMemberInfoList = list; CacheData.GroupMemberInfoDic = keyVal; return(list); }
/// <summary> /// 处理群成员添加事件 /// </summary> /// <param name="subType">事件类型。1为管理员已同意;2为管理员邀请</param> /// <param name="sendTime">事件发生时间的时间戳</param> /// <param name="fromGroup">事件来源群号</param> /// <param name="fromQq">事件来源QQ</param> /// <param name="target">被操作的QQ</param> /// <returns></returns> public override int ProcessGroupMemberIncrease(int subType, int sendTime, long fromGroup, long fromQq, long target) { //MyLogUtil.ToLogFotTest("群员增加事件:" + fromGroup + "_fromQQ;" + target + "__"+ CacheData.IsAutoAddGroupMemberJifen+"__"+ CacheData.IsInitComplete); if (CacheData.IsAutoAddGroupMemberJifen && CacheData.IsInitComplete && fromGroup == CacheData.CurrentSelectedGroupId) { lock (Obj) { //MyLogUtil.ToLogFotTest("1111111:"); try { //先查询是否已经有他的数据了 GroupMemberInfoWithBocai g = CacheData.SearchMemberInfo.GetValue(CacheData.GroupMemberInfoDic, target); if (g == null)//说明第一次建立此用户信息 { //win7下,CoolApiExtensions.GetGroupMemberInfoV2也会崩 /* * ModelWithSourceString<GroupMemberInfo> model = CoolApiExtensions.GetGroupMemberInfoV2(CacheData.CoolQApi, fromGroup, target, true); * //MyLogUtil.ToLogFotTest("获取的群会员信息1:" + model); * //MyLogUtil.ToLogFotTest("获取的群会员信息12:" + model.Model.NickName); * if (model != null) * { * GroupMemberInfo groupMemberInfo = model.Model; * //MyLogUtil.ToLogFotTest("获取的群会员信息:"+ groupMemberInfo.NickName); * GroupMemberInfoWithBocai temp = new GroupMemberInfoWithBocai(groupMemberInfo, CacheData.GroupMemberInfoList.Count); * CacheData.GroupMemberInfoList.Add(temp); * CacheData.GroupMemberInfoDic.Add(target, temp); * * //将数据展示在软件列表中,并添加数据到数据库 * * CacheData.MainFrom.dgv2(temp); * } * */ //方案二 GroupMemberInfo groupMemberInfo = new GroupMemberInfo(); groupMemberInfo.NickName = "" + target; groupMemberInfo.Number = target; groupMemberInfo.GroupId = fromGroup; GroupMemberInfoWithBocai temp = new GroupMemberInfoWithBocai(groupMemberInfo, CacheData.GroupMemberInfoList.Count); temp.IsAutoAddGroupMember = true; CacheData.GroupMemberInfoList.Add(temp); CacheData.GroupMemberInfoDic.Add(target, temp); //将数据展示在软件列表中,并添加数据到数据库 CacheData.MainFrom.dgv2(temp); } else { MyLogUtil.ToLogFotTest("5555555555,此qq信息已经缓存:" + target); } }catch (Exception ex) { MyLogUtil.ToLogFotTest("当群员入群后,自动添加用户时出现异常,原因:" + ex); //CacheData.CoolQApi.AddLog(40,CoolQLogLevel.Debug, "当群员入群后,自动添加用户时出现异常,原因:"+ex); } } //MyLogUtil.ToLogFotTest("3333333:"); } return(base.ProcessGroupMemberIncrease(subType, sendTime, fromGroup, fromQq, target)); }