public static int UAddRecord(SqlConnection con, SqlTransaction sqt, TUserGroup ug)
 {
     try
     {
         string sql = "insert into tUserGroup(UID,GID) values (@UID,@GID)";
         return(MsSqlHelper.ExecSqlUControl(con, sqt, sql,
                                            new SqlParameter("@UID", ug.UID),
                                            new SqlParameter("@GID", ug.GID)
                                            ));
     }
     catch (Exception e)
     {
         LogHelper.WriteLog("TUserGroupDAL.UAddRecord", e);
         return(-1);
     }
 }
        public static int UAddUserInfo(TUserInfo ui)
        {
            SqlConnection con = new SqlConnection(MsSqlHelper.connectionString);

            con.Open();
            SqlTransaction trn = con.BeginTransaction();

            try
            {
                int iUserId = UAddUserInfo(con, trn, ui);
                if (iUserId > 0)
                {
                    ui.Uid = iUserId;
                    foreach (var item in ui.Usergroups)
                    {
                        TUserGroup ug = new TUserGroup()
                        {
                            UID = ui.Uid,
                            GID = item.GID
                        };
                        if (TUserGroupDAL.UAddRecord(con, trn, ug) != 1)
                        {
                            throw new Exception("添加用户组失败");
                        }
                    }

                    trn.Commit();
                    con.Close();
                    con.Dispose();
                    return(1);
                }
                else
                {
                    throw new Exception("添加UserInfo出错");
                }
            }
            catch (Exception e)
            {
                LogHelper.WriteLog("TUserInfoDAL.UAddUserInfo1", e);
                trn.Rollback();
                con.Close();
                con.Dispose();
                return(0);
            }
        }
Example #3
0
 public ActionResult UserGroup()
 {
     int gid = Converter.ToInt(Request.QueryString["gid"], 0);
     string sql = "select ID,GroupName from TUserGroup";
     DataTable dt = APIDataContextProxy.GetTable(null, sql, CommandType.Text);
     ViewData["UserGroup"] = dt;
     TUserGroup model = new TUserGroup();
     if (gid > 0)
     {
         APIDataDataContext db = APIDataContextProxy.APIDB;
         {
             var res = db.TUserGroup.Where(p => p.ID == gid).FirstOrDefault();
             if (res != null)
                 model = res;
             else
                 return Content("<h1>该用户分组不存在!</h1>");
         }
     }
     ViewData.Model = model;
     return View();
 }
