포인트 만료 및 FIFO 테이블 설계
* 만료일시를 연장시켜주고 싶을 경우는 연장보다는
즉시 관리자차감시킨 후 차감금액만큼
새로운 만료일시로 관리자지급으로 처리할것
* 100포인트 사용 후 50포인트만 취소는 불가
* 사용 후 취소시점에 만료일이 지난 경우는 취소불가
꼭 줘야 하는 경우에는 새로 관리자 지급
구매보상충전으로 받은 포인트를 사용한 이후 구매보상충전건을 취소할 경우는
구매보상충전건이 일부라도 사용이 되지 않은 상태만 일반적인 취소처리를 수행하고
일부나 전액 사용된
* 포인트변경 트랜잭션 시작 후 user.point를 select for update를 하거나 update를 해야함.
사용가능한 금액만큼 가지고 있는지 체크를 할 경우 아래와 같이 update를 하여
update user set point = point + @변경액 where user_no = @회원번호 and point + @변경액 > 0;
updated rows가 1이 아니면 에러처리하고 1일 경우만 이후로 진행시키면 됨
* 만료시에도 로그를 꼭 남기고 point_charge의 balance를 0으로 차감 시켜줘야함.
* 포인트를 변경시 point_log와 point_detail_log의 amount는
증가일 경우는 플러스 차감일 경우는 마이너스로 입력
* point_charge 추후 변경 검토
- 최초충전금액을 알고 싶다면 point_log를 조인하고
조인부하가 심해지면 point_charge.charge_amount를 추가하여 사용
- user_no, balance, reg_dt로 복합인덱스를 걸어서 사용
추후 index 페이지 분할 부하가 심하다면 user_no, empty_yn, reg_dt와 같이
empty_yn 컬럼 추가하여 인덱스 생성
* 유저별 포인트 정합성 검수를 위해 아래 값들 동일한지 주기적으로 확인
- user.point
- sum(point_charge.balance)
- sum(point_log.amount)
- sum(point_detail_log.amount)
- point_log의 마지막 balance
* 포인트 변경 코드
PC00 : 포인트변경코드
PC01 : 구매보상충전
PC02 : 리뷰보상충전
PC03 : 이벤트보상충전
PC04 : 관리자충전
PC51 : 구매사용차감
PC52 : 관리자차감
PC53 : 만료차감
PC91 : 충전취소
PC92 : 구매사용취소
* 상황별 데이터 입력 샘플