2d833605b4
Build and Deploy / build (push) Successful in 2m18s
- Added InventoryMainPage for managing inventory items with filtering options. - Created LowStockPage to display low stock items with filtering capabilities. - Developed MovementsPage to track inventory movements with detailed filtering. - Introduced WarehousesPage for managing warehouses, including creation and viewing inventory. - Enhanced backend integration with InventoryBFFContract for data retrieval. - Implemented user-friendly UI components using MudBlazor for better user experience. - Added necessary dialog components for adding stock, adjusting inventory, and viewing movements.
6.2 KiB
6.2 KiB
فیچر فعالسازی (پرداخت) دستی باشگاه مشتریان
خلاصه
این فیچر امکان فعالسازی دستی عضویت باشگاه مشتریان را برای ادمین فراهم میکند. ادمین میتواند کاربر را انتخاب کرده، تصویر فیش پرداخت را آپلود کند و عضویت را فعال کند.
تاریخ: 2 ژانویه 2026
تغییرات انجام شده
1. CMS (Backend)
Entity - ManualPayment.cs
- اضافه شدن فیلد
ImageDocumentIdبرای ذخیره شناسه سند در FMS
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
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
- اضافه شدن فیلدهای:
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
مقادیر ثابت
// مبلغ پایه پکیج: 56 میلیون ریال
SystemConstants.BasePackageAmount = 56_000_000;
// شارژ کیف پول:
// - مجموع شارژ: 56M ریال
فلو کامل
- ادمین کاربر را با
UserAutoCompleteانتخاب میکند - نوع پرداخت را انتخاب میکند (پیشفرض: واریز نقدی)
- توضیحات را وارد میکند (پیشفرض: عضویت دستی باشگاه مشتریان)
- تصویر فیش را آپلود میکند (اختیاری)
- دکمه ثبت را میزند
- Frontend فایل را به BFF ارسال میکند
- BFF فایل را به FMS آپلود میکند
- FMS مسیر فایل (
File) و شناسه سند (Id) را برمیگرداند - BFF هر دو را به CMS ارسال میکند
- CMS تراکنش، پرداخت دستی و لاگ کیف پول را ثبت میکند
- کیف پول کاربر شارژ میشود
فایلهای تغییر یافته
CMS
CMSMicroservice.Domain/Entities/Payment/ManualPayment.csCMSMicroservice.Application/ManualPaymentCQ/Commands/CreateManualPayment/CreateManualPaymentCommand.csCMSMicroservice.Application/ManualPaymentCQ/Commands/CreateManualPayment/CreateManualPaymentCommandHandler.csProtos/manualpayment.proto
BFF
BackOffice.BFF.Application/ManualPaymentCQ/Commands/CreateManualPayment/CreateManualPaymentCommand.csBackOffice.BFF.Application/ManualPaymentCQ/Commands/CreateManualPayment/CreateManualPaymentCommandHandler.csBackOffice.BFF.Application/ManualPaymentCQ/Queries/GetManualPayments/GetManualPaymentsQueryHandler.csBackOffice.BFF.Application/ManualPaymentCQ/Queries/GetManualPayments/GetManualPaymentsResponseDto.csBackOffice.BFF.Application/ManualPaymentCQ/ManualPaymentProfile.csProtobufs/BackOffice.BFF.ManualPayment.Protobuf/Protos/manualpayment.proto
Frontend
BackOffice/Pages/Payment/Components/ManualPaymentDialog.razorBackOffice/Pages/Payment/Components/ManualPaymentDialog.razor.csBackOffice/Pages/Payment/ManualPayments.razorBackOffice/Shared/NavMenu.razor
حذف شده
BackOffice.Main/Pages/Payment/ManualMembershipPayment.razorBackOffice.Main/Pages/Payment/ManualMembershipPayment.razor.cs