예제 #1
0
        /// <summary>
        /// 根据用户名获取未通过提交列表
        /// </summary>
        /// <param name="userName">用户名</param>
        /// <param name="solvedList">该用户AC题目ID的列表</param>
        /// <param name="contestID">竞赛ID</param>
        /// <returns>题目ID列表</returns>
        public static List <Int32> GetUnSolvedProblemIDListByUser(String userName, List <Int32> lstSolved, Int32 contestID)
        {
            if (String.IsNullOrEmpty(userName))
            {
                return(new List <Int32>());
            }

            if (!RegexVerify.IsUserName(userName))
            {
                throw new InvalidRequstException(RequestType.User);
            }

            List <Int32> lstUnsolved = (contestID == -1 ? SolutionCache.GetProblemIDListCache(userName, true) : null);//获取缓存

            if (lstUnsolved == null)
            {
                lstUnsolved = SolutionRepository.Instance.GetEntityIDsByUserAndLessResultType(userName, contestID, ResultType.Accepted);

                if (lstUnsolved != null && lstUnsolved.Count > 0 && lstSolved != null && lstSolved.Count > 0)
                {
                    foreach (Int32 pid in lstSolved)
                    {
                        lstUnsolved.Remove(pid);
                    }
                }

                if (contestID == -1)
                {
                    SolutionCache.SetProblemIDListCache(userName, true, lstUnsolved);//设置缓存
                }
            }

            return(lstUnsolved != null ? lstUnsolved : new List <Int32>());
        }
예제 #2
0
        /// <summary>
        /// 根据用户名和提交结果获取通过提交列表
        /// </summary>
        /// <param name="userName">用户名</param>
        /// <param name="contestID">竞赛ID</param>
        /// <returns>题目ID列表</returns>
        public static List <Int32> GetSolvedProblemIDListByUser(String userName, Int32 contestID)
        {
            if (String.IsNullOrEmpty(userName))
            {
                return(new List <Int32>());
            }

            if (!RegexVerify.IsUserName(userName))
            {
                throw new InvalidRequstException(RequestType.User);
            }

            List <Int32> lstSolved = (contestID == -1 ? SolutionCache.GetProblemIDListCache(userName, false) : null);//获取缓存

            if (lstSolved == null)
            {
                lstSolved = SolutionRepository.Instance.GetEntityIDsByUserAndResultType(userName, contestID, ResultType.Accepted);

                if (contestID == -1)
                {
                    SolutionCache.SetProblemIDListCache(userName, false, lstSolved);                 //获取缓存
                }
            }

            return(lstSolved != null ? lstSolved : new List <Int32>());
        }