From 22bed6e1f548bbd4851e8137b97bb7a196c96131 Mon Sep 17 00:00:00 2001 From: chenyuan Date: Thu, 30 Jul 2026 10:15:40 +0800 Subject: [PATCH] fix: preserve school configuration metadata --- .../impl/SchoolProductConfigServiceImpl.java | 1 + .../SchoolProductConfigServiceImplTest.java | 19 +++++++++++++++++++ 2 files changed, 20 insertions(+) diff --git a/src/main/java/com/sztzjy/linkCommerce/service/impl/SchoolProductConfigServiceImpl.java b/src/main/java/com/sztzjy/linkCommerce/service/impl/SchoolProductConfigServiceImpl.java index 46230d8..3ebc3cd 100644 --- a/src/main/java/com/sztzjy/linkCommerce/service/impl/SchoolProductConfigServiceImpl.java +++ b/src/main/java/com/sztzjy/linkCommerce/service/impl/SchoolProductConfigServiceImpl.java @@ -60,6 +60,7 @@ public class SchoolProductConfigServiceImpl implements SchoolProductConfigServic && hasAdministrativeOrganizationData(config.getSchoolId())) { throw new ServiceException(HttpStatus.BAD_REQUEST, "学校已有组织数据,不能直接切换组织模式"); } + config.setCreateTime(current.getCreateTime()); config.setUpdateTime(new Date()); schoolProductConfigMapper.updateByPrimaryKey(config); return getRequiredConfig(config.getSchoolId()); diff --git a/src/test/java/com/sztzjy/linkCommerce/service/impl/SchoolProductConfigServiceImplTest.java b/src/test/java/com/sztzjy/linkCommerce/service/impl/SchoolProductConfigServiceImplTest.java index ce9641a..e954243 100644 --- a/src/test/java/com/sztzjy/linkCommerce/service/impl/SchoolProductConfigServiceImplTest.java +++ b/src/test/java/com/sztzjy/linkCommerce/service/impl/SchoolProductConfigServiceImplTest.java @@ -7,6 +7,8 @@ import com.sztzjy.linkCommerce.mapper.SchoolProductConfigMapper; import com.sztzjy.linkCommerce.mapper.UserinfoMapper; import org.junit.jupiter.api.Test; +import java.util.Date; + import static org.junit.jupiter.api.Assertions.assertFalse; import static org.junit.jupiter.api.Assertions.assertThrows; import static org.junit.jupiter.api.Assertions.assertTrue; @@ -83,6 +85,23 @@ class SchoolProductConfigServiceImplTest { config("school-standard", "TEACHING_CLASS_ONLY", "TEACHER"))); } + @Test + void updateKeepsTheOriginalCreationTime() { + SchoolProductConfigServiceImpl service = new SchoolProductConfigServiceImpl(); + service.schoolProductConfigMapper = mock(SchoolProductConfigMapper.class); + service.schoolClassMapper = mock(SchoolClassMapper.class); + service.userinfoMapper = mock(UserinfoMapper.class); + SchoolProductConfig current = config("school-standard", "ADMIN_CLASS_ENABLED", "SCHOOL_ADMIN"); + Date createdAt = new Date(1000L); + current.setCreateTime(createdAt); + when(service.schoolProductConfigMapper.selectByPrimaryKey("school-standard")).thenReturn(current); + + service.updateConfig(config("school-standard", "ADMIN_CLASS_ENABLED", "SCHOOL_ADMIN")); + + verify(service.schoolProductConfigMapper).updateByPrimaryKey(org.mockito.ArgumentMatchers.argThat(updated -> + createdAt.equals(updated.getCreateTime()))); + } + private SchoolProductConfig config(String schoolId, String organizationMode, String rosterOwner) { SchoolProductConfig config = new SchoolProductConfig(); config.setSchoolId(schoolId);