ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 포인트 만료 및 FIFO 테이블 설계
    Logical 2021. 8. 18. 13:58

    * 만료일시를 연장시켜주고 싶을 경우는 연장보다는
       즉시 관리자차감시킨 후 차감금액만큼
       새로운 만료일시로 관리자지급으로 처리할것

    * 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 : 구매사용취소

     

    * 상황별 데이터 입력 샘플

     

     

    'Logical' 카테고리의 다른 글

    상품 옵션 테이블 설계  (0) 2021.08.12
    튜닝 예시 #3  (0) 2021.07.28
    튜닝 예시 #2  (0) 2021.07.26
    튜닝 예시 #1  (0) 2021.07.23
    생일 데이터 집계시 이슈2  (0) 2021.05.26
Designed by Tistory.