Example #4
0
        public ActionResult PostUserGroup()
        {
            int Id = 0;  //Id
            string name = ""; //登陆名
            string Type = "";  //type
            string msg = "";  //提示信息
            bool fruit = false;  //结果

            if (!Request.IsAjaxRequest())
                return Content("{result:'fail',msg:'非法请求'}");
            int id = Converter.ToInt(Request.Form["ID"], 0);
            string gname = Converter.ToString(Request.Form["GroupName"]).Trim();
            string minamount = Converter.ToString(Request.Form["MinAmount"]).Trim();
            string maxware = Converter.ToString(Request.Form["MaxWare"]).Trim();
            string maxoper = Converter.ToString(Request.Form["MaxOperate"]).Trim();
            string minwaretime = Converter.ToString(Request.Form["MinWareTime"]).Trim();
            string minvolume = Converter.ToString(Request.Form["MinVolume"]).Trim();
            string maxvolume = Converter.ToString(Request.Form["MaxVolume"]).Trim();
            string bwr = Converter.ToString(Request.Form["BalanceWarnRate"]).Trim();
            string liquid = Converter.ToString(Request.Form["LiquidationRate"]).Trim();
            int scale = Converter.ToInt(Request.Form["Scale"],0);
            //string lwr = Converter.ToString(Request.Form["LossWarnRate"]).Trim();

            int allowlogin = Converter.ToInt(Request.Form["AllowLogin"], -1);
            int allowtrade = Converter.ToInt(Request.Form["AllowTrade"], -1);
            int aeo = Converter.ToInt(Request.Form["AllowEntrustOrder"], -1);
            int ed = Converter.ToInt(Request.Form["EntrustDeadLine"], 0);
            int pldl = Converter.ToInt(Request.Form["ProLossDeadLine"], 0);
            int atwt = Converter.ToInt(Request.Form["AllowTwoWayTrade"], -1);
            int aowt = Converter.ToInt(Request.Form["AllowOneWayTrade"], -1);
            int abw = Converter.ToInt(Request.Form["AllowBulkWare"], -1);
            int aft = Converter.ToInt(Request.Form["AllowFlashTrade"], -1);
            string bb = Converter.ToString(Request.Form["BalanceBonus"]).Trim();
            //string resp = Converter.ToString(Request.Form["ResponseTime"]).Trim();
            string low = Converter.ToString(Request.Form["OffsetLow"]).Trim();
            //string high = Converter.ToString(Request.Form["OffsetHigh"]).Trim();
            int allOcu = Converter.ToInt(Request.Form["AllowOccupyPrePay"], 0);

            string errMsg = "";
            if (gname == "")
                errMsg += "用户组名称不能为空;";
            double minamount1 = 0d;
            if (!double.TryParse(minamount, out minamount1) || minamount1 < 0)
                errMsg += "最小入金必须为大于0的数;";
            double maxware1 = 0d;
            if (!double.TryParse(maxware, out maxware1) || maxware1 < 0)
                errMsg += "持仓量限制必须为大于0的数;";
            int maxoper1 = 0;
            if (!int.TryParse(maxoper, out maxoper1) || maxoper1 < 0)
                errMsg += "当日操作次数必须为大于等于0的正数;";
            int minwaretime1 = 0;
            if (!int.TryParse(minwaretime, out minwaretime1) || minwaretime1 < 0)
                errMsg += "持仓最少时间必须是大于等于0的正数;";
            double minvolume1 = 0d;
            if (!double.TryParse(minvolume, out minvolume1) || minvolume1 < 0)
                errMsg += "最低成交量必须为大于等于0的数;";
            double maxvolume1 = 0d;
            if (!double.TryParse(maxvolume, out maxvolume1) || maxvolume1 < 0)
                errMsg += "最大成交量必须为大于等于0的数;";
            if (minvolume1 >= maxvolume1)
                errMsg += "最低成交量不能大于最大成交量;";
            double bwr1 = 0d;
            if (!double.TryParse(bwr, out bwr1) || bwr1 < 0)
                errMsg += "余额预警比率必须为大于等于0的数;";
            double liquid1 = 0d;
            if (!double.TryParse(liquid, out liquid1) || liquid1 < 0)
                errMsg += "强制平仓比率必须为大于等于0的数;";
            //double pwr1 = 0d;
            //if (!double.TryParse(pwr, out pwr1) || pwr1 < 0)
            //    errMsg += "账户盈利预警必须为大于等于0的数;";
            //double lwr1 = 0d;
            //if (!double.TryParse(lwr, out lwr1) || lwr1 < 0)
            //    errMsg += "账户亏损预警必须为大于等于0的数";

            double bb1 = 0d;
            if (!double.TryParse(bb, out bb1) || bb1 < 0)
                errMsg += "账户余额红利必须为大于等于0的数;";
            //int resp1 = 0;
            //if (!int.TryParse(resp, out resp1) || resp1 < 0)
            //    errMsg += "响应时间必须为大于等于0的正整数;";
            double low1 = 0d;
            if (!double.TryParse(low, out low1) || low1 < 0)
                errMsg += "允许偏差值必须为大于等于0的数";
            //double high1 = 0d;
            //if (!double.TryParse(high, out high1) || high1 < 0)
            //    errMsg += "偏差上限必须为大于等于0的数";
            //if (low1 >= high1)
            //    errMsg += "偏差必须小于偏差上限;";
            if (errMsg.Length > 0)
                return Content("{result:'fail',msg:'" + errMsg + "'}");
            try
            {
                TOperationLog OLog = new TOperationLog();
                //修改
                if (id > 0)
                {
                    APIDataDataContext db = APIDataContextProxy.APIDB;
                    {
                        int count = (from p in db.TUserGroup where p.ID != id && p.GroupName.ToLower() == gname select p).Count();
                        if (count > 0)
                            return Content("{result:'fail',msg:'分组名已存在,不能重复!'}");
                        TUserGroup entity = db.TUserGroup.Where(p => p.ID == id).FirstOrDefault();
                        OLog.BeforeValue = ObjectToJson.ModelToJson(entity);
                        if (entity == null)
                            return Content("{result:'fail',msg:'修改失败,分组不存在!'}");
                        entity.GroupName = gname;
                        entity.MinAmount = minamount1;
                        entity.MaxWare = maxware1;
                        entity.MaxOperate = maxoper1;
                        entity.MinWareTime = minwaretime1;
                        entity.MinVolume = minvolume1;
                        entity.MaxVolume = maxvolume1;
                        entity.BalanceWarnRate = bwr1;
                        entity.LiquidationRate = liquid1;
                        entity.Scale = scale;
                        //entity.ProfitWarnRate = pwr1;
                        //entity.LossWarnRate = lwr1;
                        entity.AllowLogin = allowlogin == 1;
                        entity.AllowTrade = allowtrade == 1;
                        entity.AllowEntrustOrder = aeo == 1;
                        entity.EntrustDeadLine = ed;
                        entity.ProLossDeadLine = pldl;
                        entity.AllowBulkWare = abw == 1 ? true : false;
                        entity.BalanceBonus = bb1;
                        //entity.ResponseTime = resp1;
                        //entity.OffsetHigh = high1;
                        entity.OffsetLow = low1;
                        entity.AllowFlashTrade = aft == 1;
                        entity.AllowOccupyPrePay = allOcu == 1;
                        if (aft == 0)
                        {
                            entity.AllowTwoWayTrade = false;
                            entity.AllowOneWayTrade = false;
                        }
                        else
                        {
                            entity.AllowTwoWayTrade = atwt == 1;
                            entity.AllowOneWayTrade = aowt == 1;
                        }
                        db.SubmitChanges();

                        OLog.UpdateValue = ObjectToJson.ModelToJson(entity);
                        //写入操作日志
                        OLog.UserID = Convert.ToInt32(Session["ID"]);
                        OLog.UserType = 2;//0 用户 1 会员 2 员工
                        OLog.CreateDate = DateTime.Now;
                        OLog.PageName = "修改分组管理";
                        Converter.InsertOperationLog(OLog);
                        //存入日志
                        Id = Convert.ToInt32(Session["ID"]); //id
                        Type = Session["Type"].ToString();  //类型
                        msg = "分组修改成功";
                        fruit = true;
                        Converter.InsertLog(Id, name, Type, msg, fruit);

                        return Content("{result:'success',msg:'分组修改成功!',id:" + entity.ID + "}");
                    }
                }
                else
                {
                    APIDataDataContext db = APIDataContextProxy.APIDB;
                    {
                        OLog.BeforeValue = "";;
                        int count = (from p in db.TUserGroup where p.GroupName.ToLower() == gname select p).Count();
                        if (count > 0)
                            return Content("{result:'fail',msg:'分组名已存在,不能重复!'}");
                        TUserGroup entity = new TUserGroup();
                        if (entity == null)
                            return Content("{result:'fail',msg:'修改失败,分组不存在!'}");
                        entity.GroupName = gname;
                        entity.MinAmount = minamount1;
                        entity.MaxWare = maxware1;
                        entity.MaxOperate = maxoper1;
                        entity.MinWareTime = minwaretime1;
                        entity.MinVolume = minvolume1;
                        entity.MaxVolume = maxvolume1;
                        entity.BalanceWarnRate = bwr1;
                        entity.LiquidationRate = liquid1;
                        entity.Scale = scale;
                        //entity.ProfitWarnRate = pwr1;
                        //entity.LossWarnRate = lwr1;
                        entity.AllowLogin = allowlogin == 1 ? true : false;
                        entity.AllowTrade = allowtrade == 1 ? true : false;
                        entity.AllowEntrustOrder = aeo == 1 ? true : false;
                        entity.EntrustDeadLine = ed;
                        entity.ProLossDeadLine = pldl;
                        entity.AllowBulkWare = abw == 1 ? true : false;
                        entity.BalanceBonus = bb1;
                        //entity.ResponseTime = resp1;
                        //entity.OffsetHigh = high1;
                        entity.OffsetLow = low1;
                        entity.AllowFlashTrade = aft == 1;
                        entity.AllowOccupyPrePay = allOcu == 1;
                        if (aft == 0)
                        {
                            entity.AllowTwoWayTrade = false;
                            entity.AllowOneWayTrade = false;
                        }
                        else
                        {
                            entity.AllowTwoWayTrade = atwt == 1;
                            entity.AllowOneWayTrade = aowt == 1;
                        }
                        db.TUserGroup.InsertOnSubmit(entity);
                        db.SubmitChanges();
                        OLog.UpdateValue = ObjectToJson.ModelToJson(entity);
                        //写入操作日志
                        OLog.UserID = Convert.ToInt32(Session["ID"]);
                        OLog.UserType = 2;//0 用户 1 会员 2 员工
                        OLog.CreateDate = DateTime.Now;
                        OLog.PageName = "新增分组管理";
                        Converter.InsertOperationLog(OLog);
                        //存入日志
                        Id = Convert.ToInt32(Session["ID"]); //id
                        Type = Session["Type"].ToString();  //类型
                        msg = "分组添加成功";
                        fruit = false;
                        Converter.InsertLog(Id, name, Type, msg, fruit);

                        return Content("{result:'success',msg:'分组添加成功!',id:" + entity.ID + "}");
                    }
                }
            }
            catch
            {

                //存入日志
                Id = Convert.ToInt32(Session["ID"]); //id
                Type = Session["Type"].ToString();  //类型
                msg = "分组编辑失败";
                fruit = false;
                Converter.InsertLog(Id, name, Type, msg, fruit);

                return Content("{result:'fail',msg:'出现位置错误,操作失败!'}");
            }
        }
