public async Task SetOrders()
        {
            var userOrderData = orderDataStore.GetUserOrders(App.LogUser.UserId);


            UserOrders.Clear();

            foreach (var item in userOrderData)
            {
                item.StoreOrder = await StoreDataStore.GetItemAsync(item.StoreId.ToString());

                var presenter = new OrderPresenter(item);

                UserOrders.Add(presenter);
            }
        }
Exemple #2
0
        public static List <UserOrders> GetUserOrders(string keyWords, string userid, int type, int status, int payway, int pageSize, int pageIndex, ref int totalCount, ref int pageCount, string begintime = "", string endtime = "")
        {
            string tablename = "UserOrders  a left join M_Users b  on a.UserID =b.UserID ";
            string sqlwhere  = " a.status<>9 ";

            if (!string.IsNullOrEmpty(keyWords))
            {
                sqlwhere += " and (b.UserName like '%" + keyWords + "%' or a.BankName like '%" + keyWords + "%' or a.OrderCode like '%" + keyWords + "%'  or a.Sku like '%" + keyWords + "%' or a.OtherCode like '%" + keyWords + "%')";
            }
            if (type > -1)
            {
                sqlwhere += " and a.Type=" + type;
            }
            if (status > -1)
            {
                sqlwhere += " and a.status=" + status;
            }
            if (payway > -1)
            {
                sqlwhere += " and a.PayType=" + payway;
            }
            if (!string.IsNullOrEmpty(userid))
            {
                sqlwhere += " and a.UserID='" + userid + "' ";
            }
            if (!string.IsNullOrEmpty(begintime))
            {
                sqlwhere += " and a.CreateTime>='" + begintime + " 00:00:00'";
            }
            if (!string.IsNullOrEmpty(endtime))
            {
                sqlwhere += " and a.CreateTime<'" + endtime + " 23:59:59:999'";
            }
            DataTable         dt   = CommonBusiness.GetPagerData(tablename, "a.*,b.UserName ", sqlwhere, "a.AutoID ", pageSize, pageIndex, out totalCount, out pageCount);
            List <UserOrders> list = new List <UserOrders>();

            foreach (DataRow dr in dt.Rows)
            {
                UserOrders model = new UserOrders();
                model.FillData(dr);
                list.Add(model);
            }
            return(list);
        }
        public ActionResult getOrdersByUser(string userid)
        {
            JsonResult     result = new JsonResult();
            UserInfoEntity user   = userLogic.Load(userid);
            Random         rad    = new Random();

            if (user != null)
            {
                IList <UserOrders>        orderslst = new List <UserOrders>();
                IList <OrderDinnerEntity> dinners   = dinnerlogic.LoadAll(" and OrderDate>='" + DateTime.Now.ToString("yyyy-MM-dd 00:00:00") + "'  and (CancUser is null or CancUser='')  and UserId = '" + userid + "'", 99, 1, "OrderDate desc");
                foreach (var item in dinners)
                {
                    UserOrders itemModel = new UserOrders();
                    itemModel.orderDate = item.OrderDate;
                    itemModel.orderId   = item.OrdId;
                    if (item.TypeCode == "01")
                    {
                        itemModel.type = "早餐";
                    }
                    else if (item.TypeCode == "02")
                    {
                        itemModel.type = "午餐";
                    }
                    else if (item.TypeCode == "03")
                    {
                        itemModel.type = "晚餐";
                    }
                    itemModel.count = item.Quantity;

                    orderslst.Add(itemModel);
                }

                result.Data = new { status = 100, msg = "success", orders = orderslst };
                return(Json(result, JsonRequestBehavior.AllowGet));
            }
            else
            {
                result.Data = new { status = 200, msg = "用户不存在", orders = "" };
                return(Json(result, JsonRequestBehavior.AllowGet));
            }
        }
