コード例 #1
0
        public virtual async Task SetTokenAsync(TUser user, string loginProvider, string name, string value, CancellationToken cancellationToken)
        {
            ThrowIfDisposed();
            Guard.ArgumentNotNull(user, nameof(user));
            Guard.ArgumentNullOrWhiteSpaceString(loginProvider, nameof(loginProvider));
            Guard.ArgumentNullOrWhiteSpaceString(name, nameof(name));

            SingleQueryFilter filter = new SingleQueryFilter();

            filter.AddEqual(nameof(UserToken.UserId), user.Id);
            filter.AddEqual(nameof(UserToken.LoginProvider), loginProvider);
            filter.AddEqual(nameof(UserToken.Name), name);

            var token = await _userTokenRepository.QueryFirstOrDefaultAsync(filter);

            if (token == null)
            {
                UserToken newToken = new UserToken();
                newToken.Id     = _idGenerationService.GenerateId();
                newToken.Name   = name;
                newToken.Value  = value;
                newToken.UserId = user.Id;
                await _userTokenRepository.InsertAsync(newToken);
            }
            else
            {
                token.Value = value;
                await _userTokenRepository.UpdateAsync(token);
            }
        }
コード例 #2
0
ファイル: DbRoutineTest.cs プロジェクト: tinytian/Schubert
        private void QueryCollect()
        {
            ClearDapperCompisiteKeyEntity();

            var d1 = CreateDapperCompisiteKeyEntity();
            var d2 = CreateDapperCompisiteKeyEntity(2, 2);
            var d3 = CreateDapperCompisiteKeyEntity(3, 3);

            try
            {
                var dapperInstance = _dapper;

                SingleQueryFilter filter = new SingleQueryFilter().AddGreater("products_id", 1).AddLess("products_id", 3);
                var dapperQueryResult    = dapperInstance.Query(filter);
                CompareHelper.Compare(d2, dapperQueryResult.Where(s => s.products_id == 2).FirstOrDefault());
                Assert.Equal(dapperQueryResult.Count(), 1);

                SingleQueryFilter filter2 = new SingleQueryFilter().AddEqual("products_id", 1);

                var comFilter1 = QueryFilter.CombineOr(filter, filter2);
                dapperQueryResult = dapperInstance.Query(comFilter1);
                CompareHelper.Compare(d2, dapperQueryResult.Where(s => s.products_id == 2).FirstOrDefault());
                CompareHelper.Compare(d1, dapperQueryResult.Where(s => s.products_id == 1).FirstOrDefault());
                Assert.Equal(dapperQueryResult.Count(), 2);
            }
            finally
            {
                ClearDapperCompisiteKeyEntity();
            }
        }
コード例 #3
0
        public virtual async Task <IList <TUser> > GetUsersForClaimAsync(Claim claim, CancellationToken cancellationToken)
        {
            ThrowIfDisposed();
            Guard.ArgumentNotNull(claim, nameof(claim));

            SingleQueryFilter filter = new SingleQueryFilter();

            filter.AddEqual(nameof(UserClaim.ClaimValue), claim.Value);
            filter.AddEqual(nameof(UserClaim.ClaimType), claim.Type);

            var userClaim = await _userClaimRepository.QueryFirstOrDefaultAsync(filter);

            if (userClaim != null)
            {
                SingleQueryFilter userFilter = new SingleQueryFilter();
                userFilter.AddEqual(nameof(UserBase.Id), userClaim.UserId);

                var user = await _userRepository.QueryFirstOrDefaultAsync(userFilter);

                return(user == null ? new List <TUser>() : new List <TUser>()
                {
                    user
                });
            }
            return(new List <TUser>());
        }
コード例 #4
0
ファイル: MyTestRepository.cs プロジェクト: zszqwe/Dragon
        /// <summary>
        /// <see cref="IMyTestRepository.GetByName"/>
        /// </summary>
        public async Task <MyTest> GetByName(string name)
        {
            SingleQueryFilter query = new SingleQueryFilter();

            query.AddEqual(nameof(MyTest.Name), name);
            return(await QueryFirstOrDefaultAsync(query));
        }
