package com.mydreamjob.application; /** * 投递状态枚举 * * SUBMITTED — 学生已投递 * VIEWED — 企业已查看 * INTERVIEW — 进入面试阶段 * REJECTED — 已拒绝 * HIRED — 已录用 */ public enum ApplicationStatus { SUBMITTED, VIEWED, INTERVIEW, REJECTED, HIRED, WITHDRAWN; // 学生主动撤回 /** * 校验状态流转是否合法 */ public boolean canTransitionTo(ApplicationStatus target) { if (target == null) return false; return switch (this) { case SUBMITTED -> target == VIEWED || target == REJECTED || target == WITHDRAWN; case VIEWED -> target == INTERVIEW || target == REJECTED || target == WITHDRAWN; case INTERVIEW -> target == REJECTED || target == HIRED; case REJECTED, HIRED, WITHDRAWN -> false; // 终态不可再流转 }; } }