private FrameDLRObject copyPOItem(dynamic source) { var rtn = FrameDLRObject.CreateInstance(); rtn.hw_contract_no = source.hw_contract_no; rtn.cust_contract_no = source.cust_contract_no; rtn.version = source.version; rtn.status = source.status; rtn.hw_frame_contract_no = source.hw_frame_contract_no; rtn.cust_frame_contract_no = source.cust_frame_contract_no; rtn.hw_sign_entity = source.hw_sign_entity; rtn.cust_sign_entity = source.cust_sign_entity; rtn.cust_type_lv1 = source.cust_type_lv1; rtn.cust_type_lv2 = source.cust_type_lv2; rtn.trade_terms = source.trade_terms; rtn.transport_mode = source.transport_mode; rtn.payment_terms = source.payment_terms; rtn.is_vat_included = source.is_vat_included; rtn.contract_amount_cny = DoubleStd.IsDouble(source.contract_amount_cny) ? DoubleStd.ParseStd(source.contract_amount_cny).Value : null; rtn.contract_amount_usd = DoubleStd.IsDouble(source.contract_amount_usd) ? DoubleStd.ParseStd(source.contract_amount_usd).Value : null; rtn.retail_sample = source.retail_sample; rtn.created_by = source.created_by; rtn.created_date = DateTimeStd.IsDateTime(source.created_date) ? DateTimeStd.ParseStd(source.created_date).Value.ToString("yyyyMMddHHmmss") : null; rtn.accepted_date = DateTimeStd.IsDateTime(source.accepted_date) ? DateTimeStd.ParseStd(source.accepted_date).Value.ToString("yyyyMMddHHmmss") : null; rtn.review_completed_date = DateTimeStd.IsDateTime(source.review_completed_date) ? DateTimeStd.ParseStd(source.review_completed_date).Value.ToString("yyyyMMddHHmmss") : null; rtn.signed_date = DateTimeStd.IsDateTime(source.signed_date) ? DateTimeStd.ParseStd(source.signed_date).Value.ToString("yyyyMMddHHmmss") : null; return(rtn); }
private FrameDLRObject copyPOFeeItem(dynamic source, string hw_contract_no, int lineindex) { var rtn = FrameDLRObject.CreateInstance(); rtn.hw_contract_no = hw_contract_no; rtn.line_no = IntStd.IsInt(source.line_no) ? IntStd.ParseStd(source.line_no).Value : lineindex; rtn.line_type = source.line_type; rtn.desc = source.desc; rtn.prod_model = source.prod_model; rtn.amount = DoubleStd.IsDouble(source.amount) ? DoubleStd.ParseStd(source.amount).Value : 0.0; rtn.comments = source.comments; return(rtn); }
/// <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); }
private FrameDLRObject copyPOLineItem(dynamic source, string hw_contract_no, int lineindex) { var rtn = FrameDLRObject.CreateInstance(); rtn.hw_contract_no = hw_contract_no; rtn.po_line_no = IntStd.IsInt(source.po_line_no) ? IntStd.ParseStd(source.po_line_no).Value : lineindex; rtn.line_type = source.line_type; rtn.prod_code_cust = source.prod_code_cust; rtn.prod_desc_cust = source.prod_desc_cust; rtn.prod_code_sale = source.prod_code_sale; rtn.prod_desc_hw = source.prod_desc_hw; rtn.prod_model = source.prod_model; rtn.color = source.color; rtn.quantity = IntStd.IsInt(source.quantity) ? IntStd.ParseStd(source.quantity).Value : 0; rtn.currency = source.currency; rtn.unit_price_cny = DoubleStd.IsDouble(source.unit_price_cny) ? DoubleStd.ParseStd(source.unit_price_cny).Value : 0.0; rtn.line_amount_cny = DoubleStd.IsDouble(source.line_amount_cny) ? DoubleStd.ParseStd(source.line_amount_cny).Value : 0.0; rtn.line_amount_usd = DoubleStd.IsDouble(source.line_amount_usd) ? DoubleStd.ParseStd(source.line_amount_usd).Value : 0.0; return(rtn); }
public bool DoSyncPlatSummaryPerDay(UnitParameter up, DateTime start, DateTime end, ref string msg) { //清除旧汇总资料 (from t in DB.LamdaTable(up, "PlatSummaryPerDay") where t.log_date >= start.ToString("yyyy-MM-dd HH:mm:ss") && t.log_date <= end.ToString("yyyy-MM-dd HH:mm:ss") select t).Delete(up); var platSummaryList = (from t in DB.LamdaTable(up, "APPSummaryPerDay", "a") 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 { log_date = end.ToString("yyyy-MM-dd HH:mm:ss"), hits = t.hits.sum(), register_count = t.register_count.sum(), perfection_count = t.perfection_count.sum(), volume_count = t.volume_count.sum(), consume_amount = t.consume.sum(), recharge_amount = t.recharge.sum(), consume_sum = t.consume_sum.sum(), recharge_sum = t.recharge_sum.sum() }).GetQueryList(up); var withdrewChannelSummaryTodayList = (from t in DB.LamdaTable(up, "ChannelWithDraw", "a") where t.status == "audit" && t.submit_time >= start.ToString("yyyy-MM-dd HH:mm:ss") && t.submit_time <= end.ToString("yyyy-MM-dd HH:mm:ss") select new { withdrew_sum = t.amount.sum() }).GetQueryList(up); var withdrewChannelSummaryList = (from t in DB.LamdaTable(up, "ChannelWithDraw", "a") where t.status == "audit" select new { withdrew_sum = t.amount.sum() }).GetQueryList(up); var withdrewRetailSummaryTodayList = (from t in DB.LamdaTable(up, "RetailWithDraw", "a") where t.status == "audit" && t.submit_time >= start.ToString("yyyy-MM-dd HH:mm:ss") && t.submit_time <= end.ToString("yyyy-MM-dd HH:mm:ss") select new { withdrew_sum = t.amount.sum() }).GetQueryList(up); var withdrewRetailSummaryList = (from t in DB.LamdaTable(up, "RetailWithDraw", "a") where t.status == "audit" select new { withdrew_sum = t.amount.sum() }).GetQueryList(up); var withdrew_today = 0.0; if (withdrewChannelSummaryTodayList.Count > 0) { withdrew_today = DoubleStd.IsNotDoubleThen(withdrewChannelSummaryTodayList.First().GetValue("withdrew_sum")) + withdrew_today; } if (withdrewRetailSummaryTodayList.Count > 0) { withdrew_today = DoubleStd.IsNotDoubleThen(withdrewRetailSummaryTodayList.First().GetValue("withdrew_sum")) + withdrew_today; } var withdrew_sum = 0.0; if (withdrewChannelSummaryList.Count > 0) { withdrew_sum = DoubleStd.IsNotDoubleThen(withdrewChannelSummaryList.First().GetValue("withdrew_sum")) + withdrew_today; } if (withdrewRetailSummaryList.Count > 0) { withdrew_sum = DoubleStd.IsNotDoubleThen(withdrewRetailSummaryList.First().GetValue("withdrew_sum")) + withdrew_today; } foreach (dynamic item in platSummaryList) { item.uid = Guid.NewGuid().ToString(); 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.withdrew_amount = withdrew_today; item.withdrew_sum = withdrew_sum; DB.QuickInsert(up, "PlatSummaryPerDay", new { item.uid, item.log_date, item.hits, item.register_count, item.perfection_count, item.perfection_rate, item.volume_count, item.volume_rate, item.consume_amount, item.recharge_amount, item.consume_sum, item.recharge_sum, item.withdrew_amount, item.withdrew_sum, add_id = "admin", add_ip = "", add_name = "admin", add_time = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") }); } return(true); }
public bool DoSyncChannelSummaryPerDay(UnitParameter up, DateTime start, DateTime end, ref string msg) { //清除旧汇总资料 (from t in DB.LamdaTable(up, "ChannelSummaryPerDay") where t.log_date >= start.ToString("yyyy-MM-dd HH:mm:ss") && t.log_date <= end.ToString("yyyy-MM-dd HH:mm:ss") select t).Delete(up); //从分销商报表中统计数据 var channelSummaryList = (from t in DB.LamdaTable(up, "RetailSummaryPerDay", "a") join t2 in DB.LamdaTable(up, "Retail", "b") on t.retail_uid equals t2.uid join t3 in DB.LamdaTable(up, "ChannelBusiness", "c") on t2.belong_channel_uid equals t3.uid where 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, t3 } by new { t.retail_uid, t2.royalty_category, t3.uid, t3.rebate_cps, t3.rebate_cpa } into g select new { channel_uid = g.t3.uid, retail_uid = g.t.retail_uid, log_date = end.ToString("yyyy-MM-dd HH:mm:ss"), hits = g.t.hits.sum(), volume_count = g.t.volume_count.sum(), volume_rate = 0, register_count = g.t.register_count.sum(), perfection_count = g.t.perfection_count.sum(), perfection_rate = 0, unit_price_cps = g.t3.rebate_cps, unit_price_cpa = g.t3.rebate_cpa, g.t2.royalty_category, income = 0 }).GetQueryList(up); foreach (dynamic item in channelSummaryList) { 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); } switch (ComFunc.nvl(item.royalty_category)) { case "cps": item.income = DoubleStd.IsNotDoubleThen(item.volume_count) * DoubleStd.IsNotDoubleThen(item.unit_price_cps); break; case "cpa": item.income = DoubleStd.IsNotDoubleThen(item.register_count) * DoubleStd.IsNotDoubleThen(item.unit_price_cpa); break; default: item.income = 0; break; } DB.QuickInsert(up, "ChannelSummaryPerDay", new { uid = Guid.NewGuid().ToString(), item.channel_uid, item.retail_uid, item.log_date, item.hits, item.volume_count, item.volume_rate, item.register_count, item.perfection_count, item.perfection_rate, item.unit_price_cps, item.unit_price_cpa, item.income, add_id = "admin", add_ip = "", add_name = "admin", add_time = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") }); } return(true); }
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); }
/// <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 QueryPO() { SetCacheEnable(false); string start_date = ComFunc.nvl(QueryStringD.start_date); string end_date = ComFunc.nvl(QueryStringD.end_date); if (!IsValidBy("日期格式不正确", () => { return((start_date == "" || DateTimeStd.IsDateTime(start_date)) && (end_date == "" || DateTimeStd.IsDateTime(end_date))); })) { return(null); } var up = DB.NewDBUnitParameter(); var s = from t in DB.LamdaTable("HW_PO", "a") where t.notnull(start_date, t.accepted_date >= DateTimeStd.IsDateTimeThen(start_date)) && t.notnull(end_date, t.accepted_date <= DateTimeStd.IsDateTimeThen(end_date)) && t.is_processed == 0 select t; var result = DB.LamdaQueryByPage(up, s, "hw_contract_no"); var polist = (from t in result.QueryData <FrameDLRObject>() select new { t.hw_contract_no, t.cust_contract_no, t.version, t.status, t.hw_frame_contract_no, t.cust_frame_contract_no, t.hw_sign_entity, t.cust_sign_entity, t.cust_type_lv1, t.cust_type_lv2, t.trade_terms, t.transport_mode, t.payment_terms, t.is_vat_included, contract_amount_cny = DoubleStd.IsDouble(t.contract_amount_cny) ? DoubleStd.ParseStd(t.contract_amount_cny).Value : 0.0, contract_amount_usd = DoubleStd.IsDouble(t.contract_amount_usd) ? DoubleStd.ParseStd(t.contract_amount_usd).Value : 0.0, t.retail_sample, t.created_by, created_date = DateTimeStd.IsDateTimeThen(t.created_date, "yyyy-MM-dd HH:mm:ss"), accepted_date = DateTimeStd.IsDateTimeThen(t.accepted_date, "yyyy-MM-dd HH:mm:ss"), review_completed_date = DateTimeStd.IsDateTimeThen(t.review_completed_date, "yyyy-MM-dd HH:mm:ss"), signed_date = DateTimeStd.IsDateTimeThen(t.signed_date, "yyyy-MM-dd HH:mm:ss") }).ToList(); foreach (dynamic item in polist) { var sline = from t in DB.LamdaTable("HW_PO_Line", "a") where t.hw_contract_no == item.hw_contract_no select new { t.po_line_no, t.line_type, t.prod_code_cust, t.prod_desc_cust, t.prod_code_sale, t.prod_desc_hw, t.prod_model, t.color, t.quantity, t.currency, t.unit_price_cny, t.line_amount_cny, t.line_amount_usd }; item.po_line = DB.ExcuteLamda(up, sline).QueryData <object>(); var sfee = from t in DB.LamdaTable("HW_PO_Fee", "a") where t.hw_contract_no == item.hw_contract_no select new { t.line_no, t.line_type, t.desc, t.prod_model, t.amount, t.comments }; item.other_fee = DB.ExcuteLamda(up, sfee).QueryData <object>(); } return(new { data = polist, total_num = result.TotalRow, current_page = result.CurrentPage, total_page = result.TotalPage, page_size = result.Count_Of_OnePage }); }
protected override bool DoValid(EWRAParameter ep, EWRAData ed) { if (fields == null) { return(true); } else { foreach (var f in fields) { var ispostdata = ep.ContainsKey(DomainKey.POST_DATA, f); var isquerystring = ep.ContainsKey(DomainKey.QUERY_STRING, f); var v = ComFunc.nvl(ep[DomainKey.POST_DATA, f]); v = v == "" ? ComFunc.nvl(ep[DomainKey.QUERY_STRING, f]) : v; if (is_check_empty_error) { if (!DoubleStd.IsDouble(v)) { return(false); } else { if (is_convert) { if (ispostdata) { ep[DomainKey.POST_DATA, f] = double.Parse(v); } if (isquerystring) { ep[DomainKey.QUERY_STRING, f] = double.Parse(v); } } } } else { if (v != "" && !DoubleStd.IsDouble(v)) { return(false); } else { if (v != "") { if (is_convert) { if (ispostdata) { ep[DomainKey.POST_DATA, f] = double.Parse(v); } if (isquerystring) { ep[DomainKey.QUERY_STRING, f] = double.Parse(v); } } } } } } return(true); } }
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) } }); }
object Use(string id) { lock (lockobj) { double amount = PostDataD.amount; var memo = ComFunc.nvl(PostDataD.memo); var ou_id = ComFunc.nvl(PostDataD.ou_id); var ebs_wd_no = ComFunc.nvl(PostDataD.ebs_wd_no); var up = DB.NewDBUnitParameter(); BeginTrans(); var s = from t in DB.LamdaTable("ecs_user_wallet", "a") where t.user_id == id select t; var result = DB.ExcuteLamda(up, s); if (result.QueryTable.RowLength <= 0) { return(new { code = "failed", msg = "账号无效" }); } dynamic item = result.QueryData <FrameDLRObject>()[0]; if (amount > DoubleStd.IsNotDoubleThen(item.freeze_amount)) { return(new { code = "failed", msg = "金额溢出" }); } //核销行资料 var tmpamount = amount; //找出可用的行资料 var availablelist = DB.ExcuteLamda(up, from t in DB.LamdaTable("ecs_user_wallet_line", "a") orderby t.line_no ascending where t.user_id == id && t.freeze_amount.isnull(0) > 0 && t.notnull(ou_id, t.ebs_ou_id == ou_id) && t.notnull(ebs_wd_no, t.ebs_wd_no.within($",{ebs_wd_no},")) select t).QueryData <FrameDLRObject>(); if (availablelist.Count <= 0) { return(new { code = "failed", msg = "无可用额度" }); } var total_freeze_amount = DoubleStd.IsNotDoubleThen(item.freeze_amount); var total_used_amount = DoubleStd.IsNotDoubleThen(item.used_amount); var tmplist = new List <object>(); foreach (dynamic obj in availablelist) { var freeze = DoubleStd.IsNotDoubleThen(obj.freeze_amount); if (tmpamount > freeze) { obj.freeze_amount = 0; obj.used_amount = DoubleStd.IsNotDoubleThen(obj.used_amount) + freeze; obj.current_use_amount = freeze; obj.available_amount = DoubleStd.IsNotDoubleThen(obj.total_amount) - DoubleStd.IsNotDoubleThen(obj.freeze_amount) - DoubleStd.IsNotDoubleThen(obj.used_amount); obj.all_total_amount = item.total_amount; obj.all_freeze_amount = total_freeze_amount = total_freeze_amount - freeze; obj.all_used_amount = total_used_amount = total_used_amount + freeze; obj.all_available_amount = DoubleStd.IsNotDoubleThen(obj.all_total_amount) - DoubleStd.IsNotDoubleThen(obj.all_freeze_amount) - DoubleStd.IsNotDoubleThen(obj.all_used_amount); tmplist.Add(obj); tmpamount = tmpamount - freeze; } else { obj.freeze_amount = DoubleStd.IsNotDoubleThen(obj.freeze_amount) - tmpamount; obj.used_amount = DoubleStd.IsNotDoubleThen(obj.used_amount) + tmpamount; obj.current_use_amount = tmpamount; obj.available_amount = DoubleStd.IsNotDoubleThen(obj.total_amount) - DoubleStd.IsNotDoubleThen(obj.freeze_amount) - DoubleStd.IsNotDoubleThen(obj.used_amount); obj.all_total_amount = item.total_amount; obj.all_freeze_amount = total_freeze_amount = total_freeze_amount - tmpamount; obj.all_used_amount = total_used_amount = total_used_amount + tmpamount; obj.all_available_amount = DoubleStd.IsNotDoubleThen(obj.all_total_amount) - DoubleStd.IsNotDoubleThen(obj.all_freeze_amount) - DoubleStd.IsNotDoubleThen(obj.all_used_amount); tmplist.Add(obj); tmpamount = 0; break; } } if (tmpamount > 0) { return(new { code = "failed", msg = "无可用额度" }); } foreach (dynamic obj in tmplist) { DB.QuickUpdate(up, "ecs_user_wallet_line", new { freeze_amount = obj.freeze_amount, used_amount = obj.used_amount, memo = memo, last_time = DateTime.Now, last_id = "WalletAPI" }, new { user_id = obj.user_id, ebs_wd_no = obj.ebs_wd_no }); } DB.QuickUpdate(up, "ecs_user_wallet", new { freeze_amount = DoubleStd.IsNotDoubleThen(item.freeze_amount) - amount, used_amount = DoubleStd.IsNotDoubleThen(item.used_amount) + amount }, new { user_id = id }); 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"))); //记录流水 foreach (dynamic obj in tmplist) { DB.QuickInsert(up, "ecs_user_wallet_log", new { user_id = id, uid = Guid.NewGuid().ToString(), amount = obj.current_use_amount, events = "核销", memo = memo, ebs_wd_no = obj.ebs_wd_no, ebs_ou_id = obj.ebs_ou_id, last_time = DateTime.Now, last_id = "WalletAPI", seq = newseq, line_total_amount = obj.total_amount, line_freeze_amount = DecimalStd.IsNotDecimalThen(obj.freeze_amount), line_used_amount = DecimalStd.IsNotDecimalThen(obj.used_amount), line_available_amount = obj.available_amount, total_amount = obj.all_total_amount, freeze_amount = DecimalStd.IsNotDecimalThen(obj.all_freeze_amount), used_amount = DecimalStd.IsNotDecimalThen(obj.all_used_amount), available_amount = DecimalStd.IsNotDecimalThen(obj.all_total_amount) - DecimalStd.IsNotDecimalThen(obj.all_freeze_amount) - DecimalStd.IsNotDecimalThen(obj.all_used_amount) }); newseq = GetNewSeq(newseq); } CommitTrans(); return(new { code = "success", wallet = new { user_id = data.user_id, current_freeze_amount = amount, total_amount = data.total_amount, freeze_amount = DecimalStd.IsNotDecimalThen(data.freeze_amount), used_amount = DecimalStd.IsNotDecimalThen(data.used_amount), available_amount = data.total_amount - DecimalStd.IsNotDecimalThen(data.freeze_amount) - DecimalStd.IsNotDecimalThen(data.used_amount), lines = from t in tmplist select new { line_no = ((dynamic)t).line_no, ebs_wd_no = ((dynamic)t).ebs_wd_no, ebs_ou_id = ((dynamic)t).ebs_ou_id, current_use_amount = ((dynamic)t).current_use_amount, total_amount = ((dynamic)t).total_amount, freeze_amount = ((dynamic)t).freeze_amount, used_amount = ((dynamic)t).used_amount, available_amount = DoubleStd.IsNotDoubleThen(((dynamic)t).total_amount) - DoubleStd.IsNotDoubleThen(((dynamic)t).freeze_amount) - DoubleStd.IsNotDoubleThen(((dynamic)t).used_amount) } } }); } }
object PreCancel(string id) { lock (lockobj) { double amount = PostDataD.amount; var memo = ComFunc.nvl(PostDataD.memo); var ou_id = ComFunc.nvl(PostDataD.ou_id); var ebs_wd_no = ComFunc.nvl(PostDataD.ebs_wd_no); var up = DB.NewDBUnitParameter(); BeginTrans(); var s = from t in DB.LamdaTable("ecs_user_wallet", "a") where t.user_id == id select t; var result = DB.ExcuteLamda(up, s); if (result.QueryTable.RowLength <= 0) { return(new { code = "failed", msg = "账号无效" }); } dynamic item = result.QueryData <FrameDLRObject>()[0]; if (amount > DoubleStd.IsNotDoubleThen(item.freeze_amount)) { return(new { code = "failed", msg = "金额溢出" }); } //找到行资料-倒叙搜索 var tmpamount = amount; var availablelist = DB.ExcuteLamda(up, from t in DB.LamdaTable("ecs_user_wallet_line", "a") orderby t.line_no descending where t.user_id == id && t.freeze_amount.isnull(0) > 0 && t.notnull(ou_id, t.ebs_ou_id == ou_id) && t.notnull(ebs_wd_no, t.ebs_wd_no.within($",{ebs_wd_no},")) select t).QueryData <FrameDLRObject>(); if (availablelist.Count <= 0) { return(new { code = "failed", msg = "无可用额度" }); } var total_freeze_amount = DoubleStd.IsNotDoubleThen(item.freeze_amount); var total_used_amount = DoubleStd.IsNotDoubleThen(item.used_amount); var tmplist = new List <object>(); foreach (dynamic obj in availablelist) { var freeze = DoubleStd.IsNotDoubleThen(obj.freeze_amount); if (tmpamount > freeze) { obj.freeze_amount = 0; obj.current_cancel_amount = freeze; obj.available_amount = DoubleStd.IsNotDoubleThen(obj.total_amount) - DoubleStd.IsNotDoubleThen(obj.freeze_amount) - DoubleStd.IsNotDoubleThen(obj.used_amount); obj.all_total_amount = item.total_amount; obj.all_freeze_amount = total_freeze_amount = total_freeze_amount - freeze; obj.all_used_amount = total_used_amount; obj.all_available_amount = DoubleStd.IsNotDoubleThen(obj.all_total_amount) - DoubleStd.IsNotDoubleThen(obj.all_freeze_amount) - DoubleStd.IsNotDoubleThen(obj.all_used_amount); tmplist.Add(obj); tmpamount = tmpamount - freeze; } else { obj.freeze_amount = DoubleStd.IsNotDoubleThen(obj.freeze_amount) - tmpamount; obj.current_cancel_amount = tmpamount; obj.available_amount = DoubleStd.IsNotDoubleThen(obj.total_amount) - DoubleStd.IsNotDoubleThen(obj.freeze_amount) - DoubleStd.IsNotDoubleThen(obj.used_amount); obj.all_total_amount = item.total_amount; obj.all_freeze_amount = total_freeze_amount = total_freeze_amount - tmpamount; obj.all_used_amount = total_used_amount; obj.all_available_amount = DoubleStd.IsNotDoubleThen(obj.all_total_amount) - DoubleStd.IsNotDoubleThen(obj.all_freeze_amount) - DoubleStd.IsNotDoubleThen(obj.all_used_amount); tmplist.Add(obj); tmpamount = 0; break; } } if (tmpamount > 0) { return(new { code = "failed", msg = "无可用额度" }); } CommitTrans(); return(new { code = "success", wallet = new { user_id = item.user_id, current_cancel_amount = amount, total_amount = item.total_amount, freeze_amount = DecimalStd.IsNotDecimalThen(item.freeze_amount) - DecimalStd.IsNotDecimalThen(amount), used_amount = DecimalStd.IsNotDecimalThen(item.used_amount), available_amount = item.total_amount - DecimalStd.IsNotDecimalThen(item.freeze_amount) - DecimalStd.IsNotDecimalThen(item.used_amount) + DecimalStd.IsNotDecimalThen(amount), lines = from t in tmplist select new { line_no = ((dynamic)t).line_no, ebs_wd_no = ((dynamic)t).ebs_wd_no, ebs_ou_id = ((dynamic)t).ebs_ou_id, current_cancel_amount = ((dynamic)t).current_cancel_amount, total_amount = ((dynamic)t).total_amount, freeze_amount = ((dynamic)t).freeze_amount, used_amount = ((dynamic)t).used_amount, available_amount = DoubleStd.IsNotDoubleThen(((dynamic)t).total_amount) - DoubleStd.IsNotDoubleThen(((dynamic)t).freeze_amount) - DoubleStd.IsNotDoubleThen(((dynamic)t).used_amount) } } }); } }