Example #5
0
        //public ActionResult GetNewestVersion()
        //{
        //    APIDataDataContext db = APIDataContextProxy.APIDB;
        //    var sedition = (from b in db.TSysPreference select b.SEdition);
        //    JObject job = new JObject();
        //    job["sedition"] = sedition;
        //}
        public ActionResult Index()
        {
            if (requestType == "testping")
            {
                return Content("connected");
            }
            if (requestType.ToLower() == "gettestaccount")
            {
                return Content(GetTestAccount(Request["num"]));
            }
            string msg = "";
            userid = 0;
            APIDataDataContext db = APIDataContextProxy.APIDB;
            //var aa = db.TSysPreference.FirstOrDefault();
            sysPreference = db.TSysPreference.FirstOrDefault();

            if (requestType.ToLower() != "login" && requestType.ToLower() != "regist" && requestType.ToLower() != "version")
            {
                var usertoken = (from c in db.Access where c.access_token == token select c.userid).FirstOrDefault();
                userid = usertoken;
                JObject jo = new JObject();
                if (usertoken <= 0)
                {
                    JObject jomsg = new JObject();
                    jomsg["success"] = 6666;
                    jomsg["msg"] = "token不正确!";
                    return Content(jo.ToString());
                }
            }
            if (requestType == "Version")
            {

                JObject jobj = new JObject();
                JObject job = new JObject();
                job["Version"] = sysPreference.SEdition;
                job["Version1"] = sysPreference.SEdition1;
                job["Version2"] = sysPreference.SEdition2;
                jobj["success"] = "TRUE";
                jobj["content"] = job;
                return Content(jobj.ToString());

            }
            var group = (from c in db.TUserGroup
                         join b in db.TRealAccounts on c.ID equals b.GroupID
                         where b.ID == userid
                         select c).FirstOrDefault();
            userGroup = group;
            if (userGroup == null)
            {
                userGroup = (from c in db.TUserGroup where c.IsDefault == true select c).FirstOrDefault();
            }
            switch (requestType.ToLower())
            {
                case "login":
                    msg = Login();
                    break;
                case "regist":
                    msg = Regist();
                    break;
                case "getuserip":
                    msg = GetUserIp;
                    break;
                case "announcelist":
                    msg = AnnounceList();
                    break;
                case "announce":
                    msg = Announce();
                    break;
                case "analysislist":
                    msg = AnalysisList();
                    break;
                case "analysis":
                    msg = Analysis();
                    break;
                case "databytimespan":
                    msg = GetDataByTimeSpan();
                    break;
                case "lateschardate":
                    msg = LatestChartData();
                    break;
                case "allchartdate":
                    msg = GetData();
                    break;
                case "getproducts":
                    msg = GetProductList();
                    break;
                case "getproductinfo":
                    msg = GetProductInfo();
                    break;
                case "createorder":
                    msg = CreateOrder();
                    break;
                case "editorder":
                    msg = EditOrder();
                    break;
                case "delorder":
                    msg = DelOrder();
                    break;
                //case "getlatestchartdata":
                //   return GetLatestChartData();
                //case "getchartdatainfo":
                //    return GetChartDataInfo();
                case "getnewsbytype":
                    msg = GetNewsByType();
                    break;
                case "getnewsinfobyid":
                    msg = GetNewsInfoById();
                    break;
                case "orderinfo":
                    msg = OrderInfo();
                    break;
                case "getproductsinfo":
                    msg = GetProductsInfo();
                    break;
                case "gettproducts":
                    msg = GetTProducts();
                    break;
                case "getemails":
                    msg = GetEmails();
                    break;
                case "getproductprice":
                    msg = GetProductPrice();
                    break;
                case "getemailcontent":
                    msg = GetEmailContent();
                    break;
                case "getdatalist":
                    msg = GetDataList();
                    break;
                case "getclosedatalist":
                    msg = GetCloseDataList();
                    break;
                case "getorderinfo":
                    msg = GetOrderInfo();
                    break;
                case "operatecollection":
                    msg = OperateCollection();
                    break;
                case "closeorder":
                    msg = CloseOrder();
                    break;
                case "closeallorder":
                    msg = CloseAllOrder();
                    break;
                case "getcollectionproductlist":
                    msg = GetCollectionProductList();
                    break;
                case "getuserinfo":
                    msg = GetUserInfo();
                    break;
                case "getproductconfig":
                    msg = GetProductConfig();
                    break;
                case "getaccountinfo":
                    msg = getAccountInfo();
                    break;
                case "repeatorder":
                    msg = RepeatOrder();
                    break;
                case "updatepwd":
                    msg = UpdatePwd();
                    break;
                case "logout":
                    msg = Logout();
                    break;

            }
            //msg = GetProductInfo();
            return Content(msg);
        }
