73e1971cc3
- 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.
265 lines
8.4 KiB
Markdown
265 lines
8.4 KiB
Markdown
# 📝 Changelog - ۱۱ دی ۱۴۰۴ (31 December 2025)
|
|
|
|
> **Session**: Discount Shop Admin APIs Complete + BFF Layer Implementation
|
|
|
|
---
|
|
|
|
## 🎯 خلاصه Session
|
|
|
|
این session شامل موارد زیر بود:
|
|
|
|
1. **Product Image Gallery** - گالری تصاویر محصولات فروشگاه تخفیفی (CMS + BFF)
|
|
2. **GetAllDiscountOrders API** - API مدیریت سفارشات فروشگاه تخفیفی برای ادمین
|
|
3. **VAT Calculation** - محاسبه مالیات بر ارزش افزوده
|
|
4. **Sales Reports API** - گزارشات فروش روزانه/هفتگی/ماهانه با تقویم فارسی
|
|
5. **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**:
|
|
```csharp
|
|
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`
|
|
|
|
**متدها**:
|
|
```csharp
|
|
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**:
|
|
```csharp
|
|
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**:
|
|
```xml
|
|
<!-- Before -->
|
|
<Protobuf GrpcServices="Client" />
|
|
|
|
<!-- After -->
|
|
<Protobuf GrpcServices="Both" />
|
|
```
|
|
|
|
**فایلهای تغییر یافته**:
|
|
- `BackOffice.BFF.DiscountProduct.Protobuf.csproj`
|
|
- `BackOffice.BFF.DiscountOrder.Protobuf.csproj`
|
|
- `BackOffice.BFF.WebApi.csproj` - افزودن references
|
|
|
|
**DiscountProductService Endpoints**:
|
|
```csharp
|
|
// Product CRUD
|
|
CreateDiscountProduct
|
|
UpdateDiscountProduct
|
|
DeleteDiscountProduct
|
|
GetDiscountProductById
|
|
GetDiscountProducts
|
|
|
|
// Image Gallery (NEW)
|
|
AddDiscountProductImage
|
|
UpdateDiscountProductImage
|
|
DeleteDiscountProductImage
|
|
ReorderDiscountProductImages
|
|
GetDiscountProductImages
|
|
```
|
|
|
|
**DiscountOrderService Endpoints**:
|
|
```csharp
|
|
// 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
|
|
|
|
1. **BackOffice UI** - اتصال پنل ادمین به APIهای جدید
|
|
2. **FrontOffice.BFF** - پیادهسازی APIها برای فرانتآفیس (اگر نیاز باشد)
|
|
3. **Unit Tests** - نوشتن تستهای واحد
|