fix:修复创建活动失败
This commit is contained in:
parent
f223e9bd41
commit
78cd956ab5
@ -37,27 +37,55 @@ public class ContestServiceImpl extends ServiceImpl<ContestMapper, BizContest> i
|
||||
private final ContestRegistrationMapper contestRegistrationMapper;
|
||||
private final ContestWorkMapper contestWorkMapper;
|
||||
|
||||
private static final DateTimeFormatter DT_FORMATTER = DateTimeFormatter.ISO_LOCAL_DATE_TIME;
|
||||
// 支持两种日期格式:ISO 格式 (T 分隔) 和空格分隔格式
|
||||
private static final DateTimeFormatter ISO_FORMATTER = DateTimeFormatter.ISO_LOCAL_DATE_TIME;
|
||||
private static final DateTimeFormatter SPACE_FORMATTER = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
|
||||
|
||||
/**
|
||||
* 解析日期时间字符串,兼容 ISO 格式和空格分隔格式
|
||||
*/
|
||||
private LocalDateTime parseDateTime(String dateTime) {
|
||||
if (!StringUtils.hasText(dateTime)) {
|
||||
return null;
|
||||
}
|
||||
// 尝试 ISO 格式 (yyyy-MM-ddTHH:mm:ss)
|
||||
try {
|
||||
return LocalDateTime.parse(dateTime, ISO_FORMATTER);
|
||||
} catch (Exception e) {
|
||||
// 尝试空格分隔格式 (yyyy-MM-dd HH:mm:ss)
|
||||
try {
|
||||
return LocalDateTime.parse(dateTime, SPACE_FORMATTER);
|
||||
} catch (Exception ex) {
|
||||
log.warn("日期格式解析失败:{}", dateTime, ex);
|
||||
return null;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public BizContest createContest(CreateContestDto dto, Long creatorId) {
|
||||
log.info("开始创建赛事,名称:{}", dto.getContestName());
|
||||
|
||||
BizContest entity = new BizContest();
|
||||
mapDtoToEntity(dto, entity);
|
||||
try {
|
||||
BizContest entity = new BizContest();
|
||||
mapDtoToEntity(dto, entity);
|
||||
|
||||
// 默认状态
|
||||
entity.setContestState("unpublished");
|
||||
entity.setStatus("ongoing");
|
||||
entity.setResultState("unpublished");
|
||||
if (!StringUtils.hasText(entity.getSubmitRule())) {
|
||||
entity.setSubmitRule("once");
|
||||
// 默认状态
|
||||
entity.setContestState("unpublished");
|
||||
entity.setStatus("ongoing");
|
||||
entity.setResultState("unpublished");
|
||||
if (!StringUtils.hasText(entity.getSubmitRule())) {
|
||||
entity.setSubmitRule("once");
|
||||
}
|
||||
entity.setCreator(creatorId != null ? creatorId.intValue() : null);
|
||||
|
||||
save(entity);
|
||||
log.info("赛事创建成功,ID:{}, 名称:{}", entity.getId(), entity.getContestName());
|
||||
return entity;
|
||||
} catch (Exception e) {
|
||||
log.error("创建赛事失败,名称:{}", dto.getContestName(), e);
|
||||
throw new BusinessException(ErrorCode.INTERNAL_ERROR, "创建赛事失败:" + e.getMessage());
|
||||
}
|
||||
entity.setCreator(creatorId != null ? creatorId.intValue() : null);
|
||||
|
||||
save(entity);
|
||||
log.info("赛事创建成功,ID:{}", entity.getId());
|
||||
return entity;
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -323,10 +351,10 @@ public class ContestServiceImpl extends ServiceImpl<ContestMapper, BizContest> i
|
||||
entity.setAgeMax(dto.getAgeMax());
|
||||
}
|
||||
if (StringUtils.hasText(dto.getStartTime())) {
|
||||
entity.setStartTime(LocalDateTime.parse(dto.getStartTime(), DT_FORMATTER));
|
||||
entity.setStartTime(parseDateTime(dto.getStartTime()));
|
||||
}
|
||||
if (StringUtils.hasText(dto.getEndTime())) {
|
||||
entity.setEndTime(LocalDateTime.parse(dto.getEndTime(), DT_FORMATTER));
|
||||
entity.setEndTime(parseDateTime(dto.getEndTime()));
|
||||
}
|
||||
if (StringUtils.hasText(dto.getAddress())) {
|
||||
entity.setAddress(dto.getAddress());
|
||||
@ -362,10 +390,10 @@ public class ContestServiceImpl extends ServiceImpl<ContestMapper, BizContest> i
|
||||
entity.setSponsors(dto.getSponsors());
|
||||
}
|
||||
if (StringUtils.hasText(dto.getRegisterStartTime())) {
|
||||
entity.setRegisterStartTime(LocalDateTime.parse(dto.getRegisterStartTime(), DT_FORMATTER));
|
||||
entity.setRegisterStartTime(parseDateTime(dto.getRegisterStartTime()));
|
||||
}
|
||||
if (StringUtils.hasText(dto.getRegisterEndTime())) {
|
||||
entity.setRegisterEndTime(LocalDateTime.parse(dto.getRegisterEndTime(), DT_FORMATTER));
|
||||
entity.setRegisterEndTime(parseDateTime(dto.getRegisterEndTime()));
|
||||
}
|
||||
if (StringUtils.hasText(dto.getRegisterState())) {
|
||||
entity.setRegisterState(dto.getRegisterState());
|
||||
@ -389,10 +417,10 @@ public class ContestServiceImpl extends ServiceImpl<ContestMapper, BizContest> i
|
||||
entity.setSubmitRule(dto.getSubmitRule());
|
||||
}
|
||||
if (StringUtils.hasText(dto.getSubmitStartTime())) {
|
||||
entity.setSubmitStartTime(LocalDateTime.parse(dto.getSubmitStartTime(), DT_FORMATTER));
|
||||
entity.setSubmitStartTime(parseDateTime(dto.getSubmitStartTime()));
|
||||
}
|
||||
if (StringUtils.hasText(dto.getSubmitEndTime())) {
|
||||
entity.setSubmitEndTime(LocalDateTime.parse(dto.getSubmitEndTime(), DT_FORMATTER));
|
||||
entity.setSubmitEndTime(parseDateTime(dto.getSubmitEndTime()));
|
||||
}
|
||||
if (StringUtils.hasText(dto.getWorkType())) {
|
||||
entity.setWorkType(dto.getWorkType());
|
||||
@ -404,13 +432,13 @@ public class ContestServiceImpl extends ServiceImpl<ContestMapper, BizContest> i
|
||||
entity.setReviewRuleId(dto.getReviewRuleId());
|
||||
}
|
||||
if (StringUtils.hasText(dto.getReviewStartTime())) {
|
||||
entity.setReviewStartTime(LocalDateTime.parse(dto.getReviewStartTime(), DT_FORMATTER));
|
||||
entity.setReviewStartTime(parseDateTime(dto.getReviewStartTime()));
|
||||
}
|
||||
if (StringUtils.hasText(dto.getReviewEndTime())) {
|
||||
entity.setReviewEndTime(LocalDateTime.parse(dto.getReviewEndTime(), DT_FORMATTER));
|
||||
entity.setReviewEndTime(parseDateTime(dto.getReviewEndTime()));
|
||||
}
|
||||
if (StringUtils.hasText(dto.getResultPublishTime())) {
|
||||
entity.setResultPublishTime(LocalDateTime.parse(dto.getResultPublishTime(), DT_FORMATTER));
|
||||
entity.setResultPublishTime(parseDateTime(dto.getResultPublishTime()));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -431,7 +431,7 @@ const handleSubmit = async () => {
|
||||
}
|
||||
message.success("创建成功")
|
||||
}
|
||||
router.push(`/${tenantCode}/contests`)
|
||||
router.push(`/${tenantCode}/contests/list`)
|
||||
} catch (e: any) {
|
||||
if (e?.errorFields) return
|
||||
message.error(e?.response?.data?.message || (isEdit.value ? "保存失败" : "创建失败"))
|
||||
|
||||
Loading…
Reference in New Issue
Block a user