private static string GetClippedGPIListString(IGroupInfo gi, int clipAfterLength = 60)
        {
            StringBuilder sb = new StringBuilder();

            foreach (var gpi in gi.GroupPointInfoArray)
            {
                string gpiName = gpi.Name.MapNullToEmpty();

                if (sb.Length > 0)
                {
                    sb.Append(",");
                }

                if (sb.Length + gpiName.Length <= clipAfterLength)
                {
                    sb.Append(gpiName);
                }
                else
                {
                    return("{0}...".CheckedFormat(sb));
                }
            }

            return(sb.ToString());
        }
        /// <summary>添加帐号与相关群组的关系</summary>
        /// <param name="accountId">帐号标识</param>
        /// <param name="groupId">群组标识</param>
        /// <param name="beginDate">启用时间</param>
        /// <param name="endDate">停用时间</param>
        public int AddRelation(string accountId, string groupId, DateTime beginDate, DateTime endDate)
        {
            if (string.IsNullOrEmpty(accountId))
            {
                // 帐号标识不能为空
                return(1);
            }

            if (string.IsNullOrEmpty(groupId))
            {
                // 群组标识不能为空
                return(2);
            }

            if (LDAPConfigurationView.Instance.IntegratedMode == "ON")
            {
                IAccountInfo account = MembershipManagement.Instance.AccountService[accountId];

                IGroupInfo group = MembershipManagement.Instance.GroupService[groupId];

                // 帐号对象、帐号的全局名称、帐号的登录名、群组对象、群组的全局名称等不能为空。
                if (account != null && !string.IsNullOrEmpty(account.GlobalName) && !string.IsNullOrEmpty(account.LoginName) &&
                    group != null && !string.IsNullOrEmpty(group.GlobalName))
                {
                    LDAPManagement.Instance.Group.AddRelation(account.LoginName, LDAPSchemaClassType.User, group.Name);
                }
            }

            return(this.provider.AddRelation(accountId, groupId, beginDate, endDate));
        }
Beispiel #3
0
 /// <summary>
 /// 构造函数
 /// </summary>
 /// <param name="mirai"></param>
 /// <param name="command"></param>
 /// <param name="info"></param>
 /// <param name="groupInfo"></param>
 public GameInput(MiraiHttpSession mirai, string command, IGroupMemberInfo info, IGroupInfo groupInfo)
 {
     this.Mirai     = mirai;
     this.Command   = command;
     this.GroupInfo = groupInfo;
     this.Sender    = info;
 }
Beispiel #4
0
 public static void ShowSplit(IGroupInfo collection)
 {
     var page = new SplitPage();
     //if (_sampleData == null) _sampleData = new SampleDataSource(page.BaseUri);
     //if (collection == null) collection = _sampleData.GroupedCollections.First();
     page.Items = collection;
     //page.Context = collection.Key;
     Window.Current.Content = page;
 }