Exemple #4
0
        public async Task <IActionResult> OrderHistory()
        {
            var user = await _userManager.GetUserAsync(User);

            UserOrders userOrders = new UserOrders()
            {
                Orders = new List <OrderHistory>()
            };

            foreach (var partialOrder in _context.PartialOrder.Where(order => user.Id == order.UserId)
                     .GroupBy(order => order.OrderId)
                     .Select(g => g.First()))
            {
                List <Product> orderedProducts = new List <Product>();

                foreach (var pOrder in _context.PartialOrder.Where(order => partialOrder.OrderId == order.OrderId))
                {
                    Product tempProd = _context.Products.Where(p => pOrder.ProductId == p.Id).First();
                    tempProd.Amount = pOrder.Amount;

                    orderedProducts.Add(tempProd);
                }

                OrderHistory orderHistory = new OrderHistory()
                {
                    OrderId = partialOrder.OrderId,
                    Price   = partialOrder.Price,
                    Date    = partialOrder.Date,
                    Orders  = orderedProducts
                };

                userOrders.Orders.Add(orderHistory);
            }

            userOrders.Orders = userOrders.Orders.OrderByDescending(o => o.Date).ToList();

            return(View(userOrders));
        }
Exemple #5
0
        public void Sort()
        {
            string sortType = Filters.SortType;

            if (OrderMiniAndUserCardMini != null &&
                OrderMiniAndUserCardMini.Count > 0 &&
                sortType != null &&
                Enum.IsDefined(typeof(UserOrders), sortType))
            {
                UserOrders enumSortType = (UserOrders)Enum.Parse(typeof(UserOrders), sortType);
                switch (enumSortType)
                {
                case (UserOrders.EmailAsc): { OrderMiniAndUserCardMini = OrderMiniAndUserCardMini.OrderBy(s => s.UserInfo.Email).ToList(); break; }

                case (UserOrders.EmailDesc): { OrderMiniAndUserCardMini = OrderMiniAndUserCardMini.OrderByDescending(s => s.UserInfo.Email).ToList(); break; }

                case (UserOrders.IdAsc): { OrderMiniAndUserCardMini = OrderMiniAndUserCardMini.OrderBy(s => s.Id).ToList(); break; }

                case (UserOrders.IdDesc): { OrderMiniAndUserCardMini = OrderMiniAndUserCardMini.OrderByDescending(s => s.Id).ToList(); break; }

                case (UserOrders.Дата_резерваAsc): { OrderMiniAndUserCardMini = OrderMiniAndUserCardMini.OrderBy(s => s.DataReservation).ToList(); break; }

                case (UserOrders.Дата_резерваDesc): { OrderMiniAndUserCardMini = OrderMiniAndUserCardMini.OrderByDescending(s => s.DataReservation).ToList(); break; }

                case (UserOrders.ЗаказчикAsc): { OrderMiniAndUserCardMini = OrderMiniAndUserCardMini.OrderBy(s => s.UserInfo.Name).ToList(); break; }

                case (UserOrders.ЗаказчикDesc): { OrderMiniAndUserCardMini = OrderMiniAndUserCardMini.OrderByDescending(s => s.UserInfo.Name).ToList(); break; }

                case (UserOrders.СтатусAsc): { OrderMiniAndUserCardMini = OrderMiniAndUserCardMini.OrderBy(s => s.StatusName).ToList(); break; }

                case (UserOrders.СтатусDesc): { OrderMiniAndUserCardMini = OrderMiniAndUserCardMini.OrderByDescending(s => s.StatusName).ToList(); break; }

                default: { OrderMiniAndUserCardMini = OrderMiniAndUserCardMini.OrderByDescending(s => s.DataReservation).ToList(); break; }
                }
            }
        }
Exemple #6
0
 private void Modify(UserOrders model)
 {
     bll.Update(model);
     Msg.ShowAndRedirect("修改信息成功!", "Default.aspx");
 }
