C#常用Utils幫助類


1、Utils類:

using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using System;
using System.Collections;
using System.Collections.Generic;
using System.Data;
using System.Data.SqlClient;
using System.Globalization;
using System.IO;
using System.Linq;
using System.Net;
using System.Reflection;
using System.Security.Cryptography;
using System.Text;
using System.Text.RegularExpressions;
using System.Web;
using System.Web.Script.Serialization;
using System.Xml;

namespace DemoAPI
{
    public class Utils
    {
        #region 001:DataSet、DataTable是否為空
        /// <summary>
        /// 驗證DataTable是否為空,空返回FALSE,不為空返回TRUE
        /// </summary>
        /// <param name="dt">DataTable 對象</param>
        /// <returns></returns>
        public static bool isNoNullDataSet(DataTable dt)
        {
            bool bl = false;
            if (dt != null && dt.Rows.Count > 0)
            {
                bl = true;
            }
            return bl;
        }

        /// <summary>
        /// 驗證DataTable是否為空,空返回FALSE,不為空返回TRUE
        /// </summary>
        /// <param name="ds">DataSet 對象</param>
        /// <returns></returns>
        public static bool isNoNullDataSet(DataSet ds)
        {
            bool bl = false;
            if (ds != null && ds.Tables.Count > 0 && ds.Tables[0] != null && ds.Tables[0].Rows.Count > 0)
            {
                bl = true;
            }
            return bl;
        }
        #endregion

        #region 002:string是否為空
        /// <summary>
        /// string是否為空,空返回FALSE,不為空返回TRUE
        /// </summary>
        /// <param name="dt">DataTable 對象</param>
        /// <returns></returns>
        public static bool isNoNullString(string str)
        {
            bool bl = false;
            if (str != null && !string.IsNullOrEmpty(str))
            {
                bl = true;
            }
            return bl;
        }
        #endregion

        #region 003:Int32是否為空
        /// <summary>
        /// int是否為空,空返回FALSE,不為空且大於0返回TRUE
        /// </summary>
        /// <param name="dt">DataTable 對象</param>
        /// <returns></returns>
        public static bool isNoNullInt32(Int32 val)
        {
            bool bl = false;
            if (val != null && val > 0)
            {
                bl = true;
            }
            return bl;
        }
        #endregion

        #region 003:DateTime是否為空
        /// <summary>
        /// DateTime是否為空,空返回FALSE,不為空返回TRUE
        /// </summary>
        /// <param name="dt">DataTable 對象</param>
        /// <returns></returns>
        public static bool isNoNullDateTime(DateTime dt)
        {
            bool bl = false;
            DateTime init = new DateTime(1900, 1, 1);
            if (dt != null && !string.IsNullOrEmpty(dt.ToString()) && dt > init)
            {
                bl = true;
            }
            return bl;
        }
        #endregion

        #region 004獲取Get、Post提交的參數值
        public static string GetPost(string name)
        {

            string value = HttpContext.Current.Request[name];
            return value == null ? string.Empty : value.Trim();
        }
        public static int GetPostInt(string name)
        {

            string value = HttpContext.Current.Request[name];
            int tmp = 0;

            if (!string.IsNullOrWhiteSpace(value))
            {
                int.TryParse(value, out tmp);
            }
            return tmp;
        }
        public static int? GetPostIntNull(string name)
        {

            string value = HttpContext.Current.Request[name];
            int? tmp = 0;
            int t = 0;
            if (!string.IsNullOrWhiteSpace(value))
            {
                if (int.TryParse(value, out t))
                    tmp = t;
            }
            else
            {
                tmp = null;
            }
            return tmp;
        }
        #endregion

        #region 設置全局變量
        //獲得固有的加密字符串
        //private static string jmStr = System.Configuration.ConfigurationManager.AppSettings["jmStr"].ToString();
        private static string jmStr = "RXJY";
        //設置加密的密鑰 
        private static string sKey = "華躍博弈精益求精";


