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.TargetUserProfileStepOneValidationRequest; import com.sztzjy.linkCommerce.entity.dto.TargetUserProfileStepOneValidationResult; import com.sztzjy.linkCommerce.service.TargetUserProfileStepOneService; import org.apache.commons.lang3.StringUtils; import org.springframework.http.HttpStatus; import org.springframework.stereotype.Service; import java.util.Locale; @Service public class TargetUserProfileStepOneServiceImpl implements TargetUserProfileStepOneService { @Override public TargetUserProfileStepOneValidationResult validate(TargetUserProfileStepOneValidationRequest 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.getExcelUrl()) || StringUtils.isBlank(request.getExcelName())) { throw new ServiceException(HttpStatus.BAD_REQUEST, "请上传 RFM 用户分层分析结果 Excel 数据"); } String excelName = request.getExcelName().trim().toLowerCase(Locale.ROOT); if (!excelName.endsWith(".xls") && !excelName.endsWith(".xlsx")) { throw new ServiceException(HttpStatus.BAD_REQUEST, "仅支持 .xls、.xlsx 格式的 Excel 文件"); } if (request.getPreviewRowCount() == null || request.getPreviewRowCount() < 1 || request.getPreviewColumnCount() == null || request.getPreviewColumnCount() < 1) { throw new ServiceException(HttpStatus.BAD_REQUEST, "Excel 文件需要包含可预览的表头和数据"); } TargetUserProfileStepOneValidationResult result = new TargetUserProfileStepOneValidationResult(); result.setValid(true); result.setMessage("校验通过"); return result; } }