225 lines
8.3 KiB
Java

package com.interplug.qcast.biz.user;
import com.interplug.qcast.biz.user.dto.*;
import com.interplug.qcast.util.InterfaceQsp;
import io.micrometer.common.util.StringUtils;
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
@Service
@RequiredArgsConstructor
public class UserService {
private final UserMapper userMapper;
private final InterfaceQsp interfaceQsp;
@Value("${qsp.master-store-batch-url}")
private String qspMasterStoreBatchUrl;
/**
* 판매점 정보 저장
*
* @param storeReq
* @return
* @throws Exception
*/
public int setStoreSave(StoreRequest storeReq) throws Exception {
String prevSaleStoreLevel = userMapper.getStoreLevel(storeReq); // 등록된 판매점 레벨
String saleStoreLevel =
StringUtils.isEmpty(storeReq.getSaleStoreLevel()) ? "" : storeReq.getSaleStoreLevel();
int resultCnt = userMapper.setStoreSave(storeReq);
userMapper.setStoreInfoSave(storeReq);
userMapper.setStoreSapCdSave(storeReq);
userMapper.setStoreNorthModuleSave(storeReq);
log.info("setStoreSave ==================> ", prevSaleStoreLevel + ", " + saleStoreLevel);
// 신규 판매점 이거나 1차판매점에서 하위판매점으로 변경된 경우 가격 등록
if (prevSaleStoreLevel == null
|| (!prevSaleStoreLevel.equals(saleStoreLevel) && "1".equals(prevSaleStoreLevel))) {
// 판매점에 등록된 가격 삭제 후 가격 패턴의 아이템 등록
log.info("setStoreSave prevSaleStoreLevel =================> 시작");
int deleteCnt = userMapper.deleteStoreUnitPrice(storeReq);
int priceCnt = userMapper.setStoreUnitPrice(storeReq);
log.info(
"setStoreSave prevSaleStoreLevel ==================> 종료" + deleteCnt + ", " + priceCnt);
}
return resultCnt;
}
/**
* 사용자 정보저장
*
* @param userReqList
* @return
* @throws Exception
*/
public int setUserSave(List<UserRequest> userReqList) throws Exception {
int resultCnt = 0;
if (!userReqList.isEmpty()) {
for (UserRequest userReq : userReqList) {
resultCnt += userMapper.setUserSave(userReq);
}
}
return resultCnt;
}
/**
* 판매점 sap 정보 저장
*
* @param storeReq
* @return
* @throws Exception
*/
public int setStoreSapCdSave(StoreRequest storeReq) throws Exception {
return userMapper.setStoreSapCdSave(storeReq);
}
/**
* @param storeList
* @throws Exception
*/
public void setStoreBatch(List<StoreRequest> storeList) throws Exception {
// 판매점 동기화
for (StoreRequest storeRequest : storeList) {
try {
String prevSaleStoreLevel = userMapper.getStoreLevel(storeRequest); // 등록된 판매점 레벨
String saleStoreLevel =
StringUtils.isEmpty(storeRequest.getSaleStoreLevel())
? ""
: storeRequest.getSaleStoreLevel();
// 판매점의 우편번호 등록시 하이픈이 없다면 셋제짜리 이후에 하이픈 조합으로 등록처리(2026.04.30 이병곤 과장 추가 요청)
String zipNo = storeRequest.getZipNo();
if (!StringUtils.isEmpty(zipNo) && !zipNo.contains("-") && zipNo.length() >= 4 && zipNo.length() <= 9) {
storeRequest.setZipNo(zipNo.substring(0, 3) + "-" + zipNo.substring(3));
}
userMapper.setStoreSave(storeRequest);
userMapper.setStoreInfoSave(storeRequest);
userMapper.setStoreSapCdSave(storeRequest);
userMapper.setStoreNorthModuleSave(storeRequest);
log.info("setStoreSave ==================> ", prevSaleStoreLevel + ", " + saleStoreLevel);
// 신규 판매점 이거나 1차판매점에서 하위판매점으로 변경된 경우 가격 등록
if (prevSaleStoreLevel == null
|| (!prevSaleStoreLevel.equals(saleStoreLevel) && "1".equals(prevSaleStoreLevel))) {
// 판매점에 등록된 가격 삭제 후 가격 패턴의 아이템 등록
log.info("setStoreSave prevSaleStoreLevel =================> 시작");
int deleteCnt = userMapper.deleteStoreUnitPrice(storeRequest);
int priceCnt = userMapper.setStoreUnitPrice(storeRequest);
log.info(
"setStoreSave prevSaleStoreLevel ==================> 종료"
+ deleteCnt
+ ", "
+ priceCnt);
}
} catch (Exception e) {
log.error(e.getMessage());
}
}
}
public void setUserBatch(List<UserRequest> userList) throws Exception {
// 사용자 동기화
for (UserRequest userRequest : userList) {
try {
userMapper.setUserSave(userRequest);
} catch (Exception e) {
log.error(e.getMessage());
}
}
}
/**
* 영업사원 정보 동기화
*
* @param businessChargerSyncList 영업사원 목록
* @return
* @throws Exception
*/
public int setBusinessChargerSyncSave(List<BusinessChargerSyncResponse> businessChargerSyncList)
throws Exception {
int cnt = 0;
userMapper.deleteBusinessChargerSync();
for (BusinessChargerSyncResponse businessChargerSyncData : businessChargerSyncList) {
cnt += userMapper.setBusinessChargerSyncSave(businessChargerSyncData);
cnt += userMapper.setBusinessChargerInfoSyncSave(businessChargerSyncData);
}
return cnt;
}
/**
* 관리자 유저 정보 동기화
*
* @param adminUserSyncList 관리자 유저 목록
* @return
* @throws Exception
*/
public int setAdminUserSyncSave(List<AdminUserSyncResponse> adminUserSyncList) throws Exception {
int cnt = 0;
for (AdminUserSyncResponse adminUserSyncData : adminUserSyncList) {
if ("1".equals(adminUserSyncData.getDelFlg())) {
cnt += userMapper.deleteAdminUserSync(adminUserSyncData);
} else {
cnt += userMapper.setAdminUserSyncSave(adminUserSyncData);
}
}
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) {
String prevSaleStoreLevel = userMapper.getStoreLevel(storeRequest); // 등록된 판매점 레벨
String saleStoreLevel =
StringUtils.isEmpty(storeRequest.getSaleStoreLevel())
? ""
: storeRequest.getSaleStoreLevel();
// 판매점의 우편번호 등록시 하이픈이 없다면 셋제짜리 이후에 하이픈 조합으로 등록처리(2026.04.30 이병곤 과장 추가 요청)
String zipNo = storeRequest.getZipNo();
if (!StringUtils.isEmpty(zipNo) && !zipNo.contains("-") && zipNo.length() >= 4 && zipNo.length() <= 9) {
storeRequest.setZipNo(zipNo.substring(0, 3) + "-" + zipNo.substring(3));
}
userMapper.setStoreSave(storeRequest);
userMapper.setStoreInfoSave(storeRequest);
userMapper.setStoreSapCdSave(storeRequest);
userMapper.setStoreNorthModuleSave(storeRequest);
log.info("setStoreSave ==================> ", prevSaleStoreLevel + ", " + saleStoreLevel);
// 신규 판매점 이거나 1차판매점에서 하위판매점으로 변경된 경우 가격 등록
if (prevSaleStoreLevel == null
|| (!prevSaleStoreLevel.equals(saleStoreLevel) && "1".equals(prevSaleStoreLevel))) {
// 판매점에 등록된 가격 삭제 후 가격 패턴의 아이템 등록
log.info("setStoreSave prevSaleStoreLevel =================> 시작");
int deleteCnt = userMapper.deleteStoreUnitPrice(storeRequest);
int priceCnt = userMapper.setStoreUnitPrice(storeRequest);
log.info(
"setStoreSave prevSaleStoreLevel ==================> 종료" + deleteCnt + ", " + priceCnt);
}
}
List<UserRequest> userList = storeSyncResponse.getUserList();
for (UserRequest userRequest : userList) {
userMapper.setUserSave(userRequest);
}
}
}