public object UpdateWorkflowBase()
        {
            SetCacheEnable(false);
            FrameDLRObject wfBase = PostDataD.Base;
            var            up     = DB.NewDBUnitParameter();
            var            w      = from t in DB.LamdaTable(up, "WorkFlowBase", "w")
                                    where t.Code == wfBase.GetValue("Code").ToString()
                                    select t;

            if (!w.IsExists(up))
            {
                return(new
                {
                    code = "failed",
                    msg = "工作流编码不存在"
                });
            }
            this.DB.QuickUpdate(up, "WorkFlowBase", new { Title = wfBase.GetValue("Title"), Type = wfBase.GetValue("Type"), Status = wfBase.GetValue("Status"), Remark = wfBase.GetValue("Remark"), CurWFID = wfBase.GetValue("CurWFID"), AppCode = wfBase.GetValue("AppCode") },
                                new { Code = wfBase.GetValue("Code") });

            return(new
            {
                code = "success",
                msg = "工作流更新成功"
            });
        }
            /// <summary>
            /// 进行必输验证
            /// </summary>
            /// <param name="rule">json结构,key为传入参数名称,value为提示信息</param>
            /// <returns></returns>
            public virtual dynamic RequireValidation(FrameDLRObject rule)
            {
                var rtn = FrameDLRObject.CreateInstance(@"{
issuccess:true,
msg:''
}");

                foreach (var s in rule.Keys)
                {
                    var input = _logic.CallContext_Parameter[DomainKey.POST_DATA, s];
                    input = input == null ? _logic.CallContext_Parameter[DomainKey.QUERY_STRING, s] : input;
                    if (input == null)
                    {
                        rtn.issuccess = false;
                        rtn.msg       = rule.GetValue(s);
                        return(rtn);
                    }
                    else
                    {
                        if (input is string)
                        {
                            if (ComFunc.nvl(input) == "")
                            {
                                rtn.issuccess = false;
                                rtn.msg       = rule.GetValue(s);
                                return(rtn);
                            }
                        }
                    }
                }
                return(rtn);
            }
        public object UpdateApplication()
        {
            SetCacheEnable(false);
            FrameDLRObject app = PostDataD.Application;
            var            up  = DB.NewDBUnitParameter();
            var            w   = from t in DB.LamdaTable(up, "Applications", "w")
                                 where t.Code == app.GetValue("Code").ToString()
                                 select t;

            if (!w.IsExists(up))
            {
                return(new
                {
                    code = "failed",
                    msg = "应用编码不存在"
                });
            }
            this.DB.QuickUpdate(up, "Applications", new { Title = app.GetValue("Title"), Status = app.GetValue("Status"), Remark = app.GetValue("Remark") },
                                new { Code = app.GetValue("Code") });

            return(new
            {
                code = "success",
                msg = "应用更新成功"
            });
        }
Пример #4
0
 /// <summary>
 /// 发送事件请求
 /// </summary>
 /// <param name="method">请求的方法</param>
 /// <param name="url">请求的url</param>
 /// <param name="context">请求的参数上下文</param>
 /// <param name="header">请求的header资料</param>
 /// <param name="postdata">请求的post资料</param>
 /// <returns></returns>
 public string Send(string method, string url, EventsCallContext context = null, FrameDLRObject header = null, FrameDLRObject postdata = null)
 {
     if (header != null)
     {
         foreach (var key in header.Keys)
         {
             if (ComFunc.nvl(header.GetValue(key)).StartsWith("$") && context.ContainsKey(ComFunc.nvl(header.GetValue(key))))
             {
                 header.SetValue(key, context[ComFunc.nvl(header.GetValue(key))]);
             }
         }
     }
     if (postdata != null)
     {
         foreach (var key in postdata.Keys)
         {
             if (ComFunc.nvl(postdata.GetValue(key)).StartsWith("$") && context.ContainsKey(ComFunc.nvl(postdata.GetValue(key))))
             {
                 postdata.SetValue(key, context[ComFunc.nvl(postdata.GetValue(key))]);
             }
         }
     }
     if (method.ToLower() == "get")
     {
         return(Get(url, header));
     }
     else
     {
         return(base.Send(url, postdata, header, method));
     }
 }
