MoonExp/Models/ExportArgs.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
MoonExp/Models/ResponseMsg.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
MoonExp/Models/SysTask.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
MoonExp/Models/XYZArgs.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
MoonExp/MoonExp.csproj | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
MoonExp/Tools.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
MoonExp/Web.config | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
MoonExp/cs/ExportUtil.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
MoonExp/cs/LogOut.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
MoonExp/cs/PostgreHelper.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
MoonExp/Models/ExportArgs.cs
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,136 @@ using System; using System.Collections.Generic; using System.Linq; using System.Web; namespace MoonExp.Models { /// <summary> /// åºå¾åæ° /// </summary> public class ExportArgs { public ExportArgs() { } public String token { set; get; } /// <summary> /// æ é¢ /// </summary> public String title { set; get; } /// <summary> /// çº¸å¼ å¤§å° /// </summary> public String pageSize { set; get; } /// <summary> /// ç份 /// </summary> public String province { set; get; } /// <summary> /// æ¯ä¾å°º /// </summary> public String scale { set; get; } /// <summary> /// å辨çï¼å³ä¸è§ææ¬ï¼ /// </summary> public String resolution { set; get; } /// <summary> /// å¶å¾æ¶é´ /// </summary> public String date { set; get; } /// <summary> /// å¾å± /// </summary> public String layers { set; get; } /// <summary> /// 导åºè·¯å¾ /// </summary> public String imgPath { set; get; } /// <summary> /// æè½¬è§åº¦ /// </summary> public double rotation { set; get; } /// <summary> /// Xæå° /// </summary> public double xmin { set; get; } /// <summary> /// Yæå° /// </summary> public double ymin { set; get; } /// <summary> /// Yæå¤§ /// </summary> public double ymax { set; get; } /// <summary> /// Xæå¤§ /// </summary> public double xmax { set; get; } /// <summary> /// åºå¾å辨ç /// </summary> public int dpi { set; get; } /// <summary> /// æ¨¡æ¿æä»¶ /// </summary> public String qpt { set; get; } /// <summary> /// 设置é»è®¤å¼ /// </summary> public void SetDefault() { if (string.IsNullOrWhiteSpace(title)) title = "管éåºç¡å¤§æ°æ®å¹³å°"; if (string.IsNullOrWhiteSpace(province)) province = string.Empty; if (string.IsNullOrWhiteSpace(scale)) scale = string.Empty; if (string.IsNullOrWhiteSpace(resolution)) resolution = string.Empty; if (string.IsNullOrWhiteSpace(date)) date = DateTime.Now.ToString("yyyy.MM.dd"); this.dpi = GetDpi(this.pageSize); } /// <summary> /// è·åDPI /// </summary> /// <param name="page">页é¢å¤§å°</param> /// <returns>DPI</returns> public int GetDpi(string page) { if (string.IsNullOrWhiteSpace(page)) return 300; switch (page.ToUpper()) { case "A0": return 1200; case "A1": return 850; case "A2": return 600; case "A3": return 424; case "A4": return 300; case "A5": return 212; case "A6": return 150; default: return 300; } } } } MoonExp/Models/ResponseMsg.cs
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,49 @@ using System; using System.Collections.Generic; using System.Linq; using System.Web; namespace MoonExp.Models { public class ResponseMsg<T> { public ResponseMsg() { time = DateTime.Now.Ticks; } public ResponseMsg(int code) : this() { this.code = code; } public int code { set; get; } public String msg { set; get; } public long count { set; get; } public T result { set; get; } public long time { set; get; } public static ResponseMsg<T> success(String msg, T result, long count = 0) { ResponseMsg<T> rm = new ResponseMsg<T>(200); rm.msg = msg; rm.result = result; rm.count = count; return rm; } public static ResponseMsg<T> fail(String msg) { ResponseMsg<T> rm = new ResponseMsg<T>(500); rm.msg = msg; return rm; } } } MoonExp/Models/SysTask.cs
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,46 @@ using System; using System.Collections.Generic; using System.Linq; using System.Web; namespace MoonExp.Models { public class SysTask { public int id { set; get; } public string name { set; get; } /// <summary> /// ç¶æï¼0-æªå¼å§ï¼1-è¿è¡ä¸ï¼2-æ£å¸¸ç»æï¼3-ç¨æ·ç»æï¼4-è¿è¡åºé /// </summary> public int status { set; get; } /// <summary> /// ç±»å«ï¼DOMï¼DEMï¼MPTï¼3DMLï¼CPTï¼BIMï¼LASï¼OSGBï¼PNG /// </summary> public string type { set; get; } public string descr { set; get; } public string err { set; get; } public string ip { set; get; } public int pid { set; get; } public string gids { set; get; } public string depcode { set; get; } public string dircode { set; get; } public int create_user { set; get; } public DateTime create_time { set; get; } public int update_user { set; get; } public DateTime update_time { set; get; } } } MoonExp/Models/XYZArgs.cs
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,86 @@ using System; using System.Collections.Generic; using System.Linq; using System.Web; namespace MoonExp.Models { /// <summary> /// XYZåæ° /// </summary> public class XYZArgs { public XYZArgs() { srids = new List<int>(); zs = new List<double>(); ids = new List<int>(); isNew = true; } /// <summary> /// 令ç /// </summary> public string token { set; get; } /// <summary> /// åç§° /// </summary> public string name { set; get; } /// <summary> /// ç¨æ·ID /// </summary> public int userId { set; get; } /// <summary> /// å°å¾æå°çº§å« /// </summary> public int min { set; get; } /// <summary> /// å°å¾æå¤§çº§å« /// </summary> public int max { set; get; } /// <summary> /// æ æ°æ® /// </summary> public int noData { set; get; } /// <summary> /// æ°æ®ç®å½ç¼ç /// </summary> public string dircode { set; get; } /// <summary> /// åä½ç®å½ç¼ç /// </summary> public string depcode { set; get; } /// <summary> /// å æ°æ®IDéå /// </summary> public List<int> ids { set; get; } /// <summary> /// å使¨¡åéå /// </summary> public List<int> models { set; get; } /// <summary> /// æ¯/å¦å ¨æ°åå¸ /// </summary> public bool isNew { set; get; } /// <summary> /// åæ ç³»IDéå /// </summary> public List<int> srids { set; get; } /// <summary> /// é«åº¦åç§»é /// </summary> public List<double> zs { set; get; } } } MoonExp/MoonExp.csproj
@@ -38,7 +38,16 @@ <WarningLevel>4</WarningLevel> </PropertyGroup> <ItemGroup> <Reference Include="log4net4"> <HintPath>..\ExportMap\DLL\log4net4.dll</HintPath> </Reference> <Reference Include="Microsoft.CSharp" /> <Reference Include="Mono.Security"> <HintPath>..\ExportMap\DLL\Mono.Security.dll</HintPath> </Reference> <Reference Include="Npgsql"> <HintPath>..\ExportMap\DLL\Npgsql.dll</HintPath> </Reference> <Reference Include="System.Net.Http" /> <Reference Include="System.Web.DynamicData" /> <Reference Include="System.Web.Entity" /> @@ -77,10 +86,18 @@ </ItemGroup> <ItemGroup> <Compile Include="App_Start\WebApiConfig.cs" /> <Compile Include="cs\ExportUtil.cs" /> <Compile Include="cs\LogOut.cs" /> <Compile Include="cs\PostgreHelper.cs" /> <Compile Include="Global.asax.cs"> <DependentUpon>Global.asax</DependentUpon> </Compile> <Compile Include="Models\ExportArgs.cs" /> <Compile Include="Models\ResponseMsg.cs" /> <Compile Include="Models\SysTask.cs" /> <Compile Include="Models\XYZArgs.cs" /> <Compile Include="Properties\AssemblyInfo.cs" /> <Compile Include="Tools.cs" /> </ItemGroup> <ItemGroup> <Content Include="packages.config" /> @@ -88,7 +105,6 @@ <ItemGroup> <Folder Include="App_Data\" /> <Folder Include="Controllers\" /> <Folder Include="Models\" /> </ItemGroup> <PropertyGroup> <VisualStudioVersion Condition="'$(VisualStudioVersion)' == ''">10.0</VisualStudioVersion> MoonExp/Tools.cs
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,131 @@ using MoonExp.cs; using MoonExp.Models; using Npgsql; using System; using System.Collections.Generic; using System.Data.Common; using System.Diagnostics; using System.IO; using System.Linq; using System.Web; namespace MoonExp { public class Tools { /// <summary> /// åºç¡ç®å½ /// </summary> public static readonly string BaseDir = AppDomain.CurrentDomain.BaseDirectory; private static PostgreHelper _dbHelper; /// <summary> /// DB帮å©ç±» /// </summary> public static PostgreHelper DBHelper { get { if (null == _dbHelper) { _dbHelper = new PostgreHelper(); } return _dbHelper; } } /// <summary> /// æ ¹æ®åçè·åç¨æ·ID /// </summary> public static int SelectUserIdByToken(string token) { string sql = "select create_user from lf.sys_token where token=@token order by create_time desc limit 1;"; DbParameter dp1 = new NpgsqlParameter("@token", token); object obj = DBHelper.GetScalar(sql, dp1); return null == obj ? 0 : int.Parse(obj.ToString()); } /// <summary> /// æ§è¡CMD /// </summary> /// <param name="cmd">å½ä»¤è¡</param> /// <param name="isPy">æ¯å¦ä¸ºQGIS Pyèæ¬</param> /// <param name="isOut">æ¯å¦è¾åºé误</param> /// <returns>æ§è¡ç»ææåºéä¿¡æ¯</returns> public static string ExecCmd(string cmd, bool isPy = false, bool isOut = false) { List<string> list = new List<string>(); if (isPy) { list.Add("cd \"C:\\Program Files\\QGIS 3.16\\apps\\Python37\""); list.Add("\"C:\\Program Files\\QGIS 3.16\\bin\\qgis_process-qgis-ltr.bat\""); //list.Add("\"C:\\Program Files\\QGIS 3.16\\bin\\python-qgis-ltr.bat\""); //list.Add("exit()"); } list.Add(cmd); string str = ExecCmd(list, isOut); return str; } /// <summary> /// æ§è¡CMD /// </summary> /// <param name="task">ä»»å¡</param> /// <param name="list">å½ä»¤éå</param> /// <param name="isOut">æ¯å¦è¾åºé误</param> /// <returns>æ§è¡ç»ææåºéä¿¡æ¯</returns> public static string ExecCmd(List<string> list, bool isOut = false) { string str; try { Process p = new Process(); p.StartInfo.FileName = "cmd.exe"; p.StartInfo.UseShellExecute = false; p.StartInfo.CreateNoWindow = true; //p.StartInfo.WindowStyle = ProcessWindowStyle.Hidden; p.StartInfo.RedirectStandardInput = true; p.StartInfo.RedirectStandardOutput = isOut; p.StartInfo.RedirectStandardError = true; p.Start(); StreamWriter si = p.StandardInput; // æ åè¾å ¥æµ StreamReader so = isOut ? p.StandardOutput : null; // æ åè¾åºæµ StreamReader se = p.StandardError; // æ åéè¯¯æµ LogOut.Info("cmd = " + string.Join("ï¼", list)); si.AutoFlush = true; foreach (string cmd in list) { si.WriteLine(cmd); } si.WriteLine("exit"); string info = null == so ? null : so.ReadToEnd(); str = se.ReadToEnd(); //if (!string.IsNullOrEmpty(info)) LogOut.Debug(info); if (!string.IsNullOrEmpty(str) && !str.Contains("@jit(cache=True, nogil=True)")) LogOut.Error(str); if (p.HasExited == false) p.Kill(); if (null != so) so.Close(); se.Close(); si.Close(); p.Close(); } catch (Exception ex) { LogOut.Error(ex.Message + "\r\n" + ex.StackTrace); str = ex.Message; } return str; } } } MoonExp/Web.config
@@ -1,21 +1,102 @@ <?xml version="1.0" encoding="utf-8"?> <!-- For more information on how to configure your ASP.NET application, please visit http://go.microsoft.com/fwlink/?LinkId=301879 --> <configuration> <appSettings> <!-- æå¡å°å --> <add key="moonServer" value="http://127.0.0.1:9000/MoonServer"/> <!-- ä¸è½½ç®å½ --> <add key="downloadFolder" value="D:\Moon\download"/> <!-- PGè¿æ¥ --> <add key="pgConn" value="Server=192.168.20.83;Port=5433;Database=moon;User Id=postgres;Password=Postgres!_14_moon;"/> </appSettings> <system.web> <compilation debug="true" targetFramework="4.5.2" /> <httpRuntime targetFramework="4.5.2" /> </system.web> <system.webServer> <security> <requestFiltering> <!-- 1GB = 1073741824 --> <requestLimits maxAllowedContentLength="2147483647"/> </requestFiltering> </security> <handlers> <remove name="ExtensionlessUrlHandler-Integrated-4.0" /> <remove name="OPTIONSVerbHandler" /> <remove name="TRACEVerbHandler" /> <add name="ExtensionlessUrlHandler-Integrated-4.0" path="*." verb="*" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" /> </handlers> <staticContent> <remove fileExtension=".wsv"/> <mimeMap fileExtension=".wsv" mimeType="application/octet-stream"/> <remove fileExtension=".czml"/> <mimeMap fileExtension=".czml" mimeType="application/json"/> <remove fileExtension=".glsl"/> <mimeMap fileExtension=".glsl" mimeType="text/plain"/> <remove fileExtension=".b3dm"/> <mimeMap fileExtension=".b3dm" mimeType="application/octet-stream"/> <remove fileExtension=".pnts"/> <mimeMap fileExtension=".pnts" mimeType="application/octet-stream"/> <remove fileExtension=".i3dm"/> <mimeMap fileExtension=".i3dm" mimeType="application/octet-stream"/> <remove fileExtension=".cmpt"/> <mimeMap fileExtension=".cmpt" mimeType="application/octet-stream"/> <remove fileExtension=".gltf"/> <mimeMap fileExtension=".gltf" mimeType="model/gltf+json"/> <remove fileExtension=".bgltf"/> <mimeMap fileExtension=".bgltf" mimeType="model/gltf-binary"/> <remove fileExtension=".glb"/> <mimeMap fileExtension=".glb" mimeType="model/gltf-binary"/> <remove fileExtension=".json"/> <mimeMap fileExtension=".json" mimeType="application/json"/> <remove fileExtension=".geojson"/> <mimeMap fileExtension=".geojson" mimeType="application/json"/> <remove fileExtension=".topojson"/> <mimeMap fileExtension=".topojson" mimeType="application/json"/> <remove fileExtension=".wasm"/> <mimeMap fileExtension=".wasm" mimeType="application/wasm"/> <remove fileExtension=".woff"/> <mimeMap fileExtension=".woff" mimeType="application/font-woff"/> <remove fileExtension=".woff2"/> <mimeMap fileExtension=".woff2" mimeType="application/font-woff2"/> <remove fileExtension=".kml"/> <mimeMap fileExtension=".kml" mimeType="application/vnd.google-earth.kml+xml"/> <remove fileExtension=".kmz"/> <mimeMap fileExtension=".kmz" mimeType="application/vnd.google-earth.kmz"/> <remove fileExtension=".svg"/> <mimeMap fileExtension=".svg" mimeType="image/svg+xml"/> <remove fileExtension=".terrain"/> <mimeMap fileExtension=".terrain" mimeType="application/vnd.quantized-mesh"/> <remove fileExtension=".ktx"/> <mimeMap fileExtension=".ktx" mimeType="image/ktx"/> <remove fileExtension=".crn"/> <mimeMap fileExtension=".crn" mimeType="image/crn"/> <remove fileExtension=".ktx2"/> <mimeMap fileExtension=".ktx2" mimeType="image/ktx2"/> <remove fileExtension=".eot"/> <mimeMap fileExtension=".eot" mimeType="application/vnd.ms-fontobject"/> <remove fileExtension=".ttf"/> <mimeMap fileExtension=".ttf" mimeType="application/octet-stream"/> <remove fileExtension=".csv"/> <mimeMap fileExtension=".csv" mimeType="application/octet-stream"/> <remove fileExtension=".fly"/> <mimeMap fileExtension=".fly" mimeType="application/octet-stream"/> <remove fileExtension=".emp"/> <mimeMap fileExtension=".emp" mimeType="application/octet-stream"/> <remove fileExtension=".edp"/> <mimeMap fileExtension=".edp" mimeType="application/octet-stream"/> <remove fileExtension=".flv"/> <mimeMap fileExtension=".flv" mimeType="flv-application/octet-stream"/> <remove fileExtension=".mp4"/> <mimeMap fileExtension=".mp4" mimeType="video/mp4"/> <remove fileExtension=".wmv"/> <mimeMap fileExtension=".wmv" mimeType="audio/x-ms-wmv"/> <clientCache cacheControlMode="UseMaxAge" cacheControlMaxAge="1.00:00:00"/> </staticContent> <httpProtocol> <customHeaders> <add name="Access-Control-Allow-Headers" value="*,X-Requested-With"/> <add name="Access-Control-Allow-Origin" value="*"/> </customHeaders> </httpProtocol> </system.webServer> </configuration> MoonExp/cs/ExportUtil.cs
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,248 @@ using MoonExp.Models; using Newtonsoft.Json; using System; using System.Collections.Generic; using System.Configuration; using System.Diagnostics; using System.IO; using System.Linq; using System.Net; using System.Text; using System.Web; namespace MoonExp.cs { public class ExportUtil { /// <summary> /// æå¤§æä»¶æ° /// </summary> public const int MaxFileCount = 2000; private static string sourcesPath; /// <summary> /// è·åèµæºç®å½ /// </summary> public static string SourcesPath { get { if (string.IsNullOrEmpty(sourcesPath)) { sourcesPath = Path.Combine(Tools.BaseDir, "Sources"); } return sourcesPath; } } private static string pyFile; /// <summary> /// è·åPythonæä»¶ /// </summary> public static string PyFile { get { if (string.IsNullOrWhiteSpace(pyFile)) { pyFile = Path.Combine(SourcesPath, "render.py"); } return pyFile; } } /// <summary> /// è·å䏿å符串 /// </summary> public static string DateStr { get { return DateTime.Now.ToString("yyyyMMddHHmmss"); } } /// <summary> /// è·åä¸è½½ç®å½ /// </summary> public static string DownloadFolder { get { return ConfigurationManager.AppSettings["downloadFolder"]; } } /// <summary> /// åå°æå¡å°å /// </summary> public static string MoonServer { get { return ConfigurationManager.AppSettings["moonServer"]; } } /// <summary> /// è·ååºå¾åç®å½ /// </summary> public static string GetExportSubFolder() { string root = DownloadFolder; if (!Directory.Exists(root)) { Directory.CreateDirectory(root); } int i = 1; while (true) { string subFolder = Path.Combine(root, i.ToString()); if (!Directory.Exists(subFolder)) { Directory.CreateDirectory(subFolder); break; } DirectoryInfo dir = new DirectoryInfo(subFolder); FileInfo[] files = dir.GetFiles(); if (files == null || files.Length < MaxFileCount) { break; } i++; } return i.ToString(); } /// <summary> /// çæ /// </summary> /// <param name="args">åºå¾åæ°</param> /// <param name="err">é误信æ¯</param> /// <returns>å¾çè·¯å¾</returns> public static string Generate(ExportArgs args, ref string err) { string date = DateStr; string sub = GetExportSubFolder(); string qgz = "Test.qgz"; args.imgPath = sub + "\\" + date + ".png"; args.qpt = date + ".qpt"; args.SetDefault(); CreateTemplate(args); string cmd = string.Format("python \"{0}\" -qgz {1} -qpt {2}", PyFile, qgz, args.qpt); err = Tools.ExecCmd(cmd, true, true); string qptFile = Path.Combine(SourcesPath, args.qpt); if (File.Exists(qptFile)) File.Delete(qptFile); string imgPath = Path.Combine(DownloadFolder, args.imgPath); bool flag = File.Exists(imgPath); return flag ? args.imgPath : null; } /// <summary> /// 转æ¢ä¸ºXYZåæ° /// </summary> private static XYZArgs ToXYZArgs(ExportArgs ea) { XYZArgs args = new XYZArgs(); args.name = ea.title; args.ids = new List<int>(); args.depcode = null; args.dircode = null; args.userId = Tools.SelectUserIdByToken(ea.token); return args; } /// <summary> /// åå»ºæ¨¡æ¿ /// </summary> /// <param name="args">åºå¾åæ°</param> public static void CreateTemplate(ExportArgs args) { string imgPath = Path.Combine(DownloadFolder, args.imgPath); string templateFile = Path.Combine(SourcesPath, "Template.qpt"); string qptFile = Path.Combine(SourcesPath, args.qpt); LogOut.Info("imgPath = " + imgPath + ", tempFile = " + templateFile + ", qptFile = " + qptFile); string xml = File.ReadAllText(templateFile); xml = xml .Replace("{dpi}", args.dpi.ToString()) .Replace("{title}", args.title) .Replace("{sourcesPath}", SourcesPath) .Replace("{rotation}", args.rotation.ToString()) .Replace("{xmin}", args.xmin.ToString()) .Replace("{ymin}", args.ymin.ToString()) .Replace("{ymax}", args.ymax.ToString()) .Replace("{xmax}", args.xmax.ToString()) .Replace("{province}", args.province) .Replace("{scale}", args.scale) .Replace("{resolution}", args.resolution) //.Replace("{date}", args.date) .Replace("{date}", DateTime.Now.ToString("yyyy.MM.dd")) .Replace("{layers}", args.layers) .Replace("{imgPath}", imgPath); File.WriteAllText(qptFile, xml); } /// <summary> /// éªè¯ä»¤ç /// </summary> /// <param name="token">令ç</param> /// <returns>æ¯/妿æ</returns> public static bool VerifyToken(string token) { try { string url = MoonServer + "/sign/check?token=" + token.Trim(); string json = GetData(url); if (string.IsNullOrWhiteSpace(json)) { return false; } ResponseMsg<bool> rm = JsonConvert.DeserializeObject<ResponseMsg<bool>>(json); return rm != null && rm.code == 200 && rm.result; } catch { return false; } } /// <summary> /// Getè·åæ°æ® /// </summary> /// <param name="url">URL</param> /// <returns>æ°æ®</returns> public static string GetData(string url) { Uri uri = new Uri(url); HttpWebRequest request = (HttpWebRequest)WebRequest.Create(uri); request.Method = "GET"; request.ContentType = "application/x-www-form-urlencoded"; HttpWebResponse response = (HttpWebResponse)request.GetResponse(); StreamReader reader = new StreamReader(response.GetResponseStream(), Encoding.UTF8); string str = reader.ReadToEnd(); reader.Close(); return str; } } } MoonExp/cs/LogOut.cs
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,128 @@ using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Web; namespace MoonExp.cs { /// <summary> /// æ¥å¿è¾åºç±» /// </summary> public class LogOut { /// <summary> /// æ¥å¿ /// </summary> protected static readonly log4net.ILog _log; /// <summary> /// éææé 彿° /// </summary> static LogOut() { try { _log = log4net.LogManager.GetLogger("log4net"); //HttpContext.Current.Request.PhysicalApplicationPath string fileName = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Sources\\Log.config"); log4net.Config.XmlConfigurator.Configure(new FileInfo(fileName)); } catch { } } /// <summary> /// è°è¯ /// </summary> /// <param name="message">æ¥å¿</param> public static void Debug(string message) { try { if (_log.IsDebugEnabled) { _log.Debug("è°è¯ï¼" + message + "\r\n\r\n"); } } catch { } } /// <summary> /// ä¿¡æ¯ /// </summary> /// <param name="message">æ¥å¿</param> public static void Info(string message) { try { if (_log.IsInfoEnabled) { _log.Info("ä¿¡æ¯ï¼" + message + "\r\n\r\n"); } } catch { } } /// <summary> /// è¦å /// </summary> /// <param name="message">æ¥å¿</param> public static void Warn(string message) { try { if (_log.IsWarnEnabled) { _log.Warn("è¦åï¼" + message + "\r\n\r\n"); } } catch { } } /// <summary> /// é误 /// </summary> /// <param name="message">æ¥å¿</param> public static void Error(string message) { try { if (_log.IsErrorEnabled) { _log.Error("é误ï¼" + message + "\r\n\r\n"); } } catch { } } /// <summary> /// è´å½ /// </summary> /// <param name="message">æ¥å¿</param> public static void Fatal(string message) { try { if (_log.IsFatalEnabled) { _log.Fatal("è´å½ï¼" + message + "\r\n\r\n"); } } catch { } } } } MoonExp/cs/PostgreHelper.cs
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,188 @@ using Npgsql; using System; using System.Collections.Generic; using System.Configuration; using System.Data; using System.Data.Common; using System.Linq; using System.Text.RegularExpressions; using System.Web; namespace MoonExp.cs { /// <summary> /// Postgre帮å©ç±» /// </summary> public class PostgreHelper { private const string StrRegex = @"<[^>]+?style=[\w]+?:expression\(|\b(alert|confirm|prompt)\b|^\+/v(8|9)|<[^>]*?=[^>]*?&#[^>]*?>|\b(and|or)\b.{1,6}?(=|>|<|\bin\b|\blike\b)|/\*.+?\*/|<\s*script\b|<\s*img\b|\bEXEC\b|UNION.+?SELECT|UPDATE.+?SET|INSERT\s+INTO.+?VALUES|(SELECT|DELETE).+?FROM|(CREATE|ALTER|DROP|TRUNCATE)\s+(TABLE|DATABASE)"; private string conStr = null; public PostgreHelper() { this.conStr = ConfigurationManager.AppSettings["pgConn"]; } /// <summary> /// è¿æ¥å符串 /// </summary> public String ConStr { get { return this.conStr; } } /// <summary> /// è·åDataTable /// </summary> public DataTable GetDataTable(string sql, params DbParameter[] args) { using (NpgsqlConnection con = new NpgsqlConnection(ConStr)) { if (con.State != ConnectionState.Open) { con.Open(); } using (NpgsqlCommand cmd = new NpgsqlCommand(sql, con)) { if (args != null) { foreach (DbParameter arg in args) { //arg.ParameterName = arg.ParameterName.Replace("@", ":"); cmd.Parameters.Add(arg); } } using (NpgsqlDataAdapter adapter = new NpgsqlDataAdapter(cmd)) { DataTable dt = new DataTable(); adapter.Fill(dt); return dt; } } } } /// <summary> /// è·åè®°å½æ° /// </summary> public int GetCount(string sql, params DbParameter[] args) { using (NpgsqlConnection con = new NpgsqlConnection(ConStr)) { if (con.State != ConnectionState.Open) { con.Open(); } using (NpgsqlCommand cmd = new NpgsqlCommand(sql, con)) { if (args != null) { foreach (DbParameter arg in args) { //arg.ParameterName = arg.ParameterName.Replace("@", ":"); cmd.Parameters.Add(arg); } } object obj = cmd.ExecuteScalar(); return obj == null ? 0 : Convert.ToInt32(obj); } } } public Object GetScalar(string sql, params DbParameter[] args) { using (NpgsqlConnection con = new NpgsqlConnection(ConStr)) { if (con.State != ConnectionState.Open) { con.Open(); } using (NpgsqlCommand cmd = new NpgsqlCommand(sql, con)) { if (args != null) { foreach (DbParameter arg in args) { cmd.Parameters.Add(arg); } } return cmd.ExecuteScalar(); } } } public int GetIntScalar(string sql, params DbParameter[] args) { using (NpgsqlConnection con = new NpgsqlConnection(ConStr)) { if (con.State != ConnectionState.Open) { con.Open(); } using (NpgsqlCommand cmd = new NpgsqlCommand(sql, con)) { if (args != null) { foreach (DbParameter arg in args) { cmd.Parameters.Add(arg); } } object obj = cmd.ExecuteScalar(); return null == obj ? 0 : Convert.ToInt32(obj); } } } /// <summary> /// æ§è¡SQLï¼è¿åå½±åè¡æ° /// </summary> public int ExecuteNonQuery(string sql, params DbParameter[] args) { using (NpgsqlConnection con = new NpgsqlConnection(ConStr)) { if (con.State != ConnectionState.Open) { con.Open(); } using (NpgsqlCommand cmd = new NpgsqlCommand(sql, con)) { if (args != null) { foreach (DbParameter arg in args) { //arg.ParameterName = arg.ParameterName.Replace("@", ":"); cmd.Parameters.Add(arg); } } return cmd.ExecuteNonQuery(); } } } /// <summary> /// æ£æ¥å符串 /// </summary> public static bool CheckStr(string input) { return Regex.IsMatch(input, StrRegex, RegexOptions.IgnoreCase); } } }