Beispiel #5
0
 public GroupAnnouncement(string id, IGroupInfo group, string content, long sender, bool allMemberConfirmed, int confirmedMembersCount, DateTime createTime)
 {
     Id                    = id;
     Group                 = group;
     Content               = content;
     Sender                = sender;
     AllMemberConfirmed    = allMemberConfirmed;
     ConfirmedMembersCount = confirmedMembersCount;
     CreateTime            = createTime;
 }
        // -------------------------------------------------------
        // 查询
        // -------------------------------------------------------

        #region 函数:FindOne(string id)
        /// <summary>查询某条记录</summary>
        /// <param name="id">标识</param>
        /// <returns>返回实例<see cref="IGroupInfo"/>的详细信息</returns>
        public IGroupInfo FindOne(string id)
        {
            Dictionary <string, object> args = new Dictionary <string, object>();

            args.Add("Id", StringHelper.ToSafeSQL(id));

            IGroupInfo param = this.ibatisMapper.QueryForObject <IGroupInfo>(StringHelper.ToProcedurePrefix(string.Format("{0}_FindOne", tableName)), args);

            return(param);
        }
        // -------------------------------------------------------
        // 添加 删除 修改
        // -------------------------------------------------------

        #region 函数:Save(IGroupInfo param)
        /// <summary>保存记录</summary>
        /// <param name="param">实例<see cref="IGroupInfo"/>详细信息</param>
        /// <returns>实例<see cref="IGroupInfo"/>详细信息</returns>
        public IGroupInfo Save(IGroupInfo param)
        {
            if (string.IsNullOrEmpty(param.Id) || !IsExist(param.Id))
            {
                Insert(param);
            }
            else
            {
                Update(param);
            }

            return(param);
        }
 /// <summary>
 /// 构造函数
 /// </summary>
 /// <param name="groupInfo"></param>
 public GameStartUp(GameCommand gameCommand, IGroupInfo groupInfo) : base(gameCommand, groupInfo)
 {
     GameInfo = new GameInfo();
     Steps    = new Dictionary <IGameState, IGameStep>()
     {
         { GameState.AddPlayer, new AddPlayerStep() }, { GameState.Closed, new ClosedStep() }, { GameState.HunterStep, new HunterStep() },
         { GameState.Night, new NightStep() }, { GameState.Over, new OverStep() }, { GameState.ProphetStep, new ProphetStep() }, { GameState.SheriffMoveStep, new SheriffMoveStep() },
         { GameState.SheriffSpeekStep, new SheriffSpeekStep() }, { GameState.SheriffVotedStep, new SheriffVotedStep() }, { GameState.TalkAboutStep, new TalkAboutStep() },
         { GameState.VotedStep, new VotedStep() }, { GameState.WhiteStep, new WhiteStep() }, { GameState.WitchStep, new WitcherStep() }, { GameState.WolfKillStep, new WolfKillStep() },
     };
     CommandStart  = GameStartCommand;
     CmmandDestory = GameDestoryCommand;
     Name          = "狼人杀";
 }
        /// <summary>同步信息至 Active Directory</summary>
        /// <param name="param">角色信息</param>
        /// <param name="originalGlobalName">原始的全局名称</param>
        /// <param name="originalGroupTreeNodeId">原始的分组标识</param>
        public int SyncToLDAP(IGroupInfo param, string originalGlobalName, string originalCatalogItemId)
        {
            if (LDAPConfigurationView.Instance.IntegratedMode == "ON")
            {
                if (string.IsNullOrEmpty(param.Name))
                {
                    // 角色【${Name}】名称为空,请配置相关信息。
                    return(1);
                }
                else if (string.IsNullOrEmpty(param.GlobalName))
                {
                    // 角色【${GlobalName}】名称为空,请配置相关信息。
                    return(1);
                }
                else
                {
                    // 1.原始的全局名称不为空。
                    // 2.Active Directory 上有相关对象。
                    if (!string.IsNullOrEmpty(originalGlobalName) &&
                        LDAPManagement.Instance.Group.IsExistName(originalGlobalName))
                    {
                        if (param.GlobalName != originalGlobalName)
                        {
                            // 角色【${Name}】的名称发生改变。
                            LDAPManagement.Instance.Group.Rename(originalGlobalName, param.GlobalName);
                        }

                        if (param.CatalogItemId != originalCatalogItemId)
                        {
                            // 角色【${Name}】所属的组织发生变化。
                            LDAPManagement.Instance.Group.MoveTo(param.GlobalName,
                                                                 MembershipManagement.Instance.CatalogItemService.GetLDAPOUPathByCatalogItemId(param.CatalogItemId));
                        }

                        return(0);
                    }
                    else
                    {
                        string parentPath = MembershipManagement.Instance.CatalogItemService.GetLDAPOUPathByCatalogItemId(param.CatalogItemId);

                        LDAPManagement.Instance.Group.Add(param.GlobalName, parentPath);

                        // 角色【${Name}】创建成功。
                        return(0);
                    }
                }
            }

            return(0);
        }
        /// <summary>添加记录</summary>
        /// <param name="param">实例<see cref="IGroupInfo"/>详细信息</param>
        public void Insert(IGroupInfo param)
        {
            if (string.IsNullOrEmpty(param.Id))
            {
                param.Id = DigitalNumberContext.Generate("Key_Guid");
            }

            if (string.IsNullOrEmpty(param.Code))
            {
                param.Code = DigitalNumberContext.Generate("Table_Group_Key_Code");
            }

            this.ibatisMapper.Insert(StringHelper.ToProcedurePrefix(string.Format("{0}_Insert", tableName)), param);
        }
Beispiel #11
0
        public string FindOne(XmlDocument doc)
        {
            StringBuilder outString = new StringBuilder();

            string id = XmlHelper.Fetch("id", doc);

            IGroupInfo param = this.service.FindOne(id);

            outString.Append("{\"data\":" + AjaxUtil.Parse <IGroupInfo>(param) + ",");

            outString.Append(MessageObject.Stringify("0", I18n.Strings["msg_query_success"], true) + "}");

            return(outString.ToString());
        }
