feat: validate competitive analysis step one
parent
50bf9265d5
commit
0ac092bc95
@ -0,0 +1,16 @@
|
||||
package com.sztzjy.linkCommerce.entity.dto;
|
||||
|
||||
public class CompetitiveEnvironmentAnalysisStepOneValidationRequest {
|
||||
private String strengths;
|
||||
private String weaknesses;
|
||||
private String opportunities;
|
||||
private String threats;
|
||||
public String getStrengths() { return strengths; }
|
||||
public void setStrengths(String strengths) { this.strengths = strengths; }
|
||||
public String getWeaknesses() { return weaknesses; }
|
||||
public void setWeaknesses(String weaknesses) { this.weaknesses = weaknesses; }
|
||||
public String getOpportunities() { return opportunities; }
|
||||
public void setOpportunities(String opportunities) { this.opportunities = opportunities; }
|
||||
public String getThreats() { return threats; }
|
||||
public void setThreats(String threats) { this.threats = threats; }
|
||||
}
|
||||
@ -0,0 +1,10 @@
|
||||
package com.sztzjy.linkCommerce.entity.dto;
|
||||
|
||||
public class CompetitiveEnvironmentAnalysisStepOneValidationResult {
|
||||
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.CompetitiveEnvironmentAnalysisStepOneValidationRequest;
|
||||
import com.sztzjy.linkCommerce.entity.dto.CompetitiveEnvironmentAnalysisStepOneValidationResult;
|
||||
|
||||
public interface CompetitiveEnvironmentAnalysisStepOneService {
|
||||
CompetitiveEnvironmentAnalysisStepOneValidationResult validate(CompetitiveEnvironmentAnalysisStepOneValidationRequest request, JwtUser user);
|
||||
}
|
||||
@ -0,0 +1,27 @@
|
||||
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.CompetitiveEnvironmentAnalysisStepOneValidationRequest;
|
||||
import com.sztzjy.linkCommerce.entity.dto.CompetitiveEnvironmentAnalysisStepOneValidationResult;
|
||||
import com.sztzjy.linkCommerce.service.CompetitiveEnvironmentAnalysisStepOneService;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.springframework.http.HttpStatus;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
@Service
|
||||
public class CompetitiveEnvironmentAnalysisStepOneServiceImpl implements CompetitiveEnvironmentAnalysisStepOneService {
|
||||
@Override
|
||||
public CompetitiveEnvironmentAnalysisStepOneValidationResult validate(CompetitiveEnvironmentAnalysisStepOneValidationRequest 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.isBlank(request.getStrengths()) || StringUtils.isBlank(request.getWeaknesses())
|
||||
|| StringUtils.isBlank(request.getOpportunities()) || StringUtils.isBlank(request.getThreats())) {
|
||||
throw new ServiceException(HttpStatus.BAD_REQUEST, "请完整填写优势、劣势、机会和威胁四类信息");
|
||||
}
|
||||
CompetitiveEnvironmentAnalysisStepOneValidationResult result = new CompetitiveEnvironmentAnalysisStepOneValidationResult();
|
||||
result.setValid(true);
|
||||
result.setMessage("校验通过");
|
||||
return result;
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,34 @@
|
||||
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.CompetitiveEnvironmentAnalysisStepOneValidationRequest;
|
||||
import com.sztzjy.linkCommerce.entity.dto.CompetitiveEnvironmentAnalysisStepOneValidationResult;
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
import static org.junit.jupiter.api.Assertions.assertThrows;
|
||||
import static org.junit.jupiter.api.Assertions.assertTrue;
|
||||
|
||||
class CompetitiveEnvironmentAnalysisStepOneServiceImplTest {
|
||||
@Test
|
||||
void validateAcceptsAllFourSwotDimensions() {
|
||||
CompetitiveEnvironmentAnalysisStepOneValidationResult result = new CompetitiveEnvironmentAnalysisStepOneServiceImpl().validate(completedRequest(), student());
|
||||
assertTrue(result.isValid());
|
||||
}
|
||||
|
||||
@Test
|
||||
void validateRejectsMissingDimensionAndNonStudent() {
|
||||
CompetitiveEnvironmentAnalysisStepOneValidationRequest missingThreat = completedRequest();
|
||||
missingThreat.setThreats(" ");
|
||||
CompetitiveEnvironmentAnalysisStepOneServiceImpl service = new CompetitiveEnvironmentAnalysisStepOneServiceImpl();
|
||||
assertThrows(ServiceException.class, () -> service.validate(missingThreat, student()));
|
||||
assertThrows(ServiceException.class, () -> service.validate(completedRequest(), teacher()));
|
||||
}
|
||||
|
||||
private CompetitiveEnvironmentAnalysisStepOneValidationRequest completedRequest() {
|
||||
CompetitiveEnvironmentAnalysisStepOneValidationRequest request = new CompetitiveEnvironmentAnalysisStepOneValidationRequest();
|
||||
request.setStrengths("产业集群和渠道资源"); request.setWeaknesses("产品同质化和研发投入不足"); request.setOpportunities("市场增长和消费升级"); request.setThreats("竞争加剧和核心部件成本波动"); 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