        //private static string tuiGuangUrl = System.Configuration.ConfigurationManager.AppSettings["tgurl"].ToString();

        #endregion

        #region  可逆的加密方法
        /// <summary>
        /// 可逆的加密方法
        /// </summary>
        /// <param name="strEnCrypt">需要加密的字符串</param>
        /// <returns>加密后的結果</returns>
        public static string EnCrypt(string strEnCrypt)
        {
            try
            {
                DESCryptoServiceProvider dESCryptoServiceProvider = new DESCryptoServiceProvider();
                byte[] bs1 = Encoding.Default.GetBytes(strEnCrypt);
                dESCryptoServiceProvider.Key = Encoding.ASCII.GetBytes(sKey);
                dESCryptoServiceProvider.IV = Encoding.ASCII.GetBytes(sKey);
                MemoryStream memoryStream = new MemoryStream();
                CryptoStream cryptoStream = new CryptoStream(memoryStream, dESCryptoServiceProvider.CreateEncryptor(), CryptoStreamMode.Write);
                cryptoStream.Write(bs1, 0, (int)bs1.Length);
                cryptoStream.FlushFinalBlock();
                StringBuilder stringBuilder = new StringBuilder();
                byte[] bs2 = memoryStream.ToArray();
                foreach (byte b in bs2)
                {
                    stringBuilder.AppendFormat("{0:X2}", b);
                }
                string strBuilder = stringBuilder.ToString();
                strBuilder = strBuilder + jmStr;
                return NiXu(strBuilder);
            }
            catch (Exception e)
            {
                //System.Web.HttpContext.Current.Response.Write(e.Message);
                //System.Web.HttpContext.Current.Response.End();
                throw new Exception(e.Message);
            }
        }
        #endregion

        #region 可逆的解密方法
        /// <summary>
        /// 可逆的解密方法
        /// </summary>
        /// <param name="strDeCrypt">需要解密的字符串</param>
        /// <returns>解密后的字符串</returns>
        public static string DeCrypt(string strDeCrypt)
        {
            try
            {
                if (strDeCrypt != "" && strDeCrypt != null)
                {
                    strDeCrypt = Utils.ReplaceStringTrim(strDeCrypt);
                    string strBuilder = NiXu(strDeCrypt);
                    strDeCrypt = strBuilder.Substring(0, strBuilder.LastIndexOf("" + jmStr + "")).ToString();
                    DESCryptoServiceProvider dESCryptoServiceProvider = new DESCryptoServiceProvider();
                    byte[] bs = new byte[strDeCrypt.Length / 2];
                    for (int i = 0; i < strDeCrypt.Length / 2; i++)
                    {
                        int j = Convert.ToInt32(strDeCrypt.Substring(i * 2, 2), 16);
                        bs[i] = (byte)j;
                    }
                    dESCryptoServiceProvider.Key = Encoding.ASCII.GetBytes(sKey);
                    dESCryptoServiceProvider.IV = Encoding.ASCII.GetBytes(sKey);
                    MemoryStream memoryStream = new MemoryStream();
                    CryptoStream cryptoStream = new CryptoStream(memoryStream, dESCryptoServiceProvider.CreateDecryptor(), CryptoStreamMode.Write);
                    cryptoStream.Write(bs, 0, (int)bs.Length);
                    cryptoStream.FlushFinalBlock();
                    new StringBuilder();
                    return Encoding.Default.GetString(memoryStream.ToArray());
                }
                else
                {
                    return "0";
                }

            }
            catch (Exception e)
            {
                //System.Web.HttpContext.Current.Response.Write(e.Message);
                //System.Web.HttpContext.Current.Response.End();
                //throw new Exception(e.Message);
                return "0";
            }
        }
        #endregion