Beispiel #12
0
        /// <summary>
        /// 初始化
        /// </summary>
        /// <param name="row"></param>
        /// <param name="col"></param>
        public FiveGame(GameCommand gameCommand, IGroupInfo groupInfo) : base(gameCommand, groupInfo)
        {
            int row = Convert.ToInt32(gameCommand.Commands[0].Contents[0]);
            int col = Convert.ToInt32(gameCommand.Commands[0].Contents[1]);

            GameInfo = new GameInfo(row, col);
            Steps    = new Dictionary <IGameState, IGameStep>()
            {
                { FiveGameState.AddPlayer, new AddPlayerStep() }, { FiveGameState.Play, new PlayStep() },
                { FiveGameState.Over, new OverStep() }, { FiveGameState.Init, new InitStep() }
            };
            CommandStart  = GameStartCommand;
            CmmandDestory = GameDestoryCommand;
            Name          = "五子棋";
        }
Beispiel #13
0
        public static void ShowSplit(IGroupInfo collection)
        {
            var page = new SplitPage();

            if (_sampleData == null)
            {
                _sampleData = new SampleDataSource(page.BaseUri);
            }
            if (collection == null)
            {
                collection = _sampleData.GroupedCollections.First();
            }
            page.Items             = collection;
            page.Context           = collection.Key;
            Window.Current.Content = page;
        }
Beispiel #14
0
        public static void ShowSplit(IGroupInfo collection)
        {
            var page = new SplitPage();
            if (_repository == null)
                // _repository = new GithubRepository();
                _repository = new SampleRepository(page.BaseUri);

            if (!_repository.IsAuthenticated)
                _repository.Authenticate();

            if (collection == null)
                collection = _repository.GetCollaborator("");

            page.Items = collection;
            page.Context = collection.Key;
            Window.Current.Content = page;
        }
Beispiel #15
0
        public void chainReceived(IGroupInfo group, IGroupMemberInfo sender, IMessageBase[] msg)
        {
            foreach (Conversation conv in conversations)
            {
                if (conv.peerid == group.Id)
                {
                    conv.messages.Add(new KeyValuePair <IBaseInfo, IMessageBase[]>(sender, msg));
                    if (conv.Equals(current))
                    {
                        addonRefresh();
                    }
                    return;
                }
            }

            //没有符合的Conversation,创建。
            startConversation(sender.Group.Id, sender.Group.Name, 1).messages.Add(new KeyValuePair <IBaseInfo, IMessageBase[]>(sender, msg));
        }
        // -------------------------------------------------------
        // 保存 删除
        // -------------------------------------------------------

        #region 函数:Save(IGroupInfo param)
        /// <summary>保存记录</summary>
        /// <param name="param">实例<see cref="IGroupInfo"/>详细信息</param>
        /// <returns>实例<see cref="IGroupInfo"/>详细信息</returns>
        public IGroupInfo Save(IGroupInfo param)
        {
            if (LDAPConfigurationView.Instance.IntegratedMode == "ON")
            {
                IGroupInfo originalObject = FindOne(param.Id);

                if (originalObject == null)
                {
                    originalObject = param;
                }

                this.SyncToLDAP(param, originalObject.GlobalName, originalObject.CatalogItemId);
            }

            // 设置组织全路径
            param.FullPath = this.CombineFullPath(param.Name, param.CatalogItemId);

            // 设置唯一识别名称
            param.DistinguishedName = this.CombineDistinguishedName(param.Name, param.CatalogItemId);

            this.provider.Save(param);

            if (param != null)
            {
                string groupId = param.Id;

                // 绑定新的关系
                if (!string.IsNullOrEmpty(groupId))
                {
                    // 1.移除非默认成员关系
                    MembershipManagement.Instance.GroupService.ClearupRelation(groupId);

                    // 2.设置新的关系
                    foreach (IAccountInfo item in param.Members)
                    {
                        MembershipManagement.Instance.GroupService.AddRelation(item.Id, groupId);
                    }
                }
            }

            return(param);
        }
        private void OnSemanticZoomViewChangeStarted(object sender, SemanticZoomViewChangedEventArgs e)
        {
            // only interested in zoomed out->zoomed in transitions
            if (e.IsSourceZoomedInView)
            {
                return;
            }

            // get the selected group
            IGroupInfo <object, object> selectedGroup = e.SourceItem.Item as IGroupInfo <object, object>;

            // identify the selected group in the zoomed in data source (here I do it by its name, YMMV)
            var vectorView   = zoomedInGridView.ItemsSource as ObservableVectorView <object>;
            var myItemGroups = vectorView.CollectionGroups;
            IGroupInfo <object, object> myGroup = myItemGroups.First((g) =>
            {
                var gi = g as IGroupInfo <object, object>;
                if (gi == null)
                {
                    return(false);
                }
                return(gi.Key == selectedGroup.Key);
            }) as IGroupInfo <object, object>;

            if (myGroup != null)
            {
                object firstInGroup = myGroup.First();
                object vvi          = vectorView[vectorView.IndexOf(firstInGroup)];

                bool eq = vvi == firstInGroup;

                // workaround: need to reset the scroll position first, otherwise ScrollIntoView won't work
                SemanticZoomLocation zoomloc = new SemanticZoomLocation();
                zoomloc.Bounds = new Windows.Foundation.Rect(0, 0, 1, 1);
                zoomloc.Item   = firstInGroup;// myItemGroups.First();//[0];
                zoomedInGridView.MakeVisible(zoomloc);

                // now we can scroll to the selected group in the zoomed in view
                zoomedInGridView.ScrollIntoView(firstInGroup, ScrollIntoViewAlignment.Leading);
            }
        }
