diff --git a/Myshipping.Application/Service/BookingOrder/BookingOrderService.cs b/Myshipping.Application/Service/BookingOrder/BookingOrderService.cs index fd88788c..2ad969e9 100644 --- a/Myshipping.Application/Service/BookingOrder/BookingOrderService.cs +++ b/Myshipping.Application/Service/BookingOrder/BookingOrderService.cs @@ -12048,14 +12048,89 @@ namespace Myshipping.Application /* MSKApiBooking + */ try { + if (string.IsNullOrWhiteSpace(model.carrierCode)) + throw Oops.Oh($"服务船公司不能为空"); + + if (string.IsNullOrWhiteSpace(model.carrierId)) + throw Oops.Oh("船公司代码不能为空"); + + string sendUrl = string.Empty; + + if (model.carrierId.Equals("MSK", StringComparison.OrdinalIgnoreCase)) + { + sendUrl = _cache.GetAllDictData().GetAwaiter().GetResult() + .FirstOrDefault(x => x.TypeCode == "url_set" && x.Code == CONST_MSK_API_BOOKING_URL)?.Value; + } + else + { + throw Oops.Oh($"当前船公司 {model.carrierId} 未配置相应的请求接口"); + } + + if (string.IsNullOrWhiteSpace(sendUrl)) + throw Oops.Oh("未配置发送订舱请求接口地址,请联系管理员"); + + var webAccountConfig = _webAccountConfig + .GetAccountConfig("MSKApi", UserManager.UserId).GetAwaiter().GetResult(); + + if (webAccountConfig == null) + throw Oops.Oh("未配置个人账户,请先配置个人账户 类型-MSKApi"); + + + MSKAPIBookingDto bookingDto = new MSKAPIBookingDto { + userKey = App.Configuration["MSKAPIDjyUserKey"], + userSecret = App.Configuration["MSKAPIDjyUserSecret"], + operatingEnvironment = App.Configuration["MSKAPIOPEnvironment"], + mskAppKey = webAccountConfig.Account, + bookingBody = new MSKAPIBookingBodyDto() + }; + bookingDto.bookingBody.references = new MSKAPIBookingReferenceDto { + priceReference = model.priceReference, + productCode = model.productCode, + sender = model.sender, + }; + + bookingDto.bookingBody.mandatoryParties = new MSKAPIBookingMandatoryParties { + bookedByCompanyName = model.bookedByCompanyName, + bookedByMaerskPartyCode = model.bookedByMaerskPartyCode, + bookedByPartyContact = new MSKAPIBookingMandatoryPartyContact { + name = model.bookedByCompanyContactName, + email = model.bookedByCompanyContactEmail + }, + priceOwnerCompanyName = model.priceOwnerCompanyName, + priceOwnerMaerskPartyCode = model.priceOwnerMaerskPartyCode, + priceOwnerPartyContact = new MSKAPIBookingMandatoryPartyContact { + name = model.priceOwnerContactName, + email = model.priceOwnerContactEmail + }, + }; + + bookingDto.bookingBody.transport = new MSKAPIBookingTransport { + carrierCode = model.carrierCode, + earliestDepartureDate = model.earliestDepartureDate, + exportServiceMode = model.exportServiceMode, + importServiceMode = model.importServiceMode, + routeDetails = new MSKAPIBookingRouteDetails { + placeOfReceipt = new MSKAPIBookingRouteDetailsBase { + UNLocationCode = model.placeOfReceiptUnLocCode, + cityName = model.placeOfReceiptCityName, + }, + placeOfDelivery = new MSKAPIBookingRouteDetailsBase { + UNLocationCode = model.placeOfDeliveryUnLocCode, + cityName = model.placeOfDeliveryCityName, + }, + } + }; } catch (Exception ex) { + _logger.LogError($"检索海运船期详情异常,req={JSON.Serialize(model)} 原因:{ex.Message}"); + throw Oops.Bah($"检索海运船期详情失败,{ex.Message}"); } return result;