package com.sb.web.point; import com.sb.web.point.mapper.PointMapper; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; /** * 활동 포인트 적립/조회. * 게시판 글/댓글 작성 시 10점, 하루 3회까지만 지급(글+댓글 합산). */ @Service @RequiredArgsConstructor public class PointService { private final PointMapper pointMapper; public static final int BOARD_WRITE_POINT = 10; public static final int BOARD_WRITE_DAILY_LIMIT = 3; public static final String REASON_BOARD_WRITE = "BOARD_WRITE"; /** * 게시판 글/댓글 작성 보상. 오늘 지급 횟수가 한도 미만일 때만 지급한다. * @return 지급되면 지급 포인트, 한도 초과로 미지급이면 0 */ @Transactional public int awardBoardWrite(Long memberId) { int today = pointMapper.countTodayGrants(memberId, REASON_BOARD_WRITE); if (today >= BOARD_WRITE_DAILY_LIMIT) { return 0; } pointMapper.insertHistory(memberId, BOARD_WRITE_POINT, REASON_BOARD_WRITE); pointMapper.addPoints(memberId, BOARD_WRITE_POINT); return BOARD_WRITE_POINT; } public long getPoints(Long memberId) { Long p = pointMapper.getPoints(memberId); return p == null ? 0L : p; } }