forked from baskbuddy/zhangshun
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
32 lines
912 B
32 lines
912 B
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; // 终态不可再流转
|
|
};
|
|
}
|
|
}
|
|
|