|
|
|
@ -233,14 +233,19 @@ public class CandidateSearchTaskDomainServiceImpl implements CandidateSearchTask |
|
|
|
|
|
|
|
private void defaultSort(LambdaQueryWrapper<TaskEntity> queryWrapper) { |
|
|
|
String userId = SecurityUtils.getUserId(); |
|
|
|
String sortSql = "ORDER BY CASE " + |
|
|
|
"WHEN end_time < NOW() THEN 6 " + |
|
|
|
"WHEN start_time > NOW() THEN 4 " + |
|
|
|
"WHEN (SELECT status FROM evaluator_task_user WHERE task_id = evaluator_task.id AND user_id = '" + userId + "' AND deleted = 0) = 1 THEN 1 " + |
|
|
|
"WHEN (SELECT status FROM evaluator_task_user WHERE task_id = evaluator_task.id AND user_id = '" + userId + "' AND deleted = 0) = 0 THEN 2 " + |
|
|
|
"WHEN (SELECT status FROM evaluator_task_user WHERE task_id = evaluator_task.id AND user_id = '" + userId + "' AND deleted = 0) = 3 THEN 3 " + |
|
|
|
"WHEN (SELECT status FROM evaluator_task_user WHERE task_id = evaluator_task.id AND user_id = '" + userId + "' AND deleted = 0) = 2 THEN 5 " + |
|
|
|
"ELSE 99 END ASC, create_time DESC"; |
|
|
|
// 单次子查询,内部组合状态+时间判断,避免重复扫描
|
|
|
|
String sortSql = "ORDER BY (" + |
|
|
|
"SELECT CASE " + |
|
|
|
"WHEN tu.status = 1 THEN 1 " + // 已考未通过
|
|
|
|
"WHEN tu.status = 0 AND evaluator_task.start_time <= NOW() AND evaluator_task.end_time >= NOW() THEN 2 " + // 未考
|
|
|
|
"WHEN tu.status = 3 THEN 3 " + // 评分中
|
|
|
|
"WHEN tu.status = 0 AND evaluator_task.start_time > NOW() THEN 4 " + // 未开考
|
|
|
|
"WHEN tu.status = 2 THEN 5 " + // 已考已过
|
|
|
|
"WHEN evaluator_task.end_time < NOW() THEN 6 " + // 已截止
|
|
|
|
"ELSE 99 END " + |
|
|
|
"FROM evaluator_task_user tu " + |
|
|
|
"WHERE tu.task_id = evaluator_task.id AND tu.user_id = '" + userId + "' AND tu.deleted = 0" + |
|
|
|
") ASC, create_time DESC"; |
|
|
|
queryWrapper.last(sortSql); |
|
|
|
} |
|
|
|
} |
|
|
|
|