コード例 #1
0
        public async Task <GetLogisticsForEditOutput> GetLogisticsForEdit(NullableIdDto <int> input)
        {
            GetLogisticsForEditOutput logisticsDto;

            if (input.Id.HasValue)
            {
                var logistics = await _logisticsManager.GetByIdAsync(input.Id.Value);

                logisticsDto = ObjectMapper.Map <GetLogisticsForEditOutput>(logistics);
            }
            else
            {
                logisticsDto = new GetLogisticsForEditOutput();
            }

            return(logisticsDto);
        }
コード例 #2
0
        /// <summary>
        /// 回传物流信息
        /// </summary>
        /// <param name="shipment"></param>
        /// <returns></returns>
        public async Task <bool> UploadOrderTrackingAsync(Shipment shipment)
        {
            if (!shipment.Order.AdvertAccountId.HasValue)
            {
                return(false);
            }

            if (!shipment.LogisticsId.HasValue)
            {
                return(false);
            }

            var account = await _advertAccountManager.GetByIdAsync(Convert.ToInt32(shipment.Order.AdvertAccountId.Value));

            if (account == null)
            {
                return(false);
            }

            if (account.IsAuthExpires())
            {
                await RefreshAccessTokenAsync(account);
            }

            var postUrl = OrderUpdateAddress() + GetRequestPara(account);

            if (shipment == null)
            {
                return(false);
            }

            using (var client = new HttpClient())
            {
                var logistics = await _logisticsManager.GetByIdAsync(shipment.LogisticsId.Value);

                var content = new FormUrlEncodedContent(new Dictionary <string, string>()
                {
                    { "account_id", account.ThirdpartyId },
                    { "ecommerce_order_id", shipment.OrderNumber },
                    { "delivery_tracking_number", shipment.LogisticsNumber },
                    { "express_company", GetFxShipEnum(logistics.Memo) },
                    { "ecommerce_order_status", "ORDER_DELIVERING" }
                });

                var response = client.PostAsync(postUrl, content).Result;

                var responseString = response.Content.ReadAsStringAsync().Result;
            }

            return(true);
        }
コード例 #3
0
        /// <summary>
        /// 更新物流信息
        /// </summary>
        /// <param name="trace"></param>
        /// <param name="shipment"></param>
        /// <returns></returns>
        public async Task UpdateShipmentTracesAsync(Shipment shipment, TraceResult trace)
        {
            var logistics = await _logisticsManager.GetByIdAsync(shipment.LogisticsId.Value);

            shipment.ShipmentDetail = JsonConvert.SerializeObject(trace);
            if (!trace.UpdateTime.IsNullOrEmpty())
            {
                shipment.ReceivedOn = Convert.ToDateTime(trace.UpdateTime).LocalTimeConverUtcTime(_dateTimeHelper);
            }

            var shipmentStatus = GetShippingStatus(logistics, shipment.ShipmentDetail, trace.State);

            shipment.Order.ShippingStatus = shipmentStatus;
            shipment.Status = shipmentStatus;

            await _orderManager.UpdateAsync(shipment.Order);
        }