diff --git a/src/CMSMicroservice.Application/DiscountShopCQ/Queries/GetOrderById/GetOrderByIdQuery.cs b/src/CMSMicroservice.Application/DiscountShopCQ/Queries/GetOrderById/GetOrderByIdQuery.cs
index 1e4966f..98ca6a0 100644
--- a/src/CMSMicroservice.Application/DiscountShopCQ/Queries/GetOrderById/GetOrderByIdQuery.cs
+++ b/src/CMSMicroservice.Application/DiscountShopCQ/Queries/GetOrderById/GetOrderByIdQuery.cs
@@ -32,6 +32,8 @@ public class UserAddressDto
public string Title { get; set; }
public string Address { get; set; }
public string PostalCode { get; set; }
+ /// شماره تماس سفارشدهنده (موبایل کاربر) برای برچسب پست
+ public string? Phone { get; set; }
}
public class OrderItemDto
diff --git a/src/CMSMicroservice.Application/DiscountShopCQ/Queries/GetOrderById/GetOrderByIdQueryHandler.cs b/src/CMSMicroservice.Application/DiscountShopCQ/Queries/GetOrderById/GetOrderByIdQueryHandler.cs
index 75a16da..4f00415 100644
--- a/src/CMSMicroservice.Application/DiscountShopCQ/Queries/GetOrderById/GetOrderByIdQueryHandler.cs
+++ b/src/CMSMicroservice.Application/DiscountShopCQ/Queries/GetOrderById/GetOrderByIdQueryHandler.cs
@@ -25,6 +25,7 @@ public class GetOrderByIdQueryHandler : IRequestHandler o.UserAddress)
+ .Include(o => o.User)
.Include(o => o.OrderDetails)
.ThenInclude(od => od.Product)
.FirstOrDefaultAsync(cancellationToken);
@@ -50,7 +51,8 @@ public class GetOrderByIdQueryHandler : IRequestHandler new OrderItemDto
{
diff --git a/src/CMSMicroservice.Application/UserOrderCQ/Queries/GetCustomerOrder/GetCustomerOrderQueryHandler.cs b/src/CMSMicroservice.Application/UserOrderCQ/Queries/GetCustomerOrder/GetCustomerOrderQueryHandler.cs
index 0368f24..c43e133 100644
--- a/src/CMSMicroservice.Application/UserOrderCQ/Queries/GetCustomerOrder/GetCustomerOrderQueryHandler.cs
+++ b/src/CMSMicroservice.Application/UserOrderCQ/Queries/GetCustomerOrder/GetCustomerOrderQueryHandler.cs
@@ -52,6 +52,8 @@ public class GetCustomerOrderQueryHandler : IRequestHandler new FactorDetailDto
diff --git a/src/CMSMicroservice.Application/UserOrderCQ/Queries/GetCustomerOrder/GetCustomerOrderResponseDto.cs b/src/CMSMicroservice.Application/UserOrderCQ/Queries/GetCustomerOrder/GetCustomerOrderResponseDto.cs
index 36ba239..5ee2481 100644
--- a/src/CMSMicroservice.Application/UserOrderCQ/Queries/GetCustomerOrder/GetCustomerOrderResponseDto.cs
+++ b/src/CMSMicroservice.Application/UserOrderCQ/Queries/GetCustomerOrder/GetCustomerOrderResponseDto.cs
@@ -20,6 +20,8 @@ public class GetCustomerOrderResponseDto
public string DeliveryDescription { get; set; }
public string UserFullName { get; set; }
public string UserNationalCode { get; set; }
+ public string PostalCode { get; set; } = string.Empty;
+ public string UserMobile { get; set; } = string.Empty;
public long VatAmount { get; set; }
public double VatPercentage { get; set; }
}
diff --git a/src/CMSMicroservice.Protobuf/CMSMicroservice.Protobuf.csproj b/src/CMSMicroservice.Protobuf/CMSMicroservice.Protobuf.csproj
index d205872..cff2532 100644
--- a/src/CMSMicroservice.Protobuf/CMSMicroservice.Protobuf.csproj
+++ b/src/CMSMicroservice.Protobuf/CMSMicroservice.Protobuf.csproj
@@ -3,7 +3,7 @@
net9.0
enable
enable
- 0.0.205
+ 0.0.206
None
False
False
diff --git a/src/CMSMicroservice.Protobuf/Protos/userorder.proto b/src/CMSMicroservice.Protobuf/Protos/userorder.proto
index 4ca6ce0..5f083bb 100644
--- a/src/CMSMicroservice.Protobuf/Protos/userorder.proto
+++ b/src/CMSMicroservice.Protobuf/Protos/userorder.proto
@@ -220,6 +220,9 @@ message GetUserOrderResponse
google.protobuf.StringValue user_national_code = 16;
// اطلاعات مالیات بر ارزش افزوده
OrderVATInfo vat_info = 17;
+ // اطلاعات پستی برای برچسب کارتن
+ google.protobuf.StringValue postal_code = 18;
+ google.protobuf.StringValue user_mobile = 19;
}
// اطلاعات مالیات بر ارزش افزوده
diff --git a/src/CMSMicroservice.WebApi/Services/DiscountOrderService.cs b/src/CMSMicroservice.WebApi/Services/DiscountOrderService.cs
index 140660a..4249823 100644
--- a/src/CMSMicroservice.WebApi/Services/DiscountOrderService.cs
+++ b/src/CMSMicroservice.WebApi/Services/DiscountOrderService.cs
@@ -141,6 +141,8 @@ public class DiscountOrderService : DiscountOrderContract.DiscountOrderContractB
Address = result.Address.Address ?? "",
PostalCode = result.Address.PostalCode ?? ""
};
+ if (!string.IsNullOrWhiteSpace(result.Address.Phone))
+ response.Address.Phone = result.Address.Phone;
}
foreach (var item in result.Items)
@@ -197,9 +199,98 @@ public class DiscountOrderService : DiscountOrderContract.DiscountOrderContractB
return response;
}
- public override async Task GetAllDiscountOrders(GetAllDiscountOrdersRequest request, ServerCallContext context)
+ public override async Task GetAllDiscountOrders(
+ GetAllDiscountOrdersRequest request, ServerCallContext context)
{
- return await _dispatchRequestToCQRS.Handle(request, context);
+ // Proto PaymentStatus ≠ Domain PaymentStatus (مقادیر int متفاوت) — Adapt خام باعث باگ لیست/فیلتر میشود
+ if (request.PaymentStatus is 3) // PAYMENT_REFUNDED — در دامنه وجود ندارد
+ {
+ return new GetAllDiscountOrdersResponse
+ {
+ MetaData = new CMSMicroservice.Protobuf.Protos.MetaData
+ {
+ TotalCount = 0,
+ PageSize = request.PageSize > 0 ? request.PageSize : 20,
+ CurrentPage = request.PageNumber > 0 ? request.PageNumber : 1,
+ TotalPage = 0
+ }
+ };
+ }
+
+ var query = new GetAllDiscountOrdersQuery
+ {
+ PaginationQuery = new Application.Common.Models.PaginationState
+ {
+ PageNumber = request.PageNumber > 0 ? request.PageNumber : 1,
+ PageSize = request.PageSize > 0 ? request.PageSize : 20
+ },
+ UserId = request.UserId,
+ UserMobile = request.UserMobile,
+ TrackingCode = request.TrackingCode,
+ FromDate = request.FromDate?.ToDateTime(),
+ ToDate = request.ToDate?.ToDateTime(),
+ MinAmount = request.MinAmount,
+ MaxAmount = request.MaxAmount
+ };
+
+ if (request.PaymentStatus is int paymentStatus)
+ query.PaymentStatus = MapProtoPaymentFilterToDomain(paymentStatus);
+
+ if (request.DeliveryStatus is int deliveryStatus)
+ query.DeliveryStatus = MapProtoDeliveryFilterToDomain(deliveryStatus);
+
+ var result = await _sender.Send(query, context.CancellationToken);
+
+ var response = new GetAllDiscountOrdersResponse
+ {
+ MetaData = new CMSMicroservice.Protobuf.Protos.MetaData
+ {
+ TotalCount = result.MetaData.TotalCount,
+ PageSize = result.MetaData.PageSize,
+ CurrentPage = result.MetaData.CurrentPage,
+ TotalPage = result.MetaData.TotalPage,
+ HasPrevious = result.MetaData.HasPrevious,
+ HasNext = result.MetaData.HasNext
+ }
+ };
+
+ foreach (var o in result.Models)
+ {
+ var model = new CMSMicroservice.Protobuf.Protos.DiscountOrder.AdminOrderDto
+ {
+ Id = o.Id,
+ UserId = o.UserId,
+ UserFullName = o.UserFullName ?? string.Empty,
+ UserMobile = o.UserMobile ?? string.Empty,
+ TotalAmount = o.TotalAmount,
+ DiscountBalanceUsed = o.DiscountBalanceUsed,
+ GatewayAmountPaid = o.GatewayAmountPaid,
+ VatAmount = o.VatAmount,
+ PaymentStatus = MapPaymentStatus(o.PaymentStatus),
+ DeliveryStatus = MapDeliveryStatus(o.DeliveryStatus),
+ ItemsCount = o.ItemsCount,
+ Created = Timestamp.FromDateTime(DateTime.SpecifyKind(o.Created, DateTimeKind.Utc))
+ };
+
+ if (o.PaymentDate.HasValue)
+ model.PaymentDate = Timestamp.FromDateTime(DateTime.SpecifyKind(o.PaymentDate.Value, DateTimeKind.Utc));
+ if (o.LastModified.HasValue)
+ model.LastModified = Timestamp.FromDateTime(DateTime.SpecifyKind(o.LastModified.Value, DateTimeKind.Utc));
+ if (!string.IsNullOrWhiteSpace(o.ShippingAddress))
+ model.ShippingAddress = o.ShippingAddress;
+ if (!string.IsNullOrWhiteSpace(o.ReceiverName))
+ model.ReceiverName = o.ReceiverName;
+ if (!string.IsNullOrWhiteSpace(o.ReceiverMobile))
+ model.ReceiverMobile = o.ReceiverMobile;
+ if (!string.IsNullOrWhiteSpace(o.TrackingCode))
+ model.TrackingCode = o.TrackingCode;
+ if (!string.IsNullOrWhiteSpace(o.AdminNote))
+ model.AdminNote = o.AdminNote;
+
+ response.Models.Add(model);
+ }
+
+ return response;
}
public override async Task GetDiscountSalesReport(GetDiscountSalesReportRequest request, ServerCallContext context)
@@ -359,6 +450,16 @@ public class DiscountOrderService : DiscountOrderContract.DiscountOrderContractB
_ => CMSMicroservice.Protobuf.Protos.DiscountOrder.PaymentStatus.PaymentPending
};
+ ///
+ /// فیلتر UI/proto → دامنه: PENDING=0, COMPLETED=1, FAILED=2
+ ///
+ private static DomainEnums.PaymentStatus MapProtoPaymentFilterToDomain(int protoPaymentStatus) => protoPaymentStatus switch
+ {
+ 1 => DomainEnums.PaymentStatus.Success, // PAYMENT_COMPLETED
+ 2 => DomainEnums.PaymentStatus.Reject, // PAYMENT_FAILED
+ _ => DomainEnums.PaymentStatus.Pending // PAYMENT_PENDING (0) و پیشفرض
+ };
+
private static DeliveryStatus MapDeliveryStatus(DomainEnums.DeliveryStatus status) => status switch
{
DomainEnums.DeliveryStatus.None => DeliveryStatus.DeliveryPending,
@@ -369,4 +470,16 @@ public class DiscountOrderService : DiscountOrderContract.DiscountOrderContractB
DomainEnums.DeliveryStatus.Cancelled => DeliveryStatus.DeliveryCancelled,
_ => DeliveryStatus.DeliveryPending
};
+
+ ///
+ /// فیلتر UI/proto → دامنه DeliveryStatus
+ ///
+ private static DomainEnums.DeliveryStatus MapProtoDeliveryFilterToDomain(int protoDeliveryStatus) => protoDeliveryStatus switch
+ {
+ 1 => DomainEnums.DeliveryStatus.Pending, // DELIVERY_PROCESSING
+ 2 => DomainEnums.DeliveryStatus.InTransit, // DELIVERY_SHIPPED
+ 3 => DomainEnums.DeliveryStatus.Delivered, // DELIVERY_DELIVERED
+ 4 => DomainEnums.DeliveryStatus.Cancelled, // DELIVERY_CANCELLED
+ _ => DomainEnums.DeliveryStatus.None // DELIVERY_PENDING (0)
+ };
}
diff --git a/src/CMSMicroservice.WebApi/Services/UserOrderService.cs b/src/CMSMicroservice.WebApi/Services/UserOrderService.cs
index 24eeb5d..c780da0 100644
--- a/src/CMSMicroservice.WebApi/Services/UserOrderService.cs
+++ b/src/CMSMicroservice.WebApi/Services/UserOrderService.cs
@@ -121,7 +121,9 @@ public class UserOrderService : UserOrderContract.UserOrderContractBase
TrackingCode = result.TrackingCode,
DeliveryDescription = result.DeliveryDescription,
UserFullName = result.UserFullName,
- UserNationalCode = result.UserNationalCode
+ UserNationalCode = result.UserNationalCode,
+ PostalCode = result.PostalCode,
+ UserMobile = result.UserMobile
};
// VAT Info
@@ -789,7 +791,9 @@ public class UserOrderService : UserOrderContract.UserOrderContractBase
TrackingCode = result.TrackingCode,
DeliveryDescription = result.DeliveryDescription,
UserFullName = result.UserFullName,
- UserNationalCode = result.UserNationalCode
+ UserNationalCode = result.UserNationalCode,
+ PostalCode = result.PostalCode,
+ UserMobile = result.UserMobile
};
// VAT Info