|  | @@ -192,7 +192,7 @@ public class TeacherServiceImpl extends ServiceImpl<TeacherDao, Teacher> impleme
 | 
	
		
			
				|  |  |      private TenantGroupMapper tenantGroupMapper;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      @Autowired
 | 
	
		
			
				|  |  | -    private UserTenantBindRecordMapper userTenantBindRecordMapper;
 | 
	
		
			
				|  |  | +    private UserTenantBindRecordService userTenantBindRecordService;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      @Autowired
 | 
	
		
			
				|  |  |      private VipCardRecordService vipCardRecordService;
 | 
	
	
		
			
				|  | @@ -747,6 +747,7 @@ public class TeacherServiceImpl extends ServiceImpl<TeacherDao, Teacher> impleme
 | 
	
		
			
				|  |  |          return teacher;
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |      // 清除专属客服信息
 | 
	
		
			
				|  |  |      private void clearUserCustomerRelation(Long userId) {
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -1523,7 +1524,7 @@ public class TeacherServiceImpl extends ServiceImpl<TeacherDao, Teacher> impleme
 | 
	
		
			
				|  |  |          bindRecord.setTenantId(tenantId);
 | 
	
		
			
				|  |  |          bindRecord.setBindStatus(bind);
 | 
	
		
			
				|  |  |          bindRecord.setBindTime(new Date());
 | 
	
		
			
				|  |  | -        userTenantBindRecordMapper.add(bindRecord);
 | 
	
		
			
				|  |  | +        userTenantBindRecordService.save(bindRecord);
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      private void sendBindUnBindSMS(Long userId, String phone, MessageTypeEnum messageType, Long tenantId) {
 | 
	
	
		
			
				|  | @@ -1688,7 +1689,131 @@ public class TeacherServiceImpl extends ServiceImpl<TeacherDao, Teacher> impleme
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      @Override
 | 
	
		
			
				|  |  | -    public void importTeacher(List<TeacherImportWrapper.TeacherImport> collect) {
 | 
	
		
			
				|  |  | +    @Transactional(rollbackFor = Exception.class)
 | 
	
		
			
				|  |  | +    public void importTeacher(List<TeacherImportWrapper.TeacherImport> teacherImports) {
 | 
	
		
			
				|  |  | +        //设置默认头像
 | 
	
		
			
				|  |  | +        Date now = new Date();
 | 
	
		
			
				|  |  | +        String defaultHeard = sysConfigService.findConfigValue(SysConfigConstant.TEACHER_AVATAR);
 | 
	
		
			
				|  |  | +        List<SysUser> existUser = sysUserMapper.findUserByPhones(teacherImports.stream().map(TeacherImportWrapper.TeacherImport::getPhone).collect(Collectors.toList()));
 | 
	
		
			
				|  |  | +        Map<String, SysUser> existUserMap = existUser.stream().collect(Collectors.toMap(SysUser::getPhone, o -> o));
 | 
	
		
			
				|  |  | +        List<SysUser> sysUsers = new ArrayList<>();
 | 
	
		
			
				|  |  | +        for (TeacherImportWrapper.TeacherImport teacherImport : teacherImports) {
 | 
	
		
			
				|  |  | +            SysUser sysUser = existUserMap.get(teacherImport.getPhone());
 | 
	
		
			
				|  |  | +            if(sysUser == null) {
 | 
	
		
			
				|  |  | +                sysUser = new SysUser();
 | 
	
		
			
				|  |  | +                sysUser.setAvatar(defaultHeard);
 | 
	
		
			
				|  |  | +                sysUser.setPhone(teacherImport.getPhone());
 | 
	
		
			
				|  |  | +                sysUser.setUsername(teacherImport.getUsername());
 | 
	
		
			
				|  |  | +                sysUser.setCreateTime(now);
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +            if(StringUtils.isEmpty(sysUser.getIdCardNo()) && StringUtils.isNotEmpty(teacherImport.getIdCardNo())){
 | 
	
		
			
				|  |  | +                //通过身份证号获取身份信息
 | 
	
		
			
				|  |  | +                IdcardInfoExtractor idcardInfo = new IdcardInfoExtractor(teacherImport.getIdCardNo(), false);
 | 
	
		
			
				|  |  | +                sysUser.setIdCardNo(teacherImport.getIdCardNo());
 | 
	
		
			
				|  |  | +                sysUser.setGender(idcardInfo.getGender());
 | 
	
		
			
				|  |  | +                sysUser.setBirthdate(idcardInfo.getBirthday());
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +            if(StringUtils.isEmpty(sysUser.getRealName()) && StringUtils.isNotEmpty(teacherImport.getRealName())){
 | 
	
		
			
				|  |  | +                sysUser.setRealName(teacherImport.getRealName());
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +            if(StringUtils.isEmpty(sysUser.getPassword())){
 | 
	
		
			
				|  |  | +                //初始密码,klx+手机号四位
 | 
	
		
			
				|  |  | +                String password = "klx" + sysUser.getPhone().substring(sysUser.getPhone().length() - 4);
 | 
	
		
			
				|  |  | +                sysUser.setPassword(new BCryptPasswordEncoder().encode(password));
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +            if (StringUtil.isEmpty(sysUser.getUserType())) {
 | 
	
		
			
				|  |  | +                sysUser.setUserType("TEACHER");
 | 
	
		
			
				|  |  | +            } else if (!sysUser.getUserType().contains("TEACHER")) {
 | 
	
		
			
				|  |  | +                sysUser.setUserType(sysUser.getUserType() + ",TEACHER");
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +            sysUser.setUpdateTime(now);
 | 
	
		
			
				|  |  | +            sysUsers.add(sysUser);
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +        //获取需要新增的用户
 | 
	
		
			
				|  |  | +        List<SysUser> addUsers = sysUsers.stream().filter(o -> o.getId() == null).collect(Collectors.toList());
 | 
	
		
			
				|  |  | +        if (CollectionUtils.isNotEmpty(addUsers)) {
 | 
	
		
			
				|  |  | +            sysUserMapper.batchInsert(addUsers);
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +        //获取修改的用户
 | 
	
		
			
				|  |  | +        List<SysUser> updateUsers = sysUsers.stream().filter(o -> o.getId() != null).collect(Collectors.toList());
 | 
	
		
			
				|  |  | +        if (CollectionUtils.isNotEmpty(updateUsers)) {
 | 
	
		
			
				|  |  | +            sysUserMapper.batchUpdate(updateUsers);
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +        //保存老师信息
 | 
	
		
			
				|  |  | +        Map<String,TeacherImportWrapper.TeacherImport> teacherImportMap = teacherImports.stream().collect(Collectors.toMap(TeacherImportWrapper.TeacherImport::getPhone, o -> o));
 | 
	
		
			
				|  |  | +        //获取所有用户编号
 | 
	
		
			
				|  |  | +        List<Long> userIds = sysUsers.stream().map(SysUser::getId).collect(Collectors.toList());
 | 
	
		
			
				|  |  | +        //获取所有老师账户表
 | 
	
		
			
				|  |  | +        List<UserAccount> userAccounts = userAccountService.lambdaQuery().in(UserAccount::getUserId, userIds).list();
 | 
	
		
			
				|  |  | +        Map<Long, UserAccount> userAccountMap = userAccounts.stream().collect(Collectors.toMap(UserAccount::getUserId, o -> o));
 | 
	
		
			
				|  |  | +        List<UserAccount> addAccounts = new ArrayList<>();
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        //机构老师添加机构绑定记录
 | 
	
		
			
				|  |  | +        List<UserTenantBindRecord> userTenantBindRecords = userTenantBindRecordService.lambdaQuery().in(UserTenantBindRecord::getUserId, userIds).list();
 | 
	
		
			
				|  |  | +        Map<Long, UserTenantBindRecord> userTenantBindRecordMap = userTenantBindRecords.stream().collect(Collectors.toMap(UserTenantBindRecord::getUserId, o -> o));
 | 
	
		
			
				|  |  | +        List<UserTenantBindRecord> bindRecords = new ArrayList<>();
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        List<Teacher> teachers = new ArrayList<>();
 | 
	
		
			
				|  |  | +        for (SysUser sysUser : sysUsers) {
 | 
	
		
			
				|  |  | +            //老师表初始化
 | 
	
		
			
				|  |  | +            TeacherImportWrapper.TeacherImport teacherImport = teacherImportMap.get(sysUser.getPhone());
 | 
	
		
			
				|  |  | +            teacherImport.setUserId(sysUser.getId());
 | 
	
		
			
				|  |  | +            Teacher teacher = this.initTeacher(teacherImport);
 | 
	
		
			
				|  |  | +            teacher.setAvatar(sysUser.getAvatar());
 | 
	
		
			
				|  |  | +            teachers.add(teacher);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +            //老师账户表初始化
 | 
	
		
			
				|  |  | +            UserAccount userAccount = userAccountMap.get(sysUser.getId());
 | 
	
		
			
				|  |  | +            if (userAccount == null) {
 | 
	
		
			
				|  |  | +                userAccount = new UserAccount();
 | 
	
		
			
				|  |  | +                userAccount.setUserId(sysUser.getId());
 | 
	
		
			
				|  |  | +                addAccounts.add(userAccount);
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +            //机构老师添加机构绑定记录
 | 
	
		
			
				|  |  | +            UserTenantBindRecord userTenantBindRecord = userTenantBindRecordMap.get(sysUser.getId());
 | 
	
		
			
				|  |  | +            if (userTenantBindRecord == null) {
 | 
	
		
			
				|  |  | +                userTenantBindRecord = new UserTenantBindRecord();
 | 
	
		
			
				|  |  | +                userTenantBindRecord.setUserId(sysUser.getId());
 | 
	
		
			
				|  |  | +                userTenantBindRecord.setUserType("TEACHER");
 | 
	
		
			
				|  |  | +                userTenantBindRecord.setTenantId(teacherImport.getTenantId());
 | 
	
		
			
				|  |  | +                userTenantBindRecord.setBindStatus(true);
 | 
	
		
			
				|  |  | +                userTenantBindRecord.setBindTime(now);
 | 
	
		
			
				|  |  | +                bindRecords.add(userTenantBindRecord);
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +        //批量保存老师
 | 
	
		
			
				|  |  | +        this.saveBatch(teachers);
 | 
	
		
			
				|  |  | +        //批量保存老师账户表
 | 
	
		
			
				|  |  | +        if (CollectionUtils.isNotEmpty(addAccounts)) {
 | 
	
		
			
				|  |  | +            userAccountService.saveBatch(addAccounts);
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +        //批量保存机构老师绑定记录
 | 
	
		
			
				|  |  | +        if (CollectionUtils.isNotEmpty(bindRecords)) {
 | 
	
		
			
				|  |  | +            userTenantBindRecordService.saveBatch(bindRecords);
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +        //批量导入IM账号到三方
 | 
	
		
			
				|  |  | +        sysUsers.forEach(sysUser -> {
 | 
	
		
			
				|  |  | +            try {
 | 
	
		
			
				|  |  | +                imGroupCoreService.register(String.valueOf(sysUser.getId()), ClientEnum.TEACHER.getCode(),
 | 
	
		
			
				|  |  | +                        sysUser.getUsername(), sysUser.getAvatar());
 | 
	
		
			
				|  |  | +            } catch (Exception e) {
 | 
	
		
			
				|  |  | +                log.error("导入IM账号到三方 teacherId={}", sysUser.getId(), e);
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +        });
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    private Teacher initTeacher(TeacherImportWrapper.TeacherImport teacherImport) {
 | 
	
		
			
				|  |  | +        Teacher teacher = new Teacher();
 | 
	
		
			
				|  |  | +        teacher.setUserId(teacherImport.getUserId());
 | 
	
		
			
				|  |  | +        teacher.setEntryFlag(YesOrNoEnum.NO);
 | 
	
		
			
				|  |  | +        teacher.setMusicianFlag(YesOrNoEnum.NO);
 | 
	
		
			
				|  |  | +        teacher.setSubjectId(teacherImport.getSubjectId());
 | 
	
		
			
				|  |  | +        teacher.setIsSettlement(!ESettlementFrom.NO.equals(teacherImport.getSettlementFrom()));
 | 
	
		
			
				|  |  | +        teacher.setIsTestUser(teacherImport.getIsTestUser());
 | 
	
		
			
				|  |  | +        teacher.setSettlementFrom(teacherImport.getSettlementFrom());
 | 
	
		
			
				|  |  | +        teacher.setTenantId(teacherImport.getTenantId());
 | 
	
		
			
				|  |  | +        teacher.setCustomerService(teacherImport.getCustomerService());
 | 
	
		
			
				|  |  | +        return teacher;
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  }
 |