Пример #5
0
        protected override dynamic ParseCreateTable(FrameDLRObject obj)
        {
            var rtn         = FrameDLRObject.CreateInstance();
            var table       = "";
            var columns     = "";
            var pk          = "";
            var pk_template = @",CONSTRAINT [#pkname#] PRIMARY KEY CLUSTERED
        (#pkcolumns# ) WITH ( IGNORE_DUP_KEY = OFF ) ON [PRIMARY]";
            var sql         = $@"CREATE TABLE #table#
    (
#columns#
#pk#
    )
ON  [PRIMARY]";

            foreach (var k in obj.Keys)
            {
                if (k.StartsWith("$"))
                {
                    if (k.ToLower() == "$table")
                    {
                        table = ComFunc.nvl(obj.GetValue(k));
                    }
                    else if (k.ToLower() == "$pk")
                    {
                        var pkobj     = obj.GetValue(k);
                        var pkcolumns = "";
                        if (pkobj != null && pkobj is IEnumerable <object> )
                        {
                            var pklist = (IEnumerable <object>)pkobj;
                            foreach (var s in pklist)
                            {
                                pkcolumns += $"{s},";
                            }
                        }
                        if (pkcolumns != "")
                        {
                            pk = pk_template.Replace("#pkcolumns#", pkcolumns.Substring(0, pkcolumns.Length - 1));
                        }
                    }
                }
                else
                {
                    if (obj.GetValue(k) is FrameDLRObject)
                    {
                        columns += $@"{parseColumnExpress(k, (FrameDLRObject)obj.GetValue(k))},";
                    }
                }
            }
            if (columns != "")
            {
                columns = columns.Substring(0, columns.Length - 1);
            }
            pk        = pk.Replace("#pkname#", $"PK_{table}");
            sql       = sql.Replace("#table#", table).Replace("#columns#", columns).Replace("#pk#", pk);
            rtn.sql   = sql;
            rtn.table = table;
            return(rtn);
        }
        protected override dynamic ParseCreateTable(FrameDLRObject obj)
        {
            var rtn         = FrameDLRObject.CreateInstance();
            var table       = "";
            var columns     = "";
            var pk          = "";
            var pk_template = @",PRIMARY KEY  (#pkcolumns#)";

            var sql = $@"CREATE TABLE `#table#`(
#columns#
#pk#
)
ENGINE={DefaultDBEngine} DEFAULT CHARSET={DefaultDBEncoding} ;
";

            foreach (var k in obj.Keys)
            {
                if (k.StartsWith("$"))
                {
                    if (k.ToLower() == "$table")
                    {
                        table = ComFunc.nvl(obj.GetValue(k));
                    }
                    else if (k.ToLower() == "$pk")
                    {
                        var pkobj     = obj.GetValue(k);
                        var pkcolumns = "";
                        if (pkobj != null && pkobj is IEnumerable <object> )
                        {
                            var pklist = (IEnumerable <object>)pkobj;
                            foreach (var s in pklist)
                            {
                                pkcolumns += $"{s},";
                            }
                        }
                        if (pkcolumns != "")
                        {
                            pk = pk_template.Replace("#pkcolumns#", pkcolumns.Substring(0, pkcolumns.Length - 1));
                        }
                    }
                }
                else
                {
                    if (obj.GetValue(k) is FrameDLRObject)
                    {
                        columns += $"{parseColumnExpress(k, (FrameDLRObject)obj.GetValue(k))},";
                    }
                }
            }
            if (columns != "")
            {
                columns = columns.Substring(0, columns.Length - 1);
            }
            pk        = pk.Replace("#pkname#", table);
            sql       = sql.Replace("#table#", table).Replace("#columns#", columns).Replace("#pk#", pk);
            rtn.sql   = sql;
            rtn.table = table;
            return(rtn);
        }
Пример #7
0
        /// <summary>
        /// 設置appSetting的值
        /// </summary>
        /// <param name="section">对应section</param>
        /// <param name="key">鍵</param>
        /// <param name="value">值</param>
        public void SetConfiguration(string section, string key, object value)
        {
            FrameDLRObject config = FrameDLRObject.CreateInstance(File.ReadAllText(ConfigFilePath), Constants.FrameDLRFlags.SensitiveCase);

            if (config.GetValue(section) == null)
            {
                config.SetValue(section, FrameDLRObject.CreateInstance(Constants.FrameDLRFlags.SensitiveCase));
            }
            ((FrameDLRObject)config.GetValue(section)).SetValue(key, value);
            File.WriteAllText(ConfigFilePath, config.ToJSONString());
            _config.Reload();
        }
