using System;
using System.Configuration;
using System.Collections.Generic;
using System.Data;
using System.IO;
using System.Linq;
using System.Net;
using System.Net.Security;
using System.Security.Cryptography;
using System.Security.Cryptography.X509Certificates;
using System.Text;
using System.Web;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using SuperMap.RealEstate.Utility;
using SuperMap.RealEstate.Web.UI.WebControls;
using SuperMap.RealEstate.MobileServicePlatform.Business;
using Business = SuperMap.RealEstate.HighWay.Storage.Business;
using WxPayAPI;
using System.Web.Script.Serialization;
using System.Collections;
namespace MobileServicePlatform.Common
{
public class Common
{
//AppID(应用ID)
public static string AppID = ConfigurationManager.AppSettings["AppID"].ToString();
//AppSecret(应用密钥)
public static string AppSecret = ConfigurationManager.AppSettings["AppSecret"].ToString();
public static string _Checkout_Success = "4GPOsrtDZ9VVJmwQ_9r-ZfyrzLCtx5E_JhjUfBFqBJA";
public static string _NewOrder = "xizNAvV2_Q6mBC-TblIw7-Zr2zhUDZOEr4meERLTdbg";
public static string _BaseUrl = "https://www.ffdzpay.com/gateway/pay";
public static string _Weatherhost = "http://jisutqybmf.market.alicloudapi.com";
public static string _WeatherAppCode = "99f7d21d35e647e98706f75109f4b655";
public const string charSet = "1,2,3,4,5,6,7,8,9";
#region 方法 -> Get方式获取参数
public static string HttpPost(string Url, string postDataStr)
{
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(Url);
request.Method = "POST";
request.ContentType = "application/json; charset=utf-8";
request.ContentLength = Encoding.UTF8.GetByteCount(postDataStr);
StreamWriter writer = new StreamWriter(request.GetRequestStream());
writer.Write(postDataStr);
writer.Flush();
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
string encoding = response.ContentEncoding;
if (encoding == null || encoding.Length < 1)
{
encoding = "UTF-8"; //默认编码
}
StreamReader reader = new StreamReader(response.GetResponseStream(), Encoding.GetEncoding(encoding));
string retString = reader.ReadToEnd();
return retString;
}
#endregion
#region 方法 -> 获取通道秘钥
public static string GetAccess(TextBoxEx RefreshTime = null, string _AppID = "", string _AppSecret = "")
{
string url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=" +
(string.IsNullOrEmpty(_AppID) ? AppID : _AppID) + "&secret=" + (string.IsNullOrEmpty(_AppSecret) ? AppSecret : _AppSecret);
//根据url创建HttpWebRequest对象
HttpWebRequest objRequest = (HttpWebRequest)WebRequest.Create(url);
objRequest.Method = "get";
//读取服务器返回信息
HttpWebResponse objResponse = (HttpWebResponse)objRequest.GetResponse();
//using作为语句,用于定义一个范围,在此范围的末尾将释放对象
using (StreamReader sr = new StreamReader(objResponse.GetResponseStream()))
{
//ReadToEnd适用于小文件的读取,一次性的返回整个文件
JObject _JObject = (JObject)JsonConvert.DeserializeObject(sr.ReadToEnd());
try
{
string access_token = _JObject["access_token"].ToString(),
LastTime = _JObject["expires_in"].ToString();
if (RefreshTime != null)
{
RefreshTime.Text = DateTime.Now.AddSeconds(double.Parse(LastTime)).ToString();
}
return access_token;
}
catch (Exception ex)
{
ErrorLogHelper.Write(ex);
string Message = "错误代码:" + _JObject["errcode"].ToString() + ",错误原因:" + _JObject["errmsg"].ToString();
return "0|" + Message;
}
sr.Close();
}
}
#endregion
#region 方法 -> 获取json数据
public static string GetJsonString(string SendType, string openid, string url,
Business.RTWECHATPUSH _RTWECHATPUSH, DataTable _DataTable, DataRow _DataRow)
{
string result = "", data = "", dataString = "";
switch (SendType)
{
case "Checkout_Success":
//首行内容
data += "\"first\": {\"value\":\"" + (string.IsNullOrEmpty(_RTWECHATPUSH.PUSH_TITLE) ?
(_RTWECHATPUSH.USER_NAME == "" ? "" : _RTWECHATPUSH.USER_NAME + ",您已下单成功!\\n") :
_RTWECHATPUSH.PUSH_TITLE + "\\n") + "\",\"color\":\"#173177\"},";
//固定内容
data += "\"keyword1\": {\"value\":\"" + _DataRow["PURCHASE_CODE"].ToString() + "\",\"color\":\"#173177\"},";
data += "\"keyword2\": {\"value\":\"" + _DataRow["PURCHASE_DATE"].ToString() + "\",\"color\":\"#173177\"},";
data += "\"keyword3\": {\"value\":\"" + _DataRow["PURCHASE_TOTALPRICE"].ToString() + "\",\"color\":\"#173177\"},";
data += "\"keyword4\": {\"value\":\"预付款\",\"color\":\"#173177\"},";
if (string.IsNullOrEmpty(_RTWECHATPUSH.PUSH_LASTCONTENT))
{
dataString = "\\n感谢您的惠顾";
}
else
{
dataString = "\\n" + _RTWECHATPUSH.PUSH_LASTCONTENT;
}
data += "\"remark\": {\"value\":\"" + dataString + "\",\"color\":\"#173177\"}";
result += "{\"touser\":\"" + openid + "\",\"template_id\":\"" + _Checkout_Success +
"\",\"url\":\"" + url + "\",\"data\":{";
break;
case "NewOrder":
//首行内容
data += "\"first\": {\"value\":\"" + (string.IsNullOrEmpty(_RTWECHATPUSH.PUSH_TITLE) ?
(_RTWECHATPUSH.USER_NAME == "" ? "" : _RTWECHATPUSH.USER_NAME + ",您的店铺有新订单产生!\\n") :
_RTWECHATPUSH.PUSH_TITLE + "\\n") + "\",\"color\":\"#173177\"},";
//固定内容
data += "\"keyword1\": {\"value\":\"" + _DataRow["SERVERPARTSHOP_NAME"].ToString() + "\",\"color\":\"#173177\"},";
data += "\"keyword2\": {\"value\":\"" + (_DataTable.Rows.Count == 1 ? _DataRow["COMMODITY_NAME"].ToString() :
_DataRow["COMMODITY_NAME"].ToString() + "等共" + _DataRow["RECORD_COUNT"].ToString() + "件商品") + "\",\"color\":\"#173177\"},";
data += "\"keyword3\": {\"value\":\"" + _DataRow["PURCHASE_DATE"].ToString() + "\",\"color\":\"#173177\"},";
data += "\"keyword4\": {\"value\":\"" + _DataRow["PURCHASE_TOTALPRICE"].ToString() + "\",\"color\":\"#173177\"},";
data += "\"keyword5\": {\"value\":\"预付款\",\"color\":\"#173177\"},";
if (string.IsNullOrEmpty(_RTWECHATPUSH.PUSH_LASTCONTENT))
{
dataString = "\\n感谢您的使用,祝您生意兴隆";
}
else
{
dataString = "\\n" + _RTWECHATPUSH.PUSH_LASTCONTENT;
}
data += "\"remark\": {\"value\":\"" + dataString + "\",\"color\":\"#173177\"}";
result += "{\"touser\":\"" + openid + "\",\"template_id\":\"" + _NewOrder +
"\",\"url\":\"" + url + "\",\"data\":{";
break;
}
return result + data + "}}";
}
public static string GetJsonString(string SendType, string openid, string url,
RTWECHATPUSH _RTWECHATPUSH, GROUPPUSHDETAIL _GROUPPUSHDETAIL, int TotalRowCount)
{
string result = "", data = "", dataString = "";
//首行内容
data += "\"first\": {\"value\":\"" + (string.IsNullOrEmpty(_RTWECHATPUSH.PUSH_TITLE) ?
(_RTWECHATPUSH.USER_NAME == "" ? "" : _RTWECHATPUSH.USER_NAME + "," + _GROUPPUSHDETAIL.PUSH_TITLE + "\\n") :
_RTWECHATPUSH.PUSH_TITLE + "\\n") + "\",\"color\":\"#fc6e4b\"},";
for (int ContentCount = 0; ContentCount < TotalRowCount; ContentCount++)
{
switch (ContentCount)
{
case 0:
//固定内容
data += "\"keyword1\": {\"value\":\"" + _GROUPPUSHDETAIL.PUSH_FIRSTCONTENT + "\",\"color\":\"#173177\"},";
break;
case 1:
data += "\"keyword2\": {\"value\":\"" + _GROUPPUSHDETAIL.PUSH_SECONDCONTENT + "\",\"color\":\"#173177\"},";
break;
case 2:
data += "\"keyword3\": {\"value\":\"" + _GROUPPUSHDETAIL.PUSH_THIRDCONTENT + "\",\"color\":\"#173177\"},";
break;
case 3:
data += "\"keyword4\": {\"value\":\"" + _GROUPPUSHDETAIL.PUSH_FOURTHCONTENT + "\",\"color\":\"#173177\"},";
break;
case 4:
data += "\"keyword5\": {\"value\":\"" + _GROUPPUSHDETAIL.PUSH_FIFTHCONTENT + "\",\"color\":\"#173177\"},";
break;
}
}
if (string.IsNullOrEmpty(_RTWECHATPUSH.PUSH_LASTCONTENT))
{
dataString = "\\n" + _GROUPPUSHDETAIL.PUSH_LASTCONTENT;
}
else
{
dataString = "\\n" + _RTWECHATPUSH.PUSH_LASTCONTENT;
}
data += "\"remark\": {\"value\":\"" + dataString + "\",\"color\":\"#fc6e4b\"}";
result += "{\"touser\":\"" + openid + "\",\"template_id\":\"" + SendType + "\",\"url\":\"" + url + "\",\"data\":{";
return result + data + "}}";
}
#endregion
#region 方法 -> 发送消息
public static bool StartToSend(string SendType, TextBoxEx access_token, RTWECHATPUSH _RTWECHATPUSH,
GROUPPUSHDETAIL _GROUPPUSHDETAIL, int TotalRowCount, TextBoxEx RefreshTime = null, string _AppID = "", string _AppSecret = "")
{
return StartToSend(SendType, "", access_token, _RTWECHATPUSH, _GROUPPUSHDETAIL, TotalRowCount, RefreshTime, _AppID, _AppSecret);
}
public static bool StartToSend(string SendType, string JumpUrl, TextBoxEx access_token, RTWECHATPUSH _RTWECHATPUSH,
GROUPPUSHDETAIL _GROUPPUSHDETAIL, int TotalRowCount, TextBoxEx RefreshTime = null, string _AppID = "", string _AppSecret = "")
{
bool Flag = false;
string result = "", postDataStr = "", url = "";
try
{
postDataStr = Common.GetJsonString(SendType, _RTWECHATPUSH.WECHAT_OPENID, JumpUrl, _RTWECHATPUSH,
_GROUPPUSHDETAIL, TotalRowCount);
try
{
url = "https://api.weixin.qq.com/cgi-bin/message/template/send?access_token=" + access_token.Text;
result = Common.HttpPost(url, postDataStr);
}
catch (Exception ex)
{
SuperMap.RealEstate.Utility.ErrorLogHelper.Write(ex);
}
JObject _JObject = (JObject)JsonConvert.DeserializeObject(result);
if (_JObject["errcode"].ToString() != "0")
{
if (_JObject["errcode"].ToString() == "40001")
{
access_token.Text = GetAccess(RefreshTime, _AppID, _AppSecret);
try
{
url = "https://api.weixin.qq.com/cgi-bin/message/template/send?access_token=" + access_token.Text;
result = Common.HttpPost(url, postDataStr);
}
catch (Exception ex)
{
ErrorLogHelper.Write(ex);
}
_JObject = (JObject)JsonConvert.DeserializeObject(result);
if (_JObject["errcode"].ToString() == "0")
{
Flag = true;
}
}
}
else
{
Flag = true;
}
}
catch (Exception ex)
{
ErrorLogHelper.Write(ex);
}
return Flag;
}
#endregion
#region 对象 -> 通用对象
///
/// 通用对象
///
/// 返回结果
/// 参数1
/// 参数2
/// 参数3
/// 参数4
/// 参数5
/// 备注信息
public class ResultObject
{
///
/// 返回结果
///
public string ResultCode
{
get;
set;
}
///
/// 参数1
///
public string FirstParameter
{
get;
set;
}
///
/// 参数2
///
public string SecondParameter
{
get;
set;
}
///
/// 参数3
///
public string ThirdParameter
{
get;
set;
}
///
/// 参数4
///
public string FourthParameter
{
get;
set;
}
///
/// 参数5
///
public string FifthParameter
{
get;
set;
}
///
/// 参数6
///
public string SixthParameter
{
get;
set;
}
///
/// 参数7
///
public string SeventhParameter
{
get;
set;
}
///
/// 参数8
///
public string EighthParameter
{
get;
set;
}
///
/// 会员内码(明文)
///
public int MemberShipID
{
get;
set;
}
///
/// 省份编码
///
public string Province_Code
{
get;
set;
}
///
/// 商家权限集合
///
public string MERCHANTS_ID
{
get;
set;
}
///
/// 商家名称
///
public string MERCHANTS_NAME
{
get;
set;
}
///
/// 接口地址
///
public string InterFaceAddress
{
get;
set;
}
///
/// 备注
///
public string ResultDesc
{
get;
set;
}
}
#endregion
#region 方法 -> 用户扫商家支付二维码
//用户扫商家支付二维码
//@type:wechat或alipay,通过get方式传递
//@discountAmt:优惠金额
//@memberCode:商家编号
//@notifyUrl:交易结果通知接口URL
//@orderNo:外部订单号
//@subject:交易对象
//@transAmt:实收金额
//返回JSON字符串
public static string customerscan(string type, string discountAmt, string memberCode,
string notifyUrl, string orderNo, string subject, string transAmt)
{
//Dictionary dic = new Dictionary();
//dic["discountAmt"] = discountAmt;
//dic["memberCode"] = memberCode;
//dic["notifyUrl"] = notifyUrl;
//dic["orderNo"] = orderNo;
//dic["subject"] = subject;
//dic["transAmt"] = transAmt;
//string param = createStr(dic);
string result = "";
//if (type == "wechat" || type == "alipay")
//{
// result = HttpPost(param, "open-api/unionpay/customerscan/type/" + type);
//}
if (type == "alipay")
{
//用户扫商家(正扫支付) 支付宝
result = InterfaceController.QRCodePayAlipay(memberCode, subject, notifyUrl, discountAmt, transAmt, orderNo).ToString();
}
else if (type == "wechat")
{
//用户扫商家(正扫支付) 微信
result = InterfaceController.QRCodePayWechat(memberCode, subject, notifyUrl, discountAmt, transAmt, orderNo).ToString();
}
return result;
}
#endregion
#region 方法 -> 存储图片文件
public static bool UploadImg(byte[] fileBytes, string FilePath, string FileName)
{
bool flag = false;
try
{
string filePath = FilePath + FileName + ".jpg"; //图片要保存的路径及文件名
using (MemoryStream memoryStream = new MemoryStream(fileBytes))//1.定义并实例化一个内存流,以存放提交上来的字节数组。
{
using (FileStream fileUpload = new FileStream(filePath, FileMode.Create))//2.定义实际文件对象,保存上载的文件。
{
memoryStream.WriteTo(fileUpload); ///3.把内存流里的数据写入物理文件
flag = true;
}
}
}
catch (Exception ex)
{
SuperMap.RealEstate.Utility.ErrorLogHelper.Write(ex);
}
return flag;
}
#endregion
#region 方法 -> 签名
public static string MakeSign(SortedDictionary sParams, string key)
{
int i = 0;
string sign = string.Empty;
StringBuilder sb = new StringBuilder();
foreach (KeyValuePair temp in sParams)
{
if (temp.Value == "" || temp.Value == null || temp.Key.ToLower() == "sign")
{
continue;
}
i++;
sb.Append(temp.Key.Trim() + "=" + temp.Value.Trim() + "&");
}
sb.Append("key=" + key.Trim() + "");
string signkey = sb.ToString();
sign = GetMD5(signkey, "utf-8");
return sign;
}
public static string MakeSign(WxPayData data, string key)
{
//签名
string str = data.ToUrl();
//在string后加入API KEY
str += "&key=" + key;
//MD5加密
var md5 = MD5.Create();
var bs = md5.ComputeHash(Encoding.UTF8.GetBytes(str));
var sb = new StringBuilder();
foreach (byte b in bs)
{
sb.Append(b.ToString("x2"));
}
return sb.ToString().ToUpper();
}
public static string GetMD5(string encypStr, string charset)
{
string retStr;
MD5CryptoServiceProvider m5 = new MD5CryptoServiceProvider();
//创建md5对象
byte[] inputBye;
byte[] outputBye;
//使用GB2312编码方式把字符串转化为字节数组.
try
{
inputBye = Encoding.GetEncoding(charset).GetBytes(encypStr);
}
catch (Exception ex)
{
inputBye = Encoding.GetEncoding("GB2312").GetBytes(encypStr);
}
outputBye = m5.ComputeHash(inputBye);
retStr = System.BitConverter.ToString(outputBye);
retStr = retStr.Replace("-", "").ToUpper();
return retStr;
}
public static string GetMD5(string str)
{
MD5 _MD5 = new MD5CryptoServiceProvider();
byte[] t = _MD5.ComputeHash(Encoding.GetEncoding("utf-8").GetBytes(str));
StringBuilder sb = new StringBuilder(32);
for (int i = 0; i < t.Length; i++)
{
sb.Append(t[i].ToString("x").PadLeft(2, '0'));
}
return sb.ToString();
}
///
/// 将DateTime类型转换为long类型
///
/// 时间
///
public static long ConvertDataTimeLong(DateTime dt)
{
DateTime dtStart = TimeZone.CurrentTimeZone.ToLocalTime(new DateTime(1970, 1, 1));
TimeSpan toNow = dt.Subtract(dtStart);
long timeStamp = toNow.Ticks;
timeStamp = long.Parse(timeStamp.ToString().Substring(0, timeStamp.ToString().Length - 7));
return timeStamp;
}
///
/// 将Long类型转换为DateTime类型
///
/// long
/// s
public static DateTime ConvertLongDateTime(long d)
{
DateTime dtStart = TimeZone.CurrentTimeZone.ToLocalTime(new DateTime(1970, 1, 1));
long lTime = long.Parse(d + "0000000");
TimeSpan toNow = new TimeSpan(lTime);
DateTime dtResult = dtStart.Add(toNow);
return dtResult;
}
#endregion
#region 方法 -> HTTP报文请求
///
/// HTTP报文请求
///
/// 签名
/// 请求路径
///
///
///
public static string HttpUrlPost(string str, string RequestUrl, string ContentType = "application/x-www-form-urlencoded", int timeout = 0)
{
try
{
System.Net.CookieContainer cookieContainer = new System.Net.CookieContainer();
byte[] postBytes = System.Text.Encoding.UTF8.GetBytes(str);
// 设置提交的相关参数
ServicePointManager.ServerCertificateValidationCallback = new RemoteCertificateValidationCallback(CheckValidationResult);
System.Net.HttpWebRequest request = System.Net.WebRequest.Create(RequestUrl) as System.Net.HttpWebRequest;
if (timeout > 0)
{
request.Timeout = timeout * 1000;
}
request.Method = "POST";
request.KeepAlive = false;
request.ContentType = ContentType;
request.CookieContainer = cookieContainer;
request.ContentLength = postBytes.Length;
using (System.IO.Stream reqStream = request.GetRequestStream())
{
reqStream.Write(postBytes, 0, postBytes.Length);
}
using (System.Net.HttpWebResponse response = request.GetResponse() as System.Net.HttpWebResponse)
{
//在这里对接收到的页面内容进行处理
//直到request.GetResponse()程序才开始向目标网页发送post请求
System.IO.Stream responseStream = response.GetResponseStream();
System.IO.StreamReader reader = new System.IO.StreamReader(responseStream, System.Text.Encoding.GetEncoding("utf-8"));
string val = reader.ReadToEnd();
return val;
}
}
catch (Exception ex)
{
return ex.ToString();
}
}
public static bool CheckValidationResult(object sender, X509Certificate certificate, X509Chain chain, SslPolicyErrors errors)
{
return true;
}
#endregion
#region 方法 -> 获取请求地址
public static string GetPostUrl(SortedDictionary ApiParam, string key, string type,
int timeOut, string format = "application/json;charset=UTF-8")
{
//报文创建
string MD5String = "", PostStr = "", ResString = "";
long timestamp = ConvertDataTimeLong(DateTime.Now);
PostStr = JsonConvert.SerializeObject(ApiParam);
MD5String = GetMD5(timestamp + key + PostStr) + ":" + timestamp;
//MD5String = timestamp + key + "{";
//foreach (KeyValuePair kvp in ApiParam)
//{
// MD5String += "\"" + kvp.Key + "\":\"" + kvp.Value + "\",";
// PostStr += "\"" + kvp.Key + "\":\"" + kvp.Value + "\",";
//}
//MD5String = MD5String.TrimEnd(',') + "}";
//PostStr = "{" + PostStr.TrimEnd(',') + "}";
////创建签名
//MD5String = GetMD5(MD5String) + ":" + timestamp;
//请求报文,参数返回
ResString = HttpUrlPost(PostStr, _BaseUrl + "/" + type + "?sign=" + MD5String, format, timeOut);
return ResString;
}
#endregion
#region 方法 -> 天气HTTP请求
public static StreamReader WeatherPostUrl(string path, string query = "", string body = "", string method = "GET")
{
String querys = query;
String bodys = body;
String url = _Weatherhost + path;
HttpWebRequest httpRequest = null;
HttpWebResponse httpResponse = null;
if (0 < querys.Length)
{
url = url + "?" + querys;
}
if (_Weatherhost.Contains("https://"))
{
ServicePointManager.ServerCertificateValidationCallback = new RemoteCertificateValidationCallback(CheckValidationResult);
httpRequest = (HttpWebRequest)WebRequest.CreateDefault(new Uri(url));
}
else
{
httpRequest = (HttpWebRequest)WebRequest.Create(url);
}
httpRequest.Method = method;
httpRequest.Headers.Add("Authorization", "APPCODE " + _WeatherAppCode);
if (0 < bodys.Length)
{
byte[] data = Encoding.UTF8.GetBytes(bodys);
using (Stream stream = httpRequest.GetRequestStream())
{
stream.Write(data, 0, data.Length);
}
}
try
{
httpResponse = (HttpWebResponse)httpRequest.GetResponse();
}
catch (WebException ex)
{
httpResponse = (HttpWebResponse)ex.Response;
}
Stream st = httpResponse.GetResponseStream();
StreamReader reader = new StreamReader(st, Encoding.GetEncoding("utf-8"));
return reader;
}
#endregion
#region 方法 -> Json 字符串 转换为 DataTable数据集合
///
/// Json 字符串 转换为 DataTable数据集合
///
///
///
public static DataTable ToDataTable(string json)
{
DataTable dataTable = new DataTable(); //实例化
DataTable result;
try
{
JavaScriptSerializer javaScriptSerializer = new JavaScriptSerializer();
javaScriptSerializer.MaxJsonLength = Int32.MaxValue; //取得最大数值
if (!string.IsNullOrEmpty(json))
{
ArrayList arrayList = javaScriptSerializer.Deserialize(json);
if (arrayList.Count > 0)
{
foreach (Dictionary dictionary in arrayList)
{
if (dictionary.Keys.Count == 0)
{
result = dataTable;
return result;
}
//Columns
if (dataTable.Columns.Count == 0)
{
foreach (string current in dictionary.Keys)
{
if (IsType(dictionary[current].GetType(), "System.Nullable`1[System.Int16]") ||
IsType(dictionary[current].GetType(), "System.Nullable`1[System.Int32]") ||
IsType(dictionary[current].GetType(), "System.Nullable`1[System.Int64]") ||
IsType(dictionary[current].GetType(), "System.Nullable`1[System.Double]") ||
IsType(dictionary[current].GetType(), "System.Nullable`1[System.Decimal]") ||
dictionary[current].GetType() == typeof(System.Int16) ||
dictionary[current].GetType() == typeof(System.Int32) ||
dictionary[current].GetType() == typeof(System.Int64) ||
dictionary[current].GetType() == typeof(System.Double) ||
dictionary[current].GetType() == typeof(System.Decimal))
{
dataTable.Columns.Add(current, typeof(System.Decimal));
}
else
{
dataTable.Columns.Add(current, dictionary[current].GetType());
}
}
}
//Rows
DataRow dataRow = dataTable.NewRow();
foreach (string current in dictionary.Keys)
{
try
{
dataRow[current] = dictionary[current];
}
catch { }
}
dataTable.Rows.Add(dataRow); //循环添加行到DataTable中
}
}
}
}
catch (Exception ex)
{
SuperMap.RealEstate.Utility.ErrorLogHelper.Write(ex);
}
result = dataTable;
return result;
}
#endregion
#region 方法 -> 生成验证码
///
/// 生成验证码
/// 位数
/// 验证码字符串
public static string CreateRandomCode(int n)
{
string[] CharArray = charSet.Split(',');
string randomCode = "";
int temp = -1;
Random rand = new Random();
for (int i = 0; i < n; i++)
{
if (temp != -1)
{
rand = new Random(i * temp * ((int)DateTime.Now.Ticks));
}
int t = rand.Next(CharArray.Length - 1);
if (temp == t)
{
return CreateRandomCode(n);
}
temp = t;
randomCode += CharArray[t];
}
return randomCode;
}
#endregion
#region 方法 -> 获取get,post传参的值
///
/// 获取get,post传参的值
///
/// 参数名
/// 参数为空时的默认值
///
public static string Request(string key, string defaultValue = null)
{
var v = HttpContext.Current.Request.Form[key];
if (v == null)
{
v = HttpContext.Current.Request.QueryString[key];
}
return v ?? (defaultValue ?? string.Empty);
}
#endregion
#region 方法 -> DataTable 排序
public static DataTable DataTableSort(DataTable dt, string sortBy, string tableName = null)
{
if (!string.IsNullOrEmpty(tableName))
{
dt.TableName = tableName;
}
dt.DefaultView.Sort = sortBy;
dt = dt.DefaultView.ToTable();
return dt;
}
#endregion
#region 方法 -> 获取DataTable前几条数据
///
/// 获取DataTable前几条数据
///
/// 前N条数据
/// 源DataTable
///
public static DataTable DtSelectTop(int TopItem, DataTable oDT)
{
if (oDT.Rows.Count < TopItem) return oDT;
DataTable NewTable = oDT.Clone();
DataRow[] rows = oDT.Select("1=1");
for (int i = 0; i < TopItem; i++)
{
NewTable.ImportRow((DataRow)rows[i]);
}
return NewTable;
}
#endregion
#region 方法 -> 创建md5 16位大写加密
public static string CreateMD5(string text)
{
var md5 = new System.Security.Cryptography.MD5CryptoServiceProvider();
//换成utf8后对于中文加密也适用
byte[] output = md5.ComputeHash(System.Text.Encoding.UTF8.GetBytes(text));
string pass2md5 = BitConverter.ToString(output, 4, 8).Replace("-", "");
//pass2md5 = pass2md5.ToUpper();
return pass2md5;
}
#endregion
#region 方法 -> 类型匹配
///
/// 类型匹配
///
/// 类型
/// 类型名称
///
public static bool IsType(Type type, string typeName)
{
if (type.ToString() == typeName)
return true;
if (type.ToString() == "System.Object")
return false;
return IsType(type.BaseType, typeName);
}
#endregion
#region 方法 -> 订单状态
///
/// 订单状态
///
/// 状态值
///
public static string TransferBillState(string SaleBill_State)
{
switch (SaleBill_State)
{
case "1000":
return "订单申请";
case "1005":
return "待付款";
case "1010":
return "已付款";
case "2000":
return "制作中";
case "3000":
return "已完成";
case "9000":
return "订单关闭";
case "9999":
return "已退款";
default:
return "";
}
}
#endregion
public static decimal Round(decimal d, int decimals)
{
decimal tenPow = Convert.ToDecimal(Math.Pow(10, decimals));
decimal scrD = d * tenPow + 0.5m;
return (Convert.ToDecimal(Math.Floor(Convert.ToDouble(scrD))) / tenPow);
}
}
}