Explorar o código

查询老师分部下所有学生-完成

hgw %!s(int64=3) %!d(string=hai) anos
pai
achega
6e8cd9634c

+ 10 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/TeacherDao.java

@@ -1,5 +1,7 @@
 package com.ym.mec.biz.dal.dao;
 
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.ym.mec.auth.api.entity.SysUser;
 import com.ym.mec.biz.dal.dto.*;
 import com.ym.mec.biz.dal.entity.CourseHomework;
@@ -519,4 +521,12 @@ public interface TeacherDao extends BaseDAO<Integer, Teacher> {
     int countTeacherBasicInfo(Map<String, Object> params);
 
     List<SysUserDto> queryTeacherBasicInfo(Map<String, Object> params);
+
+    /**
+     * 查询老师主分部下所有学生
+     *
+     * @param param 参数
+     *              <p>  search 模糊搜索
+     */
+    <T> IPage<T> getStudentsByTeacherOrgan(Page<T> page, @Param("param") Map<String, Object> param);
 }

+ 2 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/StudentRepairService.java

@@ -24,6 +24,8 @@ public interface StudentRepairService extends BaseService<Integer, StudentRepair
      *
      * @param param 参数
      *              <p>  search 模糊搜索
+     *              <p> -page 页数
+     *              <p> -rows 每页数量
      */
     PageInfo<BasicUserDto> getStudentsByTeacherOrgan(Map<String, Object> param);
 

+ 49 - 18
mec-biz/src/main/java/com/ym/mec/biz/service/TeacherService.java

@@ -9,8 +9,6 @@ import com.ym.mec.common.page.PageInfo;
 import com.ym.mec.common.page.QueryInfo;
 import com.ym.mec.common.service.BaseService;
 
-import org.apache.ibatis.annotations.Param;
-
 import java.math.BigDecimal;
 import java.util.List;
 import java.util.Map;
