private string parseColumnExpress(string columnname, FrameDLRObject column) { var rtn = "`#name#` #datatype# #isnull# #default#"; var datatype = ""; var oridatatype = ""; var precision = -1; var scale = -1; var defaultvalue = ""; var nullexpress = ""; foreach (var k in column.Keys) { if (k.StartsWith("$")) { if (k.ToLower() == "$datatype") { oridatatype = ComFunc.nvl(column.GetValue(k)); datatype = convertExpressDataType2DBType(ComFunc.nvl(column.GetValue(k))); } else if (k.ToLower() == "$precision") { //file和picture类型默认给长度1000 if (ComFunc.nvl(column.GetValue("$datatype")).ToLower() == "file") { precision = 1000; } else if (ComFunc.nvl(column.GetValue("$datatype")).ToLower() == "picture") { precision = 1000; } else if (ComFunc.nvl(column.GetValue("$datatype")).ToLower() == "guid") { precision = 50; } else { precision = IntStd.IsNotIntThen(column.GetValue(k), -1); } } else if (k.ToLower() == "$scale") { scale = IntStd.IsNotIntThen(column.GetValue(k), -1); } else if (k.ToLower() == "$default") { defaultvalue = ComFunc.nvl(column.GetValue(k)); } else if (k.ToLower() == "$isnull") { var isnull = true; if (column.GetValue(k) is bool) { isnull = (bool)column.GetValue(k); } nullexpress = isnull ? "NULL" : "NOT NULL"; } } } defaultvalue = convertExpressDefault2DBDefault(defaultvalue, oridatatype); //datatype类型判断,添加precision和scale if (new string[] { "varchar", "nvarchar", "guid", "random", "random_code" }.Contains(oridatatype)) { if (precision > -1) { datatype = $"{datatype}({precision})"; } } else if (new string[] { "numberic" }.Contains(oridatatype)) { if (precision > -1) { datatype = $"{datatype}({precision},{(scale > -1 ? scale : 0)})"; } } else if (new string[] { "file", "picture" }.Contains(oridatatype.ToLower())) { if (precision > -1) { datatype = $"{datatype}({precision})"; } } rtn = rtn.Replace("#name#", columnname).Replace("#datatype#", datatype).Replace("#default#", defaultvalue).Replace("#isnull#", nullexpress); return(rtn); }
private void InitUPPage(UnitParameter p) { if (ComFunc.nvl(_logic.CallContext_Parameter.WebParam[DomainKey.POST_DATA, ToPage_Key]) != "") { p.ToPage = IntStd.ParseStd(_logic.CallContext_Parameter.WebParam[DomainKey.POST_DATA, ToPage_Key]); } else if (ComFunc.nvl(_logic.CallContext_Parameter.WebParam[DomainKey.QUERY_STRING, ToPage_Key]) != "") { p.ToPage = IntStd.ParseStd(_logic.CallContext_Parameter.WebParam[DomainKey.QUERY_STRING, ToPage_Key]); } //easyui使用的参数 else if (ComFunc.nvl(_logic.CallContext_Parameter.WebParam[DomainKey.QUERY_STRING, "page"]) != "") { p.ToPage = IntStd.ParseStd(_logic.CallContext_Parameter.WebParam[DomainKey.QUERY_STRING, "page"]); } else if (ComFunc.nvl(_logic.CallContext_Parameter.WebParam[DomainKey.POST_DATA, "page"]) != "") { p.ToPage = IntStd.ParseStd(_logic.CallContext_Parameter.WebParam[DomainKey.POST_DATA, "page"]); } else { p.ToPage = 1; } if (ComFunc.nvl(_logic.CallContext_Parameter.WebParam[DomainKey.POST_DATA, Count_per_Page_Key]) != "") { p.Count_Of_OnePage = IntStd.ParseStd(_logic.CallContext_Parameter.WebParam[DomainKey.POST_DATA, Count_per_Page_Key]); } else if (ComFunc.nvl(_logic.CallContext_Parameter.WebParam[DomainKey.QUERY_STRING, Count_per_Page_Key]) != "") { p.Count_Of_OnePage = IntStd.ParseStd(_logic.CallContext_Parameter.WebParam[DomainKey.QUERY_STRING, Count_per_Page_Key]); } //easyui使用的参数 else if (ComFunc.nvl(_logic.CallContext_Parameter.WebParam[DomainKey.QUERY_STRING, "rows"]) != "") { p.Count_Of_OnePage = IntStd.ParseStd(_logic.CallContext_Parameter.WebParam[DomainKey.QUERY_STRING, "rows"]); } else if (ComFunc.nvl(_logic.CallContext_Parameter.WebParam[DomainKey.POST_DATA, "rows"]) != "") { p.Count_Of_OnePage = IntStd.ParseStd(_logic.CallContext_Parameter.WebParam[DomainKey.POST_DATA, "rows"]); } else { p.Count_Of_OnePage = _logic.CallContext_Parameter.WebParam[DomainKey.CONFIG, Count_per_Page_Key] != null?IntStd.ParseStd(_logic.CallContext_Parameter.WebParam[DomainKey.CONFIG, Count_per_Page_Key]).Value : 10; } }
public bool DoSyncRetailSummaryPerDay(UnitParameter up, DateTime start, DateTime end, ref string msg) { //清除旧汇总资料 (from t in DB.LamdaTable(up, "RetailSummaryPerDay") where t.log_time >= start.ToString("yyyy-MM-dd HH:mm:ss") && t.log_time <= end.ToString("yyyy-MM-dd HH:mm:ss") select t).Delete(up); //获取前一日的汇入资料 var limit = 10000; var is_end = false; var to = 1; var retailSummary = new Dictionary <string, dynamic>(); do { up.ToPage = to; up.Count_Of_OnePage = limit; var exchangeresult = (from t in DB.LamdaTable(up, "APPExchange", "a") join t2 in DB.LamdaTable(up, "APPInfo", "b") on t.app_uid equals t2.uid join t3 in DB.LamdaTable(up, "UserInfo", "c") on t.mobile equals t3.mobile join t4 in DB.LamdaTable(up, "Retail", "d") on t3.recommend_uid equals t4.uid where t.log_time >= start.ToString("yyyy-MM-dd HH:mm:ss") && t.log_time <= end.ToString("yyyy-MM-dd HH:mm:ss") select new { t.app_uid, t.log_time, t.mobile, t.is_deal, t.is_register, t.is_perfection, retail_uid = t3.recommend_uid }).QueryByPage(up); var list = exchangeresult.QueryData <FrameDLRObject>(); //计算app var hit_group = from t in list group t by new { app_uid = t.GetValue("app_uid"), retail_uid = t.GetValue("retail_uid") } into g select new { app_uid = g.First().GetValue("app_uid"), retail_uid = g.First().GetValue("retail_uid"), require_count = g.First().GetValue("require_count"), hits = g.Count() }; var register_group = from t in list where t.is_register == 1 group t by new { app_uid = t.GetValue("app_uid"), retail_uid = t.GetValue("retail_uid") } into g select new { app_uid = g.First().GetValue("app_uid"), retail_uid = g.First().GetValue("retail_uid"), register_count = g.Count() }; var volume_group = from t in list where t.is_deal == 1 group t by new { app_uid = t.GetValue("app_uid"), retail_uid = t.GetValue("retail_uid") } into g select new { app_uid = g.First().GetValue("app_uid"), retail_uid = g.First().GetValue("retail_uid"), volume_count = g.Count() }; var perfection_group = from t in list where t.is_perfection == 1 group t by new { app_uid = t.GetValue("app_uid"), retail_uid = t.GetValue("retail_uid") } into g select new { app_uid = g.First().GetValue("app_uid"), retail_uid = g.First().GetValue("retail_uid"), perfection_count = g.Count() }; //点击量 foreach (var item in hit_group) { var key = ComFunc.nvl(item.app_uid) + ComFunc.nvl(item.retail_uid); if (!retailSummary.ContainsKey(key)) { var dobj = FrameDLRObject.CreateInstance(); dobj.uid = Guid.NewGuid().ToString(); dobj.retail_uid = item.retail_uid; dobj.app_uid = item.app_uid; dobj.log_time = end.ToString("yyyy-MM-dd"); dobj.add_id = "admin"; dobj.add_ip = ""; dobj.add_name = "admin"; dobj.add_time = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); retailSummary.Add(key, dobj); } retailSummary[key].hits = IntStd.IsNotIntThen(retailSummary[key].hits) + IntStd.IsNotIntThen(item.hits); } //注册量 foreach (var item in register_group) { var key = ComFunc.nvl(item.app_uid) + ComFunc.nvl(item.retail_uid); retailSummary[key].register_count = IntStd.IsNotIntThen(retailSummary[key].register_count) + IntStd.IsNotIntThen(item.register_count); } //成单量 foreach (var item in volume_group) { var key = ComFunc.nvl(item.app_uid) + ComFunc.nvl(item.retail_uid); retailSummary[key].volume_count = IntStd.IsNotIntThen(retailSummary[key].volume_count) + IntStd.IsNotIntThen(item.volume_count); } //完善量 foreach (var item in perfection_group) { var key = ComFunc.nvl(item.app_uid) + ComFunc.nvl(item.retail_uid); retailSummary[key].perfection_count = IntStd.IsNotIntThen(retailSummary[key].perfection_count) + IntStd.IsNotIntThen(item.perfection_count); } to++; is_end = exchangeresult.CurrentPage >= exchangeresult.TotalPage; } while (!is_end); //抓取分销商的提现记录 var withdrew_dic = (from t in DB.LamdaTable(up, "RetailAccountLog", "a") join t2 in DB.LamdaTable(up, "Retail", "b") on t.retail_uid equals t2.uid where t.action == "提现" && t.log_time >= start.ToString("yyyy-MM-dd HH:mm:ss") && t.log_time <= end.ToString("yyyy-MM-dd HH:mm:ss") group new { t, t2 } by new { t.retail_uid, t2.rebate, t2.royalty_category } into g select new { g.t.retail_uid, g.t2.rebate, g.t2.royalty_category, withdrew_sum = g.t.amount.sum() }).GetQueryList(up).ToDictionary(k => ComFunc.nvl(k.GetValue("retail_uid")), v => (dynamic)v); foreach (var item in retailSummary.Values) { if (DoubleStd.IsNotDoubleThen(item.register_count) != 0) { item.perfection_rate = DoubleStd.IsNotDoubleThen(item.perfection_count) / DoubleStd.IsNotDoubleThen(item.register_count); item.volume_rate = DoubleStd.IsNotDoubleThen(item.volume_count) / DoubleStd.IsNotDoubleThen(item.register_count); } else { item.perfection_rate = 0; item.volume_rate = 0; } item.withdrew_sum = withdrew_dic.ContainsKey(ComFunc.nvl(item.retail_uid)) ? DoubleStd.IsNotDoubleThen(withdrew_dic[ComFunc.nvl(item.retail_uid)].withdrew_sum) : 0; item.income = 0; if (withdrew_dic.ContainsKey(ComFunc.nvl(item.retail_uid))) { var dobj = withdrew_dic[ComFunc.nvl(item.retail_uid)]; switch (ComFunc.nvl(dobj.royalty_category)) { case "cps": item.income = DoubleStd.IsNotDoubleThen(item.volume_count) * DoubleStd.IsNotDoubleThen(dobj.rebate); break; case "cpa": item.income = DoubleStd.IsNotDoubleThen(item.register_count) * DoubleStd.IsNotDoubleThen(dobj.rebate); break; default: item.income = 0; break; } } DB.QuickInsert(up, "RetailSummaryPerDay", item); } return(true); }
protected override dynamic ParseAlterColumn(FrameDLRObject obj) { var rtn = FrameDLRObject.CreateInstance(); var table = ""; var alter_add_template = @"Alter Table #table# Add #column_name# #data_type# #null# #default#;"; var alter_modify_template = @"Alter Table #table# Modify #column_name# #data_type# #null#;"; var alter_drop_template = @"Alter Table #table# Drop #column_name#;"; var alter_rename_template = @"Alter Table #table# Rename Column #column_name# To #new_column_name#;"; var alter_drop_add_template = @"Alter Table #table# Drop #column_name#; Alter Table #table# Add #column_name# #data_type# #null# #default#;"; var sql = new StringBuilder(); var columns = new List <FrameDLRObject>(); table = ComFunc.nvl(obj.GetValue("$table")); foreach (var item in obj.Items.Where(d => d.Key.StartsWith("$") == false)) { FrameDLRObject col = (FrameDLRObject)item.Value; var column_name = item.Key; if (col != null) { var alter_action = ComFunc.nvl(col.GetValue("$alter_action")); var new_name = ComFunc.nvl(col.GetValue("$new_name")); var datatype = ComFunc.nvl(col.GetValue("$datatype")); var precision = IntStd.IsNotIntThen(col.GetValue("$precision"), -1); var scale = IntStd.IsNotIntThen(col.GetValue("$scale"), -1); var default_value = ComFunc.nvl(col.GetValue("$default")); var is_null = BoolStd.IsNotBoolThen(col.GetValue("$isnull"), true); switch (alter_action) { case "rename": if (new_name != "") { sql.AppendLine(alter_rename_template.Replace("#table#", table).Replace("#column_name#", column_name).Replace("#new_column_name#", new_name)); } break; case "add": sql.AppendLine(alter_add_template .Replace("#table#", table) .Replace("#column_name#", column_name) .Replace("#data_type#", datatype) .Replace("#null#", is_null ? "null" : "not null") .Replace("#default#", convertExpressDefault2DBDefault(default_value, datatype))); break; case "modify": sql.AppendLine(alter_modify_template .Replace("#table#", table) .Replace("#column_name#", column_name) .Replace("#data_type#", datatype) .Replace("#null#", is_null ? "null" : "not null")); break; case "drop": sql.AppendLine(alter_drop_template .Replace("#table#", table) .Replace("#column_name#", column_name)); break; case "drop_add": sql.AppendLine(alter_drop_add_template .Replace("#table#", table) .Replace("#column_name#", column_name) .Replace("#data_type#", datatype) .Replace("#null#", is_null ? "null" : "not null") .Replace("#default#", convertExpressDefault2DBDefault(default_value, datatype))); break; default: break; } } } rtn.sql = sql; rtn.table = table; return(rtn); }
private bool AdminLogin(string id) { var up = DB.NewDBUnitParameter(); var pw = PostDataD.pw; //登录模式,以下几种:Password-密码登录,AuthCode-验证码登录,OpenID-微信的OpenID方式登录;MP-微信小程序方式登录; 默认Password string login_mode = ComFunc.nvl(PostDataD.login_mode); if (login_mode == "") { login_mode = "Password"; } if (!new string[] { "Password", "AuthCode", "OpenID", "MP" }.Contains(login_mode)) { return(false); } if (string.IsNullOrEmpty(id)) { id = ComFunc.UrlDecode(ComFunc.nvl(PostDataD.id).ToLower()); } //小程序登录需要通过id(即jscode)换取openid和sessionkey,然后写入db var weixin_union_id = ""; var weixinmp_session_key = ""; if (login_mode == "MP") { var jscode = id; dynamic result = WeixinMP.GetSessionByCode(jscode); if (result != null && (ComFunc.nvl(result.errcode) == "" || result.errcode == 0)) { id = result.openid; weixin_union_id = result.unionid; weixinmp_session_key = result.session_key; } else { id = ""; } } var s = from t in DB.LamdaTable(up, "user_info", "a") join t2 in DB.LamdaTable(up, "Auth_Code", "b").LeftJoin() on t.userid equals t2.AuthKey where t.userid == id || t.WeixinID == id || t.PlatformID == id || t.Mobile == id || t.QQ == id || t.WeixinMPID == id || t.WeixinPlatUnionID == id select new { t.UserID, t.LoginPass, t.UserName, t.UserSex, t.WeixinID, t.WeixinMPID, t.WeixinPlatUnionID, t.HeadImgUrl, t.PlatformID, t2.AuthCode, t2.ValidSeconds, t2.StartTime, t2.IsUsed }; BeginTrans(); lock (lockobj) { var list = s.GetQueryList(up); if (login_mode == "MP") { if (list.Count <= 0 && id != "") { var new_userid = NewUserID(up);; DB.QuickInsert(up, "user_info", new { userid = new_userid, WeixinMPID = id, WeixinPlatUnionID = weixin_union_id, add_id = new_userid, add_ip = ClientInfo.IP, add_name = "", add_time = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"), last_id = new_userid, last_ip = ClientInfo.IP, last_name = "", last_time = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") }); list = s.GetQueryList(up); } } if (list.Count != 1) { return(false); } dynamic logininfo = list.First(); var is_valid = false; if (login_mode == "Password" && logininfo.loginpass == pw) { is_valid = true; } if (login_mode == "AuthCode") { DateTime start_time = DateTimeStd.ParseStd(logininfo.StartTime).Value; int valid_seconds = IntStd.IsNotIntThen(logininfo.ValidSeconds, 30); if (start_time.AddSeconds(valid_seconds).CompareTo(DateTime.Now) >= 0 && pw == ComFunc.nvl(logininfo.AuthCode)) { is_valid = true; } } if (login_mode == "OpenID" && logininfo.WeixinID == id) { is_valid = true; } if (login_mode == "MP" && logininfo.WeixinMPID == id) { DB.QuickDelete(up, "WeixinMP_SessionKey", new { UserID = logininfo.UserID }); DB.QuickInsert(up, "WeixinMP_SessionKey", new { UserID = logininfo.UserID, SessionKey = weixinmp_session_key, add_id = logininfo.UserID, add_ip = ClientInfo.IP, add_name = "", add_time = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"), last_id = logininfo.UserID, last_ip = ClientInfo.IP, last_name = "", last_time = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") }); is_valid = true; } if (!is_valid) { if (login_mode != "MP") { DB.QuickUpdate(up, "user_info", new { ErrorTime = IntStd.IsNotIntThen(logininfo.ErrorTime) + 1, LastLoginDate = DateTime.Now, LastLoginIP = ClientInfo.IP }, new { UserID = logininfo.UserID }); } return(false); } DB.QuickUpdate(up, "user_info", new { ErrorTime = 0, LastLoginDate = DateTime.Now, LastLoginIP = ClientInfo.IP }, new { UserID = logininfo.UserID }); var private_info = FrameDLRObject.CreateInstance(FrameDLRFlags.SensitiveCase); private_info.weixin_id = logininfo.weixinid; private_info.weixinmp_id = logininfo.WeixinMPID; private_info.weixin_union_id = logininfo.WeixinPlatUnionID; private_info.platform_id = logininfo.PlatformID; //登录者的唯一编码 SetClaimSaveParameter("user_id", logininfo.userid); SetClaimSaveParameter("sex", logininfo.UserSex); SetClaimSaveParameter("username", ComFunc.UrlEncode(logininfo.UserName)); SetClaimSaveParameter("p_info", EncryptByPublicKey(((FrameDLRObject)private_info).ToJSONString(true))); } CommitTrans(); return(true); }
/// <summary> /// 汇总APP的每日汇总报表,指定时间段 /// </summary> /// <param name="up"></param> /// <param name="start"></param> /// <param name="end"></param> /// <param name="msg"></param> /// <returns></returns> public bool DoSyncAPPSummaryPerDay(UnitParameter up, DateTime start, DateTime end, ref string msg) { //清除旧汇总资料 (from t in DB.LamdaTable(up, "APPSummaryPerDay") where t.log_time >= start.ToString("yyyy-MM-dd HH:mm:ss") && t.log_time <= end.ToString("yyyy-MM-dd HH:mm:ss") select t).Delete(up); //获取前一日的汇入资料 var limit = 10000; var is_end = false; var to = 1; var app_summarylist = (from t in DB.LamdaTable(up, "APPInfo", "a") select new { uid = "", app_uid = t.uid, log_time = end.ToString("yyyy-MM-dd HH:mm:ss"), hits = 0, register_count = 0, register_rate = 0, perfection_count = 0, perfection_rate = 0, volume_count = 0, volume_rate = 0, consume = 0, recharge = 0, consume_sum = 0, recharge_sum = 0, remain_amount = t.available_amount, reqirement_count = t.require_count, t.rebate_to_us_cps }).GetQueryList(up); //获取当日充值数据 var s = from t in DB.LamdaTable(up, "APPCharge", "a") where t.is_success == 1 && t.submit_time >= start.ToString("yyyy-MM-dd HH:mm:ss") && t.submit_time <= end.ToString("yyyy-MM-dd HH:mm:ss") group new { t } by t.app_uid into g select new { g.t.app_uid, recharge_amount = g.t.amount.sum() }; var rechargeSumToday = s.GetQueryList(up); var rechargeSum = (from t in DB.LamdaTable(up, "APPCharge", "a") where t.is_success == 1 group new { t } by t.app_uid into g select new { g.t.app_uid, recharge_amount = g.t.amount.sum() }).GetQueryList(up); foreach (dynamic item in app_summarylist) { item.uid = Guid.NewGuid().ToString(); dynamic rech = rechargeSumToday.Where(w => w.app_uid == item.app_uid).FirstOrDefault(); if (rech != null) { item.recharge = DoubleStd.IsNotDoubleThen(rech.recharge_amount); } dynamic rechsum = rechargeSum.Where(w => w.app_uid == item.app_uid).FirstOrDefault(); if (rech != null) { item.recharge_sum = DoubleStd.IsNotDoubleThen(rech.recharge_amount); } } var app_summary = app_summarylist.ToDictionary(k => ComFunc.nvl(k.GetValue("app_uid")), v => (dynamic)v); do { up.ToPage = to; up.Count_Of_OnePage = limit; var exchangeresult = (from t in DB.LamdaTable(up, "APPExchange", "a") join t2 in DB.LamdaTable(up, "APPInfo", "b").LeftJoin() on t.app_uid equals t2.uid where t.log_time >= start.ToString("yyyy-MM-dd HH:mm:ss") && t.log_time <= end.ToString("yyyy-MM-dd HH:mm:ss") select new { t.app_uid, t.log_time, t.mobile, t.is_deal, t.is_register, t.is_perfection, t2.require_count }).QueryByPage(up); var list = exchangeresult.QueryData <FrameDLRObject>(); //计算app var hit_group = from t in list group t by t.GetValue("app_uid") into g select new { app_uid = g.First().GetValue("app_uid"), require_count = g.First().GetValue("require_count"), hits = g.Count() }; var register_group = from t in list where t.is_register == 1 group t by t.GetValue("app_uid") into g select new { app_uid = g.First().GetValue("app_uid"), register_count = g.Count() }; var volume_group = from t in list where t.is_deal == 1 group t by t.GetValue("app_uid") into g select new { app_uid = g.First().GetValue("app_uid"), volume_count = g.Count() }; var perfection_group = from t in list where t.is_perfection == 1 group t by t.GetValue("app_uid") into g select new { app_uid = g.First().GetValue("app_uid"), perfection_count = g.Count() }; //点击量 foreach (var item in hit_group) { var key = ComFunc.nvl(item.app_uid); if (!app_summary.ContainsKey(key)) { GlobalCommon.Logger.WriteLog(LoggerLevel.DEBUG, $"DoSyncSummaryPerDay:同步数据时发现未记录的APP_UID-{key}"); continue; } app_summary[key].hits = IntStd.IsNotIntThen(app_summary[key].hits) + IntStd.IsNotIntThen(item.hits); } //注册量 foreach (var item in register_group) { var key = ComFunc.nvl(item.app_uid); if (!app_summary.ContainsKey(key)) { continue; } app_summary[key].register_count = IntStd.IsNotIntThen(app_summary[key].register_count) + IntStd.IsNotIntThen(item.register_count); } //成单量 foreach (var item in volume_group) { var key = ComFunc.nvl(item.app_uid); if (!app_summary.ContainsKey(key)) { continue; } app_summary[key].volume_count = IntStd.IsNotIntThen(app_summary[key].volume_count) + IntStd.IsNotIntThen(item.volume_count); } //完善量 foreach (var item in perfection_group) { var key = ComFunc.nvl(item.app_uid); if (!app_summary.ContainsKey(key)) { continue; } app_summary[key].volume_count = IntStd.IsNotIntThen(app_summary[key].perfection_count) + IntStd.IsNotIntThen(item.perfection_count); } to++; is_end = exchangeresult.CurrentPage == exchangeresult.TotalPage; } while (!is_end); foreach (var item in app_summary.Values) { //计算完善率,成单率 if (DoubleStd.IsNotDoubleThen(item.register_count) != 0) { item.perfection_rate = DoubleStd.IsNotDoubleThen(item.perfection_count) / DoubleStd.IsNotDoubleThen(item.register_count); item.volume_rate = DoubleStd.IsNotDoubleThen(item.volume_count) / DoubleStd.IsNotDoubleThen(item.register_count); item.consume = IntStd.IsNotIntThen(item.volume_count) * DoubleStd.IsNotDoubleThen(item.rebate_to_us_cps); } DB.QuickInsert(up, "APPSummaryPerDay", new { item.uid, item.app_uid, item.log_time, item.hits, item.register_count, item.perfection_count, item.perfection_rate, item.volume_count, item.volume_rate, item.consume, item.recharge, item.consume_sum, item.recharge_sum, item.reqirement_count, add_id = "admin", add_ip = "", add_name = "admin", add_time = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") }); } return(true); }
object DeliveryStatus() { SetCacheEnable(false); var hw_contract_no = ComFunc.nvl(QueryStringD.hw_contract_no); var start_time = ComFunc.nvl(QueryStringD.start_time); var end_time = ComFunc.nvl(QueryStringD.end_time); var up = DB.NewDBUnitParameter(); var s = from t in DB.LamdaTable("HW_DeliveryStatusInfo", "a") where t.notnull(hw_contract_no, t.hw_contract_no == hw_contract_no) && t.notnull(start_time, t.actual_shipped_date >= DateTimeStd.IsDateTimeThen(start_time)) && t.notnull(end_time, t.actual_shipped_date <= DateTimeStd.IsDateTimeThen(end_time)) && t.is_processed == 0 select t; var result = DB.LamdaQueryByPage(up, s, "hw_contract_no"); return(new { total_num = result.TotalRow, current_page = result.CurrentPage, total_page = result.TotalPage, page_size = result.Count_Of_OnePage, data = from t in result.QueryData <FrameDLRObject>() select new { t.delivery_id, t.packing_list_no, t.hw_contract_no, t.cust_contract_no, t.cust_purchase_no, t.cust_code_cbg, t.cust_code_hw, t.cust_name, t.channel_id, t.cust_type_lv1, t.cust_type_lv2, t.country_code, t.prod_type_cn, t.prod_type_en, t.prod_business_type, t.prod_code_sale, t.prod_code_make, t.prod_desc_hw, t.prod_desc_hw_en, t.prod_code_cust, t.prod_desc_cust, t.prod_model_hw, t.prod_model_ext, t.prod_color_cn, t.prod_color_en, t.cust_purchase_item, estimate_arrive_date = DateTimeStd.IsDateTimeThen(t.estimate_arrive_date, "yyyy-MM-dd HH:mm:ss"), actual_shipped_date = DateTimeStd.IsDateTimeThen(t.actual_shipped_date, "yyyy-MM-dd HH:mm:ss"), t.destination_city, t.destination_province, t.destination_detail, delivery_quantity = IntStd.IsInt(t.delivery_quantity) ? IntStd.ParseStd(t.delivery_quantity).Value : 0, pod_sign_date = DateTimeStd.IsDateTimeThen(t.pod_sign_date, "yyyy-MM-dd HH:mm:ss"), sign_quantity = IntStd.IsInt(t.sign_quantity) ? IntStd.ParseStd(t.sign_quantity).Value : 0, t.order_line_note, t.free_text } }); }
object Use() { var items = ComFunc.UrlDecode(ComFunc.nvl(PostDataD.items)); var jsonstr = ComFunc.IsBase64Then(items); object[] parray = FrameDLRObject.IsJsonArrayThen(jsonstr); if (!IsValidBy("参数格式不正确", () => { var rtn = jsonstr != "" && parray != null; if (rtn) { foreach (dynamic item in parray) { if (ComFunc.nvl(item.hw_contract_no) != "" && ComFunc.nvl(item.prod_code_sale) != "" && IntStd.IsInt(item.quantity)) { rtn = rtn && true; } else { rtn = rtn && false; } } } return(rtn); })) { return(null); } var merge_parray = new Dictionary <string, int>(); foreach (dynamic pitem in parray) { var key = $"{pitem.hw_contract_no}|{pitem.prod_code_sale}"; if (merge_parray.ContainsKey(key)) { merge_parray[key] += IntStd.ParseStd(pitem.quantity).Value; } else { merge_parray[key] = IntStd.ParseStd(pitem.quantity).Value; } } lock (lockobj) { var up = DB.NewDBUnitParameter(); BeginTrans(); var rtnlist = new List <object>(); foreach (var pitem in merge_parray) { var splitstr = pitem.Key.Split("|"); var hw_contract_no = splitstr[0]; var prod_code_sale = splitstr[1]; var s = from t in DB.LamdaTable("hw_po", "a") join t2 in DB.LamdaTable("hw_po_line", "b") on t.hw_contract_no equals t2.hw_contract_no where t2.prod_code_sale == prod_code_sale && t2.hw_contract_no == hw_contract_no select t2; var result = DB.ExcuteLamda(up, s); if (!IsValidBy("资料无效或参数无效", () => result.QueryTable.RowLength > 0)) { return(null); } dynamic item = result.QueryData <FrameDLRObject>()[0]; if (!IsValidBy("核销数量不正确", () => IntStd.IsNotIntThen(item.freeze_quantity) >= pitem.Value)) { //RollBack(); return(null); } DB.QuickUpdate(up, "hw_po_line", new { freeze_quantity = IntStd.IsNotIntThen(item.freeze_quantity) - pitem.Value, used_quantity = IntStd.IsNotIntThen(item.used_quantity) + pitem.Value }, new { hw_contract_no = item.hw_contract_no, po_line_no = item.po_line_no }); } CommitTrans(); return("success"); } }
BsonDocument ParseFields(string key, object obj) { var rtn = new BsonDocument(true); if (key.ToLower() == "$fields") { if (obj is FrameDLRObject) { var dobj = (FrameDLRObject)obj; foreach (var k in dobj.Keys) { rtn.AddRange(ParseFields(k, dobj.GetValue(k))); } } } else { if (obj is FrameDLRObject) { var dobj = (FrameDLRObject)obj; foreach (var k in dobj.Keys) { if (k.ToLower() == "$slice") { if (dobj.GetValue(k) is int) { rtn.AddRange(Builders <BsonDocument> .Projection.Slice(key, IntStd.ParseStd(dobj.GetValue(k)).Value).ToBsonDocument()); } } } } } return(rtn); }
public virtual int Count <TSource>(UnitParameter p, LinqDLR2Sql <TSource> ltable) { var result = ExcuteLamda <TSource>(p, ltable.Count()); return(result.QueryTable.RowLength > 0 ? IntStd.IsNotIntThen(result.QueryTable[0, 0]) : 0); }
public override object post() { var no = ComFunc.nvl(PostDataD.function_no); var name = ComFunc.nvl(PostDataD.function_name); var url = ComFunc.nvl(PostDataD.function_url); var is_menu = ComFunc.nvl(PostDataD.is_menu) == "" ? false : bool.Parse(ComFunc.nvl(PostDataD.is_menu)); var p_no = ComFunc.nvl(PostDataD.p_function_no); var up = DB.NewDBUnitParameter(); if ((from t in DB.LamdaTable(up, "EXTEND_FUNCTION", "a") where t.functionno == no || t.functionname == name select t).IsExists(up)) { return(new { code = "failed", msg = "功能编号/名称已存在" }); } var level = 0; if (p_no != "") { var p_inforesult = (from t in DB.LamdaTable(up, "EXTEND_FUNCTION", "a") where t.functionno == p_no select t).Query(up); if (p_inforesult.QueryTable.RowLength <= 0) { return(new { code = "failed", msg = "父功能不存在" }); } var p_info = p_inforesult.QueryData <FrameDLRObject>().First(); level = IntStd.IsNotIntThen(p_info.GetValue("FunctionLevel"), -1) + 1; } DB.LamdaTable(up, "EXTEND_FUNCTION", "a").Insert(up, new { FunctionNo = no, FunctionName = name, FunctionUrl = url, P_FunctionNo = p_no, FunctionLevel = level, Is_Menu = is_menu }); //DB.QuickInsert(up, "EXTEND_FUNCTION", new //{ // FunctionNo = no, // FunctionName = name, // FunctionUrl = url, // P_FunctionNo = p_no, // FunctionLevel = level, // Is_Menu = is_menu //}); return(new { code = "success", msg = "新增成功", function_no = no }); }
public override object patch(string id) { var up = DB.NewDBUnitParameter(); var name = ComFunc.nvl(PostDataD.function_name); var url = ComFunc.nvl(PostDataD.function_url); var is_menu = ComFunc.nvl(PostDataD.is_menu) == "" ? false : bool.Parse(ComFunc.nvl(PostDataD.is_menu)); var p_no = ComFunc.nvl(PostDataD.p_function_no); var s = from t in DB.LamdaTable(up, "EXTEND_FUNCTION", "a") where t.functionno == id select t; if (!s.IsExists(up)) { return(new { code = "failed", msg = "数据不存在" }); } if ((from t in DB.LamdaTable(up, "EXTEND_FUNCTION", "a") where t.functionname == name && t.functionno != id select t).IsExists(up)) { return(new { code = "failed", msg = "功能名称重复" }); } var level = 0; if (p_no != "") { var p_inforesult = (from t in DB.LamdaTable(up, "EXTEND_FUNCTION", "a") where t.functionno == p_no select t).Query(up); if (p_inforesult.QueryTable.RowLength <= 0) { return(new { code = "failed", msg = "父功能不存在" }); } var p_info = p_inforesult.QueryData <FrameDLRObject>().First(); level = IntStd.IsNotIntThen(p_info.GetValue("FunctionLevel"), -1) + 1; } s.Update(up, new { FunctionName = name, FunctionUrl = url, P_FunctionNo = p_no, FunctionLevel = level, Is_Menu = is_menu }); return(new { code = "success", msg = "修改成功", function_no = id }); }
protected void InitUPPage(UnitParameter p) { if (ComFunc.nvl(_logic.CallContext_Parameter[DomainKey.QUERY_STRING, ToPage_Key]) != "") { p.ToPage = IntStd.ParseStd(_logic.CallContext_Parameter[DomainKey.QUERY_STRING, ToPage_Key]); } else if (ComFunc.nvl(_logic.CallContext_Parameter[DomainKey.POST_DATA, ToPage_Key]) != "") { p.ToPage = IntStd.ParseStd(_logic.CallContext_Parameter[DomainKey.POST_DATA, ToPage_Key]); } else { p.ToPage = 1; } if (p.ToPage <= 0) { p.ToPage = 1; } if (ComFunc.nvl(_logic.CallContext_Parameter[DomainKey.QUERY_STRING, Count_per_Page_Key]) != "") { p.Count_Of_OnePage = IntStd.ParseStd(_logic.CallContext_Parameter[DomainKey.QUERY_STRING, Count_per_Page_Key]); } else if (ComFunc.nvl(_logic.CallContext_Parameter[DomainKey.POST_DATA, Count_per_Page_Key]) != "") { p.Count_Of_OnePage = IntStd.ParseStd(_logic.CallContext_Parameter[DomainKey.POST_DATA, Count_per_Page_Key]); } else { p.Count_Of_OnePage = _logic.CallContext_Parameter[DomainKey.CONFIG, "Count_per_Page"] != null?IntStd.ParseStd(_logic.CallContext_Parameter[DomainKey.CONFIG, "Count_per_Page"]).Value : 10; } }
object CreateTable() { string ids = ComFunc.nvl(PostDataD.id); BeginTrans(); var up = DB.NewDBUnitParameter(); var array = ids.Split(',').Where(p => ComFunc.nvl(p) != ""); foreach (var id in array) { var s = from t in DB.LamdaTable(up, "EXTEND_METADATA", "a") where t.metauid == id select t; var list = s.GetQueryList(up); if (!s.IsExists(up)) { return(false); } dynamic info = list.First(); bool islocked = BoolStd.IsNotBoolThen(info.islocked, false); if (islocked) { return(new { code = "failed", msg = "元数据表已锁定,不可进行操作" }); } bool iscreated = BoolStd.IsNotBoolThen(info.iscreated, false); if (iscreated) { return(new { code = "failed", msg = "元数据表已创建,不可进行操作" }); } if (DB.IsTableExists(up, info.metaname)) { return(new { code = "failed", msg = "元数据表已存在,不可进行操作" }); } } foreach (var id in array) { var s = from t in DB.LamdaTable(up, "EXTEND_METADATA", "a") where t.metauid == id select t; dynamic info = s.GetQueryList(up).First(); var columns = (from t in DB.LamdaTable(up, "EXTEND_METADATA_COLUMNS", "a") where t.metauid == id select t).GetQueryList(up); var schemas = columns.Select((p) => { dynamic dobj = p; bool tmp = false; var rtn = new TableColumn(); rtn.Name = dobj.MetaColumnName; rtn.DataType = dobj.MetaDataType; if (IntStd.IsInt(dobj.MetaDataPrecision)) { rtn.Precision = (int)dobj.MetaDataPrecision; } if (IntStd.IsInt(dobj.MetaDataScale)) { rtn.Scale = (int)dobj.MetaDataScale; } rtn.Default = dobj.MetaDataDefault; rtn.AllowNull = BoolStd.IsNotBoolThen(dobj.MetaAllowEmpty, false); rtn.IsPK = BoolStd.IsNotBoolThen(dobj.MetaIsPK, false); return(rtn); }).ToList(); schemas.AddRange(new TableColumn[] { new TableColumn() { Name = "sort_no", DataType = "int", Default = "0", IsPK = false, AllowNull = true }, new TableColumn() { Name = "add_id", DataType = "varchar", Precision = 50, IsPK = false, AllowNull = true }, new TableColumn() { Name = "add_name", DataType = "nvarchar", Precision = 100, IsPK = false, AllowNull = true }, new TableColumn() { Name = "add_ip", DataType = "varchar", Precision = 15, IsPK = false, AllowNull = true }, new TableColumn() { Name = "add_time", DataType = "datetime", IsPK = false, AllowNull = true }, new TableColumn() { Name = "last_id", DataType = "varchar", Precision = 50, IsPK = false, AllowNull = true }, new TableColumn() { Name = "last_name", DataType = "nvarchar", Precision = 100, IsPK = false, AllowNull = true }, new TableColumn() { Name = "last_ip", DataType = "varchar", Precision = 15, IsPK = false, AllowNull = true }, new TableColumn() { Name = "last_time", DataType = "datetime", IsPK = false, AllowNull = true } }); DB.CreateTable(up, info.metaname, schemas.ToArray()); s.Update(up, new { islocked = 1, iscreated = 1 }); } CommitTrans(); return(new { code = "success", msg = "操作成功" }); }
object Charge(string id) { if (ComFunc.nvl(id) == "") { return new { code = "failed", msg = "账号无效" } } ; double amount = PostDataD.amount; var memo = ComFunc.nvl(PostDataD.memo); var wd_no = ComFunc.nvl(PostDataD.wd_no); var ou_id = ComFunc.nvl(PostDataD.ou_id); var up = DB.NewDBUnitParameter(); BeginTrans(); dynamic useritem = null; var s = from t in DB.LamdaTable("ecs_users", "a") where t.user_id == id && t.is_validated == 1 select t; var userresult = DB.ExcuteLamda(up, s); if (userresult.QueryTable.RowLength <= 0) { return(new { code = "failed", msg = "账号无效" }); } else { useritem = userresult.QueryData <FrameDLRObject>()[0]; } var result = DB.ExcuteLamda(up, from t in DB.LamdaTable("ecs_user_wallet", "a") where t.user_id == id select t); if (amount <= 0) { return(new { code = "failed", msg = "金额不合法" }); } if (DB.IsExists(up, from t in DB.LamdaTable("ecs_user_wallet_line", "a") where t.ebs_wd_no == wd_no select t)) { return(new { code = "failed", msg = "WD编号重复" }); } if (result.QueryTable.RowLength <= 0) { DB.QuickInsert(up, "ecs_user_wallet", new { user_id = id, user_name = useritem.user_name, total_amount = amount, memo = memo, add_time = DateTime.Now, add_id = "WalletAPI", last_time = DateTime.Now, last_id = "WalletAPI" }); } else { dynamic item = result.QueryData <FrameDLRObject>()[0]; DB.QuickUpdate(up, "ecs_user_wallet", new { total_amount = DoubleStd.IsNotDoubleThen(item.total_amount) + amount }, new { user_id = id }); } //写入line var newlineno = IntStd.IsNotIntThen(DB.Max(up, from t in DB.LamdaTable("ecs_user_wallet_line", "a") where t.user_id == id select t, "line_no")) + 1; DB.QuickInsert(up, "ecs_user_wallet_line", new { user_id = id, line_no = newlineno, ebs_wd_no = wd_no, ebs_ou_id = ou_id, total_amount = amount, memo = memo, add_time = DateTime.Now, add_id = "WalletAPI", last_time = DateTime.Now, last_id = "WalletAPI" }); dynamic data = DB.ExcuteLamda(up, from t in DB.LamdaTable("ecs_user_wallet", "a") where t.user_id == id select t).QueryData <FrameDLRObject>()[0]; var newseq = GetNewSeq(ComFunc.nvl(DB.Max(up, from t in DB.LamdaTable("ecs_user_wallet_log", "a") where t.user_id == id select t, "seq"))); //记录流水 DB.QuickInsert(up, "ecs_user_wallet_log", new { user_id = id, uid = Guid.NewGuid().ToString(), amount = amount, events = "打款", memo = memo, ebs_wd_no = wd_no, ebs_ou_id = ou_id, last_time = DateTime.Now, last_id = "WalletAPI", seq = newseq, line_total_amount = amount, line_freeze_amount = 0, line_used_amount = 0, line_available_amount = amount, total_amount = data.total_amount, freeze_amount = DecimalStd.IsNotDecimalThen(data.freeze_amount), used_amount = DecimalStd.IsNotDecimalThen(data.used_amount), available_amount = DecimalStd.IsNotDecimalThen(data.total_amount) - DecimalStd.IsNotDecimalThen(data.freeze_amount) - DecimalStd.IsNotDecimalThen(data.used_amount) }); CommitTrans(); return(new { code = "success", wallet = new { user_id = data.user_id, total_amount = data.total_amount, freeze_amount = DecimalStd.IsNotDecimalThen(data.freeze_amount), used_amount = DecimalStd.IsNotDecimalThen(data.used_amount), available_amount = DecimalStd.IsNotDecimalThen(data.total_amount) - DecimalStd.IsNotDecimalThen(data.freeze_amount) - DecimalStd.IsNotDecimalThen(data.used_amount) } }); }