From 266859de16881380626233c70c482ced5130c7a0 Mon Sep 17 00:00:00 2001 From: chenyuan Date: Tue, 23 Jun 2026 00:00:24 +0800 Subject: [PATCH] fix school admin profile lookup --- .../controller/stu/UserController.java | 42 +++++++++++++++-- .../controller/stu/UserControllerTest.java | 47 +++++++++++++++++++ 2 files changed, 84 insertions(+), 5 deletions(-) create mode 100644 src/test/java/com/sztzjy/linkCommerce/controller/stu/UserControllerTest.java diff --git a/src/main/java/com/sztzjy/linkCommerce/controller/stu/UserController.java b/src/main/java/com/sztzjy/linkCommerce/controller/stu/UserController.java index bedb324..18467ba 100644 --- a/src/main/java/com/sztzjy/linkCommerce/controller/stu/UserController.java +++ b/src/main/java/com/sztzjy/linkCommerce/controller/stu/UserController.java @@ -965,17 +965,17 @@ public class UserController { String schoolFacultyId = userInfo.getSchoolFacultyId(); String schoolMajorId = userInfo.getSchoolMajorId(); - String schoolName = schoolMapper.selectSchoolNameById(schoolId); - String schoolFacultyName = schoolFacultyMapper.selectByPrimaryKey(schoolFacultyId).getSchoolFacultyName(); - String schoolMajorName = schoolMajorMapper.selectByPrimaryKey(schoolMajorId).getSchoolMajorName(); + String schoolName = safeSchoolName(schoolId); + String schoolFacultyName = safeFacultyName(schoolFacultyId); + String schoolMajorName = safeMajorName(schoolMajorId); userInfo.setSchoolId(schoolName); userInfo.setSchoolName(schoolName); userInfo.setSchoolFacultyId(schoolFacultyName); userInfo.setSchoolMajorId(schoolMajorName); - if (userInfo.getRole() == 4) { //查看学生信息 + if (Integer.valueOf(4).equals(userInfo.getRole())) { //查看学生信息 String schoolClassId = userInfo.getSchoolClassId(); - String className = schoolClassMapper.selectByPrimaryKey(schoolClassId).getClassName(); + String className = safeClassName(schoolClassId); userInfo.setSchoolClassId(className); userInfo.setClassName(className); } @@ -983,6 +983,38 @@ public class UserController { return new ResultEntity<>(HttpStatus.OK, "个人中心-查看用户数据成功!",userInfo); } + private String safeSchoolName(String schoolId) { + if (StringUtils.isBlank(schoolId)) { + return ""; + } + String schoolName = schoolMapper.selectSchoolNameById(schoolId); + return schoolName == null ? "" : schoolName; + } + + private String safeFacultyName(String schoolFacultyId) { + if (StringUtils.isBlank(schoolFacultyId)) { + return ""; + } + SchoolFaculty schoolFaculty = schoolFacultyMapper.selectByPrimaryKey(schoolFacultyId); + return schoolFaculty == null ? "" : schoolFaculty.getSchoolFacultyName(); + } + + private String safeMajorName(String schoolMajorId) { + if (StringUtils.isBlank(schoolMajorId)) { + return ""; + } + SchoolMajor schoolMajor = schoolMajorMapper.selectByPrimaryKey(schoolMajorId); + return schoolMajor == null ? "" : schoolMajor.getSchoolMajorName(); + } + + private String safeClassName(String schoolClassId) { + if (StringUtils.isBlank(schoolClassId)) { + return ""; + } + SchoolClass schoolClass = schoolClassMapper.selectByPrimaryKey(schoolClassId); + return schoolClass == null ? "" : schoolClass.getClassName(); + } + @ApiOperation("开放接口,自动同步学生信息") @PostMapping("synchronizationStudentInfoByAuto") @AnonymousAccess diff --git a/src/test/java/com/sztzjy/linkCommerce/controller/stu/UserControllerTest.java b/src/test/java/com/sztzjy/linkCommerce/controller/stu/UserControllerTest.java new file mode 100644 index 0000000..8a2c060 --- /dev/null +++ b/src/test/java/com/sztzjy/linkCommerce/controller/stu/UserControllerTest.java @@ -0,0 +1,47 @@ +package com.sztzjy.linkCommerce.controller.stu; + +import com.sztzjy.linkCommerce.entity.Userinfo; +import com.sztzjy.linkCommerce.mapper.SchoolClassMapper; +import com.sztzjy.linkCommerce.mapper.SchoolFacultyMapper; +import com.sztzjy.linkCommerce.mapper.SchoolMapper; +import com.sztzjy.linkCommerce.mapper.SchoolMajorMapper; +import com.sztzjy.linkCommerce.mapper.UserinfoMapper; +import com.sztzjy.linkCommerce.util.ResultEntity; +import org.junit.jupiter.api.Test; +import org.springframework.http.HttpStatus; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertNotNull; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.verifyNoInteractions; +import static org.mockito.Mockito.when; + +class UserControllerTest { + @Test + void selectPersonInfoAllowsSchoolAdminWithoutFacultyMajorOrClass() { + UserController controller = new UserController(); + controller.userinfoMapper = mock(UserinfoMapper.class); + controller.schoolMapper = mock(SchoolMapper.class); + controller.schoolFacultyMapper = mock(SchoolFacultyMapper.class); + controller.schoolMajorMapper = mock(SchoolMajorMapper.class); + controller.schoolClassMapper = mock(SchoolClassMapper.class); + + Userinfo userinfo = new Userinfo(); + userinfo.setUserId("admin-1"); + userinfo.setRole(2); + userinfo.setSchoolId("school-1"); + + when(controller.userinfoMapper.selectByPrimaryKey("admin-1")).thenReturn(userinfo); + when(controller.schoolMapper.selectSchoolNameById("school-1")).thenReturn("测试学校"); + + ResultEntity result = controller.selectPersonInfo("admin-1"); + + assertEquals(HttpStatus.OK, result.getStatusCode()); + assertNotNull(result.getBody()); + assertEquals("测试学校", result.getBody().getData().getSchoolId()); + assertEquals("测试学校", result.getBody().getData().getSchoolName()); + assertEquals("", result.getBody().getData().getSchoolFacultyId()); + assertEquals("", result.getBody().getData().getSchoolMajorId()); + verifyNoInteractions(controller.schoolFacultyMapper, controller.schoolMajorMapper, controller.schoolClassMapper); + } +}