Пример #8
0
        /// <summary>
        /// 獲得一個webrequest的實例
        /// </summary>
        /// <returns></returns>
        protected virtual HttpWebRequest GetRequestInstance()
        {
            HttpWebRequest hr           = (HttpWebRequest)WebRequest.Create(new Uri(_url));
            string         cookieheader = "";

            if (hr.CookieContainer != null)
            {
                cookieheader = hr.CookieContainer.GetCookieHeader(new Uri(_url));
            }

            CookieContainer cookieCon = new CookieContainer();

            hr.CookieContainer = cookieCon;
            hr.CookieContainer.SetCookies(new Uri(_url), cookieheader);

            hr.KeepAlive = false;
            hr.Method    = _requestmethod;
            hr.Proxy     = _proxy;
            if (_cert != null)
            {
                hr.ClientCertificates.Add(_cert);
            }
            //添加header
            foreach (var k in _header.Keys)
            {
                if (k.ToLower() == "date")
                {
                    hr.Date = DateTimeStd.IsDateTime(_header.GetValue(k)) ? DateTimeStd.ParseStd(ComFunc.nvl(_header.GetValue(k))).Value : DateTime.Now;
                }
                else if (k.ToLower() == "content-length")
                {
                    hr.ContentLength = long.Parse(ComFunc.nvl(_header.GetValue(k)));
                }
                else if (k.ToLower() == "user-agent")
                {
                    hr.UserAgent = ComFunc.nvl(_header.GetValue(k));
                }
                else
                {
                    if (ComFunc.nvl(hr.Headers[k]) != "")
                    {
                        hr.Headers[k] = ComFunc.nvl(_header.GetValue(k));
                    }
                    else
                    {
                        hr.Headers.Add(k, ComFunc.nvl(_header.GetValue(k)));
                    }
                }
            }
            return(hr);
        }
Пример #9
0
            /// <summary>
            /// 呼叫本地logic
            /// </summary>
            /// <param name="logic"></param>
            /// <param name="action"></param>
            /// <param name="p"></param>
            /// <returns></returns>
            public object CallLocalLogic(string logic, string action, FrameDLRObject p)
            {
                var copyp = (WebParameter)_logic.CallContext_Parameter.WebParam.Clone();
                var copyd = (GoData)_logic.CallContext_DataCollection.WebData.Clone();

                copyp.RequestResourceName = logic;
                copyp.Action = action;
                ResourceManage rema = new ResourceManage();

                copyp.SetValue(ParameterKey.RESOURCE_MANAGER, rema);
                var defaulttoken = TransactionToken.NewToken();

                copyp.TransTokenList.Add(defaulttoken);
                copyp.SetValue(ParameterKey.TOKEN, defaulttoken);
                copyp.SetValue("IsAjaxAsync", false);
                if (p != null)
                {
                    foreach (var key in p.Keys)
                    {
                        copyp.SetValue(DomainKey.CUSTOMER_PARAMETER, key, p.GetValue(key));
                    }
                }

                return(CallLocalLogic(logic, action, copyp, copyd));
            }
Пример #10
0
            public virtual void DeleteFromOracle(UnitParameter p, string tablename, FrameDLRObject obj)
            {
                StringBuilder sbsql = new StringBuilder();

                sbsql.Append("delete from " + tablename + " where 1=1 ");
                var values  = "";
                var columns = "";
                DBOParameterCollection dpc = new DBOParameterCollection();

                foreach (var s in obj.Keys)
                {
                    var pkey = s.Replace("(", "").Replace(")", "").Replace("'", "").Replace("\"", "").Replace("[", "").Replace("]", "").Replace(".", "");
                    dpc.SetValue(pkey, obj.GetValue(s));
                    sbsql.Append(string.Format(" and {0}=:{0}", pkey));
                }
                if (p.Dao == null)
                {
                    p.Dao = _logic.CallContext_ResourceManage.CreateInstance <OracleAccess>(p.CurrentTransToken);
                    p.Dao.Open(ComFunc.nvl(_logic.Configs[ParameterKey.DBCONNECT_STRING]));
                }
                //目前只支持关系型数据库
                if (p.Dao is ADBAccess)
                {
                    ((ADBAccess)p.Dao).ExecuteNoQuery(sbsql.ToString(), dpc);
                }
            }
