using System; using System.Collections.Generic; using System.Threading.Tasks; public class OrderController { public async Task<OrderInfo> GetOrderInfo(int orderId) { // 并发调用多个接口 Task<UserInfo> getUserInfoTask = GetUserInfoAsync(orderId); Task<ProductInfo> getProductInfoTask = GetProductInfoAsync(orderId); Task<LogisticsInfo> getLogisticsInfoTask = GetLogisticsInfoAsync(orderId); Task<List<ProductRecommendation>> getProductRecommendationsTask = GetProductRecommendationsAsync(orderId); // 等待所有任务完成 await Task.WhenAll(getUserInfoTask, getProductInfoTask, getLogisticsInfoTask, getProductRecommendationsTask); // 汇总数据 UserInfo userInfo = getUserInfoTask.Result; ProductInfo productInfo = getProductInfoTask.Result; LogisticsInfo logisticsInfo = getLogisticsInfoTask.Result; List<ProductRecommendation> productRecommendations = getProductRecommendationsTask.Result; // 构造订单信息对象 OrderInfo orderInfo = new OrderInfo { UserInfo = userInfo, ProductInfo = productInfo, LogisticsInfo = logisticsInfo, ProductRecommendations = productRecommendations }; return orderInfo; } private async Task<UserInfo> GetUserInfoAsync(int orderId) { // 调用用户信息接口,返回用户信息 // 例如:UserInfo userInfo = await UserService.GetUserInfoAsync(orderId); return userInfo; } private async Task<ProductInfo> GetProductInfoAsync(int orderId) { // 调用商品详情接口,返回商品详情 // 例如:ProductInfo productInfo = await ProductService.GetProductInfoAsync(orderId); return productInfo; } private async Task<LogisticsInfo> GetLogisticsInfoAsync(int orderId) { // 调用物流信息接口,返回物流信息 // 例如:LogisticsInfo logisticsInfo = await LogisticsService.GetLogisticsInfoAsync(orderId); return logisticsInfo; } private async Task<List<ProductRecommendation>> GetProductRecommendationsAsync(int orderId) { // 调用商品推荐接口,返回商品推荐列表 // 例如:List<ProductRecommendation> productRecommendations = await ProductService.GetProductRecommendationsAsync(orderId); return productRecommendations; } } public class OrderInfo { public UserInfo UserInfo { get; set; } public ProductInfo ProductInfo { get; set; } public LogisticsInfo LogisticsInfo { get; set; } public List<ProductRecommendation> ProductRecommendations { get; set; } } public class UserInfo { // 用户信息属性 } public class ProductInfo { // 商品详情属性 } public class LogisticsInfo { // 物流信息属性 } public class ProductRecommendation { // 商品推荐属性 }
以上代码示例中,OrderController
类的GetOrderInfo
方法是获取订单信息的入口。在该方法中,使用Task.WhenAll
方法并发调用多个其他服务的接口,并等待所有任务完成。然后,将各个接口返回的数据汇总到OrderInfo
对象中,并返回该对象作为订单信息。
请注意,以上代码仅为伪代码示例,具体的接口调用和数据处理逻辑需要根据实际情况进行实现。
标签:orderId,异步,Task,LogisticsInfo,接口,调用,public From: https://www.cnblogs.com/YzpJason/p/17717372.html