diff --git a/gateway-service/src/main/java/com/drinkool/controller/MainController.java b/gateway-service/src/main/java/com/drinkool/controller/MainController.java index 7f378df..eb31be8 100644 --- a/gateway-service/src/main/java/com/drinkool/controller/MainController.java +++ b/gateway-service/src/main/java/com/drinkool/controller/MainController.java @@ -4,6 +4,7 @@ import com.drinkool.Url; import com.drinkool.lib.dtos.Login; import com.drinkool.services.CustomerService; import com.drinkool.services.ManagerService; +import com.drinkool.services.StaffService; import io.smallrye.mutiny.Uni; import jakarta.inject.Inject; import jakarta.ws.rs.POST; @@ -22,6 +23,10 @@ public class MainController extends BaseController { @RestClient CustomerService customerService; + @Inject + @RestClient + StaffService staffService; + @POST @Path(Url.Login) public Uni proxyLogin(Login input) { @@ -29,7 +34,12 @@ public class MainController extends BaseController { .login(input) .onFailure() .recoverWithUni(() -> { - return customerService.login(input); + return staffService + .login(input) + .onFailure() + .recoverWithUni(() -> { + return customerService.login(input); + }); }); } } diff --git a/gateway-service/src/main/java/com/drinkool/controller/StaffController.java b/gateway-service/src/main/java/com/drinkool/controller/StaffController.java new file mode 100644 index 0000000..47fe405 --- /dev/null +++ b/gateway-service/src/main/java/com/drinkool/controller/StaffController.java @@ -0,0 +1,33 @@ +package com.drinkool.controller; + +import com.drinkool.InternalValue; +import com.drinkool.Role; +import com.drinkool.Url; +import com.drinkool.lib.dtos.Signup; +import com.drinkool.services.StaffService; +import io.smallrye.mutiny.Uni; +import jakarta.inject.Inject; +import jakarta.ws.rs.HeaderParam; +import jakarta.ws.rs.POST; +import jakarta.ws.rs.Path; +import jakarta.ws.rs.core.Response; +import java.util.UUID; +import org.eclipse.microprofile.rest.client.inject.RestClient; + +@Path("/api/" + Role.Staff) +public class StaffController { + + @Inject + @RestClient + StaffService staffService; + + @POST + @Path(Url.Signup) + public Uni signup( + Signup input, + @HeaderParam(InternalValue.userId) UUID userId, + @HeaderParam(InternalValue.role) String role + ) { + return staffService.signup(input, userId, role); + } +} diff --git a/gateway-service/src/main/java/com/drinkool/services/StaffService.java b/gateway-service/src/main/java/com/drinkool/services/StaffService.java new file mode 100644 index 0000000..6b6b2eb --- /dev/null +++ b/gateway-service/src/main/java/com/drinkool/services/StaffService.java @@ -0,0 +1,31 @@ +package com.drinkool.services; + +import com.drinkool.InternalValue; +import com.drinkool.Role; +import com.drinkool.Url; +import com.drinkool.lib.dtos.*; +import io.smallrye.mutiny.Uni; +import jakarta.ws.rs.*; +import jakarta.ws.rs.core.Response; +import java.util.*; +import org.eclipse.microprofile.rest.client.inject.RegisterRestClient; + +@RegisterRestClient(configKey = "account") +@Path(Role.Staff) +public interface StaffService { + @POST + @Path(Url.Signup) + Uni signup( + Signup input, + @HeaderParam(InternalValue.userId) UUID userId, + @HeaderParam(InternalValue.role) String role + ); + + @POST + @Path(Url.Login) + Uni login(Login input); + + @GET + @Path(Url.Me) + Uni me(@HeaderParam(InternalValue.userId) UUID id); +}