コード例 #5
0
        private void Query()
        {
            ClearDapperTestEntity();
            var d1 = CreateDapperTestEntity();
            var d2 = CreateDapperTestEntity(2);
            var d3 = CreateDapperTestEntity(3);

            try
            {
                var dapperInstance = _dapper;
                var filter         = new SingleQueryFilter().AddEqual(nameof(DapperTestEntity.dec_value), 1);
                var result         = dapperInstance.Query(filter);
                helper.ExecuteReader("select * from dapper_all_test where id=1", reader =>
                {
                    while (reader.Read())
                    {
                        CompareHelper.Compare(reader, result.Where(x => x.id == Convert.ToInt32(reader["id"])).FirstOrDefault());
                    }
                });
            }
            finally
            {
                ClearDapperTestEntity();
            }
        }
コード例 #6
0
        /// <summary>
        /// 访问Lambda表达式所有运算符(从句、二元运算符)
        /// </summary>
        /// <param name="node">节点</param>
        /// <returns></returns>
        protected override Expression VisitBinary(BinaryExpression node)
        {
            // 遇到从句将两边条件合并
            BooleanClause clause;

            if (ClauseMapping.TryGetValue(node.NodeType, out clause))
            {
                var leftVisitor = new SimpleVisitor();
                leftVisitor.Visit(node.Left);
                var rightVisitor = new SimpleVisitor();
                rightVisitor.Visit(node.Right);
                _filter = new CombinedQueryFilter(leftVisitor._filter, rightVisitor._filter, clause);
                return(node);
            }
            // 遇到二元运算符则将运算逻辑拆分为独立条件
            BinaryOperation symbol;

            if (OperationMapping.TryGetValue(node.NodeType, out symbol))
            {
                var leftVisitor = new SimpleVisitor();
                leftVisitor.Visit(node.Left);
                var rightVisitor = new SimpleVisitor();
                rightVisitor.Visit(node.Right);
                var x = new SingleQueryFilter();
                x.AddPredicate(leftVisitor._fieldName, symbol, rightVisitor._value);
                _filter = x;
                return(node);
            }
            throw new NotSupportedException($"不支将 Lambda 表达式解析为 {nameof(QueryFilter)},请确保右侧的表达式是一个符合规范的二元表达式。");
        }
コード例 #7
0
        private void QueryAsync()
        {
            ClearTestEntity();
            var d1 = CreateTestEntity();
            var d2 = CreateTestEntity(2);
            var d3 = CreateTestEntity(3);

            try
            {
                var dapperInstance = _dapper;
                var filter         = new SingleQueryFilter().AddEqual(nameof(DapperAllTest.DecValue), 1);
                var result         = dapperInstance.QueryAsync(filter).GetAwaiter().GetResult();
                helper.ExecuteReader("select * from DapperAllTest where id=1", reader =>
                {
                    while (reader.Read())
                    {
                        CompareHelper.ComparePascalCase(reader, result.Where(x => x.Id == Convert.ToInt32(reader["Id"])).FirstOrDefault());
                    }
                });
            }
            finally
            {
                ClearTestEntity();
            }
        }
コード例 #8
0
        public virtual async Task RemoveFromRoleAsync(TUser user, string roleName, CancellationToken cancellationToken)
        {
            ThrowIfDisposed();
            Guard.ArgumentNotNull(user, nameof(user));
            Guard.ArgumentNullOrWhiteSpaceString(roleName, nameof(roleName));

            SingleQueryFilter filter = new SingleQueryFilter();

            filter.AddEqual(nameof(RoleBase.Name), roleName);
            var role = await _roleRepository.QueryFirstOrDefaultAsync(filter);

            if (role == null)
            {
                throw new InvalidOperationException($"找不到名称 {roleName} 的角色(Role)。");
            }

            SingleQueryFilter userRoleFilter = new SingleQueryFilter();

            userRoleFilter.AddEqual(nameof(UserRole.UserId), user.Id);
            userRoleFilter.AddEqual(nameof(UserRole.RoleId), role.Id);
            var userRole = await _userRoleRepository.QueryFirstOrDefaultAsync(userRoleFilter);

            if (userRole != null)
            {
                await _userRoleRepository.DeleteAsync(userRole);
            }
        }
