fix:修复创建活动失败
This commit is contained in:
parent
f223e9bd41
commit
78cd956ab5
@ -37,12 +37,36 @@ public class ContestServiceImpl extends ServiceImpl<ContestMapper, BizContest> i
|
|||||||
private final ContestRegistrationMapper contestRegistrationMapper;
|
private final ContestRegistrationMapper contestRegistrationMapper;
|
||||||
private final ContestWorkMapper contestWorkMapper;
|
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
|
@Override
|
||||||
public BizContest createContest(CreateContestDto dto, Long creatorId) {
|
public BizContest createContest(CreateContestDto dto, Long creatorId) {
|
||||||
log.info("开始创建赛事,名称:{}", dto.getContestName());
|
log.info("开始创建赛事,名称:{}", dto.getContestName());
|
||||||
|
|
||||||
|
try {
|
||||||
BizContest entity = new BizContest();
|
BizContest entity = new BizContest();
|
||||||
mapDtoToEntity(dto, entity);
|
mapDtoToEntity(dto, entity);
|
||||||
|
|
||||||
@ -56,8 +80,12 @@ public class ContestServiceImpl extends ServiceImpl<ContestMapper, BizContest> i
|
|||||||
entity.setCreator(creatorId != null ? creatorId.intValue() : null);
|
entity.setCreator(creatorId != null ? creatorId.intValue() : null);
|
||||||
|
|
||||||
save(entity);
|
save(entity);
|
||||||
log.info("赛事创建成功,ID:{}", entity.getId());
|
log.info("赛事创建成功,ID:{}, 名称:{}", entity.getId(), entity.getContestName());
|
||||||
return entity;
|
return entity;
|
||||||
|
} catch (Exception e) {
|
||||||
|
log.error("创建赛事失败,名称:{}", dto.getContestName(), e);
|
||||||
|
throw new BusinessException(ErrorCode.INTERNAL_ERROR, "创建赛事失败:" + e.getMessage());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -323,10 +351,10 @@ public class ContestServiceImpl extends ServiceImpl<ContestMapper, BizContest> i
|
|||||||
entity.setAgeMax(dto.getAgeMax());
|
entity.setAgeMax(dto.getAgeMax());
|
||||||
}
|
}
|
||||||
if (StringUtils.hasText(dto.getStartTime())) {
|
if (StringUtils.hasText(dto.getStartTime())) {
|
||||||
entity.setStartTime(LocalDateTime.parse(dto.getStartTime(), DT_FORMATTER));
|
entity.setStartTime(parseDateTime(dto.getStartTime()));
|
||||||
}
|
}
|
||||||
if (StringUtils.hasText(dto.getEndTime())) {
|
if (StringUtils.hasText(dto.getEndTime())) {
|
||||||
entity.setEndTime(LocalDateTime.parse(dto.getEndTime(), DT_FORMATTER));
|
entity.setEndTime(parseDateTime(dto.getEndTime()));
|
||||||
}
|
}
|
||||||
if (StringUtils.hasText(dto.getAddress())) {
|
if (StringUtils.hasText(dto.getAddress())) {
|
||||||
entity.setAddress(dto.getAddress());
|
entity.setAddress(dto.getAddress());
|
||||||
@ -362,10 +390,10 @@ public class ContestServiceImpl extends ServiceImpl<ContestMapper, BizContest> i
|
|||||||
entity.setSponsors(dto.getSponsors());
|
entity.setSponsors(dto.getSponsors());
|
||||||
}
|
}
|
||||||
if (StringUtils.hasText(dto.getRegisterStartTime())) {
|
if (StringUtils.hasText(dto.getRegisterStartTime())) {
|
||||||
entity.setRegisterStartTime(LocalDateTime.parse(dto.getRegisterStartTime(), DT_FORMATTER));
|
entity.setRegisterStartTime(parseDateTime(dto.getRegisterStartTime()));
|
||||||
}
|
}
|
||||||
if (StringUtils.hasText(dto.getRegisterEndTime())) {
|
if (StringUtils.hasText(dto.getRegisterEndTime())) {
|
||||||
entity.setRegisterEndTime(LocalDateTime.parse(dto.getRegisterEndTime(), DT_FORMATTER));
|
entity.setRegisterEndTime(parseDateTime(dto.getRegisterEndTime()));
|
||||||
}
|
}
|
||||||
if (StringUtils.hasText(dto.getRegisterState())) {
|
if (StringUtils.hasText(dto.getRegisterState())) {
|
||||||
entity.setRegisterState(dto.getRegisterState());
|
entity.setRegisterState(dto.getRegisterState());
|
||||||
@ -389,10 +417,10 @@ public class ContestServiceImpl extends ServiceImpl<ContestMapper, BizContest> i
|
|||||||
entity.setSubmitRule(dto.getSubmitRule());
|
entity.setSubmitRule(dto.getSubmitRule());
|
||||||
}
|
}
|
||||||
if (StringUtils.hasText(dto.getSubmitStartTime())) {
|
if (StringUtils.hasText(dto.getSubmitStartTime())) {
|
||||||
entity.setSubmitStartTime(LocalDateTime.parse(dto.getSubmitStartTime(), DT_FORMATTER));
|
entity.setSubmitStartTime(parseDateTime(dto.getSubmitStartTime()));
|
||||||
}
|
}
|
||||||
if (StringUtils.hasText(dto.getSubmitEndTime())) {
|
if (StringUtils.hasText(dto.getSubmitEndTime())) {
|
||||||
entity.setSubmitEndTime(LocalDateTime.parse(dto.getSubmitEndTime(), DT_FORMATTER));
|
entity.setSubmitEndTime(parseDateTime(dto.getSubmitEndTime()));
|
||||||
}
|
}
|
||||||
if (StringUtils.hasText(dto.getWorkType())) {
|
if (StringUtils.hasText(dto.getWorkType())) {
|
||||||
entity.setWorkType(dto.getWorkType());
|
entity.setWorkType(dto.getWorkType());
|
||||||
@ -404,13 +432,13 @@ public class ContestServiceImpl extends ServiceImpl<ContestMapper, BizContest> i
|
|||||||
entity.setReviewRuleId(dto.getReviewRuleId());
|
entity.setReviewRuleId(dto.getReviewRuleId());
|
||||||
}
|
}
|
||||||
if (StringUtils.hasText(dto.getReviewStartTime())) {
|
if (StringUtils.hasText(dto.getReviewStartTime())) {
|
||||||
entity.setReviewStartTime(LocalDateTime.parse(dto.getReviewStartTime(), DT_FORMATTER));
|
entity.setReviewStartTime(parseDateTime(dto.getReviewStartTime()));
|
||||||
}
|
}
|
||||||
if (StringUtils.hasText(dto.getReviewEndTime())) {
|
if (StringUtils.hasText(dto.getReviewEndTime())) {
|
||||||
entity.setReviewEndTime(LocalDateTime.parse(dto.getReviewEndTime(), DT_FORMATTER));
|
entity.setReviewEndTime(parseDateTime(dto.getReviewEndTime()));
|
||||||
}
|
}
|
||||||
if (StringUtils.hasText(dto.getResultPublishTime())) {
|
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("创建成功")
|
message.success("创建成功")
|
||||||
}
|
}
|
||||||
router.push(`/${tenantCode}/contests`)
|
router.push(`/${tenantCode}/contests/list`)
|
||||||
} catch (e: any) {
|
} catch (e: any) {
|
||||||
if (e?.errorFields) return
|
if (e?.errorFields) return
|
||||||
message.error(e?.response?.data?.message || (isEdit.value ? "保存失败" : "创建失败"))
|
message.error(e?.response?.data?.message || (isEdit.value ? "保存失败" : "创建失败"))
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user