Esempio n. 1
0
        /// <summary>
        /// 参数有效性判断
        /// </summary>
        /// <param name="parameter">系统参数.</param>
        /// <param name="messaage">消息.</param>
        /// <returns>
        /// Boolean
        /// </returns>
        /// <remarks>
        ///   <list>
        ///    <item><description>添加参数校验方法 added by Shaipe 2018/9/25</description></item>
        ///   </list>
        /// </remarks>
        public static bool ValidParameter(SysParameter parameter, out string messaage)
        {
            if (string.IsNullOrEmpty(parameter.AppId))
            {
                messaage = "缺少必须的Appid参数";
                return(false);
            }

            if (!Constant.AppSecret.ContainsKey(parameter.AppId))
            {
                messaage = "请求的参数错误AppId不正确";
                return(false);
            }

            if (parameter.Timestamp == 0)
            {
                messaage = "缺少必须的Timestamp参数";
                return(false);
            }

            if (string.IsNullOrEmpty(parameter.Sign))
            {
                messaage = "缺少必须的Sign参数";
                return(false);
            }

            if (string.IsNullOrEmpty(parameter.Method))
            {
                messaage = "缺少必须的Method参数";
                return(false);
            }

            messaage = "";
            return(true);
        }
Esempio n. 2
0
        /// <summary>
        /// 对时间戳参数进行验证
        /// </summary>
        /// <param name="parameter">The parameter.</param>
        /// <returns>
        /// Boolean
        /// </returns>
        /// <remarks>
        ///   <list>
        ///    <item><description>添加时间戳校验方法 added by xiepeng 2018/9/20</description></item>
        ///   </list>
        /// </remarks>
        public static bool ValidTimestamp(SysParameter parameter)
        {
            bool ret          = false;
            long currentStamp = Utils.GetTimstamp();
            long absDiff      = System.Math.Abs(currentStamp - parameter.Timestamp);

            // 请求的时间差为上下180秒以内
            ret = (absDiff < 180);
            return(ret);
        }
Esempio n. 3
0
        /// <summary>
        /// 参数转为数字类型.
        /// </summary>
        /// <param name="para">参数.</param>
        /// <param name="key">关键字.</param>
        /// <returns></returns>
        public static decimal ToDecimal(this SysParameter para, string key)
        {
            decimal value = 0.00m;

            if (!para.IsNullOrEmpty(key))
            {
                decimal.TryParse(para.Properties[key].ToString(), out value);
            }

            return(value);
        }
Esempio n. 4
0
        /// <summary>
        /// 参数格式化.
        /// </summary>
        /// <param name="para">参数.</param>
        /// <param name="key">关键字.</param>
        /// <returns></returns>
        public static string ToValue(this SysParameter para, string key)
        {
            string value = string.Empty;

            if (!para.IsNullOrEmpty(key))
            {
                value = para.Properties[key].ToString();
            }

            return(value);
        }
Esempio n. 5
0
        /// <summary>
        /// 返回的字符串数组包含此实例中的子字符串(由指定 Unicode 字符数组的元素分隔)。
        /// </summary>
        /// <param name="para">查询参数.</param>
        /// <param name="key">关键字.</param>
        /// <param name="oparet">操作符.</param>
        /// <returns></returns>
        public static string[] Split(this SysParameter para, string key, char oparet)
        {
            string[] values = { };

            if (!para.IsNullOrEmpty(key))
            {
                values = para.Properties[key].ToString().Split(oparet);
            }

            return(values);
        }
Esempio n. 6
0
        /// <summary>
        /// 参数转为整数类型.
        /// </summary>
        /// <param name="para">参数.</param>
        /// <param name="key">关键字.</param>
        /// <returns></returns>
        public static int ToInt(this SysParameter para, string key, int defaultValue)
        {
            int value = defaultValue;

            if (!para.IsNullOrEmpty(key))
            {
                int.TryParse(para.Properties[key].ToString(), out value);
            }

            return(value);
        }