        #region 字符串逆序排列
        /// <summary>
        /// 字符串逆序排列
        /// </summary>
        /// <param name="txtStr">逆序前字符串</param>
        /// <returns>逆序后字符串</returns>
        private static string NiXu(string txtStr)
        {
            string niXuStr = "";
            for (int i = txtStr.Length - 1; i >= 0; i--)
            {
                niXuStr += txtStr[i];
            }
            return niXuStr;
        }
        #endregion

        #region 去除字符串中空格
        /// <summary>
        /// 去除字符串中空格
        /// </summary>
        /// <param name="zifu"></param>
        /// <returns></returns>
        public static string ReplaceStringTrim(string zifu)
        {
            return System.Text.RegularExpressions.Regex.Replace(zifu, @"\s+", "");
        }
        #endregion

        /// <summary>
        ///  工程部加密 字符Md5加密
        /// </summary>
        /// <param name="input">string:需要加密的字符串</param>
        /// <returns>string:加密后的字符串</returns>
        public static string GetMd5Hash(string input)
        {
            string txtStr = string.Empty;
            string niXuStr = string.Empty;
            //創建MD5CryptoServiceProvider對象實例.
            MD5 md5Hasher = MD5.Create();
            // 輸入字符串轉換為一個字節數組並計算哈希
            byte[] data = md5Hasher.ComputeHash(Encoding.Default.GetBytes(input));

            StringBuilder sBuilder = new StringBuilder();
            // 循環每個哈希數,作為十六進制去匹配
            for (int i = 0; i < data.Length; i++)
            {
                sBuilder.Append(data[i].ToString("x2"));
            }
            sBuilder.Append("RXJY");
            txtStr = sBuilder.ToString();
            for (int i = txtStr.Length - 1; i >= 0; i--)
            {
                niXuStr += txtStr[i];
            }
            // 返回十六進制數組
            return niXuStr;
        }

        /// <summary>
        /// 獲取當前星期第一天
        /// </summary>
        /// <param name="datetime"></param>
        /// <returns></returns>
        public static DateTime GetWeekFirstDayMon()
        {
            var datetime = DateTime.Now;
            //星期一為第一天  
            int weeknow = Convert.ToInt32(datetime.DayOfWeek);

            //因為是以星期一為第一天,所以要判斷weeknow等於0時,要向前推6天。  
            weeknow = (weeknow == 0 ? (7 - 1) : (weeknow - 1));
            int daydiff = (-1) * weeknow;

            //本周第一天  
            string FirstDay = datetime.AddDays(daydiff).ToString("yyyy-MM-dd");
            return Convert.ToDateTime(FirstDay);
        }

        #region 獲取日任務的回訪剩余
        /// <summary>
        /// 獲取日任務的回訪剩余
        /// </summary>
        /// <param name="time"></param>
        /// <param name="t_cycle"></param>
        /// <returns></returns>
        public int GetDayVisitTime(DateTime? time, string t_cycle)
        {
            if (time == null)
            {
                var today = DateTime.Parse(DateTime.Now.ToString("yyyy-MM-dd") + " " + t_cycle);//當天應寫回訪時間
                var num = (today.AddDays(1) - DateTime.Now).Hours;
                return num;
            }
            else
            {
                var visitTime = Convert.ToDateTime(time);//寫回訪的時間
                //對於日任務,如果當天已寫回訪,則計算到第二天應寫回訪的時間,
                //如果當天未寫回訪,則顯示應寫回訪時間-當前時間,如果到了第二天,則重新計算到第二天應寫回訪的倒計時
                if (visitTime.ToString("yyyy-MM-dd") == DateTime.Now.ToString("yyyy-MM-dd"))
                {
                    var hour = DateTime.Parse(DateTime.Now.ToString("yyyy-MM-dd") + " " + t_cycle).Hour;//當天應寫回訪時間
                    var nowHour = DateTime.Now.Hour;
                    if (nowHour > hour)
                    {
                        return hour - nowHour;
                    }
                    else
                    {
                        return nowHour - hour;
                    }
                }
                else
                {
                    //應寫回訪時間-當前時間
                    var today = DateTime.Parse(DateTime.Now.ToString("yyyy-MM-dd") + " " + t_cycle);//當天應寫回訪時間
                    var num = (today.AddDays(1) - DateTime.Now).Hours;
                    return num;
                }

            }
        }
        #endregion