Пример #11
0
            public virtual void InsertIntoOracle(UnitParameter p, string tablename, FrameDLRObject obj)
            {
                StringBuilder sbsql = new StringBuilder();

                sbsql.Append("insert into " + tablename + "(");
                var values  = "";
                var columns = "";
                DBOParameterCollection dpc = new DBOParameterCollection();

                foreach (var s in obj.Keys)
                {
                    var pkey = s.Replace("(", "").Replace(")", "").Replace("'", "").Replace("\"", "").Replace("[", "").Replace("]", "").Replace(".", "");
                    dpc.SetValue(pkey, obj.GetValue(s));
                    columns += columns.Length > 0 ? "," + s : s;
                    values  += values.Length > 0 ? ",:" + pkey : ":" + pkey;
                }
                sbsql.Append(columns + ")values(");
                sbsql.Append(values);
                sbsql.Append(");");

                if (p.Dao == null)
                {
                    p.Dao = _logic.CallContext_ResourceManage.CreateInstance <OracleAccess>(p.CurrentTransToken);
                    p.Dao.Open(ComFunc.nvl(_logic.Configs[ParameterKey.DBCONNECT_STRING]));
                }
                //目前只支持关系型数据库
                if (p.Dao is ADBAccess)
                {
                    ((ADBAccess)p.Dao).ExecuteNoQuery(sbsql.ToString(), dpc);
                }
            }
        private dynamic Load(UnitParameter arg)
        {
            var rtn  = FrameDLRObject.CreateInstance();
            var json = arg.GetValue("__json__");

            if (json != null && json is DBExpress)
            {
                var            express = (DBExpress)json;
                var            re      = express.ToExpress();
                var            sql     = ComFunc.nvl(re.GetValue("sql"));
                FrameDLRObject data    = re.GetValue("data") != null ? (FrameDLRObject)re.GetValue("data") : FrameDLRObject.CreateInstance();
                var            orderby = ComFunc.nvl(re.GetValue("orderby"));
                foreach (var k in data.Keys)
                {
                    arg.SetValue(k, data.GetValue(k));
                }
                if (express.CurrentAct == DBExpress.ActType.QueryByPage)
                {
                    rtn.sql     = sql;
                    rtn.orderby = orderby;
                }
                else
                {
                    rtn.sql = sql;
                }
            }
            return(rtn);
        }
Пример #13
0
        /// <summary>
        /// 根据参数采用MD5算法生成数字签名
        /// </summary>
        /// <param name="obj">参数集,该参数集不可包含数字签名的栏位</param>
        /// <param name="mch_key">微信商户支付秘钥</param>
        /// <returns></returns>
        public static string GenMD5SignString(FrameDLRObject obj, string mch_key)
        {
            SortedDictionary <string, object> p = new SortedDictionary <string, object>();

            foreach (var k in obj.Keys)
            {
                p.Add(k, obj.GetValue(k));
            }
            string buff = "";

            foreach (KeyValuePair <string, object> pair in p)
            {
                if (pair.Key != "sign" && ComFunc.nvl(pair.Value) != "")
                {
                    buff += pair.Key + "=" + pair.Value + "&";
                }
            }
            buff  = buff.Trim('&');
            buff += "&key=" + mch_key;

            //MD5加密
            var md5 = MD5.Create();
            var bs  = md5.ComputeHash(Encoding.UTF8.GetBytes(buff));
            var sb  = new StringBuilder();

            foreach (byte b in bs)
            {
                sb.Append(b.ToString("x2"));
            }
            return(sb.ToString().ToUpper());
        }
