Beispiel #1
0
        public static void 发短信(string __号码, bool __组号码, string __内容)
        {
            var __webapi地址 = string.Format("http://{0}/sendmessage.k", _号码簿地址);

            try
            {
                HttpClient.发送请求(__webapi地址, new Dictionary <string, string> {
                    { "号码", __号码 }, { "组号码", __组号码.ToString() }, { "内容", __内容 }
                }, "POST", Encoding.UTF8);
            }
            catch (Exception ex)
            {
                H日志.记录提示(string.Format("从webapi {0} 发短信失败", __webapi地址), ex.Message);
                throw new ApplicationException("发短信失败,服务不存在");
            }
        }
Beispiel #2
0
        public bool 存在GIS数据库(string __账号, string __密码, string __数据源, string __数据库名称)
        {
            var __字符串 = 生成连接字符串(__账号, __密码, __数据源).ToString();

            try
            {
                return(H限时执行.执行(() =>
                {
                    using (var __连接 = new SqlConnection(__字符串))
                    {
                        __连接.Open();
                        return new SqlCommand("select * from [master].[dbo].[sysdatabases] where [name]='" + __数据库名称 + "'", __连接).ExecuteScalar() != null;
                    }
                }, 5000));
            }
            catch (Exception ex)
            {
                H日志.记录提示(__字符串, ex.Message);
                return(false);
            }
        }
Beispiel #3
0
        public bool 连接SQLSERVER(string __账号, string __密码, string __数据源)
        {
            var __字符串 = 生成连接字符串(__账号, __密码, __数据源).ToString();

            try
            {
                return(H限时执行.执行(() =>
                {
                    using (var __连接 = new SqlConnection(__字符串))
                    {
                        H限时执行.执行(() => __连接.Open(), 5000);
                        return true;
                    }
                }, 5000));
            }
            catch (Exception ex)
            {
                H日志.记录提示(__字符串, ex.Message);
                return(false);
            }
        }
Beispiel #4
0
        public static List <M部门> 获取部门()
        {
            var __webapi地址 = string.Format("http://{0}/numberbook.k", _号码簿地址);

            try
            {
                var __json = HttpClient.发送请求(__webapi地址, null, "GET", Encoding.UTF8);
                File.WriteAllText(H路径.获取绝对路径("部门数据.json", true), __json, Encoding.UTF8);
                return(H序列化.FromJSON字符串 <List <M部门> >(__json, false, 50000000) ?? new List <M部门>());
            }
            catch (Exception ex)
            {
                H日志.记录提示(string.Format("从webapi {0} 同步失败", __webapi地址), ex.Message);
            }
            if (!H路径.验证文件是否存在("部门数据.json", true))
            {
                //File.WriteAllText(H路径.获取绝对路径("部门数据.json", true), HJSON.序列化(H部门测试数据.部门列表), Encoding.UTF8);
                return(new List <M部门>());
            }
            return(H序列化.FromJSON字符串 <List <M部门> >(File.ReadAllText(H路径.获取绝对路径("部门数据.json", true), Encoding.UTF8), false, 20000000) ?? new List <M部门>());
        }
Beispiel #5
0
        public static void 配置(IT服务端 __IT服务端)
        {
            H容器.注入 <IB名片_S, B名片_S>(true, false, "", __IT服务端);
            H容器.注入 <IB系统_S, B系统_S>(true, false, "", __IT服务端);
            H容器.注入 <IB状态_S, B状态_S>(true, false, "", __IT服务端);
            H容器.注入 <IBFTP_S, BFTP_S>(true, false, "", __IT服务端);

            var __版本号 = H程序配置.获取字符串("版本号");

            if (string.IsNullOrEmpty(__版本号))
            {
                __版本号 = H调试.查询版本();
            }
            H容器.取出 <IB名片_S>().初始化(
                new M名片 {
                称 = "GIS服务器", 描述 = "", 版本号 = __版本号, 版本时间 = H程序配置.获取字符串("版本时间")
            },
                new List <M参数>
            {
                new M参数("IP列表", HJSON.序列化(H网络配置.获取IP配置())),
                new M参数("操作系统", Environment.OSVersion.ToString()),
                new M参数("64位系统", Environment.Is64BitOperatingSystem.ToString()),
                new M参数("登录账号", Environment.UserName),
            });
            H容器.取出 <IB状态_S>().初始化(null, DateTime.Now);
            H容器.取出 <IBFTP_S>();
            H容器.取出 <IB系统_S>().初始化(() =>
            {
                H日志.记录提示("重启");
                H服务管理.重启("GIS服务器", new TimeSpan(0, 1, 0));
            }, () =>
            {
                H日志.记录提示("关闭");
                H服务管理.关闭("GIS服务器", new TimeSpan(0, 1, 0));
            }, () => new List <M版本记录>
            {
                //new M版本记录{ 版本号 = "1.0.0.0", 修改记录 = "xxx", 标签 = new List<string>{ "a", "b"}},
                //new M版本记录{ 版本号 = "1.0.1.0", 修改记录 = "yyy", 标签 = new List<string>{ "a1", "b1"}},
            });
        }
