|
|
|
|
@ -66,6 +66,9 @@ public class ExaminationsService extends CoreBaseService<Examinations> {
|
|
|
|
|
@Autowired
|
|
|
|
|
private UserExaminationsService userExaminationsService;
|
|
|
|
|
|
|
|
|
|
@Autowired
|
|
|
|
|
private UserTeamsService userTeamsService;
|
|
|
|
|
|
|
|
|
|
public PageQuery<Examinations> queryByCondition(ExaminationsQuery query) {
|
|
|
|
|
PageQuery<Examinations> ret = examinationsDao.queryByCondition(query.getPageQuery(), query);
|
|
|
|
|
queryListAfter(ret.getList());
|
|
|
|
|
@ -1104,4 +1107,50 @@ public class ExaminationsService extends CoreBaseService<Examinations> {
|
|
|
|
|
|
|
|
|
|
return JsonResult.success("重新实训成功");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 团队模式重新实训
|
|
|
|
|
*/
|
|
|
|
|
@Transactional(rollbackFor = Exception.class)
|
|
|
|
|
public JsonResult<String> restartTeam(Long examinationId, Long teamId, Users user) {
|
|
|
|
|
// 1. 校验权限(该团队成员)
|
|
|
|
|
UserTeams ut = new UserTeams();
|
|
|
|
|
ut.setUserId(user.getId());
|
|
|
|
|
ut.setTeamId(teamId);
|
|
|
|
|
if (userTeamsService.userTeamsByQuery(ut) == null) {
|
|
|
|
|
return JsonResult.failMessage("您不是该团队成员,无权操作");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 2. 查找该团队在该实训下的实例
|
|
|
|
|
// 注意:这里的 examinationId 是实训模板ID (examinations.id)
|
|
|
|
|
ExaminationInstances instance = sqlManager.lambdaQuery(ExaminationInstances.class)
|
|
|
|
|
.andEq(ExaminationInstances::getExaminationId, examinationId)
|
|
|
|
|
.andEq(ExaminationInstances::getTeamId, teamId)
|
|
|
|
|
.single();
|
|
|
|
|
|
|
|
|
|
if (instance == null) {
|
|
|
|
|
return JsonResult.failMessage("未找到实训进度,无需重置");
|
|
|
|
|
}
|
|
|
|
|
Long instanceId = instance.getId(); // 获取真正的实例自增ID
|
|
|
|
|
|
|
|
|
|
// 3. 删除逻辑
|
|
|
|
|
// 删除实训实例记录
|
|
|
|
|
int rows = examinationInstancesDao.deleteById(instanceId);
|
|
|
|
|
if (rows <= 0) {
|
|
|
|
|
// 这里抛出异常,触发 @Transactional 回滚
|
|
|
|
|
throw new GlobalException("重新实训失败,未找到实例或删除失败");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 清理由该实例产生的业务数据 (InstanceDatas)
|
|
|
|
|
sqlManager.lambdaQuery(InstanceDatas.class)
|
|
|
|
|
.andEq(InstanceDatas::getInstanceId, instanceId.intValue())
|
|
|
|
|
.delete();
|
|
|
|
|
|
|
|
|
|
// 清理该团队所有成员在该实例下的实训记录 (UserExaminations)
|
|
|
|
|
sqlManager.lambdaQuery(UserExaminations.class)
|
|
|
|
|
.andEq(UserExaminations::getInstanceId, instanceId)
|
|
|
|
|
.delete();
|
|
|
|
|
|
|
|
|
|
return JsonResult.success("团队实训进度重置成功");
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|