        #region 獲取周任務的回訪剩余
        /// <summary>
        /// 獲取周任務的回訪剩余
        /// </summary>
        /// <param name="time">近一次寫回訪的時間</param>
        /// <param name="chronography">每周同</param>
        /// <param name="t_cycle">幾點</param>
        /// <returns></returns>
        public int GetWeekVisitTime(DateTime? time, int chronography, string t_cycle)
        {
            if (time == null)
            {
                #region
                //計算現在到下次應寫回訪的時間差
                int week = (int)DateTime.Now.DayOfWeek == 0 ? 7 : (int)DateTime.Now.DayOfWeek;//獲取當前時間是周幾
                int nowHour = (int)DateTime.Now.Hour;
                int hour = int.Parse(t_cycle.Split(':')[0]);
                if ((week < chronography) || (week == chronography && nowHour < hour))//在規定的周日期之前顯示到本周的倒計時
                {
                    int num = (chronography - week) * 24 - DateTime.Now.Hour + int.Parse(t_cycle.Split(':')[0]);
                    return num;
                }
                else //計算到下周應寫的倒計時
                {
                    int totDay = chronography + 7 - week - 1;//獲取到下周總的天數
                    //總的天數小時數+今天剩余小時數-當天寫的
                    int num = totDay * 24 + (24 - DateTime.Now.Hour) + int.Parse(t_cycle.Split(':')[0]);
                    return num;
                }
                #endregion
            }
            else
            {
                var date = Convert.ToDateTime(time);
                //判斷本周是否寫過
                if (GetWeekOfYear(DateTime.Now) == GetWeekOfYear(date))
                {
                    int week = (int)date.DayOfWeek == 0 ? 7 : (int)date.DayOfWeek;//獲取是周幾寫的
                    //判斷是否是規定的當天之前寫的
                    //之前寫的還顯示倒計時。之后的顯示到下周五的倒計時
                    if (week == chronography)//判斷是否是同一周的同一天-----是否在規定 的當天 寫的  
                    {
                        //當天已經寫過則計算當前當下周應寫的時間差
                        var noewWeek = (int)DateTime.Now.DayOfWeek == 0 ? 7 : (int)DateTime.Now.DayOfWeek;//獲取當前日期是周幾
                        int totDay = chronography + 7 - noewWeek - 1;//獲取到下周總的天數 
                        //總的天數小時數+今天剩余小時數-當天寫的
                        int num = totDay * 24 + (24 - DateTime.Now.Hour) + int.Parse(t_cycle.Split(':')[0]);
                        return num;
                    }
                    else if (week < chronography)//在規定的周日期之前寫的任務顯示到本周的倒計時
                    {
                        var nowWeek = (int)DateTime.Now.DayOfWeek == 0 ? 7 : (int)DateTime.Now.DayOfWeek;//獲取當前日期是周幾
                        int num = (6 - nowWeek - 1) * 24 + int.Parse(t_cycle.Split(':')[0]) + 24 - DateTime.Now.Hour;
                        return num;
                    }
                    else //計算到下周應寫的倒計時
                    {
                        var nowWeek = (int)DateTime.Now.DayOfWeek == 0 ? 7 : (int)DateTime.Now.DayOfWeek;//獲取當前日期是周幾
                        int totDay = chronography + 7 - nowWeek - 1;//獲取到下周總的天數 
                        //總的天數小時數+今天剩余小時數-當天寫的
                        int num = totDay * 24 + (24 - DateTime.Now.Hour) + int.Parse(t_cycle.Split(':')[0]);
                        return num;
                    }
                }
                else//如果本周沒有寫
                {
                    var nowWeek = (int)DateTime.Now.DayOfWeek == 0 ? 7 : (int)DateTime.Now.DayOfWeek;//獲取當前日期是周幾
                    int num = (chronography - nowWeek) * 24 - DateTime.Now.Hour + int.Parse(t_cycle.Split(':')[0]);
                    return num;
                }
            }
        }
        #endregion

