feat(point): 한 달 개근(모든 날 기록) 랜덤 보너스 1~100P
Deploy / deploy (push) Failing after 14m42s

내역 저장 시 현재 월 모든 날에 기록이 있으면 월 1회 랜덤 1~100P 지급.
전월 소급 입력 파밍 방지(현재 월만 인정), 화면 안내 없음(포인트 내역에만).
- AccountEntryMapper.countDistinctEntryDays, PointMapper.countByReason
- PointService.awardMonthComplete(reason=MONTH_COMPLETE_yyyyMM 로 월 1회)

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
sb
2026-07-05 16:56:48 +09:00
parent a0509099f7
commit 45bb025247
6 changed files with 60 additions and 0 deletions
@@ -246,4 +246,13 @@
ORDER BY aet.entry_id, t.name
</select>
<!-- 특정 연·월에 기록이 있는 서로 다른 날짜 수(한 달 개근 판정) -->
<select id="countDistinctEntryDays" resultType="int">
SELECT COUNT(DISTINCT DAY(entry_date))
FROM account_entry
WHERE member_id = #{memberId}
AND YEAR(entry_date) = #{year}
AND MONTH(entry_date) = #{month}
</select>
</mapper>
@@ -8,6 +8,11 @@
WHERE member_id = #{memberId} AND reason = #{reason} AND created_at &gt;= CURDATE()
</select>
<select id="countByReason" resultType="int">
SELECT COUNT(*) FROM point_history
WHERE member_id = #{memberId} AND reason = #{reason}
</select>
<insert id="insertHistory">
INSERT INTO point_history (member_id, amount, reason, created_at)
VALUES (#{memberId}, #{amount}, #{reason}, NOW())