コード例 #1
0
        public async Task <ApiResource> FindApiResourceAsync(string name)
        {
            var service = client.GetGrain <IApiResourceService>(0);
            var r       = await service.FindApiResourceAsync(name);

            return(Mapper.Map <ApiResource>(r));
        }
コード例 #2
0
        public async Task <string> Login(string returnUrl)
        {
            var context = await interaction.GetAuthorizationContextAsync(returnUrl);

            if (context == null)
            {
                this.logger.LogDebug("登录参数不合法;" + returnUrl);
                return(options.DefaultLoginUrl);
            }

            var service = client.GetGrain <Zop.Identity.IClientService>(context.ClientId);
            //获取客户端默认的登陆链接
            string loginUrl = await service.GetLoginUrlAsync();

            if (loginUrl.IsNull())
            {
                loginUrl = options.DefaultLoginUrl;
            }

            if (!loginUrl.Contains("?"))
            {
                loginUrl += "?";
            }
            return($"{loginUrl}return_url={WebUtility.UrlEncode(returnUrl)}");
        }
コード例 #3
0
        public async Task Startup(CancellationToken cancellationToken)
        {
            using (_remoteStream = _tcpClient.GetStream())
            {
                // subscribe observer to get packet from server
                _clientboundPacketObserverRef = await _grainFactory.CreateObjectReference <IClientboundPacketObserver>(_outcomingPacketObserver);

                await _grainFactory.GetGrain <IClientboundPacketSink>(_sessionId).Subscribe(_clientboundPacketObserverRef);

                try
                {
                    DateTime expiredTime = DateTime.Now + TimeSpan.FromSeconds(10);
                    while (!cancellationToken.IsCancellationRequested &&
                           !_outcomingPacketDispatcher.Completion.IsCompleted)
                    {
                        await DispatchIncomingPacket();

                        // renew subscribe, 10 sec
                        if (DateTime.Now > expiredTime)
                        {
                            await _grainFactory.GetGrain <IClientboundPacketSink>(_sessionId).Subscribe(_clientboundPacketObserverRef);

                            expiredTime = DateTime.Now + TimeSpan.FromSeconds(10);
                        }
                    }
                }
                catch (EndOfStreamException)
                {
                    var router = _grainFactory.GetGrain <IPacketRouter>(_sessionId);
                    await router.Close();

                    await _outcomingPacketDispatcher.Completion;
                }
            }
        }
コード例 #4
0
        public async Task ValidateAsync(ResourceOwnerPasswordValidationContext context)
        {
            //根据账户寻找认证数据
            var service = client.GetGrain <Zop.Identity.IIdentityTokenService>(context.UserName);
            var token   = await service.GetAsync();

            if (token == null)
            {
                context.Result = new GrantValidationResult(TokenRequestErrors.InvalidRequest);
                this.logger.LogError($"密码模式验证失败:{context.UserName}-{context.Password};授权Token不存在或者失效");
                return;
            }
            if (token.IdentityIP4 == "::1")
            {
                token.IdentityIP4 = "127.0.0.1";
            }
            if (token.IdentityIP4 != context.Password)
            {
                context.Result = new GrantValidationResult(TokenRequestErrors.InvalidRequest);
                this.logger.LogError($"密码模式验证失败:{context.UserName}-{context.Password};授权无效");
                return;
            }
            ///用户声明
            List <Claim> claims = Mapper.Map <List <Claim> >(token.Data);

            context.Result = new GrantValidationResult(token.SubjectId, "pwd", DateTime.Now, claims);
            return;
        }
コード例 #5
0
        /// <summary>
        /// 查看发货单作废
        /// </summary>
        /// <returns></returns>
        public async Task <ApiResult <XsLadeRimpactVO> > GetAsync()
        {
            var state           = this.State;
            var xsLadeRimpactVO = this.ObjectMapper.Map <XsLadeRimpactVO>(state);

            //获取企业数据
            if (!string.IsNullOrEmpty(xsLadeRimpactVO.XLR_Firm))
            {
                var itemResult = await _orleansClient.GetGrain <IPbBasicFirmStateGrain>(GrainIdKey.UtcUIDGrainKey.ToString()).GetAllSync(new PbBasicFirmDTO
                {
                    Ids = new List <string> {
                        xsLadeRimpactVO.XLR_Firm
                    }
                });

                if (itemResult.Success)
                {
                    xsLadeRimpactVO.XLR_FirmName = itemResult.Data.FirstOrDefault().PBF_ShortName;
                }
            }

            //获取发货单编码
            if (!string.IsNullOrEmpty(xsLadeRimpactVO.XLR_Lade))
            {
                var itemResult = await GrainFactory.GetGrain <IXsLadeBaseStateGrain>(xsLadeRimpactVO.XLR_Lade).GetAsync();

                if (itemResult.Success)
                {
                    xsLadeRimpactVO.XLB_LadeId = itemResult.Data.XLB_LadeId;
                }
            }

            return(await Task.FromResult(ApiResultUtil.IsSuccess(xsLadeRimpactVO)));
        }
