제가 혼자 정리해보려고 끄적거려본건데 고수님들의 의견도 한번 들어보고 싶어서
이곳에 올려봅니다.
지금 방법보다 훨씬 좋은 방법을 제시해주신다면 매우 감사드리겠습니다.
mileage 테이블로 총합을 넘기는 구조는 변경하기 힘들 것 같습니다.
deldate는 입력받을때 regdate에 +7일을 한다음 비교해서 타입을 변경할 예정입니다.
----------------------------------------------------------------------------------------*/
select * from buypoint;
+-------------+--------+------------+------------+---------------+----------------+-----------------+---------------------+---------------------+
| buypoint_id | buy_id | member_num | mileage_id | buypoint_type | buypoint_price | buypoint_amount | buypoint_regdate | buypoint_deldate |
+-------------+--------+------------+------------+---------------+----------------+-----------------+---------------------+---------------------+
| 19 | 0 | 7 | 7 | 503 | 0 | 0 | 2019-03-28 17:07:55 | 0000-00-00 00:00:00 |
| 20 | 0 | 8 | 8 | 503 | 0 | 0 | 2019-03-28 17:09:28 | 0000-00-00 00:00:00 |
| 21 | 0 | 7 | 7 | 502 | 1 | 1 | 2019-03-28 17:16:13 | 0000-00-00 00:00:00 |
| 22 | 0 | 7 | 7 | 503 | 1 | 0 | 2019-03-28 17:19:37 | 0000-00-00 00:00:00 |
| 24 | 13 | 7 | 7 | 500 | 24950 | 24950 | 2019-03-28 17:25:49 | 0000-00-00 00:00:00 |
| 25 | 0 | 7 | 7 | 501 | 24000 | 950 | 2019-03-28 17:26:46 | 0000-00-00 00:00:00 |
| 26 | 13 | 7 | 7 | 500 | 12475 | 13425 | 2019-03-28 17:31:16 | 0000-00-00 00:00:00 |
| 27 | 11 | 7 | 7 | 500 | 1944 | 15369 | 2019-03-28 17:31:29 | 0000-00-00 00:00:00 |
| 28 | 12 | 7 | 7 | 500 | 8750 | 24119 | 2019-03-28 17:32:52 | 0000-00-00 00:00:00 |
| 30 | 14 | 7 | 7 | 500 | 17500 | 41619 | 2019-04-01 11:52:12 | 0000-00-00 00:00:00 |
| 32 | 15 | 7 | 7 | 500 | 25000 | 66619 | 2019-04-01 17:10:34 | 0000-00-00 00:00:00 |
+-------------+--------+------------+------------+---------------+----------------+-----------------+---------------------+---------------------+
select buypoint_amount from mileage;
/* mileage 테이블은 사용자 별로 여러 종류의 마일리지의 합을 모아놓은 테이블
buypoint는 insert로 입력되면 트리거로 가장 최근의 amount 값을 buypoint_amount로 update시킴.*/
+-----------------+
| buypoint_amount |
+-----------------+
| 66619 |
+-----------------+
/****************************************** 구매v포인트 관련 type (500~599)************************************************/
500 - 구매포인트 적립
501 - 구매마일리지 전환
502 - 운영자 충전
503 - 운영자 차감
504 - 보유일(7일) 경과로 인한 삭제
/****************************************** 구매v포인트 관련 type (500~599)************************************************/
이슈 1:
buypoint_id가 32인 포인트는 2019-04-01 17:10:34에 +25000원 되었음.
그렇다면 4월 8일에 삭제가 되어야 함.
현재 시스템은 각 포인트별 가격을 sum 하는게 아닌 가장 최신의 항목에 총합을 적어놓는 시스템(regdate를 내림차순으로 불러오고 limit 1 을 이용해 최신 값을 찾아내서 발생한 항목만큼 더하거나 빼줌).
그렇다면 내가 7일이내에 사용한 포인트를 제외하고 얻은 포인트를 7일 후 삭제당하는 방법은...?
방안 1
buypoint_id별로 amount 값을 따로 주고 입력이 끝나면 sum(buypoint_amount)로 mileage 테이블에 업데이트 함.
(예상문제 : 한번의 포인트 차감을 위해선 사용가능한 포인트를 모두 불러와서 컬럼마다 계산을 해야함.)
|