Пример #14
0
 public void SetValue(FrameDLRObject obj)
 {
     foreach (var key in obj.Keys)
     {
         SetValue(key, obj.GetValue(key));
     }
 }
        /// <summary>
        /// 执行Insert操作
        /// </summary>
        /// <typeparam name="TSource"></typeparam>
        /// <param name="source"></param>
        /// <param name="columns"></param>
        public virtual void DoInsert <TSource>(LinqDLR2Sql <TSource> source, object columns)
        {
            if (columns == null)
            {
                throw new ArgumentNullException("columns");
            }
            if (CurrentOperation == LinqDLR2SQLOperation.SelectJoin ||
                CurrentOperation == LinqDLR2SQLOperation.SelectMany)
            {
                throw new NotSupportedException("当前模式不支持INSERT操作");
            }

            FrameDLRObject columnsobj = FrameDLRObject.CreateInstance(columns);
            var            columnsstr = "";
            var            valuestr   = "";

            foreach (var key in columnsobj.Keys)
            {
                columnsstr += $"{string.Format(SqlFlags.Column_Quatation, key)},";
                valuestr   += $"{Convert2Express(columnsobj.GetValue(key))},";
            }
            columnsstr = columnsstr == "" ? "" : columnsstr.Substring(0, columnsstr.Length - 1);
            valuestr   = valuestr == "" ? "" : valuestr.Substring(0, valuestr.Length - 1);

            var sql       = "INSERT INTO {tables}({columns})VALUES({values})";
            var alianname = string.IsNullOrEmpty(source.AliasName) ? "" : $"{source.AliasName}";
            var tables    = source.Table;

            CurrentSQL = sql.Replace("{tables}", tables).Replace("{columns}", columnsstr).Replace("{values}", valuestr);
        }
        void WhereExpress(FrameDLRObject obj, BsonDocument query, BsonDocument fields)
        {
            var rtn = FrameDLRObject.CreateInstance();

            foreach (var k in obj.Keys)
            {
                if (k.ToLower() != "$fields")
                {
                    var lq = WhereExpress(k, obj.GetValue(k));
                    query.AddRange(lq);
                }
                else
                {
                    fields.AddRange(ParseFields(k, obj.GetValue(k)));
                }
            }
        }
Пример #17
0
        /// <summary>
        /// 给Express加载对应的参数
        /// </summary>
        /// <param name="express"></param>
        /// <param name="json"></param>
        /// <returns></returns>
        public static void Load(DBExpress express, FrameDLRObject json)
        {
            var rtn        = express;
            var acttypekey = "$acttype";

            if (ComFunc.nvl(json.GetValue(acttypekey)) != "")
            {
                rtn.acttype = ComFunc.EnumParse <ActType>(ComFunc.nvl(json.GetValue(acttypekey)));
                json.Remove(acttypekey);
            }
            else
            {
                rtn.acttype = ActType.Query;
            }

            rtn.express = json;
        }
Пример #18
0
        /// <summary>
        /// 创建一个DBExpress对象
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="json"></param>
        /// <returns></returns>
        public static T Create <T>(FrameDLRObject json) where T : DBExpress
        {
            T   rtn        = (T)Activator.CreateInstance(typeof(T), true);
            var acttypekey = json.IgnoreCase ? "$acttype" : "$ActType";

            if (ComFunc.nvl(json.GetValue(acttypekey)) != "")
            {
                rtn.acttype = ComFunc.EnumParse <ActType>(ComFunc.nvl(json.GetValue(acttypekey)));
                json.Remove(acttypekey);
            }
            else
            {
                rtn.acttype = ActType.Query;
            }

            rtn.express = json;
            return(rtn);
        }
Пример #19
0
        void WhereExpress(FrameDLRObject obj, QueryDocument query, FieldsBuilder fields)
        {
            var rtn = FrameDLRObject.CreateInstance();

            foreach (var k in obj.Keys)
            {
                if (k.ToLower() != "$fields")
                {
                    var lq = WhereExpress(k, obj.GetValue(k));
                    foreach (var q in lq)
                    {
                        query.Add(q.ToBsonDocument());
                    }
                }
                else
                {
                    var f = new FieldsBuilder();
                    ParseFields(k, obj.GetValue(k), fields);
                }
            }
        }
Пример #20
0
        private string ToXml(FrameDLRObject obj)
        {
            XmlDocument doc  = ComFunc.GetSafeXmlInstance();
            XmlElement  root = doc.CreateElement("xml");

            doc.AppendChild(root);
            foreach (var k in obj.Keys)
            {
                ToXmlElem(doc, root, k, obj.GetValue(k));
            }
            return(doc.InnerXml);
        }
        protected override dynamic ParseCopyTable(FrameDLRObject obj)
        {
            var rtn       = FrameDLRObject.CreateInstance();
            var table     = ComFunc.nvl(obj.GetValue("$table"));
            var to_table  = ComFunc.nvl(obj.GetValue("$to_table"));
            var with_data = BoolStd.IsNotBoolThen(obj.GetValue("$with_data"));
            var sql       = "CREATE TABLE #new_table_name# AS SELECT * FROM #table_name# #where#";

            var where = "";
            if (!with_data)
            {
                where = "1=2";
            }

            sql = sql.Replace("#table_name#", table)
                  .Replace("#new_table_name#", to_table)
                  .Replace("#where#", where);

            rtn.sql   = sql;
            rtn.table = table;
            return(rtn);
        }
