feat: validate industry demand analysis step one
parent
50bf9265d5
commit
665e0b8a26
@ -0,0 +1,17 @@
|
||||
package com.sztzjy.linkCommerce.entity.dto;
|
||||
|
||||
public class IndustryDemandAnalysisStepOneValidationRequest {
|
||||
private String political;
|
||||
private String economic;
|
||||
private String social;
|
||||
private String technology;
|
||||
|
||||
public String getPolitical() { return political; }
|
||||
public void setPolitical(String political) { this.political = political; }
|
||||
public String getEconomic() { return economic; }
|
||||
public void setEconomic(String economic) { this.economic = economic; }
|
||||
public String getSocial() { return social; }
|
||||
public void setSocial(String social) { this.social = social; }
|
||||
public String getTechnology() { return technology; }
|
||||
public void setTechnology(String technology) { this.technology = technology; }
|
||||
}
|
||||
@ -0,0 +1,10 @@
|
||||
package com.sztzjy.linkCommerce.entity.dto;
|
||||
|
||||
public class IndustryDemandAnalysisStepOneValidationResult {
|
||||
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.IndustryDemandAnalysisStepOneValidationRequest;
|
||||
import com.sztzjy.linkCommerce.entity.dto.IndustryDemandAnalysisStepOneValidationResult;
|
||||
|
||||
public interface IndustryDemandAnalysisStepOneService {
|
||||
IndustryDemandAnalysisStepOneValidationResult validate(IndustryDemandAnalysisStepOneValidationRequest request, JwtUser user);
|
||||
}
|
||||
@ -0,0 +1,31 @@
|
||||
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.IndustryDemandAnalysisStepOneValidationRequest;
|
||||
import com.sztzjy.linkCommerce.entity.dto.IndustryDemandAnalysisStepOneValidationResult;
|
||||
import com.sztzjy.linkCommerce.service.IndustryDemandAnalysisStepOneService;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.springframework.http.HttpStatus;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
@Service
|
||||
public class IndustryDemandAnalysisStepOneServiceImpl implements IndustryDemandAnalysisStepOneService {
|
||||
@Override
|
||||
public IndustryDemandAnalysisStepOneValidationResult validate(IndustryDemandAnalysisStepOneValidationRequest request, JwtUser user) {
|
||||
requireStudent(user);
|
||||
if (request == null || StringUtils.isBlank(request.getPolitical()) || StringUtils.isBlank(request.getEconomic())
|
||||
|| StringUtils.isBlank(request.getSocial()) || StringUtils.isBlank(request.getTechnology())) {
|
||||
throw new ServiceException(HttpStatus.BAD_REQUEST, "请完整填写政治、经济、社会和技术环境信息");
|
||||
}
|
||||
IndustryDemandAnalysisStepOneValidationResult result = new IndustryDemandAnalysisStepOneValidationResult();
|
||||
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, "仅学生可进行实训校验");
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,40 @@
|
||||
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.IndustryDemandAnalysisStepOneValidationRequest;
|
||||
import com.sztzjy.linkCommerce.entity.dto.IndustryDemandAnalysisStepOneValidationResult;
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
import static org.junit.jupiter.api.Assertions.assertThrows;
|
||||
import static org.junit.jupiter.api.Assertions.assertTrue;
|
||||
|
||||
class IndustryDemandAnalysisStepOneServiceImplTest {
|
||||
@Test
|
||||
void validateAcceptsAllFourPestDimensions() {
|
||||
IndustryDemandAnalysisStepOneServiceImpl service = new IndustryDemandAnalysisStepOneServiceImpl();
|
||||
IndustryDemandAnalysisStepOneValidationResult result = service.validate(completedRequest(), student());
|
||||
assertTrue(result.isValid());
|
||||
}
|
||||
|
||||
@Test
|
||||
void validateRejectsMissingDimensionAndNonStudent() {
|
||||
IndustryDemandAnalysisStepOneServiceImpl service = new IndustryDemandAnalysisStepOneServiceImpl();
|
||||
IndustryDemandAnalysisStepOneValidationRequest missingTechnology = completedRequest();
|
||||
missingTechnology.setTechnology(" ");
|
||||
assertThrows(ServiceException.class, () -> service.validate(missingTechnology, student()));
|
||||
assertThrows(ServiceException.class, () -> service.validate(completedRequest(), teacher()));
|
||||
}
|
||||
|
||||
private IndustryDemandAnalysisStepOneValidationRequest completedRequest() {
|
||||
IndustryDemandAnalysisStepOneValidationRequest request = new IndustryDemandAnalysisStepOneValidationRequest();
|
||||
request.setPolitical("行业相关政策、认证和数据合规要求。");
|
||||
request.setEconomic("市场规模、供应链成本与商业模式信息。");
|
||||
request.setSocial("用户健康管理需求和消费趋势变化。");
|
||||
request.setTechnology("设备互联、AI算法和平台能力信息。");
|
||||
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