Esempio n. 7
0
        /// <summary>
        /// 判断参数是否为空或者是否包含关键字.
        /// </summary>
        /// <param name="para">参数.</param>
        /// <param name="key">关键字.</param>
        /// <returns></returns>
        public static bool IsNullOrEmpty(this SysParameter para, string key)
        {
            bool result = true;

            if (para.Properties != null && !string.IsNullOrEmpty(key))  // by xp 添加对Key的空值进行判断
            {
                if (para.Properties.ContainsKey(key) && !String.IsNullOrEmpty(para.Properties[key].ToString()))
                {
                    result = false;
                }
            }

            return(result);
        }
Esempio n. 8
0
        /// <summary>
        /// 参数转换为布尔型.
        /// </summary>
        /// <param name="para">参数.</param>
        /// <param name="key">关键字.</param>
        /// <returns></returns>
        public static bool ToBool(this SysParameter para, string key)
        {
            if (para.Properties == null || !para.Properties.ContainsKey(key))
            {
                return(false);
            }
            return(Utils.ToBool(para.Properties[key]));
            //bool value = false;
            //if (!para.IsNullOrEmpty(key))
            //{
            //    bool.TryParse(para.Properties[key], out value);
            //}

            //return value;
        }
Esempio n. 9
0
        /// <summary>
        /// 转换为时间格式.
        /// </summary>
        /// <param name="parameter">The parameter.</param>
        /// <param name="key"></param>
        /// <returns>转换失败则为系统默认最小日期</returns>
        public static DateTime ToDateTime(this SysParameter para, string key)
        {
            DateTime dateTime = DateTime.MinValue;

            string dateTimeString = string.Empty;

            if (!para.IsNullOrEmpty(key))
            {
                dateTimeString = para.Properties[key].ToString();
            }

            DateTime.TryParse(HttpUtility.HtmlDecode(dateTimeString), out dateTime);

            return(dateTime);
        }
Esempio n. 10
0
        /// <summary>
        /// 獲取最后數據
        /// </summary>
        /// <param name="para"></param>
        /// <param name="result"></param>
        /// <returns></returns>
        public static string GetContent(SysParameter para, object result)
        {
            string content = string.Empty;

            if (result is DataTable)
            {
                if (para.Format == FormatType.Json)
                {
                    content = DBHelper.TableToJson(result as DataTable);
                }
                else
                {
                    content = DBHelper.Table2Xml(result as DataTable);
                }
            }
            else if (result is IEntity)
            {
                if (para.Format == FormatType.Json)
                {
                    content = (result as IEntity).ToJson();
                }
                else
                {
                    content = "<entity>" + (result as IEntity).ToXml() + "</entity>";
                }
            }
            else
            {
                if (result == null)
                {
                    result = "";
                }

                if (para.Format == FormatType.Json)
                {
                    content = "{\"result\":\"" + result.ToString() + "\"}";
                }
                else
                {
                    content = "<result>" + result.ToString() + "</result>";
                }
            }

            return(content);
        }
Esempio n. 11
0
        /// <summary>
        /// 参数格式化为列表查询条件对象(解析的节点只包含:Fields、PageIndex、PageSize、Condition、Orderby、Groupby) by hfs 20160909
        /// </summary>
        /// <param name="para"></param>
        /// <returns></returns>
        public static ListQuery ToListQuery(this SysParameter para)
        {
            XmlDocument orderby = new XmlDocument();

            orderby.LoadXml("<Orderby>" + (!string.IsNullOrEmpty(para.ToValue("Orderby")) ? para.ToValue("Orderby") : "") + "</Orderby>");
            XmlDocument condition = new XmlDocument();

            condition.LoadXml("<Condition>" + (!string.IsNullOrEmpty(para.ToValue("Condition")) ? para.ToValue("Condition") : "") + "</Condition>");
            ListQuery query = new ListQuery
            {
                Fields    = para.ToValue("Fields"),
                Condition = Condition.Collection(condition),
                Orderby   = Orderby.Collection(orderby),
                Groupby   = para.ToValue("Groupby")
            };

            return(query);
        }
Esempio n. 12
0
        /// <summary>
        /// 验证签名,防止参数被修改
        /// </summary>
        /// <returns>Boolean</returns>
        /// <remarks>
        ///   <list>
        ///    <item><description>代码梳理 added by xiepeng 2018/9/20</description></item>
        ///   </list>
        /// </remarks>
        public static bool ValidSign(SysParameter parameter)
        {
            bool ret = false;
            // 1. 根据appid获取出对应的Secret

            string secret = Constant.AppSecret[parameter.AppId];

            Dictionary <string, string> dic = parameter.RequestContent.ToDictionary();

            if (dic != null)
            {
                Dictionary <string, string> sortDic = dic.SortFilter(new string[] { "sign", "secret" });

                string sign = ECF.Security.Encrypt.MD532(sortDic.ToLinkString() + "&secret=" + secret);
                // 3. 对比签名有效性
                ret = (sign == parameter.Sign);
            }
            return(ret);
        }