Пример #22
0
        protected override dynamic ParseCopyTable(FrameDLRObject obj)
        {
            var rtn       = FrameDLRObject.CreateInstance();
            var table     = ComFunc.nvl(obj.GetValue("$table"));
            var to_table  = ComFunc.nvl(obj.GetValue("$to_table"));
            var with_data = BoolStd.IsNotBoolThen(obj.GetValue("$with_data"));
            var sql       = "SELECT * INTO #new_table_name# FROM #table_name# #where#";
            var columns   = "";

            var where = "";
            if (!with_data)
            {
                where = "WHERE 1=2";
            }
            columns = string.IsNullOrEmpty(columns) ? "*" : columns;
            sql     = sql.Replace("#table_name#", table)
                      .Replace("#new_table_name#", to_table)
                      .Replace("#where#", where);

            rtn.sql   = sql;
            rtn.table = table;
            return(rtn);
        }
Пример #23
0
            /// <summary>
            /// 根据obj的定义更新单表,obj定义格式如下
            /// {
            /// col1:value,
            /// coln:value,
            /// where:{
            /// c1:{$op:value}
            /// cn:{$op:value}
            /// }
            /// }
            /// </summary>
            /// <param name="p"></param>
            /// <param name="table"></param>
            /// <param name="obj"></param>
            public virtual void UpdateSQLServer(UnitParameter p, string tablename, FrameDLRObject obj)
            {
                StringBuilder sbsql = new StringBuilder();

                sbsql.Append("update " + tablename + " set ");
                StringBuilder columns = new StringBuilder();

                string where = "";
                DBOParameterCollection dpc = new DBOParameterCollection();

                foreach (var s in obj.Keys)
                {
                    if (s.ToLower() != "where")
                    {
                        var pkey = s.Replace("(", "").Replace(")", "").Replace("'", "").Replace("\"", "").Replace("[", "").Replace("]", "").Replace(".", "");
                        dpc.SetValue(pkey, obj.GetValue(s));
                        columns.Append(columns.Length > 0 ? "," : "");
                        columns.AppendLine(string.Format("{0}=@{0}", s));
                    }
                    else
                    {
                        where = ParseWhereExpress(DBType.SqlServer, obj.GetValue(s), ref dpc);
                    }
                }
                sbsql.Append(columns);
                sbsql.Append(where);
                if (p.Dao == null)
                {
                    p.Dao = _logic.CallContext_ResourceManage.CreateInstance <SQLServerAccess>(p.CurrentTransToken);
                    p.Dao.Open(ComFunc.nvl(_logic.Configs[ParameterKey.DBCONNECT_STRING]));
                }
                //目前只支持关系型数据库
                if (p.Dao is ADBAccess)
                {
                    ((ADBAccess)p.Dao).ExecuteNoQuery(sbsql.ToString(), dpc);
                }
            }
Пример #24
0
        /// <summary>
        /// token的第二级验证,
        /// 通过第一次验证(基本算法验证)完成后,如果需要进行其他扩展性的验证可以在此处理
        /// 二级验证只有在一级验证返回true的时候才执行
        /// </summary>
        /// <param name="token"></param>
        /// <param name="payloadinfo">一级验证完成后解析出来的参数信息</param>
        /// <param name="msg"></param>
        /// <returns></returns>
        protected virtual bool IsValid_Level2(string token, FrameDLRObject payloadinfo, ref string msg)
        {
            var expiretime = (DateTime)payloadinfo.GetValue("expire_time");
            var id         = ComFunc.nvl(payloadinfo.GetValue("id"));
            var key        = $"EWRA_auth_token_{id}";
            var cachetoken = ComFunc.nvl(GlobalCommon.ApplicationCache.Get(key));

            if (cachetoken != "")
            {
                if (cachetoken != token)
                {
                    var handler = new JwtSecurityTokenHandler();
                    var result  = handler.ReadJwtToken(cachetoken);
                    //如果本次超时时间比缓存中的大,则刷新缓存,并返回true,否则表明本次的token是过期的,返回false
                    if (expiretime > result.ValidTo)
                    {
                        GlobalCommon.ApplicationCache.Set(key, token, expiretime);
                        return(true);
                    }
                    else
                    {
                        msg = "TimeOut:Token已过期";
                        return(false);
                    }
                }
                else
                {
                    return(true);
                }
            }
            else
            {
                GlobalCommon.ApplicationCache.Set(key, token, expiretime);
                return(true);
            }
        }
