Exemplo n.º 1
0
        /// <summary>
        /// 获得用户可用操作
        /// </summary>
        /// <param name="accountId"></param>
        /// <param name="time"></param>
        /// <param name="ip"></param>
        /// <returns></returns>
        public IList <SYSOperation> GetOperations(long accountId, DateTime?time, string ip)
        {
            time = time ?? DateTime.Now;
            ip   = ip ?? CFContext.User.IP;
            //字符串比较,需要补零
            ip = ALValidator.IsIP(ip) ? string.Join(".", ip.Split('.').Select(d => d.PadLeft(3, '0'))) : "127.000.000.001";

            var query = from o in _operationRepository.Entities
                        join so in _strategyOperationRepository.Entities on o.ID equals so.OperationID
                        join s in _strategyRepository.Entities on so.StrategyID equals s.ID
                        join sg in _strategyGroupRepository.Entities on s.ID equals sg.StrategyID
                        join g in _groupRepository.Entities on sg.GroupID equals g.ID
                        join gu in _groupAccountRepository.Entities on g.ID equals gu.GroupID
                        where
                        gu.UserId == accountId &&
                        (s.StartTime == null || s.StartTime <= time) &&
                        (s.EndTime == null || s.EndTime >= time) &&
                        (s.StartIP == null || string.Compare(s.StartIP, ip) <= 0) &&
                        (s.EndIP == null || string.Compare(s.EndIP, ip) >= 0)
                        select o;

            return(query.ToList());
        }