Пример #1
0
        private void DoWork(object state)
        {
            if (isRunning == true)
            {
                return;
            }
            isRunning = true;
            if (GloableCache.ZLClient != null && GloableCache.ZLServerOnline)
            {
                var mediaListResp = GloableCache.ZLClient.getMediaList();
                if (mediaListResp.code == -300)
                {
                    GloableCache.ZLServerOnline = false;
                }
                else
                {
                    GloableCache.ZLServerOnline = true;
                    if (mediaListResp.data != null)
                    {   //定时获取媒体流列表
                        GloableCache.MediaStreams.Clear();
                        mediaListResp.data.ForEach(v =>
                        {
                            GloableCache.MediaStreams.Add(v);
                        });
                    }
                }

                //比对我的拉流和服务器拉流的差异
                diffStremPorxy();
            }
            else
            {
                if (!GloableCache.IsInitServer)
                {
                    //服务器还没初始化完毕的时候,不要重连服务器
                    return;
                }
                GloableCache.ZLServerOnline = false;

                //尝试重连服务器
                var ip   = DataBaseCache.Configs.Where(p => p.ConfigKey == ConfigKeys.ZLMediaServerIp).FirstOrDefault().ConfigValue;
                var port = DataBaseCache.Configs.Where(p => p.ConfigKey == ConfigKeys.ZLMediaServerPort).FirstOrDefault().ConfigValue;
                Console.WriteLine("开始连接ZLMediaKitServer,IP:" + ip + ",Port:" + port + "......");

                var sec     = DataBaseCache.Configs.Where(p => p.ConfigKey == ConfigKeys.ZLMediaServerSecret).FirstOrDefault().ConfigValue;
                var client  = new STRealVideo.Lib.ZLClient("http://" + ip + ":" + port, sec);
                var configs = client.getServerConfig();
                if (configs.code == -300)
                {
                    GloableCache.ZLServerOnline = false;
                }
                else
                {
                    GloableCache.ZLClient            = client;
                    GloableCache.ZLMediaServerConfig = configs.data.FirstOrDefault();
                    GloableCache.ZLServerOnline      = true;
                }
            }
            isRunning = false;
        }
        public async Task <BaseModel <string> > InitAsync(InitServerReqDto req)
        {
            BaseModel <String> result = new BaseModel <string>();

            try
            {
                await BrowserReceiveLoaderMessageAsync("开始校验数据...", Enums.MessageType.Info);

                if (String.IsNullOrWhiteSpace(req.Account) || String.IsNullOrWhiteSpace(req.Password))
                {
                    await BrowserReceiveLoaderMessageAsync("登录信息填写错误,请重新填写!", Enums.MessageType.Info);

                    return(result.Failed("登录信息填写错误,请重新填写!"));
                }

                await BrowserReceiveLoaderMessageAsync("开始验证流媒体服务器<a href=\"http://" + req.ZLMediaServerIp + ":" + req.ZLMediaServerPort + "\" target=\"_blank\">http://" + req.ZLMediaServerIp + ":" + req.ZLMediaServerPort + "</a>", Enums.MessageType.Warning);

                var client  = new STRealVideo.Lib.ZLClient("http://" + req.ZLMediaServerIp + ":" + req.ZLMediaServerPort, req.ZLMediaServerSecret);
                var configs = client.getServerConfig();
                if (configs != null && configs.code == 0 && configs.data != null && configs.data.Count != 0 && configs.data[0].ContainsKey("api.secret"))
                {
                    //连接服务器成功,开始生成数据
                    await BrowserReceiveLoaderMessageAsync("服务器验证通过!", Enums.MessageType.Success);
                    await BrowserReceiveLoaderMessageAsync("开始创建数据库基础信息...", MessageType.Warning);
                }
                else
                {
                    await BrowserReceiveLoaderMessageAsync("连接流媒体服务器失败:" + configs.msg, Enums.MessageType.Failed);

                    return(result.Failed("连接流媒体服务器失败:" + configs.msg));
                }
            }
            catch (Exception ex)
            {
                await BrowserReceiveLoaderMessageAsync("验证流媒体服务器异常,异常信息:" + ex.Message, Enums.MessageType.Failed);

                return(result.Failed("验证流媒体服务器异常,异常信息:" + ex.Message));
            }

            try
            {
                var userId = Tools.NewID;
                var date   = DateTime.Now;
                var user   = new TbUser()
                {
                    Id          = userId,
                    LoginName   = req.Account,
                    LoginPasswd = req.Password,
                    Name        = "超级管理员",
                    Sex         = Enums.SexEnum.Man,
                    Tel         = null,
                    Address     = null,
                    CreateBy    = userId,
                    UpdateBy    = userId,
                    CreateTs    = date,
                    UpdateTs    = date,
                    State       = (int)BaseStatus.Normal
                };
                zLDataBase.Users.Add(user);
                var menus = InitTableData.GenerateMenu(userId);
                zLDataBase.Menus.AddRange(menus);
                var role = InitTableData.GenerateRole(userId);
                zLDataBase.Roles.Add(role);
                menus.ForEach(v =>
                {
                    zLDataBase.MenuRoles.Add(new TbMenuRole()
                    {
                        MenuId = v.Id, RoleId = role.Id
                    });
                });
                zLDataBase.UserRoles.Add(new TbUserRole()
                {
                    RoleId = role.Id, UserId = userId
                });

                var config_serverIp = new TbConfig()
                {
                    ConfigKey   = ConfigKeys.ZLMediaServerIp,
                    ConfigValue = req.ZLMediaServerIp
                };

                var config_serverPort = new TbConfig()
                {
                    ConfigKey   = ConfigKeys.ZLMediaServerPort,
                    ConfigValue = req.ZLMediaServerPort
                };

                var config_serverSec = new TbConfig()
                {
                    ConfigKey   = ConfigKeys.ZLMediaServerSecret,
                    ConfigValue = req.ZLMediaServerSecret
                };
                zLDataBase.Configs.Add(config_serverIp);
                zLDataBase.Configs.Add(config_serverPort);
                zLDataBase.Configs.Add(config_serverSec);

                await BrowserReceiveLoaderMessageAsync("正在提交数据库事物...", Enums.MessageType.Warning);

                await zLDataBase.SaveChangesAsync();
                await BrowserReceiveLoaderMessageAsync("恭喜,系统已经初始化完毕,Enjoy It!", Enums.MessageType.Success);

                Startup.ReadDataBase2Cache(zLDataBase);

                LoginLogic(mapper.Map <UserDto>(user));//执行登录逻辑


                Thread.Sleep(3000);
                return(result.Success("初始化完毕!"));
            }
            catch (Exception ex)
            {
                await BrowserReceiveLoaderMessageAsync("初始化数据库发生异常:" + ex.Message, Enums.MessageType.Failed);

                return(result.Failed("初始化数据库发生异常:" + ex.Message));
            }
        }