Пример #25
0
        /// <summary>
        /// 未发布的工作流版本更新时先清除所有line&node&actions&Attributes&UserRules 数据
        /// </summary>
        /// <param name="up"></param>
        /// <param name="master"></param>
        protected void ClearWorkflowMaster(UnitParameter up, FrameDLRObject master)
        {
            var nodes = master.GetValue("Nodes") as List <FrameDLRObject>;

            if (nodes != null && nodes.Count > 0)
            {
                foreach (var node in nodes)
                {
                    DB.QuickDelete(up, "WorkFlowNode", new { NodeID = node.GetValue("NodeID") });
                    var attrObjs = node.GetValue("Attributes") as List <FrameDLRObject>;
                    foreach (var attr in attrObjs)
                    {
                        DB.QuickDelete(up, "WorkFlowNodeAttribute", new { ID = attr.GetValue("ID") });
                    }
                    var actObjs = node.GetValue("Actions") as List <FrameDLRObject>;
                    foreach (var act in actObjs)
                    {
                        DB.QuickDelete(up, "WorkFlowNodeAction", new { ID = act.GetValue("ID") });
                    }
                    var userRuleObjs = node.GetValue("UserRules") as List <FrameDLRObject>;
                    foreach (var rule in userRuleObjs)
                    {
                        DB.QuickDelete(up, "WorkFlowNodeUserRule", new { ID = rule.GetValue("ID") });
                    }
                }
            }
            var lines = master.GetValue("Lines") as List <FrameDLRObject>;

            if (lines != null && lines.Count > 0)
            {
                foreach (var line in lines)
                {
                    DB.QuickDelete(up, "WorkFlowLine", new { ID = line.GetValue("ID") });
                }
            }
        }
        protected override dynamic ParseCopyData(FrameDLRObject obj)
        {
            var rtn               = FrameDLRObject.CreateInstance();
            var table             = ComFunc.nvl(obj.GetValue("$table"));
            var to_table          = ComFunc.nvl(obj.GetValue("$to_table"));
            var if_not_exists     = BoolStd.IsNotBoolThen(obj.GetValue("$if_not_exists"), false);
            var filter            = obj.GetValue("$where");
            var sql               = "INSERT INTO #new_table_name##columns_to# SELECT #columns_from# FROM #table_name# #where#";
            var not_exists_filter = $"NOT EXISTS(SELECT 1 FROM {to_table} #where#)";
            var columns_to        = "";
            var columns_from      = "";
            var datacollection    = FrameDLRObject.CreateInstance(FrameDLRFlags.SensitiveCase);

            var where = "";
            var not_exists_where = where;

            if (filter != null && filter is FrameDLRObject)
            {
                where            = SqlWhere((FrameDLRObject)filter, datacollection);
                not_exists_where = where;
            }
            foreach (var k in obj.Keys.Where(w => !w.StartsWith("$")))
            {
                columns_from    += $",{ColumnFormat(k)} AS {ColumnFormat(ComFunc.nvl(obj.GetValue(k)))}";
                columns_to      += $",{ColumnFormat(ComFunc.nvl(obj.GetValue(k)))}";
                not_exists_where = not_exists_where.Replace(k, ComFunc.nvl(obj.GetValue(k)));
            }

            columns_to   = string.IsNullOrEmpty(columns_to) ? "" : $"({columns_to.Substring(1)})";
            columns_from = string.IsNullOrEmpty(columns_from) ? "*" : columns_from.Substring(1);
            if (if_not_exists)
            {
                not_exists_filter = !string.IsNullOrEmpty(not_exists_where) ? not_exists_filter.Replace("#where#", $"WHERE {not_exists_where}") : not_exists_filter.Replace("#where#", "");
                where             = string.IsNullOrEmpty(where) ? not_exists_filter : where + " AND " + not_exists_filter;
            }
            where = !string.IsNullOrEmpty(where) ? "WHERE " + where : "";


            sql = sql.Replace("#table_name#", table)
                  .Replace("#new_table_name#", to_table)
                  .Replace("#where#", where)
                  .Replace("#columns_to#", columns_to)
                  .Replace("#columns_from#", columns_from);

            rtn.sql   = sql;
            rtn.table = table;
            rtn.data  = datacollection;
            return(rtn);
        }
