포인트 충전 차감 로직 문의 드립니다.
본문
안녕하세요.
충전 table이 있으면 쿠폰, 충전 TYPE이 있습니다.
아래와 같이 수량이 15개 있으며 그중 13개를 사용하면
쿠폰먼저 사용하고 충전을 사용하여 차감을 하고 싶습니다.
오른쪽과 같이 남은수량이 0으로 변하고 FLAG N으로 변경하고 싶습니다.
계산이 완료되면 오른쪽 아래와 같이 남은수량 2개와 FLAG Y로 남고 싶은데
어떤 로직을 하면 좋은지 힌트라고 부탁드리겠습니다.
감사합니다.
답변 4
Type기준으로는 남은게 flag Y값중 남은수량 0이상 인경우 해당 쿠폰 타입외에 별도 컬럼은 없는건가요?
개별 구분할 인자값이 추가로 필요하긴 할듯 하나 위 기준으로는 사용체크할 인자 값 확인할 데이타가 있는기준이 Y만인지라 체크할 코드 인자값으로 사용유무 체크하는게 좋을듯 합니다.
다음과 같은 방법으로 구현해 볼 수 있지 않을까 합니다.
참고하셔서 원하시는 형태로 구현하시면 될 것 같습니다.
// 가상의 데이터베이스 테이블
const coupons = [
{ id: 1, name: "Coupon 1", quantity: 15, flag: "Y" },
{ id: 2, name: "Coupon 2", quantity: 15, flag: "Y" },
];
const charges = [
{ id: 1, name: "Charge 1", quantity: 15, flag: "Y" },
{ id: 2, name: "Charge 2", quantity: 15, flag: "Y" },
];
// 쿠폰 사용 함수
function useCoupon(couponId) {
const coupon = coupons.find((c) => c.id === couponId);
if (!coupon) {
console.log("쿠폰을 찾을 수 없습니다.");
return;
}
if (coupon.quantity > 0) {
coupon.quantity--;
coupon.flag = "N";
console.log("쿠폰 사용 완료");
} else {
console.log("사용 가능한 쿠폰이 없습니다.");
}
}
// 충전 사용 함수
function useCharge(chargeId) {
const charge = charges.find((c) => c.id === chargeId);
if (!charge) {
console.log("충전을 찾을 수 없습니다.");
return;
}
if (charge.quantity > 0) {
charge.quantity--;
charge.flag = "N";
console.log("충전 사용 완료");
} else {
console.log("사용 가능한 충전이 없습니다.");
}
}
// 예제 사용
useCoupon(1); // 쿠폰 1 사용
useCharge(1); // 충전 1 사용
// 남은 수량과 FLAG 출력
console.log("쿠폰:");
console.log(coupons);
console.log("충전:");
console.log(charges);
쿠폰테이블과 충전테이블을 분리하시는 게 좋을 것 같습니다.
무엇인가에 대한 결제를 하는 것으로 보이는데
DB modeling M:N 관계에 대해 검토해 보세요.
답변을 작성하시기 전에 로그인 해주세요.