コード例 #9
0
        /// <summary>
        /// 通过TokenBrandId删除注册明细
        /// </summary>
        /// <param name="tokenBrandId"></param>
        /// <returns></returns>
        public async Task <int> DeleteByTokenBrandIdAsync(long tokenBrandId)
        {
            var filter = new SingleQueryFilter();

            filter.AddEqual(nameof(PushTokenBrandDetail.TokenBrandId), tokenBrandId);
            return(await _repository.DeleteAsync(filter));
        }
コード例 #10
0
ファイル: PushMessageService.cs プロジェクト: corecsharp/push
        /// <summary>
        /// 获取消息中心,多少个消息类型,就有多少条
        /// </summary>
        /// <param name="userId"></param>
        /// <param name="appId"></param>
        /// <returns></returns>
        public async Task <IList <PushMessageTypeDomainModel> > GetPushMessageListGroupByMessageTypeAsync(long userId, int appId)
        {
            Guard.ArgumentCondition(userId > 0, $"{nameof(userId)}参数不合法");
            Guard.ArgumentCondition(appId > 0, $"{nameof(appId)}参数不合法");
            SingleQueryFilter filter = new SingleQueryFilter();

            filter.AddEqual(nameof(PushMessage.UserId), userId);
            filter.AddEqual(nameof(PushMessage.AppId), appId);
            filter.AddNotEqual(nameof(PushMessage.State), (int)ReadState.Clear);
            var list = await _pushMessageRepository.QueryAsync(filter);

            if (list == null)
            {
                return(null);
            }
            IEnumerable <int> messageTypeList = list.Select(t => t.MessageType).Distinct().ToList();

            if (messageTypeList == null)
            {
                return(null);
            }
            IList <PushMessageTypeDomainModel> typeList = new List <PushMessageTypeDomainModel>();

            foreach (var item in messageTypeList)
            {
                var pushMessage = list.Where(t => t.MessageType == item).OrderByDescending(t => t.CreateAt).FirstOrDefault();
                PushMessageTypeDomainModel model = new PushMessageTypeDomainModel {
                    Message = pushMessage.Msg, MessageType = item
                };
                typeList.Add(model);
            }
            return(typeList.OrderBy(t => t.MessageType).ToList());
        }
コード例 #11
0
        public async Task <int> DeleteProcessByIdAsync(long id)
        {
            var filter = new SingleQueryFilter();

            filter.AddEqual(nameof(PushSendProcess.Id), id);
            return(await _repository.DeleteAsync(filter));
        }
コード例 #12
0
        private void Parameter(string name)
        {
            var where = LamdaQueryParser.Where <User>(u => u.Name == name) as SingleQueryFilter;
            var filter = new SingleQueryFilter();

            filter.AddEqual(nameof(User.Name), name);
            Compare(where, filter);
        }
コード例 #13
0
        /// <summary>
        ///  获取设备的Token
        /// </summary>
        /// <param name="tokenBrandId"></param>
        /// <param name="channelId"></param>
        /// <returns></returns>
        public async Task <PushTokenBrandDetail> GetDeviceTokenAsync(long tokenBrandId, long channelId)
        {
            var filter = new SingleQueryFilter();

            filter.AddEqual(nameof(PushTokenBrandDetail.TokenBrandId), tokenBrandId);
            filter.AddEqual(nameof(PushTokenBrandDetail.ChannelId), channelId);
            return(await _repository.QueryFirstOrDefaultAsync(filter));
        }
コード例 #14
0
        private async Task <PushTokenBrand> GetTokenBrandAsync(string token, string appId, string deviceId)
        {
            var filter = new SingleQueryFilter();

            filter.AddEqual(nameof(PushTokenBrand.Token), token);
            filter.AddEqual(nameof(PushTokenBrand.AppId), appId);
            filter.AddEqual(nameof(PushTokenBrand.DeviceId), deviceId);
            return(await _repository.QueryFirstOrDefaultAsync(filter));
        }
