feat: Implement Discount Shop Completion Plan with Product Image Gallery, Admin APIs, VAT Calculation, and Sales Reports
- 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.
This commit is contained in:
@@ -1,8 +1,8 @@
|
||||
# BackOffice.BFF - Discount Shop Integration Plan
|
||||
|
||||
**تاریخ ایجاد**: 1403/09/13 (2024-12-04)
|
||||
**آخرین بروزرسانی**: 1403/09/14 (2024-12-05)
|
||||
**وضعیت**: ✅ پیادهسازی شده (Plan اجرا شده است)
|
||||
**آخرین بروزرسانی**: 1403/10/11 (2024-12-31)
|
||||
**وضعیت**: ✅ پیادهسازی کامل (شامل Image Gallery و Admin Reports)
|
||||
**اولویت در زمان طراحی**: 🔴 بالا
|
||||
|
||||
---
|
||||
@@ -17,8 +17,21 @@
|
||||
- 4 gRPC Services
|
||||
- Migration: AddDiscountShopSystem
|
||||
|
||||
### ⏳ وضعیت در BackOffice.BFF (بهروزرسانی)
|
||||
- **19 Handler** برای 4 سرویس جدید → ✅ پیادهسازی و متصل به CMS
|
||||
- **Phase 10: Product Image Gallery** - 100% ✅ (جدید)
|
||||
- 5 عملیات جدید: Add/Update/Delete/Reorder/Get Images
|
||||
- 2 Command + 3 RPC جدید
|
||||
- پشتیبانی از چندین تصویر برای هر محصول
|
||||
|
||||
- **Phase 11: Admin Order Reports** - 100% ✅ (جدید)
|
||||
- GetAllDiscountOrders: لیست کامل سفارشات با فیلتر و صفحهبندی
|
||||
- GetDiscountSalesReport: گزارش فروش با فیلتر تاریخ و نوع گزارش
|
||||
|
||||
### ✅ وضعیت در BackOffice.BFF (تکمیل شده)
|
||||
- **26 Handler** برای 6 سرویس → ✅ پیادهسازی و متصل به CMS
|
||||
- 19 Handler اصلی + 5 Handler گالری تصاویر + 2 Handler گزارش سفارشات
|
||||
- **2 gRPC Service در WebApi** → ✅ جدید
|
||||
- `DiscountProductService.cs` با 10 RPC endpoint
|
||||
- `DiscountOrderService.cs` با 7 RPC endpoint
|
||||
- **4 Client Interface** در `IApplicationContractContext` → ✅ اضافه و در `ApplicationContractContext` پیادهسازی شده
|
||||
- **Test و Validation** → ✅ در BackOffice UI (DiscountShop صفحات و سرویسها) در حال استفاده عملی
|
||||
|
||||
@@ -293,6 +306,153 @@
|
||||
|
||||
---
|
||||
|
||||
### 5️⃣ مدیریت گالری تصاویر محصولات (5 API جدید) 🆕
|
||||
|
||||
**سرویس**: `DiscountProductContract`
|
||||
|
||||
> **توجه**: این APIها برای مدیریت چندین تصویر برای هر محصول استفاده میشوند (گالری تصاویر).
|
||||
|
||||
#### الف. افزودن تصویر به گالری ⭐ **مهم**
|
||||
- **Handler**: `AddDiscountProductImageCommandHandler`
|
||||
- **Command**: `AddDiscountProductImageCommand`
|
||||
- **Request**:
|
||||
```csharp
|
||||
- ProductId (Guid)
|
||||
- Image (ImageFileModel)
|
||||
* File (byte[])
|
||||
* FileName (string)
|
||||
* Mime (string)
|
||||
- SortOrder (int - ترتیب نمایش)
|
||||
- IsMain (bool - آیا تصویر اصلی است؟)
|
||||
```
|
||||
- **Response**: ImageId (Guid)
|
||||
- **کاربرد Admin**: افزودن تصاویر جدید به گالری محصول
|
||||
|
||||
#### ب. ویرایش تصویر گالری
|
||||
- **Handler**: `UpdateDiscountProductImageCommandHandler`
|
||||
- **Command**: `UpdateDiscountProductImageCommand`
|
||||
- **Request**:
|
||||
```csharp
|
||||
- ImageId (Guid)
|
||||
- ProductId (Guid)
|
||||
- NewImage (ImageFileModel - اختیاری)
|
||||
- SortOrder (int)
|
||||
- IsMain (bool)
|
||||
```
|
||||
- **Response**: Success/Failure
|
||||
- **کاربرد Admin**: تغییر تصویر موجود یا تغییر ترتیب/اصلی بودن
|
||||
|
||||
#### ج. حذف تصویر از گالری
|
||||
- **Handler**: `DeleteDiscountProductImageCommandHandler`
|
||||
- **Command**: `DeleteDiscountProductImageCommand`
|
||||
- **Request**: ImageId (Guid), ProductId (Guid)
|
||||
- **Response**: Success/Failure
|
||||
- **کاربرد Admin**: حذف تصویر از گالری محصول
|
||||
|
||||
#### د. تغییر ترتیب تصاویر ⭐ **مهم**
|
||||
- **Handler**: `ReorderDiscountProductImagesCommandHandler`
|
||||
- **Command**: `ReorderDiscountProductImagesCommand`
|
||||
- **Request**:
|
||||
```csharp
|
||||
- ProductId (Guid)
|
||||
- ImageOrders (List)
|
||||
* ImageId (Guid)
|
||||
* SortOrder (int)
|
||||
```
|
||||
- **Response**: Success/Failure
|
||||
- **کاربرد Admin**: تغییر ترتیب نمایش تصاویر با drag & drop
|
||||
|
||||
#### ه. دریافت لیست تصاویر محصول
|
||||
- **Handler**: `GetDiscountProductImagesQueryHandler`
|
||||
- **Query**: `GetDiscountProductImagesQuery`
|
||||
- **Request**: ProductId (Guid)
|
||||
- **Response**:
|
||||
```csharp
|
||||
- List<ProductImageDto>
|
||||
* ImageId (Guid)
|
||||
* ImagePath (string)
|
||||
* SortOrder (int)
|
||||
* IsMain (bool)
|
||||
* CreatedAt (DateTime)
|
||||
```
|
||||
- **کاربرد Admin**: نمایش گالری تصاویر محصول
|
||||
|
||||
---
|
||||
|
||||
### 6️⃣ گزارشات مدیریتی سفارشات (2 API جدید) 🆕
|
||||
|
||||
**سرویس**: `DiscountOrderContract`
|
||||
|
||||
> **توجه**: این APIها برای گزارشگیری و مدیریت کلی سفارشات توسط ادمین استفاده میشوند.
|
||||
|
||||
#### الف. لیست کامل سفارشات ⭐⭐⭐ **خیلی مهم**
|
||||
- **Handler**: `GetAllDiscountOrdersQueryHandler`
|
||||
- **Query**: `GetAllDiscountOrdersQuery`
|
||||
- **Request**:
|
||||
```csharp
|
||||
- PageNumber (int - پیشفرض: 1)
|
||||
- PageSize (int - پیشفرض: 10)
|
||||
- UserId (Guid? - فیلتر کاربر)
|
||||
- Status (DeliveryStatus? - فیلتر وضعیت)
|
||||
- FromDate (DateTime? - از تاریخ)
|
||||
- ToDate (DateTime? - تا تاریخ)
|
||||
- SearchTerm (string? - جستجو در شماره سفارش/نام کاربر)
|
||||
```
|
||||
- **Response**:
|
||||
```csharp
|
||||
- MetaData (PaginationMetaData)
|
||||
* PageNumber
|
||||
* PageSize
|
||||
* TotalCount
|
||||
* TotalPages
|
||||
- Models (List<OrderSummaryDto>)
|
||||
* OrderId
|
||||
* UserId
|
||||
* UserName
|
||||
* TotalPrice
|
||||
* DiscountBalanceUsed
|
||||
* GatewayAmount
|
||||
* VatAmount (مالیات ارزش افزوده)
|
||||
* DeliveryStatus
|
||||
* ItemsCount
|
||||
* OrderDate
|
||||
* PaymentDate
|
||||
```
|
||||
- **کاربرد Admin**: مشاهده و فیلتر تمام سفارشات فروشگاه تخفیفی
|
||||
|
||||
#### ب. گزارش فروش ⭐⭐ **مهم**
|
||||
- **Handler**: `GetDiscountSalesReportQueryHandler`
|
||||
- **Query**: `GetDiscountSalesReportQuery`
|
||||
- **Request**:
|
||||
```csharp
|
||||
- FromDate (DateTime? - شروع بازه)
|
||||
- ToDate (DateTime? - پایان بازه)
|
||||
- ReportType (enum: Daily, Weekly, Monthly)
|
||||
```
|
||||
- **Response**:
|
||||
```csharp
|
||||
- SalesReportDto
|
||||
* TotalOrders (int - تعداد کل سفارشات)
|
||||
* TotalRevenue (decimal - مجموع درآمد)
|
||||
* TotalVat (decimal - مجموع مالیات)
|
||||
* TotalDiscountUsed (decimal - مجموع تخفیف استفاده شده)
|
||||
* AverageOrderValue (decimal - میانگین ارزش سفارش)
|
||||
* TopSellingProducts (List)
|
||||
- ProductId
|
||||
- ProductTitle
|
||||
- TotalSold
|
||||
- TotalRevenue
|
||||
* OrdersByStatus (Dictionary<DeliveryStatus, int>)
|
||||
* DailyBreakdown (List - جزئیات روزانه)
|
||||
- Date
|
||||
- OrderCount
|
||||
- Revenue
|
||||
- VatAmount
|
||||
```
|
||||
- **کاربرد Admin**: تحلیل عملکرد فروش و گزارشگیری دورهای
|
||||
|
||||
---
|
||||
|
||||
## 📋 لیست کامل Handlerهای مورد نیاز
|
||||
|
||||
### ✅ موجود در BackOffice.BFF (35 Handler)
|
||||
@@ -305,7 +465,7 @@
|
||||
7. Network Membership (3)
|
||||
8. Club Membership (4)
|
||||
|
||||
### ⏳ نیاز به ایجاد (19 Handler)
|
||||
### ✅ تکمیل شده (26 Handler)
|
||||
|
||||
#### گروه 1: Discount Product (5 Handlers)
|
||||
1. ✅ `CreateDiscountProductHandler`
|
||||
@@ -334,6 +494,17 @@
|
||||
18. ✅ `GetOrderByIdHandler` ⭐⭐⭐ **خیلی مهم**
|
||||
19. ✅ `GetUserOrdersHandler` ⭐⭐ **مهم**
|
||||
|
||||
#### گروه 5: Product Image Gallery (5 Handlers) 🆕
|
||||
20. ✅ `AddDiscountProductImageCommandHandler` ⭐ **جدید**
|
||||
21. ✅ `UpdateDiscountProductImageCommandHandler` **جدید**
|
||||
22. ✅ `DeleteDiscountProductImageCommandHandler` **جدید**
|
||||
23. ✅ `ReorderDiscountProductImagesCommandHandler` ⭐ **جدید**
|
||||
24. ✅ `GetDiscountProductImagesQueryHandler` **جدید**
|
||||
|
||||
#### گروه 6: Admin Order Reports (2 Handlers) 🆕
|
||||
25. ✅ `GetAllDiscountOrdersQueryHandler` ⭐⭐⭐ **جدید - خیلی مهم**
|
||||
26. ✅ `GetDiscountSalesReportQueryHandler` ⭐⭐ **جدید - مهم**
|
||||
|
||||
---
|
||||
|
||||
## 🏗️ تغییرات مورد نیاز در BackOffice.BFF
|
||||
@@ -567,6 +738,12 @@ BackOffice.BFF.Application/
|
||||
- اگر پرداخت ناموفق باشد: باید موجودی برگردانده شود (در CompleteOrderPayment)
|
||||
- Admin باید بتواند موجودی را دستی تغییر دهد
|
||||
|
||||
### ⚠️ نکته 5: VAT Calculation 🆕
|
||||
- مالیات ارزش افزوده (VAT) 10% برای هر سفارش محاسبه میشود
|
||||
- VAT روی قیمت نهایی (بعد از تخفیف) محاسبه میشود
|
||||
- فیلد `VatAmount` در هر سفارش ذخیره میشود
|
||||
- در گزارش فروش، مجموع VAT جداگانه نمایش داده میشود
|
||||
|
||||
---
|
||||
|
||||
## 📚 مستندات مرتبط
|
||||
@@ -574,20 +751,25 @@ BackOffice.BFF.Application/
|
||||
- [CMS Implementation Progress](../CMS/implementation-progress.md) - Phase 9 Details
|
||||
- [REMAINING-TASKS-CONSOLIDATED](../REMAINING-TASKS-CONSOLIDATED.md) - Overall Project Status
|
||||
- [BackOffice.BFF CMS Integration](./cms-integration.md) - Existing Integration Guide
|
||||
- [CHANGELOG-2025-12-31](../../CHANGELOG-2025-12-31.md) - تغییرات این سشن 🆕
|
||||
|
||||
---
|
||||
|
||||
## ✅ Checklist پیادهسازی
|
||||
|
||||
### Backend (BackOffice.BFF)
|
||||
- [ ] آپدیت IApplicationContractContext (4 Client)
|
||||
- [ ] آپدیت ApplicationContractContext (Implementation)
|
||||
- [ ] ایجاد 5 Handler محصولات
|
||||
- [ ] ایجاد 4 Handler دستهبندی
|
||||
- [ ] ایجاد 5 Handler سبد خرید
|
||||
- [ ] ایجاد 5 Handler سفارشات
|
||||
- [ ] تست تمام Handlerها
|
||||
- [ ] آپدیت مستندات cms-integration.md
|
||||
### Backend (BackOffice.BFF) - ✅ تکمیل شده
|
||||
- [x] آپدیت IApplicationContractContext (4 Client)
|
||||
- [x] آپدیت ApplicationContractContext (Implementation)
|
||||
- [x] ایجاد 5 Handler محصولات
|
||||
- [x] ایجاد 4 Handler دستهبندی
|
||||
- [x] ایجاد 5 Handler سبد خرید
|
||||
- [x] ایجاد 5 Handler سفارشات
|
||||
- [x] ایجاد 5 Handler گالری تصاویر 🆕
|
||||
- [x] ایجاد 2 Handler گزارش سفارشات 🆕
|
||||
- [x] ایجاد DiscountProductService (gRPC) 🆕
|
||||
- [x] ایجاد DiscountOrderService (gRPC) 🆕
|
||||
- [x] تست تمام Handlerها
|
||||
- [x] آپدیت مستندات cms-integration.md
|
||||
|
||||
### Frontend (BackOffice UI)
|
||||
- [ ] صفحه لیست محصولات
|
||||
@@ -596,8 +778,21 @@ BackOffice.BFF.Application/
|
||||
- [ ] صفحه لیست سفارشات
|
||||
- [ ] صفحه جزئیات سفارش
|
||||
- [ ] صفحه Support سبد خرید
|
||||
- [ ] صفحه گالری تصاویر محصول 🆕
|
||||
- [ ] صفحه گزارش فروش 🆕
|
||||
- [ ] تست UI با داده واقعی
|
||||
|
||||
---
|
||||
|
||||
**آماده شروع پیادهسازی؟** 🚀
|
||||
## 🎉 وضعیت نهایی
|
||||
|
||||
**Backend کاملاً آماده!** ✅
|
||||
|
||||
تمام APIهای لازم برای:
|
||||
- مدیریت محصولات (CRUD + گالری تصاویر)
|
||||
- مدیریت دستهبندیها
|
||||
- پشتیبانی سبد خرید
|
||||
- مدیریت سفارشات
|
||||
- گزارشگیری فروش
|
||||
|
||||
در لایههای BFF Application و WebApi پیادهسازی شدهاند. 🚀
|
||||
|
||||
Reference in New Issue
Block a user