        #region 獲取月任務的回訪剩余
        public int GetMonthVisitTime(DateTime? time, int chronography, string t_cycle)
        {
            if (time == null)
            {
                var now = DateTime.Now;
                int day = DateTime.Now.Day;//獲取當前時間是本月哪一天寫的
                if (day < chronography)//在規定的月任務日期之前顯示到本月的倒計時
                {
                    //應寫日期減已寫的日期
                    int num = (chronography - day - 1) * 24 + (24 - DateTime.Now.Hour) + int.Parse(t_cycle.Split(':')[0]);
                    return num;
                }
                else //計算到下月應寫的倒計時
                {
                    int days = GetDays(DateTime.Now);//獲取當月的天數
                    //當月的天數減去當前的天數
                    int totDay = days - day;
                    int num = (totDay + chronography - 1) * 24 + (24 - DateTime.Now.Hour) + int.Parse(t_cycle.Split(':')[0]);

                    return num;
                }
            }
            else
            {
                var date = Convert.ToDateTime(time);//最近一次回訪時間
                //判斷是否是本月寫的
                if (date.ToString("yyyy-MM") == DateTime.Now.ToString("yyyy-MM"))
                {
                    int day = date.Day;//獲取是本月哪一天寫的
                    //判斷是否是規定的當天之前寫的
                    //之前寫的還顯示倒計時。之后的顯示到下月應寫的日期的倒計時
                    if (day == chronography)//判斷是否是月任務選中的當月的同一天
                    {
                        //當天已經寫過則計算當前當下月應寫的時間差
                        int days = GetDays(DateTime.Now);//獲取當月的天數
                        //當月的天數減去當前的天數
                        int totDay = days - DateTime.Now.Day;
                        //當月的天數+下月應寫之前的天數
                        int num = (totDay + chronography - 1) * 24 + (24 - DateTime.Now.Hour) + int.Parse(t_cycle.Split(':')[0]);
                        return num;
                    }
                    else if (day < chronography)//在規定的月任務日期之前寫的任務顯示到本月的倒計時
                    {
                        var nowDay = DateTime.Now.Day;//獲取當前日期是當月第幾天
                        //應寫日期減已寫的日期
                        int num = (chronography - nowDay - 1) * 24 + (24 - DateTime.Now.Hour) + int.Parse(t_cycle.Split(':')[0]);
                        return num;
                    }
                    else //計算到下月應寫的倒計時
                    {
                        int days = GetDays(DateTime.Now);//獲取當月的天數
                        //當月的天數減去當前的天數
                        int totDay = days - DateTime.Now.Day;
                        int num = (totDay + chronography - 1) * 24 + (24 - DateTime.Now.Hour) + int.Parse(t_cycle.Split(':')[0]);
                        return num;
                    }
                }
                else//如果本月沒有寫
                {
                    int days = GetDays(DateTime.Now);//獲取當月的天數
                    //當月的天數減去當前的天數
                    int totDay = days - DateTime.Now.Day;
                    int num = (totDay + chronography) * 24 - DateTime.Now.Hour + 12;
                    return num;
                }
            }
        }
        #endregion
        private static int GetWeekOfYear(DateTime dt)
        {
            GregorianCalendar gc = new GregorianCalendar();
            int weekOfYear = gc.GetWeekOfYear(dt, CalendarWeekRule.FirstDay, DayOfWeek.Monday);
            return weekOfYear;
        }

        private int GetDays(DateTime dt)
        {
            int day = DateTime.DaysInMonth(dt.Year, dt.Month);
            return day;
        }