Exemple #7
0
 private void InitData(int id)
 {
     userOModel             = bll.GetModel(id);
     ddlState.SelectedValue = userOModel.stateID + "";
 }
        public void ZHFNotify()
        {
            string merchant_code      = Request.Params.AllKeys.Contains("merchant_code") ? Request["merchant_code"].ToString().Trim() : ZHFPayTools.partner;
            string notify_type        = Request.Params.AllKeys.Contains("notify_type") ? Request["notify_type"].ToString().Trim() : "offline_notify";
            string notify_id          = Request.Params.AllKeys.Contains("notify_id") ? Request["notify_id"] ?? "".ToString().Trim() : "";
            string interface_version  = Request.Params.AllKeys.Contains("interface_version") ? Request["interface_version"].ToString().Trim() : "V3.0";
            string sign_type          = Request.Params.AllKeys.Contains("sign_type") ? Request["sign_type"].ToString().Trim() : "RSA-S";
            string zhfsign            = Request.Params.AllKeys.Contains("sign") ? Request["sign"].ToString().Trim() : "";
            string order_no           = Request.Params.AllKeys.Contains("order_no") ? Request["order_no"].ToString().Trim() : "";
            string order_time         = Request.Params.AllKeys.Contains("order_time") ? Request["order_time"].ToString().Trim() : "";
            string order_amount       = Request.Params.AllKeys.Contains("order_amount") ? Request["order_amount"].ToString().Trim() : "";
            string extra_return_param = Request.Params.AllKeys.Contains("extra_return_param") ? Request["extra_return_param"] : "";
            string trade_no           = Request.Params.AllKeys.Contains("trade_no") ? Request["trade_no"].ToString().Trim() : "";
            string orginal_money      = Request.Params.AllKeys.Contains("orginal_money") ? Request["orginal_money"] : "";
            string trade_time         = Request.Params.AllKeys.Contains("trade_time") ? Request["trade_time"].ToString().Trim() : "";
            string trade_status       = Request.Params.AllKeys.Contains("trade_status") ? Request["trade_status"].ToString().Trim() : "";
            string bank_seq_no        = Request.Params.AllKeys.Contains("bank_seq_no") ? Request["bank_seq_no"] : "";

            /**
             *签名顺序按照参数名a到z的顺序排序,若遇到相同首字母,则看第二个字母,以此类推,
             *参数名1=参数值1&参数名2=参数值2&……&参数名n=参数值n
             **/
            //组织订单信息
            string signStr = "";

            if (null != bank_seq_no && bank_seq_no != "")
            {
                signStr = signStr + "bank_seq_no=" + bank_seq_no.ToString().Trim() + "&";
            }

            if (null != extra_return_param && extra_return_param != "")
            {
                signStr = signStr + "extra_return_param=" + extra_return_param + "&";
            }
            signStr = signStr + "interface_version=" + interface_version + "&";
            signStr = signStr + "merchant_code=" + merchant_code + "&";


            if (null != notify_id && notify_id != "")
            {
                signStr = signStr + "notify_id=" + notify_id + "&notify_type=" + notify_type + "&";
            }

            signStr = signStr + "order_amount=" + order_amount + "&";
            signStr = signStr + "order_no=" + order_no + "&";
            signStr = signStr + "order_time=" + order_time + "&";
            if (null != orginal_money && orginal_money != "")
            {
                signStr = signStr + "orginal_money=" + orginal_money + "&";
            }
            signStr = signStr + "trade_no=" + trade_no + "&";
            signStr = signStr + "trade_status=" + trade_status;

            if (null != trade_time && trade_time != "")
            {
                signStr = signStr + "&trade_time=" + trade_time;
            }

            /**
             * 1)zhf_public_key,智汇付公钥,每个商家对应一个固定的智汇付公钥(不是使用工具生成的密钥merchant_public_key,不要混淆),
             * 即为智汇付商家后台"公钥管理"->"智汇付公钥"里的绿色字符串内容
             * 2)demo提供的zhf_public_key是测试商户号1111110166的智汇付公钥,请自行复制对应商户号的智汇付公钥进行调整和替换。
             */

            string zhf_public_key = ZHFPayTools.zhfpubkey;

            //将智汇付公钥转换成C#专用格式
            zhf_public_key = ZHFPayTools.RSAPublicKeyJava2DotNet(zhf_public_key);
            //验签
            bool result = ZHFPayTools.ValidateRsaSign(signStr, zhf_public_key, zhfsign);

            if (result == true)
            {
                //判断该笔订单是否在商户网站中已经做过处理
                //如果没有做过处理,根据订单号(out_trade_no)在商户网站的订单系统中查到该笔订单的详细,并执行商户的业务程序
                //请务必判断请求时的total_fee、seller_id与通知时获取的total_fee、seller_id为一致的
                //如果有做过处理,不执行商户的业务程序
                //获取订单详情
                UserOrders order = UserOrdersBusiness.GetUserOrderDetail(order_no);
                if (order != null && !string.IsNullOrEmpty(order.OrderCode))
                {
                    decimal total_fee = decimal.Parse(order_amount);
                    if (string.IsNullOrEmpty(orginal_money))
                    {
                        total_fee = decimal.Parse(orginal_money);
                    }
                    if (order.PayFee == total_fee)
                    {
                        //订单支付及后台客户授权
                        bool flag = UserOrdersBusiness.OrderAuditting(order.OrderCode, trade_no, total_fee);
                        if (flag)
                        {
                            //如果验签结果为true,则对订单进行更新
                            //订单更新完之后必须打印SUCCESS来响应智汇付服务器以示商户已经正常收到智汇付服务器发送的异步数据通知,否则智汇付服务器将会在之后的时间内若干次发送同一笔订单的异步数据!!
                            Response.Write("success"); //请不要修改或删除
                        }
                    }
                }
            }
            else
            {
                //验签失败
                Response.Write("验签失败");
            }
        }
