package com.izouma.nineth.web; import com.izouma.nineth.domain.MetaTaskToUser; import com.izouma.nineth.dto.MetaRestResult; import com.izouma.nineth.dto.PageQuery; import com.izouma.nineth.enums.MetaTaskStatus; import com.izouma.nineth.repo.MetaTaskToUserRepo; import com.izouma.nineth.service.MetaTaskToUserService; import com.izouma.nineth.utils.excel.ExcelUtils; import lombok.AllArgsConstructor; import org.springframework.data.domain.Page; import org.springframework.web.bind.annotation.*; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.time.LocalDateTime; import java.util.List; import java.util.Objects; @RestController @RequestMapping("/metaTaskToUser") @AllArgsConstructor public class MetaTaskToUserController { private MetaTaskToUserService metaTaskToUserService; private MetaTaskToUserRepo metaTaskToUserRepo; @PostMapping("/all") public Page all(@RequestBody PageQuery pageQuery) { return metaTaskToUserService.all(pageQuery); } @GetMapping("/excel") @ResponseBody public void excel(HttpServletResponse response, PageQuery pageQuery) throws IOException { List data = all(pageQuery).getContent(); ExcelUtils.export(response, data); } @PostMapping("/receiveTask") public MetaRestResult receiveTask(@RequestBody MetaTaskToUser metaTaskToUser) { return metaTaskToUserService.receiveTask(metaTaskToUser); } @PostMapping("/{id}/finishTask") public MetaRestResult finishTask(@PathVariable Long id) { MetaTaskToUser metaTaskToUser = metaTaskToUserRepo.findByIdAndDel(id, false); if (Objects.isNull(metaTaskToUser)) { return MetaRestResult.returnError("暂无任务领取记录"); } if (MetaTaskStatus.FINISH.equals(metaTaskToUser.getStatus())) { return MetaRestResult.returnError("当前任务已经完成"); } metaTaskToUser.setFinishTime(LocalDateTime.now()); metaTaskToUser.setStatus(MetaTaskStatus.FINISH); return MetaRestResult.returnSuccess(metaTaskToUserRepo.save(metaTaskToUser)); } @PostMapping("/{id}/startTask") public MetaRestResult startTask(@PathVariable Long id) { MetaTaskToUser metaTaskToUser = metaTaskToUserRepo.findByIdAndDel(id, false); if (Objects.isNull(metaTaskToUser)) { return MetaRestResult.returnError("暂无任务领取记录"); } if (!MetaTaskStatus.GET.equals(metaTaskToUser.getStatus())) { return MetaRestResult.returnError(String.format("无法开始任务:当前任务状态[%S]", metaTaskToUser.getStatus().getDescription())); } metaTaskToUser.setStatus(MetaTaskStatus.PROGRESS); return MetaRestResult.returnSuccess(metaTaskToUserRepo.save(metaTaskToUser)); } @GetMapping("/{userId}/{status}/findByStatus") public MetaRestResult> findByStatus(@PathVariable Long userId, @PathVariable MetaTaskStatus status) { return metaTaskToUserService.findByStatus(userId, status); } @GetMapping("/{id}/findProgress") public MetaRestResult findProgress(@PathVariable Long id) { return metaTaskToUserService.findProgress(id); } }