/// <summary> /// 发货指令 /// </summary> /// <param name="hw_contract_no">华为合同号,即PO单号</param> /// <param name="items">物料数组,结构{ /// PROD_CODE_SALE:"华为产品Item,即待发货的华为物料编码,必填,来自PO单", /// PROD_CODE_CUST:"客户Item,即中邮的物料编码,非必填,来自PO单,不填时默认为空", /// CUST_PURCHASE_ITEM:"客户采购凭证号,由客户定义,匹配到客户采购凭证的唯一一行数据。后面发货状态查询时可以回传,非必填", /// CUST_PURCHASE_QUANTITY:"客户采购数量,必填", /// CUST_PURCHASE_UNIT_PRICE:"客户采购单价(含税人民币),非必填", /// SHIPPING_TO_WAREHOUSE_ID:"目标仓库编码(唯一标识)。编码为中邮的编码,必填", /// COMMENTS:"备注,非必填", /// FREE_TEXT:"扩展文本信息,用于中邮保存自己的资料信息,长度不超过1000个字符,可以保存发货单,分货单号等资料信息,火猫发货涨停查询时可以回传,非必填" /// }</param> /// <returns>如果缺少参数则返回null</returns> public string CreatDelivery(string hw_contract_no, params object[] items) { if (string.IsNullOrEmpty(hw_contract_no)) { return(null); } if (items == null && items.Length <= 0) { return(null); } var url = $"{Server_URL}/delivery/create"; var data = FrameDLRObject.CreateInstance(FrameDLRFlags.SensitiveCase); data.USER_ID = User_ID; data.CUST_ID = Cust_ID; data.HW_CONTRACT_NO = hw_contract_no; data.CUST_CONTRACT_NO = null; var list = new List <object>(); foreach (var item in items) { list.Add(FrameDLRObject.CreateInstance(item, FrameDLRFlags.SensitiveCase)); } data.ITEMS = list; return(Send(url, data)); }
private dynamic GetSql(UnitParameter arg) { var rtn = FrameDLRObject.CreateInstance(); rtn.sql = ComFunc.nvl(arg["___host_sql___"]); return(rtn); }
/// <summary> /// 呼叫js脚本 /// </summary> /// <param name="scriptstr"></param> /// <param name="input"></param> /// <param name="outputkey"></param> /// <param name="others"></param> /// <returns></returns> public object Call(string scriptstr, FrameDLRObject input, string outputkey, params KeyValuePair <string, object>[] others) { try { var jse = _logic.CallContext_ResourceManage.CreateInstance <HostJs>(); input = input == null?FrameDLRObject.CreateInstance() : input; var lp = others.ToList(); lp.Add(new KeyValuePair <string, object>("input", input.ToDictionary())); jse.Evaluate(scriptstr, lp.ToArray()); var obj = jse.GetOutObject(outputkey); if (obj is Dictionary <string, object> ) { return(FrameDLRObject.CreateInstance((Dictionary <string, object>)obj)); } else { return(obj); } } catch (JavascriptException jex) { var strmsg = new StringBuilder(); strmsg.AppendLine(jex.V8SourceLine); strmsg.AppendLine(jex.V8StackTrace); throw new Exception(strmsg.ToString(), jex); } }
private object copyOrderItem(dynamic source) { var rtn = FrameDLRObject.CreateInstance(); rtn.order_no = source.order_no; rtn.order_region = source.order_region; rtn.region_name = source.region_name; rtn.area_num = source.area_num; rtn.area_name = source.area_name; rtn.build_time = source.build_time; rtn.order_deliv_time = source.order_deliv_time; rtn.build_name = source.build_name; rtn.build_tel = source.build_tel; rtn.dept_code = source.dept_code; rtn.dept_name = source.dept_name; rtn.dist_code = source.dist_code; rtn.dist_name = source.dist_name; rtn.order_money = source.order_money; rtn.deliv_name = source.deliv_name; rtn.deliv_mobile = source.deliv_mobile; rtn.deliv_address = source.deliv_address; rtn.is_meeting = source.is_meeting; rtn.meeting_name = source.meeting_name; rtn.pay_mode = source.pay_mode; rtn.all_pay_money = source.all_pay_money; rtn.order_status = "HZTDFH";//待发货 rtn.hongxun_order_no = source.hongxun_order_no; return(rtn); }
public virtual object QueryByPage(Dictionary <string, object> sqlobj, int topage, int count_per_page, Dictionary <string, object> data) { if (sqlobj == null) { sqlobj = new Dictionary <string, object>(); } var dsql = FrameDLRObject.CreateInstance(sqlobj); _up.SetValue("___host_sql___", ComFunc.nvl(dsql.sql)); _up.SetValue("___host_orderby___", ComFunc.nvl(dsql.orderby)); _up.SetValue("___host_pre___", ComFunc.nvl(dsql.presql)); _up.SetValue("___host_after___", ComFunc.nvl(dsql.aftersql)); if (data != null) { foreach (var item in data) { _up.SetValue(item.Key, item.Value); } } _up.Count_Of_OnePage = count_per_page; _up.ToPage = topage; var udc = _logic.DB.QueryByPage <HostQueryByPageUnit>(_up, ""); var list = udc.QueryData <FrameDLRObject>(); list = list == null ? new List <FrameDLRObject>() : list; var rtn = FrameDLRObject.CreateInstance(FrameDLRFlags.SensitiveCase); rtn.data = list; rtn.TotalPage = udc.TotalPage; rtn.TotalRow = udc.TotalRow; rtn.Count_Of_OnePage = udc.Count_Of_OnePage; rtn.CurrentPage = udc.CurrentPage; return(((FrameDLRObject)rtn).ToDictionary()); }
/// <summary> /// 登入时通过Code获取到登入人的UserID /// </summary> /// <param name="code">传入,Code</param> /// <param name="userTicket">传出,ticketId可以让你在7200s之内获取更加详细的用户信息</param> /// <param name="deviceId">传出,登入用设备ID</param> /// <param name="openId">非企业成员OpenID</param> /// <returns></returns> public string GetUserIdByCode(string code, ref string userTicket, ref string deviceId, ref string openId) { /* 企业成员rtn * { * "errcode": 0, * "errmsg": "ok", * "UserId":"USERID", * "DeviceId":"DEVICEID", * "user_ticket": "USER_TICKET", * "expires_in":7200 * } */ /*非企业成员Rtn * { * "errcode": 0, * "errmsg": "ok", * "OpenId":"OPENID", * "DeviceId":"DEVICEID" * } */ FrameDLRObject obj = CallWeixinServer(string.Format(GetUserTicketUrl, Access_Token, code)); GlobalCommon.Logger.WriteLog(LoggerLevel.DEBUG, "***********************" + obj.ToJSONString()); dynamic dobj = obj; string userId = ComFunc.nvl(dobj.userid); deviceId = ComFunc.nvl(dobj.DeviceId); userTicket = ComFunc.nvl(dobj.user_ticket); openId = ComFunc.nvl(dobj.OpenId); return(userId); }
public new bool delete(string id) { var up = DB.NewDefaultDBUnitParameter <SqliteAccess>(); BeginTrans(); DB.Excute(up, FrameDLRObject.CreateInstanceFromat(@"{ $acttype : 'Delete', $table : 'Map_RoleFunction', $where:{ RoleUID:{0} } }", id)); DB.Excute(up, FrameDLRObject.CreateInstanceFromat(@"{ $acttype : 'Delete', $table : 'Map_LoginRole', $where:{ RoleUID:{0} } }", id)); DB.Excute(up, FrameDLRObject.CreateInstanceFromat(@"{ $acttype : 'Delete', $table : 'RoleInfo', $where:{ RoleUID:{0} } }", id)); CommitTrans(); SetRefreshCacheRoute($"/role/{id}", "/role"); return(true); }
/// <summary> /// 执行update操作 /// </summary> /// <typeparam name="TSource"></typeparam> /// <param name="source"></param> public virtual void DoUpdate <TSource>(LinqDLR2Sql <TSource> source, object columns) { if (columns == null) { throw new ArgumentNullException("columns"); } if (CurrentOperation == LinqDLR2SQLOperation.SelectJoin || CurrentOperation == LinqDLR2SQLOperation.SelectMany) { throw new NotSupportedException("当前模式不支持Update操作"); } FrameDLRObject columnsobj = FrameDLRObject.CreateInstance(columns); var columnsstr = ""; foreach (var key in columnsobj.Keys) { columnsstr += $"{string.Format(SqlFlags.Column_Quatation, key)}={Convert2Express(columnsobj.GetValue(key))},"; } columnsstr = columnsstr == "" ? "" : columnsstr.Substring(0, columnsstr.Length - 1); var sql = "UPDATE {tables} SET {columns} {where}"; var alianname = string.IsNullOrEmpty(source.AliasName) ? "" : $"{source.AliasName}"; var tables = source.Table; var where = (Lastwhere == null || string.IsNullOrEmpty(Lastwhere.Result)) ? "" : $"WHERE {Lastwhere.Result.Replace($"{alianname}.", "")}"; CurrentSQL = sql.Replace("{tables}", tables).Replace("{columns}", columnsstr).Replace("{where}", where); }
/// <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); }
public dynamic ToJSONObject() { var rtn = FrameDLRObject.CreateInstance(FrameDLRFlags.SensitiveCase); Dictionary <string, object> d = new Dictionary <string, object>(); foreach (var item in _d) { d.Add(item.Key, item.Value.Clone()); } rtn.content = d; Dictionary <string, object> dbyurl = new Dictionary <string, object>(); foreach (var item in _dbyurl) { dbyurl.Add(item.Key, item.Value.Clone()); } rtn.content_by_url = dbyurl; Dictionary <string, object> wildcardsmap = new Dictionary <string, object>(); foreach (var item in _wildcardsmap) { wildcardsmap.Add(item.Key, item.Value); } rtn.wild_cards_map = wildcardsmap; return(rtn); }
// This method gets called by the runtime. Use this method to configure the HTTP request pipeline. public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory) { var options = FrameDLRObject.CreateInstance(); //Logic参数设定 options.BusinessAssemblyName = "RestAPISample"; options.WeixinHome = "weixinhome"; //EWRA自定义模块加载 options.RestAPIModuleName = typeof(MyWebModule).FullName; //Logic参数设定 options.RestAPILogicAssemblyName = "RestAPISample"; //RestAPI模块启用定义 options.RestAPILogicBaseType = typeof(MyRestLogic); //Tag模块启动定义 options.TagAssembly = "RestAPISample"; options.RestAPIMainVersion = "v1.0"; //默认起始路由 options.DefaultStartRoute = MyConfig.GetConfiguration("Server", "DefaultStartRoute"); //设置apidoc的路由 options.APIDocRoute = MyConfig.GetConfiguration("Server", "APIDocRoute"); //设置是否显示api doc options.IsShowRestAPIDoc = BoolStd.IsNotBoolThen(MyConfig.GetConfiguration("Server", "IsShowAPIDoc"), false); //设置中间件参数 options.MiddleWareOptionsType = typeof(MyWebOptions); app.UseWeixinEWRAMiddleWare((FrameDLRObject)options); }
public static APIPointContext Create(string assemblyName, string mainversion) { var rtn = new APIPointContext(); rtn.MainVersion = mainversion; Assembly asm = Assembly.Load(new AssemblyName(assemblyName)); Type[] ts = asm.GetTypes(); var reg = new Regex(@"(?<=.)V\d+._\d+", RegexOptions.IgnoreCase); var list = ts.Where(p => p.GetTypeInfo().IsSubclassOf(typeof(PointLogic))).ToList(); foreach (var t in list.Where(p => p.GetTypeInfo().BaseType == typeof(PointLogic))) { var ple = EntryPointEntity.CreateFrom(t, list); if (!rtn._d_entry_.ContainsKey(ple.APIVersion)) { rtn._d_entry_.Add(ple.APIVersion, ple); } } rtn.RouteDesc = FrameDLRObject.CreateInstance(FrameDLRFlags.SensitiveCase); rtn.MainRouteDesc = FrameDLRObject.CreateInstance(FrameDLRFlags.SensitiveCase); foreach (var item in rtn._d_entry_) { rtn.RouteDesc.SetValue(item.Value.APIVersion, item.Value.RouteDesc); } rtn.MainRouteDesc = (FrameDLRObject)rtn.RouteDesc.GetValue(rtn.MainVersion); return(rtn); }
/// <summary> /// 呼叫本地logic /// </summary> /// <param name="url">请求的路由,格式:/xxxx/yyyy</param> /// <param name="method">请求的method,post,get,patch等</param> /// <param name="header">额外附加的header信息</param> /// <param name="query_string">额外附加的query_string信息</param> /// <param name="post_data">额外附加的post_data信息</param> /// <returns></returns> public object CallLocalLogic(string url, string method, FrameDLRObject header = null, FrameDLRObject query_string = null, FrameDLRObject post_data = null) { object obj = new EWRAData(); var dp = CallContext_Parameter.DeepCopy <EWRAParameter>(); dp.RequestUri = new Uri(ServerInfo.SiteHostUrl + url); dp.RequestRoute = url; dp.RestResourcesArray = url.Split('/'); dp.MethodName = method; if (header != null) { foreach (var item in header.Items) { dp.SetValue(DomainKey.HEADER, item.Key, item.Value); } } if (query_string != null) { foreach (var item in query_string.Items) { dp.SetValue(DomainKey.QUERY_STRING, item.Key, item.Value); } } if (post_data != null) { foreach (var item in post_data.Items) { dp.SetValue(DomainKey.POST_DATA, item.Key, item.Value); } } GlobalCommon.Proxys["busi"].CallModule(ref obj, new object[] { dp }); return(((EWRAData)obj).Result); }
/// <summary> /// 执行发货状态查询 /// </summary> /// <param name="hw_contract_no">华为合同号,即PO单号</param> /// <param name="cust_contract_no">中邮合同号,即PO单号</param> /// <param name="asd_start_date">华为实际发货开始时间,默认为当前时间往前推3天</param> /// <param name="asd_end_date">华为实际发货结束时间,默认为当天</param> /// <param name="shipping_status">华为发货的状态:0:unshipped,1:shipped,2:all</param> /// <param name="topage">翻页,默认第一页</param> /// <param name="pagesize">每页资料笔数,默认100</param> /// <returns></returns> public string QueryDelivery(string hw_contract_no, string cust_contract_no, DateTime?asd_start_date = null, DateTime?asd_end_date = null, string shipping_status = "1", int topage = 1, int pagesize = 100) { var url = $"{Server_URL}/asn"; var data = FrameDLRObject.CreateInstance(FrameDLRFlags.SensitiveCase); data.cust_id = Cust_ID; data.delivery_id = ""; data.packing_list_no = ""; data.hw_contract_no = hw_contract_no; data.cust_contract_no = cust_contract_no; data.cust_purchase_no = ""; data.prod_code_sale = ""; data.prod_model_ext = ""; data.cust_purchase_item = ""; data.asd_start_date = asd_start_date == null ?$"{DateTime.Now.AddDays(-3).ToString("yyyy-MM-dd")} 00:00:00" : asd_start_date.Value.ToString("yyyy-MM-dd HH:mm:ss"); data.asd_end_date = asd_end_date == null ? $"{DateTime.Now.ToString("yyyy-MM-dd")} 23:59:59" : asd_end_date.Value.ToString("yyyy-MM-dd HH:mm:ss"); data.shipping_status = shipping_status; data.page_size = "" + pagesize; data.current_page = "" + topage; return(Send(url, data)); }
/// <summary> /// 用户支付完成后,获取该用户的 UnionId,无需用户授权 /// </summary> /// <param name="openid">传入,支付用户唯一标识</param> /// <param name="transaction_id">微信支付订单号</param> /// <param name="mch_id">微信支付分配的商户号,和商户订单号配合使用</param> /// <param name="out_trade_no">微信支付商户订单号,和商户号配合使用</param> /// <returns></returns> public FrameDLRObject GetPaidUnionId(string openid, string transaction_id = "", string mch_id = "", string out_trade_no = "") { /* 成功 rtn * { * unionid string 用户唯一标识,调用成功后返回 * errcode number 错误码 * errmsg string 错误信息 * } * 失败{ * errcode number 错误码 * errmsg string 错误信息 * } */ var url = string.Format(GetUnionIDByPayUrl, AppSecret, openid); if (!string.IsNullOrEmpty(transaction_id)) { url += $"&transaction_id={transaction_id}"; } if (!string.IsNullOrEmpty(mch_id)) { url += $"&mch_id={mch_id}"; } if (!string.IsNullOrEmpty(out_trade_no)) { url += $"&out_trade_no={out_trade_no}"; } FrameDLRObject obj = CallWeixinServer(url, "get"); GlobalCommon.Logger.WriteLog(LoggerLevel.DEBUG, "***********************GetPaidUnionId result=" + obj.ToJSONString()); return(obj); }
private RsaSecurityKey GetRSAPublicKey() { if (string.IsNullOrEmpty(publicKey) && !string.IsNullOrEmpty(PublicKeySavePath)) { var physicalPath = PublicKeySavePath.Replace("~", ServerRootPath); if (File.Exists(physicalPath)) { var content = File.ReadAllText(physicalPath); publicKey = content; RSAParameters rp = ((FrameDLRObject)FrameDLRObject.CreateInstance(content, FrameDLRFlags.SensitiveCase)).ToModel <RSAParameters>(Encoding.Unicode); publicSK = new RsaSecurityKey(rp); } else { GlobalCommon.Logger.WriteLog(LoggerLevel.INFO, $"Rest验证读取PublicKey文件失败,原因是目录文件{PublicKeySavePath}不存在,请给出正确的公钥文件路径(请在验证的Logic中重载PublicKeySavePath的get方法),没有公钥会导致验证失败甚至出现异常"); } } if (string.IsNullOrEmpty(publicKey)) { GlobalCommon.Logger.WriteLog(LoggerLevel.INFO, $"Rest验证公钥不存在,没有公钥会导致验证失败甚至出现异常,如果本API服务提供生成Token的功能则请不要重载PublicKeySavePath和PrivateKeySavePath两个属性的get方法或在get时返回空串,如果不是则请提供正确的PublicKeySavePath路径值"); } return(publicSK); }
/// <summary> /// 发送模板消息,相关参数和回传,查看https://developers.weixin.qq.com/miniprogram/dev/api-backend/templateMessage.send.html /// </summary> /// <param name="touser"></param> /// <param name="template_id"></param> /// <param name="form_id"></param> /// <param name="page"></param> /// <param name="emphasis_keyword"></param> /// <param name="data"></param> /// <returns></returns> public FrameDLRObject SendTemplateMsg(string touser, string template_id, string form_id, string page = "", string emphasis_keyword = "", params KeyValuePair <string, string>[] data) { var url = string.Format(SendCustomeServiceMsgUrl, Access_Token); var postdata = FrameDLRObject.CreateInstance(FrameDLRFlags.SensitiveCase); postdata.touser = touser; postdata.template_id = template_id; if (!string.IsNullOrEmpty(page)) { postdata.page = page; } postdata.form_id = form_id; if (data != null) { FrameDLRObject d = FrameDLRObject.CreateInstance(FrameDLRFlags.SensitiveCase); foreach (var item in data) { d.SetValue(item.Key, new { value = item.Value }); } postdata.data = d; } if (!string.IsNullOrEmpty(emphasis_keyword)) { postdata.emphasis_keyword = emphasis_keyword; } FrameDLRObject obj = CallWeixinServer(url, "post", "application/json", null, postdata); return(obj); }
public override object get(string no) { var up = DB.NewDefaultDBUnitParameter <SqliteAccess>(); UnitDataCollection re = DB.Excute(up, FrameDLRObject.CreateInstanceFromat(@"{ $acttype: 'Query', $table: 'FunctionInfo', $where:{ FunctionNo:{0} } }", no)); var list = re.QueryData <FrameDLRObject>(); if (list.Count() > 0) { dynamic t = list[0]; return(new { No = t.FunctionNo, Name = t.FunctionName, Level = t.FunctionLevel, Url = t.Url, IsMenu = t.IsMenu, Remark = t.Remark }); } else { return(null); } }
public bool Insert(string collectionname, FrameDLRObject item) { var collection = database.GetCollection <FrameDLRObject>(collectionname); collection.InsertOne(item); return(true); }
public override bool delete(string no) { var up = DB.NewDefaultDBUnitParameter <SqliteAccess>(); BeginTrans(); DB.Excute(up, FrameDLRObject.CreateInstanceFromat(@"{ $acttype : 'Delete', $table : 'Map_RoleFunction', $where:{ FunctionNo:{0} } }", no)); DB.Excute(up, FrameDLRObject.CreateInstanceFromat(@"{ $acttype : 'Delete', $table : 'FunctionInfo', $where:{ FunctionNo:{0} } }", no)); CommitTrans(); SetRefreshCacheRoute($"/functions/{no}"); return(true); }
public override object get(string id) { var up = DB.NewDefaultDBUnitParameter <SqliteAccess>(); UnitDataCollection re = DB.Excute(up, FrameDLRObject.CreateInstanceFromat(@"{ $acttype: 'Query', $table: 'RoleInfo', $where:{ RoleUID:{0} } }", id)); var list = re.QueryData <FrameDLRObject>(); if (list.Any()) { dynamic t = list[0]; return(new { Id = t.RoleUID, Name = t.RoleName, Remark = t.Remark }); } else { return(null); } }
public void SetValue(FrameDLRObject obj) { foreach (var key in obj.Keys) { SetValue(key, obj.GetValue(key)); } }
/// <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)); }
object delete(LogicData arg) { var rtn = FrameDLRObject.CreateInstance(@"{ issuccess:true, msg:'操作成功' }"); var no = ComFunc.nvl(arg["no"]); BeginTrans(); var up = DB.NewDBUnitParameter(); UnitDataCollection re = DB.Excute(up, FrameDLRObject.CreateInstanceFromat(@"{ $acttype : 'Query', $table : 'FunctionInfo', $where : { FunctionNo:{0} } }", no)); if (re.QueryTable.RowLength <= 0) { rtn.issuccess = false; rtn.msg = "待删除的功能不存在"; return(rtn); } up.SetValue("no", no); DB.NonQuery <FunctionUnit>(up, "delete"); CommitTrans(); return(rtn); }
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); }
object tree(LogicData ld) { var rtn = FrameDLRObject.CreateInstance(@"{ issuccess:true, msg:'' }"); var up = DB.NewDBUnitParameter(); var re = DB.Query <FunctionUnit>(up, "all"); var maxlevel = int.Parse(ComFunc.nvl(re.QueryTable[0, "maxlevel"])); var tree = new List <object>(); var items = re.QueryData <FrameDLRObject>(1); foreach (dynamic item in items) { if (item.functionlevel == 0) { var dobj = FrameDLRObject.CreateInstance(); dobj.text = item.functionname; dobj.url = item.url; dobj.no = item.functionno; dobj.nodes = LoadChildNodes(items, item.functionno, 1); dobj.level = item.functionlevel; dobj.remark = item.remark; tree.Add(dobj); } } rtn.data = tree; return(rtn); }
/// <summary> /// 异步调用微信服务 /// </summary> /// <typeparam name="RType"></typeparam> /// <param name="url"></param> /// <param name="method"></param> /// <param name="contenttype"></param> /// <param name="header"></param> /// <param name="data"></param> /// <param name="isneedcert"></param> /// <param name="callbackLA">只会调用Method为Post的方法</param> /// <param name="recorddata"></param> private void CallWeixinServerAsync <RType>(string url, string method = "POST", string contenttype = "text/json", FrameDLRObject header = null, FrameDLRObject data = null, bool isneedcert = false, string callbackLA = "", FrameDLRObject recorddata = null) { base.CallWeixinServerAsync <RType>(url, method, contenttype, header, data, isneedcert, (arg) => { _logic.CallLocalLogic(url, "POST", null, null, FrameDLRObject.CreateInstance(arg, FrameDLRFlags.SensitiveCase)); }, recorddata); }
public static void Test() { //JsEngineSwitcher engineSwitcher = JsEngineSwitcher.Instance; //IJsEngine js = null; //engineSwitcher.EngineFactories // .AddEFFCChakraCore(); //engineSwitcher.DefaultEngineName = EFFCChakraCoreJsEngine.EngineName; //js = engineSwitcher.CreateDefaultEngine(); //js.EmbedHostObject("f_p_0", "ych"); //js.EmbedHostObject("f_p_1", 22); //js.Execute($"var js ={{name:f_p_0,age:f_p_1}};"); //var re = js.GetVariableValue("js"); //var fec = FrameExposedObject.From(re.GetType()); //js.Dispose(); var md5 = ComFunc.getMD5_String(ComFunc.getMD5_String("sa").ToLower() + "8128").ToLower(); //var serializer = JsonSerializer.Create(); var json = "{name:'ych',age:22,schools:[{name:'小学',address:''},{name:'中学',address:''}],birth:{0}}"; var dobj = FrameDLRObject.CreateInstanceFromat(json, DateTime.Now); var jarray = "[{name:'小学',address:''},{name:'中学',address:''}]"; var aobj = FrameDLRObject.CreateArray(jarray); Console.WriteLine(dobj.tojsonstring()); }
/// <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 static void Test() { HttpWebRequest req = (HttpWebRequest)WebRequest.Create("http://10.15.1.245:5001/dms/jiangsu/orders_hongxun"); //HttpWebRequest req = (HttpWebRequest)WebRequest.Create("http://119.97.137.9:8080/dms/jiangsu/orders_hongxun"); //HttpWebRequest req = (HttpWebRequest)WebRequest.Create("http://localhost:5002/dms/jiangsu/orders_hongxun"); try { var orders = WebUtility.UrlEncode("PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiIHN0YW5kYWxvbmU9InllcyI/PgoKPHJlcXVlc3Q+CgogICAgPGhlYWRlcj4KCiAgICAgICAgPHJlc3BvbnNldGltZT4yMDE4MDMxMjE1Mjg1MzwvcmVzcG9uc2V0aW1lPgoKICAgICAgICA8c3VwcGxpZXJfbnVtPjk5MTAwMDE1PC9zdXBwbGllcl9udW0+CgogICAgPC9oZWFkZXI+CgogICAgPGJvZHk+CgogICAgICAgIDxyZXN1bHQ+MDwvcmVzdWx0PgoKICAgICAgICA8cmVzdWx0cmVtYXJrPuaJp+ihjOaIkOWKnzwvcmVzdWx0cmVtYXJrPgoKICAgICAgICA8b3JkZXJfbnVtYmVyPjQ8L29yZGVyX251bWJlcj4KCiAgICAgICAgPG9yZGVyX2xpc3RzPgoKICAgICAgICAgICAgPG9yZGVyPgoKICAgICAgICAgICAgICAgIDxob25neHVuX29yZGVyX25vPum4v+i/heiuouWNleWPtzwvaG9uZ3h1bl9vcmRlcl9ubz4KCiAgICAgICAgICAgICAgICA8b3JkZXJfbm8+QjIwMTgwMzEyMTUyMjQ5NzIwNjA3PC9vcmRlcl9ubz4KCiAgICAgICAgICAgICAgICA8b3JkZXJfc3RhdHVzPjwvb3JkZXJfc3RhdHVzPgoKICAgICAgICAgICAgICAgIDxvcmRlcl9yZWdpb24+MTI8L29yZGVyX3JlZ2lvbj4KCiAgICAgICAgICAgICAgICA8cmVnaW9uX25hbWU+5reu5a6JPC9yZWdpb25fbmFtZT4KCiAgICAgICAgICAgICAgICA8YXJlYV9udW0+MTIxMjwvYXJlYV9udW0+CgogICAgICAgICAgICAgICAgPGFyZWFfbmFtZT7mtp/msLQ8L2FyZWFfbmFtZT4KCiAgICAgICAgICAgICAgICA8YnVpbGRfdGltZT4yMDE4MDMxMjE1MjI0OTc5NjwvYnVpbGRfdGltZT4KCiAgICAgICAgICAgICAgICA8b3JkZXJfZGVsaXZfdGltZT4yMDE4MDMxMjE1MjMwNDwvb3JkZXJfZGVsaXZfdGltZT4KCiAgICAgICAgICAgICAgICA8YnVpbGRfbmFtZT7okovlubPlubM8L2J1aWxkX25hbWU+CgogICAgICAgICAgICAgICAgPGJ1aWxkX3RlbD4xODkwMDAwMDAwMDwvYnVpbGRfdGVsPgoKICAgICAgICAgICAgICAgIDxkZXB0X2NvZGU+MTIxNjQ4Mjg8L2RlcHRfY29kZT4KCiAgICAgICAgICAgICAgICA8ZGVwdF9uYW1lPua2n+awtOWVhuS4muW5v+WcuuaMh+WumuS4k+iQpeW6lzwvZGVwdF9uYW1lPgoKICAgICAgICAgICAgICAgIDxkaXN0X2NvZGU+MTIxMDQyMzA8L2Rpc3RfY29kZT4KCiAgICAgICAgICAgICAgICA8ZGlzdF9uYW1lPuabvuWNju+8iOe7j+mUgOWVhu+8iXRlc3Q8L2Rpc3RfbmFtZT4KCiAgICAgICAgICAgICAgICA8b3JkZXJfbW9uZXk+MjA8L29yZGVyX21vbmV5PgoKICAgICAgICAgICAgICAgIDxkZWxpdl9uYW1lPua3ruWuieWQiOS9nOWOhTE8L2RlbGl2X25hbWU+CgogICAgICAgICAgICAgICAgPGRlbGl2X21vYmlsZT4xMzkwNTE5NDU4MTwvZGVsaXZfbW9iaWxlPgoKICAgICAgICAgICAgICAgIDxkZWxpdl9hZGRyZXNzPuS4reWkrui3rzQw5Y+3MTA25Y2V5YWDPC9kZWxpdl9hZGRyZXNzPgoKICAgICAgICAgICAgICAgIDxpc19tZWV0aW5nPjA8L2lzX21lZXRpbmc+CgogICAgICAgICAgICAgICAgPG1lZXRpbmdfbmFtZT48L21lZXRpbmdfbmFtZT4KCiAgICAgICAgICAgICAgICA8cGF5X21vZGU+MTwvcGF5X21vZGU+CgogICAgICAgICAgICAgICAgPGFsbF9wYXlfbW9uZXk+MjA8L2FsbF9wYXlfbW9uZXk+CgogICAgICAgICAgICAgICAgPG11bHRpcGx5X3BheT4KCiAgICAgICAgICAgICAgICAgICAgPHBheT4KCiAgICAgICAgICAgICAgICAgICAgICAgIDxwYXlfdGltZT4yMDE4MDMxMjE1MjMwNDwvcGF5X3RpbWU+CgogICAgICAgICAgICAgICAgICAgICAgICA8cGF5X21vbmV5PjIwPC9wYXlfbW9uZXk+CgogICAgICAgICAgICAgICAgICAgICAgICA8cGF5X3R5cGU+RkxLPC9wYXlfdHlwZT4KCiAgICAgICAgICAgICAgICAgICAgPC9wYXk+CgogICAgICAgICAgICAgICAgPC9tdWx0aXBseV9wYXk+CgogICAgICAgICAgICAgICAgPGl0ZW1fbGlzdD4KCiAgICAgICAgICAgICAgICAgICAgPGl0ZW0+CgogICAgICAgICAgICAgICAgICAgICAgICA8ZGV0YWlsX251bT5TMjAxODAzMTIxNTIyNDk3MjA2MDg8L2RldGFpbF9udW0+CgogICAgICAgICAgICAgICAgICAgICAgICA8Z29vZHNfdHlwZT5TUExYX1NKWkQ8L2dvb2RzX3R5cGU+CgogICAgICAgICAgICAgICAgICAgICAgICA8Z29vZHNfbnVtPkpTWUQtRERTQ1NQUC1ERFNDU1hINi0wMjwvZ29vZHNfbnVtPgoKICAgICAgICAgICAgICAgICAgICAgICAgPGdvb2RzX3ByaWNlPjEwPC9nb29kc19wcmljZT4KCiAgICAgICAgICAgICAgICAgICAgICAgIDxnb29kc19jb3VudD4yPC9nb29kc19jb3VudD4KCiAgICAgICAgICAgICAgICAgICAgPC9pdGVtPgoKICAgICAgICAgICAgICAgIDwvaXRlbV9saXN0PgoKICAgICAgICAgICAgICAgIDxnaWZ0X2xpc3QvPgoKICAgICAgICAgICAgPC9vcmRlcj4KCiAgICAgICAgICAgIDxvcmRlcj4KCiAgICAgICAgICAgICAgICA8aG9uZ3h1bl9vcmRlcl9ubz7puL/ov4XorqLljZXlj7c8L2hvbmd4dW5fb3JkZXJfbm8+CgogICAgICAgICAgICAgICAgPG9yZGVyX25vPkIyMDE4MDMxMjE1MjQ0MDcyMDYxNTwvb3JkZXJfbm8+CgogICAgICAgICAgICAgICAgPG9yZGVyX3N0YXR1cz48L29yZGVyX3N0YXR1cz4KCiAgICAgICAgICAgICAgICA8b3JkZXJfcmVnaW9uPjEyPC9vcmRlcl9yZWdpb24+CgogICAgICAgICAgICAgICAgPHJlZ2lvbl9uYW1lPua3ruWuiTwvcmVnaW9uX25hbWU+CgogICAgICAgICAgICAgICAgPGFyZWFfbnVtPjEyMTI8L2FyZWFfbnVtPgoKICAgICAgICAgICAgICAgIDxhcmVhX25hbWU+5raf5rC0PC9hcmVhX25hbWU+CgogICAgICAgICAgICAgICAgPGJ1aWxkX3RpbWU+MjAxODAzMTIxNTI0NDAxOTg8L2J1aWxkX3RpbWU+CgogICAgICAgICAgICAgICAgPG9yZGVyX2RlbGl2X3RpbWU+MjAxODAzMTIxNTI0NTc8L29yZGVyX2RlbGl2X3RpbWU+CgogICAgICAgICAgICAgICAgPGJ1aWxkX25hbWU+6JKL5bmz5bmzPC9idWlsZF9uYW1lPgoKICAgICAgICAgICAgICAgIDxidWlsZF90ZWw+MTg5MDAwMDAwMDA8L2J1aWxkX3RlbD4KCiAgICAgICAgICAgICAgICA8ZGVwdF9jb2RlPjEyMTY0ODI4PC9kZXB0X2NvZGU+CgogICAgICAgICAgICAgICAgPGRlcHRfbmFtZT7mtp/msLTllYbkuJrlub/lnLrmjIflrprkuJPokKXlupc8L2RlcHRfbmFtZT4KCiAgICAgICAgICAgICAgICA8ZGlzdF9jb2RlPjEyMTA0MjMwPC9kaXN0X2NvZGU+CgogICAgICAgICAgICAgICAgPGRpc3RfbmFtZT7mm77ljY7vvIjnu4/plIDllYbvvIl0ZXN0PC9kaXN0X25hbWU+CgogICAgICAgICAgICAgICAgPG9yZGVyX21vbmV5PjMwPC9vcmRlcl9tb25leT4KCiAgICAgICAgICAgICAgICA8ZGVsaXZfbmFtZT7mt67lronlkIjkvZzljoUxPC9kZWxpdl9uYW1lPgoKICAgICAgICAgICAgICAgIDxkZWxpdl9tb2JpbGU+MTM5MDUxOTQ1ODE8L2RlbGl2X21vYmlsZT4KCiAgICAgICAgICAgICAgICA8ZGVsaXZfYWRkcmVzcz7kuK3lpK7ot680MOWPtzEwNuWNleWFgzwvZGVsaXZfYWRkcmVzcz4KCiAgICAgICAgICAgICAgICA8aXNfbWVldGluZz4wPC9pc19tZWV0aW5nPgoKICAgICAgICAgICAgICAgIDxtZWV0aW5nX25hbWU+PC9tZWV0aW5nX25hbWU+CgogICAgICAgICAgICAgICAgPHBheV9tb2RlPjE8L3BheV9tb2RlPgoKICAgICAgICAgICAgICAgIDxhbGxfcGF5X21vbmV5PjMwPC9hbGxfcGF5X21vbmV5PgoKICAgICAgICAgICAgICAgIDxtdWx0aXBseV9wYXk+CgogICAgICAgICAgICAgICAgICAgIDxwYXk+CgogICAgICAgICAgICAgICAgICAgICAgICA8cGF5X3RpbWU+MjAxODAzMTIxNTI0NTc8L3BheV90aW1lPgoKICAgICAgICAgICAgICAgICAgICAgICAgPHBheV9tb25leT4zMDwvcGF5X21vbmV5PgoKICAgICAgICAgICAgICAgICAgICAgICAgPHBheV90eXBlPkZMSzwvcGF5X3R5cGU+CgogICAgICAgICAgICAgICAgICAgIDwvcGF5PgoKICAgICAgICAgICAgICAgIDwvbXVsdGlwbHlfcGF5PgoKICAgICAgICAgICAgICAgIDxpdGVtX2xpc3Q+CgogICAgICAgICAgICAgICAgICAgIDxpdGVtPgoKICAgICAgICAgICAgICAgICAgICAgICAgPGRldGFpbF9udW0+UzIwMTgwMzEyMTUyNDQwNzIwNjE2PC9kZXRhaWxfbnVtPgoKICAgICAgICAgICAgICAgICAgICAgICAgPGdvb2RzX3R5cGU+U1BMWF9TSlpEPC9nb29kc190eXBlPgoKICAgICAgICAgICAgICAgICAgICAgICAgPGdvb2RzX251bT5KU1lELUREU0NTUFAtRERTQ1NYSDYtMDI8L2dvb2RzX251bT4KCiAgICAgICAgICAgICAgICAgICAgICAgIDxnb29kc19wcmljZT4xMDwvZ29vZHNfcHJpY2U+CgogICAgICAgICAgICAgICAgICAgICAgICA8Z29vZHNfY291bnQ+MzwvZ29vZHNfY291bnQ+CgogICAgICAgICAgICAgICAgICAgIDwvaXRlbT4KCiAgICAgICAgICAgICAgICA8L2l0ZW1fbGlzdD4KCiAgICAgICAgICAgICAgICA8Z2lmdF9saXN0Lz4KCiAgICAgICAgICAgIDwvb3JkZXI+CgogICAgICAgIDwvb3JkZXJfbGlzdHM+CgogICAgPC9ib2R5PgoKPC9yZXF1ZXN0Pg=="); var b = ComFunc.Base64DeCode(ComFunc.UrlDecode(orders)); var d = FrameDLRObject.CreateInstance(b); byte[] requestBytes = System.Text.Encoding.UTF8.GetBytes($"orders={orders}"); req.Method = "POST"; req.ContentType = "application/x-www-form-urlencoded"; req.ContentLength = requestBytes.Length; req.Timeout = 60000; req.ReadWriteTimeout = 60000; Stream requestStream = req.GetRequestStream(); requestStream.Write(requestBytes, 0, requestBytes.Length); requestStream.Close(); HttpWebResponse res = (HttpWebResponse)req.GetResponse(); StreamReader sr = new StreamReader(res.GetResponseStream(), System.Text.Encoding.UTF8); string backstr = sr.ReadToEnd(); requestStream = null; sr.Close(); res.Close(); } finally { req = null; } }