        #region 回訪內容換行處理
        /// <summary>
        /// 回訪內容換行處理
        /// </summary>
        /// <param name="content"></param>
        /// <returns></returns>
        public static string DealVisitContent(string content)
        {
            content = content.Replace("", ";</br>");
            content = content.Replace(";", ";</br>");
            return content;
        }
        #endregion


        #region 狀態對應階段
        /// <summary>
        /// 狀態對應階段
        /// </summary>
        /// <param name="content"></param>
        /// <returns></returns>
        public static string ZhuangTaiZhuanHuan(string ZhuangTai)
        {
            var jie = "";
            switch (ZhuangTai)
            {
                case "0": jie = "在跟蹤"; break;
                case "5": jie = "在談"; break;
                case "7": jie = "已簽"; break;
                case "8": jie = "未簽"; break;
                case "18": jie = "商務打回"; break;
                case "21": jie = "初審打回"; break;
                case "22": jie = "終審打回"; break;
                case "2": jie = "地方放棄"; break;
                case "3": jie = "集團放棄"; break;
                case "17": jie = "商務審批"; break;
                case "23":
                case "24":
                case "25": jie = "主案審批"; break;
                default: jie = "暫無記載"; break;
            }
            return jie;
        }
        #endregion

        #region 傳入服務器地址 返回Json數據
        /// <summary>
        /// 傳入服務器地址 返回Json數據 Get
        /// </summary>
        /// <param name="serviceAddress">http地址</param>
        /// <returns></returns>
        internal static string HttpReturnJson(string serviceAddress)
        {
            string retString = "";
            HttpWebRequest request = (HttpWebRequest)WebRequest.Create(serviceAddress);
            request.Method = "GET";
            request.ContentType = "text/html;charset=UTF-8";
            if (request != null)
            {
                HttpWebResponse response = (HttpWebResponse)request.GetResponse();
                Stream myResponseStream = response.GetResponseStream();
                StreamReader myStreamReader = new StreamReader(myResponseStream, Encoding.UTF8);
                retString = myStreamReader.ReadToEnd();
                myStreamReader.Close();
                myResponseStream.Close();
            }
            else
            {
                retString = "{'StatusMsg': '接口請求失敗!','StatusCode': -1}";
            }
            return retString;
        }
        #endregion

        #region 根據圖片路徑返回圖片的字節流byte[]
        /// <summary>
        /// 根據圖片路徑返回圖片的字節流byte[]
        /// </summary>
        /// <param name="imagePath">圖片路徑</param>
        /// <returns>返回的字節流</returns>
        internal static byte[] GetImageByte(string imagePath)
        {
            FileStream files = new FileStream(imagePath, FileMode.Open);
            byte[] imgByte = new byte[files.Length];
            files.Read(imgByte, 0, imgByte.Length);
            files.Close();
            return imgByte;
        }
        #endregion

        #region  用於url傳值的base64加密算法
        /// <summary>
        /// 用於url傳值的base64加密算法
        /// </summary>
        /// <param name="input">需加密的字符串</param>
        /// <returns></returns>
        public static string GetParEncoded(string input)
        {
            byte[] temp = Encoding.Default.GetBytes(input);
            return Base64Encoder.Encoder.GetEncoded(temp);
        }
        public class Base64Encoder
        {
            #region base64加密算法

            byte[] source;
            int length, length2;
            int blockCount;
            int paddingCount;
            public static Base64Encoder Encoder = new Base64Encoder();

