feat: 添加团队重新实训接口restartTeam

main
menglikai 5 days ago
parent c169cf6f59
commit 9f2bd88520

@ -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("团队实训进度重置成功");
}
}

@ -69,6 +69,14 @@ public class ExaminationsController {
return examinationsService.restartOne(examinationId,instanceId, user);
}
@PostMapping(API + "/restartTeam")
@FinancialAuth
@ApiModelProperty("团队模式重新实训")
@ResponseBody
public JsonResult<String> restartTeam(@RequestParam Long examinationId, @RequestParam Long teamId, @FinancialUser Users user) {
return examinationsService.restartTeam(examinationId, teamId, user);
}
@GetMapping(API + "/list")
@FinancialAuth

Loading…
Cancel
Save