Пример #27
0
            /// <summary>
            /// 转化成DBExpress表达式
            /// </summary>
            /// <param name="this_data">当前行资料,用于解析表达式中@语句</param>
            /// <returns></returns>
            public FrameDLRObject ToDBExpress(FrameDLRObject this_data = null)
            {
                if (this_data == null)
                {
                    this_data = FrameDLRObject.CreateInstance();
                }

                FrameDLRObject express = FrameDLRObject.CreateInstance($@"{{
$acttype : 'Query',
$orderby : 'sort_no',
$table:'{TableName}'
                }}", EFFC.Frame.Net.Base.Constants.FrameDLRFlags.SensitiveCase);

                foreach (var c in ShowColumns)
                {
                    express.SetValue(c, true);
                }
                if (!string.IsNullOrEmpty(KeyColumn))
                {
                    express.SetValue(KeyColumn, true);
                }
                if (Filter.Count > 0)
                {
                    FrameDLRObject where = FrameDLRObject.CreateInstance(FrameDLRFlags.SensitiveCase);

                    foreach (var witem in Filter)
                    {
                        FrameDLRObject op_express = FrameDLRObject.CreateInstance(FrameDLRFlags.SensitiveCase);
                        var            op         = witem.Value.Op.StartsWith("$") ? witem.Value.Op : $"${witem.Value.Op}";
                        //如果w_value为@开头,则表示@后面为本表的栏位名称,则从当前行资料中获取对应的参数的值
                        if (witem.Value.Value.StartsWith("@"))
                        {
                            op_express.SetValue(op, this_data.GetValue(witem.Value.Value.Replace("@", "")));
                        }
                        else
                        {
                            op_express.SetValue(op, witem.Value.Value);
                        }

                        where.SetValue(witem.Key, op_express);
                    }

                    express.SetValue("$where", where);
                }
                return(express);
            }
Пример #28
0
            /// <summary>
            /// 判定是否为数字类型
            /// </summary>
            /// <param name="rule">key为传入参数名称,value为提示信息</param>
            /// <returns></returns>
            public virtual dynamic NumberValidation(FrameDLRObject rule)
            {
                var rtn = FrameDLRObject.CreateInstance(@"{
issuccess:true,
msg:''
}");

                foreach (var s in rule.Keys)
                {
                    var input = _logic.CallContext_Parameter[DomainKey.POST_DATA, s];
                    input = input == null ? _logic.CallContext_Parameter[DomainKey.QUERY_STRING, s] : input;
                    if (!DoubleStd.IsDouble(input))
                    {
                        rtn.issuccess = false;
                        rtn.msg       = rule.GetValue(s);
                        return(rtn);
                    }
                }
                return(rtn);
            }
Пример #29
0
 /// <summary>
 /// where操作
 /// </summary>
 /// <param name="json"></param>
 /// <returns></returns>
 public DBExpress Where(FrameDLRObject json)
 {
     if (this.express.GetValue("$where") != null)
     {
         var obj = this.express.GetValue("$where");
         if (obj is FrameDLRObject)
         {
             var dobj = (FrameDLRObject)obj;
             foreach (var k in json.Keys)
             {
                 dobj.SetValue(k, json.GetValue(k));
             }
         }
     }
     else
     {
         this.express.SetValue("$where", json);
     }
     return(this);
 }
Пример #30
0
        /// <summary>
        /// 获取SHA算法的Sign签名
        /// </summary>
        /// <param name="obj"></param>
        /// <returns></returns>
        public static string GenSHASignKey(FrameDLRObject obj, Encoding encoding)
        {
            SortedDictionary <string, object> p = new SortedDictionary <string, object>();

            foreach (var k in obj.Keys)
            {
                p.Add(k, obj.GetValue(k));
            }
            string buff = "";

            foreach (KeyValuePair <string, object> pair in p)
            {
                if (pair.Key != "sign" && pair.Value.ToString() != "")
                {
                    buff += pair.Key + "=" + pair.Value + "&";
                }
            }
            buff = buff.Trim('&');

            return(GenSHASignKey(buff, encoding));
        }