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.
52 lines
2.4 KiB
Java
52 lines
2.4 KiB
Java
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.FeatureConversionStepOneValidationRequest;
|
|
import com.sztzjy.linkCommerce.entity.dto.FeatureConversionStepOneValidationResult;
|
|
import com.sztzjy.linkCommerce.service.FeatureConversionStepOneService;
|
|
import org.apache.commons.lang3.StringUtils;
|
|
import org.springframework.http.HttpStatus;
|
|
import org.springframework.stereotype.Service;
|
|
|
|
import java.util.List;
|
|
|
|
@Service
|
|
public class FeatureConversionStepOneServiceImpl implements FeatureConversionStepOneService {
|
|
private static final int MIN_ROWS = 8;
|
|
private static final int MAX_ROWS = 12;
|
|
|
|
@Override
|
|
public FeatureConversionStepOneValidationResult validate(FeatureConversionStepOneValidationRequest request, JwtUser user) {
|
|
requireStudent(user);
|
|
List<FeatureConversionStepOneValidationRequest.ConversionRow> rows = request == null ? null : request.getRows();
|
|
if (rows == null || rows.size() < MIN_ROWS || rows.size() > MAX_ROWS || rows.stream().anyMatch(row -> row == null)) {
|
|
throw badRequest("请填写 8 至 12 行需求转化信息");
|
|
}
|
|
if (rows.stream().anyMatch(row -> StringUtils.isBlank(row.getVoice())
|
|
|| StringUtils.isBlank(row.getInsight())
|
|
|| StringUtils.isBlank(row.getDefinition())
|
|
|| StringUtils.isBlank(row.getDescription())
|
|
|| StringUtils.isBlank(row.getAcceptance()))) {
|
|
throw badRequest("请完整填写每行的用户原声、场景洞察、功能定义、功能描述和验收标准");
|
|
}
|
|
FeatureConversionStepOneValidationResult result = new FeatureConversionStepOneValidationResult();
|
|
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 ServiceException badRequest(String message) {
|
|
return new ServiceException(HttpStatus.BAD_REQUEST, message);
|
|
}
|
|
}
|