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
@@ -55,6 +55,30 @@ service UserOrderContract
body: "*"
};
};
// Order Management
rpc UpdateOrderStatus(UpdateOrderStatusRequest) returns (UpdateOrderStatusResponse){
option (google.api.http) = {
post: "/UpdateOrderStatus"
body: "*"
};
};
rpc GetOrdersByDateRange(GetOrdersByDateRangeRequest) returns (GetOrdersByDateRangeResponse){
option (google.api.http) = {
get: "/GetOrdersByDateRange"
};
};
rpc ApplyDiscountToOrder(ApplyDiscountToOrderRequest) returns (ApplyDiscountToOrderResponse){
option (google.api.http) = {
post: "/ApplyDiscountToOrder"
body: "*"
};
};
rpc CalculateOrderPV(CalculateOrderPVRequest) returns (CalculateOrderPVResponse){
option (google.api.http) = {
get: "/CalculateOrderPV"
};
};
}
message CreateNewUserOrderRequest
{
@@ -247,3 +271,85 @@ message CancelOrderResponse
string message = 3;
bool refund_processed = 4;
}
// Order Management Messages
message UpdateOrderStatusRequest
{
int64 order_id = 1;
int32 new_status = 2;
}
message UpdateOrderStatusResponse
{
bool success = 1;
string message = 2;
int32 old_status = 3;
int32 new_status = 4;
}
message GetOrdersByDateRangeRequest
{
google.protobuf.Timestamp start_date = 1;
google.protobuf.Timestamp end_date = 2;
google.protobuf.Int32Value status = 3;
google.protobuf.Int64Value user_id = 4;
int32 page_number = 5;
int32 page_size = 6;
}
message GetOrdersByDateRangeResponse
{
messages.MetaData meta_data = 1;
repeated OrderSummaryDto orders = 2;
}
message OrderSummaryDto
{
int64 order_id = 1;
string order_number = 2;
int64 user_id = 3;
string user_full_name = 4;
int64 total_amount = 5;
int32 status = 6;
string status_name = 7;
int32 items_count = 8;
google.protobuf.Timestamp created_at = 9;
}
message ApplyDiscountToOrderRequest
{
int64 order_id = 1;
int64 discount_amount = 2;
string reason = 3;
}
message ApplyDiscountToOrderResponse
{
bool success = 1;
string message = 2;
int64 original_amount = 3;
int64 discount_amount = 4;
int64 final_amount = 5;
}
message CalculateOrderPVRequest
{
int64 order_id = 1;
}
message CalculateOrderPVResponse
{
int64 order_id = 1;
int64 total_pv = 2;
repeated ProductPVDto products = 3;
}
message ProductPVDto
{
int64 product_id = 1;
string product_title = 2;
int32 quantity = 3;
int64 unit_pv = 4;
int64 total_pv = 5;
}