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 = "应用更新成功" }); }
/// <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)); } }
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); }
/// <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(); }
/// <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); }
/// <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)); }
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); } }
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); }
/// <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()); }
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))); } } }
/// <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; }
/// <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); }
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); } } }
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); }
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); }
/// <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); } }
/// <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); } }
/// <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); }
/// <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); }
/// <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); }
/// <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); }
/// <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)); }