17ab1098ec
PayInstallmentStep(Step 4.5): 1200%룰로 이연된 분급(installment_plan SCHEDULED)을 도래월(settle_month=정산월)에 recruit_ledger로 편입해 실제 지급. 이전엔 이연만 되고 도래월 지급 절차가 없어 차액이 영구 미지급되던 갭을 메움. - BatchConfig job flow에 step4b(calcRecruit→payInstallment→calcMaintain) 등록 - InstallmentPlanMapper.resetPaidToScheduledByMonth(+XML)로 재실행 멱등 (진입 시 PAID→SCHEDULED 역산, Step4 deleteBySettleMonth가 원장 정리) - RecruitLedgerMapper insert에 reconcile_status 컬럼, SettlementContext.installmentPaidCount - 단위테스트 3건(정상지급/멱등/계약미존재) GREEN 신입교육 주석: 컨트롤러/서비스/공통/프론트 전반에 도메인·코드 설명 주석 추가 (동작 변경 없음 — 빌드/테스트/타입체크 전부 GREEN으로 무회귀 확인). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
37 lines
1.2 KiB
Java
37 lines
1.2 KiB
Java
package com.ga.common.menu;
|
|
|
|
import org.apache.ibatis.annotations.Mapper;
|
|
import org.apache.ibatis.annotations.Param;
|
|
|
|
import java.util.List;
|
|
import java.util.Map;
|
|
|
|
/**
|
|
* 메뉴/권한 DB 매퍼 (MyBatis). SQL은 동명 XML 매퍼에 정의된다.
|
|
* selectUserPermissions는 (menuId, permCode) 행들을 돌려주며, 서비스가 메뉴별로 묶는다.
|
|
*/
|
|
@Mapper
|
|
public interface MenuMapper {
|
|
|
|
/** 전체 활성 메뉴 (정렬됨) */
|
|
List<MenuVO> selectAllActive();
|
|
|
|
/** 사용자가 접근 가능한 메뉴 목록 */
|
|
List<MenuVO> selectAccessibleMenusByUserId(@Param("userId") Long userId);
|
|
|
|
/** 사용자별 (menuId → permCodes) 매핑 */
|
|
List<Map<String, Object>> selectUserPermissions(@Param("userId") Long userId);
|
|
|
|
/** 단일 (menuCode, permCode) 권한 보유 여부 */
|
|
int hasPermission(@Param("userId") Long userId,
|
|
@Param("menuCode") String menuCode,
|
|
@Param("permCode") String permCode);
|
|
|
|
MenuVO selectById(@Param("menuId") Long menuId);
|
|
MenuVO selectByCode(@Param("menuCode") String menuCode);
|
|
int insert(MenuVO vo);
|
|
int update(MenuVO vo);
|
|
int deleteById(@Param("menuId") Long menuId);
|
|
int countChildren(@Param("menuId") Long menuId);
|
|
}
|