diff --git a/src/main/java/com/sztzjy/linkCommerce/controller/stu/StudentTrainingAnswerController.java b/src/main/java/com/sztzjy/linkCommerce/controller/stu/StudentTrainingAnswerController.java index 154f63c..cbf8e22 100644 --- a/src/main/java/com/sztzjy/linkCommerce/controller/stu/StudentTrainingAnswerController.java +++ b/src/main/java/com/sztzjy/linkCommerce/controller/stu/StudentTrainingAnswerController.java @@ -18,6 +18,8 @@ import com.sztzjy.linkCommerce.entity.dto.ProductDevelopmentFactorsStepTwoValida import com.sztzjy.linkCommerce.entity.dto.ProductDevelopmentFactorsStepTwoValidationResult; import com.sztzjy.linkCommerce.entity.dto.ProductDevelopmentFactorsStepThreeValidationRequest; import com.sztzjy.linkCommerce.entity.dto.ProductDevelopmentFactorsStepThreeValidationResult; +import com.sztzjy.linkCommerce.entity.dto.ProductDevelopmentFactorsStepFourValidationRequest; +import com.sztzjy.linkCommerce.entity.dto.ProductDevelopmentFactorsStepFourValidationResult; import com.sztzjy.linkCommerce.service.NewProductSurveyStepOneService; import com.sztzjy.linkCommerce.service.NewProductSurveyStepTwoService; import com.sztzjy.linkCommerce.service.NewProductSurveyStepThreeService; @@ -25,6 +27,7 @@ import com.sztzjy.linkCommerce.service.NewProductSurveyStepFourService; import com.sztzjy.linkCommerce.service.ProductDevelopmentFactorsStepOneService; import com.sztzjy.linkCommerce.service.ProductDevelopmentFactorsStepTwoService; import com.sztzjy.linkCommerce.service.ProductDevelopmentFactorsStepThreeService; +import com.sztzjy.linkCommerce.service.ProductDevelopmentFactorsStepFourService; import com.sztzjy.linkCommerce.service.StudentTrainingAnswerService; import com.sztzjy.linkCommerce.util.ResultEntity; import io.swagger.annotations.Api; @@ -61,6 +64,8 @@ public class StudentTrainingAnswerController { @Autowired private ProductDevelopmentFactorsStepThreeService productDevelopmentFactorsStepThreeService; + @Autowired + private ProductDevelopmentFactorsStepFourService productDevelopmentFactorsStepFourService; @GetMapping("/{taskKey}") @ApiOperation("查询当前学生指定实训任务答案") @@ -170,6 +175,14 @@ public class StudentTrainingAnswerController { } } + @PostMapping("/product-development-factors/step-4/validate") + @ApiOperation("产品开发关键因素第四步校验") + public ResultEntity validateProductDevelopmentFactorsStepFour( + @RequestBody ProductDevelopmentFactorsStepFourValidationRequest answer, HttpServletRequest request) { + try { return new ResultEntity<>(HttpStatus.OK, "校验通过", productDevelopmentFactorsStepFourService.validate(answer, TokenProvider.getJWTUser(request))); } + catch (ServiceException e) { return new ResultEntity<>(e.getCode(), e.getMessage()); } + } + @DeleteMapping("/{taskKey}") @ApiOperation("删除当前学生指定实训任务答案") public ResultEntity delete(@PathVariable String taskKey, diff --git a/src/main/java/com/sztzjy/linkCommerce/entity/dto/ProductDevelopmentFactorsStepFourValidationRequest.java b/src/main/java/com/sztzjy/linkCommerce/entity/dto/ProductDevelopmentFactorsStepFourValidationRequest.java new file mode 100644 index 0000000..d21ff49 --- /dev/null +++ b/src/main/java/com/sztzjy/linkCommerce/entity/dto/ProductDevelopmentFactorsStepFourValidationRequest.java @@ -0,0 +1,6 @@ +package com.sztzjy.linkCommerce.entity.dto; +public class ProductDevelopmentFactorsStepFourValidationRequest { + private String successFactors, failedFactors; + public String getSuccessFactors() { return successFactors; } public void setSuccessFactors(String value) { successFactors = value; } + public String getFailedFactors() { return failedFactors; } public void setFailedFactors(String value) { failedFactors = value; } +} diff --git a/src/main/java/com/sztzjy/linkCommerce/entity/dto/ProductDevelopmentFactorsStepFourValidationResult.java b/src/main/java/com/sztzjy/linkCommerce/entity/dto/ProductDevelopmentFactorsStepFourValidationResult.java new file mode 100644 index 0000000..1c67e17 --- /dev/null +++ b/src/main/java/com/sztzjy/linkCommerce/entity/dto/ProductDevelopmentFactorsStepFourValidationResult.java @@ -0,0 +1,2 @@ +package com.sztzjy.linkCommerce.entity.dto; +public class ProductDevelopmentFactorsStepFourValidationResult { private boolean valid; private String message; public boolean isValid() { return valid; } public void setValid(boolean value) { valid = value; } public String getMessage() { return message; } public void setMessage(String value) { message = value; } } diff --git a/src/main/java/com/sztzjy/linkCommerce/service/ProductDevelopmentFactorsStepFourService.java b/src/main/java/com/sztzjy/linkCommerce/service/ProductDevelopmentFactorsStepFourService.java new file mode 100644 index 0000000..70ccb28 --- /dev/null +++ b/src/main/java/com/sztzjy/linkCommerce/service/ProductDevelopmentFactorsStepFourService.java @@ -0,0 +1,5 @@ +package com.sztzjy.linkCommerce.service; +import com.sztzjy.linkCommerce.config.security.JwtUser; +import com.sztzjy.linkCommerce.entity.dto.ProductDevelopmentFactorsStepFourValidationRequest; +import com.sztzjy.linkCommerce.entity.dto.ProductDevelopmentFactorsStepFourValidationResult; +public interface ProductDevelopmentFactorsStepFourService { ProductDevelopmentFactorsStepFourValidationResult validate(ProductDevelopmentFactorsStepFourValidationRequest request, JwtUser user); } diff --git a/src/main/java/com/sztzjy/linkCommerce/service/impl/ProductDevelopmentFactorsStepFourServiceImpl.java b/src/main/java/com/sztzjy/linkCommerce/service/impl/ProductDevelopmentFactorsStepFourServiceImpl.java new file mode 100644 index 0000000..09d1335 --- /dev/null +++ b/src/main/java/com/sztzjy/linkCommerce/service/impl/ProductDevelopmentFactorsStepFourServiceImpl.java @@ -0,0 +1,19 @@ +package com.sztzjy.linkCommerce.service.impl; +import com.sztzjy.linkCommerce.config.exception.handler.ServiceException; +import com.sztzjy.linkCommerce.config.security.JwtUser; +import com.sztzjy.linkCommerce.entity.dto.ProductDevelopmentFactorsStepFourValidationRequest; +import com.sztzjy.linkCommerce.entity.dto.ProductDevelopmentFactorsStepFourValidationResult; +import com.sztzjy.linkCommerce.service.ProductDevelopmentFactorsStepFourService; +import org.apache.commons.lang3.StringUtils; +import org.springframework.http.HttpStatus; +import org.springframework.stereotype.Service; +@Service public class ProductDevelopmentFactorsStepFourServiceImpl implements ProductDevelopmentFactorsStepFourService { + public ProductDevelopmentFactorsStepFourValidationResult validate(ProductDevelopmentFactorsStepFourValidationRequest request, JwtUser user) { + if (user == null || StringUtils.isBlank(user.getUserId())) throw new ServiceException(HttpStatus.UNAUTHORIZED, "请先登录后再提交"); + if (user.getRoleId() != 4) throw new ServiceException(HttpStatus.FORBIDDEN, "仅学生可提交实训答案"); + if (request == null || !StringUtils.isNotBlank(request.getSuccessFactors())) throw bad("请填写产品成功的关键因素"); + if (!StringUtils.isNotBlank(request.getFailedFactors())) throw bad("请填写产品失败的关键因素"); + ProductDevelopmentFactorsStepFourValidationResult result = new ProductDevelopmentFactorsStepFourValidationResult(); result.setValid(true); result.setMessage("校验通过"); return result; + } + private ServiceException bad(String message) { return new ServiceException(HttpStatus.BAD_REQUEST, message); } +} diff --git a/src/test/java/com/sztzjy/linkCommerce/service/impl/ProductDevelopmentFactorsStepFourServiceImplTest.java b/src/test/java/com/sztzjy/linkCommerce/service/impl/ProductDevelopmentFactorsStepFourServiceImplTest.java new file mode 100644 index 0000000..d65c1cc --- /dev/null +++ b/src/test/java/com/sztzjy/linkCommerce/service/impl/ProductDevelopmentFactorsStepFourServiceImplTest.java @@ -0,0 +1,21 @@ +package com.sztzjy.linkCommerce.service.impl; + +import com.sztzjy.linkCommerce.config.exception.handler.ServiceException; +import com.sztzjy.linkCommerce.config.security.JwtUser; +import com.sztzjy.linkCommerce.entity.dto.ProductDevelopmentFactorsStepFourValidationRequest; +import org.junit.jupiter.api.Test; + +import static org.junit.jupiter.api.Assertions.assertThrows; +import static org.junit.jupiter.api.Assertions.assertTrue; + +class ProductDevelopmentFactorsStepFourServiceImplTest { + @Test void acceptsCompleteStudentSummary() { assertTrue(new ProductDevelopmentFactorsStepFourServiceImpl().validate(valid(), student()).isValid()); } + @Test void rejectsBlankSummaryOrNonStudent() { + ProductDevelopmentFactorsStepFourValidationRequest blank = valid(); blank.setFailedFactors(" "); + assertThrows(ServiceException.class, () -> new ProductDevelopmentFactorsStepFourServiceImpl().validate(blank, student())); + assertThrows(ServiceException.class, () -> new ProductDevelopmentFactorsStepFourServiceImpl().validate(valid(), teacher())); + } + private ProductDevelopmentFactorsStepFourValidationRequest valid() { ProductDevelopmentFactorsStepFourValidationRequest value = new ProductDevelopmentFactorsStepFourValidationRequest(); value.setSuccessFactors("成功关键因素"); value.setFailedFactors("失败关键因素"); return value; } + private JwtUser student() { JwtUser user = new JwtUser(); user.setUserId("stu-1"); user.setRoleId(4); return user; } + private JwtUser teacher() { JwtUser user = new JwtUser(); user.setUserId("tea-1"); user.setRoleId(2); return user; } +}