You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
82 lines
3.8 KiB
Java
82 lines
3.8 KiB
Java
|
1 month ago
|
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<Map<String, Object>> get(HttpServletRequest request) {
|
||
|
|
Userinfo operator = requireManagerTeacher(request);
|
||
|
|
SchoolDefaultTaskInitialization initialization = schoolDefaultTaskService.getInitialization(operator.getSchoolId());
|
||
|
|
List<TaskAllocation> tasks = schoolDefaultTaskService.getSchoolDefault(operator.getSchoolId());
|
||
|
|
String status = initialization == null ? (tasks.isEmpty() ? "INITIALIZING" : "READY") : initialization.getStatus();
|
||
|
|
if (tasks.isEmpty()) {
|
||
|
|
tasks = schoolDefaultTaskService.getPlatformDefault();
|
||
|
|
}
|
||
|
|
Map<String, Object> 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<TaskAllocation> 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;
|
||
|
|
}
|
||
|
|
}
|