Beispiel #6
0
        public void 初始化()
        {
            var __路径 = Path.Combine(Path.GetDirectoryName(Assembly.GetAssembly(typeof(B插件)).Location), "插件");

            if (!Directory.Exists(__路径))
            {
                H日志.记录错误("插件目录不存在");
                return;
            }
            var __子目录 = Directory.GetDirectories(__路径);

            if (__子目录.Length == 0)
            {
                H日志.记录错误("无任何插件");
                return;
            }
            配置通用访问("插件");

            H日志.记录提示("开始加载插件");
            var __插件配置 = HJSON.反序列化 <List <M插件配置> >(H程序配置.获取字符串("插件配置"));
            Action <string, string> __记录日志 = (__插件名称, __内容) => _IB日志.增加(new DTO.日志.M日志 {
                描述 = __内容, 时间 = DateTime.Now, 类别 = __插件名称
            });
            var __输入插件 = new List <IPluginGPS输入>();
            var __输出插件 = new List <IPluginGPS输出>();

            for (int i = 0; i < __子目录.Length; i++)
            {
                var __目录   = new DirectoryInfo(__子目录[i]).Name;
                var __入口路径 = Path.Combine(__子目录[i], __目录 + ".dll");
                if (!File.Exists(__入口路径))
                {
                    continue;
                }
                var __输入实例 = H反射.获取实例 <IPluginGPS输入>(__入口路径);
                if (__输入实例 != null)
                {
                    __输入插件.Add(__输入实例);
                    var __启用 = 查询启用(__插件配置, __目录);
                    _所有插件.Add(new M插件参数
                    {
                        描述   = __输入实例.接口描述,
                        称    = __输入实例.接口名称,
                        启用   = __启用,
                        管理界面 = __输入实例.管理界面,
                        目录   = __目录
                    });
                    if (__启用)
                    {
                        _输入插件列表.Add(__输入实例);
                    }
                    __输入实例.记录日志 = __内容 => __记录日志(__输入实例.接口名称, __内容);
                }
                var __输出实例 = H反射.获取实例 <IPluginGPS输出>(__入口路径);
                if (__输出实例 != null)
                {
                    __输出插件.Add(__输出实例);
                    var __启用 = 查询启用(__插件配置, __目录);
                    _所有插件.Add(new M插件参数
                    {
                        描述   = __输出实例.接口描述,
                        称    = __输出实例.接口名称,
                        启用   = __启用,
                        管理界面 = __输出实例.管理界面,
                        目录   = __目录
                    });
                    if (__启用)
                    {
                        _输出插件列表.Add(__输出实例);
                    }
                    __输出实例.记录日志 = __内容 => __记录日志(__输出实例.接口名称, __内容);
                }
            }

            H日志.记录提示("插件状态", H序列化.ToJSON字符串(_所有插件));

            _输入插件列表.ForEach(__插件 =>
            {
                __插件.GPS上报 += (__号码, __GPS) =>
                {
                    if (!_IBGPS过滤.判断合法(__号码, __GPS))
                    {
                        return;
                    }
                    OnGps上报(__号码, __GPS);
                    _输出插件列表.ForEach(k =>
                    {
                        try
                        {
                            k.接收GPS(__号码, __GPS);
                        }
                        catch (Exception ex)
                        {
                            H调试.记录异常(ex);
                        }
                    });
                };
            });
            _输出插件列表.ForEach(q =>
            {
                q.初始化();
            });

            _输入插件列表.ForEach(q =>
            {
                q.初始化();
            });
        }