Example #6
0
        public string GetUserInfo()
        {
            try
            {

                APIDataDataContext db = APIDataContextProxy.APIDB;

                var Day1Type = sysPreference.Day1Type;
                var Day1BeginTime = sysPreference.Day1BeginTime;
                var Day1EndTime = sysPreference.Day1EndTime;

                var Day2Type = sysPreference.Day2Type;
                var Day2BeginTime = sysPreference.Day2BeginTime;
                var Day2EndTime = sysPreference.Day2EndTime;

                var Day3Type = sysPreference.Day3Type;
                var Day3BeginTime = sysPreference.Day3BeginTime;
                var Day3EndTime = sysPreference.Day3EndTime;

                var Day4Type = sysPreference.Day4Type;
                var Day4BeginTime = sysPreference.Day4BeginTime;
                var Day4EndTime = sysPreference.Day4EndTime;

                var Day5Type = sysPreference.Day5Type;
                var Day5BeginTime = sysPreference.Day5BeginTime;
                var Day5EndTime = sysPreference.Day5EndTime;

                var Day6Type = sysPreference.Day6Type;
                var Day6BeginTime = sysPreference.Day6BeginTime;
                var Day6EndTime = sysPreference.Day6EndTime;

                var Day7Type = sysPreference.Day7Type;
                var Day7BeginTime = sysPreference.Day7BeginTime;
                var Day7EndTime = sysPreference.Day7EndTime;

                DateTime begintime = DateTime.Now;
                DateTime endtime = DateTime.Now;
                DateTime nowdate = DateTime.Now;

                var aa = (from c in db.THoliday where c.BeginDate <= nowdate && c.EndDate >= nowdate select c).FirstOrDefault();

                int dayofweek = (int)(nowdate.DayOfWeek);
                if (dayofweek == 0)
                {
                    var a0 = Day6Type.Value;
                    var a1 = DateTime.Parse("1991-01-01 " + Day6EndTime);
                    var a2 = DateTime.Parse(nowdate.ToString("1991-01-01 HH:mm:ss"));
                    if (a0 == 2 && a1 > a2)
                    {
                        begintime = DateTime.Parse(nowdate.ToString("yyyy-MM-dd " + Day6BeginTime)).AddDays(-1);
                        endtime = DateTime.Parse(nowdate.ToString("yyyy-MM-dd " + Day6EndTime));
                    }
                    else
                    {
                        begintime = DateTime.Parse(nowdate.ToString("yyyy-MM-dd " + Day7BeginTime));
                        endtime = DateTime.Parse(nowdate.ToString("yyyy-MM-dd " + Day7EndTime));
                        if (Day7Type == 2)
                        {
                            endtime = endtime.AddDays(1);
                        }
                    }
                }
                else if (dayofweek == 1)
                {
                    var a0 = Day7Type.Value;
                    var a1 = DateTime.Parse("1991-01-01 " + Day7EndTime);
                    var a2 = DateTime.Parse(nowdate.ToString("1991-01-01 HH:mm:ss"));
                    if (a0 == 2 && a1 > a2)
                    {
                        begintime = DateTime.Parse(nowdate.ToString("yyyy-MM-dd " + Day7BeginTime)).AddDays(-1);
                        endtime = DateTime.Parse(nowdate.ToString("yyyy-MM-dd " + Day7EndTime));
                    }
                    else
                    {
                        begintime = DateTime.Parse(nowdate.ToString("yyyy-MM-dd " + Day1BeginTime));
                        endtime = DateTime.Parse(nowdate.ToString("yyyy-MM-dd " + Day1EndTime));
                        if (Day1Type == 2)
                        {
                            endtime = endtime.AddDays(1);
                        }
                    }
                }
                else if (dayofweek == 2)
                {
                    var a0 = Day1Type.Value;
                    var a1 = DateTime.Parse("1991-01-01 " + Day1EndTime);
                    var a2 = DateTime.Parse(nowdate.ToString("1991-01-01 HH:mm:ss"));
                    if (a0 == 2 && a1 > a2)
                    {
                        begintime = DateTime.Parse(nowdate.ToString("yyyy-MM-dd " + Day1BeginTime)).AddDays(-1);
                        endtime = DateTime.Parse(nowdate.ToString("yyyy-MM-dd " + Day1EndTime));
                    }
                    else
                    {
                        begintime = DateTime.Parse(nowdate.ToString("yyyy-MM-dd " + Day2BeginTime));
                        endtime = DateTime.Parse(nowdate.ToString("yyyy-MM-dd " + Day2EndTime));
                        if (Day2Type == 2)
                        {
                            endtime = endtime.AddDays(1);
                        }
                    }
                }
                else if (dayofweek == 3)
                {
                    var a0 = Day2Type.Value;
                    var a1 = DateTime.Parse("1991-01-01 " + Day2EndTime);
                    var a2 = DateTime.Parse(nowdate.ToString("1991-01-01 HH:mm:ss"));
                    if (a0 == 2 && a1 > a2)
                    {
                        begintime = DateTime.Parse(nowdate.ToString("yyyy-MM-dd " + Day2BeginTime)).AddDays(-1);
                        endtime = DateTime.Parse(nowdate.ToString("yyyy-MM-dd " + Day2EndTime));
                    }
                    else
                    {
                        begintime = DateTime.Parse(nowdate.ToString("yyyy-MM-dd " + Day3BeginTime));
                        endtime = DateTime.Parse(nowdate.ToString("yyyy-MM-dd " + Day3EndTime));
                        if (Day3Type == 2)
                        {
                            endtime = endtime.AddDays(1);
                        }
                    }
                }
                else if (dayofweek == 4)
                {
                    var a0 = Day3Type.Value;
                    var a1 = DateTime.Parse("1991-01-01 " + Day3EndTime);
                    var a2 = DateTime.Parse(nowdate.ToString("1991-01-01 HH:mm:ss"));
                    if (a0 == 2 && a1 > a2)
                    {
                        begintime = DateTime.Parse(nowdate.ToString("yyyy-MM-dd " + Day3BeginTime)).AddDays(-1);
                        endtime = DateTime.Parse(nowdate.ToString("yyyy-MM-dd " + Day3EndTime));
                    }
                    else
                    {
                        begintime = DateTime.Parse(nowdate.ToString("yyyy-MM-dd " + Day4BeginTime));
                        endtime = DateTime.Parse(nowdate.ToString("yyyy-MM-dd " + Day4EndTime));
                        if (Day4Type == 2)
                        {
                            endtime = endtime.AddDays(1);
                        }
                    }
                }
                else if (dayofweek == 5)
                {
                    var a0 = Day4Type.Value;
                    var a1 = DateTime.Parse("1991-01-01 " + Day4EndTime);
                    var a2 = DateTime.Parse(nowdate.ToString("1991-01-01 HH:mm:ss"));
                    if (a0 == 2 && a1 > a2)
                    {
                        begintime = DateTime.Parse(nowdate.ToString("yyyy-MM-dd " + Day4BeginTime)).AddDays(-1);
                        endtime = DateTime.Parse(nowdate.ToString("yyyy-MM-dd " + Day4EndTime));
                    }
                    else
                    {
                        begintime = DateTime.Parse(nowdate.ToString("yyyy-MM-dd " + Day5BeginTime));
                        endtime = DateTime.Parse(nowdate.ToString("yyyy-MM-dd " + Day5EndTime));
                        if (Day5Type == 2)
                        {
                            endtime = endtime.AddDays(1);
                        }
                    }
                }
                else if (dayofweek == 6)
                {
                    var a0 = Day5Type.Value;
                    var a1 = DateTime.Parse("1991-01-01 " + Day5EndTime);
                    var a2 = DateTime.Parse(nowdate.ToString("1991-01-01 HH:mm:ss"));
                    if (a0 == 2 && a1 > a2)
                    {
                        begintime = DateTime.Parse(nowdate.ToString("yyyy-MM-dd " + Day5BeginTime)).AddDays(-1);
                        endtime = DateTime.Parse(nowdate.ToString("yyyy-MM-dd " + Day5EndTime));
                    }
                    else
                    {
                        begintime = DateTime.Parse(nowdate.ToString("yyyy-MM-dd " + Day6BeginTime));
                        endtime = DateTime.Parse(nowdate.ToString("yyyy-MM-dd " + Day6EndTime));
                        if (Day6Type == 2)
                        {
                            endtime = endtime.AddDays(1);
                        }
                    }
                }
                bool isTrading = true;

                if (nowdate <= begintime || nowdate >= endtime)
                { isTrading = false; }
                else if (aa != null)
                { isTrading = false; }
                TRealAccounts userinfo = (from c in db.TRealAccounts where c.ID == userid select c).FirstOrDefault();
                string Name = userinfo.Name;
                string AccountType = "模拟";
                if (userinfo.AccountType == 1)
                    AccountType = "实盘";
                var ab = 0.00;
                if(userinfo.AccountMoney>0)
                ab = Math.Floor(userinfo.AccountMoney.Value * 100) / 100;//取2位小数,

                string AccountMoney = ab.ToString("F2");
                var allProfitAndLoss = 0.0;
                var allprice = 0.0;
                var allOccupyFunds = 0.0;
                var allProfitAndLossNet = 0.0;
                #region 占用资金的订单
                TUserGroup userGroup = (from c in db.TUserGroup where c.ID == userinfo.GroupID select c).FirstOrDefault();
                if (userGroup == null)
                {
                    userGroup = (from c in db.TUserGroup where c.IsDefault == true select c).FirstOrDefault();
                }
                if (userGroup == null)
                {
                    userGroup = (from c in db.TUserGroup select c).FirstOrDefault();
                }

                var UGAllowTrade = userGroup.AllowTrade;
                var UAllowTrade = userinfo.AllowTrade;
                if (UGAllowTrade == false || UAllowTrade == false)
                    isTrading = false;
                bool AllowOccupyPrePay = userGroup.AllowOccupyPrePay.Value;
                //查询所有在手订单
                var order = (from c in db.TOrders
                             join a in db.TProducts on c.ProductID equals a.ID
                             join b in db.TLastClose on a.ProductCode equals b.ProductCode
                             where c.TRealAccountsID == userid && c.OrderType == 1 && c.OrderState == 1
                             select new
                             {
                                 c,
                                 b,
                                 a
                             }).ToList();
                var num = order.Count();

                //查询委托订单
                var order2 = (from c in db.TOrders
                              join a in db.TProducts on c.ProductID equals a.ID
                              join b in db.TLastClose on a.ProductCode equals b.ProductCode
                              where c.TRealAccountsID == userid && c.OrderType == 0 && c.OrderState == 1
                              select new
                              {
                                  c,
                                  b,
                                  a
                              }).ToList();
                var num2 = order2.Count();
                if (AllowOccupyPrePay == true)
                {
                    order = order.Union(order2).ToList();
                }
                var abc = 0.0;
                //var priceList = (from c in db.TLastClose select c).ToList();//查询现在所有产品
                foreach (var items in order)
                {

                    //var LastCloses = (from c in priceList where c.ProductCode == items.a.ProductCode.ToString() select c.LastClose).FirstOrDefault();

                    //var LastClose = Convert.ToDouble(Converter.ToFloat(LastCloses).ToString("F" + Scale));
                    //jb["NetProfit"] = (ProfitAndLoss - Deposit - Interest).ToString("F" + Scale);
                    var Scale = Converter.ToInt((items.a.Scale), 2);
                    var fudongyingkui = 0.0;//浮动盈亏
                    if (items.c.Deal == true)//买
                        fudongyingkui = (Converter.ToFloat(items.b.LastClose.Value.ToString("F" + Scale)) - Converter.ToFloat(items.c.OpenPrice)) * Converter.ToFloat(items.c.OrderCount) * Converter.ToFloat(items.a.ContractNumber);
                    else//卖
                        fudongyingkui = (Converter.ToFloat(items.c.OpenPrice) - Converter.ToFloat(items.b.LastClose.Value.ToString("F" + Scale)) - Converter.ToFloat(items.a.Fixedly)) * Converter.ToFloat(items.c.OrderCount) * Converter.ToFloat(items.a.ContractNumber);
                    //fudongyingkui = Converter.ToFloat(items.c.ProfitAndLoss);
                    //fudongyingkui = Converter.ToFloat(fudongyingkui);
                    var jiagongfei = Converter.ToFloat(items.c.Deposit);      //加工费(已计算好)
                    //jiagongfei = Converter.ToFloat(jiagongfei);
                    var cangxi = Converter.ToFloat(items.c.Interest);         //仓息(已计算好)
                    //cangxi = Converter.ToFloat(cangxi);
                    var baozhengjin = Converter.ToFloat(items.c.OccupyFunds); //占用资金 保证金OccupyFundsType(已计算好)
                    //baozhengjin = Converter.ToFloat(baozhengjin);
                    //var ykjl = Converter.ToFloat(items.c.NetProfit);        //盈亏净利(已计算好)
                    var ykjl = Converter.ToFloat(fudongyingkui - jiagongfei - cangxi);
                    allprice = allprice + ykjl;
                    allOccupyFunds = allOccupyFunds - baozhengjin;
                    allProfitAndLoss = allProfitAndLoss + fudongyingkui;

                    //计算盈亏

                    allProfitAndLossNet = allProfitAndLossNet + ykjl;
                }
                //var AvailablePrice = Converter.ToFloat(userinfo.AccountMoney) - allprice;  //可用余额
                //AvailablePrice = Converter.ToFloat(AvailablePrice);
                #endregion

                string AccountNet = (ab + allprice).ToString("f2");//余额-盈亏毛利

                string MarginOccupied = (allOccupyFunds * -1).ToString("f2");

                string AvailableOccupied = (Convert.ToDouble(AccountNet) + allOccupyFunds).ToString("f2");
                string LossWarnRate = "0";
                if (Convert.ToDouble(MarginOccupied) != 0)
                {
                    try
                    {
                        LossWarnRate = Convert.ToInt32((Convert.ToDouble(AccountNet) / Convert.ToDouble(MarginOccupied)) * 100) + "";
                    }
                    catch
                    {
                        LossWarnRate = Convert.ToInt64((Convert.ToDouble(AccountNet) / Convert.ToDouble(MarginOccupied)) * 100) + "";
                    }

                }
                string ProfitAndLoss = allProfitAndLoss.ToString("f2") + "";
                string ProfitAndLossNet = allProfitAndLossNet.ToString("f2") + "";

                string OnlineOrder = num + "";
                string EntrustOrder = num2 + "";

                JObject job = new JObject();
                job["Name"] = Name;
                job["MaxVolume"] = userGroup.MaxVolume;//
                job["MinVolume"] = userGroup.MinVolume;
                job["Scale"] = userGroup.Scale;
                job["AccountType"] = AccountType;
                job["AccountMoney"] = AccountMoney;
                job["AccountNet"] = AccountNet;
                job["MarginOccupied"] = MarginOccupied;
                job["AvailableOccupied"] = AvailableOccupied;
                job["LossWarnRate"] = LossWarnRate;
                job["ProfitAndLoss"] = ProfitAndLoss;
                job["ProfitAndLossNet"] = ProfitAndLossNet;
                job["OnlineOrder"] = OnlineOrder;
                job["EntrustOrder"] = EntrustOrder;
                job["isTrading"] = isTrading;
                try
                {
                    job["LiquidationRate"] = userGroup.LiquidationRate;
                }
                catch
                {
                    job["LiquidationRate"] = 70;
                }
                try
                {
                    job["BalanceWarnRate"] = userGroup.BalanceWarnRate;//100
                }
                catch
                {
                    job["BalanceWarnRate"] = 100;
                }
                job["AllowFlashTrade"] = userGroup.AllowFlashTrade.ToString();
                job["AllowBulkWare"] = userGroup.AllowBulkWare.ToString();
                string EntrustDeadLinestr = "";
                DateTime datetimes = DateTime.Now;
                string datestr = "";
                int EntrustDeadLine = 1;
                try { EntrustDeadLine = userGroup.EntrustDeadLine.Value; }
                catch { }
                if (EntrustDeadLine == 1)
                {
                    EntrustDeadLinestr = "当日有效";
                    datestr = datetimes.ToString("yyyy-MM-dd 23:59:59");
                }
                else if (EntrustDeadLine == 2)
                {
                    EntrustDeadLinestr = "长期有效";
                    datestr = datetimes.AddYears(1).ToString("yyyy-MM-dd 23:59:59");
                }
                else
                {
                    EntrustDeadLinestr = "本周有效";
                    int dayofweeks = (int)datetimes.DayOfWeek;
                    if (dayofweeks == 0)
                        dayofweeks = 7;
                    int addday = 7 - dayofweeks;
                    datestr = datetimes.AddDays(addday).ToString("yyyy-MM-dd 23:59:59");

                }

                job["EntrustDeadLine"] = EntrustDeadLinestr;
                job["EntrustDeadLineDate"] = datestr;
                JObject jobj = new JObject();
                jobj["success"] = "TRUE";
                jobj["content"] = job;
                return jobj.ToString();
            }
            catch
            {
                return ErrMsg(10112, "服务器请求失败,请稍后再试!");
            }
        }
