コード例 #1
0
        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);
        }
コード例 #2
0
            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;
                }
            }
コード例 #3
0
        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);
        }
コード例 #4
0
        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);
        }
コード例 #5
0
        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);
        }
コード例 #6
0
        /// <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);
        }
コード例 #7
0
ファイル: PO.cs プロジェクト: jevonsflash/EFFC.Frame.Net.Core
        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
                }
            });
        }
コード例 #8
0
ファイル: PO.cs プロジェクト: jevonsflash/EFFC.Frame.Net.Core
        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");
            }
        }
コード例 #9
0
        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);
        }
コード例 #10
0
            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);
            }
コード例 #11
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
            });
        }
コード例 #12
0
        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
            });
        }
コード例 #13
0
            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;
                }
            }
コード例 #14
0
        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 = "操作成功"
            });
        }
コード例 #15
0
        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)
                }
            });
        }