public async Task <Result> SetTrackingNumber([FromBody] RefundSetTrackingNumberRequest request) { var item = await _orderItemRepository.Query() .Include(e => e.ReturnApply) .FirstOrDefaultAsync(e => e.Id == request.Id); if (item == null) { return(Result.Fail(ResultCodes.IdInvalid)); } if (item.Status != OrderItemStatus.ConfirmApply) { return(Result.Fail(ResultCodes.RequestParamError, "当前状态不允许设置快递单号")); } var returnApply = item.ReturnApply; if (string.IsNullOrEmpty(request.CourierCompany)) { returnApply.CourierCompany = CourierCompanyHelper.GetCompanyName(request.CourierCompanyCode); } else { returnApply.CourierCompany = request.CourierCompany; } returnApply.Status = ReturnAuditStatus.ReturnGoods; returnApply.CourierCompanyCode = request.CourierCompanyCode; returnApply.TrackingNumber = request.TrackingNumber; item.Status = OrderItemStatus.ReturnGoods; await _orderItemRepository.UpdateAsync(item); return(Result.Ok()); }
public async Task <Result> SetTrackingNumber(AdminShipmentSetTrackingNumberRequest request) { var shipment = await _shipmentRepository.Query() .Include(e => e.ShipmentOrderItems).ThenInclude(e => e.OrderItem) .Include(e => e.ShippingAddress) .FirstOrDefaultAsync(e => e.Id == request.Id); if (shipment == null) { return(Result.Fail(ResultCodes.IdInvalid)); } var status = new[] { ShippingStatus.PendingShipment, ShippingStatus.Shipped }; if (!status.Contains(shipment.ShippingStatus)) { return(Result.Fail(ResultCodes.RequestParamError, "当前订单不允许修改状态")); } if (string.IsNullOrEmpty(request.CourierCompany)) { shipment.CourierCompany = CourierCompanyHelper.GetCompanyName(request.CourierCompanyCode); } else { shipment.CourierCompany = request.CourierCompany; } shipment.TrackingNumber = request.TrackingNumber; shipment.CourierCompanyCode = request.CourierCompanyCode; if (shipment.ShippingStatus != ShippingStatus.Shipped) { shipment.ShippingStatus = ShippingStatus.Shipped; shipment.ShippingTime = DateTime.Now; var orderItems = shipment.ShipmentOrderItems.Select(e => e.OrderItem); foreach (var item in orderItems) { item.Status = OrderItemStatus.Shipped; } var message = new AutoReceivedShippingEvent { ShipmentId = shipment.Id }; var headers = new Dictionary <string, object>() { { "x-delay", 10 * 24 * 60 * 60 * 1000 } // 延迟10天自动收货 }; var properties = _client.CreateProperties(); properties.Headers = headers; _client.PushMessage(MQConstants.Exchange, MQConstants.AutoReceivedShippingKey, message, properties); var address = shipment.ShippingAddress; var notify = new ShippingNotify { TrackingNumber = request.TrackingNumber, UserName = address.UserName, CourierCompany = shipment.CourierCompany }; await _smsService.SendAsync(address.TelNumber, notify); } _shipmentRepository.Update(shipment, false); using (var transaction = _shipmentRepository.BeginTransaction()) { await _shipmentRepository.SaveAsync(); transaction.Commit(); } return(Result.Ok()); }