コード例 #6
0
ファイル: ClientService.cs プロジェクト: lulzzz/Zop.Identity
        public async Task <Client> FindClientByIdAsync(string clientId)
        {
            if (clientId.IsNull())
            {
                return(null);
            }
            var service = client.GetGrain <Zop.Identity.IClientService>(clientId);
            var cli     = await service.GetAsync();

            if (cli == null)
            {
                return(null);
            }

            this.logger.LogDebug(cli.ToJsonString());
            return(Mapper.Map <Client>(cli));
        }
コード例 #7
0
        public async Task <IEnumerable <PersistedGrant> > GetAllAsync(string subjectId)
        {
            var service = client.GetGrain <Zop.Identity.IPersistedGrantService>(Guid.NewGuid().ToString());
            var r       = await service.GetAllAsync(subjectId);

            return(Mapper.Map <IEnumerable <PersistedGrant> >(r));
        }
コード例 #8
0
        public async Task StartAsync(CancellationToken cancellationToken)
        {
            try
            {
                var settings = await _grainFactory.GetGrain <IServerSettings>(0).GetSettings();

                IPAddress ip   = IPAddress.Parse(settings.ServerIp);
                int       port = (int)settings.ServerPort;

                TcpListener _listener;
                _listener = new TcpListener(new IPEndPoint(ip, port));
                _listener.Start();
                _logger.LogInformation("ConnectionRouter started.");
                while (!cancellationToken.IsCancellationRequested)
                {
                    DispatchIncomingClient(await _listener.AcceptTcpClientAsync(), cancellationToken);
                }
                _listener.Stop();
            }
            catch (FormatException)
            {
                _logger.LogError($"The configuration of gateway have an incorrect format.");
            }
        }
コード例 #9
0
ファイル: XsLadeBaseGrain.cs プロジェクト: zhrjin/Kaneko
        /// <summary>
        /// 根据企业主键和发货单编号,查发货单数据
        /// </summary>
        /// <param name="model"></param>
        /// <returns></returns>
        public async Task <ApiResult <XsLadeBaseVO> > GetByLadeIdSync(XsLadeBaseDTO model)
        {
            var expression = model.GetExpression2();
            var entitys    = await _xsLadeBaseRepository.GetAllAsync(expression, isMaster : false);

            if (entitys.AsList().Count == 0)
            {
                return(ApiResultUtil.IsFailed <XsLadeBaseVO>("当前企业该发货单编号不存在,请核对!"));
            }
            else if (entitys.AsList().Count > 1)
            {
                return(ApiResultUtil.IsFailed <XsLadeBaseVO>("当前企业该发货单编号存在多条,请核对!"));
            }
            var xsLadeBaseVO = this.ObjectMapper.Map <XsLadeBaseVO>(entitys.FirstOrDefault());

            if (xsLadeBaseVO.XLB_Status == "2")
            {
                return(ApiResultUtil.IsFailed <XsLadeBaseVO>("该发货单已冲红,请核对!"));
            }

            //查客商名称
            if (!string.IsNullOrEmpty(xsLadeBaseVO.XLB_Client))
            {
                var xsCompyBaseResult = await _orleansClient.GetGrain <IXsCompyBaseStateGrain>(xsLadeBaseVO.XLB_Firm).GetAllSync(new XsCompyBaseDTO {
                    Ids = new List <string> {
                        xsLadeBaseVO.XLB_Client
                    }
                });

                if (xsCompyBaseResult.Success && xsCompyBaseResult.Data.Count > 0)
                {
                    xsLadeBaseVO.XLB_ClientName = xsCompyBaseResult.Data[0].XOB_Name;
                }
            }
            //查企业名称
            if (!string.IsNullOrEmpty(xsLadeBaseVO.XLB_Firm))
            {
                var pbBasicFirmResult = await _orleansClient.GetGrain <IPbBasicFirmStateGrain>(GrainIdKey.UtcUIDGrainKey.ToString()).GetAllSync(new PbBasicFirmDTO {
                    Ids = new List <string> {
                        xsLadeBaseVO.XLB_Firm
                    }
                });

                if (pbBasicFirmResult.Success && pbBasicFirmResult.Data.Count > 0)
                {
                    xsLadeBaseVO.XLB_FirmName = pbBasicFirmResult.Data[0].PBF_ShortName;
                }
            }
            //查物料名称
            if (!string.IsNullOrEmpty(xsLadeBaseVO.XLB_Cement))
            {
                var pbCodeMaterialResult = await _orleansClient.GetGrain <IPbCodeMaterialStateGrain>(xsLadeBaseVO.XLB_Firm).GetAllSync(new PbCodeMaterialDTO {
                    Ids = new List <string> {
                        xsLadeBaseVO.XLB_Cement
                    }
                });

                if (pbCodeMaterialResult.Success && pbCodeMaterialResult.Data.Count > 0)
                {
                    xsLadeBaseVO.XLB_CementName = pbCodeMaterialResult.Data[0].PCM_Name;
                }
            }

            return(await Task.FromResult(ApiResultUtil.IsSuccess(xsLadeBaseVO)));
        }
