diff --git a/http/change-password.http b/http/change-password.http new file mode 100644 index 0000000..66f47d2 --- /dev/null +++ b/http/change-password.http @@ -0,0 +1,45 @@ +### Register User +POST http://localhost:8080/api/v1/auth/register +Content-Type: application/json + +{ + "firstname": "Ali", + "lastname": "Bouali", + "email": "alibou@mail.com", + "password": "password", + "role": "ADMIN" +} + +> {% client.global.set("auth-token", response.body.access_token); %} + +### Query the Demo endpoint +GET http://localhost:8080/api/v1/demo-controller +Authorization: Bearer {{auth-token}} + + +### Change the password +PATCH http://localhost:8080/api/v1/users +Content-Type: application/json +Authorization: Bearer {{auth-token}} + +{ + "currentPassword": "password", + "newPassword": "newPassword", + "confirmationPassword": "newPassword" +} + +### Login again and update the token +POST http://localhost:8080/api/v1/auth/authenticate +Content-Type: application/json + +{ + "email": "alibou@mail.com", + "password": "newPassword" +} + +> {% client.global.set("new-auth-token", response.body.access_token); %} + + +### Query the Demo endpoint after password change +GET http://localhost:8080/api/v1/demo-controller +Authorization: Bearer {{new-auth-token}} diff --git a/http/http-test.http b/http/http-test.http new file mode 100644 index 0000000..918cb2e --- /dev/null +++ b/http/http-test.http @@ -0,0 +1,17 @@ +### Register User +POST http://localhost:8080/api/v1/auth/register +Content-Type: application/json + +{ + "firstname": "Ali", + "lastname": "Bouali", + "email": "alibou21@mail.com", + "password": "password", + "role": "ADMIN" +} + +> {% client.global.set("auth-token", response.body.access_token); %} + +### Query the Demo endpoint +GET http://localhost:8080/api/v1/demo-controller +Authorization: Bearer {{auth-token}} diff --git a/http/jpa-auditing.http b/http/jpa-auditing.http new file mode 100644 index 0000000..a8245bb --- /dev/null +++ b/http/jpa-auditing.http @@ -0,0 +1,44 @@ +### Register User +POST http://localhost:8080/api/v1/auth/register +Content-Type: application/json + +{ + "firstname": "Ali", + "lastname": "Bouali", + "email": "alibou@mail.com", + "password": "password", + "role": "ADMIN" +} + +> {% client.global.set("auth-token", response.body.access_token); %} + + +###Create a new book +POST http://localhost:8080/api/v1/books +Authorization: Bearer {{auth-token}} +Content-Type: application/json + +{ + "author": "Alibou", + "isbn": "12345" +} + +### Query Books +GET http://localhost:8080/api/v1/books +Authorization: Bearer {{auth-token}} + +### Update one book +POST http://localhost:8080/api/v1/books +Authorization: Bearer {{auth-token}} +Content-Type: application/json + +{ + "id": 1, + "author": "Alibou 2", + "isbn": "12345" +} + + +### Query the Books one more time +GET http://localhost:8080/api/v1/books +Authorization: Bearer {{auth-token}} diff --git a/jwt-security.drawio b/jwt-security.drawio new file mode 100644 index 0000000..75c044a --- /dev/null +++ b/jwt-security.drawio @@ -0,0 +1,517 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/logs/integration-service.log b/logs/integration-service.log new file mode 100644 index 0000000..02a4341 --- /dev/null +++ b/logs/integration-service.log @@ -0,0 +1,25 @@ +2026-05-20T08:25:45.241-04:00 INFO 5596 --- [main] com.goi.erp.SecurityApplication : Starting SecurityApplication using Java 17.0.16 with PID 5596 (D:\workspace-eclipse\crm-rest-api\target\classes started by Hyojin Ahn in D:\workspace-eclipse\crm-rest-api) +2026-05-20T08:25:45.246-04:00 INFO 5596 --- [main] com.goi.erp.SecurityApplication : The following 1 profile is active: "default" +2026-05-20T08:25:45.694-04:00 INFO 5596 --- [main] .s.d.r.c.RepositoryConfigurationDelegate : Bootstrapping Spring Data JPA repositories in DEFAULT mode. +2026-05-20T08:25:45.786-04:00 INFO 5596 --- [main] .s.d.r.c.RepositoryConfigurationDelegate : Finished Spring Data repository scanning in 87 ms. Found 3 JPA repository interfaces. +2026-05-20T08:25:46.383-04:00 INFO 5596 --- [main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat initialized with port(s): 8082 (http) +2026-05-20T08:25:46.389-04:00 INFO 5596 --- [main] o.apache.catalina.core.StandardService : Starting service [Tomcat] +2026-05-20T08:25:46.389-04:00 INFO 5596 --- [main] o.apache.catalina.core.StandardEngine : Starting Servlet engine: [Apache Tomcat/10.1.13] +2026-05-20T08:25:46.457-04:00 INFO 5596 --- [main] o.a.c.c.C.[.[localhost].[/crm-rest-api] : Initializing Spring embedded WebApplicationContext +2026-05-20T08:25:46.457-04:00 INFO 5596 --- [main] w.s.c.ServletWebServerApplicationContext : Root WebApplicationContext: initialization completed in 1173 ms +2026-05-20T08:25:46.602-04:00 INFO 5596 --- [main] o.hibernate.jpa.internal.util.LogHelper : HHH000204: Processing PersistenceUnitInfo [name: default] +2026-05-20T08:25:46.632-04:00 INFO 5596 --- [main] org.hibernate.Version : HHH000412: Hibernate ORM core version 6.2.9.Final +2026-05-20T08:25:46.635-04:00 INFO 5596 --- [main] org.hibernate.cfg.Environment : HHH000406: Using bytecode reflection optimizer +2026-05-20T08:25:46.716-04:00 INFO 5596 --- [main] o.h.b.i.BytecodeProviderInitiator : HHH000021: Bytecode provider name : bytebuddy +2026-05-20T08:25:46.783-04:00 INFO 5596 --- [main] o.s.o.j.p.SpringPersistenceUnitInfo : No LoadTimeWeaver setup: ignoring JPA class transformer +2026-05-20T08:25:46.793-04:00 INFO 5596 --- [main] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Starting... +2026-05-20T08:25:46.891-04:00 INFO 5596 --- [main] com.zaxxer.hikari.pool.HikariPool : HikariPool-1 - Added connection org.postgresql.jdbc.PgConnection@674e4c82 +2026-05-20T08:25:46.892-04:00 INFO 5596 --- [main] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Start completed. +2026-05-20T08:25:47.044-04:00 INFO 5596 --- [main] o.h.b.i.BytecodeProviderInitiator : HHH000021: Bytecode provider name : bytebuddy +2026-05-20T08:25:47.499-04:00 INFO 5596 --- [main] o.h.e.t.j.p.i.JtaPlatformInitiator : HHH000490: Using JtaPlatform implementation: [org.hibernate.engine.transaction.jta.platform.internal.NoJtaPlatform] +2026-05-20T08:25:47.549-04:00 INFO 5596 --- [main] j.LocalContainerEntityManagerFactoryBean : Initialized JPA EntityManagerFactory for persistence unit 'default' +2026-05-20T08:25:47.931-04:00 WARN 5596 --- [main] JpaBaseConfiguration$JpaWebConfiguration : spring.jpa.open-in-view is enabled by default. Therefore, database queries may be performed during view rendering. Explicitly configure spring.jpa.open-in-view to disable this warning +2026-05-20T08:25:48.177-04:00 INFO 5596 --- [main] o.s.b.a.e.web.EndpointLinksResolver : Exposing 1 endpoint(s) beneath base path '/actuator' +2026-05-20T08:25:48.210-04:00 INFO 5596 --- [main] o.s.s.web.DefaultSecurityFilterChain : Will secure any request with [org.springframework.security.web.session.DisableEncodeUrlFilter@466fd19b, org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter@348d1a5e, org.springframework.security.web.context.SecurityContextHolderFilter@3fc92211, org.springframework.security.web.header.HeaderWriterFilter@227ae4e4, org.springframework.security.web.authentication.logout.LogoutFilter@3ae5cbb9, org.springframework.web.filter.CorsFilter@7f746160, com.goi.erp.config.JwtAuthenticationFilter@16ea0f22, org.springframework.security.web.savedrequest.RequestCacheAwareFilter@117bfeb8, org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter@31aec04a, org.springframework.security.web.authentication.AnonymousAuthenticationFilter@17524c36, org.springframework.security.web.session.SessionManagementFilter@440309c5, org.springframework.security.web.access.ExceptionTranslationFilter@1b2213b2, org.springframework.security.web.access.intercept.AuthorizationFilter@24e0bdb] +2026-05-20T08:25:48.496-04:00 INFO 5596 --- [main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat started on port(s): 8082 (http) with context path '/crm-rest-api' +2026-05-20T08:25:48.505-04:00 INFO 5596 --- [main] com.goi.erp.SecurityApplication : Started SecurityApplication in 3.548 seconds (process running for 3.992) diff --git a/logs/integration-service.log.2026-03-19.0.gz b/logs/integration-service.log.2026-03-19.0.gz new file mode 100644 index 0000000..7e30c44 Binary files /dev/null and b/logs/integration-service.log.2026-03-19.0.gz differ diff --git a/logs/integration-service.log.2026-03-30.0.gz b/logs/integration-service.log.2026-03-30.0.gz new file mode 100644 index 0000000..0364b6b Binary files /dev/null and b/logs/integration-service.log.2026-03-30.0.gz differ diff --git a/src/main/java/com/goi/erp/dto/CustomerDailyOrderRequestDto.java b/src/main/java/com/goi/erp/dto/CustomerDailyOrderRequestDto.java index 0be5933..2e7c670 100644 --- a/src/main/java/com/goi/erp/dto/CustomerDailyOrderRequestDto.java +++ b/src/main/java/com/goi/erp/dto/CustomerDailyOrderRequestDto.java @@ -16,6 +16,7 @@ public class CustomerDailyOrderRequestDto { private String cdoOrderType; // 주문 타입 ('N' 등) private String cdoRequestNote; // 주문 요청 메모 private String cdoExternalDriverId; // MIS 에서 driverId 로 호출해서 employee_external_map 참조해야함 + private String cdoExternalCreatedBy; // MIS 에서 memberId 로 호출해서 employee_external_map 참조해야함 private Long cdoDriverId; // 배정된 driver id private UUID cdoDriverUuid; // ERP 에서는 uuid 로 호출 private Long cdoCustomerId; // 고객 ID diff --git a/src/main/java/com/goi/erp/dto/CustomerRegionRequestDto.java b/src/main/java/com/goi/erp/dto/CustomerRegionRequestDto.java new file mode 100644 index 0000000..a9b7c37 --- /dev/null +++ b/src/main/java/com/goi/erp/dto/CustomerRegionRequestDto.java @@ -0,0 +1,16 @@ +package com.goi.erp.dto; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@NoArgsConstructor +@AllArgsConstructor +@Builder +public class CustomerRegionRequestDto { + + private String creName; + private String creStatus; +} \ No newline at end of file diff --git a/src/main/java/com/goi/erp/dto/CustomerRegionResponseDto.java b/src/main/java/com/goi/erp/dto/CustomerRegionResponseDto.java new file mode 100644 index 0000000..bf68521 --- /dev/null +++ b/src/main/java/com/goi/erp/dto/CustomerRegionResponseDto.java @@ -0,0 +1,17 @@ +package com.goi.erp.dto; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@NoArgsConstructor +@AllArgsConstructor +@Builder +public class CustomerRegionResponseDto { + + private Long creId; + private String creName; + private String creStatus; +} \ No newline at end of file diff --git a/src/main/java/com/goi/erp/dto/CustomerRequestDto.java b/src/main/java/com/goi/erp/dto/CustomerRequestDto.java index d353e55..35d6307 100644 --- a/src/main/java/com/goi/erp/dto/CustomerRequestDto.java +++ b/src/main/java/com/goi/erp/dto/CustomerRequestDto.java @@ -13,7 +13,8 @@ public class CustomerRequestDto { private String cusNo; // c_accountno private String cusName; // c_name private String cusStatus; // c_status → ('A', 'I', 'D' 등) - private Long cusAreaId; // region / area mapping + private Long cusRegionId; // region / area mapping + private Long cusAreaId; // area mapping private String cusAddress1; // c_address private String cusAddress2; // c_mailingaddr or c_location private String cusPostalCode; // c_postal diff --git a/src/main/java/com/goi/erp/dto/CustomerResponseDto.java b/src/main/java/com/goi/erp/dto/CustomerResponseDto.java index 7c56517..d848601 100644 --- a/src/main/java/com/goi/erp/dto/CustomerResponseDto.java +++ b/src/main/java/com/goi/erp/dto/CustomerResponseDto.java @@ -18,6 +18,7 @@ public class CustomerResponseDto { private String cusNo; private String cusName; private String cusStatus; + private String cusRegionId; private String cusAddress1; private String cusAddress2; private String cusCity; diff --git a/src/main/java/com/goi/erp/entity/Customer.java b/src/main/java/com/goi/erp/entity/Customer.java index c1a1afd..95b9690 100644 --- a/src/main/java/com/goi/erp/entity/Customer.java +++ b/src/main/java/com/goi/erp/entity/Customer.java @@ -22,7 +22,7 @@ import org.springframework.data.annotation.LastModifiedBy; import org.springframework.data.jpa.domain.support.AuditingEntityListener; @Entity -@Table(name = "customer") +@Table(schema="crm", name = "customer") @Data @NoArgsConstructor @AllArgsConstructor @@ -46,6 +46,7 @@ public class Customer { @Column(length = 1) private String cusStatus; + private Long cusRegionId; private Long cusAreaId; private String cusAddress1; private String cusAddress2; diff --git a/src/main/java/com/goi/erp/entity/CustomerDailyOrder.java b/src/main/java/com/goi/erp/entity/CustomerDailyOrder.java index 54cf2d1..6c4fd8e 100644 --- a/src/main/java/com/goi/erp/entity/CustomerDailyOrder.java +++ b/src/main/java/com/goi/erp/entity/CustomerDailyOrder.java @@ -24,7 +24,7 @@ import jakarta.persistence.Id; import jakarta.persistence.Table; @Entity -@Table(name = "customer_daily_order") +@Table(schema="crm", name = "customer_daily_order") @Data @NoArgsConstructor @AllArgsConstructor diff --git a/src/main/java/com/goi/erp/entity/Employee.java b/src/main/java/com/goi/erp/entity/CustomerRegion.java similarity index 52% rename from src/main/java/com/goi/erp/entity/Employee.java rename to src/main/java/com/goi/erp/entity/CustomerRegion.java index 0d0c7d4..43e7494 100644 --- a/src/main/java/com/goi/erp/entity/Employee.java +++ b/src/main/java/com/goi/erp/entity/CustomerRegion.java @@ -6,7 +6,6 @@ import jakarta.persistence.GeneratedValue; import jakarta.persistence.GenerationType; import jakarta.persistence.Id; import jakarta.persistence.Table; -import java.util.UUID; import lombok.AllArgsConstructor; import lombok.Builder; @@ -14,24 +13,21 @@ import lombok.Data; import lombok.NoArgsConstructor; @Entity -@Table(name = "employee") +@Table(schema = "crm", name = "customer_region") @Data @NoArgsConstructor @AllArgsConstructor @Builder -public class Employee { - @Id +public class CustomerRegion { + + @Id @GeneratedValue(strategy = GenerationType.IDENTITY) - @Column(name = "emp_id") - private Long empId; // 내부 PK, 외부 노출 X + @Column(name = "cre_id") + private Long creId; - @Column(name = "emp_uuid", unique = true, nullable = false) - private UUID empUuid; // 외부 키로 사용 - - @Column(name = "emp_first_name") - private String empFirstName; - - @Column(name = "emp_last_name") - private String empLastName; -} + @Column(name = "cre_name", nullable = false, length = 255) + private String creName; + @Column(name = "cre_status", length = 1) + private String creStatus; +} \ No newline at end of file diff --git a/src/main/java/com/goi/erp/entity/EntityChangeLog.java b/src/main/java/com/goi/erp/entity/EntityChangeLog.java index f7239bd..ba89570 100644 --- a/src/main/java/com/goi/erp/entity/EntityChangeLog.java +++ b/src/main/java/com/goi/erp/entity/EntityChangeLog.java @@ -19,7 +19,7 @@ import lombok.Data; import lombok.NoArgsConstructor; @Entity -@Table(name = "entity_change_log") +@Table(schema="sys", name = "entity_change_log") @Data @NoArgsConstructor @AllArgsConstructor diff --git a/src/main/java/com/goi/erp/service/CustomerDailyOrderService.java b/src/main/java/com/goi/erp/service/CustomerDailyOrderService.java index bd799e9..1e9cb27 100644 --- a/src/main/java/com/goi/erp/service/CustomerDailyOrderService.java +++ b/src/main/java/com/goi/erp/service/CustomerDailyOrderService.java @@ -16,6 +16,7 @@ import org.springframework.stereotype.Service; import java.time.LocalDate; import java.time.LocalDateTime; +import java.util.Map; import java.util.UUID; @Service @@ -36,6 +37,9 @@ public class CustomerDailyOrderService { // driver id (employee id) Long driverId = resolveDriverId(dto); + + // created by (employee no) + String createdBy = resolveCreatedBy(dto); CustomerDailyOrder order = CustomerDailyOrder.builder() .cdoUuid(UUID.randomUUID()) @@ -48,7 +52,7 @@ public class CustomerDailyOrderService { .cdoPaymentType(dto.getCdoPaymentType()) .cdoCycle(dto.getCdoCycle()) .cdoRate(dto.getCdoRate()) - .cdoCreatedBy(dto.getCdoLoginUser()) + .cdoCreatedBy(createdBy) .cdoStatus(dto.getCdoStatus()) .cdoVisitFlag(dto.getCdoVisitFlag()) .cdoEstimatedQty(dto.getCdoEstimatedQty()) @@ -256,12 +260,72 @@ public class CustomerDailyOrderService { } // 2. MIS -> externalId (문자열 email or id) if (dto.getCdoExternalDriverId() != null) { - return hcmEmployeeClient.getEmpIdFromExternalId( dto.getCdoExternalDriverId() ); + Map body = hcmEmployeeClient.getEmpFromExternalId( "MIS_DRIVER", dto.getCdoExternalCreatedBy() ); + if (body != null && body.get("eexEmpId") != null) { + + Object raw = body.get("eexEmpId"); + + if (raw instanceof Number) { + return ((Number) raw).longValue(); + } + + // 예상 밖 타입일 경우 + } } // 3. ERP 내부 요청 (driverUuid 방식) if (dto.getCdoDriverUuid() != null) { - return hcmEmployeeClient.getEmpIdFromUuid(dto.getCdoDriverUuid()); + + Map body = hcmEmployeeClient.getEmpFromUuid(dto.getCdoDriverUuid()); + if (body != null && body.get("empId") != null) { + + Object raw = body.get("empId"); + + if (raw instanceof Number) { + return ((Number) raw).longValue(); // 🔥 모든 숫자를 Long 변환 + } + + // 예상 밖 타입일 경우 + } + } + + return null; + } + + private String resolveCreatedBy(CustomerDailyOrderRequestDto dto) { + + // 1. driver id + if (dto.getCdoLoginUser() != null) { + return dto.getCdoLoginUser(); + } + // 2. MIS -> externalId (id to empNo) + if (dto.getCdoExternalCreatedBy() != null) { + Map body = hcmEmployeeClient.getEmpFromExternalId( "MIS_MEMBER", dto.getCdoExternalCreatedBy() ); + if (body != null && body.get("eexEmpNo") != null) { + + Object raw = body.get("eexEmpNo"); + + if (raw instanceof String) { + return ((String) raw); + } + + // 예상 밖 타입일 경우 + } + } + + // 3. ERP 내부 요청 (driverUuid 방식) + if (dto.getCdoDriverUuid() != null) { + Map body = hcmEmployeeClient.getEmpFromUuid(dto.getCdoDriverUuid()); + if (body != null && body.get("empNo") != null) { + + Object raw = body.get("empNo"); + + if (raw instanceof String) { + return ((String) raw); + } + + // 예상 밖 타입일 경우 + } } return null; diff --git a/src/main/java/com/goi/erp/service/CustomerService.java b/src/main/java/com/goi/erp/service/CustomerService.java index 06a7739..18b66f3 100644 --- a/src/main/java/com/goi/erp/service/CustomerService.java +++ b/src/main/java/com/goi/erp/service/CustomerService.java @@ -36,6 +36,7 @@ public class CustomerService { .cusNo(dto.getCusNo()) .cusName(dto.getCusName()) .cusStatus(dto.getCusStatus()) + .cusRegionId(dto.getCusRegionId()) .cusAreaId(dto.getCusAreaId()) .cusAddress1(dto.getCusAddress1()) .cusAddress2(dto.getCusAddress2()) @@ -102,6 +103,7 @@ public class CustomerService { if (dto.getCusName() != null) customer.setCusName(dto.getCusName()); if (dto.getCusStatus() != null) customer.setCusStatus(dto.getCusStatus()); if (dto.getCusNo() != null) customer.setCusNo(dto.getCusNo()); + if (dto.getCusRegionId() != null) customer.setCusRegionId(dto.getCusRegionId()); if (dto.getCusAreaId() != null) customer.setCusAreaId(dto.getCusAreaId()); if (dto.getCusAddress1() != null) customer.setCusAddress1(dto.getCusAddress1()); if (dto.getCusAddress2() != null) customer.setCusAddress2(dto.getCusAddress2()); diff --git a/src/main/java/com/goi/erp/service/HcmEmployeeClient.java b/src/main/java/com/goi/erp/service/HcmEmployeeClient.java index d07adb7..5c36f63 100644 --- a/src/main/java/com/goi/erp/service/HcmEmployeeClient.java +++ b/src/main/java/com/goi/erp/service/HcmEmployeeClient.java @@ -25,9 +25,9 @@ public class HcmEmployeeClient { @Value("${hcm.api.base-url}") private String hcmBaseUrl; - public Long getEmpIdFromExternalId(String externalId) { + public Map getEmpFromExternalId(String solutionType, String externalId) { - String url = hcmBaseUrl + "/employee/external" + "?solutionType=MIS&externalId=" + externalId; + String url = hcmBaseUrl + "/employee/external" + "?solutionType=" + solutionType + "&externalId=" + externalId; try { // set token in header @@ -45,21 +45,7 @@ public class HcmEmployeeClient { new ParameterizedTypeReference>() {} ); - Map body = response.getBody(); - //System.out.println("RESPONSE ➜ " + body); - - if (body != null && body.get("eexEmpId") != null) { - - Object raw = body.get("eexEmpId"); - - if (raw instanceof Number) { - return ((Number) raw).longValue(); // 🔥 모든 숫자를 Long 변환 - } - - // 예상 밖 타입일 경우 - } - - return null; + return response.getBody(); } catch (Exception e) { // 필요하면 logging @@ -68,7 +54,7 @@ public class HcmEmployeeClient { } } - public Long getEmpIdFromUuid(UUID uuid) { + public Map getEmpFromUuid(UUID uuid) { String url = hcmBaseUrl + "/employee/" + uuid; @@ -88,21 +74,8 @@ public class HcmEmployeeClient { new ParameterizedTypeReference>() {} ); - Map body = response.getBody(); + return response.getBody(); //System.out.println("RESPONSE(UUID) ➜ " + body); - - if (body != null && body.get("empId") != null) { - - Object raw = body.get("empId"); - - if (raw instanceof Number) { - return ((Number) raw).longValue(); // 🔥 모든 숫자를 Long 변환 - } - - // 예상 밖 타입일 경우 - } - - return null; } catch (Exception e) { // 필요하면 로깅