fix: add payment features #52
@@ -0,0 +1,22 @@
|
||||
package com.drinkool.dtos;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import org.eclipse.microprofile.graphql.NonNull;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
public class OrderBill {
|
||||
|
||||
@NonNull
|
||||
public List<OrderItem> items;
|
||||
|
||||
@NonNull
|
||||
public Double totalAmount;
|
||||
|
||||
@NonNull
|
||||
public String payQr;
|
||||
}
|
||||
@@ -0,0 +1,20 @@
|
||||
package com.drinkool.dtos;
|
||||
|
||||
import java.util.UUID;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.NoArgsConstructor;
|
||||
import org.eclipse.microprofile.graphql.NonNull;
|
||||
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
public class OrderItem {
|
||||
|
||||
@NonNull
|
||||
public UUID menuItemId;
|
||||
|
||||
@NonNull
|
||||
public Integer quantity;
|
||||
|
||||
public Double price;
|
||||
public Double subTotal;
|
||||
}
|
||||
@@ -4,6 +4,8 @@ import com.drinkool.InternalValue;
|
||||
import com.drinkool.Role;
|
||||
import com.drinkool.dtos.AddMenuItem;
|
||||
import com.drinkool.dtos.DtoMapper;
|
||||
import com.drinkool.dtos.OrderBill;
|
||||
import com.drinkool.dtos.OrderItem;
|
||||
import com.drinkool.dtos.UpdateMenuItem;
|
||||
import com.drinkool.entities.EateryEntity;
|
||||
import com.drinkool.entities.MenuItemEntity;
|
||||
@@ -17,6 +19,7 @@ import jakarta.ws.rs.GET;
|
||||
import jakarta.ws.rs.Path;
|
||||
import jakarta.ws.rs.PathParam;
|
||||
import jakarta.ws.rs.core.Response;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.UUID;
|
||||
import org.eclipse.microprofile.graphql.GraphQLApi;
|
||||
@@ -153,4 +156,35 @@ public class EateryService {
|
||||
|
||||
return MenuItemEntity.list("eatery", eatery);
|
||||
}
|
||||
|
||||
@Query("calculateOrderSummary")
|
||||
public OrderBill calculateOrderSummary(
|
||||
@Name("eateryId") UUID eateryId,
|
||||
@Name("items") List<OrderItem> inputItems
|
||||
) {
|
||||
List<OrderItem> details = new ArrayList<>();
|
||||
double grandTotal = 0;
|
||||
|
||||
for (OrderItem input : inputItems) {
|
||||
MenuItemEntity itemEntity = MenuItemEntity.find(
|
||||
"id = ?1 and eatery.id = ?2",
|
||||
input.menuItemId,
|
||||
eateryId
|
||||
).firstResult();
|
||||
|
||||
if (itemEntity != null) {
|
||||
OrderItem detail = new OrderItem(
|
||||
itemEntity.id,
|
||||
input.quantity,
|
||||
itemEntity.price,
|
||||
itemEntity.price * input.quantity
|
||||
);
|
||||
|
||||
details.add(detail);
|
||||
grandTotal += detail.subTotal;
|
||||
}
|
||||
}
|
||||
|
||||
return new OrderBill(details, grandTotal, "");
|
||||
}
|
||||
}
|
||||
|
||||
@@ -3,4 +3,6 @@ package com.drinkool.lib.dtos;
|
||||
public class ManagerSignup extends Signup {
|
||||
|
||||
public String eateryName;
|
||||
|
||||
public String bankAccount;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user