Exemple #9
0
 public bool UpdateOrder(UserOrders userorder)
 {
     return(_orderService.UpdateOrder(userorder));
 }
        async Task LoadUserOrderWithStatus(string value)
        {
            LoadingManager.OnLoading();
            Status _statusvalue = (Status)Enum.Parse(typeof(Status), value);

            var orderData = await orderDataStore.GetOrdersOfUserWithSpecificStatus(App.LogUser.UserId, _statusvalue, App.TokenDto.Token);

            if (!KeyValues.ContainsKey("orderAdded"))
            {
                KeyValues.Add("orderAdded", orderData);
            }


            switch (_statusvalue)
            {
            case Status.Completed:
            {
                List <Order> tempData = new List <Order>();

                var data = await orderDataStore.GetOrdersOfUserWithSpecificStatusDifferent(KeyValues["orderAdded"], _statusvalue, App.LogUser.UserId);

                if (data != null)
                {
                    foreach (var item in KeyValues["orderAdded"])
                    {
                        if (!tempData.Any(o => o.OrderId == item.OrderId))
                        {
                            tempData.Add(item);
                        }
                    }

                    foreach (var item in data)
                    {
                        if (!tempData.Any(s => s.StoreId == item.StoreId))
                        {
                            tempData.Add(item);
                        }
                    }

                    KeyValues.Clear();
                    KeyValues.Add("orderAdded", tempData);


                    foreach (var item in KeyValues["orderAdded"])
                    {
                        if (!UserOrders.Any(s => s.OrderId == item.OrderId))
                        {
                            //Task.Run(async() =>
                            //{
                            //    item.StoreOrder = await StoreDataStore.GetItemAsync(item.StoreId.ToString());

                            //}).Wait();

                            item.StoreOrder = await StoreDataStore.GetItemAsync(item.StoreId.ToString());

                            var presenter = new OrderPresenter(item);

                            UserOrders.Add(presenter);
                        }
                    }
                }



                break;
            }

            case Status.NotSubmited:
            {
                List <Order> tempData = new List <Order>();

                var data = await orderDataStore.GetOrdersOfUserWithSpecificStatusDifferent(KeyValues["orderAdded"], _statusvalue, App.LogUser.UserId);

                if (data != null)
                {
                    foreach (var item in KeyValues["orderAdded"])
                    {
                        if (!tempData.Any(o => o.OrderId == item.OrderId))
                        {
                            tempData.Add(item);
                        }
                    }

                    foreach (var item in data)
                    {
                        if (!tempData.Any(s => s.StoreId == item.StoreId))
                        {
                            tempData.Add(item);
                        }
                    }

                    KeyValues.Clear();
                    KeyValues.Add("orderAdded", tempData);


                    foreach (var item in KeyValues["orderAdded"])
                    {
                        if (!UserOrders.Any(s => s.OrderId == item.OrderId))
                        {
                            item.StoreOrder = await StoreDataStore.GetItemAsync(item.StoreId.ToString());

                            var presenter = new OrderPresenter(item);

                            UserOrders.Add(presenter);
                        }
                    }
                }

                break;

                //UserOrders.Clear();

                //foreach (var item in orderData)
                //{

                //    item.StoreOrder = await StoreDataStore.GetItemAsync(item.StoreId.ToString());
                //    var presenter = new OrderPresenter(item);

                //    UserOrders.Add(presenter);
                //}
            }

            case Status.Submited:
            {
                List <Order> tempData = new List <Order>();

                var data = await orderDataStore.GetOrdersOfUserWithSpecificStatusDifferent(KeyValues["orderAdded"], _statusvalue, App.LogUser.UserId);

                if (data != null)
                {
                    foreach (var item in KeyValues["orderAdded"])
                    {
                        if (!tempData.Any(o => o.OrderId == item.OrderId))
                        {
                            tempData.Add(item);
                        }
                    }

                    foreach (var item in data)
                    {
                        if (!tempData.Any(s => s.StoreId == item.StoreId))
                        {
                            tempData.Add(item);
                        }
                    }

                    KeyValues.Clear();
                    KeyValues.Add("orderAdded", tempData);


                    foreach (var item in KeyValues["orderAdded"])
                    {
                        if (!UserOrders.Any(s => s.OrderId == item.OrderId))
                        {
                            item.StoreOrder = await StoreDataStore.GetItemAsync(item.StoreId.ToString());

                            var presenter = new OrderPresenter(item);

                            UserOrders.Add(presenter);
                        }
                    }
                }


                //UserOrders.Clear();

                //foreach (var item in orderData)
                //{

                //    item.StoreOrder = await StoreDataStore.GetItemAsync(item.StoreId.ToString());
                //    var presenter = new OrderPresenter(item);

                //    UserOrders.Add(presenter);
                //}

                break;
            }

            default:
                break;
            }

            LoadingManager.OffLoading();
        }
 /// <summary>
 /// �����Ƿ���Ч(��֤���Ʊ)
 /// </summary>
 /// <param name="SZRate"></param>
 /// <param name="userFund"></param>
 /// <param name="userOrder"></param>
 /// <returns></returns>
 private bool IsOrderValid(ref SjshqDBFRecord SZRate, ref UserFund userFund, ref UserOrders userOrder)
 {
     try
     {
         if (userOrder.OrdType == OrderType.ImmediateOrder)
             return true;
         else if (userOrder.ExpiredDate.Date > DateTime.Now.Date)
             return true;
         else if (SZRate.StockCode == null || SZRate.StockName == null)
             return false;
         else if (GetStockType(SZRate.StockCode.Trim(), StockMarket.Shenzhen) != StockType.SZ_A)
             return true;
         if (userOrder.Side)
         {
             if (SZRate.PreClosePrice < 0.01)
             {
                 userOrder.OrdStatus = OrderStatus.Failure;
                 userOrder.UpdatedDate = DateTime.Now;
                 userFund.UsableCash += Common.ConvertPrice((userOrder.OrderPrice * userOrder.OrderVolume) * (1 + defaultBuyTax));
                 return false;
             }
             else if (SZRate.StockName.ToUpper().Contains("ST"))
             {
                 if (Common.ComparePrice(userOrder.OrderPrice, SZRate.PreClosePrice * 0.95) < 0)
                 {
                     userOrder.OrdStatus = OrderStatus.Failure;
                     userOrder.UpdatedDate = DateTime.Now;
                     userFund.UsableCash += Common.ConvertPrice((userOrder.OrderPrice * userOrder.OrderVolume) * (1 + defaultBuyTax));
                     return false;
                 }
                 else
                     return true;
             }
             else if (!SZRate.StockName.ToUpper().Contains("N"))
             {
                 if (Common.ComparePrice(userOrder.OrderPrice, SZRate.PreClosePrice * 0.9) < 0)
                 {
                     userOrder.OrdStatus = OrderStatus.Failure;
                     userOrder.UpdatedDate = DateTime.Now;
                     userFund.UsableCash += Common.ConvertPrice((userOrder.OrderPrice * userOrder.OrderVolume) * (1 + defaultBuyTax));
                     return false;
                 }
                 else
                     return true;
             }
         }
         else
         {
             if (SZRate.PreClosePrice < 0.01)
             {
                 userOrder.OrdStatus = OrderStatus.Failure;
                 userOrder.UpdatedDate = DateTime.Now;
                 return false;
             }
             else if (SZRate.StockName.ToUpper().Contains("ST"))
             {
                 if (Common.ComparePrice(userOrder.OrderPrice, SZRate.PreClosePrice * 1.05) > 0)
                 {
                     userOrder.OrdStatus = OrderStatus.Failure;
                     userOrder.UpdatedDate = DateTime.Now;
                     return false;
                 }
                 else
                     return true;
             }
             else if (!SZRate.StockName.ToUpper().Contains("N"))
             {
                 if (Common.ComparePrice(userOrder.OrderPrice, SZRate.PreClosePrice * 1.1) > 0)
                 {
                     userOrder.OrdStatus = OrderStatus.Failure;
                     userOrder.UpdatedDate = DateTime.Now;
                     return false;
                 }
                 else
                     return true;
             }
         }
         return true;
     }
     catch
     {
         return false;
     }
 }
        /// <summary>
        /// ������֤���Ʊ
        /// </summary>
        /// <param name="SZRate"></param>
        /// <param name="userFund"></param>
        /// <param name="userOrder"></param>
        /// <param name="userStock"></param>
        /// <param name="dBoughtAmount"></param>
        /// <returns></returns>
        private bool BuySZ(ref SjshqDBFRecord SZRate, ref UserFund userFund, ref UserOrders userOrder, ref UserStocks userStock, out double dBoughtAmount)
        {
            try
            {
                dBoughtAmount = 0;
                if (userOrder.UserID != userFund.UserID || userStock.UserID != userFund.UserID)
                    return false;
                else if (!userOrder.Side || userOrder.OrdStatus != OrderStatus.Waiting || userFund.UserID != userOrder.UserID)
                    return false;
                else if (userOrder.OrderVolume < 0)
                    return false;
                else if (SZRate.SellingVal1 < 0.001 || SZRate.LatestPrice < 0.001)
                    return false;
                UserFund tmpFund = userFund;
                UserOrders tmpOrder = userOrder;
                UserStocks tmpStock = userStock;
                dBoughtAmount = Common.ConvertPrice((tmpOrder.OrderVolume * SZRate.SellingVal1) * (1 + defaultBuyTax));
                if (Common.ComparePrice(userFund.Cash, dBoughtAmount) >= 0)
                {
                    tmpFund.UsableCash += Common.ConvertPrice((tmpOrder.OrderVolume * tmpOrder.OrderPrice) * (1 + defaultBuyTax));
                    tmpFund.UsableCash -= Common.ConvertPrice(dBoughtAmount);

                    Synchronizer.FundHistory fundHistory = new Synchronizer.FundHistory(); fundHistory.Initialize();
                    fundHistory.UserID = userFund.UserID; fundHistory.OrderID = userOrder.OrderID;
                    fundHistory.OriginalCash = Common.ConvertPrice(userFund.Cash);
                    tmpFund.Cash -= Common.ConvertPrice(dBoughtAmount);
                    fundHistory.ChangedCash = Common.ConvertPrice(tmpFund.Cash - fundHistory.OriginalCash);
                    fundHistory.Curr = tmpOrder.Curr;
                    Common.DBSync.FundChanged(fundHistory, userFund.UserID);

                    if (tmpStock.Volume + tmpOrder.OrderVolume > 0)
                        tmpStock.AveragePrice = Common.ConvertPrice(
                            ((tmpStock.AveragePrice * tmpStock.Volume) + (SZRate.SellingVal1 * tmpOrder.OrderVolume))
                            / (tmpStock.Volume + tmpOrder.OrderVolume) * (1 + defaultBuyTax));
                    else
                        tmpStock.AveragePrice = 0;
                    tmpStock.Volume += tmpOrder.OrderVolume;
                    tmpStock.Curr = tmpOrder.Curr;

                    if (GetStockType(tmpOrder.StockCode, StockMarket.Shenzhen) == StockType.SZ_Warrant)
                        tmpStock.Sellable = true;
                    else
                        tmpStock.Sellable = false;
                    if (tmpFund.UsableCash < 0)
                        tmpFund.UsableCash = 0;
                }
                else
                {
                    tmpOrder.UpdatedDate = DateTime.Now;
                    tmpOrder.OrdStatus = OrderStatus.Failure;
                    Common.DBSync.RecordError(tmpOrder, "(SZ)���㣺Currency-" + userFund.Curr.ToString().Trim() + "/Cash-" +
                        userFund.Cash.ToString("f3").Trim() + "/Cost-" + dBoughtAmount.ToString("f3").Trim());
                }

                if (tmpOrder.OrdStatus != OrderStatus.Failure)
                {
                    tmpOrder.TradePrice = Common.ConvertPrice(SZRate.SellingVal1);
                    if (tmpOrder.OrdType == OrderType.ImmediateOrder)
                        tmpOrder.OrderPrice = 0;
                    tmpOrder.UpdatedDate = DateTime.Now;
                    tmpOrder.OrdStatus = OrderStatus.Finished;
                    userFund = tmpFund;
                    userStock = tmpStock;
                }
                userOrder = tmpOrder;
                if (userOrder.OrdStatus == OrderStatus.Finished)
                    return true;
                else
                    return false;
            }
            catch
            {
                dBoughtAmount = 0;
                return false;
            }
        }
 /// <summary>
 /// ��ȡ�û�����
 /// </summary>
 /// <param name="UserID"></param>
 /// <param name="OrderID"></param>
 /// <param name="userOrder"></param>
 /// <returns></returns>
 public bool GetUserOrder(int UserID, int OrderID, out UserOrders userOrder)
 {
     userOrder = new UserOrders(); userOrder.Initialize();
     try
     {
         if (UserID <= 0 || OrderID <= 0 || mapUserOrders == null
             || !mapUserOrders.ContainsKey(OrderID))
             return false;
         if (!mapUserFund.ContainsKey(UserID))
             return false;
         if (mapUserOrders[OrderID].UserID != UserID)
             return false;
         userOrder = mapUserOrders[OrderID];
         return true;
     }
     catch
     {
         return false;
     }
 }
        /// <summary>
        /// �����֤���Ʊ
        /// </summary>
        /// <param name="SZRate"></param>
        /// <param name="userFund"></param>
        /// <param name="userOrder"></param>
        /// <param name="userStock"></param>
        /// <param name="dSoldAmount"></param>
        /// <returns></returns>
        private bool SellSZ(ref SjshqDBFRecord SZRate, ref UserFund userFund, ref UserOrders userOrder, ref UserStocks userStock, out double dSoldAmount)
        {
            try
            {
                dSoldAmount = 0;
                if (userOrder.UserID != userFund.UserID || userStock.UserID != userFund.UserID)
                    return false;
                else if (userOrder.Side || userOrder.OrdStatus != OrderStatus.Waiting || userFund.UserID != userOrder.UserID)
                    return false;
                else if (userOrder.OrderVolume < 0)
                    return false;
                else if (SZRate.BuyingVal1 < 0.001 || SZRate.LatestPrice < 0.001)
                    return false;
                UserFund tmpFund = userFund;
                UserOrders tmpOrder = userOrder;
                UserStocks tmpStock = userStock;
                dSoldAmount = Common.ConvertPrice((tmpOrder.OrderVolume * SZRate.BuyingVal1) * (1 - defaultSellTax));
                if (tmpStock.Volume >= tmpOrder.OrderVolume)
                {
                    tmpStock.Volume -= tmpOrder.OrderVolume;

                    Synchronizer.FundHistory fundHistory = new Synchronizer.FundHistory(); fundHistory.Initialize();
                    fundHistory.UserID = userFund.UserID; fundHistory.OrderID = userOrder.OrderID;
                    fundHistory.OriginalCash = Common.ConvertPrice(userFund.Cash);
                    tmpFund.Cash += Common.ConvertPrice(dSoldAmount);
                    fundHistory.ChangedCash = Common.ConvertPrice(tmpFund.Cash - fundHistory.OriginalCash);
                    fundHistory.Curr = tmpOrder.Curr;
                    Common.DBSync.FundChanged(fundHistory, userFund.UserID);

                    tmpFund.UsableCash += Common.ConvertPrice(dSoldAmount);
                    if (tmpStock.Volume > 0)
                        tmpStock.AveragePrice = Common.ConvertPrice(
                            ((tmpStock.AveragePrice * tmpStock.Volume) + (SZRate.BuyingVal1 * tmpOrder.OrderVolume))
                            / (tmpStock.Volume + tmpOrder.OrderVolume) * (1 + defaultSellTax));
                    else
                        tmpStock.AveragePrice = 0;
                    if (tmpFund.Cash < 0)
                        tmpFund.Cash = 0;
                    if (tmpFund.UsableCash < 0)
                        tmpFund.UsableCash = 0;
                }
                else
                {
                    tmpOrder.UpdatedDate = DateTime.Now;
                    tmpOrder.OrdStatus = OrderStatus.Failure;
                    Common.DBSync.RecordError(tmpOrder, "(SZ)��ɲ��㣺Volume" +
                        tmpStock.Volume.ToString().Trim() + "/Cost-" + tmpOrder.OrderVolume.ToString().Trim());
                }

                if (tmpOrder.OrdStatus != OrderStatus.Failure)
                {
                    tmpOrder.TradePrice = Common.ConvertPrice(SZRate.BuyingVal1);
                    if (tmpOrder.OrdType == OrderType.ImmediateOrder)
                        tmpOrder.OrderPrice = 0;
                    tmpOrder.UpdatedDate = DateTime.Now;
                    tmpOrder.OrdStatus = OrderStatus.Finished;
                    userFund = tmpFund;
                    userStock = tmpStock;
                }
                userOrder = tmpOrder;
                if (userOrder.OrdStatus == OrderStatus.Finished)
                    return true;
                else
                    return false;
            }
            catch
            {
                dSoldAmount = 0;
                return false;
            }
        }