Esempio n. 13
0
        /// <summary>
        /// 参数转换为XML.
        /// </summary>
        /// <param name="parameter">The parameter.</param>
        /// <returns></returns>
        public static XmlDocument ToXml(this SysParameter parameter)
        {
            if (parameter.Properties == null)
            {
                parameter.Properties = new Dictionary <string, object>();
            }

            var xmlDoc = new XmlDocument();
            var sb     = new StringBuilder();

            sb.Append("<root>");
            foreach (var property in parameter.Properties)
            {
                sb.Append("<" + property.Key + ">" + property.Value + "</" + property.Key + ">");
            }
            sb.Append("</root>");
            xmlDoc.LoadXml(sb.ToString());

            return(xmlDoc);
        }
Esempio n. 14
0
        /// <summary>
        /// 参数格式化为分页查询条件对象(解析的节点只包含:Fields、SumFields、PageIndex、PageSize、Condition、Orderby、Groupby) by hfs 20160909
        /// </summary>
        /// <param name="para"></param>
        /// <returns></returns>
        public static PagingQuery ToPagingQuery(this SysParameter para)
        {
            XmlDocument orderby = new XmlDocument();

            orderby.LoadXml("<Orderby>" + (!string.IsNullOrEmpty(para.ToValue("Orderby")) ? para.ToValue("Orderby") : "") + "</Orderby>");
            XmlDocument condition = new XmlDocument();

            condition.LoadXml("<Condition>" + (!string.IsNullOrEmpty(para.ToValue("Condition")) ? para.ToValue("Condition") : "") + "</Condition>");
            PagingQuery query = new PagingQuery
            {
                Fields    = para.ToValue("Fields"),
                SumFields = para.ToValue("SumFields"),
                PageIndex = para.ToInt("PageIndex", 1),
                PageSize  = para.ToInt("PageSize", 10),
                Condition = Condition.Collection(condition),
                Orderby   = Orderby.Collection(orderby),
                Groupby   = para.ToValue("Groupby")
            };

            return(query);
        }
Esempio n. 15
0
        /// <summary>
        /// 转换为键值对.
        /// </summary>
        /// <param name="parameter">The parameter.</param>
        /// <returns></returns>
        public static Dictionary <string, object> ToDictionary(this SysParameter parameter)
        {
            Dictionary <string, object> dictionary = new Dictionary <string, object>(StringComparer.OrdinalIgnoreCase);

            if (parameter.Properties == null)
            {
                return(dictionary);
            }

            foreach (var property in parameter.Properties)
            {
                if (!dictionary.ContainsKey(property.Key))
                {
                    dictionary.Add(property.Key, property.Value);
                }
                else
                {
                    dictionary[property.Key] = property.Value;
                }
            }

            return(dictionary);
        }
Esempio n. 16
0
        public static IResultResponse VerifyAccessToken(SysParameter para)
        {
            string token = para.ToValue("AccessToken");

            //解析Token
            AccessToken tokenEnt = AccessToken.ParseToken(token);


            if (tokenEnt == null || tokenEnt.SellerId <= 0 || tokenEnt.DBId <= 0
                )
            {
                return(ResultResponse.ExceptionResult("Token无效", "", 4004));
            }


            // 判断token有效期
            if (Utils.ToUnixTime(DateTime.Now) > tokenEnt.Expired)
            {
                return(ResultResponse.ExceptionResult("Token已过期", "", 4004));
            }


            return(ResultResponse.GetSuccessResult(tokenEnt));
        }