@@ -19,24 +17,28 @@ public interface TeacherService extends BaseService<Integer, Teacher> {
 
     /**
      * 新增教师
+     *
      * @param teacher
      */
     int add(Teacher teacher) throws Exception;
 
     /**
      * 修改教师信息(不包含离职日期等信息)
+     *
      * @param teacher
      */
     void updateTea1(Teacher teacher);
 
     /**
      * 修改教师信息
+     *
      * @param teacher
      */
     void updateTea(Teacher teacher);
 
     /**
      * 分页查询教师列表
+     *
      * @param queryInfo
      * @return
      */
@@ -44,6 +46,7 @@ public interface TeacherService extends BaseService<Integer, Teacher> {
 
     /**
      * 获取教师详情
+     *
      * @param id
      * @return
      */
@@ -58,14 +61,16 @@ public interface TeacherService extends BaseService<Integer, Teacher> {
 
     /**
      * 获取教师所在群组列表
+     *
      * @param userId
      * @param search
      * @return
      */
-    List<ImGroupModel> queryTeacherGroups(Integer userId,String search);
+    List<ImGroupModel> queryTeacherGroups(Integer userId, String search);
 
     /**
      * 获取教师通讯录
+     *
      * @param id
      * @param search
      * @return
@@ -74,6 +79,7 @@ public interface TeacherService extends BaseService<Integer, Teacher> {
 
     /**
      * 获取教师通讯录
+     *
      * @param id
      * @param search
      * @return
@@ -82,6 +88,7 @@ public interface TeacherService extends BaseService<Integer, Teacher> {
 
     /**
      * 获取教师通讯录学员列表
+     *
      * @param id
      * @param search
      * @return
@@ -90,39 +97,42 @@ public interface TeacherService extends BaseService<Integer, Teacher> {
 
     /**
      * 查询分部所有老师
+     *
      * @param organId
      * @return
      */
     List<TeacherBasicDto> findTeachers(String organId);
 
     /**
+     * @param subjectId: 科目编号
+     * @return java.util.List<com.ym.mec.biz.dal.entity.Teacher>
      * @describe 根据科目获取部门下的教师
      * @author Joburgess
      * @date 2019/11/4
-     * @param subjectId: 科目编号
-     * @return java.util.List<com.ym.mec.biz.dal.entity.Teacher>
      */
     List<Teacher> findOrganTeacherBySubject(Integer subjectId);
 
     /**
      * 获取教师上课结算列表
+     *
      * @param queryInfo
      * @return
      */
     PageInfo<TeacherCloseDto> queryCloses(TeacherCloseQueryInfo queryInfo);
 
     /**
+     * @param musicGroupId:
+     * @return java.util.List<com.ym.mec.biz.dal.dto.BasicUserDto>
      * @describe 获取乐团下的老师
      * @author Joburgess
      * @date 2019/10/19
-     * @param musicGroupId:
-     * @return java.util.List<com.ym.mec.biz.dal.dto.BasicUserDto>
      */
     List<BasicUserDto> queryMusicGroupTeacher(String musicGroupId);
 
 
     /**
      * 获取老师未结算课酬总额
+     *
      * @param teacherId
      * @return
      */
@@ -130,6 +140,7 @@ public interface TeacherService extends BaseService<Integer, Teacher> {
 
     /**
      * 获取乐团详情老师列表
+     *
      * @param queryInfo
      * @return
      */
@@ -137,6 +148,7 @@ public interface TeacherService extends BaseService<Integer, Teacher> {
 
     /**
      * 获取教师上课记录列表(乐团管理--乐团详情)
+     *
      * @param queryInfo
      * @return
      */
@@ -144,6 +156,7 @@ public interface TeacherService extends BaseService<Integer, Teacher> {
 
     /**
      * 获取乐团学员的报名列表
+     *
      * @param queryInfo
      * @return
      */
@@ -151,13 +164,15 @@ public interface TeacherService extends BaseService<Integer, Teacher> {
 
     /**
      * 获取分部下教师
+     *
      * @param organId
      * @return
      */
-    List<Teacher> findTeacherByOrganId(String organId,String subjectIds,String jobNature);
+    List<Teacher> findTeacherByOrganId(String organId, String subjectIds, String jobNature);
 
     /**
      * 分页获取教师列表
+     *
      * @param queryInfo
      * @return
      */
@@ -165,6 +180,7 @@ public interface TeacherService extends BaseService<Integer, Teacher> {
 
     /**
      * 获取教师布置的作业
+     *
      * @param courseScheduleId
      * @return
      */
@@ -172,52 +188,67 @@ public interface TeacherService extends BaseService<Integer, Teacher> {
 
     /**
      * 获取教务端通讯录
+     *
      * @param id
      * @param search
      * @return
      */
     List<BasicUserDto> queryEducationIpa(Integer id, String search);
-    
+
     /**
      * 实名认证
-     * @param userId 用户编号
-     * @param realName 姓名
-     * @param idcardNo 身份证号码
+     *
+     * @param userId         用户编号
+     * @param realName       姓名
+     * @param idcardNo       身份证号码
      * @param idcardFrontImg 身份证正面
-     * @param idcardBackImg 身份证反面
-     * @param idcardHandImg 手持身份照
+     * @param idcardBackImg  身份证反面
+     * @param idcardHandImg  手持身份照
      * @return
      */
-	boolean realNameAuthentication(Integer userId, String realName, String idcardNo, String idcardFrontImg, String idcardBackImg, String idcardHandImg);
+    boolean realNameAuthentication(Integer userId, String realName, String idcardNo, String idcardFrontImg, String idcardBackImg, String idcardHandImg);
 
     /**
      * 获取和当前指导老师关联的学员
+     *
      * @return
      */
     PageInfo<BasicUserDto> queryStudent(QueryInfo queryInfo);
-    
+
     /**
      * 查询老师默认课酬
+     *
      * @param organIdList
      * @return
      */
     List<TeacherDefaultSalaryDto> queryTeacherDefaultSalary(String organIdList);
 
     /**
+     * @param queryInfo:
+     * @return com.ym.mec.common.page.PageInfo<com.ym.mec.biz.dal.dto.TeacherMusicStudentOverViewDto>
      * @describe 查询教师关联的乐团预览信息
      * @author Joburgess
      * @date 2021/8/12 0012
-     * @param queryInfo:
-     * @return com.ym.mec.common.page.PageInfo<com.ym.mec.biz.dal.dto.TeacherMusicStudentOverViewDto>
      */
     PageInfo<TeacherMusicStudentOverViewDto> queryTeacherMusicStudentOverView(TeacherServeQueryInfo queryInfo);
 
     /**
      * 查询分部下教师关联的会员数据
+     *
      * @param queryInfo
      * @return
      */
     PageInfo<TeacherStudentDataDto> queryMemberStudentData(TeacherServeQueryInfo queryInfo);
 
     PageInfo<SysUserDto> queryTeacherBasicInfo(UserBasicQueryInfo queryInfo);
+
+    /**
+     * 查询老师主分部下所有学生
+     *
+     * @param param 参数
+     *              <p>  search 模糊搜索
+     *              <p> -page 页数
+     *              <p> -rows 每页数量
+     */
+    PageInfo<BasicUserDto> getStudentsByTeacherOrgan(Map<String, Object> param);
 }

+ 4 - 2
mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentRepairServiceImpl.java

@@ -149,12 +149,14 @@ public class StudentRepairServiceImpl extends BaseServiceImpl<Integer, StudentRe
      *
      * @param param 参数
      *              <p>  search 模糊搜索
+     *              <p> -page 页数
+     *              <p> -rows 每页数量
      */
     @Override
     public PageInfo<BasicUserDto> getStudentsByTeacherOrgan(Map<String, Object> param) {
         SysUser sysUser = getSysUser();
-        Teacher teacher = teacherService.get(sysUser.getId());
-        return null;
+        param.put("teacherId",sysUser.getId());
+        return teacherService.getStudentsByTeacherOrgan(param);
     }
 
     private SysUser getSysUser() {

+ 783 - 763
mec-biz/src/main/java/com/ym/mec/biz/service/impl/TeacherServiceImpl.java

@@ -16,8 +16,10 @@ import java.util.Objects;
 import java.util.Set;
 import java.util.stream.Collectors;
 
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.ym.mec.biz.dal.dto.*;
 import com.ym.mec.biz.dal.page.*;
+import com.ym.mec.common.page.PageUtil;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.data.redis.core.RedisTemplate;
@@ -74,784 +76,802 @@ import com.ym.mec.util.date.DateUtil;
 import com.ym.mec.util.idcard.IdcardValidator;
 
 @Service
-public class TeacherServiceImpl extends BaseServiceImpl<Integer, Teacher>  implements TeacherService {
-
-	@Autowired
-	private TeacherDao teacherDao;
-	@Autowired
-	private SubjectDao subjectDao;
-	@Autowired
-	private ClassGroupDao classGroupDao;
-	@Autowired
-	private ClassGroupService classGroupService;
-	@Autowired
-	private MusicGroupDao musicGroupDao;
-	@Autowired
-	private StudentRegistrationDao studentRegistrationDao;
-	@Autowired
-	private DemoGroupDao demoGroupDao;
-	@Autowired
-	private OrganizationDao organizationDao;
-	@Autowired
-	private SchoolDao schoolDao;
-	@Autowired
-	private SysUserCashAccountDao sysUserCashAccountDao;
-	@Autowired
-	private StudentPaymentOrderDao studentPaymentOrderDao;
-	@Autowired
-	private ImFeignService imFeignService;
-	@Autowired
-	private ImGroupDao imGroupDao ;
-	@Autowired
-	private StudentExtracurricularExercisesSituationDao studentExtracurricularExercisesSituationDao;
-	@Autowired
-	private StudentDao studentDao;
-	@Autowired
-	private ImUserFriendDao imUserFriendDao;
-	@Autowired
-	private RedisTemplate<String,String> redisTemplate;
-	@Autowired
-	private CloudTeacherDao cloudTeacherDao;
-	@Autowired
-	private TenantInfoService tenantInfoService;
+public class TeacherServiceImpl extends BaseServiceImpl<Integer, Teacher> implements TeacherService {
+
+    @Autowired
+    private TeacherDao teacherDao;
+    @Autowired
+    private SubjectDao subjectDao;
+    @Autowired
+    private ClassGroupDao classGroupDao;
+    @Autowired
+    private ClassGroupService classGroupService;
+    @Autowired
+    private MusicGroupDao musicGroupDao;
+    @Autowired
+    private StudentRegistrationDao studentRegistrationDao;
+    @Autowired
+    private DemoGroupDao demoGroupDao;
+    @Autowired
+    private OrganizationDao organizationDao;
+    @Autowired
+    private SchoolDao schoolDao;
+    @Autowired
+    private SysUserCashAccountDao sysUserCashAccountDao;
+    @Autowired
+    private StudentPaymentOrderDao studentPaymentOrderDao;
+    @Autowired
+    private ImFeignService imFeignService;
+    @Autowired
+    private ImGroupDao imGroupDao;
+    @Autowired
+    private StudentExtracurricularExercisesSituationDao studentExtracurricularExercisesSituationDao;
+    @Autowired
+    private StudentDao studentDao;
+    @Autowired
+    private ImUserFriendDao imUserFriendDao;
+    @Autowired
+    private RedisTemplate<String, String> redisTemplate;
+    @Autowired
+    private CloudTeacherDao cloudTeacherDao;
+    @Autowired
+    private TenantInfoService tenantInfoService;
 
     @Autowired
     private RealnameAuthenticationPluginContext realnameAuthenticationPluginContext;
 
-	@Override
-	public BaseDAO<Integer, Teacher> getDAO() {
-		return teacherDao;
-	}
-
-	@Override
-	@Transactional(rollbackFor = Exception.class)
-	public int add(Teacher teacher) throws Exception {
-		SysUser user = teacherDao.getUserWithPhone(teacher.getPhone());
-		if(user != null && user.getId() != null){
-			EmployeeServiceImpl.checkTenantId(teacher.getTenantId(),user.getTenantId());
-			if(user.getUserType().contains("TEACHER")){
-				throw new BizException("此手机号已被占用");
-			}
-			Integer id = user.getId();
-			Teacher teacher1 = teacherDao.get(id);
-			if(teacher1 == null || teacher1.getId() == null){
-				teacher.setId(id);
-				teacher.setDelFlag(YesOrNoEnum.NO);
-				teacherDao.insert(teacher);
-				teacher.setOrganId(null);
-				teacher.setUserType(user.getUserType() + ",TEACHER");
-				teacherDao.updateUser(teacher);
-			}else {
-				throw new BizException("用户已存在");
-			}
-			return id;
-		}
-		if(Objects.nonNull(teacher.getEntryDate())&&Objects.nonNull(teacher.getFormalStaffDate())){
-			if(teacher.getEntryDate().compareTo(teacher.getFormalStaffDate())>0){
-				throw new BizException("入职日期不可晚于转正日期");
-			}
-		}
-		teacher.setUserType("TEACHER");
-		teacher.setUsername(teacher.getRealName());
-		teacherDao.addSysUser(teacher);
-		//添加用户现金账户
-		sysUserCashAccountDao.insert(new SysUserCashAccount(teacher.getId(),"CNY"));
-		//添加用户电子签章账户
+    @Override
+    public BaseDAO<Integer, Teacher> getDAO() {
+        return teacherDao;
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public int add(Teacher teacher) throws Exception {
+        SysUser user = teacherDao.getUserWithPhone(teacher.getPhone());
+        if (user != null && user.getId() != null) {
+            EmployeeServiceImpl.checkTenantId(teacher.getTenantId(), user.getTenantId());
+            if (user.getUserType().contains("TEACHER")) {
+                throw new BizException("此手机号已被占用");
+            }
+            Integer id = user.getId();
+            Teacher teacher1 = teacherDao.get(id);
+            if (teacher1 == null || teacher1.getId() == null) {
+                teacher.setId(id);
+                teacher.setDelFlag(YesOrNoEnum.NO);
+                teacherDao.insert(teacher);
+                teacher.setOrganId(null);
+                teacher.setUserType(user.getUserType() + ",TEACHER");
+                teacherDao.updateUser(teacher);
+            } else {
+                throw new BizException("用户已存在");
+            }
+            return id;
+        }
+        if (Objects.nonNull(teacher.getEntryDate()) && Objects.nonNull(teacher.getFormalStaffDate())) {
+            if (teacher.getEntryDate().compareTo(teacher.getFormalStaffDate()) > 0) {
+                throw new BizException("入职日期不可晚于转正日期");
+            }
+        }
+        teacher.setUserType("TEACHER");
+        teacher.setUsername(teacher.getRealName());
+        teacherDao.addSysUser(teacher);
+        //添加用户现金账户
+        sysUserCashAccountDao.insert(new SysUserCashAccount(teacher.getId(), "CNY"));
+        //添加用户电子签章账户
 //		contractService.register(teacher.getId(), user.getRealName(), user.getIdCardNo(), user.getPhone());
-		teacherDao.insert(teacher);
-		ImResult imResult = imFeignService.register(new ImUserModel(teacher.getId().toString(), teacher.getUsername(), null));
-		if(imResult != null){
-			teacher.setImToken(imResult.getToken());
-			teacherDao.updateUser(teacher);
-		}
-		return teacher.getId();
-	}
-
-	@Override
-	@Transactional(rollbackFor = Exception.class)
-	public void updateTea1(Teacher teacher) {
-		Teacher teacher1 = teacherDao.get(teacher.getId());
-		if(null==teacher1){
-			throw new BizException("教师信息不存在");
-		}
-
-		if(StringUtils.isNotEmpty(teacher.getPhone())){
-			SysUser sysUser = teacherDao.getUserWithPhone(teacher.getPhone());
-			if(sysUser != null && !sysUser.getId().equals(teacher.getId())){
-				throw new BizException("手机号已存在");
-			}
-		}
-
-		// 同步更新机构手机号 如果它存在
-		SysUser user = teacherDao.getUser(teacher.getId()); // 138 -> 159
-		if (!Objects.equals(user.getPhone(), teacher1.getPhone())) {
-			tenantInfoService.updatePhone(teacher1.getPhone(), user.getPhone());
-		}
-
-		if(Objects.nonNull(teacher.getEntryDate())&&Objects.nonNull(teacher.getFormalStaffDate())){
-			if(teacher.getEntryDate().compareTo(teacher.getFormalStaffDate())>0){
-				throw new BizException("入职日期不可晚于转正日期");
-			}
-		}
-		teacher.setUpdateTime(new Date());
-		teacher.setTeacherOrganId(teacher.getOrganId());
-		teacherDao.update(teacher);
-		teacher.setOrganId(null);
-		teacherDao.updateUser(teacher);
-		imGroupDao.updateNickname(teacher.getId(),teacher.getRealName());
-		imGroupDao.updateUserFriendNickname(teacher.getId(),teacher.getRealName());
-		imFeignService.update(new ImUserModel(teacher.getId().toString(),teacher.getRealName(),teacher.getAvatar()));
-	}
-
-	@Override
-	@Transactional(rollbackFor = Exception.class)
-	public void updateTea(Teacher teacher) {
-		Teacher teacher1 = teacherDao.get(teacher.getId());
-		if(null==teacher1){
-			throw new BizException("教师信息不存在");
-		}
-		if(StringUtils.isNotEmpty(teacher.getPhone())){
-			SysUser sysUser = teacherDao.getUserWithPhone(teacher.getPhone());
-			if(sysUser != null && !sysUser.getId().equals(teacher.getId())){
-				throw new BizException("手机号已存在");
-			}
-		}
-		// 同步更新机构手机号 如果它存在
-		SysUser user = teacherDao.getUser(teacher.getId());
-		if (!Objects.equals(user.getPhone(), teacher1.getPhone())) {
-			tenantInfoService.updatePhone(teacher1.getPhone(), user.getPhone());
-		}
-
-		if(Objects.nonNull(teacher.getEntryDate())&&Objects.nonNull(teacher.getFormalStaffDate())){
-			if(teacher.getEntryDate().compareTo(teacher.getFormalStaffDate())>0){
-				throw new BizException("入职日期不可晚于转正日期");
-			}
-		}
-		teacher.setUpdateTime(new Date());
-		teacher.setTeacherOrganId(teacher.getOrganId());
-		teacherDao.eduUpdateTeacher(teacher);
-		teacher.setOrganId(null);
-		teacherDao.updateUser(teacher);
-		imGroupDao.updateNickname(teacher.getId(),teacher.getRealName());
-		imGroupDao.updateUserFriendNickname(teacher.getId(),teacher.getRealName());
-		imFeignService.update(new ImUserModel(teacher.getId().toString(),teacher.getRealName(),teacher.getAvatar()));
-	}
-
-	@Override
-	public void deleteTeacher(Long userId) {
-		SysUser sysUser=new SysUser();
-		sysUser.setId(userId.intValue());
-		sysUser.setDelFlag(YesOrNoEnum.YES);
-		teacherDao.updateUser(sysUser);
-	}
-
-	@Override
-	public List<ImGroupModel> queryTeacherGroups(Integer userId,String search) {
-		//获取教师所在班级列表
-		List<ImGroupModel> imGroupModels =  classGroupDao.queryTeacherGroups(userId,search);
-		if(imGroupModels != null && imGroupModels.size() > 0){
-			imGroupModels.forEach(e -> {
-				e.setCount(classGroupService.findGroupUsers(Integer.parseInt(e.getId()),null).size());
-			});
-		}
-		return imGroupModels;
-	}
-
-	@Override
-	public List<BasicUserDto> queryGroupStudentList(Integer teacherId, String search) {
-		//获取关联的学员列表
-		Set<Integer> studentIds = teacherDao.queryCourseClassStudentIds(teacherId);
-		List<BasicUserDto> teachers = new ArrayList<>();
-		if(studentIds.size() > 0){
-			teachers.addAll(teacherDao.queryTeacherBaseInfo(studentIds,search));
-		}
-		return teachers.stream().distinct().collect(Collectors.toList());
-	}
-
-	@Override
-	public List<BasicUserDto> queryGroupStudents(Integer teacherId, String search) {
-		//获取关联的学员列表
-		Set<Integer> studentIds = teacherDao.queryCourseClassStudentIds(teacherId);
-		//获取关联的老师列表
-		studentIds.addAll(teacherDao.queryCourseClassTeacherIds(teacherId));
-		//获取关联的乐团的管理老师
-		List<String> musicLeaderIds = teacherDao.queryMusicLeaderIds(teacherId);
-		musicLeaderIds.removeAll(Collections.singleton(null));
-		if(musicLeaderIds.size() > 0){
-			Set<String> leaderIds = new HashSet<>();
-			musicLeaderIds.forEach(e->{
-				leaderIds.addAll(Arrays.asList(e.split(",")));
-			});
-			leaderIds.forEach(e->{
-				studentIds.add(Integer.valueOf(e));
-			});
-		}
-		studentIds.removeAll(Collections.singleton(null));
-		List<ImGroupModel> musicGroups =  musicGroupDao.queryTeacherGroups(teacherId,search);
-		List<BasicUserDto> teachers = new ArrayList<>();
-		if(musicGroups != null && musicGroups.size() > 0){
-			Set<String> musicGroupId = musicGroups.stream().map(ImGroupModel::getId).collect(Collectors.toSet());
-			List<MusicGroup> musicGroupList = musicGroupDao.queryListByIds(StringUtils.join(musicGroupId, ","));
-			Set<Integer> teacherIdSet = new HashSet<>();
-			if(musicGroupList != null && musicGroupList.size() > 0){
-				musicGroupList.forEach(e->{
-					teacherIdSet.add(e.getTeamTeacherId());
-					teacherIdSet.add(e.getEducationalTeacherId());
-					teacherIdSet.add(e.getDirectorUserId());
-				});
-			}
-			teacherIdSet.remove(teacherId);
-			teacherIdSet.removeAll(Collections.singleton(null));
-			if(teacherIdSet.size() > 0){
-				teachers = teacherDao.queryMusicGroupStudents(StringUtils.join(teacherIdSet,","), search);
-			}
-		}
-		List<BasicUserDto> userDtos = teacherDao.queryGroupStudents(teacherId, search);
-		if(userDtos != null && userDtos.size() > 0){
-			teachers.addAll(userDtos);
-			Set<String> musicGroupIds = userDtos.stream().map(e -> e.getMusicGroupId()).collect(Collectors.toSet());
-			if(musicGroupIds != null && musicGroupIds.size() > 0){
-				Map<String, String> musicGroupNameMap = MapUtil.convertIntegerMap(musicGroupDao.queryMusicGroupNameMap(musicGroupIds));
-				userDtos.forEach(e->{
-					e.setMusicGroupName(musicGroupNameMap.get(e.getMusicGroupId()));
-				});
-			}
-		}
-		studentIds.removeAll(userDtos.stream().map(e->e.getUserId()).collect(Collectors.toSet()));
-		studentIds.remove(teacherId);
-		if(studentIds.size() > 0){
-			teachers.addAll(teacherDao.queryTeacherBaseInfo(studentIds,search));
-		}
-		return teachers.stream().distinct().collect(Collectors.toList());
-	}
-
-	@Transactional(rollbackFor = Exception.class)
-	public List<ImUserFriendDto> queryGroupStudents1(Integer teacherId, String search) {
-		Set<BasicUserDto> basicUserDtos = new HashSet<>();
-		//学员关联的通讯录
-		//获取相关课程,班级老师列表
-		Set<Integer> teacherIds = teacherDao.findMusicTeacherIds(teacherId);
-		//获取学员所在乐团列表
-		List<String> musicGroupIds = studentRegistrationDao.queryStudentMusicGroup(teacherId);
-		if (musicGroupIds != null && musicGroupIds.size() > 0) {
-			List<MusicGroup> musicGroups = musicGroupDao.queryListByIds(StringUtils.join(musicGroupIds, ","));
-			musicGroups.forEach(e -> {
-				teacherIds.add(e.getDirectorUserId());
-				teacherIds.add(e.getEducationalTeacherId());
-				teacherIds.add(e.getTeamTeacherId());
-			});
-		}
-		//获取相关vip课老师列表
-		teacherIds.addAll(teacherDao.findVipTeacherIds(teacherId));
-		//获取陪练课老师列表
-		teacherIds.addAll(teacherDao.findPracticeTeacherIds(teacherId));
-		//获取对外课程老师列表
-		teacherIds.addAll(teacherDao.findCloseCourseTeacherIds(teacherId));
-		//获取陪练课课程教务老师
-		teacherIds.addAll(teacherDao.findPracticeEducationalTeacherId(teacherId));
-		//获取VIP课程教务老师
-		teacherIds.addAll(teacherDao.findVipEducationalTeacherId(teacherId));
-		//获取对外课程务老师
-		teacherIds.addAll(teacherDao.findCommEducationalTeacherId(teacherId));
-		//获取关联的指导老师
-		Student student = studentDao.get(teacherId);
-		if (student != null && student.getTeacherId() != null) {
-			teacherIds.add(student.getTeacherId());
-		}
-		if (teacherIds.size() > 0) {
-			basicUserDtos.addAll(teacherDao.queryTeacherBaseInfo(teacherIds, search));
-		}
-
-		//获取关联的学员列表
-		Set<Integer> studentIds = teacherDao.queryCourseClassStudentIds(teacherId);
-		//获取关联的老师列表
-		studentIds.addAll(teacherDao.queryCourseClassTeacherIds(teacherId));
-		//获取关联的乐团的管理老师
-		List<String> musicLeaderIds = teacherDao.queryMusicLeaderIds(teacherId);
-		musicLeaderIds.removeAll(Collections.singleton(null));
-		if(musicLeaderIds.size() > 0){
-			Set<String> leaderIds = new HashSet<>();
-			musicLeaderIds.forEach(e->{
-				leaderIds.addAll(Arrays.asList(e.split(",")));
-			});
-			leaderIds.forEach(e->{
-				studentIds.add(Integer.valueOf(e));
-			});
-		}
-		studentIds.removeAll(Collections.singleton(null));
-		List<ImGroupModel> musicGroups =  musicGroupDao.queryTeacherGroups(teacherId,search);
-
-		if(musicGroups != null && musicGroups.size() > 0){
-			Set<String> musicGroupId = musicGroups.stream().map(ImGroupModel::getId).collect(Collectors.toSet());
-			List<MusicGroup> musicGroupList = musicGroupDao.queryListByIds(StringUtils.join(musicGroupId, ","));
-			Set<Integer> teacherIdSet = new HashSet<>();
-			if(musicGroupList != null && musicGroupList.size() > 0){
-				musicGroupList.forEach(e->{
-					teacherIdSet.add(e.getTeamTeacherId());
-					teacherIdSet.add(e.getEducationalTeacherId());
-					teacherIdSet.add(e.getDirectorUserId());
-				});
-			}
-			teacherIdSet.remove(teacherId);
-			teacherIdSet.removeAll(Collections.singleton(null));
-			if(teacherIdSet.size() > 0){
-				basicUserDtos.addAll(teacherDao.queryMusicGroupStudents(StringUtils.join(teacherIdSet,","), search));
-			}
-		}
-
-		List<BasicUserDto> userDtos = teacherDao.queryGroupStudents(teacherId, search);
-		if(userDtos != null && userDtos.size() > 0){
-			basicUserDtos.addAll(userDtos);
-			Set<String> musicGroupIds1 = userDtos.stream().map(e -> e.getMusicGroupId()).collect(Collectors.toSet());
-			if(musicGroupIds1 != null && musicGroupIds1.size() > 0){
-				Map<String, String> musicGroupNameMap = MapUtil.convertIntegerMap(musicGroupDao.queryMusicGroupNameMap(musicGroupIds1));
-				userDtos.forEach(e->{
-					e.setMusicGroupName(musicGroupNameMap.get(e.getMusicGroupId()));
-				});
-			}
-		}
-		studentIds.removeAll(userDtos.stream().map(e->e.getUserId()).collect(Collectors.toSet()));
-		studentIds.remove(teacherId);
-		if(studentIds.size() > 0){
-			basicUserDtos.addAll(teacherDao.queryTeacherBaseInfo(studentIds,search));
-		}
-
-		String syncImUserFriendKey = "syncImUserFriend:" + teacherId;
-		if(basicUserDtos.size() > 0){
-			for (BasicUserDto basicUserDto : basicUserDtos) {
-				if(basicUserDto.getUserId().equals(teacherId)){
-					continue;
-				}
-				// 检查是否已经是好友
-				ImUserFriend userFriend = imUserFriendDao.query(teacherId, basicUserDto.getUserId());
-				if (userFriend != null) {
-					continue;
-				}
-				imUserFriendDao.insertByBasicUser(basicUserDto,teacherId);
-			}
-			redisTemplate.opsForValue().setIfAbsent(syncImUserFriendKey,teacherId.toString());
-			return imUserFriendDao.queryFriendListByUserId(teacherId, search);
-		}
-		redisTemplate.opsForValue().setIfAbsent(syncImUserFriendKey,teacherId.toString());
-		return new ArrayList<>();
-	}
+        teacherDao.insert(teacher);
+        ImResult imResult = imFeignService.register(new ImUserModel(teacher.getId().toString(), teacher.getUsername(), null));
+        if (imResult != null) {
+            teacher.setImToken(imResult.getToken());
+            teacherDao.updateUser(teacher);
+        }
+        return teacher.getId();
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void updateTea1(Teacher teacher) {
+        Teacher teacher1 = teacherDao.get(teacher.getId());
+        if (null == teacher1) {
+            throw new BizException("教师信息不存在");
+        }
+
+        if (StringUtils.isNotEmpty(teacher.getPhone())) {
+            SysUser sysUser = teacherDao.getUserWithPhone(teacher.getPhone());
+            if (sysUser != null && !sysUser.getId().equals(teacher.getId())) {
+                throw new BizException("手机号已存在");
+            }
+        }
+
+        // 同步更新机构手机号 如果它存在
+        SysUser user = teacherDao.getUser(teacher.getId()); // 138 -> 159
+        if (!Objects.equals(user.getPhone(), teacher1.getPhone())) {
+            tenantInfoService.updatePhone(teacher1.getPhone(), user.getPhone());
+        }
+
+        if (Objects.nonNull(teacher.getEntryDate()) && Objects.nonNull(teacher.getFormalStaffDate())) {
+            if (teacher.getEntryDate().compareTo(teacher.getFormalStaffDate()) > 0) {
+                throw new BizException("入职日期不可晚于转正日期");
+            }
+        }
+        teacher.setUpdateTime(new Date());
+        teacher.setTeacherOrganId(teacher.getOrganId());
+        teacherDao.update(teacher);
+        teacher.setOrganId(null);
+        teacherDao.updateUser(teacher);
+        imGroupDao.updateNickname(teacher.getId(), teacher.getRealName());
+        imGroupDao.updateUserFriendNickname(teacher.getId(), teacher.getRealName());
+        imFeignService.update(new ImUserModel(teacher.getId().toString(), teacher.getRealName(), teacher.getAvatar()));
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void updateTea(Teacher teacher) {
+        Teacher teacher1 = teacherDao.get(teacher.getId());
+        if (null == teacher1) {
+            throw new BizException("教师信息不存在");
+        }
+        if (StringUtils.isNotEmpty(teacher.getPhone())) {
+            SysUser sysUser = teacherDao.getUserWithPhone(teacher.getPhone());
+            if (sysUser != null && !sysUser.getId().equals(teacher.getId())) {
+                throw new BizException("手机号已存在");
+            }
+        }
+        // 同步更新机构手机号 如果它存在
+        SysUser user = teacherDao.getUser(teacher.getId());
+        if (!Objects.equals(user.getPhone(), teacher1.getPhone())) {
+            tenantInfoService.updatePhone(teacher1.getPhone(), user.getPhone());
+        }
+
+        if (Objects.nonNull(teacher.getEntryDate()) && Objects.nonNull(teacher.getFormalStaffDate())) {
+            if (teacher.getEntryDate().compareTo(teacher.getFormalStaffDate()) > 0) {
+                throw new BizException("入职日期不可晚于转正日期");
+            }
+        }
+        teacher.setUpdateTime(new Date());
+        teacher.setTeacherOrganId(teacher.getOrganId());
+        teacherDao.eduUpdateTeacher(teacher);
+        teacher.setOrganId(null);
+        teacherDao.updateUser(teacher);
+        imGroupDao.updateNickname(teacher.getId(), teacher.getRealName());
+        imGroupDao.updateUserFriendNickname(teacher.getId(), teacher.getRealName());
+        imFeignService.update(new ImUserModel(teacher.getId().toString(), teacher.getRealName(), teacher.getAvatar()));
+    }
+
+    @Override
+    public void deleteTeacher(Long userId) {
+        SysUser sysUser = new SysUser();
+        sysUser.setId(userId.intValue());
+        sysUser.setDelFlag(YesOrNoEnum.YES);
+        teacherDao.updateUser(sysUser);
+    }
+
+    @Override
+    public List<ImGroupModel> queryTeacherGroups(Integer userId, String search) {
+        //获取教师所在班级列表
+        List<ImGroupModel> imGroupModels = classGroupDao.queryTeacherGroups(userId, search);
+        if (imGroupModels != null && imGroupModels.size() > 0) {
+            imGroupModels.forEach(e -> {
+                e.setCount(classGroupService.findGroupUsers(Integer.parseInt(e.getId()), null).size());
+            });
+        }
+        return imGroupModels;
+    }
+
+    @Override
+    public List<BasicUserDto> queryGroupStudentList(Integer teacherId, String search) {
+        //获取关联的学员列表
+        Set<Integer> studentIds = teacherDao.queryCourseClassStudentIds(teacherId);
+        List<BasicUserDto> teachers = new ArrayList<>();
+        if (studentIds.size() > 0) {
+            teachers.addAll(teacherDao.queryTeacherBaseInfo(studentIds, search));
+        }
+        return teachers.stream().distinct().collect(Collectors.toList());
+    }
+
+    @Override
+    public List<BasicUserDto> queryGroupStudents(Integer teacherId, String search) {
+        //获取关联的学员列表
+        Set<Integer> studentIds = teacherDao.queryCourseClassStudentIds(teacherId);
+        //获取关联的老师列表
+        studentIds.addAll(teacherDao.queryCourseClassTeacherIds(teacherId));
+        //获取关联的乐团的管理老师
+        List<String> musicLeaderIds = teacherDao.queryMusicLeaderIds(teacherId);
+        musicLeaderIds.removeAll(Collections.singleton(null));
+        if (musicLeaderIds.size() > 0) {
+            Set<String> leaderIds = new HashSet<>();
+            musicLeaderIds.forEach(e -> {
+                leaderIds.addAll(Arrays.asList(e.split(",")));
+            });
+            leaderIds.forEach(e -> {
+                studentIds.add(Integer.valueOf(e));
+            });
+        }
+        studentIds.removeAll(Collections.singleton(null));
+        List<ImGroupModel> musicGroups = musicGroupDao.queryTeacherGroups(teacherId, search);
+        List<BasicUserDto> teachers = new ArrayList<>();
+        if (musicGroups != null && musicGroups.size() > 0) {
+            Set<String> musicGroupId = musicGroups.stream().map(ImGroupModel::getId).collect(Collectors.toSet());
+            List<MusicGroup> musicGroupList = musicGroupDao.queryListByIds(StringUtils.join(musicGroupId, ","));
+            Set<Integer> teacherIdSet = new HashSet<>();
+            if (musicGroupList != null && musicGroupList.size() > 0) {
+                musicGroupList.forEach(e -> {
+                    teacherIdSet.add(e.getTeamTeacherId());
+                    teacherIdSet.add(e.getEducationalTeacherId());
+                    teacherIdSet.add(e.getDirectorUserId());
+                });
+            }
+            teacherIdSet.remove(teacherId);
+            teacherIdSet.removeAll(Collections.singleton(null));
+            if (teacherIdSet.size() > 0) {
+                teachers = teacherDao.queryMusicGroupStudents(StringUtils.join(teacherIdSet, ","), search);
+            }
+        }
+        List<BasicUserDto> userDtos = teacherDao.queryGroupStudents(teacherId, search);
+        if (userDtos != null && userDtos.size() > 0) {
+            teachers.addAll(userDtos);
+            Set<String> musicGroupIds = userDtos.stream().map(e -> e.getMusicGroupId()).collect(Collectors.toSet());
+            if (musicGroupIds != null && musicGroupIds.size() > 0) {
+                Map<String, String> musicGroupNameMap = MapUtil.convertIntegerMap(musicGroupDao.queryMusicGroupNameMap(musicGroupIds));
+                userDtos.forEach(e -> {
+                    e.setMusicGroupName(musicGroupNameMap.get(e.getMusicGroupId()));
+                });
+            }
+        }
+        studentIds.removeAll(userDtos.stream().map(e -> e.getUserId()).collect(Collectors.toSet()));
+        studentIds.remove(teacherId);
+        if (studentIds.size() > 0) {
+            teachers.addAll(teacherDao.queryTeacherBaseInfo(studentIds, search));
+        }
+        return teachers.stream().distinct().collect(Collectors.toList());
+    }
+
+    @Transactional(rollbackFor = Exception.class)
+    public List<ImUserFriendDto> queryGroupStudents1(Integer teacherId, String search) {
+        Set<BasicUserDto> basicUserDtos = new HashSet<>();
+        //学员关联的通讯录
+        //获取相关课程,班级老师列表
+        Set<Integer> teacherIds = teacherDao.findMusicTeacherIds(teacherId);
+        //获取学员所在乐团列表
+        List<String> musicGroupIds = studentRegistrationDao.queryStudentMusicGroup(teacherId);
+        if (musicGroupIds != null && musicGroupIds.size() > 0) {
+            List<MusicGroup> musicGroups = musicGroupDao.queryListByIds(StringUtils.join(musicGroupIds, ","));
+            musicGroups.forEach(e -> {
+                teacherIds.add(e.getDirectorUserId());
+                teacherIds.add(e.getEducationalTeacherId());
+                teacherIds.add(e.getTeamTeacherId());
+            });
+        }
+        //获取相关vip课老师列表
+        teacherIds.addAll(teacherDao.findVipTeacherIds(teacherId));
+        //获取陪练课老师列表
+        teacherIds.addAll(teacherDao.findPracticeTeacherIds(teacherId));
+        //获取对外课程老师列表
+        teacherIds.addAll(teacherDao.findCloseCourseTeacherIds(teacherId));
+        //获取陪练课课程教务老师
+        teacherIds.addAll(teacherDao.findPracticeEducationalTeacherId(teacherId));
+        //获取VIP课程教务老师
+        teacherIds.addAll(teacherDao.findVipEducationalTeacherId(teacherId));
+        //获取对外课程务老师
+        teacherIds.addAll(teacherDao.findCommEducationalTeacherId(teacherId));
+        //获取关联的指导老师
+        Student student = studentDao.get(teacherId);
+        if (student != null && student.getTeacherId() != null) {
+            teacherIds.add(student.getTeacherId());
+        }
+        if (teacherIds.size() > 0) {
+            basicUserDtos.addAll(teacherDao.queryTeacherBaseInfo(teacherIds, search));
+        }
+
+        //获取关联的学员列表
+        Set<Integer> studentIds = teacherDao.queryCourseClassStudentIds(teacherId);
+        //获取关联的老师列表
+        studentIds.addAll(teacherDao.queryCourseClassTeacherIds(teacherId));
+        //获取关联的乐团的管理老师
+        List<String> musicLeaderIds = teacherDao.queryMusicLeaderIds(teacherId);
+        musicLeaderIds.removeAll(Collections.singleton(null));
+        if (musicLeaderIds.size() > 0) {
+            Set<String> leaderIds = new HashSet<>();
+            musicLeaderIds.forEach(e -> {
+                leaderIds.addAll(Arrays.asList(e.split(",")));
+            });
+            leaderIds.forEach(e -> {
+                studentIds.add(Integer.valueOf(e));
+            });
+        }
+        studentIds.removeAll(Collections.singleton(null));
+        List<ImGroupModel> musicGroups = musicGroupDao.queryTeacherGroups(teacherId, search);
+
+        if (musicGroups != null && musicGroups.size() > 0) {
+            Set<String> musicGroupId = musicGroups.stream().map(ImGroupModel::getId).collect(Collectors.toSet());
+            List<MusicGroup> musicGroupList = musicGroupDao.queryListByIds(StringUtils.join(musicGroupId, ","));
+            Set<Integer> teacherIdSet = new HashSet<>();
+            if (musicGroupList != null && musicGroupList.size() > 0) {
+                musicGroupList.forEach(e -> {
+                    teacherIdSet.add(e.getTeamTeacherId());
+                    teacherIdSet.add(e.getEducationalTeacherId());
+                    teacherIdSet.add(e.getDirectorUserId());
+                });
+            }
+            teacherIdSet.remove(teacherId);
+            teacherIdSet.removeAll(Collections.singleton(null));
+            if (teacherIdSet.size() > 0) {
+                basicUserDtos.addAll(teacherDao.queryMusicGroupStudents(StringUtils.join(teacherIdSet, ","), search));
+            }
+        }
+
+        List<BasicUserDto> userDtos = teacherDao.queryGroupStudents(teacherId, search);
+        if (userDtos != null && userDtos.size() > 0) {
+            basicUserDtos.addAll(userDtos);
+            Set<String> musicGroupIds1 = userDtos.stream().map(e -> e.getMusicGroupId()).collect(Collectors.toSet());
+            if (musicGroupIds1 != null && musicGroupIds1.size() > 0) {
+                Map<String, String> musicGroupNameMap = MapUtil.convertIntegerMap(musicGroupDao.queryMusicGroupNameMap(musicGroupIds1));
+                userDtos.forEach(e -> {
+                    e.setMusicGroupName(musicGroupNameMap.get(e.getMusicGroupId()));
+                });
+            }
+        }
+        studentIds.removeAll(userDtos.stream().map(e -> e.getUserId()).collect(Collectors.toSet()));
+        studentIds.remove(teacherId);
+        if (studentIds.size() > 0) {
+            basicUserDtos.addAll(teacherDao.queryTeacherBaseInfo(studentIds, search));
+        }
+
+        String syncImUserFriendKey = "syncImUserFriend:" + teacherId;
+        if (basicUserDtos.size() > 0) {
+            for (BasicUserDto basicUserDto : basicUserDtos) {
+                if (basicUserDto.getUserId().equals(teacherId)) {
+                    continue;
+                }
+                // 检查是否已经是好友
+                ImUserFriend userFriend = imUserFriendDao.query(teacherId, basicUserDto.getUserId());
+                if (userFriend != null) {
+                    continue;
+                }
+                imUserFriendDao.insertByBasicUser(basicUserDto, teacherId);
+            }
+            redisTemplate.opsForValue().setIfAbsent(syncImUserFriendKey, teacherId.toString());
+            return imUserFriendDao.queryFriendListByUserId(teacherId, search);
+        }
+        redisTemplate.opsForValue().setIfAbsent(syncImUserFriendKey, teacherId.toString());
+        return new ArrayList<>();
+    }
 
     @Override
     public List<TeacherBasicDto> findTeachers(String organId) {
-		return teacherDao.findByFlowOrganRangeTeachers(organId);
+        return teacherDao.findByFlowOrganRangeTeachers(organId);
     }
 
-	@Override
-	public List<Teacher> findOrganTeacherBySubject(Integer subjectId) {
-		return teacherDao.findOrganTeacherBySubject(subjectId);
-	}
-
-	@Override
-	public PageInfo<TeacherCloseDto> queryCloses(TeacherCloseQueryInfo queryInfo) {
-		PageInfo<TeacherCloseDto> pageInfo = new PageInfo<>(queryInfo.getPage(), queryInfo.getRows());
-		Map<String, Object> params = new HashMap<>();
-		MapUtil.populateMap(params, queryInfo);
-
-		List<TeacherCloseDto> dataList = null;
-		int count = teacherDao.countCloses(params);
-		if (count > 0) {
-			pageInfo.setTotal(count);
-			params.put("offset", pageInfo.getOffset());
-			dataList = teacherDao.queryCloses(params);
-		}
-		if (count == 0) {
-			dataList = new ArrayList<>();
-		}
-		pageInfo.setRows(dataList);
-		return pageInfo;
-	}
-
-	@Override
-	public BigDecimal findTeacherNoPay(Integer teacherId) {
-		return teacherDao.findTeacherNoPay(teacherId);
-	}
-
-	@Override
-	public PageInfo<MusicGroupTeachersDto> queryMusicGroupTeachers(MusicGroupTeachersQueryInfo queryInfo) {
-		PageInfo<MusicGroupTeachersDto> pageInfo = new PageInfo<>(queryInfo.getPage(), queryInfo.getRows());
-		Map<String, Object> params = new HashMap<>();
-		MapUtil.populateMap(params, queryInfo);
-
-		List<MusicGroupTeachersDto> dataList = null;
-		int count = teacherDao.countMusicGroupTeachers(params);
-		if (count > 0) {
-			pageInfo.setTotal(count);
-			params.put("offset", pageInfo.getOffset());
-			dataList = teacherDao.queryMusicGroupTeachers(params);
-			//获取教师id列表
-			Set<Integer> teacherIds = dataList.stream().map(e -> e.getTeacherId()).collect(Collectors.toSet());
-			//根据教师编号和班级编号,获取老师签到次数
-			Map<Integer,Integer> signNumMap =  JSONObject.parseObject(JSONObject.toJSONString(MapUtil.convertIntegerMap(teacherDao.findSignNum(StringUtils.join(teacherIds,","),queryInfo.getMusicGroupId()))),HashMap.class);
-			dataList.forEach(e->{
-				e.setNum(signNumMap.get(e.getTeacherId()));
-			});
-		}
-		if (count == 0) {
-			dataList = new ArrayList<>();
-		}
-		pageInfo.setRows(dataList);
-		return pageInfo;
-	}
-
-	@Override
-	public PageInfo<MusicGroupTeacherAttendanceDto> queryTeacherAttendance(MusicGroupTeacherAttendanceQueryInfo queryInfo) {
-		PageInfo<MusicGroupTeacherAttendanceDto> pageInfo = new PageInfo<>(queryInfo.getPage(), queryInfo.getRows());
-		Map<String, Object> params = new HashMap<>();
-		MapUtil.populateMap(params, queryInfo);
-
-		List<MusicGroupTeacherAttendanceDto> dataList = null;
-		int count = teacherDao.countTeacherAttendance(params);
-		if (count > 0) {
-			pageInfo.setTotal(count);
-			params.put("offset", pageInfo.getOffset());
-			dataList = teacherDao.queryTeacherAttendance(params);
-		}
-		if (count == 0) {
-			dataList = new ArrayList<>();
-		}
-		pageInfo.setRows(dataList);
-		return pageInfo;
-	}
-
-	@Override
-	public PageInfo<MusicGroupStudentApplyDto> queryMusicGroupStudentApply(queryMusicGroupStudentQueryInfo queryInfo) {
-		PageInfo<MusicGroupStudentApplyDto> pageInfo = new PageInfo<>(queryInfo.getPage(), queryInfo.getRows());
-		Map<String, Object> params = new HashMap<>();
-		MapUtil.populateMap(params, queryInfo);
-
-		List<MusicGroupStudentApplyDto> dataList = null;
-		int count = teacherDao.countMusicGroupStudentApply(params);
-		if (count > 0) {
-			pageInfo.setTotal(count);
-			params.put("offset", pageInfo.getOffset());
-			dataList = teacherDao.queryMusicGroupStudentApply(params);
-			String paymentStatus = queryInfo.getPaymentStatus();
-			if(StringUtils.isNotEmpty(paymentStatus) && paymentStatus.equals("2")){
-				List<StudentPaymentOrder> studentPaymentOrders = studentPaymentOrderDao.findStudentPaymentOrder(queryInfo.getMusicGroupId());
-				Map<Integer, List<StudentPaymentOrder>> collect = studentPaymentOrders.stream().collect(Collectors.groupingBy(StudentPaymentOrder::getUserId));
-				dataList.forEach(e->{
-					List<StudentPaymentOrder> paymentOrders = collect.get(e.getUserId());
-					
-					if(paymentOrders != null && paymentOrders.size() > 0){
-						e.setPaymentAmount(paymentOrders.stream().map(t -> t.getExpectAmount()).reduce(BigDecimal.ZERO, BigDecimal::add));
-						e.setPayTime(paymentOrders.get(0).getPayTime());
-					}
-				});
-			}
-		}
-		if (count == 0) {
-			dataList = new ArrayList<>();
-		}
-		pageInfo.setRows(dataList);
-		return pageInfo;
-	}
-
-	@Override
-	public List<Teacher> findTeacherByOrganId(String organId,String subjectIds,String jobNature) {
-		return teacherDao.findTeacherByOrganId(organId,subjectIds,jobNature);
-	}
-
-	@Override
-	public PageInfo<Teacher> queryPageName(TeacherNameQueryInfo queryInfo) {
-		PageInfo<Teacher> pageInfo = new PageInfo<>(queryInfo.getPage(), queryInfo.getRows());
-		Map<String, Object> params = new HashMap<>();
-		MapUtil.populateMap(params, queryInfo);
-
-		List<Teacher> dataList = null;
-		int count = teacherDao.countTeacherName(params);
-		if (count > 0) {
-			pageInfo.setTotal(count);
-			params.put("offset", pageInfo.getOffset());
-			dataList = teacherDao.queryPageName(params);
-		}
-		if (count == 0) {
-			dataList = new ArrayList<>();
-		}
-		pageInfo.setRows(dataList);
-		return pageInfo;
-	}
-
-	@Override
-	public CourseHomework getCourseScheduleHomework(Integer courseScheduleId) {
-		return teacherDao.getCourseScheduleHomework(courseScheduleId);
-	}
-
-	@Override
-	public List<BasicUserDto> queryEducationIpa(Integer userId, String search) {
-		return queryGroupStudents(userId, search);
-	}
-
-	@Override
-	public List<BasicUserDto> queryMusicGroupTeacher(String musicGroupId) {
-		if(Objects.isNull(musicGroupId)){
-			throw new BizException("请指定乐团");
-		}
-		return teacherDao.findTeacherByMusicGroup(musicGroupId);
-	}
-
-	@Override
-	public PageInfo<Teacher> queryPageDetail(TeacherQueryInfo queryInfo) {
-		Map<String, Object> params = new HashMap<>();
-		MapUtil.populateMap(params, queryInfo);
-		PageInfo<Teacher> pageInfo = queryPage(queryInfo);
-		List<Teacher> rows = pageInfo.getRows();
-		if(rows != null && rows.size() > 0){
-			Set<Integer> teachers = rows.stream().map(e -> e.getId()).collect(Collectors.toSet());
-			String teacherIds = StringUtils.join(teachers, ",");
-			//获取小课数量
-			Map<Integer,Integer> vipNumMap = JSONObject.parseObject(JSONObject.toJSONString(MapUtil.convertIntegerMap(classGroupDao.countTeacherVipNum(teacherIds))),HashMap.class);
-			//获取试听课数量
-			Map<Integer,Integer> demoNumMap = JSONObject.parseObject(JSONObject.toJSONString(MapUtil.convertIntegerMap(demoGroupDao.countTeacherDemoGroupNum(teacherIds))),HashMap.class);
-
-			Set<Integer> organIds = rows.stream().map(e -> e.getTeacherOrganId()).collect(Collectors.toSet());
-			Map<Integer,String> organNames = MapUtil.convertMybatisMap(organizationDao.findOrganNameMapList(organIds));
-
-
-			for (Teacher e : rows) {
-				e.setSubjectName(subjectDao.findBySubIds(e.getSubjectId()));
-				e.setOrganName(organNames.get(e.getTeacherOrganId()));
-				if(StringUtils.isNotEmpty(e.getSplitSubjectName())){
-					e.setSubjectName(Arrays.asList(e.getSplitSubjectName().split(",")));
-				}
-				Integer num = vipNumMap.get(e.getId());
-				e.setVipNum(num == null?0:num);
-				Integer demoNum = demoNumMap.get(e.getId());
-				e.setDemoNum(demoNum == null?0:demoNum);
-			}
-		}
-		return pageInfo;
-	}
-
-	@Override
-	public Teacher getDetail(Integer id) {
-		Teacher teacher = teacherDao.get(id);
-		if(teacher != null){
-			LocalDate nowDate = LocalDateTime.now(DateUtil.zoneId).toLocalDate();
-			LocalDate monDayDate = nowDate.with(DateUtil.weekFields.dayOfWeek(), DayOfWeek.MONDAY.getValue());
-			List<TeacherExercisesServiceDto> teacherExercisesServiceSituations = studentExtracurricularExercisesSituationDao.findTeacherExercisesServiceSituations(monDayDate.toString(), Arrays.asList(id));
-			Map<Integer, TeacherExercisesServiceDto> teacherServiceMap = new HashMap<>();
-			if(!CollectionUtils.isEmpty(teacherExercisesServiceSituations)){
-				teacherServiceMap = teacherExercisesServiceSituations.stream().collect(Collectors.toMap(TeacherExercisesServiceDto::getTeacherId, t -> t));
-			}
-
-			Map<Integer,String> operatingStudentsNum = MapUtil.convertMybatisMap(studentDao.getTeacherOperatingStudentsNum(id.toString()));
-			Map<Integer,String> practiceStudentsNum = MapUtil.convertMybatisMap(studentDao.getBuyNums(id.toString(), GroupType.PRACTICE));
-			Map<Integer,String> vipStudentsNum = MapUtil.convertMybatisMap(studentDao.getBuyNums(id.toString(), GroupType.VIP));
-			Map<Integer,String> practiceAndVipStudentsNum = MapUtil.convertMybatisMap(studentDao.getPracticeAndVipNums(id.toString()));
-
-			//获取老师教学点列表
-			List<School> teacherSchools = schoolDao.findByUserId(id);
-			teacher.setTeacherSchools(teacherSchools);
-			//获取流动范围
-			if(StringUtils.isNotEmpty(teacher.getFlowOrganRange())){
-				teacher.setFlowOrganRangeId(teacher.getFlowOrganRange());
-				List<String> organNames = organizationDao.findByOrganIds(teacher.getFlowOrganRange());
-				teacher.setFlowOrganRange(StringUtils.join(organNames,","));
-			}
-			if(teacher.getTeacherOrganId() != null){
-				Organization organization = organizationDao.get(teacher.getTeacherOrganId());
-				teacher.setOrganName(Objects.nonNull(organization)?organization.getName():null);
-			}
-			//专业技能
-			if(StringUtils.isNotEmpty(teacher.getSubjectId())){
-				teacher.setSubjectName(subjectDao.findBySubIds(teacher.getSubjectId()));
-			}
-
-			//服务指标
-			TeacherExercisesServiceDto teacherService = teacherServiceMap.get(id);
-			if(Objects.nonNull(teacherService)){
-				BigDecimal serviceIndex = new BigDecimal(teacherService.getActualExercisesNum()).multiply(new BigDecimal(100)).divide(new BigDecimal(teacherService.getExpectExercisesNum()), CommonConstants.DECIMAL_FINAL_PLACE, BigDecimal.ROUND_HALF_UP);
-				teacher.setServiceIndex(serviceIndex);
-			}else{
-				teacher.setServiceIndex(BigDecimal.ZERO);
-			}
-			//运营指标
-			String studentNum = operatingStudentsNum.get(id);
-			if(studentNum != null){
-				String practiceNum = practiceStudentsNum.get(id) ==null ? "0" : practiceStudentsNum.get(id);
-				String vipNum = vipStudentsNum.get(id) ==null ? "0" : vipStudentsNum.get(id);
-				String practiceAndVipNum = practiceAndVipStudentsNum.get(id) ==null ? "0" : practiceAndVipStudentsNum.get(id);
-				int allNum = Integer.parseInt(practiceNum) + Integer.parseInt(vipNum) - Integer.parseInt(practiceAndVipNum);
-				BigDecimal operatingIndex = new BigDecimal(allNum).multiply(new BigDecimal(100)).divide(new BigDecimal(studentNum), CommonConstants.DECIMAL_FINAL_PLACE, BigDecimal.ROUND_HALF_UP);
-				teacher.setOperatingIndex(operatingIndex);
-			}else {
-				teacher.setOperatingIndex(BigDecimal.ZERO);
-			}
-		}
-		return teacher;
-	}
-
-	@Override
-	@Transactional(rollbackFor = Exception.class)
-	public boolean realNameAuthentication(Integer userId, String realName, String idcardNo, String idcardFrontImg, String idcardBackImg, String idcardHandImg) {
-
-		SysUser user = teacherDao.getUser(userId);
-		if (user == null) {
-			throw new BizException("用户不存在");
-		}
-
-		Teacher teacher = teacherDao.get(userId);
-		if (teacher == null) {
-			throw new BizException("用户信息不存在");
-		}
-		// 查询是否已实名认证
-		if (StringUtils.isNotBlank(teacher.getIdcardBackImg()) && StringUtils.isNotBlank(teacher.getIdcardFrontImg())
-				&& StringUtils.isNotBlank(teacher.getIdcardHandImg())) {
-			throw new BizException("已实名认证,不能重复操作");
-		}
-
-		IdcardValidator validator = new IdcardValidator();
-		if (validator.isValidatedAllIdcard(idcardNo) == false) {
-			throw new BizException("身份证校验失败");
-		}
+    @Override
+    public List<Teacher> findOrganTeacherBySubject(Integer subjectId) {
+        return teacherDao.findOrganTeacherBySubject(subjectId);
+    }
+
+    @Override
+    public PageInfo<TeacherCloseDto> queryCloses(TeacherCloseQueryInfo queryInfo) {
+        PageInfo<TeacherCloseDto> pageInfo = new PageInfo<>(queryInfo.getPage(), queryInfo.getRows());
+        Map<String, Object> params = new HashMap<>();
+        MapUtil.populateMap(params, queryInfo);
+
+        List<TeacherCloseDto> dataList = null;
+        int count = teacherDao.countCloses(params);
+        if (count > 0) {
+            pageInfo.setTotal(count);
+            params.put("offset", pageInfo.getOffset());
+            dataList = teacherDao.queryCloses(params);
+        }
+        if (count == 0) {
+            dataList = new ArrayList<>();
+        }
+        pageInfo.setRows(dataList);
+        return pageInfo;
+    }
+
+    @Override
+    public BigDecimal findTeacherNoPay(Integer teacherId) {
+        return teacherDao.findTeacherNoPay(teacherId);
+    }
+
+    @Override
+    public PageInfo<MusicGroupTeachersDto> queryMusicGroupTeachers(MusicGroupTeachersQueryInfo queryInfo) {
+        PageInfo<MusicGroupTeachersDto> pageInfo = new PageInfo<>(queryInfo.getPage(), queryInfo.getRows());
+        Map<String, Object> params = new HashMap<>();
+        MapUtil.populateMap(params, queryInfo);
+
+        List<MusicGroupTeachersDto> dataList = null;
+        int count = teacherDao.countMusicGroupTeachers(params);
+        if (count > 0) {
+            pageInfo.setTotal(count);
+            params.put("offset", pageInfo.getOffset());
+            dataList = teacherDao.queryMusicGroupTeachers(params);
+            //获取教师id列表
+            Set<Integer> teacherIds = dataList.stream().map(e -> e.getTeacherId()).collect(Collectors.toSet());
+            //根据教师编号和班级编号,获取老师签到次数
+            Map<Integer, Integer> signNumMap = JSONObject.parseObject(JSONObject.toJSONString(MapUtil.convertIntegerMap(teacherDao.findSignNum(StringUtils.join(teacherIds, ","), queryInfo.getMusicGroupId()))), HashMap.class);
+            dataList.forEach(e -> {
+                e.setNum(signNumMap.get(e.getTeacherId()));
+            });
+        }
+        if (count == 0) {
+            dataList = new ArrayList<>();
+        }
+        pageInfo.setRows(dataList);
+        return pageInfo;
+    }
+
+    @Override
+    public PageInfo<MusicGroupTeacherAttendanceDto> queryTeacherAttendance(MusicGroupTeacherAttendanceQueryInfo queryInfo) {
+        PageInfo<MusicGroupTeacherAttendanceDto> pageInfo = new PageInfo<>(queryInfo.getPage(), queryInfo.getRows());
+        Map<String, Object> params = new HashMap<>();
+        MapUtil.populateMap(params, queryInfo);
+
+        List<MusicGroupTeacherAttendanceDto> dataList = null;
+        int count = teacherDao.countTeacherAttendance(params);
+        if (count > 0) {
+            pageInfo.setTotal(count);
+            params.put("offset", pageInfo.getOffset());
+            dataList = teacherDao.queryTeacherAttendance(params);
+        }
+        if (count == 0) {
+            dataList = new ArrayList<>();
+        }
+        pageInfo.setRows(dataList);
+        return pageInfo;
+    }
+
+    @Override
+    public PageInfo<MusicGroupStudentApplyDto> queryMusicGroupStudentApply(queryMusicGroupStudentQueryInfo queryInfo) {
+        PageInfo<MusicGroupStudentApplyDto> pageInfo = new PageInfo<>(queryInfo.getPage(), queryInfo.getRows());
+        Map<String, Object> params = new HashMap<>();
+        MapUtil.populateMap(params, queryInfo);
+
+        List<MusicGroupStudentApplyDto> dataList = null;
+        int count = teacherDao.countMusicGroupStudentApply(params);
+        if (count > 0) {
+            pageInfo.setTotal(count);
+            params.put("offset", pageInfo.getOffset());
+            dataList = teacherDao.queryMusicGroupStudentApply(params);
+            String paymentStatus = queryInfo.getPaymentStatus();
+            if (StringUtils.isNotEmpty(paymentStatus) && paymentStatus.equals("2")) {
+                List<StudentPaymentOrder> studentPaymentOrders = studentPaymentOrderDao.findStudentPaymentOrder(queryInfo.getMusicGroupId());
+                Map<Integer, List<StudentPaymentOrder>> collect = studentPaymentOrders.stream().collect(Collectors.groupingBy(StudentPaymentOrder::getUserId));
+                dataList.forEach(e -> {
+                    List<StudentPaymentOrder> paymentOrders = collect.get(e.getUserId());
+
+                    if (paymentOrders != null && paymentOrders.size() > 0) {
+                        e.setPaymentAmount(paymentOrders.stream().map(t -> t.getExpectAmount()).reduce(BigDecimal.ZERO, BigDecimal::add));
+                        e.setPayTime(paymentOrders.get(0).getPayTime());
+                    }
+                });
+            }
+        }
+        if (count == 0) {
+            dataList = new ArrayList<>();
+        }
+        pageInfo.setRows(dataList);
+        return pageInfo;
+    }
+
+    @Override
+    public List<Teacher> findTeacherByOrganId(String organId, String subjectIds, String jobNature) {
+        return teacherDao.findTeacherByOrganId(organId, subjectIds, jobNature);
+    }
+
+    @Override
+    public PageInfo<Teacher> queryPageName(TeacherNameQueryInfo queryInfo) {
+        PageInfo<Teacher> pageInfo = new PageInfo<>(queryInfo.getPage(), queryInfo.getRows());
+        Map<String, Object> params = new HashMap<>();
+        MapUtil.populateMap(params, queryInfo);
+
+        List<Teacher> dataList = null;
+        int count = teacherDao.countTeacherName(params);
+        if (count > 0) {
+            pageInfo.setTotal(count);
+            params.put("offset", pageInfo.getOffset());
+            dataList = teacherDao.queryPageName(params);
+        }
+        if (count == 0) {
+            dataList = new ArrayList<>();
+        }
+        pageInfo.setRows(dataList);
+        return pageInfo;
+    }
+
+    @Override
+    public CourseHomework getCourseScheduleHomework(Integer courseScheduleId) {
+        return teacherDao.getCourseScheduleHomework(courseScheduleId);
+    }
+
+    @Override
+    public List<BasicUserDto> queryEducationIpa(Integer userId, String search) {
+        return queryGroupStudents(userId, search);
+    }
+
+    @Override
+    public List<BasicUserDto> queryMusicGroupTeacher(String musicGroupId) {
+        if (Objects.isNull(musicGroupId)) {
+            throw new BizException("请指定乐团");
+        }
+        return teacherDao.findTeacherByMusicGroup(musicGroupId);
+    }
+
+    @Override
+    public PageInfo<Teacher> queryPageDetail(TeacherQueryInfo queryInfo) {
+        Map<String, Object> params = new HashMap<>();
+        MapUtil.populateMap(params, queryInfo);
+        PageInfo<Teacher> pageInfo = queryPage(queryInfo);
+        List<Teacher> rows = pageInfo.getRows();
+        if (rows != null && rows.size() > 0) {
+            Set<Integer> teachers = rows.stream().map(e -> e.getId()).collect(Collectors.toSet());
+            String teacherIds = StringUtils.join(teachers, ",");
+            //获取小课数量
+            Map<Integer, Integer> vipNumMap = JSONObject.parseObject(JSONObject.toJSONString(MapUtil.convertIntegerMap(classGroupDao.countTeacherVipNum(teacherIds))), HashMap.class);
+            //获取试听课数量
+            Map<Integer, Integer> demoNumMap = JSONObject.parseObject(JSONObject.toJSONString(MapUtil.convertIntegerMap(demoGroupDao.countTeacherDemoGroupNum(teacherIds))), HashMap.class);
+
+            Set<Integer> organIds = rows.stream().map(e -> e.getTeacherOrganId()).collect(Collectors.toSet());
+            Map<Integer, String> organNames = MapUtil.convertMybatisMap(organizationDao.findOrganNameMapList(organIds));
+
+
+            for (Teacher e : rows) {
+                e.setSubjectName(subjectDao.findBySubIds(e.getSubjectId()));
+                e.setOrganName(organNames.get(e.getTeacherOrganId()));
+                if (StringUtils.isNotEmpty(e.getSplitSubjectName())) {
+                    e.setSubjectName(Arrays.asList(e.getSplitSubjectName().split(",")));
+                }
+                Integer num = vipNumMap.get(e.getId());
+                e.setVipNum(num == null ? 0 : num);
+                Integer demoNum = demoNumMap.get(e.getId());
+                e.setDemoNum(demoNum == null ? 0 : demoNum);
+            }
+        }
+        return pageInfo;
+    }
+
+    @Override
+    public Teacher getDetail(Integer id) {
+        Teacher teacher = teacherDao.get(id);
+        if (teacher != null) {
+            LocalDate nowDate = LocalDateTime.now(DateUtil.zoneId).toLocalDate();
+            LocalDate monDayDate = nowDate.with(DateUtil.weekFields.dayOfWeek(), DayOfWeek.MONDAY.getValue());
+            List<TeacherExercisesServiceDto> teacherExercisesServiceSituations = studentExtracurricularExercisesSituationDao.findTeacherExercisesServiceSituations(monDayDate.toString(), Arrays.asList(id));
+            Map<Integer, TeacherExercisesServiceDto> teacherServiceMap = new HashMap<>();
+            if (!CollectionUtils.isEmpty(teacherExercisesServiceSituations)) {
+                teacherServiceMap = teacherExercisesServiceSituations.stream().collect(Collectors.toMap(TeacherExercisesServiceDto::getTeacherId, t -> t));
+            }
+
+            Map<Integer, String> operatingStudentsNum = MapUtil.convertMybatisMap(studentDao.getTeacherOperatingStudentsNum(id.toString()));
+            Map<Integer, String> practiceStudentsNum = MapUtil.convertMybatisMap(studentDao.getBuyNums(id.toString(), GroupType.PRACTICE));
+            Map<Integer, String> vipStudentsNum = MapUtil.convertMybatisMap(studentDao.getBuyNums(id.toString(), GroupType.VIP));
+            Map<Integer, String> practiceAndVipStudentsNum = MapUtil.convertMybatisMap(studentDao.getPracticeAndVipNums(id.toString()));
+
+            //获取老师教学点列表
+            List<School> teacherSchools = schoolDao.findByUserId(id);
+            teacher.setTeacherSchools(teacherSchools);
+            //获取流动范围
+            if (StringUtils.isNotEmpty(teacher.getFlowOrganRange())) {
+                teacher.setFlowOrganRangeId(teacher.getFlowOrganRange());
+                List<String> organNames = organizationDao.findByOrganIds(teacher.getFlowOrganRange());
+                teacher.setFlowOrganRange(StringUtils.join(organNames, ","));
+            }
+            if (teacher.getTeacherOrganId() != null) {
+                Organization organization = organizationDao.get(teacher.getTeacherOrganId());
+                teacher.setOrganName(Objects.nonNull(organization) ? organization.getName() : null);
+            }
+            //专业技能
+            if (StringUtils.isNotEmpty(teacher.getSubjectId())) {
+                teacher.setSubjectName(subjectDao.findBySubIds(teacher.getSubjectId()));
+            }
+
+            //服务指标
+            TeacherExercisesServiceDto teacherService = teacherServiceMap.get(id);
+            if (Objects.nonNull(teacherService)) {
+                BigDecimal serviceIndex = new BigDecimal(teacherService.getActualExercisesNum()).multiply(new BigDecimal(100)).divide(new BigDecimal(teacherService.getExpectExercisesNum()), CommonConstants.DECIMAL_FINAL_PLACE, BigDecimal.ROUND_HALF_UP);
+                teacher.setServiceIndex(serviceIndex);
+            } else {
+                teacher.setServiceIndex(BigDecimal.ZERO);
+            }
+            //运营指标
+            String studentNum = operatingStudentsNum.get(id);
+            if (studentNum != null) {
+                String practiceNum = practiceStudentsNum.get(id) == null ? "0" : practiceStudentsNum.get(id);
+                String vipNum = vipStudentsNum.get(id) == null ? "0" : vipStudentsNum.get(id);
+                String practiceAndVipNum = practiceAndVipStudentsNum.get(id) == null ? "0" : practiceAndVipStudentsNum.get(id);
+                int allNum = Integer.parseInt(practiceNum) + Integer.parseInt(vipNum) - Integer.parseInt(practiceAndVipNum);
+                BigDecimal operatingIndex = new BigDecimal(allNum).multiply(new BigDecimal(100)).divide(new BigDecimal(studentNum), CommonConstants.DECIMAL_FINAL_PLACE, BigDecimal.ROUND_HALF_UP);
+                teacher.setOperatingIndex(operatingIndex);
+            } else {
+                teacher.setOperatingIndex(BigDecimal.ZERO);
+            }
+        }
+        return teacher;
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public boolean realNameAuthentication(Integer userId, String realName, String idcardNo, String idcardFrontImg, String idcardBackImg, String idcardHandImg) {
+
+        SysUser user = teacherDao.getUser(userId);
+        if (user == null) {
+            throw new BizException("用户不存在");
+        }
+
+        Teacher teacher = teacherDao.get(userId);
+        if (teacher == null) {
+            throw new BizException("用户信息不存在");
+        }
+        // 查询是否已实名认证
+        if (StringUtils.isNotBlank(teacher.getIdcardBackImg()) && StringUtils.isNotBlank(teacher.getIdcardFrontImg())
+                && StringUtils.isNotBlank(teacher.getIdcardHandImg())) {
+            throw new BizException("已实名认证,不能重复操作");
+        }
+
+        IdcardValidator validator = new IdcardValidator();
+        if (validator.isValidatedAllIdcard(idcardNo) == false) {
+            throw new BizException("身份证校验失败");
+        }
 
         realnameAuthenticationPluginContext.getRealnameAuthenticationPlugin(LinkfaceRealnameAuthenticationPlugin.getName()).verify(realName, idcardNo);
 
-		Date date = new Date();
-
-		teacher.setIdcardBackImg(idcardBackImg);
-		teacher.setIdcardFrontImg(idcardFrontImg);
-		teacher.setIdcardHandImg(idcardHandImg);
-		teacher.setUpdateTime(date);
-		teacherDao.update(teacher);
-		
-		user.setRealName(realName);
-		user.setIdCardNo(idcardNo);
-		user.setUpdateTime(date);
-		teacherDao.updateUser(user);
-		
-		return true;
-	}
-
-	@Override
-	public PageInfo<BasicUserDto> queryStudent(QueryInfo queryInfo) {
-		PageInfo<BasicUserDto> pageInfo = new PageInfo<>(queryInfo.getPage(), queryInfo.getRows());
-		Map<String, Object> params = new HashMap<>();
-		MapUtil.populateMap(params, queryInfo);
-
-		List<BasicUserDto> dataList = null;
-		int count = teacherDao.countStudent(params);
-		if (count > 0) {
-			pageInfo.setTotal(count);
-			params.put("offset", pageInfo.getOffset());
-			dataList = teacherDao.queryStudent(params);
-		}
-		if (count == 0) {
-			dataList = new ArrayList<>();
-		}
-		pageInfo.setRows(dataList);
-		return pageInfo;
-	}
-
-	@Override
-	public List<TeacherDefaultSalaryDto> queryTeacherDefaultSalary(String organIdList) {
-		return teacherDao.queryTeacherDefaultSalary(organIdList,TenantContextHolder.getTenantId());
-	}
-
-	@Override
-	public PageInfo<TeacherMusicStudentOverViewDto> queryTeacherMusicStudentOverView(TeacherServeQueryInfo queryInfo) {
-		PageInfo<TeacherMusicStudentOverViewDto> pageInfo = new PageInfo<>(queryInfo.getPage(), queryInfo.getRows());
-		Map<String, Object> params = new HashMap<String, Object>();
-		MapUtil.populateMap(params, queryInfo);
-
-		List<TeacherMusicStudentOverViewDto> dataList = null;
-		int count = teacherDao.countTeacherMusics(params);
-		if (count > 0) {
-			pageInfo.setTotal(count);
-			params.put("offset", pageInfo.getOffset());
-			List<String> musicGroupIds = teacherDao.queryTeacherMusicIds(params);
-			dataList = musicGroupDao.queryTeacherMusicStudentOverView(musicGroupIds);
-		}
-		if (count == 0) {
-			dataList = new ArrayList<>();
-		}
-		pageInfo.setRows(dataList);
-		return pageInfo;
-	}
-
-	@Override
-	public PageInfo<TeacherStudentDataDto> queryMemberStudentData(TeacherServeQueryInfo queryInfo) {
-		PageInfo<TeacherStudentDataDto> pageInfo = new PageInfo<>(queryInfo.getPage(), queryInfo.getRows());
-		Map<String, Object> params = new HashMap<String, Object>();
-		MapUtil.populateMap(params, queryInfo);
-
-		List<TeacherStudentDataDto> dataList = new ArrayList<>();
-		int count = teacherDao.countMemberStudentData(params);
-		if (count > 0) {
-			pageInfo.setTotal(count);
-			params.put("offset", pageInfo.getOffset());
-			dataList = teacherDao.queryMemberStudentData(params);
-			List<Integer> teacherIds = dataList.stream().map(TeacherStudentDataDto::getTeacherId).collect(Collectors.toList());
-
-			List<Map<Integer, Integer>> teachersStudentNumMapList = studentDao.getOrganTeacherStudentNum(teacherIds, Integer.valueOf(queryInfo.getOrganId()));
-			Map<Integer, Long> teachersStudentNumMap = new HashMap<>();
-			if(!CollectionUtils.isEmpty(teachersStudentNumMapList)){
-				teachersStudentNumMap = MapUtil.convertIntegerMap(teachersStudentNumMapList);
-			}
-
-			List<Map<Integer, Integer>> teachersMemberStudentNumMapList = cloudTeacherDao.getTeachersMemberStudentNum(teacherIds, Integer.valueOf(queryInfo.getOrganId()));
-			Map<Integer, Long> teachersMemberStudentNumMap = new HashMap<>();
-			if(!CollectionUtils.isEmpty(teachersMemberStudentNumMapList)){
-				teachersMemberStudentNumMap = MapUtil.convertIntegerMap(teachersMemberStudentNumMapList);
-			}
-			List<Map<Integer, Integer>> teacherExperienceMemberStudentNumMapList = studentDao.getTeacherExperienceMemberStudentNum(teacherIds, Integer.valueOf(queryInfo.getOrganId()));
-			Map<Integer, Long> teacherExperienceMemberStudentNumMap = new HashMap<>();
-			if(!CollectionUtils.isEmpty(teacherExperienceMemberStudentNumMapList)){
-				teacherExperienceMemberStudentNumMap = MapUtil.convertIntegerMap(teacherExperienceMemberStudentNumMapList);
-			}
-			List<Map<Integer, Integer>> organTeacherCloudStudyStudentNumMapList = studentDao.getOrganTeacherCloudStudyStudentNum(teacherIds, Integer.valueOf(queryInfo.getOrganId()));
-			Map<String, Long> organTeacherCloudStudyStudentNumMap = new HashMap<>();
-			if(!CollectionUtils.isEmpty(organTeacherCloudStudyStudentNumMapList)){
-				organTeacherCloudStudyStudentNumMap = MapUtil.convertIntegerMap(organTeacherCloudStudyStudentNumMapList);
-			}
-			for (TeacherStudentDataDto teacherStudentDataDto : dataList) {
-				if(teachersStudentNumMap.containsKey(teacherStudentDataDto.getTeacherId())){
-					teacherStudentDataDto.setTotalStudentNum(teachersStudentNumMap.get(teacherStudentDataDto.getTeacherId()).intValue());
-				}
-				if(teachersMemberStudentNumMap.containsKey(teacherStudentDataDto.getTeacherId())){
-					teacherStudentDataDto.setVipStudentNum(teachersMemberStudentNumMap.get(teacherStudentDataDto.getTeacherId()).intValue());
-				}
-				if(teacherExperienceMemberStudentNumMap.containsKey(teacherStudentDataDto.getTeacherId())){
-					teacherStudentDataDto.seteVipStudentNum(teacherExperienceMemberStudentNumMap.get(teacherStudentDataDto.getTeacherId()).intValue());
-				}
-				if(teacherStudentDataDto.getVipStudentNum()>0&&teacherStudentDataDto.getTotalStudentNum()>0){
-					teacherStudentDataDto.setVipStudentDuty(new BigDecimal(teacherStudentDataDto.getVipStudentNum()).divide(new BigDecimal(teacherStudentDataDto.getTotalStudentNum()), 4, BigDecimal.ROUND_DOWN).multiply(new BigDecimal(100)).floatValue());
-				}
-				if(organTeacherCloudStudyStudentNumMap.containsKey(teacherStudentDataDto.getTeacherId())){
-					teacherStudentDataDto.setCloudStudyUseStudentNum(organTeacherCloudStudyStudentNumMap.get(teacherStudentDataDto.getTeacherId()).intValue());
-				}
-				if(teacherStudentDataDto.getCloudStudyUseStudentNum()>0&&teacherStudentDataDto.getTotalStudentNum()>0){
-					teacherStudentDataDto.setCloudStudyUseStudentDuty(new BigDecimal(teacherStudentDataDto.getCloudStudyUseStudentNum()).divide(new BigDecimal(teacherStudentDataDto.getTotalStudentNum()), 4, BigDecimal.ROUND_DOWN).multiply(new BigDecimal(100)).floatValue());
-				}
-			}
-		}
-		pageInfo.setStatInfo(new HashMap<String, Object>(){{put("noTeacherStudentNum", studentDao.getOrganNoTeacherStudentNum(Integer.valueOf(queryInfo.getOrganId())));}});
-		pageInfo.setRows(dataList);
-		return pageInfo;
-	}
+        Date date = new Date();
+
+        teacher.setIdcardBackImg(idcardBackImg);
+        teacher.setIdcardFrontImg(idcardFrontImg);
+        teacher.setIdcardHandImg(idcardHandImg);
+        teacher.setUpdateTime(date);
+        teacherDao.update(teacher);
+
+        user.setRealName(realName);
+        user.setIdCardNo(idcardNo);
+        user.setUpdateTime(date);
+        teacherDao.updateUser(user);
+
+        return true;
+    }
+
+    @Override
+    public PageInfo<BasicUserDto> queryStudent(QueryInfo queryInfo) {
+        PageInfo<BasicUserDto> pageInfo = new PageInfo<>(queryInfo.getPage(), queryInfo.getRows());
+        Map<String, Object> params = new HashMap<>();
+        MapUtil.populateMap(params, queryInfo);
+
+        List<BasicUserDto> dataList = null;
+        int count = teacherDao.countStudent(params);
+        if (count > 0) {
+            pageInfo.setTotal(count);
+            params.put("offset", pageInfo.getOffset());
+            dataList = teacherDao.queryStudent(params);
+        }
+        if (count == 0) {
+            dataList = new ArrayList<>();
+        }
+        pageInfo.setRows(dataList);
+        return pageInfo;
+    }
+
+    @Override
+    public List<TeacherDefaultSalaryDto> queryTeacherDefaultSalary(String organIdList) {
+        return teacherDao.queryTeacherDefaultSalary(organIdList, TenantContextHolder.getTenantId());
+    }
+
+    @Override
+    public PageInfo<TeacherMusicStudentOverViewDto> queryTeacherMusicStudentOverView(TeacherServeQueryInfo queryInfo) {
+        PageInfo<TeacherMusicStudentOverViewDto> pageInfo = new PageInfo<>(queryInfo.getPage(), queryInfo.getRows());
+        Map<String, Object> params = new HashMap<String, Object>();
+        MapUtil.populateMap(params, queryInfo);
+
+        List<TeacherMusicStudentOverViewDto> dataList = null;
+        int count = teacherDao.countTeacherMusics(params);
+        if (count > 0) {
+            pageInfo.setTotal(count);
+            params.put("offset", pageInfo.getOffset());
+            List<String> musicGroupIds = teacherDao.queryTeacherMusicIds(params);
+            dataList = musicGroupDao.queryTeacherMusicStudentOverView(musicGroupIds);
+        }
+        if (count == 0) {
+            dataList = new ArrayList<>();
+        }
+        pageInfo.setRows(dataList);
+        return pageInfo;
+    }
+
+    @Override
+    public PageInfo<TeacherStudentDataDto> queryMemberStudentData(TeacherServeQueryInfo queryInfo) {
+        PageInfo<TeacherStudentDataDto> pageInfo = new PageInfo<>(queryInfo.getPage(), queryInfo.getRows());
+        Map<String, Object> params = new HashMap<String, Object>();
+        MapUtil.populateMap(params, queryInfo);
+
+        List<TeacherStudentDataDto> dataList = new ArrayList<>();
+        int count = teacherDao.countMemberStudentData(params);
+        if (count > 0) {
+            pageInfo.setTotal(count);
+            params.put("offset", pageInfo.getOffset());
+            dataList = teacherDao.queryMemberStudentData(params);
+            List<Integer> teacherIds = dataList.stream().map(TeacherStudentDataDto::getTeacherId).collect(Collectors.toList());
+
+            List<Map<Integer, Integer>> teachersStudentNumMapList = studentDao.getOrganTeacherStudentNum(teacherIds, Integer.valueOf(queryInfo.getOrganId()));
+            Map<Integer, Long> teachersStudentNumMap = new HashMap<>();
+            if (!CollectionUtils.isEmpty(teachersStudentNumMapList)) {
+                teachersStudentNumMap = MapUtil.convertIntegerMap(teachersStudentNumMapList);
+            }
+
+            List<Map<Integer, Integer>> teachersMemberStudentNumMapList = cloudTeacherDao.getTeachersMemberStudentNum(teacherIds, Integer.valueOf(queryInfo.getOrganId()));
+            Map<Integer, Long> teachersMemberStudentNumMap = new HashMap<>();
+            if (!CollectionUtils.isEmpty(teachersMemberStudentNumMapList)) {
+                teachersMemberStudentNumMap = MapUtil.convertIntegerMap(teachersMemberStudentNumMapList);
+            }
+            List<Map<Integer, Integer>> teacherExperienceMemberStudentNumMapList = studentDao.getTeacherExperienceMemberStudentNum(teacherIds, Integer.valueOf(queryInfo.getOrganId()));
+            Map<Integer, Long> teacherExperienceMemberStudentNumMap = new HashMap<>();
+            if (!CollectionUtils.isEmpty(teacherExperienceMemberStudentNumMapList)) {
+                teacherExperienceMemberStudentNumMap = MapUtil.convertIntegerMap(teacherExperienceMemberStudentNumMapList);
+            }
+            List<Map<Integer, Integer>> organTeacherCloudStudyStudentNumMapList = studentDao.getOrganTeacherCloudStudyStudentNum(teacherIds, Integer.valueOf(queryInfo.getOrganId()));
+            Map<String, Long> organTeacherCloudStudyStudentNumMap = new HashMap<>();
+            if (!CollectionUtils.isEmpty(organTeacherCloudStudyStudentNumMapList)) {
+                organTeacherCloudStudyStudentNumMap = MapUtil.convertIntegerMap(organTeacherCloudStudyStudentNumMapList);
+            }
+            for (TeacherStudentDataDto teacherStudentDataDto : dataList) {
+                if (teachersStudentNumMap.containsKey(teacherStudentDataDto.getTeacherId())) {
+                    teacherStudentDataDto.setTotalStudentNum(teachersStudentNumMap.get(teacherStudentDataDto.getTeacherId()).intValue());
+                }
+                if (teachersMemberStudentNumMap.containsKey(teacherStudentDataDto.getTeacherId())) {
+                    teacherStudentDataDto.setVipStudentNum(teachersMemberStudentNumMap.get(teacherStudentDataDto.getTeacherId()).intValue());
+                }
+                if (teacherExperienceMemberStudentNumMap.containsKey(teacherStudentDataDto.getTeacherId())) {
+                    teacherStudentDataDto.seteVipStudentNum(teacherExperienceMemberStudentNumMap.get(teacherStudentDataDto.getTeacherId()).intValue());
+                }
+                if (teacherStudentDataDto.getVipStudentNum() > 0 && teacherStudentDataDto.getTotalStudentNum() > 0) {
+                    teacherStudentDataDto.setVipStudentDuty(new BigDecimal(teacherStudentDataDto.getVipStudentNum()).divide(new BigDecimal(teacherStudentDataDto.getTotalStudentNum()), 4, BigDecimal.ROUND_DOWN).multiply(new BigDecimal(100)).floatValue());
+                }
+                if (organTeacherCloudStudyStudentNumMap.containsKey(teacherStudentDataDto.getTeacherId())) {
+                    teacherStudentDataDto.setCloudStudyUseStudentNum(organTeacherCloudStudyStudentNumMap.get(teacherStudentDataDto.getTeacherId()).intValue());
+                }
+                if (teacherStudentDataDto.getCloudStudyUseStudentNum() > 0 && teacherStudentDataDto.getTotalStudentNum() > 0) {
+                    teacherStudentDataDto.setCloudStudyUseStudentDuty(new BigDecimal(teacherStudentDataDto.getCloudStudyUseStudentNum()).divide(new BigDecimal(teacherStudentDataDto.getTotalStudentNum()), 4, BigDecimal.ROUND_DOWN).multiply(new BigDecimal(100)).floatValue());
+                }
+            }
+        }
+        pageInfo.setStatInfo(new HashMap<String, Object>() {{
+            put("noTeacherStudentNum", studentDao.getOrganNoTeacherStudentNum(Integer.valueOf(queryInfo.getOrganId())));
+        }});
+        pageInfo.setRows(dataList);
+        return pageInfo;
+    }
 
     @Override
     public PageInfo<SysUserDto> queryTeacherBasicInfo(UserBasicQueryInfo queryInfo) {
-		PageInfo<SysUserDto> pageInfo = new PageInfo<>(queryInfo.getPage(), queryInfo.getRows());
-		Map<String, Object> params = new HashMap<>();
-		MapUtil.populateMap(params, queryInfo);
-
-		List<SysUserDto> dataList = null;
-		int count = teacherDao.countTeacherBasicInfo(params);
-		if (count > 0) {
-			pageInfo.setTotal(count);
-			params.put("offset", pageInfo.getOffset());
-			dataList = teacherDao.queryTeacherBasicInfo(params);
-		}
-		if (count == 0) {
-			dataList = new ArrayList<>();
-		}
-		pageInfo.setRows(dataList);
-		return pageInfo;
+        PageInfo<SysUserDto> pageInfo = new PageInfo<>(queryInfo.getPage(), queryInfo.getRows());
+        Map<String, Object> params = new HashMap<>();
+        MapUtil.populateMap(params, queryInfo);
+
+        List<SysUserDto> dataList = null;
+        int count = teacherDao.countTeacherBasicInfo(params);
+        if (count > 0) {
+            pageInfo.setTotal(count);
+            params.put("offset", pageInfo.getOffset());
+            dataList = teacherDao.queryTeacherBasicInfo(params);
+        }
+        if (count == 0) {
+            dataList = new ArrayList<>();
+        }
+        pageInfo.setRows(dataList);
+        return pageInfo;
+    }
+
+    /**
+     * 查询老师主分部下所有学生
+     *
+     * @param param 参数
+     *              <p>  search 模糊搜索
+     *              <p> -page 页数
+     *              <p> -rows 每页数量
+     */
+    @Override
+    public PageInfo<BasicUserDto> getStudentsByTeacherOrgan(Map<String, Object> param) {
+        Page<BasicUserDto> pageInfo = PageUtil.getPageInfo(param);
+        pageInfo.setAsc("b.id_");
+        return PageUtil.pageInfo(teacherDao.getStudentsByTeacherOrgan(pageInfo, param));
     }
+
 }

+ 24 - 0
mec-biz/src/main/resources/config/mybatis/TeacherMapper.xml

@@ -1473,4 +1473,28 @@
             </if>
         </where>
     </sql>
+
+    <select id="getStudentsByTeacherOrgan" resultType="com.ym.mec.biz.dal.dto.BasicUserDto">
+        select b.id_ as userId,
+        b.organ_id_ as organId,
+        b.username_ as name,
+        b.avatar_ as headUrl,
+        b.phone_ as phone,
+        b.user_type_ as userType
+        from teacher as a
+        left join sys_user as b on a.organ_id_ = b.organ_id_
+        <where>
+            a.id_ = #{param.teacherId}
+            and b.id_ <![CDATA[ <> ]]>  #{param.teacherId}
+                and find_in_set('STUDENT', user_type_)
+            <if test="param.search != null and param.search != ''">
+                AND (b.id_ LIKE CONCAT('%', #{param.search}, '%')
+                OR b.username_ LIKE CONCAT('%', #{param.search}, '%')
+                OR b.phone_ LIKE CONCAT('%', #{param.search}, '%')
+                )
+            </if>
+        </where>
+
+    </select>
+
 </mapper>

+ 8 - 1
mec-teacher/src/main/java/com/ym/mec/teacher/controller/EduRepairController.java

@@ -20,6 +20,8 @@ import com.ym.mec.common.entity.HttpResponseResult;
 import com.ym.mec.common.exception.BizException;
 import com.ym.mec.common.page.PageInfo;
 import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiImplicitParam;
+import io.swagger.annotations.ApiImplicitParams;
 import io.swagger.annotations.ApiOperation;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -50,7 +52,12 @@ public class EduRepairController extends BaseController {
     @Autowired
     private StudentGoodsSellService studentGoodsSellService;
 
-    @ApiOperation("获取学生列表-老师主分部下所有学生")
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "search", dataType = "String", value = "关键字"),
+            @ApiImplicitParam(name = "page", dataType = "Integer", value = "页数"),
+            @ApiImplicitParam(name = "rows", dataType = "Integer", value = "每页数量"),
+    })
+    @ApiOperation("查询老师主分部下所有学生")
     @PostMapping(value = "/getStudentsByTeacherOrgan")
     public HttpResponseResult<PageInfo<BasicUserDto>> getStudentsByTeacherOrgan(@RequestBody Map<String, Object> param) {
         return succeed(studentRepairService.getStudentsByTeacherOrgan(param));