This commit is contained in:
masoodafar-web
2026-01-03 18:27:49 +03:30
parent 0369292d7f
commit 5965b98728
156 changed files with 16082 additions and 0 deletions
@@ -0,0 +1,112 @@
# FrontOffice.BFF
## Overview
FrontOffice.BFF (Backend-For-Frontend) is a gRPC-based API gateway that serves the FrontOffice web application. It communicates with the CMS microservice via gRPC and exposes APIs to the frontend.
## Architecture
```
Frontend (FrontOffice) → FrontOffice.BFF → CMS Microservice
```
## Project Structure
```
FrontOffice.BFF/
├── src/
│ ├── FrontOffice.BFF.Application/ # CQRS handlers, DTOs, interfaces
│ ├── FrontOffice.BFF.Domain/ # Domain entities
│ ├── FrontOffice.BFF.Infrastructure/ # gRPC clients, DI config
│ ├── FrontOffice.BFF.WebApi/ # gRPC services, mappings
│ └── Protobufs/ # Proto definitions for frontend
│ ├── FrontOffice.BFF.Category.Protobuf/
│ ├── FrontOffice.BFF.DiscountShop.Protobuf/ # NEW
│ ├── FrontOffice.BFF.Package.Protobuf/
│ ├── FrontOffice.BFF.Products.Protobuf/
│ ├── FrontOffice.BFF.ShopingCart.Protobuf/
│ ├── FrontOffice.BFF.Transaction.Protobuf/
│ ├── FrontOffice.BFF.User.Protobuf/
│ ├── FrontOffice.BFF.UserAddress.Protobuf/
│ ├── FrontOffice.BFF.UserOrder.Protobuf/
│ └── FrontOffice.BFF.UserWallet.Protobuf/
```
## Feature Modules
### DiscountShopCQ (New - Jan 2025)
فروشگاه تخفیفی برای اعضای باشگاه مشتریان
**Queries:**
- `GetDiscountProducts` - لیست محصولات تخفیفی
- `GetDiscountCategories` - دسته‌بندی‌های فروشگاه
- `GetMyDiscountCart` - سبد خرید تخفیفی کاربر
- `GetMyDiscountOrders` - سفارشات تخفیفی کاربر
**Commands:**
- `AddToDiscountCart` - افزودن به سبد خرید
- `RemoveFromDiscountCart` - حذف از سبد خرید
- `PlaceDiscountOrder` - ثبت سفارش
### CommissionCQ
سیستم کمیسیون شبکه‌ای
**Queries:**
- `GetMyCommissionPayouts` - لیست پرداخت‌های کمیسیون
- `GetMyWeeklyBalances` - بالانس‌های هفتگی
### NetworkMembershipCQ
عضویت شبکه‌ای و درخت باینری
**Queries:**
- `GetMyNetworkPosition` - موقعیت کاربر در شبکه
- `GetMyNetworkStatistics` - آمار شبکه
- `GetMyNetworkTree` - درخت شبکه
- `GetSubordinateTree` - درخت زیرمجموعه (NEW - ۲۸ آذر)
### ClubMembershipCQ
عضویت باشگاه مشتریان
**Queries:**
- `GetMyClubMembership` - وضعیت عضویت
**Commands:**
- `ActivateMyClubMembership` - فعال‌سازی عضویت
### UserWalletCQ
کیف پول کاربر
**Queries:**
- `GetUserWallet` - موجودی کیف پول
- `GetAllUserWalletChangeLog` - تاریخچه تراکنش‌ها
**Commands:**
- `WithdrawBalance` - درخواست برداشت
- `TransferUserWalletBallance` - انتقال موجودی (TODO: needs CMS proto)
- `DeleteUser` - حذف کاربر
## gRPC Clients (CMS Connection)
Defined in `IApplicationContractContext.cs`:
- `ProductContract` - محصولات
- `CategoryContract` - دسته‌بندی‌ها
- `ShopingCartContract` - سبد خرید
- `TransactionContract` - تراکنش‌ها
- `UserWalletContract` - کیف پول
- `UserContract` - کاربران
- `UserOrderContract` - سفارشات
- `NetworkMembershipContract` - عضویت شبکه
- `CommissionContract` - کمیسیون
- `ClubMembershipContract` - باشگاه مشتریان
- `DiscountProductContract` - محصولات تخفیفی (NEW)
- `DiscountCategoryContract` - دسته‌بندی تخفیفی (NEW)
- `DiscountShoppingCartContract` - سبد خرید تخفیفی (NEW)
- `DiscountOrderContract` - سفارش تخفیفی (NEW)
## Build & Run
```bash
cd FrontOffice.BFF/src
dotnet build
dotnet run --project FrontOffice.BFF.WebApi
```
## Last Updated
- **28 آذر ۱۴۰۴**: Added `GetSubordinateTree` handler for viewing subordinate network trees
- **January 2025**: Added DiscountShop integration (4 gRPC clients, 7 handlers, Proto service)