Esempio n. 17
0
        /// <summary>
        /// 解析开放平台参数
        /// </summary>
        /// <param name="requestString">查询字符串</param>
        /// <returns></returns>
        public static SysParameter ParseOpenApiParameter(string requestString)
        {
            SysParameter sysPara = new SysParameter();

            Regex reParameter = new Regex(@"(?<paraKey>[^=|^&]+)=(?<paraValue>[^\&|$]+)", RegexOptions.Compiled | RegexOptions.IgnoreCase | RegexOptions.Multiline);

            Regex reSpace = new Regex(@"[\s]*", RegexOptions.Compiled | RegexOptions.IgnoreCase | RegexOptions.Multiline);

            requestString = reSpace.Replace(requestString, String.Empty);

            string paraKey = null, paraValue = null;

            foreach (Match m in reParameter.Matches(requestString))
            {
                paraKey   = HttpUtility.UrlDecode(m.Groups["paraKey"].Value);
                paraValue = HttpUtility.UrlDecode(m.Groups["paraValue"].Value);

                // 签名数据
                if (String.Compare("sign", paraKey, StringComparison.OrdinalIgnoreCase) == 0)
                {
                    sysPara.Sign = paraValue;
                }
                // 请求时间戳
                else if (String.Compare("timestamp", paraKey, StringComparison.OrdinalIgnoreCase) == 0)
                {
                    long tstamp = 0;
                    long.TryParse(paraValue, out tstamp);
                    sysPara.Timestamp = tstamp;
                }
                // 版本号
                else if (String.Compare("v", paraKey, StringComparison.OrdinalIgnoreCase) == 0)
                {
                    sysPara.Version = paraValue;
                }
                // 应用key
                else if (String.Compare("appid", paraKey, StringComparison.OrdinalIgnoreCase) == 0)
                {
                    sysPara.AppId = paraValue;
                }
                // 请求的方法
                else if (String.Compare("method", paraKey, StringComparison.OrdinalIgnoreCase) == 0)
                {
                    sysPara.Method = paraValue.ToLower();
                }
                // 商户id
                else if (String.Compare("partnerid", paraKey, StringComparison.OrdinalIgnoreCase) == 0)
                {
                    sysPara.PartnerId = paraValue;
                }
                // 入驻商家Id
                else if (String.Compare("storeid", paraKey, StringComparison.OrdinalIgnoreCase) == 0)
                {
                    sysPara.StoreId = Utils.ToInt(paraValue);
                }
                // 获取外键id
                else if (String.Compare("fkid", paraKey, StringComparison.OrdinalIgnoreCase) == 0)
                {
                    sysPara.FKId = Utils.ToInt(paraValue);
                }

                else if (String.Compare("accessToken", paraKey, StringComparison.OrdinalIgnoreCase) == 0)
                {
                    sysPara.AccessToken = Utils.ToString(paraValue);
                }
                // 返回数据格式
                else if (String.Compare("format", paraKey, StringComparison.OrdinalIgnoreCase) == 0)
                {
                    if (String.Compare(paraValue, "json", StringComparison.OrdinalIgnoreCase) == 0)
                    {
                        sysPara.Format = FormatType.Json;
                    }
                    else if (String.Compare(paraValue, "xml", StringComparison.OrdinalIgnoreCase) == 0)
                    {
                        sysPara.Format = FormatType.Xml;
                    }
                    else if (String.Compare(paraValue, "binary", StringComparison.OrdinalIgnoreCase) == 0)
                    {
                        sysPara.Format = FormatType.Binary;
                    }
                }
                //else
                //{
                if (sysPara.Properties == null)
                {
                    sysPara.Properties = new Dictionary <string, object>(StringComparer.OrdinalIgnoreCase);
                }


                if (!sysPara.Properties.ContainsKey(paraKey))
                {
                    sysPara.Properties.Add(paraKey, paraValue);
                }
                else
                {
                    new Exceptions("接收的参数中有相同的参数,参数名为:" + paraKey, "Ops");
                }

                //}
            }

            return(sysPara);
        }
Esempio n. 18
0
 /// <summary>
 /// Converts the string representation of a number to an integer.
 /// </summary>
 /// <param name="para">The para.</param>
 /// <param name="key">The key.</param>
 /// <returns>
 /// Int32
 /// </returns>
 /// <remarks>
 ///   <list>
 ///    <item><description>说明原因 added by xiepeng 2018/9/20</description></item>
 ///   </list>
 /// </remarks>
 public static int ToInt(this SysParameter para, string key)
 {
     return(ToInt(para, key, 0));
 }