diff --git a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/controller/cms/OutdoorFairController.java b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/controller/cms/OutdoorFairController.java index e3545df..df126f7 100644 --- a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/controller/cms/OutdoorFairController.java +++ b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/controller/cms/OutdoorFairController.java @@ -447,6 +447,10 @@ public class OutdoorFairController extends BaseController if (RoleUtils.isCompanyAdmin()) { return AjaxResult.error("企业用户无权新增户外招聘会"); } + String timeValidationError = validateRegistrationDeadline(outdoorFair); + if (timeValidationError != null) { + return AjaxResult.error(timeValidationError); + } fillVenueFields(outdoorFair); boolean saved = outdoorFairService.save(outdoorFair); if (saved) { @@ -468,6 +472,10 @@ public class OutdoorFairController extends BaseController if (RoleUtils.isCompanyAdmin()) { return AjaxResult.error("企业用户无权编辑户外招聘会"); } + String timeValidationError = validateRegistrationDeadline(outdoorFair); + if (timeValidationError != null) { + return AjaxResult.error(timeValidationError); + } OutdoorFair oldFair = outdoorFair.getId() == null ? null : outdoorFairService.getById(outdoorFair.getId()); fillVenueFields(outdoorFair); boolean venueChanged = oldFair == null || !java.util.Objects.equals(oldFair.getVenueId(), outdoorFair.getVenueId()); @@ -1081,6 +1089,17 @@ public class OutdoorFairController extends BaseController return (boothCount != null && boothCount > 0) || (bookingCount != null && bookingCount > 0); } + static String validateRegistrationDeadline(OutdoorFair outdoorFair) + { + if (outdoorFair != null + && outdoorFair.getApplyEndTime() != null + && outdoorFair.getHoldTime() != null + && outdoorFair.getApplyEndTime().after(outdoorFair.getHoldTime())) { + return "报名截止时间不能晚于招聘会举办时间"; + } + return null; + } + /** * 将当前场地模板克隆为招聘会自己的展位图。模板与副本只在这里发生单向复制,之后互不影响。 */ diff --git a/ruoyi-bussiness/src/test/java/com/ruoyi/cms/controller/cms/OutdoorFairControllerTest.java b/ruoyi-bussiness/src/test/java/com/ruoyi/cms/controller/cms/OutdoorFairControllerTest.java index d1d3d23..10580e3 100644 --- a/ruoyi-bussiness/src/test/java/com/ruoyi/cms/controller/cms/OutdoorFairControllerTest.java +++ b/ruoyi-bussiness/src/test/java/com/ruoyi/cms/controller/cms/OutdoorFairControllerTest.java @@ -1,12 +1,15 @@ package com.ruoyi.cms.controller.cms; +import com.ruoyi.cms.domain.OutdoorFair; import org.junit.jupiter.api.Test; import org.springframework.mock.web.MockHttpServletRequest; import java.lang.reflect.Method; +import java.util.Date; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertNotNull; +import static org.junit.jupiter.api.Assertions.assertNull; class OutdoorFairControllerTest { @@ -79,6 +82,30 @@ class OutdoorFairControllerTest buildCompanyH5Url(request, 12L, 34L)); } + @Test + void registrationDeadlineCannotBeAfterFairHoldTime() + { + OutdoorFair fair = fairWithTimes(1_000L, 1_001L); + + assertEquals("报名截止时间不能晚于招聘会举办时间", + OutdoorFairController.validateRegistrationDeadline(fair)); + } + + @Test + void registrationDeadlineCanEqualOrPrecedeFairHoldTime() + { + assertNull(OutdoorFairController.validateRegistrationDeadline(fairWithTimes(1_000L, 1_000L))); + assertNull(OutdoorFairController.validateRegistrationDeadline(fairWithTimes(1_000L, 999L))); + } + + private OutdoorFair fairWithTimes(long holdTime, long applyEndTime) + { + OutdoorFair fair = new OutdoorFair(); + fair.setHoldTime(new Date(holdTime)); + fair.setApplyEndTime(new Date(applyEndTime)); + return fair; + } + private String buildCompanyH5Url(MockHttpServletRequest request, Long fairId, Long companyId) throws Exception {