コード例 #10
0
        public Task <Hero> Get(string key)
        {
            var grain = _orleansClient.GetGrain <IHeroGrain>(key, serviceId);

            return(grain.Get());
        }
コード例 #11
0
        public async Task <ApiResultPage <ScheduleTaskVO> > GetPageSync(SearchDTO <ScheduleTaskDTO> model)
        {
            await Task.WhenAll(Enumerable.Range(0, 10).Select(x => NewLongID(x)));

            var dto        = model.Data;
            var expression = dto.GetExpression();
            var orders     = dto.GetOrder();
            var count      = await _scheduleRepository.CountAsync(expression);

            if (count == 0)
            {
                return(ApiResultUtil.IsFailedPage <ScheduleTaskVO>("无数据!"));
            }

            var entities = await _scheduleRepository.GetListAsync(model.PageIndex, model.PageSize, expression, isMaster : false, orderByFields : orders);

            List <ScheduleTaskVO> scheduleTaskVOs;

            if (entities.Any(m => !string.IsNullOrEmpty(m.ItemId)))
            {
                //获取物料数据
                var itemResult = await GrainFactory.GetGrain <IMaterialGrain>(this.GrainId).GetAllSync(new MaterialDTO
                {
                    Ids = entities.Where(m => !string.IsNullOrEmpty(m.ItemId)).Select(m => m.ItemId).Distinct().ToList()
                });

                var itemList = itemResult.Success ? itemResult.Data : null;
                if (itemList == null)
                {
                    scheduleTaskVOs = this.ObjectMapper.Map <List <ScheduleTaskVO> >(entities);
                }
                else
                {
                    //左连接物料数据
                    scheduleTaskVOs = (from schedule in entities
                                       join item in itemList on schedule.ItemId equals item.Id into mapping
                                       from tmp in mapping.DefaultIfEmpty() //左连接需要加上DefaultIfEmpty
                                       select new
                    {
                        schedule,
                        tmp
                    }).AsEnumerable()
                                      .Select(x =>
                    {
                        var result        = this.ObjectMapper.Map <ScheduleTaskVO>(x.schedule);
                        result.ItemName   = x.tmp?.ItemName;
                        result.ItemNumber = x.tmp?.ItemNumber;
                        return(result);
                    })
                                      .ToList();
                }
            }
            else
            {
                scheduleTaskVOs = this.ObjectMapper.Map <List <ScheduleTaskVO> >(entities);
            }

            //DictDataTypeStateGrain

            var ddd = await _clusterClient.GetGrain <IDictDataTypeStateGrain>("we").GetListAsync();

            var ddd2 = await this.GrainFactory.GetGrain <IScheduleTaskStateGrain>(1111).GetAsync();

            var client = _httpClientFactory.CreateClient();

            client.BaseAddress = new Uri("http://127.0.0.1:6114");
            Dictionary <string, string> postForm = new Dictionary <string, string>
            {
                { "Data.DataType", "TY" },
                { "Data.DataCode", "A001" },
                { "Data.DataValue", "V001" },
                { "Data.DataDesc", "测试" },
                { "Data.SortNo", "1" },
                { "Data.Firm", "YT001" }
            };
            var task = await client.PostKanekoAsync("/BasicData/api/Dict/add", "", null, postForm);

            return(ApiResultUtil.IsSuccess(scheduleTaskVOs, count));
        }