コード例 #15
0
        /// <summary>
        /// <see cref="IMyTestRepository.GetByName"/>
        /// </summary>
        public async Task <MyTestResponse> GetByName(string name)
        {
            SingleQueryFilter query = new SingleQueryFilter();

            query.AddEqual(nameof(MyTest.Name), name);
            MyTest result = await QueryFirstOrDefaultAsync(query);

            return(_mapper.Map <MyTestResponse>(result));
        }
コード例 #16
0
        public virtual async Task <TRole> FindByNameAsync(string normalizedRoleName, CancellationToken cancellationToken)
        {
            ThrowIfDisposed();

            SingleQueryFilter filter = new SingleQueryFilter();

            filter.AddEqual(nameof(RoleBase.NormalizedName), normalizedRoleName);
            return(await _roleRepository.QueryFirstOrDefaultAsync(filter));
        }
コード例 #17
0
        public async Task <PushSendProcessDomainModel> GetProcessByIdAsync(long processId)
        {
            var filter = new SingleQueryFilter();

            filter.AddEqual(nameof(PushSendProcess.Id), processId);
            PushSendProcess entity = await _repository.QueryFirstOrDefaultAsync(filter);

            return(_mapper.Map <PushSendProcessDomainModel>(entity));
        }
コード例 #18
0
        public async Task <List <long> > SelectProcessIdListByBatchNOAsync(Guid guid)
        {
            var filter = new SingleQueryFilter();

            filter.AddEqual(nameof(PushSendProcess.BatchNo), guid);
            var res = await _repository.QueryAsync(filter);

            return(res?.Select(i => i.Id).ToList());
        }
コード例 #19
0
ファイル: PushChannelService.cs プロジェクト: corecsharp/push
        /// <summary>
        /// 根据id获取推送通道
        /// </summary>
        /// <param name="id"></param>
        /// <returns></returns>
        public async Task <PushChannelDomainModel> GetChannelByIdAsync(long id)
        {
            var filter = new SingleQueryFilter();

            filter.AddEqual(nameof(PushChannel.Id), id);
            var entity = await _repository.QueryFirstOrDefaultAsync(filter);

            return(_mapper.Map <PushChannelDomainModel>(entity));
        }
コード例 #20
0
        public async Task <int> GetSendFailureCountAsync(DateTime beginTime, DateTime endTime)
        {
            var filter = new SingleQueryFilter();

            filter.AddGreaterOrEqual(nameof(PushProcessHistory.SendTime), beginTime);
            filter.AddLessOrEqual(nameof(PushProcessHistory.SendTime), endTime);

            return(await _repository.CountAsync(filter));
        }
コード例 #21
0
        /// <summary>
        /// 通过TokenBrandId获取明细列表
        /// </summary>
        /// <param name="tokenBrandId"></param>
        /// <returns></returns>
        public async Task <List <PushTokenBrandDetail> > GetDeviceTokenListAsync(long tokenBrandId)
        {
            var filter = new SingleQueryFilter();

            filter.AddEqual(nameof(PushTokenBrandDetail.TokenBrandId), tokenBrandId);
            var res = await _repository.QueryAsync(filter);

            return(res.ToList());
        }
コード例 #22
0
        /// <summary>
        /// 通过key获取配置
        /// </summary>
        /// <param name="key"></param>
        /// <returns></returns>
        public async Task <PushConfigDomainModel> GetConfigByKeyAsync(string key)
        {
            var filter = new SingleQueryFilter();

            filter.AddEqual(nameof(PushConfig.ConfigKey), key);
            PushConfig entity = await _repository.QueryFirstOrDefaultAsync(filter);

            return(_mapper.Map <PushConfigDomainModel>(entity));
        }
コード例 #23
0
 private void Compare(SingleQueryFilter s1, SingleQueryFilter s2)
 {
     Assert.Equal(s1.Count(), s2.Count());
     s1.ForEach(t =>
     {
         var count = s2.Where(s => s.FieldName == t.FieldName && (int)s.Operation == (int)t.Operation &&
                              s.OperationValue.ToString() == t.OperationValue.ToString()).Count();
         Assert.Equal(count, 1);
     });
 }
