Esempio n. 1
0
        public async Task <RpcResult <SubmitOrderRes> > SubmitOrder(SubmitOrderReq req)
        {
            var result = new RpcResult <SubmitOrderRes>();

            try
            {
                //var userService = _rpcServiceProxy.GetService<IUserService>();
                //var user = await userService.GetUser(new UserService.DTO.GetUserReq { UserId = req.UserId });

                var productService = _rpcServiceProxy.GetService <IProductService>();
                foreach (var item in req.Lines ?? new List <SubmitOrderLine>())
                {
                    var skuInfo = await productService.GetProduct(new ProductService.DTO.GetProductReq {
                        ProductId = item.SkuId
                    });
                }


                result.Data = new SubmitOrderRes
                {
                    OrderId = OrderId++
                };
            }
            catch (Exception ex)
            {
                result.Code    = ExceptionCode.INTETNAL_ERROR;
                result.Message = "内部错误";
            }

            return(result);
        }
Esempio n. 2
0
        public async Task <RpcResult <GetProductRes> > GetProduct(GetProductReq req)
        {
            var result = new RpcResult <GetProductRes>();

            try
            {
                await Task.CompletedTask;
                //await Task.Delay(1);
                var userService = _rpcServiceProxy.GetService <IUserService>();
                var user        = await userService.GetUser(new UserService.DTO.GetUserReq {
                    UserId = req.ProductId
                });


                result.Data = new GetProductRes
                {
                    ProductId   = req.ProductId,
                    ProductName = "商品名称" + req.ProductId,
                    Price       = 100.50M
                };
            }
            catch (Exception ex)
            {
                result.Code    = ExceptionCode.INTETNAL_ERROR;
                result.Message = "内部错误";
            }

            return(result);
        }
Esempio n. 3
0
        public async Task <Message> Invoke(Message message)
        {
            var result = message.CopyToResponse();
            //找到本地方法 调用
            byte   serializeType = message.SerializeType;
            string serverName    = message.ServerName;
            string methodName    = message.MessageName;

            try
            {
                ISerialize serialize   = SerializeManage.Instance.GetSerialize(serializeType);//获取序列化对象
                Type       serviceType = ServiceTypeManage.Instance.GetType(serverName);
                AssertUtils.IsNotNull(serviceType, ExceptionCode.NOTFOUND_ERROR, "服务不存在");

                object service = _rpcServiceProxyFactory.GetService(serviceType); // _serviceProvider.GetService(serviceType);
                //object service = _serviceProvider.GetService(serviceType);
                MethodInfo      methodInfo     = service.GetType().GetMethod(methodName);
                ParameterInfo[] parameterInfos = methodInfo.GetParameters();
                object[]        inParms        = null;
                if (parameterInfos.Length > 0)
                {
                    object requestObj = serialize.Deserialize(parameterInfos[0].ParameterType, message.Data);
                    inParms = new object[] { requestObj };
                }
                var callResult = await MethodUtils.InvokeMethodAsync(service, methodInfo, inParms) as RpcResult;

                AssertUtils.IsNotNull(callResult, ExceptionCode.INTETNAL_ERROR, "返回空");

                result.ReturnCode    = callResult != null ? callResult.Code : 0;
                result.ReturnMessage = callResult != null ? callResult.Message : "";

                result.Data = serialize.Serialize(GetRpcResultData(callResult));
            }
            catch (Exception ex)
            {
                result.ReturnCode    = ExceptionCode.INTETNAL_ERROR;
                result.ReturnMessage = "内部错误";
                _logger.Error($"{serverName}.{methodName}, {ex.Message},{ex.StackTrace}");
            }
            return(result);//serialize.Serialize(result);
        }