225 lines
8.3 KiB
Java
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);
|
|
}
|
|
}
|
|
}
|