update
This commit is contained in:
@@ -0,0 +1,164 @@
|
||||
# فیچر فعالسازی (پرداخت) دستی باشگاه مشتریان
|
||||
|
||||
## خلاصه
|
||||
این فیچر امکان فعالسازی دستی عضویت باشگاه مشتریان را برای ادمین فراهم میکند. ادمین میتواند کاربر را انتخاب کرده، تصویر فیش پرداخت را آپلود کند و عضویت را فعال کند.
|
||||
|
||||
## تاریخ: 2 ژانویه 2026
|
||||
|
||||
---
|
||||
|
||||
## تغییرات انجام شده
|
||||
|
||||
### 1. CMS (Backend)
|
||||
|
||||
#### Entity - `ManualPayment.cs`
|
||||
- اضافه شدن فیلد `ImageDocumentId` برای ذخیره شناسه سند در FMS
|
||||
|
||||
```csharp
|
||||
public long? ImageDocumentId { get; set; }
|
||||
```
|
||||
|
||||
#### Proto - `manualpayment.proto`
|
||||
- اضافه شدن `image_document_id` به `CreateManualPaymentRequest` (فیلد 7)
|
||||
- اضافه شدن `image_document_id` به `ManualPaymentModel` (فیلد 21)
|
||||
|
||||
#### Command - `CreateManualPaymentCommand.cs`
|
||||
- اضافه شدن پراپرتی `ImageDocumentId`
|
||||
|
||||
#### Handler - `CreateManualPaymentCommandHandler.cs`
|
||||
- ذخیره `ImageDocumentId` از request در entity
|
||||
|
||||
---
|
||||
|
||||
### 2. BFF (Backend For Frontend)
|
||||
|
||||
#### Proto - `manualpayment.proto`
|
||||
- اضافه شدن `image_document_id` به `ManualPaymentModel` (فیلد 21)
|
||||
- اضافه شدن `FileUploadModel` برای آپلود فایل
|
||||
- اضافه شدن `image_file` به `CreateManualPaymentRequest`
|
||||
|
||||
#### Command - `CreateManualPaymentCommand.cs`
|
||||
- اضافه شدن `FileUploadDto` برای دریافت فایل از فرانت
|
||||
|
||||
#### Handler - `CreateManualPaymentCommandHandler.cs`
|
||||
- اتصال به FMS برای آپلود فایل
|
||||
- استخراج `ImagePath` و `ImageDocumentId` از پاسخ FMS
|
||||
- ارسال هر دو به CMS
|
||||
|
||||
```csharp
|
||||
var fileInfo = await _context.FileInfos.CreateNewFileInfoAsync(new()
|
||||
{
|
||||
Directory = "Images/ManualPayments",
|
||||
IsBase64 = false,
|
||||
MIME = request.ImageFile.Mime,
|
||||
FileName = request.ImageFile.FileName,
|
||||
File = ByteString.CopyFrom(request.ImageFile.File)
|
||||
}, cancellationToken: cancellationToken);
|
||||
|
||||
if (fileInfo != null)
|
||||
{
|
||||
if (!string.IsNullOrWhiteSpace(fileInfo.File))
|
||||
grpcRequest.ImagePath = fileInfo.File;
|
||||
if (fileInfo.Id > 0)
|
||||
grpcRequest.ImageDocumentId = fileInfo.Id;
|
||||
}
|
||||
```
|
||||
|
||||
#### Query Handler - `GetManualPaymentsQueryHandler.cs`
|
||||
- اضافه شدن mapping برای `ImagePath` و `ImageDocumentId`
|
||||
|
||||
#### DTO - `GetManualPaymentsResponseDto.cs`
|
||||
- اضافه شدن فیلدهای:
|
||||
```csharp
|
||||
public string? ImagePath { get; set; }
|
||||
public long? ImageDocumentId { get; set; }
|
||||
```
|
||||
|
||||
#### Mapping - `ManualPaymentProfile.cs`
|
||||
- اضافه شدن mapping برای `FileUploadModel -> FileUploadDto`
|
||||
|
||||
---
|
||||
|
||||
### 3. Frontend (Blazor)
|
||||
|
||||
#### `ManualPaymentDialog.razor`
|
||||
- استفاده از `UserAutoComplete` برای انتخاب کاربر
|
||||
- استفاده از `MudFileUpload` برای آپلود تصویر فیش
|
||||
- استفاده از `MudSelect` برای انتخاب نوع پرداخت
|
||||
- پیشنمایش تصویر قبل از ارسال
|
||||
- تغییر عنوانها از "پرداخت دستی" به "فعالسازی دستی"
|
||||
|
||||
#### `ManualPaymentDialog.razor.cs`
|
||||
- هندل کردن انتخاب فایل با `IBrowserFile`
|
||||
- تبدیل فایل به Base64 برای پیشنمایش
|
||||
- ایجاد `FileUploadModel` برای ارسال به BFF
|
||||
- مقادیر پیشفرض:
|
||||
- `Type = 1` (واریز نقدی)
|
||||
- `Description = "عضویت دستی باشگاه مشتریان"`
|
||||
|
||||
#### `ManualPayments.razor`
|
||||
- تغییر عنوان صفحه به "فعالسازی (پرداخت) دستی"
|
||||
- تغییر دکمه به "ثبت فعالسازی دستی جدید"
|
||||
|
||||
#### `NavMenu.razor`
|
||||
- حذف آیتم منوی "پرداخت دستی عضویت"
|
||||
- تغییر نام "پرداختهای دستی" به "فعالسازی (پرداخت) دستی"
|
||||
|
||||
#### حذف شده
|
||||
- `ManualMembershipPayment.razor` و `ManualMembershipPayment.razor.cs`
|
||||
|
||||
---
|
||||
|
||||
## مقادیر ثابت
|
||||
|
||||
```csharp
|
||||
// مبلغ پایه پکیج: 56 میلیون ریال
|
||||
SystemConstants.BasePackageAmount = 56_000_000;
|
||||
|
||||
// شارژ کیف پول:
|
||||
// - مجموع شارژ: 56M ریال
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## فلو کامل
|
||||
|
||||
1. ادمین کاربر را با `UserAutoComplete` انتخاب میکند
|
||||
2. نوع پرداخت را انتخاب میکند (پیشفرض: واریز نقدی)
|
||||
3. توضیحات را وارد میکند (پیشفرض: عضویت دستی باشگاه مشتریان)
|
||||
4. تصویر فیش را آپلود میکند (اختیاری)
|
||||
5. دکمه ثبت را میزند
|
||||
6. Frontend فایل را به BFF ارسال میکند
|
||||
7. BFF فایل را به FMS آپلود میکند
|
||||
8. FMS مسیر فایل (`File`) و شناسه سند (`Id`) را برمیگرداند
|
||||
9. BFF هر دو را به CMS ارسال میکند
|
||||
10. CMS تراکنش، پرداخت دستی و لاگ کیف پول را ثبت میکند
|
||||
11. کیف پول کاربر شارژ میشود
|
||||
|
||||
---
|
||||
|
||||
## فایلهای تغییر یافته
|
||||
|
||||
### CMS
|
||||
- `CMSMicroservice.Domain/Entities/Payment/ManualPayment.cs`
|
||||
- `CMSMicroservice.Application/ManualPaymentCQ/Commands/CreateManualPayment/CreateManualPaymentCommand.cs`
|
||||
- `CMSMicroservice.Application/ManualPaymentCQ/Commands/CreateManualPayment/CreateManualPaymentCommandHandler.cs`
|
||||
- `Protos/manualpayment.proto`
|
||||
|
||||
### BFF
|
||||
- `BackOffice.BFF.Application/ManualPaymentCQ/Commands/CreateManualPayment/CreateManualPaymentCommand.cs`
|
||||
- `BackOffice.BFF.Application/ManualPaymentCQ/Commands/CreateManualPayment/CreateManualPaymentCommandHandler.cs`
|
||||
- `BackOffice.BFF.Application/ManualPaymentCQ/Queries/GetManualPayments/GetManualPaymentsQueryHandler.cs`
|
||||
- `BackOffice.BFF.Application/ManualPaymentCQ/Queries/GetManualPayments/GetManualPaymentsResponseDto.cs`
|
||||
- `BackOffice.BFF.Application/ManualPaymentCQ/ManualPaymentProfile.cs`
|
||||
- `Protobufs/BackOffice.BFF.ManualPayment.Protobuf/Protos/manualpayment.proto`
|
||||
|
||||
### Frontend
|
||||
- `BackOffice/Pages/Payment/Components/ManualPaymentDialog.razor`
|
||||
- `BackOffice/Pages/Payment/Components/ManualPaymentDialog.razor.cs`
|
||||
- `BackOffice/Pages/Payment/ManualPayments.razor`
|
||||
- `BackOffice/Shared/NavMenu.razor`
|
||||
|
||||
### حذف شده
|
||||
- `BackOffice.Main/Pages/Payment/ManualMembershipPayment.razor`
|
||||
- `BackOffice.Main/Pages/Payment/ManualMembershipPayment.razor.cs`
|
||||
Reference in New Issue
Block a user