            public Base64Encoder()
            {

            }
            private void init(byte[] input)
            {
                source = input;
                length = input.Length;
                if ((length % 3) == 0)
                {
                    paddingCount = 0;
                    blockCount = length / 3;
                }
                else
                {
                    paddingCount = 3 - (length % 3);
                    blockCount = (length + paddingCount) / 3;
                }
                length2 = length + paddingCount;
            }
            public string GetEncoded(byte[] input)
            {
                //初始化
                init(input);

                byte[] source2;
                source2 = new byte[length2];

                for (int x = 0; x < length2; x++)
                {
                    if (x < length)
                    {
                        source2[x] = source[x];
                    }
                    else
                    {
                        source2[x] = 0;
                    }
                }

                byte b1, b2, b3;
                byte temp, temp1, temp2, temp3, temp4;
                byte[] buffer = new byte[blockCount * 4];
                char[] result = new char[blockCount * 4];
                for (int x = 0; x < blockCount; x++)
                {
                    b1 = source2[x * 3];
                    b2 = source2[x * 3 + 1];
                    b3 = source2[x * 3 + 2];

                    temp1 = (byte)((b1 & 252) >> 2);

                    temp = (byte)((b1 & 3) << 4);
                    temp2 = (byte)((b2 & 240) >> 4);
                    temp2 += temp;

                    temp = (byte)((b2 & 15) << 2);
                    temp3 = (byte)((b3 & 192) >> 6);
                    temp3 += temp;

                    temp4 = (byte)(b3 & 63);

                    buffer[x * 4] = temp1;
                    buffer[x * 4 + 1] = temp2;
                    buffer[x * 4 + 2] = temp3;
                    buffer[x * 4 + 3] = temp4;

                }

                for (int x = 0; x < blockCount * 4; x++)
                {
                    result[x] = sixbit2char(buffer[x]);
                }


                switch (paddingCount)
                {
                    case 0: break;
                    case 1: result[blockCount * 4 - 1] = '_'; break;
                    case 2: result[blockCount * 4 - 1] = '_';
                        result[blockCount * 4 - 2] = '_';
                        break;
                    default: break;
                }
                return new string(result);
            }
            private char sixbit2char(byte b)
            {
                char[] lookupTable = new char[64]{
                  'A','B','C','D','E','F','G','H','I','J','K','L','$',
                 'N','O','P','Q','R','S','T','U','M','W','X','Y','Z',
                 'a','b','c','d','e','f','g','h','i','j','k','l','m',
                 'n','o','p','q','*','s','t','u','v','w','x','y','z',
                 '0','1','2','3','4','5','6','7','8','9','r','V'};

                if ((b >= 0) && (b <= 63))
                {
                    return lookupTable[(int)b];
                }
                else
                {

                    return ' ';
                }
            }


            #endregion
        }
        #endregion

        #region 發送通知
        /// <summary>
        /// 發送通知
        /// </summary>
        /// <param name="AlertText"></param>
        /// <param name="Iphone"></param>
        /// <param name="Type"></param>
        /// <param name="Group"></param>
        /// <param name="AlertTitle"></param>
        /// <param name="IsApnsProduction"></param>
        /// <param name="InitiatorCard"></param>
        /// <param name="InitiatorName"></param>
        /// <param name="RewardMoney"></param>
        /// <returns></returns>
        public static string SendPhone(IDictionary<string, string> dict, string url)
        {
            string results = "";
            try
            {

                string par = string.Format("param={0}", Newtonsoft.Json.JsonConvert.SerializeObject(dict));
                WebRequest request = WebRequest.Create(url);
                request.Method = "post";
                request.ContentType = "application/x-www-form-urlencoded";

                byte[] data = System.Text.Encoding.UTF8.GetBytes(par);

                request.ContentLength = data.Length;
                //設置請求流
                System.IO.Stream requestStream = request.GetRequestStream();
                //將參數加入到請求流中。
                requestStream.Write(data, 0, data.Length);

                //獲取服務器端的響應
                WebResponse response = request.GetResponse();
                //獲取響應回來的流數據。
                System.IO.Stream responseStream = response.GetResponseStream();


                using (System.IO.StreamReader reader = new System.IO.StreamReader(responseStream))
                {
                    results = reader.ReadToEnd();

                    //seee = (JObject)JsonConvert.DeserializeObject(results);
                }
            }
            catch (Exception e)
            {
                NetLog.WriteTextLog(e.Message);
            }

            return results;
        }
        #endregion



