๋ชฉ์ฐจ
1) ํ์ด์ง ๊ตฌ์
1. ์ํ๋ณ -> ๋ ์ง๋ณ -> ์๊ฐ๋ณ -> ์์ฝ ๊ฑด์(Slot)๋ฅผ ์ ํํ๊ณ ์ถ์๋ค. (๋ง์น ๋ค์ด๋ฒ ์์ฝ์ฒ๋ผ!)
(๋ณดํต ์ฃผ๋ฌธ์ ์ ์ผ์ดํฌ, ๊ฝ์ง์ ๋ฐฉ๋ฌธ ๋ ์ง์ ์๊ฐ๋ ๋ฏธ๋ฆฌ ์ ํ๊ฒ ๋๋๋ฐ, ์ด ๋ถ๋ถ์ ๊ด๋ฆฌํ ์ ์๊ฒ ํ๊ณ ์ถ์๋ค.)
๋ค๋ฅธ ์์ฝ ํ๋ซํผ์ด ๋ด๋ถ์ ์ผ๋ก ์ด๋ป๊ฒ ๊ด๋ฆฌ๋๋์ง ์ธ๋ถ์ ์ธ ๋ก์ง์ ๋ชจ๋ฅด๊ฒ ์ง๋ง,
์ด ๊ฒฝ์ฐ ๋ ์ง, ์๊ฐ ์ ๋ถ ๊ด๋ฆฌํ ์ ์์ด์ผํ๊ธฐ๋๋ฌธ์ ๋ ์ง + ์๊ฐ ๋ฐ์ดํฐ๋ณ ์ฌ๋กฏ๋ค์ ์ ๋ถ ๊ด๋ฆฌํด์ผํ๋ค.
๊ทธ๋ฆฌ๊ณ ๊ฐ๊ฒ ํด๋ฌด์ผ์ด ๋ฐ๋๋ค๋๊ฐ (์ง์ ํด๋ฌด์ ๊ณ ์ ํด๋ฌด ๋๊ฐ์ง ๋ฐฉ์์ ๊ตฌํํ๋ค.)
๋ค์ํ ์์๋ค๋ ์ฌ๋กฏ์ ์ํฅ์ ์คฌ๊ธฐ ๋๋ฌธ์ ๋ฐ์ดํฐ ์์ ์ด๋ ์ด๋์ ๋ ๋๋ฌด ๊ท๋ชจ๊ฐ ์ปค์ ธ์ ๊ฒฐ๊ตญ ๋ฐฉ์์ ๋ณ๊ฒฝํ๋ค.
2. (ํ์ ) ๋ ์ง๋ณ๋ก ๋ฐ์ ์์ฝ ๊ฑด์๋ฅผ ์ง์ ํ์. โญ
๋์ ์๊ฐ๋๋ ์ง์ ํ ์ ์๋ค.. → ์ด ๊ฒฝ์ฐ ๋ ์ง๋ณ๋ก ๊ตฌ๋ถํด๋ ํน์ ์๊ฐ์ ์์ฝ์ด ๋ชฐ๋ฆฌ๋ ๊ฑธ ๋ฐฉ์งํ ์๊ฐ ์์ง๋ง ์ด์ฉ ์ ์์. (์ฆ, ํน์ ์๊ฐ๋๋ฅผ ๋ง์ ์๋ ์๋ค..)
๊ฒฐ๋ก ์ ์ผ๋ก, ๋ ์ง๋ณ๋ก ์์ฝ ๊ฑด์๋ฅผ ์ง์ ํ๊ณ
(์ ํํ ๋ ์ง์ ์ด๋ฏธ ๋ค์ด์จ ์์ฝ๊ฑด == ์ง์ ๋ ์ฌ๋กฏ ๊ฑด์) ์ ๋น๊ตํด์ ์์ฝ์ด ๊ฝ์ฐฌ ๋ ์ง๋ฅผ disabled ํ๋ ๋ฐฉ์์ผ๋ก ์ ํ๋ค.
< ์์ฝ ๊ฑด์ ๊ด๋ฆฌ ํ์ด์ง >
`๊ธฐ๊ฐ๋ณ` ๋๋ `์ผ๋ณ`๋ก ์์ฝ ๊ฑด์๋ฅผ ์์ ํ๊ฒ๋๋ฉด (ํน์ `์์ฝ๋ง๊ธฐ` ๋ฒํผ ๋๋ธํด๋ฆญ์ผ๋ก ๋ฐ๋ก ๋ง๊ธฐ ๊ฐ๋ฅ)
์ด๋ฐ์์ผ๋ก ์ผ๋ณ ์์ฝ slot ์ด ์ง์ ๋ ๊ฐ์๋ก ๋ณ๊ฒฝ๋จ.
(ํ์ฌ ์์ฝ๊ฑด์ / ์์ฝ ๊ฐ๋ฅ๊ฑด์(slot)) ์ด (2/2) ๋ก ์ฆ, ๊ฝ ์ฐผ๊ธฐ๋๋ฌธ์
์ฌ์ฉ์ ํ์ด์ง์์๋ ์์ฝ์ด ๋ถ๊ฐ๋ฅํ๋ค๊ณ ๋ ์ง๊ฐ Disabled ์ฒ๋ฆฌ๋๋ค.
2) ํ์ด์ง ๊ธฐ๋ฅ ๊ตฌํ
โ ์ฌ๋กฏ์ ์ํ ์ถ๊ฐ์ insert ๋จ & ์ฌ๋กฏ ์ํ๋ ์ฃผ๋ฌธ ๋ฑ๋ก์ +1
@Override
public void setSlotAll(adminReserveAdd dto) {
LocalDate startDate = LocalDate.now();
LocalDate endDate = LocalDate.of(2029, 12, 31);
while (!startDate.isAfter(endDate)) {
System.out.println(startDate);
dto.setReservationSlotDate(startDate);
adminReservationMapper.setSlotAll(dto);
startDate = startDate.plusDays(1);
}
}
์ํ์ ์ถ๊ฐํ ๋ ๋ ์ง ์ฌ๋กฏ์ด `now()` ~ `2029.12.31` ๊น์ง insert ๋๋ค.
<update id="updateSlotStatus">
UPDATE reservation_slot
SET slot_status_count = slot_status_count + 1
WHERE category_id = #{categoryId}
AND reservation_slot_date = #{reservationDate}
AND store_no = #{storeNo}
</update>
์ฃผ๋ฌธ์ด ๋ค์ด๊ฐ๋ฉด ์ฌ๋กฏ ์ํ `slot_status_count` + 1 ์นด์ดํ
โ ์ง์ ๋ ์ฌ๋กฏ ๊ฑด์ & ์์ฝ๊ฑด ๋น๊ต
<select id="getDateTime2" resultType="com.example.HiMade.user.dto.UserRSlotDTO">
select * from reservation_slot where
category_id = #{categoryId}
</select>
ํด๋น ์ํ์ ๋ํ ์ฌ๋กฏ ์ ๋ณด๋ฅผ ์ ๋ถ ๊ฐ์ ธ์ด
(๋ฌ๋ ฅ์ ๋ฟ๋ ค์ผํด์ ์ด์ฉ์์์ด ์ ๋ถ ๊ฐ์ ธ์ฌ ์ ๋ฐ์ ์์๋ค.. )
`slot_count` ๋ `slot_status_count` ๋ฅผ ๋น๊ต
โ ์์ฝ ๊ฐ๋ฅ ์๊ฐ ๋ ์ถ๋ ฅ
์๊ฐ ๊ฐ์ ๊ฒฝ์ฐ์๋ ๊ฐ๊ฒ ์์ ์๊ฐ์ ๋ง๊ฒ ์ธํ ๋๋๋ก ํ๋ค.
ex) 11์๋ถํฐ `30๋ถ ๊ฐ๊ฒฉ`์ผ๋ก ์ถ๋ ฅํด๋๊ฒํจ.
โ
์์ฝ ๊ฐ๋ฅ์ผ์ ์ค๋๋ก๋ถํฐ 3๊ฐ์ ๋ค ๊น์ง ๋ง ๊ฐ๋ฅํ๋๋ก ์ง์
// ๋ ์ง ๋นํ์ฑํ
const tileDisabled = ({ date }) => {
const today = new Date();
const threeMonthsLater = new Date();
threeMonthsLater.setMonth(today.getMonth() + 3);
return date < today || date > threeMonthsLater;
};
โ ์์ฝ ๊ฑด์ ์์
<update id="updateSlotCount1" parameterType="com.example.HiMade.user.dto.UserRSlotDTO">
update reservation_slot
set slot_count = #{slotCount}
where reservation_slot_date = #{reservationSlotDate} and category_id = #{categoryId}
</update>
3) ํ๊ธฐ
โ ์์ฝ ๋ ์ง๋ณ ์ฌ๋กฏ ๊ด๋ฆฌ ๊ตฌํ ๋ฐฉ์ ๋ ์์๋ณด๊ธฐ (๋ ํจ์จ์ ์ธ ๋ฐฉ๋ฒ์ด ์์์ง๋ ๋ชจ๋ฅธ๋ค)