|
@@ -1,8 +1,6 @@
|
|
package com.yonge.cooleshow.biz.dal.service.impl;
|
|
package com.yonge.cooleshow.biz.dal.service.impl;
|
|
|
|
|
|
import com.alibaba.fastjson.JSON;
|
|
import com.alibaba.fastjson.JSON;
|
|
-import com.alibaba.fastjson.JSONArray;
|
|
|
|
-import com.alibaba.fastjson.JSONObject;
|
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
|
|
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
|
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
|
@@ -28,6 +26,8 @@ import com.yonge.cooleshow.biz.dal.enums.MessageTypeEnum;
|
|
import com.yonge.cooleshow.biz.dal.enums.TeacherTagEnum;
|
|
import com.yonge.cooleshow.biz.dal.enums.TeacherTagEnum;
|
|
import com.yonge.cooleshow.biz.dal.enums.TeacherTypeEnum;
|
|
import com.yonge.cooleshow.biz.dal.enums.TeacherTypeEnum;
|
|
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.TenantGroupMapper;
|
|
import com.yonge.cooleshow.biz.dal.mapper.TenantGroupMapper;
|
|
import com.yonge.cooleshow.biz.dal.mapper.UserTenantBindRecordMapper;
|
|
import com.yonge.cooleshow.biz.dal.mapper.UserTenantBindRecordMapper;
|
|
import com.yonge.cooleshow.biz.dal.queryInfo.TeacherQueryInfo;
|
|
import com.yonge.cooleshow.biz.dal.queryInfo.TeacherQueryInfo;
|
|
@@ -201,7 +201,7 @@ public class TeacherServiceImpl extends ServiceImpl<TeacherDao, Teacher> impleme
|
|
private TenantGroupMapper tenantGroupMapper;
|
|
private TenantGroupMapper tenantGroupMapper;
|
|
|
|
|
|
@Autowired
|
|
@Autowired
|
|
- private UserTenantBindRecordMapper userTenantBindRecordMapper;
|
|
|
|
|
|
+ private UserTenantBindRecordService userTenantBindRecordService;
|
|
|
|
|
|
@Autowired
|
|
@Autowired
|
|
private VipCardRecordService vipCardRecordService;
|
|
private VipCardRecordService vipCardRecordService;
|
|
@@ -756,6 +756,7 @@ public class TeacherServiceImpl extends ServiceImpl<TeacherDao, Teacher> impleme
|
|
return teacher;
|
|
return teacher;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+
|
|
// 清除专属客服信息
|
|
// 清除专属客服信息
|
|
private void clearUserCustomerRelation(Long userId) {
|
|
private void clearUserCustomerRelation(Long userId) {
|
|
|
|
|
|
@@ -1532,7 +1533,7 @@ public class TeacherServiceImpl extends ServiceImpl<TeacherDao, Teacher> impleme
|
|
bindRecord.setTenantId(tenantId);
|
|
bindRecord.setTenantId(tenantId);
|
|
bindRecord.setBindStatus(bind);
|
|
bindRecord.setBindStatus(bind);
|
|
bindRecord.setBindTime(new Date());
|
|
bindRecord.setBindTime(new Date());
|
|
- userTenantBindRecordMapper.add(bindRecord);
|
|
|
|
|
|
+ userTenantBindRecordService.save(bindRecord);
|
|
}
|
|
}
|
|
|
|
|
|
private void sendBindUnBindSMS(Long userId, String phone, MessageTypeEnum messageType, Long tenantId) {
|
|
private void sendBindUnBindSMS(Long userId, String phone, MessageTypeEnum messageType, Long tenantId) {
|
|
@@ -1695,4 +1696,139 @@ public class TeacherServiceImpl extends ServiceImpl<TeacherDao, Teacher> impleme
|
|
teacherFreeConfig.setIntervalTime(maxTime);
|
|
teacherFreeConfig.setIntervalTime(maxTime);
|
|
return teacherFreeConfig;
|
|
return teacherFreeConfig;
|
|
}
|
|
}
|
|
|
|
+
|
|
|
|
+ @Override
|
|
|
|
+ @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<SysUser> userByPhones = sysUserMapper.findUserByPhones(teacherImports.stream()
|
|
|
|
+ .map(TeacherImportWrapper.TeacherImport::getPhone).collect(Collectors.toList()));
|
|
|
|
+ Map<String, Long> userByPhoneMap = userByPhones.stream().collect(Collectors.toMap(SysUser::getPhone, SysUser::getId));
|
|
|
|
+ //获取所有用户编号
|
|
|
|
+ List<Long> userIds = userByPhones.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) {
|
|
|
|
+ Long userId = userByPhoneMap.get(sysUser.getPhone());
|
|
|
|
+ sysUser.setId(userId);
|
|
|
|
+ //老师表初始化
|
|
|
|
+ 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;
|
|
|
|
+ }
|
|
}
|
|
}
|