- Added DiscountProductImage entity and related configurations for product image gallery. - Created commands and queries for managing product images. - Developed GetAllDiscountOrders API for admin order management with various filters. - Implemented VAT calculation service and integrated it into order processing. - Created Sales Reports API with support for daily, weekly, and monthly reports. - Completed gRPC services for BackOffice.BFF to expose new APIs. - Updated Proto files and project references accordingly.
8.4 KiB
📝 Changelog - ۱۱ دی ۱۴۰۴ (31 December 2025)
Session: Discount Shop Admin APIs Complete + BFF Layer Implementation
🎯 خلاصه Session
این session شامل موارد زیر بود:
- Product Image Gallery - گالری تصاویر محصولات فروشگاه تخفیفی (CMS + BFF)
- GetAllDiscountOrders API - API مدیریت سفارشات فروشگاه تخفیفی برای ادمین
- VAT Calculation - محاسبه مالیات بر ارزش افزوده
- Sales Reports API - گزارشات فروش روزانه/هفتگی/ماهانه با تقویم فارسی
- BFF WebApi Services - سرویسهای gRPC برای BackOffice.BFF
✨ تغییرات
1. 🖼️ Product Image Gallery (Phase 1) ✅
توضیح: پشتیبانی از گالری تصاویر برای محصولات فروشگاه تخفیفی
فایلهای CMS ایجاد شده:
| فایل | توضیح |
|---|---|
Domain/DiscountProduct/DiscountProductImage.cs |
Entity گالری تصویر |
Infrastructure/.../DiscountProductImageConfiguration.cs |
تنظیمات EF Core |
Application/.../AddDiscountProductImage/ |
Command افزودن تصویر |
Application/.../UpdateDiscountProductImage/ |
Command ویرایش تصویر |
Application/.../DeleteDiscountProductImage/ |
Command حذف تصویر |
Application/.../ReorderDiscountProductImages/ |
Command مرتبسازی تصاویر |
Application/.../GetDiscountProductImages/ |
Query دریافت تصاویر |
فایلهای BFF Application ایجاد شده:
| فایل | توضیح |
|---|---|
DiscountProductCQ/Commands/AddDiscountProductImage/ |
Command + Handler |
DiscountProductCQ/Commands/UpdateDiscountProductImage/ |
Command + Handler |
DiscountProductCQ/Commands/DeleteDiscountProductImage/ |
Command + Handler |
DiscountProductCQ/Commands/ReorderDiscountProductImages/ |
Command + Handler |
DiscountProductCQ/Queries/GetDiscountProductImages/ |
Query + Handler |
Entity Structure:
public class DiscountProductImage : BaseEntity<long>
{
public long DiscountProductId { get; set; }
public string ImagePath { get; set; }
public string? ThumbnailPath { get; set; }
public string? Title { get; set; }
public string? AltText { get; set; }
public int SortOrder { get; set; }
public bool IsActive { get; set; }
}
2. 📋 GetAllDiscountOrders Admin API (Phase 2) ✅
توضیح: API برای مدیریت تمام سفارشات فروشگاه تخفیفی توسط ادمین
فیلترهای پشتیبانی شده:
UserId- فیلتر بر اساس کاربرPaymentStatus- وضعیت پرداخت (Pending/Success/Reject)DeliveryStatus- وضعیت ارسالUserMobile- جستجو بر اساس موبایلTrackingCode- کد رهگیریFromDate/ToDate- بازه زمانیMinAmount/MaxAmount- بازه مبلغ
فایلهای CMS:
Application/DiscountOrderCQ/Queries/GetAllDiscountOrders/WebApi/DiscountOrderService.cs- افزودن RPC
فایلهای BFF:
Application/DiscountOrderCQ/Queries/GetAllDiscountOrders/
3. 💵 VAT Calculation (Phase 3) ✅
توضیح: سرویس محاسبه مالیات بر ارزش افزوده (۱۰٪)
فایلهای ایجاد شده:
CMS/Application/Common/Services/VatCalculator.cs
متدها:
public class VatCalculator : IVatCalculator
{
public const decimal VatRate = 0.10m; // 10% VAT
public decimal CalculateVat(decimal amount);
public decimal CalculateTotalWithVat(decimal amount);
public decimal CalculateBaseFromTotal(decimal totalWithVat);
public (decimal baseAmount, decimal vatAmount, decimal total) CalculateBreakdown(decimal amount);
}
یکپارچهسازی: در PlaceOrderCommandHandler استفاده شده
4. 📊 Sales Reports API (Phase 4) ✅
توضیح: گزارشات فروش با پشتیبانی تقویم فارسی
انواع گزارش:
Summary- خلاصه کلیDaily- روزانهWeekly- هفتگیMonthly- ماهانه
فایلهای CMS:
Application/DiscountOrderCQ/Queries/GetDiscountSalesReport/
فایلهای BFF:
Application/DiscountOrderCQ/Queries/GetDiscountSalesReport/
Response Structure:
public class DiscountSalesReportDto
{
public SalesSummaryDto Summary { get; set; }
public List<PeriodSalesDto> Periods { get; set; }
}
public class SalesSummaryDto
{
public int TotalOrders { get; set; }
public int SuccessfulOrders { get; set; }
public int PendingOrders { get; set; }
public int RejectedOrders { get; set; }
public decimal TotalRevenue { get; set; }
public decimal TotalDiscountUsed { get; set; }
public decimal TotalGatewayPayments { get; set; }
public decimal TotalVat { get; set; }
public int UniqueCustomers { get; set; }
}
5. 🔌 BFF WebApi gRPC Services (Phase 5) ✅
توضیح: سرویسهای gRPC در لایه WebApi برای expose کردن APIها
فایلهای ایجاد شده:
| فایل | توضیح |
|---|---|
BackOffice.BFF.WebApi/Services/DiscountProductService.cs |
سرویس محصولات تخفیفی |
BackOffice.BFF.WebApi/Services/DiscountOrderService.cs |
سرویس سفارشات تخفیفی |
تغییرات Proto Projects:
<!-- Before -->
<Protobuf GrpcServices="Client" />
<!-- After -->
<Protobuf GrpcServices="Both" />
فایلهای تغییر یافته:
BackOffice.BFF.DiscountProduct.Protobuf.csprojBackOffice.BFF.DiscountOrder.Protobuf.csprojBackOffice.BFF.WebApi.csproj- افزودن references
DiscountProductService Endpoints:
// Product CRUD
CreateDiscountProduct
UpdateDiscountProduct
DeleteDiscountProduct
GetDiscountProductById
GetDiscountProducts
// Image Gallery (NEW)
AddDiscountProductImage
UpdateDiscountProductImage
DeleteDiscountProductImage
ReorderDiscountProductImages
GetDiscountProductImages
DiscountOrderService Endpoints:
// Order Management
PlaceOrder
CompleteOrderPayment
UpdateOrderStatus
GetOrderById
GetUserOrders
// Admin APIs (NEW)
GetAllDiscountOrders
GetDiscountSalesReport
📁 ساختار فایلهای جدید
CMS/src/
├── CMSMicroservice.Application/
│ ├── Common/Services/VatCalculator.cs
│ └── DiscountOrderCQ/Queries/
│ ├── GetAllDiscountOrders/
│ │ ├── GetAllDiscountOrdersQuery.cs
│ │ └── GetAllDiscountOrdersQueryHandler.cs
│ └── GetDiscountSalesReport/
│ ├── GetDiscountSalesReportQuery.cs
│ └── GetDiscountSalesReportQueryHandler.cs
├── CMSMicroservice.Domain/DiscountProduct/
│ └── DiscountProductImage.cs
├── CMSMicroservice.Infrastructure/.../
│ └── DiscountProductImageConfiguration.cs
└── CMSMicroservice.Protobuf/Protos/
├── discountproduct.proto (updated)
└── discountorder.proto (updated)
BackOffice.BFF/src/
├── BackOffice.BFF.Application/
│ ├── DiscountProductCQ/
│ │ ├── Commands/
│ │ │ ├── AddDiscountProductImage/
│ │ │ ├── UpdateDiscountProductImage/
│ │ │ ├── DeleteDiscountProductImage/
│ │ │ └── ReorderDiscountProductImages/
│ │ └── Queries/
│ │ └── GetDiscountProductImages/
│ └── DiscountOrderCQ/Queries/
│ ├── GetAllDiscountOrders/
│ └── GetDiscountSalesReport/
├── BackOffice.BFF.WebApi/Services/
│ ├── DiscountProductService.cs (NEW)
│ └── DiscountOrderService.cs (NEW)
└── Protobufs/
├── BackOffice.BFF.DiscountProduct.Protobuf/ (GrpcServices=Both)
└── BackOffice.BFF.DiscountOrder.Protobuf/ (GrpcServices=Both)
✅ Build Status
| Project | Status |
|---|---|
| CMS Solution | ✅ Build Succeeded |
| BackOffice.BFF Solution | ✅ Build Succeeded |
🔜 Next Steps
- BackOffice UI - اتصال پنل ادمین به APIهای جدید
- FrontOffice.BFF - پیادهسازی APIها برای فرانتآفیس (اگر نیاز باشد)
- Unit Tests - نوشتن تستهای واحد