Example #1
0
        /// <summary>
        /// ��ȡָ����Ŀ�Ķ���
        /// </summary>
        /// <param name="MaxNumber"></param>
        /// <returns></returns>
        public List<RemotingInterface.RI_AllOrders> GetAllOrders(int MaxNumber)
        {
            try
            {
                if (MaxNumber <= 0)
                    return null;
                Common.Debug(">>> GetAllOrders() Invoking >>>");
                Dictionary<int, Dictionary<int, RemotingInterface.RI_Order>> mapTempUserOrders = null;
                lock (mapRIUserOrders)
                    mapTempUserOrders = new Dictionary<int, Dictionary<int, RemotingInterface.RI_Order>>(mapRIUserOrders);
                List<RemotingInterface.RI_AllOrders> listOriginal = new List<RemotingInterface.RI_AllOrders>();
                List<RemotingInterface.RI_AllOrders> listTarget = new List<RemotingInterface.RI_AllOrders>();
                foreach (object objUserID in mapTempUserOrders.Keys)
                {
                    if (objUserID == null)
                        continue;
                    int nUserID = Convert.ToInt32(objUserID);
                    if (!mapTempUserOrders.ContainsKey(nUserID))
                        continue;
                    foreach (object objOrderID in mapTempUserOrders[nUserID].Keys)
                    {
                        if (objOrderID == null)
                            continue;
                        int nOrderID = Convert.ToInt32(objOrderID);
                        if (!mapTempUserOrders[nUserID].ContainsKey(nOrderID))
                            continue;
                        RemotingInterface.RI_AllOrders data = new RemotingInterface.RI_AllOrders();
                        data.Clear(); data.UserID = nUserID;
                        if (!data.Import(mapTempUserOrders[nUserID][nOrderID]))
                            continue;
                        listOriginal.Add(data);
                    }
                }

                if (listOriginal.Count > 0)
                {
                    int nCount = listOriginal.Count;
                    while (listTarget.Count < nCount && listOriginal.Count > 0)
                    {
                        RemotingInterface.RI_AllOrders target = new RemotingInterface.RI_AllOrders();
                        target.Clear(); target.UpdatedDate = DateTime.MinValue;
                        for (int i = 0; i < listOriginal.Count; i++)
                        {
                            if (listOriginal[i].UpdatedDate > target.UpdatedDate)
                            {
                                target = listOriginal[i];
                            }
                        }
                        if (listOriginal.Contains(target))
                        {
                            listOriginal.Remove(target);
                            listTarget.Add(target);
                        }

                        if (listTarget.Count >= MaxNumber)
                        {
                            Common.Debug("<<< GetAllOrders() Invoked <<<");
                            return listTarget;
                        }
                    }
                }
                Common.Debug("<<< GetAllOrders() Invoked <<<");
                return listTarget;
            }
            catch (Exception err)
            {
                Common.Log(err);
                return null;
            }
        }
Example #2
0
        /// <summary>
        /// 获取指定数目的订单
        /// </summary>
        /// <param name="MaxNumber"></param>
        /// <returns></returns>
        public List <RemotingInterface.RI_AllOrders> GetAllOrders(int MaxNumber)
        {
            try
            {
                if (MaxNumber <= 0)
                {
                    return(null);
                }
                Common.Debug(">>> GetAllOrders() Invoking >>>");
                Dictionary <int, Dictionary <int, RemotingInterface.RI_Order> > mapTempUserOrders = null;
                lock (mapRIUserOrders)
                    mapTempUserOrders = new Dictionary <int, Dictionary <int, RemotingInterface.RI_Order> >(mapRIUserOrders);
                List <RemotingInterface.RI_AllOrders> listOriginal = new List <RemotingInterface.RI_AllOrders>();
                List <RemotingInterface.RI_AllOrders> listTarget   = new List <RemotingInterface.RI_AllOrders>();
                foreach (object objUserID in mapTempUserOrders.Keys)
                {
                    if (objUserID == null)
                    {
                        continue;
                    }
                    int nUserID = Convert.ToInt32(objUserID);
                    if (!mapTempUserOrders.ContainsKey(nUserID))
                    {
                        continue;
                    }
                    foreach (object objOrderID in mapTempUserOrders[nUserID].Keys)
                    {
                        if (objOrderID == null)
                        {
                            continue;
                        }
                        int nOrderID = Convert.ToInt32(objOrderID);
                        if (!mapTempUserOrders[nUserID].ContainsKey(nOrderID))
                        {
                            continue;
                        }
                        RemotingInterface.RI_AllOrders data = new RemotingInterface.RI_AllOrders();
                        data.Clear(); data.UserID = nUserID;
                        if (!data.Import(mapTempUserOrders[nUserID][nOrderID]))
                        {
                            continue;
                        }
                        listOriginal.Add(data);
                    }
                }

                if (listOriginal.Count > 0)
                {
                    int nCount = listOriginal.Count;
                    while (listTarget.Count < nCount && listOriginal.Count > 0)
                    {
                        RemotingInterface.RI_AllOrders target = new RemotingInterface.RI_AllOrders();
                        target.Clear(); target.UpdatedDate = DateTime.MinValue;
                        for (int i = 0; i < listOriginal.Count; i++)
                        {
                            if (listOriginal[i].UpdatedDate > target.UpdatedDate)
                            {
                                target = listOriginal[i];
                            }
                        }
                        if (listOriginal.Contains(target))
                        {
                            listOriginal.Remove(target);
                            listTarget.Add(target);
                        }

                        if (listTarget.Count >= MaxNumber)
                        {
                            Common.Debug("<<< GetAllOrders() Invoked <<<");
                            return(listTarget);
                        }
                    }
                }
                Common.Debug("<<< GetAllOrders() Invoked <<<");
                return(listTarget);
            }
            catch (Exception err)
            {
                Common.Log(err);
                return(null);
            }
        }