feat: validate new product survey step four
parent
302410be98
commit
a9208d09fb
@ -0,0 +1,14 @@
|
||||
package com.sztzjy.linkCommerce.entity.dto;
|
||||
|
||||
public class NewProductSurveyStepFourValidationRequest {
|
||||
private String coreValue;
|
||||
private String tangibleValue;
|
||||
private String extendedValue;
|
||||
|
||||
public String getCoreValue() { return coreValue; }
|
||||
public void setCoreValue(String coreValue) { this.coreValue = coreValue; }
|
||||
public String getTangibleValue() { return tangibleValue; }
|
||||
public void setTangibleValue(String tangibleValue) { this.tangibleValue = tangibleValue; }
|
||||
public String getExtendedValue() { return extendedValue; }
|
||||
public void setExtendedValue(String extendedValue) { this.extendedValue = extendedValue; }
|
||||
}
|
||||
@ -0,0 +1,11 @@
|
||||
package com.sztzjy.linkCommerce.entity.dto;
|
||||
|
||||
public class NewProductSurveyStepFourValidationResult {
|
||||
private boolean valid;
|
||||
private String message;
|
||||
|
||||
public boolean isValid() { return valid; }
|
||||
public void setValid(boolean valid) { this.valid = valid; }
|
||||
public String getMessage() { return message; }
|
||||
public void setMessage(String message) { this.message = message; }
|
||||
}
|
||||
@ -0,0 +1,9 @@
|
||||
package com.sztzjy.linkCommerce.service;
|
||||
|
||||
import com.sztzjy.linkCommerce.config.security.JwtUser;
|
||||
import com.sztzjy.linkCommerce.entity.dto.NewProductSurveyStepFourValidationRequest;
|
||||
import com.sztzjy.linkCommerce.entity.dto.NewProductSurveyStepFourValidationResult;
|
||||
|
||||
public interface NewProductSurveyStepFourService {
|
||||
NewProductSurveyStepFourValidationResult validate(NewProductSurveyStepFourValidationRequest request, JwtUser user);
|
||||
}
|
||||
@ -0,0 +1,48 @@
|
||||
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.NewProductSurveyStepFourValidationRequest;
|
||||
import com.sztzjy.linkCommerce.entity.dto.NewProductSurveyStepFourValidationResult;
|
||||
import com.sztzjy.linkCommerce.service.NewProductSurveyStepFourService;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.springframework.http.HttpStatus;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
@Service
|
||||
public class NewProductSurveyStepFourServiceImpl implements NewProductSurveyStepFourService {
|
||||
@Override
|
||||
public NewProductSurveyStepFourValidationResult validate(NewProductSurveyStepFourValidationRequest request, JwtUser user) {
|
||||
requireStudent(user);
|
||||
if (request == null) {
|
||||
throw badRequest("请完成三层次AI应用价值分析");
|
||||
}
|
||||
requireNonBlank(request.getCoreValue(), "请填写核心层AI应用价值分析");
|
||||
requireNonBlank(request.getTangibleValue(), "请填写有形层AI应用价值分析");
|
||||
requireNonBlank(request.getExtendedValue(), "请填写延伸层AI应用价值分析");
|
||||
|
||||
NewProductSurveyStepFourValidationResult result = new NewProductSurveyStepFourValidationResult();
|
||||
result.setValid(true);
|
||||
result.setMessage("校验通过");
|
||||
return result;
|
||||
}
|
||||
|
||||
private void requireStudent(JwtUser user) {
|
||||
if (user == null || StringUtils.isBlank(user.getUserId())) {
|
||||
throw new ServiceException(HttpStatus.UNAUTHORIZED, "请先登录后再提交");
|
||||
}
|
||||
if (user.getRoleId() != 4) {
|
||||
throw new ServiceException(HttpStatus.FORBIDDEN, "仅学生可提交实训答案");
|
||||
}
|
||||
}
|
||||
|
||||
private void requireNonBlank(String value, String message) {
|
||||
if (StringUtils.isBlank(value)) {
|
||||
throw badRequest(message);
|
||||
}
|
||||
}
|
||||
|
||||
private ServiceException badRequest(String message) {
|
||||
return new ServiceException(HttpStatus.BAD_REQUEST, message);
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,59 @@
|
||||
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.NewProductSurveyStepFourValidationRequest;
|
||||
import com.sztzjy.linkCommerce.entity.dto.NewProductSurveyStepFourValidationResult;
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
import static org.junit.jupiter.api.Assertions.assertThrows;
|
||||
import static org.junit.jupiter.api.Assertions.assertTrue;
|
||||
|
||||
class NewProductSurveyStepFourServiceImplTest {
|
||||
|
||||
@Test
|
||||
void acceptsStudentWithAllThreeNonBlankValues() {
|
||||
NewProductSurveyStepFourServiceImpl service = new NewProductSurveyStepFourServiceImpl();
|
||||
|
||||
NewProductSurveyStepFourValidationResult result = service.validate(request("核心分析", "有形分析", "延伸分析"), student());
|
||||
|
||||
assertTrue(result.isValid());
|
||||
}
|
||||
|
||||
@Test
|
||||
void rejectsBlankValuesForEachLayer() {
|
||||
NewProductSurveyStepFourServiceImpl service = new NewProductSurveyStepFourServiceImpl();
|
||||
|
||||
assertThrows(ServiceException.class, () -> service.validate(request(" ", "有形分析", "延伸分析"), student()));
|
||||
assertThrows(ServiceException.class, () -> service.validate(request("核心分析", "\t", "延伸分析"), student()));
|
||||
assertThrows(ServiceException.class, () -> service.validate(request("核心分析", "有形分析", ""), student()));
|
||||
}
|
||||
|
||||
@Test
|
||||
void rejectsNonStudent() {
|
||||
NewProductSurveyStepFourServiceImpl service = new NewProductSurveyStepFourServiceImpl();
|
||||
|
||||
assertThrows(ServiceException.class, () -> service.validate(request("核心分析", "有形分析", "延伸分析"), teacher()));
|
||||
}
|
||||
|
||||
private NewProductSurveyStepFourValidationRequest request(String coreValue, String tangibleValue, String extendedValue) {
|
||||
NewProductSurveyStepFourValidationRequest request = new NewProductSurveyStepFourValidationRequest();
|
||||
request.setCoreValue(coreValue);
|
||||
request.setTangibleValue(tangibleValue);
|
||||
request.setExtendedValue(extendedValue);
|
||||
return request;
|
||||
}
|
||||
|
||||
private JwtUser student() {
|
||||
JwtUser user = new JwtUser();
|
||||
user.setUserId("stu-1");
|
||||
user.setRoleId(4);
|
||||
return user;
|
||||
}
|
||||
|
||||
private JwtUser teacher() {
|
||||
JwtUser user = student();
|
||||
user.setRoleId(3);
|
||||
return user;
|
||||
}
|
||||
}
|
||||
Loading…
Reference in New Issue