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
cd FrontOffice.BFF/src
dotnet build
dotnet run --project FrontOffice.BFF.WebApi
Last Updated
- 28 آذر ۱۴۰۴: Added
GetSubordinateTreehandler for viewing subordinate network trees - January 2025: Added DiscountShop integration (4 gRPC clients, 7 handlers, Proto service)