feat: Implement Public Message Management Commands and Queries

- Add GetUserPackageStatusQueryValidator for user package status validation.
- Create ArchiveMessageCommand and ArchiveMessageCommandHandler for archiving public messages.
- Implement ArchiveMessageCommandValidator to validate message ID.
- Introduce PublishMessageCommand and PublishMessageCommandHandler for publishing messages.
- Add PublishMessageCommandValidator for validating publish message requests.
- Implement GetPublicMessageQuery and GetPublicMessageQueryHandler for retrieving public messages.
- Create GetPublicMessageQueryValidator for validating public message requests.
- Add ApplyDiscountToOrderCommand and ApplyDiscountToOrderCommandHandler for applying discounts to orders.
- Implement ApplyDiscountToOrderCommandValidator for validating discount application requests.
- Create UpdateOrderStatusCommand and UpdateOrderStatusCommandHandler for changing order statuses.
- Implement UpdateOrderStatusCommandValidator for validating order status updates.
- Add CalculateOrderPVQuery and CalculateOrderPVQueryHandler for calculating order PV.
- Implement CalculateOrderPVQueryValidator for validating PV calculation requests.
- Create GetOrdersByDateRangeQuery and GetOrdersByDateRangeQueryHandler for retrieving orders by date range.
- Implement GetOrdersByDateRangeQueryValidator for validating date range queries.
- Add PublicMessage entity to represent public messages in the system.
- Implement PublicMessageService for handling public message operations via gRPC.
This commit is contained in:
masoodafar-web
2025-12-04 03:43:19 +03:30
parent 84f642e900
commit ba6d74fe35
45 changed files with 1777 additions and 22 deletions

View File

@@ -43,6 +43,25 @@ service PackageContract
};
};
// Package Purchase System
rpc PurchaseGoldenPackage(PurchaseGoldenPackageRequest) returns (PurchaseGoldenPackageResponse){
option (google.api.http) = {
post: "/PurchaseGoldenPackage"
body: "*"
};
};
rpc VerifyGoldenPackagePurchase(VerifyGoldenPackagePurchaseRequest) returns (VerifyGoldenPackagePurchaseResponse){
option (google.api.http) = {
post: "/VerifyGoldenPackagePurchase"
body: "*"
};
};
rpc GetUserPackageStatus(GetUserPackageStatusRequest) returns (GetUserPackageStatusResponse){
option (google.api.http) = {
get: "/GetUserPackageStatus"
};
};
}
message CreateNewPackageRequest
{
@@ -106,3 +125,55 @@ message GetAllPackageByFilterResponseModel
string image_path = 4;
int64 price = 5;
}
// Package Purchase Messages
message PurchaseGoldenPackageRequest
{
int64 user_id = 1;
int64 package_id = 2;
string return_url = 3;
}
message PurchaseGoldenPackageResponse
{
bool success = 1;
string message = 2;
int64 order_id = 3;
string payment_gateway_url = 4;
string tracking_code = 5;
}
message VerifyGoldenPackagePurchaseRequest
{
int64 order_id = 1;
string authority = 2;
string status = 3;
}
message VerifyGoldenPackagePurchaseResponse
{
bool success = 1;
string message = 2;
int64 order_id = 3;
int64 transaction_id = 4;
string reference_code = 5;
int64 wallet_balance = 6;
}
message GetUserPackageStatusRequest
{
int64 user_id = 1;
}
message GetUserPackageStatusResponse
{
int64 user_id = 1;
string package_purchase_method = 2;
bool has_purchased_package = 3;
bool is_club_member_active = 4;
int64 wallet_balance = 5;
int64 discount_balance = 6;
bool can_activate_club_membership = 7;
google.protobuf.StringValue last_order_number = 8;
google.protobuf.Timestamp last_purchase_date = 9;
}