feat: Add discount module with protobuf definitions and gRPC services

This commit is contained in:
masoodafar-web
2025-12-06 01:39:22 +03:30
parent 4aa9f28f6e
commit 09fc0d85af
51 changed files with 1964 additions and 80 deletions

View File

@@ -0,0 +1,120 @@
syntax = "proto3";
package discountshoppingcart;
import "public_messages.proto";
import "google/protobuf/empty.proto";
import "google/protobuf/wrappers.proto";
import "google/protobuf/timestamp.proto";
import "google/api/annotations.proto";
option csharp_namespace = "BackOffice.BFF.DiscountShoppingCart.Protobuf.Protos.DiscountShoppingCart";
service DiscountShoppingCartContract
{
rpc AddToCart(AddToCartRequest) returns (AddToCartResponse){
option (google.api.http) = {
post: "/AddToCart"
body: "*"
};
};
rpc RemoveFromCart(RemoveFromCartRequest) returns (RemoveFromCartResponse){
option (google.api.http) = {
delete: "/RemoveFromCart"
body: "*"
};
};
rpc UpdateCartItemCount(UpdateCartItemCountRequest) returns (UpdateCartItemCountResponse){
option (google.api.http) = {
put: "/UpdateCartItemCount"
body: "*"
};
};
rpc GetUserCart(GetUserCartRequest) returns (GetUserCartResponse){
option (google.api.http) = {
get: "/GetUserCart"
};
};
rpc ClearCart(ClearCartRequest) returns (google.protobuf.Empty){
option (google.api.http) = {
delete: "/ClearCart"
body: "*"
};
};
}
// Add to Cart
message AddToCartRequest
{
int64 user_id = 1;
int64 product_id = 2;
int32 count = 3;
}
message AddToCartResponse
{
bool success = 1;
string message = 2;
}
// Remove from Cart
message RemoveFromCartRequest
{
int64 user_id = 1;
int64 product_id = 2;
}
message RemoveFromCartResponse
{
bool success = 1;
string message = 2;
}
// Update Cart Item Count
message UpdateCartItemCountRequest
{
int64 user_id = 1;
int64 product_id = 2;
int32 new_count = 3;
}
message UpdateCartItemCountResponse
{
bool success = 1;
string message = 2;
}
// Get User Cart
message GetUserCartRequest
{
int64 user_id = 1;
}
message GetUserCartResponse
{
repeated CartItemDto items = 1;
int64 total_price = 2;
int64 total_discount_amount = 3;
int64 final_price = 4;
}
message CartItemDto
{
int64 product_id = 1;
string product_title = 2;
string product_image_path = 3;
int64 unit_price = 4;
int32 max_discount_percent = 5;
int32 count = 6;
int64 total_price = 7;
int64 discount_amount = 8;
int64 final_price = 9;
int32 product_remaining_count = 10;
google.protobuf.Timestamp created = 11;
}
// Clear Cart
message ClearCartRequest
{
int64 user_id = 1;
}