Example #7
0
        /// <summary>
        /// 创建订单
        /// 10022 开仓时间不能为空
        /// 10023 对不起您所在的用户组现在不允许交易
        /// 10024 对不起您所在的用户组现在不允许开委托订单
        /// 10025 手数范围不正确
        /// 10026 超过当日最大持仓量
        /// 10027 超过当日最大操作次数限制
        /// 10028 pid错误
        /// 10029 当前产品不支持交易
        /// 10030 超过止盈距离
        /// 10031 超过止损距离
        /// 10032 超过挂单距离
        /// 10033 当前可用余额不足
        /// 10034 创建订单失败
        /// </summary>
        /// <returns></returns>
        public string CreateOrder()
        {
            double NowPrice = Converter.ToFloat(Request["nowprice"], 0);       //现价
            int id = Converter.ToInt(Request["pid"], 0);                       //产品id
            string Deal = Converter.ToString(Request["deal"], "true");         //true (true买 false卖)默认买
            double OrderCount = Converter.ToFloat(Request["ordercount"], 1);    //手数
            double OpenPrice = Converter.ToFloat(Request["openprice"], 0);      //开仓价(委托的开仓价)
            string OpenTimes = Converter.ToString(Request["opentime"], "");    //开时间(如果是委托订单就是委托单的截止时间)
            string OperatorIP = "";  //操作Ip
            try
            {
                OperatorIP = GetUserIp;
            }
            catch { }
            double Profit = Converter.ToFloat(Request["profit"], 0);            //止盈   平仓用的
            double Loss = Converter.ToFloat(Request["loss"], 0);                //止损   平仓用的
            int OrderType = Converter.ToInt(Request["ordertype"], 1);          //订单类型  0委托 1持仓 2历史单
            int EntrustType = Converter.ToInt(Request["entrusttype"], 0);      //委托类型  0限价交易 1止损交易

            APIDataDataContext db = APIDataContextProxy.APIDB;

            //查询用户组,如果用户所在组为空,则使用默认的用户组,如果默认用户组不存在,则给第一条用户组(IsDefault)
            TRealAccounts userinfo = (from c in db.TRealAccounts where c.ID == userid select c).FirstOrDefault();
            TUserGroup userGroup = (from c in db.TUserGroup where c.ID == userinfo.GroupID select c).FirstOrDefault();

            if (userGroup == null)
            {
                userGroup = (from c in db.TUserGroup where c.IsDefault == true select c).FirstOrDefault();
            }
            if (userGroup == null)
            {
                userGroup = (from c in db.TUserGroup select c).FirstOrDefault();
            }

            DateTime OpenTime = DateTime.Now;
            if (string.IsNullOrEmpty(OpenTimes))
            {
                OpenTime = DateTime.Now.AddDays(1);
                //return ErrMsg(10022, "开仓时间不能为空!");
            }
            else
            {
                DateTime.TryParse(OpenTimes, out OpenTime);
            }
            try
            {
                if (OrderType == 0)//委托单
                {
                    if (userGroup.EntrustDeadLine.Value == 1)//当日有效
                    {
                        if (OpenTime.Date != DateTime.Now.Date)
                        {
                            return ErrMsg(10022, "委托订单必须当天有效!");
                        }
                    }
                    else if (userGroup.EntrustDeadLine.Value == 2)//长期有效
                    {
                    }
                    else//本周有效
                    {
                        int weekday2 = (int)(DateTime.Now.DayOfWeek);
                        if (weekday2 == 0)
                            weekday2 = 7;
                        var todayint2 = 7 - weekday2;
                        var aa = (OpenTime.Date - DateTime.Now.Date).Days;
                        if (aa > todayint2)
                        {
                            return ErrMsg(10022, "委托订单必须本周有效!");
                        }
                    }
                }
                //Deposit       加工费
                //OccupyFunds   占用资金

                //用户组逻辑
                #region 允许交易
                var AllowTrade = userGroup.AllowTrade;                       //允许交易
                if (AllowTrade == false)
                {
                    return ErrMsg(10023, "对不起您所在的用户组现在不允许交易!");
                }

                TRealAccounts tra = (from c in db.TRealAccounts where c.ID == userid select c).FirstOrDefault();
                var traAllowTrade = tra.AllowTrade;
                if (traAllowTrade == false)
                {
                    return ErrMsg(10023, "对不起您现在不允许交易!");
                }
                #endregion
                #region 委托交易
                var AllowEntrustOrder = userGroup.AllowEntrustOrder;         //允许委托订单
                if (AllowEntrustOrder == false && OrderType == 0)
                {
                    return ErrMsg(10024, "对不起您所在的用户组现在不允许开委托订单!");
                }
                #endregion
                #region 手数
                var MinVolume = userGroup.MinVolume;                       //最小手数
                var MaxVolume = userGroup.MaxVolume;                       //最大手数
                if (OrderCount < MinVolume || OrderCount > MaxVolume)
                {
                    return ErrMsg(10025, "手数范围在" + MinVolume + "-" + MaxVolume + "!");
                }
                #endregion
                #region 最大持仓量
                var MaxWare = userGroup.MaxWare;                           //当日最大持仓量(在手订单)
                //查询产品持仓量
                var orderWare = (from c in db.TOrders
                                 where c.TRealAccountsID == userid
                                 && c.OrderState == 1
                                 && c.OrderType == 1
                                 && c.ProductID == id
                                 && c.OpenTime.Value.Date == DateTime.Now.Date
                                 select c.OrderCount).Sum();
                if (orderWare + OrderCount > MaxWare)
                {
                    return ErrMsg(10026, "超过当日最大持仓量,当日最大持仓量为" + MaxWare + "!");
                }
                #endregion
                #region 当日操作最大次数
                var MaxOperate = userGroup.MaxOperate;                     //当日操作最大次数限制  开仓(成功的开仓平仓委托动作)
                //查询当日操作次数
                var orderOperate = (from c in db.TOrders //开仓
                                    where c.TRealAccountsID == userid
                                    && c.OrderState == 1
                                    && c.OrderType == 1
                                    && c.OpenTime.Value.Date == DateTime.Now.Date
                                    select c).Count();

                orderOperate = orderOperate + (from c in db.TOrders//委托
                                               where c.TRealAccountsID == userid
                                               && c.OrderState == 1
                                               && c.OrderType == 0
                                               && c.UpdateTime.Value.Date == DateTime.Now.Date
                                               select c).Count();

                orderOperate = orderOperate + (from c in db.TOrders//平仓
                                               where c.TRealAccountsID == userid
                                               && c.OrderState == 2
                                               && c.OrderType == 2
                                               && c.OpenTime.Value.Date == DateTime.Now.Date
                                               select c).Count();
                if (orderOperate >= MaxOperate)
                {
                    return ErrMsg(10027, "超过当日最大操作次数限制,当日最大操作次数为" + MaxOperate + "!");
                }
                #endregion
                //LiquidationRate 强制平仓比率
                var AllowOccupyPrePay = userGroup.AllowOccupyPrePay;         //允许委托订单占用预付款(委托订单占用保证金)

                //产品逻辑
                var product = (from c in db.TProducts where c.ID == id select c).FirstOrDefault();
                if (product == null)
                {
                    return ErrMsg(10028, "pid错误!");
                }
                var Scale = Converter.ToFloat(product.Scale);
                #region 否可以开仓交易 是否显示
                var IsBuy = product.IsBuy;                       //是否可以开仓交易
                var IsLook = product.IsLook;                     //是否显示
                if (IsBuy == false || IsLook == false)
                {
                    return ErrMsg(10029, "当前产品不支持交易!");
                }

                #endregion
                #region 止盈·止损 距离
                var ProfitSize = product.ProfitSize;           //止盈距离
                //if (Profit > ProfitSize)
                //{
                //    return ErrMsg(10030, "超过止盈距离,止盈距离为" + ProfitSize + "!");
                //}
                var LossSize = product.LossSize;               //止损距离
                //if (Loss > LossSize)
                //{
                //    return ErrMsg(10031, "超过止损距离,止损距离为" + LossSize + "!");
                //}
                #endregion
                #region 挂单距离
                var lastclose = (from c in db.TLastClose where c.ProductCode == product.ProductCode select c).FirstOrDefault();
                var lastcloseprice = 0.0;//现价(如果是买,则是当前最新价+点差)
                if(OrderType==1)
                {
                    if (lastclose == null)
                    {
                        return ErrMsg(10050, "价格已经改变请重新开仓!");
                    }
                    var OffsetLow = userGroup.OffsetLow;//允许的价格浮动
                    var OffsetHigh = userGroup.OffsetHigh;
                    //以当前数据库的最新价格为准,而不是使用用户传入的价格
                    if (Deal.ToLower() == "true")
                    {
                        lastcloseprice = product.Fixedly.Value + lastclose.LastClose.Value;
                    }
                    else
                    {
                        lastcloseprice = lastclose.LastClose.Value;
                    }
                    if (lastcloseprice - OpenPrice > 0)
                    {
                        if (((lastcloseprice - OpenPrice) >= OffsetLow))//&& (lastcloseprice - OpenPrice) <= OffsetHigh))
                            return ErrMsg(10050, "价格已经改变请重新开仓!");
                    }
                    else
                    {
                        if (((OpenPrice - lastcloseprice) >= OffsetLow))// && (OpenPrice - lastcloseprice) <= OffsetHigh))
                            return ErrMsg(10050, "价格已经改变请重新开仓!");
                    }
                }
                else
                {
                    if (Deal.ToLower() == "true")
                    {
                        lastcloseprice = product.Fixedly.Value + lastclose.LastClose.Value;
                    }
                    else
                    {
                        lastcloseprice = lastclose.LastClose.Value;
                    }
                }
                NowPrice = lastcloseprice;
                var EntrustSize = product.EntrustSize;         //挂单距离 委托开盘价为当前开盘价格+ - 挂单距离

                //if (OrderType != 1 && !(NowPrice - EntrustSize <= OpenPrice && NowPrice + EntrustSize >= OpenPrice))
                //{
                //    return ErrMsg(10032, "超过挂单距离,挂单距离离为" + EntrustSize + "!");
                //}

                if (OrderType == 0)
                    if (EntrustType == 0)//0限价交易
                    {
                        if (!(NowPrice + EntrustSize <= OpenPrice) && Deal == "false")//卖
                        {
                            return ErrMsg(10032, "超过挂单距离,挂单距离离为" + EntrustSize + "!");
                        }
                        else if (!(NowPrice - EntrustSize >= OpenPrice) && Deal == "true")//买
                        {
                            return ErrMsg(10032, "超过挂单距离,挂单距离离为" + EntrustSize + "!");
                        }
                    }
                    else//止损交易
                    {
                        if (!(NowPrice - EntrustSize >= OpenPrice) && Deal == "false")//卖
                        {
                            return ErrMsg(10032, "超过挂单距离,挂单距离离为" + EntrustSize + "!");
                        }
                        else if (!(NowPrice + EntrustSize <= OpenPrice) && Deal == "true")//买
                        {
                            return ErrMsg(10032, "超过挂单距离,挂单距离离为" + EntrustSize + "!");
                        }

                    }

                #endregion
                var ContractNumber = product.ContractNumber;   //合约数(乘)
                //查询所有在手订单
                var order = (from c in db.TOrders
                             join a in db.TProducts on c.ProductID equals a.ID
                             join b in db.TLastClose on a.ProductCode equals b.ProductCode
                             where c.TRealAccountsID == userid && c.OrderType == 1 && c.OrderState == 1
                             select new
                             {
                                 c,
                                 b,
                                 a
                             }).ToList();
                //如果委托订单占用保证金,则把委托订单也计算在内(计算风险比率 70%)
                if (AllowOccupyPrePay == true)
                {
                    var order2 = (from c in db.TOrders
                                  join a in db.TProducts on c.ProductID equals a.ID
                                  join b in db.TLastClose on a.ProductCode equals b.ProductCode
                                  where c.TRealAccountsID == userid && c.OrderType == 0 && c.OrderState == 1
                                  select new
                                  {
                                      c,
                                      b,
                                      a
                                  }).ToList();
                    order = order.Union(order2).ToList();
                }
                var allprice = 0.0;//所有占用保证金的订单的盈亏净利之和(浮动盈亏-仓息-加工费)-所用订单的保证金
                foreach (var item in order)
                {
                    var Scales=Converter.ToInt(item.a.Scale,2);
                    var fudongyingkui = 0.0;//浮动盈亏
                    if (item.c.OrderType != 0)
                    {
                        if (item.c.Deal == true)//买
                            fudongyingkui = (Converter.ToFloat(item.b.LastClose.Value.ToString("F"+Scales)) - item.c.OpenPrice.Value) * item.a.ContractNumber.Value * item.c.OrderCount.Value;
                        else//卖
                            fudongyingkui = (item.c.OpenPrice.Value - Converter.ToFloat(item.b.LastClose.Value.ToString("F"+Scales)) - Converter.ToFloat(item.a.Fixedly)) * item.a.ContractNumber.Value * item.c.OrderCount.Value;

                    }
                    fudongyingkui = Converter.ToFloat(fudongyingkui.ToString("F" + Scales));
                    //fudongyingkui = Converter.ToFloat(item.c.ProfitAndLoss);
                    var jiagongfei = Converter.ToFloat(item.c.Deposit);      //加工费
                    var cangxi = Converter.ToFloat(item.c.Interest);         //仓息
                    var baozhengjin = Converter.ToFloat(item.c.OccupyFunds); //占用资金 保证金OccupyFundsType
                    allprice = allprice + fudongyingkui - jiagongfei - cangxi - baozhengjin;//
                }
                //var userinfo = (from c in db.TRealAccounts where c.ID == userid select c).FirstOrDefault();
                var AvailablePrice = userinfo.AccountMoney + allprice;  //可用余额(账户余额-仓息-加工费+浮动盈亏-保证金)

                #region 计算当前(即将创建的单子)的相关费用

                int DepositType = product.DepositType.Value;            //加工费方式(每单收取的加工费) 1固定(每笔统一价) 2浮动(按照交易金额的百分比来算)

                double OpenDeposit = Converter.ToFloat(product.OpenDeposit, 0);         //开仓加工费 固定(固定值)   浮动(开仓*固定值)
                int OccupyFundsType = product.OccupyFundsType.Value;    //保证金方式(每单必须有的保证金) 1固定(每笔统一价) 2浮动(按照交易金额的百分比来算)
                double OccupyFunds = Converter.ToFloat(product.OccupyFunds, 0);         //保证金   固定(固定值*手数)   浮动(开仓价*固定值*手数)
                //计算当前订单加工费
                var nowjiagongfei = 0.0;
                if (DepositType == 1)
                    nowjiagongfei = OpenDeposit * product.ContractNumber.Value * Converter.ToFloat(OrderCount, 1);
                else
                    nowjiagongfei = 0.01 * OpenDeposit * product.ContractNumber.Value * NowPrice * Converter.ToFloat(OrderCount, 1);
                //计算当前订单保证金
                var nowbaozhengjin = 0.0;
                if (OccupyFundsType == 1)
                    nowbaozhengjin = OccupyFunds * product.ContractNumber.Value * Converter.ToFloat(OrderCount, 1);
                else
                    nowbaozhengjin = 0.01 * OccupyFunds * product.ContractNumber.Value * NowPrice * Converter.ToFloat(OrderCount, 1);
                //仓息刚刚下的订单是没有的
                //现在的钱可以开多少手
                var ordernumMax = AvailablePrice / (nowjiagongfei + nowbaozhengjin);//只用加工费和保证金需要占用资金
                if (Converter.ToFloat(ordernumMax, 0) < 1)
                    return ErrMsg(10033, "当前可用余额不足,请修改手数或更换产品!");
                TOrders addOrder = new TOrders();

                #endregion
                if (OrderType == 1)//开仓
                {
                    addOrder.ProductID = id;
                    addOrder.OrderNum = DateTime.Now.ToString("yyyyMMddHHmmssfff");
                    addOrder.TRealAccountsID = userid;
                    addOrder.OpenPrice = Converter.ToFloat(lastcloseprice.ToString("F" + Scale));
                    addOrder.Deal = Deal.ToLower() == "true";
                    addOrder.OrderCount = OrderCount;
                    addOrder.OpenTime = OpenTime;
                    addOrder.Profit = Convert.ToDouble(Profit.ToString("F" + Scale));
                    addOrder.Loss = Convert.ToDouble(Loss.ToString("F" + Scale));
                    addOrder.OrderState = 1;
                    addOrder.OrderType = OrderType;
                    addOrder.EntrustType = EntrustType;
                    addOrder.UpdateTime = DateTime.Now;
                    addOrder.Deposit = nowjiagongfei;
                    addOrder.OccupyFunds = nowbaozhengjin;
                    addOrder.OperatorIP = OperatorIP;
                }
                else//委托
                {
                    addOrder.ProductID = id;
                    addOrder.OrderNum = DateTime.Now.ToString("yyyyMMddHHmmssfff");
                    addOrder.TRealAccountsID = userid;
                    addOrder.OpenPrice = Converter.ToFloat(OpenPrice.ToString("F" + Scale));
                    addOrder.Deal = Deal.ToLower() == "true";
                    addOrder.OrderCount = OrderCount;
                    addOrder.OpenTime = OpenTime;
                    addOrder.Profit = Convert.ToDouble(Profit.ToString("F" + Scale));
                    addOrder.Loss = Convert.ToDouble(Loss.ToString("F" + Scale));
                    addOrder.OrderState = 1;
                    addOrder.OrderType = OrderType;
                    addOrder.EntrustType = EntrustType;
                    addOrder.UpdateTime = DateTime.Now;
                    addOrder.Deposit = nowjiagongfei;
                    addOrder.OccupyFunds = nowbaozhengjin;
                    addOrder.OperatorIP = OperatorIP;
                }
                db.TOrders.InsertOnSubmit(addOrder);
                db.SubmitChanges();

                JObject jb = new JObject();
                jb["success"] = "TRUE";
                jb["content"] = addOrder.ID;
                return jb.ToString();
            }
            catch
            {
                return ErrMsg(10034, "创建订单失败!");
            }
        }