판매점/사용자 동기화 파라메터 추가 ,

판매점/사용자 전체 동기화 API 추가 ,
Qsp Interface 시간 증가, get인 경우 파라메터 넘기도록 수정
This commit is contained in:
DESKTOP-6ARNG1Q\dlsgk 2025-01-23 17:37:36 +09:00
parent 5993c28e55
commit b73796a672
5 changed files with 116 additions and 42 deletions

View File

@ -7,6 +7,7 @@ import com.interplug.qcast.biz.storeFavorite.dto.StoreFavoriteRequest;
import com.interplug.qcast.biz.user.UserService;
import com.interplug.qcast.biz.user.dto.StoreRequest;
import com.interplug.qcast.biz.user.dto.StoreSyncResponse;
import com.interplug.qcast.biz.user.dto.StoreSyncResquest;
import com.interplug.qcast.biz.user.dto.UserRequest;
import com.interplug.qcast.util.InterfaceQsp;
import java.util.Collections;
@ -56,9 +57,12 @@ public class StoreJobConfiguration implements JobExecutionListener {
public void beforeJob(JobExecution jobExecution) {
log.info("Job 시작: 초기화 메서드 호출 중...");
try {
StoreSyncResquest storeSyncResquest = new StoreSyncResquest();
storeSyncResquest.setAllYn("N"); // 전체가 아닌 날짜조건으로 조회
this.storeSyncResponse =
interfaceQsp.callApiData(
HttpMethod.GET, qspMasterStoreBatchUrl, null, StoreSyncResponse.class);
HttpMethod.GET, qspMasterStoreBatchUrl, storeSyncResquest, StoreSyncResponse.class);
log.info("API 호출 완료, 항목 수: {}", this.storeSyncResponse.getStoreList().size());
} catch (Exception e) {
log.error("storeSyncResponse 갱신 중 오류: {}", e.getMessage());

View File

@ -1,17 +1,17 @@
package com.interplug.qcast.biz.user;
import com.interplug.qcast.biz.user.dto.StoreRequest;
import com.interplug.qcast.biz.user.dto.StoreSyncResquest;
import com.interplug.qcast.biz.user.dto.UserRequest;
import com.interplug.qcast.biz.user.dto.UserResponse;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import java.util.List;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.http.HttpStatus;
import org.springframework.web.bind.annotation.*;
import java.util.List;
@Slf4j
@RestController
@RequestMapping("/api/user")
@ -20,6 +20,21 @@ import java.util.List;
public class UserController {
private final UserService userService;
@Operation(description = "전체 판매점/사용자 정보를 동기화 한다.")
@GetMapping("/all-store-additional")
@ResponseStatus(HttpStatus.OK)
public UserResponse SetAllStoreAdditional(StoreSyncResquest storeSyncResquest) throws Exception {
UserResponse userResponse = new UserResponse();
try {
userService.setAllStoreAdditional(storeSyncResquest);
userResponse.setCode("200");
} catch (Exception e) {
userResponse.setCode("500");
userResponse.setMessage(e.getMessage());
}
return userResponse;
}
@Operation(description = "판매점 정보를 등록/수정 한다.(동기화)")
@PutMapping("/store-save")
@ResponseStatus(HttpStatus.OK)

View File

@ -1,12 +1,12 @@
package com.interplug.qcast.biz.user;
import com.interplug.qcast.biz.user.dto.AdminUserSyncResponse;
import com.interplug.qcast.biz.user.dto.BusinessChargerSyncResponse;
import com.interplug.qcast.biz.user.dto.StoreRequest;
import com.interplug.qcast.biz.user.dto.UserRequest;
import com.interplug.qcast.biz.user.dto.*;
import com.interplug.qcast.util.InterfaceQsp;
import java.util.List;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.http.HttpMethod;
import org.springframework.stereotype.Service;
@Slf4j
@ -14,6 +14,10 @@ import org.springframework.stereotype.Service;
@RequiredArgsConstructor
public class UserService {
private final UserMapper userMapper;
private final InterfaceQsp interfaceQsp;
@Value("${qsp.master-store-batch-url}")
private String qspMasterStoreBatchUrl;
/**
* 판매점 정보 저장
@ -120,4 +124,29 @@ public class UserService {
}
return cnt;
}
/**
* 전체 판매점,사용자 정보 동기화
*
* @return
* @throws Exception
*/
public void setAllStoreAdditional(StoreSyncResquest storeSyncResquest) throws Exception {
StoreSyncResponse storeSyncResponse =
interfaceQsp.callApiData(
HttpMethod.GET, qspMasterStoreBatchUrl, storeSyncResquest, StoreSyncResponse.class);
List<StoreRequest> storeList = storeSyncResponse.getStoreList();
for (StoreRequest storeRequest : storeList) {
userMapper.setStoreSave(storeRequest);
userMapper.setStoreSapCdSave(storeRequest);
userMapper.setStoreNorthModuleSave(storeRequest);
}
List<UserRequest> userList = storeSyncResponse.getUserList();
for (UserRequest userRequest : userList) {
userMapper.setUserSave(userRequest);
}
}
}

View File

@ -0,0 +1,13 @@
package com.interplug.qcast.biz.user.dto;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Getter;
import lombok.Setter;
@Getter
@Setter
public class StoreSyncResquest {
@Schema(description = "전체여부")
private String allYn;
}

View File

@ -44,10 +44,23 @@ public class InterfaceQsp {
StringBuilder sb = null;
try {
// GET 요청 requestObject를 쿼리 스트링으로 변환
if (HttpMethod.GET.equals(httpMethod) && requestObject != null) {
ObjectMapper om = new ObjectMapper();
Map<String, Object> params = om.convertValue(requestObject, Map.class); // Object -> Map 변환
String queryString =
params.entrySet().stream()
.map(entry -> entry.getKey() + "=" + entry.getValue())
.reduce((p1, p2) -> p1 + "&" + p2)
.orElse("");
apiPath += "?" + queryString; // 쿼리 스트링 추가
}
url = new URL(apiPath);
con = (HttpURLConnection) url.openConnection();
con.setConnectTimeout(30000); // 서버에 연결되는 Timeout 시간 설정
con.setReadTimeout(30000); // InputStream 읽어 오는 Timeout 시간 설정
con.setConnectTimeout(120000); // 서버에 연결되는 Timeout 시간 설정
con.setReadTimeout(120000); // InputStream 읽어 오는 Timeout 시간 설정
con.setRequestMethod(httpMethod.toString());
con.setRequestProperty("Content-Type", "application/json");
con.setDoInput(true);