Beispiel #18
0
        // -------------------------------------------------------
        // 群组
        // -------------------------------------------------------

        #region 函数:GetGroups(string ids)
        /// <summary>获取对应的群组信息</summary>
        /// <param name="ids">群组标识,多个以逗号隔开</param>
        /// <returns></returns>
        public static IList <IGroupInfo> GetGroups(string ids)
        {
            string[] keys = ids.Split(new char[] { ',', ';' }, StringSplitOptions.RemoveEmptyEntries);

            IList <IGroupInfo> list = new List <IGroupInfo>();

            IGroupInfo item = null;

            foreach (string key in keys)
            {
                item = MembershipManagement.Instance.GroupService[key];

                // 过滤对象为空或者禁用的对象。
                if (item != null && item.Status == 1)
                {
                    list.Add(item);
                }
            }

            return(list);
        }
 public GroupEventArgs(GroupInfo group)
 {
     Group = group;
 }
Beispiel #20
0
 public GroupMemberInviteChangedEventArgs(IGroupInfo group, IGroupMemberInfo @operator, bool origin, bool current) : base(group, @operator, origin, current)
 {
 }
 public BotKickedOutEventArgs(IGroupInfo group, IGroupMemberInfo @operator) : base(group, @operator)
 {
 }
 public BotGroupEnumPropertyChangedEventArgs(IGroupInfo group, TProperty origin, TProperty current) : base(group, origin, current)
 {
 }
 /// <summary>修改记录</summary>
 /// <param name="param">实例<see cref="IGroupInfo"/>详细信息</param>
 public void Update(IGroupInfo param)
 {
     this.ibatisMapper.Update(StringHelper.ToProcedurePrefix(string.Format("{0}_Update", tableName)), param);
 }
 public BotGroupPermissionChangedEventArgs(IGroupInfo group, GroupPermission origin, GroupPermission current) : base(group, origin, current)
 {
 }
        /// <summary>同步信息</summary>
        /// <param name="param">群组信息</param>
        public int SyncFromPackPage(IGroupInfo param)
        {
            this.ibatisMapper.Insert(StringHelper.ToProcedurePrefix(string.Format("{0}_SyncFromPackPage", tableName)), param);

            return(0);
        }