        /// <summary>
        /// 公共事件獎罰
        /// </summary>
        /// <param name="em_Sponsor">發起人卡號</param>
        /// <param name="em_Executor">執行人卡號</param>
        /// <param name="em_Content">執行內容</param>
        /// <param name="rp_Money">獎罰金額</param>
        /// <param name="em_theme">標題</param>
        /// <param name="rp_Method">獎罰方式 1=現金 2=工資</param>
        /// <returns></returns>
        public static string LaunchEventAndOver(string em_Sponsor, string em_Executor, string em_Content, string rp_Money, string em_theme, string rp_Method)
        {
            string ShiJianAPI = System.Configuration.ConfigurationManager.AppSettings["ShiJianAPI"];
            string url = ShiJianAPI + "/api/EventPlatform/LaunchEventAndOver/";
            string _params = "em_Sponsor=" + em_Sponsor + "&em_Executor=" + em_Executor + "&em_Content=" + em_Content + "&rp_Money=" + rp_Money + "&em_theme=" + em_theme + "&rp_Method=" + rp_Method;
            WebRequest request = WebRequest.Create(url);
            request.Method = "post";
            request.ContentType = "application/x-www-form-urlencoded";

            byte[] data = System.Text.Encoding.UTF8.GetBytes(_params);

            request.ContentLength = data.Length;
            //設置請求流
            System.IO.Stream requestStream = request.GetRequestStream();
            //將參數加入到請求流中。
            requestStream.Write(data, 0, data.Length);

            //獲取服務器端的響應
            WebResponse response = request.GetResponse();
            //獲取響應回來的流數據。
            System.IO.Stream responseStream = response.GetResponseStream();

            string results = string.Empty;
            using (System.IO.StreamReader reader = new System.IO.StreamReader(responseStream))
            {
                results = reader.ReadToEnd();

                var seee = (JObject)JsonConvert.DeserializeObject(results);
            }


            return results;
        }

        #region json轉為DataTable
        /// <summary>
        /// json轉為DataTable
        /// </summary>
        /// <param name="strJson"></param>
        /// <returns></returns>
        public static DataTable JsonToDataTable(string strJson)
        {
            ////取出表名  
            //Regex rg = new Regex(@"(?<={)[^:]+(?=:/[)", RegexOptions.IgnoreCase);
            //string strName = rg.Match(strJson).Value;
            DataTable tb = null;
            ////去除表名  
            //strJson = strJson.Substring(strJson.IndexOf("[") + 1);
            //strJson = strJson.Substring(0, strJson.IndexOf("]"));

            //獲取數據  
            Regex rg = new Regex(@"(?<={)[^}]+(?=})");
            MatchCollection mc = rg.Matches(strJson);
            for (int i = 0; i < mc.Count; i++)
            {
                string strRow = mc[i].Value;
                string[] strRows = strRow.Split(',');

                //創建表  
                if (tb == null)
                {
                    tb = new DataTable();
                    tb.TableName = "";
                    foreach (string str in strRows)
                    {
                        DataColumn dc = new DataColumn();
                        string[] strCell = str.Split(':');

                        dc.ColumnName = strCell[0].ToString().Replace("\"", "").Trim();
                        tb.Columns.Add(dc);
                    }
                    tb.AcceptChanges();
                }

                //增加內容  
                DataRow dr = tb.NewRow();
                for (int r = 0; r < strRows.Length; r++)
                {
                    dr[r] = strRows[r].Split(':')[1].Trim().Replace("", ",").Replace("", ":").Replace("/", "").Replace("\"", "").Trim();
                }
                tb.Rows.Add(dr);
                tb.AcceptChanges();
            }

            return tb;
        }
        #endregion

        
    }
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM