package com.sztzjy.linkCommerce.controller.stu; import com.sztzjy.linkCommerce.config.exception.UnAuthorizedException; import com.sztzjy.linkCommerce.config.security.JwtUser; import com.sztzjy.linkCommerce.config.security.TokenProvider; import com.sztzjy.linkCommerce.entity.SchoolDefaultTaskInitialization; import com.sztzjy.linkCommerce.entity.TaskAllocation; import com.sztzjy.linkCommerce.entity.Userinfo; import com.sztzjy.linkCommerce.mapper.UserinfoMapper; import com.sztzjy.linkCommerce.service.SchoolDefaultTaskService; import com.sztzjy.linkCommerce.util.ResultEntity; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.HttpStatus; import org.springframework.web.bind.annotation.*; import javax.servlet.http.HttpServletRequest; import java.util.HashMap; import java.util.List; import java.util.Map; @Api(tags = "学校默认实训任务") @RequestMapping("api/school-default-tasks") @RestController public class SchoolDefaultTaskController { @Autowired SchoolDefaultTaskService schoolDefaultTaskService; @Autowired UserinfoMapper userinfoMapper; @GetMapping @ApiOperation("查询学校默认实训任务") public ResultEntity> get(HttpServletRequest request) { Userinfo operator = requireManagerTeacher(request); SchoolDefaultTaskInitialization initialization = schoolDefaultTaskService.getInitialization(operator.getSchoolId()); List tasks = schoolDefaultTaskService.getSchoolDefault(operator.getSchoolId()); String status = initialization == null ? (tasks.isEmpty() ? "INITIALIZING" : "READY") : initialization.getStatus(); if (tasks.isEmpty()) { tasks = schoolDefaultTaskService.getPlatformDefault(); } Map data = new HashMap<>(); data.put("status", status); data.put("tasks", tasks); data.put("lastError", initialization == null ? null : initialization.getLastError()); return new ResultEntity<>(HttpStatus.OK, "查询成功", data); } @PutMapping @ApiOperation("保存学校默认实训任务") public ResultEntity replace(@RequestBody List tasks, HttpServletRequest request) { Userinfo operator = requireManagerTeacher(request); SchoolDefaultTaskInitialization initialization = schoolDefaultTaskService.getInitialization(operator.getSchoolId()); if (initialization != null && !"READY".equals(initialization.getStatus())) { return new ResultEntity<>(HttpStatus.BAD_REQUEST, "默认实训任务尚未初始化完成"); } schoolDefaultTaskService.replaceSchoolDefault(operator.getSchoolId(), tasks); return new ResultEntity<>(HttpStatus.OK, "保存成功"); } @PostMapping("/retry") @ApiOperation("重试初始化学校默认实训任务") public ResultEntity retry(HttpServletRequest request) { Userinfo operator = requireManagerTeacher(request); schoolDefaultTaskService.enqueueInitialization(operator.getSchoolId()); return new ResultEntity<>(HttpStatus.OK, "已提交初始化任务"); } private Userinfo requireManagerTeacher(HttpServletRequest request) { JwtUser currentUser = TokenProvider.getJWTUser(request); if (currentUser == null || currentUser.getUserId() == null) { throw new UnAuthorizedException("身份认证失败"); } Userinfo operator = userinfoMapper.selectByPrimaryKey(currentUser.getUserId()); if (operator == null || !Integer.valueOf(3).equals(operator.getRole()) || !Boolean.TRUE.equals(operator.getTeacherAdmin())) { throw new UnAuthorizedException("仅管理员教师可维护学校默认实训任务"); } return operator; } }