fix: add payment features #52

Merged
TakahashiNguyen merged 13 commits from add-payment into main 2026-05-12 05:22:10 +00:00
4 changed files with 78 additions and 0 deletions
Showing only changes of commit 1e68af9661 - Show all commits
@@ -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;
}