112 lines
4.0 KiB
Markdown
112 lines
4.0 KiB
Markdown
# 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) |