안녕하세요.
적립금 만료 로직을 만들고 있는데, 어떻게 접근을 해야 할지 도움을 받고자 합니다.
sno, m_no, emoney, memo, regdt, exp_date, status
1, 1002, 5000, 회원가입, 2018-01-01, 2018-06-30, N
2, 1002, 2000, 제품구입, 2018-02-01, 2018-07-30, N
3, 1002, -500, 결제사용, 2018-03-01, 2018-08-27, N
4, 1002, 1000, 제품구입, 2018-04-01, 2018-09-27, N
5, 1002, 1000, 제품구입, 2018-05-01, 2018-10-27, N
6, 1002, -5000, 결제사용, 2018-06-01, 2018-11-27, N
오늘이 2018-08-01이라고 가정하면, 만료일이 지난 적립금은 소멸을 시켜야 합니다.
위 테이블상에서 만료 대상 적립금은 7000입니다. (sno=1, 2) (exp_date < 2018-08-01)
그러나, 이미 일부를 사용(-5500)했기 때문에 (sno=3, 6)
사용한 만큼을 제하고 나머지를 소멸시켜야 합니다.
어떤 로직으로 처리해야 할지 막막하네요.
1. 적립금 만료를 위한 필드를 추가해야 할 것이 있을지,
2. 어떤 쿼리로 처리를 해야할지 도움 좀 부탁드립니다.
* status 필드는, 적립금을 사용할 경우(sno=3) 사용 직전의 적립된 적립금중 소멸되지 않은 적립금에 일부 또는 전부를 사용했음을 기록하기 위해 만들었습니다.
* m_no(회원코드)
* regdt(지급/차감일)
* exp_date(만료일=지급/차감일+180일)
* status(N=미사용,Y=사용,E=만료소멸) |