コード例 #12
0
ファイル: XsLadeRimpactGrain.cs プロジェクト: zhrjin/Kaneko
        /// <summary>
        /// 获取分页列表数据
        /// </summary>
        /// <param name="model"></param>
        /// <returns></returns>
        public async Task <ApiResultPageLR <XsLadeRimpactVO> > GetPageLRSync(SearchDTO <XsLadeRimpactDTO> model)
        {
            var dto = model.Data;

            //根据发货单编码模糊查询获取所有发货单主键
            if (!string.IsNullOrEmpty(dto.XLB_LadeId))
            {
                var itemResult = await this.GrainFactory.GetGrain <IXsLadeBaseGrain>(this.GrainId).GetAllSync(new XsLadeBaseDTO {
                    XLB_LadeId = dto.XLB_LadeId
                });

                if (itemResult.Success && itemResult.Data.Count > 0)
                {
                    dto.XLR_Lades = itemResult.Data.Where(m => !string.IsNullOrEmpty(m.Id)).Select(m => m.Id).Distinct().ToList();
                }
                else
                {
                    return(ApiResultUtil.IsFailedPageLR <XsLadeRimpactVO>("无数据!"));
                }
            }

            //根据查询条件获取分页列表数据
            var expression = dto.GetExpression();
            var orders     = dto.GetOrder();
            var count      = await _xsLadeRimpactRepository.CountAsync(expression);

            if (count == 0)
            {
                return(ApiResultUtil.IsFailedPageLR <XsLadeRimpactVO>("无数据!"));
            }
            var entities = await _xsLadeRimpactRepository.GetListAsync(model.PageIndex, model.PageSize, expression, isMaster : false, orderByFields : orders);

            //获取发货单数据
            List <XsLadeBaseDO> xsLadeBaseList = new List <XsLadeBaseDO>();

            if (entities.Any(m => !string.IsNullOrEmpty(m.XLR_Lade)))
            {
                var itemResult = await this.GrainFactory.GetGrain <IXsLadeBaseGrain>(this.GrainId).GetAllSync(new XsLadeBaseDTO
                {
                    Ids = entities.Where(m => !string.IsNullOrEmpty(m.XLR_Lade)).Select(m => m.XLR_Lade).Distinct().ToList()
                });

                if (itemResult.Success)
                {
                    xsLadeBaseList = (List <XsLadeBaseDO>)itemResult.Data;
                }
            }

            //获取客商数据
            List <XsCompyBaseDO> xsCompyBaseList = new List <XsCompyBaseDO>();

            if (xsLadeBaseList != null)
            {
                var itemResult = await _orleansClient.GetGrain <IXsCompyBaseStateGrain>(GrainIdKey.UtcUIDGrainKey.ToString()).GetAllSync(new XsCompyBaseDTO
                {
                    Ids = xsLadeBaseList.Where(m => !string.IsNullOrEmpty(m.XLB_Client)).Select(m => m.XLB_Client).Distinct().ToList()
                });

                if (itemResult.Success)
                {
                    xsCompyBaseList = (List <XsCompyBaseDO>)itemResult.Data;
                }
            }

            //获取企业数据
            List <PbBasicFirmDO> pbBasicFirmList = new List <PbBasicFirmDO>();

            if (entities.Any(m => !string.IsNullOrEmpty(m.XLR_Firm)))
            {
                var itemResult = await _orleansClient.GetGrain <IPbBasicFirmStateGrain>(GrainIdKey.UtcUIDGrainKey.ToString()).GetAllSync(new PbBasicFirmDTO
                {
                    Ids = entities.Where(m => !string.IsNullOrEmpty(m.XLR_Firm)).Select(m => m.XLR_Firm).Distinct().ToList()
                });

                if (itemResult.Success)
                {
                    pbBasicFirmList = (List <PbBasicFirmDO>)itemResult.Data;
                }
            }

            //左连接查询数据
            var xsLadeRimpactVOs = (from rimpact in entities
                                    join t1 in xsLadeBaseList on rimpact.XLR_Lade equals t1.Id into mapping1
                                    from lade in mapping1.DefaultIfEmpty()  //左连接需要加上DefaultIfEmpty
                                    join t2 in xsCompyBaseList on lade.XLB_Client equals t2.XOB_ID into mapping2
                                    from compy in mapping2.DefaultIfEmpty() //左连接需要加上DefaultIfEmpty
                                    join t3 in pbBasicFirmList on rimpact.XLR_Firm equals t3.PBF_ID into mapping3
                                    from firm in mapping3.DefaultIfEmpty()  //左连接需要加上DefaultIfEmpty
                                    select new
            {
                rimpact,
                lade,
                compy,
                firm
            }).AsEnumerable()
                                   .Select(x =>
            {
                var result            = this.ObjectMapper.Map <XsLadeRimpactVO>(x.rimpact);
                result.XLB_LadeId     = x.lade?.XLB_LadeId;
                result.XLB_ClientName = x.compy?.XOB_Name;
                result.XLR_FirmName   = x.firm?.PBF_ShortName;
                return(result);
            })
                                   .ToList();

            //返回结果
            return(ApiResultUtil.IsSuccess(xsLadeRimpactVOs, count, model.PageIndex, model.PageSize));
        }