|
@@ -22,6 +22,8 @@ import com.yonge.cooleshow.biz.dal.dto.search.StudentSearch;
|
|
import com.yonge.cooleshow.biz.dal.entity.*;
|
|
import com.yonge.cooleshow.biz.dal.entity.*;
|
|
import com.yonge.cooleshow.biz.dal.enums.*;
|
|
import com.yonge.cooleshow.biz.dal.enums.*;
|
|
import com.yonge.cooleshow.biz.dal.enums.im.EImUserFriendSourceForm;
|
|
import com.yonge.cooleshow.biz.dal.enums.im.EImUserFriendSourceForm;
|
|
|
|
+import com.yonge.cooleshow.biz.dal.execl.entity.StudentImportWrapper;
|
|
|
|
+import com.yonge.cooleshow.biz.dal.execl.entity.TeacherImportWrapper;
|
|
import com.yonge.cooleshow.biz.dal.mapper.SysUserMapper;
|
|
import com.yonge.cooleshow.biz.dal.mapper.SysUserMapper;
|
|
import com.yonge.cooleshow.biz.dal.mapper.TenantGroupAlbumMapper;
|
|
import com.yonge.cooleshow.biz.dal.mapper.TenantGroupAlbumMapper;
|
|
import com.yonge.cooleshow.biz.dal.mapper.TenantGroupMapper;
|
|
import com.yonge.cooleshow.biz.dal.mapper.TenantGroupMapper;
|
|
@@ -47,6 +49,7 @@ import com.yonge.toolset.mybatis.support.PageUtil;
|
|
import com.yonge.toolset.thirdparty.message.MessageSenderPluginContext;
|
|
import com.yonge.toolset.thirdparty.message.MessageSenderPluginContext;
|
|
import com.yonge.toolset.utils.date.DateUtil;
|
|
import com.yonge.toolset.utils.date.DateUtil;
|
|
import com.yonge.toolset.utils.easyexcel.ExcelDataReaderProperty;
|
|
import com.yonge.toolset.utils.easyexcel.ExcelDataReaderProperty;
|
|
|
|
+import com.yonge.toolset.utils.idcard.IdcardInfoExtractor;
|
|
import com.yonge.toolset.utils.string.ValueUtil;
|
|
import com.yonge.toolset.utils.string.ValueUtil;
|
|
import lombok.extern.slf4j.Slf4j;
|
|
import lombok.extern.slf4j.Slf4j;
|
|
import org.apache.commons.lang3.StringUtils;
|
|
import org.apache.commons.lang3.StringUtils;
|
|
@@ -117,6 +120,8 @@ public class StudentServiceImpl extends ServiceImpl<StudentDao, Student> impleme
|
|
private SysMusicCompareRecordService sysMusicCompareRecordService;
|
|
private SysMusicCompareRecordService sysMusicCompareRecordService;
|
|
@Resource
|
|
@Resource
|
|
private CourseScheduleService courseScheduleService;
|
|
private CourseScheduleService courseScheduleService;
|
|
|
|
+ @Resource
|
|
|
|
+ private UserTenantBindRecordService userTenantBindRecordService;
|
|
|
|
|
|
@Override
|
|
@Override
|
|
public StudentVo detail(Long userId) {
|
|
public StudentVo detail(Long userId) {
|
|
@@ -615,6 +620,109 @@ public class StudentServiceImpl extends ServiceImpl<StudentDao, Student> impleme
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ @Override
|
|
|
|
+ @Transactional(rollbackFor = Exception.class)
|
|
|
|
+ public void importStudent(List<StudentImportWrapper.StudentImport> studentImports) {
|
|
|
|
+ //设置默认头像
|
|
|
|
+ Date now = new Date();
|
|
|
|
+ String defaultHeard = sysConfigService.findConfigValue(SysConfigConstant.STUDENT_AVATAR);
|
|
|
|
+ List<SysUser> existUser = sysUserMapper.findUserByPhones(studentImports.stream()
|
|
|
|
+ .map(StudentImportWrapper.StudentImport::getPhone).collect(Collectors.toList()));
|
|
|
|
+ Map<String, SysUser> existUserMap = existUser.stream().collect(Collectors.toMap(SysUser::getPhone, o -> o));
|
|
|
|
+ List<SysUser> sysUsers = new ArrayList<>();
|
|
|
|
+ for (StudentImportWrapper.StudentImport studentImport : studentImports) {
|
|
|
|
+ SysUser sysUser = existUserMap.get(studentImport.getPhone());
|
|
|
|
+ if(sysUser == null) {
|
|
|
|
+ sysUser = new SysUser();
|
|
|
|
+ sysUser.setAvatar(defaultHeard);
|
|
|
|
+ sysUser.setPhone(studentImport.getPhone());
|
|
|
|
+ sysUser.setUsername(studentImport.getUserName());
|
|
|
|
+ sysUser.setBirthdate(DateUtil.stringToDate(studentImport.getBirthday(), DateUtil.DEFAULT_PATTERN));
|
|
|
|
+ sysUser.setGender("男".equals(studentImport.getGender()) ? 1 : 0);
|
|
|
|
+ sysUser.setTenantId(studentImport.getTenantId());
|
|
|
|
+ sysUser.setCreateTime(now);
|
|
|
|
+ }
|
|
|
|
+ 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("STUDENT");
|
|
|
|
+ } else if (!sysUser.getUserType().contains("STUDENT")) {
|
|
|
|
+ sysUser.setUserType(sysUser.getUserType() + ",STUDENT");
|
|
|
|
+ }
|
|
|
|
+ sysUser.setUpdateTime(now);
|
|
|
|
+ sysUsers.add(sysUser);
|
|
|
|
+ }
|
|
|
|
+ //获取需要新增的用户
|
|
|
|
+ List<SysUser> addUsers = sysUsers.stream().filter(o -> o.getId() == null).collect(Collectors.toList());
|
|
|
|
+ if (org.apache.commons.collections.CollectionUtils.isNotEmpty(addUsers)) {
|
|
|
|
+ sysUserMapper.batchInsert(addUsers);
|
|
|
|
+ }
|
|
|
|
+ //获取修改的用户
|
|
|
|
+ List<SysUser> updateUsers = sysUsers.stream().filter(o -> o.getId() != null).collect(Collectors.toList());
|
|
|
|
+ if (org.apache.commons.collections.CollectionUtils.isNotEmpty(updateUsers)) {
|
|
|
|
+ sysUserMapper.batchUpdate(updateUsers);
|
|
|
|
+ }
|
|
|
|
+ //获取所有用户编号
|
|
|
|
+ List<Long> userIds = sysUsers.stream().map(SysUser::getId).collect(Collectors.toList());
|
|
|
|
+ //机构学员添加机构绑定记录
|
|
|
|
+ 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<>();
|
|
|
|
+ //保存老师信息
|
|
|
|
+ Map<String,StudentImportWrapper.StudentImport> studentImportMap = studentImports.stream()
|
|
|
|
+ .collect(Collectors.toMap(StudentImportWrapper.StudentImport::getPhone, o -> o));
|
|
|
|
+ List<Student> students = new ArrayList<>();
|
|
|
|
+ for (SysUser sysUser : sysUsers) {
|
|
|
|
+ StudentImportWrapper.StudentImport studentImport = studentImportMap.get(sysUser.getPhone());
|
|
|
|
+ Student student = new Student();
|
|
|
|
+ student.setUserId(sysUser.getId());
|
|
|
|
+ student.setTenantId(sysUser.getTenantId());
|
|
|
|
+ student.setSubjectId(studentImport.getSubjectId().toString());
|
|
|
|
+ student.setAvatar(sysUser.getAvatar());
|
|
|
|
+ student.setCreateTime(now);
|
|
|
|
+ student.setLockFlag(UserLockFlag.NORMAL);
|
|
|
|
+ student.setTenantGroupId(studentImport.getTenantGroupId());
|
|
|
|
+ students.add(student);
|
|
|
|
+
|
|
|
|
+ //机构学员添加机构绑定记录
|
|
|
|
+ UserTenantBindRecord userTenantBindRecord = userTenantBindRecordMap.get(sysUser.getId());
|
|
|
|
+ if (userTenantBindRecord == null) {
|
|
|
|
+ userTenantBindRecord = new UserTenantBindRecord();
|
|
|
|
+ userTenantBindRecord.setUserId(sysUser.getId());
|
|
|
|
+ userTenantBindRecord.setUserType("STUDENT");
|
|
|
|
+ userTenantBindRecord.setTenantId(sysUser.getTenantId());
|
|
|
|
+ userTenantBindRecord.setBindStatus(true);
|
|
|
|
+ userTenantBindRecord.setBindTime(now);
|
|
|
|
+ bindRecords.add(userTenantBindRecord);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ this.saveBatch(students);
|
|
|
|
+ if (CollectionUtils.isNotEmpty(bindRecords)) {
|
|
|
|
+ userTenantBindRecordService.saveBatch(bindRecords);
|
|
|
|
+ }
|
|
|
|
+ for (SysUser sysUser : sysUsers) {
|
|
|
|
+ try {
|
|
|
|
+ imGroupCoreService.register(String.valueOf(sysUser.getId()), ClientEnum.STUDENT.getCode(),
|
|
|
|
+ sysUser.getUsername(), sysUser.getAvatar());
|
|
|
|
+ // 加好友
|
|
|
|
+ if (sysUser.getTenantId() != null && sysUser.getTenantId() != -1L) {
|
|
|
|
+ // 自动与机构老师成为好友
|
|
|
|
+ QueryWrapper<Teacher> queryWrapper = new QueryWrapper<>();
|
|
|
|
+ queryWrapper.lambda().eq(Teacher::getTenantId, sysUser.getTenantId());
|
|
|
|
+ List<Teacher> teacherList = teacherDao.selectList(queryWrapper);
|
|
|
|
+ teacherList.forEach(next ->
|
|
|
|
+ imUserFriendService.saveUserFriend(next.getUserId(), new HashSet<>(ImmutableList.of(sysUser.getId())), EImUserFriendSourceForm.TEACHER)
|
|
|
|
+ );
|
|
|
|
+ }
|
|
|
|
+ } catch (Exception e) {
|
|
|
|
+ log.error("导入IM账号到三方 studentId={}", sysUser.getId(), e);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
@Transactional(rollbackFor = Exception.class)
|
|
@Transactional(rollbackFor = Exception.class)
|
|
@Override
|
|
@Override
|
|
public void updateTenant(Student student, Long toTenantId) {
|
|
public void updateTenant(Student student, Long toTenantId) {
|