Beispiel #26
0
 protected GroupEventArgs(GroupInfo group)
 {
     Group = group;
 }
        public void checkAndProcessReqQueue()
        {
            if (reqs.Count < 1)
            {
                return;
            }
            DateTime start = DateTime.Now;

            MainHolder.broadcaster.broadcastToAdminGroup("[队列DEBUG]\n长度=" + reqs.Count);
            Dictionary <long, GroupEntranceInfo> fails = new Dictionary <long, GroupEntranceInfo>();
            string log  = "";
            int    pass = 0;
            int    fail = 0;

            foreach (KeyValuePair <long, GroupEntranceInfo> d in reqs)
            {
                if (d.Value == null)
                {
                    continue;
                }

                IGroupInfo   g           = getGroupInfo(d.Value.group.Id);
                IGroupConfig gc          = getGroupConf(d.Value.group.Id);
                int          countmember = memberCountGroup(d.Value.group.Id);

                if (g != null)
                {
                    bool      success   = true;
                    int       maxmember = groupMaxMember;
                    long      q         = d.Value.qq.qq;
                    QBaseInfo qi        = d.Value.qq;
                    int       trusted   = DataBase.me.isUserTrusted(q);
                    //QQ q = MainHolder.session.get;
                    if (DataBase.me.isUserOperator(q))
                    {
                        MainHolder.session.HandleGroupApplyAsync(d.Value.igpargs, GroupApplyActions.Allow);
                        log += qi.nickname + "-> 是管理员 √\n";
                        pass++;
                    }
                    else if (trusted >= 0)
                    {
                        long opid = DataBase.me.getUserTrustOperator(q);
                        MainHolder.session.HandleGroupApplyAsync(d.Value.igpargs, GroupApplyActions.Allow);
                        if (trusted == 1)
                        {
                            DataBase.me.removeUserTrustlist(q);
                            log += qi.nickname + " -> 信任一次 [ATUSER(" + opid + ")] √\n";
                        }
                        else
                        {
                            log += qi.nickname + " -> 永久信任 [ATUSER(" + opid + ")] √\n";
                        }
                        pass++;
                    }
                    else if (memberCountGroup(g.Id) >= maxmember - 10)
                    {
                        long gpid = getLeastMemberGroup();
                        MainHolder.session.HandleGroupApplyAsync(d.Value.igpargs, GroupApplyActions.Deny, "该群成员已达上限,请加入" + gpid);
                        log += qi.nickname + " -> 群满 ×\n";
                        fail++;
                    }
                    else if (DataBase.me.isUserBlacklisted(q) && DataBase.me.connected)//已被拉黑
                    {
                        MainHolder.session.HandleGroupApplyAsync(d.Value.igpargs, GroupApplyActions.Deny, "您在LUYE通用黑名单中,不允许加群。");
                        log += qi.nickname + " -> 已被拉黑 ×\n";
                        fail++;
                    }
                    else if (DataBase.me.whichGroupsAreTheUserIn(q).Count > 0 && DataBase.me.connected)
                    {//重复加群
                        if (!DataBase.me.isMEIgnoreGroup(g.Id))
                        {
                            MainHolder.session.HandleGroupApplyAsync(d.Value.igpargs, GroupApplyActions.Deny, "您加入了其它鹿野群");
                            log += qi.nickname + " -> 重复加群 ×\n";
                            fail++;
                        }
                        else
                        {
                            MainHolder.session.HandleGroupApplyAsync(d.Value.igpargs, GroupApplyActions.Allow);
                            log += qi.nickname + " -> 不查重 √\n";
                            pass++;
                        }
                    }
                    else
                    {
                        int level = ThirdPartAPIs.getQQLevel(q, 3);
                        if (level < 0)
                        {
                            log += qi.nickname + " -> 等级验证失败 E\n";
                            fails.Add(d.Key, d.Value);
                        }
                        else if (level < 16)
                        {
                            MainHolder.session.HandleGroupApplyAsync(d.Value.igpargs, GroupApplyActions.Deny, "您的QQ等级(" + level + ")低于设定值(16)");
                            log += qi.nickname + " -> 等级过低 ×\n";
                            fail++;
                        }
                        else
                        {
                            log += qi.nickname + " -> 符合要求 √\n";
                            pass++;
                        }
                    }
                }
            }
            MainHolder.broadcaster.broadcastToAdminGroup("[延迟通过队列处理结果]\n" + log + "--------------\n" + pass + "通过," + fail + "拒绝," + fails.Count() + "错误\n\n处理耗时" + (DateTime.Now - start).TotalSeconds + "s");
            reqs.Clear();
            reqs = fails;
        }
 public GroupMessageRevokedEventArgs(IGroupInfo group, IGroupMemberInfo @operator, long senderId, int messageId, DateTime sentTime) : base(senderId, messageId, sentTime)
 {
     Group    = group;
     Operator = @operator;
 }
Beispiel #29
0
 public GroupEntranceAnnouncementChangedEventArgs(IGroupInfo group, IGroupMemberInfo @operator, string origin, string current) : base(group, @operator, origin, current)
 {
 }
 public GroupPropertyChangedEventArgs(IGroupInfo group, IGroupMemberInfo @operator, TProperty origin, TProperty current) : base(group, origin, current)
 {
     Operator = @operator;
 }
 public GroupNameChangedEventArgs(IGroupInfo group, IGroupMemberInfo @operator, string origin, string current) : base(group, @operator, origin, current)
 {
 }
 public GroupOperatingEventArgs(IGroupInfo group, IGroupMemberInfo @operator) : base(@operator)
 {
     Group = group;
 }