object CallEvent(string id) { var data_str = ComFunc.nvl(PostDataD.this_data).Replace(" ", "+"); var this_data_base64str = ComFunc.IsBase64Then(data_str); string this_data_str = ComFunc.UrlDecode(this_data_base64str); var this_data = FrameDLRObject.IsJsonThen(this_data_str); var up = DB.NewDBUnitParameter(); return(DoCallEvent(up, id, this_data)); }
/// <summary> /// 从加密信息中获取用户信息 /// </summary> /// <param name="session_key"></param> /// <param name="rawData"></param> /// <param name="signature"></param> /// <param name="encryptedData"></param> /// <param name="iv"></param> /// <returns></returns> public FrameDLRObject GetUserInfo(string session_key, string rawData, string signature, string encryptedData, string iv) { if (!VaildateUserInfo(rawData, signature, session_key)) { return(null); } var str = Decrypt(encryptedData, iv, session_key); GlobalCommon.Logger.WriteLog(LoggerLevel.DEBUG, $"微信小程序校验解密后的串:{str}"); return(FrameDLRObject.IsJsonThen(str, null, FrameDLRFlags.SensitiveCase)); }
object CopyData() { var up = DB.NewDBUnitParameter(); var copy_json = FrameDLRObject.IsJsonThen(File.ReadAllText($"{ServerInfo.ServerRootPath}/DBExpressScripts/CopyData_IC_Staff.json")); if (copy_json != null) { DB.Excute(up, copy_json, true); } return(new { code = "success", msg = "" }); }
public override object post() { var data = PostDataD.data; if (!(data is IEnumerable <object>)) { return new { code = "failed", msg = "参数格式不正确", } } ; var datalist = (IEnumerable <object>)data; foreach (dynamic item in datalist) { if (ComFunc.nvl(item.no) == "") { return new { code = "failed", msg = "编号不可为空" } } ; if (ComFunc.nvl(item.name) == "") { return new { code = "failed", msg = "名称不可为空" } } ; if (ComFunc.nvl(item.type) == "") { return new { code = "failed", msg = "事件类型不可为空" } } ; if (ComFunc.nvl(item.at) == "") { return new { code = "failed", msg = "事件触发时机不可为空" } } ; if (ComFunc.nvl(item.at) == "New") { if (ComFunc.nvl(item.parent) != "") { return(new { code = "failed", msg = "触发时机为“全新事件”的时候不可以有父事件" }); } } else { if (ComFunc.nvl(item.parent) == "") { return(new { code = "failed", msg = "触发时机为不为“全新事件”的时候必须设定父事件" }); } } if (ComFunc.nvl(item.request_parameters) != "") { var dobj = FrameDLRObject.IsJsonThen(ComFunc.nvl(item.request_parameters), null, FrameDLRFlags.SensitiveCase); if (dobj == null) { return new { code = "failed", msg = "参数设定格式不正确" } } ; else { if (ComFunc.nvl(dobj.RequestUrl) == "") { return(new { code = "failed", msg = "参数设定缺少请求URL" }); } if (ComFunc.nvl(dobj.RequestMethod) == "") { return(new { code = "failed", msg = "参数设定缺少请求Method" }); } } } } BeginTrans(); var up = DB.NewDBUnitParameter(); var p_list = (from t in DB.LamdaTable(up, "EXTEND_EVENTS", "a") where t.EventCategory == "System" select t).GetQueryList(up); var exists_list = (from t in DB.LamdaTable(up, "EXTEND_EVENTS", "a") where t.EventCategory == "Customerize" select new { t.EventNo }).GetQueryList(up); var allow_p_nos = p_list.Select(d => ComFunc.nvl(d.GetValue("EventNo"))).ToArray(); var exists_nos = exists_list.Select(d => ComFunc.nvl(d.GetValue("EventNo"))).ToArray(); foreach (dynamic item in datalist) { if (ComFunc.nvl(item.parent) != "" && !allow_p_nos.Contains((string)item.parent)) { return(new { code = "failed", msg = $"{item.no}该编号的父事件不被支持" }); } if (exists_nos.Contains((string)item.no)) { return(new { code = "failed", msg = $"{item.no}该编号的事件已存在" }); } } foreach (dynamic item in datalist) { item.add_id = TokenPayLoad.ID; item.add_ip = ClientInfo.IP; item.add_name = ComFunc.nvl(TokenPayLoad["username"]); item.add_time = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); item.last_id = ClientInfo.IP; item.last_ip = ComFunc.nvl(TokenPayLoad["username"]); item.last_name = TokenPayLoad.ID; item.last_time = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); DB.QuickInsert(up, "EXTEND_EVENTS", new { EventNo = item.no, EventName = item.name, EventCategory = "Customerize", EventType = item.type, EventAt = item.at, ParentEventNo = item.parent, EventDesc = item.desc, EventParameters = item.request_parameters, add_id = TokenPayLoad.ID, add_ip = ClientInfo.IP, add_name = ComFunc.nvl(TokenPayLoad["username"]), add_time = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"), last_id = ClientInfo.IP, last_ip = ComFunc.nvl(TokenPayLoad["username"]), last_name = TokenPayLoad.ID, last_time = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") }); } CommitTrans(); return(new { code = "success", msg = "操作成功" }); }
/// <summary> /// 执行事件 /// </summary> /// <param name="up"></param> /// <param name="id"></param> /// <param name="this_data"></param> /// <returns></returns> private object DoCallEvent(UnitParameter up, string id, object this_data) { var list = (from t in DB.LamdaTable(up, "EXTEND_EVENTS", "a") where t.EventNo == id select new { no = t.EventNo, name = t.EventName, category = t.EventCategory, type = t.EventType, at = t.EventAt, parent = t. desc = t.EventDesc, parameters = t.EventParameters }).GetQueryList(up); if (list.Count <= 0) { return(new { code = "failed", msg = "执行失败:事件设定不存在" }); } dynamic info = list.First(); var event_call = new EventsCall(); var parameters = FrameDLRObject.IsJsonThen(info.parameters, null, FrameDLRFlags.SensitiveCase); if (parameters == null) { return(new { code = "failed", msg = "执行失败:确少执行参数" }); } string url = ComFunc.nvl(parameters.RequestUrl); string method = ComFunc.nvl(parameters.RequestMethod); FrameDLRObject query_string = ComFunc.nvl(parameters.RequestQueryString) == "" ? null : parameters.RequestQueryString; FrameDLRObject header = ComFunc.nvl(parameters.RequestHeader) == "" ? null : parameters.RequestHeaders; FrameDLRObject post_data = ComFunc.nvl(parameters.RequestPostData) == "" ? null : parameters.RequestPostData; var call_context = new EventsCall.EventsCallContext(); call_context.RowData = ComFunc.Base64Code(FrameDLRObject.CreateInstance(this_data, FrameDLRFlags.SensitiveCase).tojsonstring()); call_context.Login_ID = TokenPayLoad.ID; call_context.Login_Name = ComFunc.nvl(TokenPayLoad["username"]); if (url.StartsWith("~")) { return(CallLocalLogic(url.Replace("~", ""), method, header, query_string, post_data)); } else { if (query_string != null) { var qs = ""; foreach (var item in query_string.Items) { qs += $"{item.Key}={ComFunc.UrlEncode(item.Value)}&"; } qs = qs.Length > 0 ? qs.Substring(0, qs.Length - 1) : ""; if (url.IndexOf("?") > 0) { url += $"&{qs}"; } else { url += $"?{qs}"; } } string result = event_call.Send(url, method, call_context, header, post_data); if (result == null) { return(new { code = "failed", msg = "执行失败:返回结果为空" }); } else if (result.StartsWith("Failed:")) { return(new { code = "failed", msg = $"执行失败:{result}" }); } else { return(FrameDLRObject.IsJsonThen(result, null, FrameDLRFlags.SensitiveCase)); } } }
/// <summary> /// 解析表达式 /// </summary> /// <param name="express"></param> /// <returns></returns> public RefExpressResult ParseExpress(string express) { var rtn = new RefExpressResult(); if (string.IsNullOrEmpty(express)) { return(rtn); } var jsonitem = FrameDLRObject.IsJsonThen(express, null, FrameDLRFlags.SensitiveCase); if (jsonitem != null) { rtn.TableName = ComFunc.nvl(jsonitem.GetValue("$ref_table")); rtn.KeyColumn = ComFunc.nvl(jsonitem.GetValue("$ref_key_column")); var show = jsonitem.GetValue("$show"); if (show != null && show is IEnumerable <object> ) { rtn.ShowColumns.AddRange(((IEnumerable <object>)show).Select(d => (string)ComFunc.nvl(d))); } var where = jsonitem.GetValue("$where"); if (where != null && where is FrameDLRObject) { var wobj = (FrameDLRObject) where; foreach (var item in wobj.Items) { var op = (FrameDLRObject)item.Value; rtn.Filter.Add(item.Key, new FilterEntity(op.Items[0].Key, ComFunc.nvl(op.Items[0].Value))); } } } else { var arr = express.Split("->"); if (arr.Length < 2) { return(null); } var re_table = new Regex(@"[A-Za-z0-9_.,]+(?=\[)"); var re_w = new Regex(@"(?<=\[)[A-Za-z0-9_=><:,@]+(?=\])"); var ref1 = arr[0]; var show_ref = arr[1]; var w_str = re_w.Match(ref1).Value; var table_str = w_str != "" ? re_table.Match(ref1).Value : ref1; var table_strs = table_str.Split('.', StringSplitOptions.RemoveEmptyEntries); var table_ref = table_strs[0]; var col_ref = table_strs.Length > 1 ? table_strs[1] : ""; rtn.TableName = table_ref; rtn.KeyColumn = col_ref; foreach (var s in show_ref.Split(",", StringSplitOptions.RemoveEmptyEntries)) { rtn.ShowColumns.Add(s); } foreach (var w in w_str.Split(",", StringSplitOptions.RemoveEmptyEntries)) { var w_strs = w.Split(new string[] { ":", "=", ">", ">=", "<", "<=" }, StringSplitOptions.RemoveEmptyEntries); var w_column = w_strs.ElementAt(0); var w_value = w_strs.ElementAt(1); var w_op = w.Replace(w_column, "").Replace(w_value, ""); rtn.Filter.Add(w_column, new FilterEntity(w_op, w_value)); } } return(rtn); }