feat: restrict teacher class roster

main
chenyuan 4 weeks ago
parent 3e192621ab
commit 36fad32043

@ -455,7 +455,14 @@ public class UserController {
@ApiParam("学校ID") @RequestParam(required = false) String schoolId,
@ApiParam("专业ID-学校管理员使用") @RequestParam(required = false) String schoolMajorId,
@ApiParam("班级名称") @RequestParam(required = false) String className,
@ApiParam("班级编号") @RequestParam(required = false) String classSn) {
@ApiParam("班级编号") @RequestParam(required = false) String classSn,
@RequestParam(required = false) String operatorId) {
Userinfo operator = StringUtils.isBlank(operatorId) ? null : userinfoMapper.selectByPrimaryKey(operatorId);
if (isSchoolTeacher(operator) && isTeacherRosterMode(operator.getSchoolId())) {
PageInfo<SchoolClassDto> pageInfo = schoolService.seleteSchoolClass(index, size, operator.getSchoolId(),
className, classSn, null, operatorId, "TEACHING");
return new ResultEntity<>(HttpStatus.OK, "班级管理-查询成功", pageInfo);
}
PageInfo<SchoolClassDto> pageInfo = schoolService.seleteSchoolClass(index, size, schoolId, className, classSn, schoolMajorId);
return new ResultEntity<>(HttpStatus.OK, "班级管理-查询成功", pageInfo);
}
@ -1223,9 +1230,6 @@ public class UserController {
student.setName(name);
student.setUsername(username);
student.setPassword("123qwe");
student.setSex(StringUtils.trimToEmpty(row.getSex()));
student.setPhone(StringUtils.trimToEmpty(row.getPhone()));
student.setEmail(StringUtils.trimToEmpty(row.getEmail()));
student.setRole(4);
student.setTeacherAdmin(false);
student.setSchoolId(operator.getSchoolId());

@ -3,25 +3,13 @@ package com.sztzjy.linkCommerce.entity.importDto;
import com.alibaba.excel.annotation.ExcelProperty;
public class TeacherRosterStudentImportDTO {
@ExcelProperty("姓名")
@ExcelProperty("学生姓名")
private String name;
@ExcelProperty("学号")
private String username;
@ExcelProperty("性别")
private String sex;
@ExcelProperty("手机")
private String phone;
@ExcelProperty("邮箱")
private String email;
public String getName() { return name; }
public void setName(String name) { this.name = name; }
public String getUsername() { return username; }
public void setUsername(String username) { this.username = username; }
public String getSex() { return sex; }
public void setSex(String sex) { this.sex = sex; }
public String getPhone() { return phone; }
public void setPhone(String phone) { this.phone = phone; }
public String getEmail() { return email; }
public void setEmail(String email) { this.email = email; }
}

@ -21,6 +21,9 @@ public interface SchoolService {
PageInfo<SchoolClassDto> seleteSchoolClass(Integer index, Integer size, String schoolId, String className, String classSn, String schoolMajorId);
PageInfo<SchoolClassDto> seleteSchoolClass(Integer index, Integer size, String schoolId, String className,
String classSn, String schoolMajorId, String createdBy, String classType);
boolean existsBySchoolMajorName(String schoolName,String schoolMajorName, String schoolFacultyName);
boolean existsBySchoolClassName(String schoolName, String schoolMajorName, String schoolFacultyName, String schoolClassName);

@ -102,6 +102,12 @@ public class SchoolServiceImpl implements SchoolService {
@Override
public PageInfo<SchoolClassDto> seleteSchoolClass(Integer index, Integer size, String schoolId, String className, String classSn, String schoolMajorId) {
return seleteSchoolClass(index, size, schoolId, className, classSn, schoolMajorId, null, null);
}
@Override
public PageInfo<SchoolClassDto> seleteSchoolClass(Integer index, Integer size, String schoolId, String className,
String classSn, String schoolMajorId, String createdBy, String classType) {
PageHelper.startPage(index, size);
// 查询院系信息,假设您有相应的 DAO 或 Mapper 可以用来执行查询
@ -117,6 +123,12 @@ public class SchoolServiceImpl implements SchoolService {
if (StringUtils.isNotBlank(schoolMajorId)) {
criteria.andSchoolMajorIdEqualTo(schoolMajorId);
}
if (StringUtils.isNotBlank(createdBy)) {
criteria.andCreatedByEqualTo(createdBy);
}
if (StringUtils.isNotBlank(classType)) {
criteria.andClassTypeEqualTo(classType);
}
List<SchoolClass> schoolClasses = schoolClassMapper.selectByExample(schoolClassExample);
// 将院系信息转换为 DTO

@ -60,6 +60,7 @@ class TaskAllocationControllerTest {
TaskAllocationController controller = controllerWithMocks();
SchoolClass schoolClass = new SchoolClass();
schoolClass.setSchoolClassId("teaching-1");
schoolClass.setSchoolId("school-1");
schoolClass.setCreatedBy("teacher-1");
schoolClass.setClassType("TEACHING");
when(controller.schoolClassMapper.selectByPrimaryKey("teaching-1")).thenReturn(schoolClass);
@ -72,10 +73,15 @@ class TaskAllocationControllerTest {
ArgumentCaptor<TaskAllocation> captor = ArgumentCaptor.forClass(TaskAllocation.class);
assertEquals(HttpStatus.OK, result.getStatusCode());
verify(controller.taskAllocationMapper).deleteByExample(any());
verify(controller.taskAllocationMapper).insert(captor.capture());
assertNotNull(captor.getValue().getId());
assertEquals("teaching-1", captor.getValue().getClassId());
assertEquals("school-1", captor.getValue().getSchoolId());
verify(controller.taskAllocationMapper, org.mockito.Mockito.times(2)).insert(captor.capture());
List<TaskAllocation> inserted = captor.getAllValues();
assertNotNull(inserted.get(0).getId());
assertEquals(TaskAllocation.PUBLICATION_MARKER, inserted.get(0).getModule());
assertEquals((byte) 1, inserted.get(0).getDisabledStatus());
assertEquals("任务A", inserted.get(1).getModule());
assertEquals((byte) 0, inserted.get(1).getDisabledStatus());
assertEquals("teaching-1", inserted.get(1).getClassId());
assertEquals("school-1", inserted.get(1).getSchoolId());
}
@Test

@ -19,6 +19,7 @@ import java.util.Collections;
import java.util.Arrays;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertNull;
import static org.junit.jupiter.api.Assertions.assertTrue;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.Mockito.mock;
@ -65,6 +66,12 @@ class TeacherRosterImportTest {
ResultEntity result = controller.importTeacherRosterRows(Collections.singletonList(row), "teach-1", "teacher-1");
assertEquals(HttpStatus.OK, result.getStatusCode());
ArgumentCaptor<Userinfo> student = ArgumentCaptor.forClass(Userinfo.class);
verify(controller.userinfoMapper).insertSelective(student.capture());
assertNull(student.getValue().getSex());
assertNull(student.getValue().getPhone());
assertNull(student.getValue().getEmail());
assertEquals(2, TeacherRosterStudentImportDTO.class.getDeclaredFields().length);
ArgumentCaptor<TeachingClassStudent> membership = ArgumentCaptor.forClass(TeachingClassStudent.class);
verify(controller.teachingClassStudentMapper).insertSelective(membership.capture());
assertEquals("teach-1", membership.getValue().getTeachingClassId());

@ -0,0 +1,41 @@
package com.sztzjy.linkCommerce.service.impl;
import com.sztzjy.linkCommerce.entity.SchoolClassExample;
import com.sztzjy.linkCommerce.mapper.SchoolClassMapper;
import com.sztzjy.linkCommerce.mapper.SchoolFacultyMapper;
import com.sztzjy.linkCommerce.mapper.SchoolMajorMapper;
import com.sztzjy.linkCommerce.mapper.SchoolMapper;
import com.sztzjy.linkCommerce.mapper.UserinfoMapper;
import org.junit.jupiter.api.Test;
import org.mockito.ArgumentCaptor;
import java.util.Collections;
import static org.junit.jupiter.api.Assertions.assertTrue;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
class SchoolServiceImplTest {
@Test
void classQueryCanRestrictResultsToTheOwningTeacherTeachingClasses() {
SchoolServiceImpl service = new SchoolServiceImpl();
service.schoolMapper = mock(SchoolMapper.class);
service.schoolFacultyMapper = mock(SchoolFacultyMapper.class);
service.schoolMajorMapper = mock(SchoolMajorMapper.class);
service.schoolClassMapper = mock(SchoolClassMapper.class);
service.userinfoMapper = mock(UserinfoMapper.class);
when(service.schoolClassMapper.selectByExample(org.mockito.ArgumentMatchers.any(SchoolClassExample.class)))
.thenReturn(Collections.emptyList());
service.seleteSchoolClass(1, 10, "school-1", "", "", "", "teacher-1", "TEACHING");
ArgumentCaptor<SchoolClassExample> example = ArgumentCaptor.forClass(SchoolClassExample.class);
verify(service.schoolClassMapper).selectByExample(example.capture());
assertTrue(example.getValue().getOredCriteria().get(0).getAllCriteria().stream()
.anyMatch(c -> "created_by =".equals(c.getCondition()) && "teacher-1".equals(c.getValue())));
assertTrue(example.getValue().getOredCriteria().get(0).getAllCriteria().stream()
.anyMatch(c -> "class_type =".equals(c.getCondition()) && "TEACHING".equals(c.getValue())));
}
}
Loading…
Cancel
Save