コード例 #24
0
        /// <summary>
        /// 取推送App的通道
        /// </summary>
        /// <param name="appId">app编号</param>
        /// <param name="systemType">系统类型(0:IOS 1:Android)</param>
        /// <param name="channelId">推送通道编号</param>
        /// <returns></returns>
        public async Task <PushAppChannelDomainModel> GetAppChannelByAppInfoAsync(int appId, int systemType, long channelId)
        {
            var filter = new SingleQueryFilter();

            filter.AddEqual(nameof(PushAppChannel.AppId), appId);
            filter.AddEqual(nameof(PushAppChannel.SystemType), systemType);
            filter.AddEqual(nameof(PushAppChannel.ChannelId), channelId);
            PushAppChannel entity = await _repository.QueryFirstOrDefaultAsync(filter);

            return(_mapper.Map <PushAppChannelDomainModel>(entity));
        }
コード例 #25
0
        public async Task <List <PushSendProcessDomainModel> > GetProcessListByBatchNOAsync(string batchNO)
        {
            var filter = new SingleQueryFilter();

            filter.AddEqual(nameof(PushSendProcess.BatchNo), batchNO);
            var res = await _repository.QueryAsync(filter);

            List <PushSendProcess> list = res.ToList();

            return(_mapper.Map <List <PushSendProcessDomainModel> >(list));
        }
コード例 #26
0
        /// <summary>
        /// 获取通过Token获取注册列表
        /// </summary>
        /// <param name="RzToken"></param>
        /// <returns></returns>
        public async Task <List <PushTokenBrandDomainModel> > GetTokenBrandListByTokenAsync(string token)
        {
            var filter = new SingleQueryFilter();

            filter.AddEqual(nameof(PushTokenBrand.Token), token);
            var res = await _repository.QueryAsync(filter);

            List <PushTokenBrand> list = res.ToList();

            return(_mapper.Map <List <PushTokenBrandDomainModel> >(list));
        }
コード例 #27
0
ファイル: DapperSqlGenerator.cs プロジェクト: zszqwe/Dragon
        /// <summary>
        /// 生产简单筛选
        /// </summary>
        /// <typeparam name="TEntity">实体类型</typeparam>
        /// <param name="queryFilter">查询过滤器实例</param>
        /// <param name="parameters">查询参数</param>
        /// <returns></returns>
        private string GenerateSingleFilter <TEntity>(SingleQueryFilter queryFilter, DynamicParameters parameters)
        {
            if (queryFilter.IsEmpty)
            {
                return(string.Empty);
            }

            string spliter = queryFilter.Clause == BooleanClause.Or ? " OR " : " AND ";

            return(queryFilter.Select(p => GeneratePredicateFilter <TEntity>(p, parameters)).ToArrayString(spliter));
        }
コード例 #28
0
        public virtual Task <TUser> FindByEmailAsync(string normalizedEmail, CancellationToken cancellationToken)
        {
            if (normalizedEmail.IsNullOrWhiteSpace())
            {
                return(null);
            }
            SingleQueryFilter filter = new SingleQueryFilter();

            filter.AddEqual(nameof(UserBase.Email), normalizedEmail);
            return(_userRepository.QueryFirstOrDefaultAsync(filter));
        }
コード例 #29
0
        /// <summary>
        /// 根据id删除TokenBrand
        /// </summary>
        /// <param name="id"></param>
        /// <returns></returns>
        public async Task <int> DeleteTokenBrandByIdAsync(long id)
        {
            var filter = new SingleQueryFilter();

            filter.AddEqual(nameof(PushTokenBrand.Id), id);
            int deleteRow = await _repository.DeleteAsync(filter);

            //删除注册详情表
            int deleteDetailRows = await _pushTokenBrandDetailService.DeleteByTokenBrandIdAsync(id);

            return(deleteRow + deleteDetailRows);
        }
コード例 #30
0
        public virtual async Task <IList <Claim> > GetClaimsAsync(TRole role, CancellationToken cancellationToken = default(CancellationToken))
        {
            ThrowIfDisposed();
            Guard.ArgumentNotNull(role, nameof(role));

            SingleQueryFilter filter = new SingleQueryFilter();

            filter.AddEqual(nameof(RoleBase.Id), role.Id);
            var roleClaims = await _roleClaimRepository.QueryAsync(filter);

            return(roleClaims.Select(r => r.ToClaim()).ToArray());
        }