1월21일 작업
This commit is contained in:
@@ -12,6 +12,7 @@ import org.springframework.web.servlet.ModelAndView;
|
||||
|
||||
import com.madeu.constants.Constants;
|
||||
import com.madeu.crm.kiosk.dto.ConsentFormDTO;
|
||||
import com.madeu.crm.kiosk.dto.UserDTO;
|
||||
import com.madeu.crm.kiosk.service.KioskService;
|
||||
import com.madeu.init.ManagerDraftAction;
|
||||
import com.madeu.service.web.webloghistory.WebLogHistoryService;
|
||||
@@ -205,61 +206,32 @@ public class KioskController extends ManagerDraftAction {
|
||||
* 고객 등록
|
||||
*/
|
||||
@PostMapping("/kiosk/putUser.do")
|
||||
public HashMap<String, Object> putUser(HttpServletRequest request, HttpServletResponse response) {
|
||||
public HashMap<String, Object> putUser(@RequestBody UserDTO dto, HttpServletRequest request) {
|
||||
log.debug("KioskController putUser START");
|
||||
|
||||
HashMap<String, Object> paramMap = HttpUtil.getParameterMap(request);
|
||||
HashMap<String, Object> map = new HashMap<String, Object>();
|
||||
|
||||
|
||||
HashMap<String, Object> resultMap = new HashMap<>();
|
||||
StringBuffer errorMsg = new StringBuffer();
|
||||
|
||||
try {
|
||||
paramMap.put("loginMemberId", "customer");
|
||||
paramMap.put("regId", "customer");
|
||||
paramMap.put("modId", "customer");
|
||||
map = kioskService.putUser(paramMap);
|
||||
// DTO에 직접 필요한 공통 정보 세팅
|
||||
dto.setRegId("customer");
|
||||
dto.setModId("customer");
|
||||
dto.setMuUserId("U");
|
||||
|
||||
// DTO를 직접 서비스로 전달 (Service 인터페이스도 UserDTO를 받도록 수정 필요)
|
||||
resultMap = kioskService.putUser(dto);
|
||||
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
map.put("msgCode", Constants.FAIL);
|
||||
map.put("msgDesc", "서버 오류가 발생했습니다.");
|
||||
log.error("Error inserting user", e);
|
||||
resultMap.put("msgCode", Constants.FAIL);
|
||||
resultMap.put("msgDesc", "서버 오류가 발생했습니다.");
|
||||
errorMsg.append(e.getMessage());
|
||||
} finally {
|
||||
if (Constants.OK != map.get("msgCode")) {
|
||||
map.put("msgCode", Constants.FAIL);
|
||||
map.put("success", false);
|
||||
if (null == map.get("msgDesc") || ("").equals(map.get("msgDesc"))) {
|
||||
map.put("msgDesc", "정상적으로 수행되지 않았습니다. 관리자에게 문의하시기 바랍니다.");
|
||||
}
|
||||
}
|
||||
|
||||
// 로그 기록
|
||||
try {
|
||||
HashMap<String, Object> visitLogParamMap = RequestLogUtil.getVisitLogParameterMap(request);
|
||||
HashMap<String, Object> insertMap = new HashMap<String, Object>();
|
||||
|
||||
insertMap.put("url", "/kiosk/putUser.do");
|
||||
insertMap.put("func", "putUser");
|
||||
insertMap.put("funcName", "고객 등록");
|
||||
insertMap.put("service", "kioskService");
|
||||
insertMap.put("serviceName", "고객 등록");
|
||||
insertMap.put("requestValue", String.valueOf(paramMap));
|
||||
insertMap.put("responseValue", String.valueOf(map));
|
||||
insertMap.put("tId", map.get("tId"));
|
||||
if (("").equals(String.valueOf(errorMsg)) || null == (String.valueOf(errorMsg))
|
||||
|| 0 == String.valueOf(errorMsg).length()) {
|
||||
insertMap.put("resultCode", "SUCCESS");
|
||||
} else {
|
||||
insertMap.put("resultCode", "ERROR");
|
||||
}
|
||||
insertMap.put("resultMsg", String.valueOf(errorMsg));
|
||||
insertMap.put("muMemberId", "customer");
|
||||
|
||||
webLogHistoryService.insertLogHistory(insertMap, visitLogParamMap);
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
// 결과 처리 및 로그 기록 (기존과 동일)
|
||||
processFinalResult(resultMap, dto, errorMsg, request);
|
||||
}
|
||||
log.debug("KioskController putUser END");
|
||||
return map;
|
||||
|
||||
return resultMap;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -437,4 +409,55 @@ public class KioskController extends ManagerDraftAction {
|
||||
log.debug("KioskController getReserveUserOptionList END");
|
||||
return map;
|
||||
}
|
||||
/**
|
||||
* 결과 처리 및 공통 응답 포맷 정리, 로그 기록 준비 메서드
|
||||
*/
|
||||
private void processFinalResult(HashMap<String, Object> resultMap, UserDTO dto, StringBuffer errorMsg, HttpServletRequest request) {
|
||||
|
||||
// 1. 결과 코드에 따른 성공 여부 및 기본 메시지 설정
|
||||
if (!Constants.OK.equals(resultMap.get("msgCode"))) {
|
||||
resultMap.put("msgCode", Constants.FAIL);
|
||||
resultMap.put("success", false);
|
||||
if (null == resultMap.get("msgDesc") || "".equals(resultMap.get("msgDesc"))) {
|
||||
resultMap.put("msgDesc", "정상적으로 수행되지 않았습니다. 관리자에게 문의하시기 바랍니다.");
|
||||
}
|
||||
} else {
|
||||
resultMap.put("success", true);
|
||||
if (null == resultMap.get("msgDesc") || "".equals(resultMap.get("msgDesc"))) {
|
||||
resultMap.put("msgDesc", "성공적으로 등록되었습니다.");
|
||||
}
|
||||
}
|
||||
|
||||
// 2. 웹 로그 기록 (비동기 또는 서비스 호출)
|
||||
try {
|
||||
HashMap<String, Object> visitLogParamMap = RequestLogUtil.getVisitLogParameterMap(request);
|
||||
HashMap<String, Object> insertMap = new HashMap<String, Object>();
|
||||
|
||||
insertMap.put("url", "/kiosk/putUser.do");
|
||||
insertMap.put("func", "putUser");
|
||||
insertMap.put("funcName", "고객 등록");
|
||||
insertMap.put("service", "kioskService");
|
||||
insertMap.put("serviceName", "고객 등록");
|
||||
|
||||
// DTO의 toString()을 사용하여 요청 파라미터 기록
|
||||
insertMap.put("requestValue", dto != null ? dto.toString() : "NULL");
|
||||
insertMap.put("responseValue", String.valueOf(resultMap));
|
||||
insertMap.put("tId", resultMap.get("tId"));
|
||||
|
||||
if (errorMsg.length() == 0) {
|
||||
insertMap.put("resultCode", "SUCCESS");
|
||||
} else {
|
||||
insertMap.put("resultCode", "ERROR");
|
||||
}
|
||||
insertMap.put("resultMsg", errorMsg.toString());
|
||||
insertMap.put("muMemberId", "customer");
|
||||
|
||||
// 로그 서비스 호출
|
||||
webLogHistoryService.insertLogHistory(insertMap, visitLogParamMap);
|
||||
|
||||
} catch (Exception e) {
|
||||
log.error("Log History Insertion Error: ", e);
|
||||
// 로그 기록 실패가 비즈니스 로직에 영향을 주지 않도록 내부에서 예외 처리
|
||||
}
|
||||
}
|
||||
}
|
||||
48
src/main/java/com/madeu/crm/kiosk/dto/UserDTO.java
Normal file
48
src/main/java/com/madeu/crm/kiosk/dto/UserDTO.java
Normal file
@@ -0,0 +1,48 @@
|
||||
package com.madeu.crm.kiosk.dto;
|
||||
import java.util.Map;
|
||||
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
import lombok.ToString;
|
||||
|
||||
@Getter
|
||||
@Setter
|
||||
@ToString
|
||||
public class UserDTO {
|
||||
// MyBatis mapping 필드
|
||||
private String muUserId; // 유저 ID 생성용 접두어
|
||||
private String userName; // 고객명
|
||||
private String nationality; // 국적 아이템 코드
|
||||
private String nationalityCode; // 국적 카테고리 코드 (C202404110001)
|
||||
private String birthday; // 생년월일 (YYYYMMDD)
|
||||
private String gender; // 성별 (M/F)
|
||||
private String userRrn1; // 주민번호 앞자리
|
||||
private String userRrn2; // 주민번호 뒷자리
|
||||
private String userPno; // 여권번호
|
||||
private String userArc1; // 외국인등록번호 앞자리 (필요시)
|
||||
private String userArc2; // 외국인등록번호 뒷자리 (필요시)
|
||||
private String userType; // 고객타입 아이템 코드
|
||||
private String userTypeCode; // 고객타입 카테고리 코드
|
||||
private String phoneNumber; // 연락처
|
||||
private String phoneNumber2; // 보조 연락처
|
||||
private String muGroupId; // 그룹 ID
|
||||
private String channel; // 방문경로 아이템 코드
|
||||
private String channelCode; // 방문경로 카테고리 코드 (C202404110003)
|
||||
private String introUserId; // 추천인 고객 ID (텍스트 입력값)
|
||||
private String introMemberId; // 추천직원 ID
|
||||
private String etc; // 특이사항
|
||||
private String memo; // 메모
|
||||
private String smsYn; // SMS 수신여부 (Y/N)
|
||||
private String refusePhotoYn; // 사진촬영동의여부 (Y/N)
|
||||
private String remark; // 비고
|
||||
private String regId; // 등록자 ID
|
||||
private String modId; // 수정자 ID
|
||||
private String address;
|
||||
private String addressDtl;
|
||||
private String email;
|
||||
private String introName;
|
||||
private Map<String, Object> userNumber;
|
||||
|
||||
// 서명 데이터 (Base64)
|
||||
private String signatureData;
|
||||
}
|
||||
@@ -2,8 +2,11 @@ package com.madeu.crm.kiosk.map;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
|
||||
import com.madeu.crm.kiosk.dto.ConsentFormDTO;
|
||||
import com.madeu.crm.kiosk.dto.UserDTO;
|
||||
|
||||
@Mapper
|
||||
public interface KioskMAP {
|
||||
@@ -42,4 +45,6 @@ public interface KioskMAP {
|
||||
|
||||
// 예약 고객 옵션 리스트
|
||||
List<Map<String, Object>> getReserveUserOptionList(Map<String, Object> paramMap);
|
||||
|
||||
int insertUser(UserDTO dto);
|
||||
}
|
||||
@@ -1,8 +1,8 @@
|
||||
package com.madeu.crm.kiosk.service;
|
||||
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.time.LocalDateTime;
|
||||
import java.time.format.DateTimeFormatter;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Calendar;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
@@ -12,7 +12,9 @@ import org.springframework.stereotype.Service;
|
||||
|
||||
import com.madeu.constants.Constants;
|
||||
import com.madeu.crm.kiosk.dto.ConsentFormDTO;
|
||||
import com.madeu.crm.kiosk.dto.UserDTO;
|
||||
import com.madeu.crm.kiosk.map.KioskMAP;
|
||||
import com.madeu.dao.web.webuser.WebUserSqlMapDAO;
|
||||
import com.madeu.util.ValidationCheckUtil;
|
||||
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
@@ -23,7 +25,9 @@ public class KioskService {
|
||||
|
||||
@Autowired
|
||||
private KioskMAP kioskMAP; // 인터페이스 기반 Mapper 주입
|
||||
|
||||
|
||||
@Autowired
|
||||
private WebUserSqlMapDAO webUserSqlMapDAO;
|
||||
/**
|
||||
* 진료 리스트 조회 (option)
|
||||
*/
|
||||
@@ -95,33 +99,68 @@ public class KioskService {
|
||||
/**
|
||||
* 고객 등록
|
||||
*/
|
||||
public HashMap<String, Object> putUser(HashMap<String, Object> paramMap) throws Exception {
|
||||
public HashMap<String, Object> putUser(UserDTO dto) throws Exception {
|
||||
HashMap<String, Object> map = new HashMap<String, Object>();
|
||||
|
||||
try {
|
||||
boolean check = true;
|
||||
String tId = String.valueOf(System.currentTimeMillis());
|
||||
|
||||
// 유효성 검사 로직
|
||||
if(!ValidationCheckUtil.emptyCheck(String.valueOf(paramMap.get("nationality")))) {
|
||||
// 1. DTO 필드를 이용한 유효성 검사 로직
|
||||
if(!ValidationCheckUtil.emptyCheck(dto.getNationality())) {
|
||||
check = false; map.put("msgCode", Constants.FAIL); map.put("msgDesc","국적 정보가 없습니다.");
|
||||
} else if(!ValidationCheckUtil.emptyCheck(String.valueOf(paramMap.get("userName")))) {
|
||||
} else if(!ValidationCheckUtil.emptyCheck(dto.getUserName())) {
|
||||
check = false; map.put("msgCode", Constants.FAIL); map.put("msgDesc","고객 성함 정보가 없습니다.");
|
||||
} else if(!ValidationCheckUtil.nickNameCheck(String.valueOf(paramMap.get("userName")))) {
|
||||
} else if(!ValidationCheckUtil.nickNameCheck(dto.getUserName())) {
|
||||
check = false; map.put("msgCode", Constants.FAIL); map.put("msgDesc","유효하지 않은 이름 형식입니다.");
|
||||
} else if(!ValidationCheckUtil.phoneNumberCheck(String.valueOf(paramMap.get("phoneNumber")))) {
|
||||
} else if(!ValidationCheckUtil.phoneNumberCheck(dto.getPhoneNumber())) {
|
||||
check = false; map.put("msgCode", Constants.FAIL); map.put("msgDesc","유효하지 않은 전화번호 형식입니다.");
|
||||
}
|
||||
|
||||
if(check) {
|
||||
String muUserId = ("U").concat(String.valueOf(System.currentTimeMillis()));
|
||||
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
|
||||
paramMap.put("muUserId", muUserId);
|
||||
paramMap.put("tId", tId);
|
||||
paramMap.put("tDate", sdf.format(Calendar.getInstance().getTime()));
|
||||
String muUserId = ("U").concat(String.valueOf(System.currentTimeMillis()));
|
||||
// 2. DTO에 필요한 추가 정보 세팅 (Setter 활용)
|
||||
// muUserId는 매퍼의 selectKey에서 생성되지만, 접두어 등이 필요하다면 세팅
|
||||
dto.setMuUserId(muUserId);
|
||||
|
||||
kioskMAP.putUser(paramMap);
|
||||
// tId 등 로그용 데이터가 DTO에 필드로 정의되어 있다면 세팅,
|
||||
// 없다면 결과 map에만 담아서 리턴
|
||||
map.put("tId", tId);
|
||||
|
||||
// 3. MyBatis 매퍼 호출 (DTO 객체 자체를 전달)
|
||||
kioskMAP.insertUser(dto);
|
||||
//A: 개인정보수집및이용안내
|
||||
//B: 메이드유시술동의서
|
||||
//C: 이용약관동의서
|
||||
//G: 사진촬영거부동의서
|
||||
String[] types = {"A","B","C","G"};
|
||||
HashMap<String, Object> consentFormMap = new HashMap<>();
|
||||
for (String type : types) {
|
||||
String muUserAgreementId = ("UA").concat(String.valueOf(System.currentTimeMillis()));
|
||||
|
||||
consentFormMap.put("muUserAgreementId", muUserAgreementId);
|
||||
|
||||
|
||||
consentFormMap.put("muUserId", dto.getUserNumber().get("id"));
|
||||
consentFormMap.put("userName", dto.getUserName());
|
||||
consentFormMap.put("type", type);
|
||||
consentFormMap.put("renewalCycle", 12);
|
||||
|
||||
LocalDateTime oneYearLater = LocalDateTime.now().plusYears(1);
|
||||
|
||||
// MariaDB DATETIME 표준 형식 (YYYY-MM-DD HH:mm:ss)
|
||||
String expirationDate = oneYearLater.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
|
||||
consentFormMap.put("expirationDate", expirationDate);
|
||||
consentFormMap.put("cdnUrl", "-");
|
||||
consentFormMap.put("filePath", "-");
|
||||
consentFormMap.put("fileName", "-");
|
||||
consentFormMap.put("originalFileName", "-");
|
||||
consentFormMap.put("loginMemberId", "kiosk");
|
||||
|
||||
webUserSqlMapDAO.insertUserAgreement(consentFormMap);
|
||||
}
|
||||
|
||||
|
||||
map.put("msgCode", Constants.OK);
|
||||
map.put("msgDesc", "등록되었습니다.");
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user