접수 저장 및 메시지 처리

This commit is contained in:
pjs
2026-01-28 00:59:29 +09:00
parent 50d2f05404
commit b9f1419e5e
12 changed files with 319 additions and 17 deletions

View File

@@ -15,6 +15,19 @@ spring:
aop:
proxy-target-class: false
messages:
# 메시지 파일의 경로와 기본 파일명 (src/main/resources 기준)
basename: messages
# 인코딩 설정 (한글 깨짐 방지를 위해 UTF-8 권장)
encoding: UTF-8
# 메시지 파일을 찾지 못했을 때 시스템 언어를 사용할지 여부
fallback-to-system-locale: true
# 설정한 로케일에 해당하는 파일이 없어도 에러를 내지 않고 기본 파일을 사용함
use-code-as-default-message: true
# 메시지 변경 시 새로고침 주기 (초 단위, -1은 캐싱)
cache-duration: 3600
server:
encoding:

View File

@@ -710,4 +710,56 @@
ORDER BY CONSENT_FORM_VERSION DESC
LIMIT 1
</select>
<select id="selectReserveByMuUserId" parameterType="com.madeu.crm.kiosk.dto.KioskDTO" resultType="com.madeu.crm.kiosk.dto.ReserveDTO">
SELECT MU_RESERVE_ID
,RESERVE_TIME
FROM MU_RESERVE
WHERE MU_USER_ID = #{muUserId} -- 찾으려는 고객 ID
AND RESERVE_DATE = CURDATE() -- 오늘 날짜
AND USE_YN = 'Y' -- 사용 중인 데이터
AND STATUS = 'T'
</select>
<update id="updateReserveStatus" parameterType="com.madeu.crm.kiosk.dto.ReserveDTO">
UPDATE MU_RESERVE
SET STATUS = #{status}
WHERE MU_RESERVE_ID = #{muReserveId} -- 찾으려는 예약 ID
AND USE_YN = 'Y' -- 사용 중인 데이터
AND STATUS = 'T'
</update>
<update id="insertReserve" parameterType="com.madeu.crm.kiosk.dto.ReserveDTO">
<selectKey resultType="string" keyProperty="id" order="BEFORE">
SELECT CONCAT(#{muReserveId},LPAD((SELECT NEXTVAL(MU_RESERVE_SEQ)), 11, 0))
</selectKey>
INSERT INTO MU_RESERVE (
MU_RESERVE_ID,
USER_NAME,
MU_USER_ID,
RESERVE_DATE,
RESERVE_TIME,
STATUS,
WRITE_DATE,
WRITE_TIME,
CUD_FLAG,
USE_YN,
REG_ID,
MOD_ID
) VALUES (
#{id},
#{userName},
#{muUserId},
CURDATE(),
CURTIME(),
#{status},
CURDATE(),
CURTIME(),
'C',
'Y',
#{regId},
#{regId}
)
</update>
</mapper>

View File

@@ -0,0 +1,9 @@
# 공통 오류
common.error.server=서버 오류가 발생했습니다.
# 예약/접수 관련 (Reservation)
reserve.checkin.success=접수되었습니다! 안내데스크에서 확인 후 바로 안내해 드릴게요. 잠시만 기다려 주세요.
reserve.checkin.time-mismatch=오늘 예약은 확인되었습니다만, 방문하신 시간이 예약 시간과 차이가 있어 데스크 확인이 필요합니다. 안내데스크로 문의해 주세요.
# 만약 파라미터를 쓴다면 (나중을 위해)
reserve.checkin.welcome={0}님, 접수가 완료되었습니다. 잠시만 기다려 주세요.

View File

@@ -251,7 +251,7 @@
let html = "";
if( res.msgCode == 0 ){
const userList = res.list;
console.log(userList);
if (!userList || userList.length === 0) {
alert("조회된 정보가 없습니다.");
return;
@@ -260,7 +260,7 @@
userList.forEach((user, index) => {
html += `
<tr>
<td><input type="radio" name="selectedUser" class="user-radio" value="${user.userNumber}" ${index === 0 ? 'checked' : ''}></td>
<td><input type="radio" name="selectedUser" class="user-radio" value="${user.muUserId}" ${index === 0 ? 'checked' : ''}></td>
<td class="user-name-cell">${user.userName}</td>
<td>${user.birthday || '-'}</td>
<td>${user.gender === 'M' ? '남' : (user.gender === 'F' ? '여' : '-')}</td>
@@ -282,16 +282,44 @@
});
}
function submitBtn() {
const selectedUser = $("input[name='selectedUser']:checked");
if (selectedUser.length === 0) {
alert("접수할 고객을 선택해 주세요.");
return;
}
const userName = selectedUser.val();
alert(userName + "님 접수가 완료되었습니다.");
$("#customerDialog").dialog("close");
}
function submitBtn() {
const selectedUser = $("input[name='selectedUser']:checked");
// 1. 선택 여부 확인
if (selectedUser.length === 0) {
alert("접수할 고객을 선택해 주세요.");
return;
}
// 2. 선택된 사용자의 식별값 (userNumber) 가져오기
const muUserId = selectedUser.val();
const userName = selectedUser.closest('tr').find('.user-name-cell').text();
// 3. 서버로 접수 정보 전송 (AJAX)
$.ajax({
url: '/kiosk/putSubmit.do', // 실제 서버의 접수 처리 URL로 변경하세요
type: 'POST',
contentType: 'application/json',
data: JSON.stringify({
muUserId: muUserId,
userName: userName
}),
success: function(res) {
if (res.msgCode == 0) {
alert(res.msgDesc);
$("#customerDialog").dialog("close");
// 접수 완료 후 메인 페이지로 이동하거나 초기화
location.href = "/kiosk";
} else {
alert(res.msgDesc);
}
},
error: function() {
alert("서버 통신 중 오류가 발생했습니다.");
}
});
}
function moveKiosk() {
window.location.href = "/kiosk";