Browse Source

Merge remote-tracking branch 'origin/saas' into saas

zouxuan 3 years ago
parent
commit
1d9351185d

+ 400 - 389
mec-biz/src/main/java/com/ym/mec/biz/service/impl/EmployeeServiceImpl.java

@@ -1,12 +1,16 @@
 package com.ym.mec.biz.service.impl;
 
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.ym.mec.auth.api.client.SysUserFeignService;
 import com.ym.mec.auth.api.entity.SysRole;
 import com.ym.mec.auth.api.entity.SysUser;
 import com.ym.mec.biz.dal.dao.*;
 import com.ym.mec.biz.dal.dto.EmployeeDto;
 import com.ym.mec.biz.dal.dto.EmployeeLevelDto;
-import com.ym.mec.biz.dal.entity.*;
+import com.ym.mec.biz.dal.entity.Employee;
+import com.ym.mec.biz.dal.entity.Organization;
+import com.ym.mec.biz.dal.entity.SysUserCashAccount;
+import com.ym.mec.biz.dal.entity.TenantInfo;
 import com.ym.mec.biz.dal.enums.EmployeeOperateEnum;
 import com.ym.mec.biz.dal.enums.GroupType;
 import com.ym.mec.biz.dal.enums.ParamEnum;
@@ -40,32 +44,32 @@ import java.util.concurrent.Executors;
 import java.util.stream.Collectors;
 
 @Service
-public class EmployeeServiceImpl extends BaseServiceImpl<Integer, Employee>  implements EmployeeService {
+public class EmployeeServiceImpl extends BaseServiceImpl<Integer, Employee> implements EmployeeService {
 
-	@Autowired
-	private EmployeeDao employeeDao;
-	@Autowired
-	private ImFeignService imFeignService;
-	@Autowired
-	private ImGroupMemberService imGroupMemberService;
-	@Autowired
-	private SysUserFeignService sysUserFeignService;
-	@Autowired
-	private TeacherDao teacherDao;
-	@Autowired
-	private SysUserCashAccountDao sysUserCashAccountDao;
-	@Autowired
-	private ClassGroupDao classGroupDao;
-	@Autowired
-	private ImUserFriendService imUserFriendService;
-	@Autowired
-	private OrganizationDao organizationDao;
-	@Autowired
-	private ImGroupDao imGroupDao;
-	@Autowired
-	private CooperationOrganDao cooperationOrganDao;
-	@Autowired
-	private OaUserService oaUserService;
+    @Autowired
+    private EmployeeDao employeeDao;
+    @Autowired
+    private ImFeignService imFeignService;
+    @Autowired
+    private ImGroupMemberService imGroupMemberService;
+    @Autowired
+    private SysUserFeignService sysUserFeignService;
+    @Autowired
+    private TeacherDao teacherDao;
+    @Autowired
+    private SysUserCashAccountDao sysUserCashAccountDao;
+    @Autowired
+    private ClassGroupDao classGroupDao;
+    @Autowired
+    private ImUserFriendService imUserFriendService;
+    @Autowired
+    private OrganizationDao organizationDao;
+    @Autowired
+    private ImGroupDao imGroupDao;
+    @Autowired
+    private CooperationOrganDao cooperationOrganDao;
+    @Autowired
+    private OaUserService oaUserService;
     @Autowired
     private TenantInfoService tenantInfoService;
     @Autowired
@@ -73,384 +77,384 @@ public class EmployeeServiceImpl extends BaseServiceImpl<Integer, Employee>  imp
     @Autowired
     private SysEmployeePositionDao employeePositionDao;
 
-	@Override
-	public BaseDAO<Integer, Employee> getDAO() {
-		return employeeDao;
-	}
+    @Override
+    public BaseDAO<Integer, Employee> getDAO() {
+        return employeeDao;
+    }
 
-	public static void checkTenantId(Integer tenantId,Integer targetTenantId){
-		//如果机构不一致,不允许跨机构注册
-		if(tenantId != null && tenantId != 0 && !tenantId.equals(targetTenantId)){
-			throw new LockedException("用户已注册");
-		}
-	}
+    public static void checkTenantId(Integer tenantId, Integer targetTenantId) {
+        //如果机构不一致,不允许跨机构注册
+        if (tenantId != null && tenantId != 0 && !tenantId.equals(targetTenantId)) {
+            throw new LockedException("用户已注册");
+        }
+    }
 
-	@Override
-	@Transactional(rollbackFor = Exception.class)
-	public void add(Employee employee){
-		SysUser user = teacherDao.getUserWithPhone(employee.getPhone());
-		Integer tenantId = employee.getTenantId();
-		if(user != null && user.getId() != null){
-			checkTenantId(tenantId,user.getTenantId());
-			Employee employee1 = employeeDao.get(user.getId());
-			if(employee1 == null){
-				if(StringUtils.isEmpty(user.getPassword())){
-					// 修改 gym + 联系人手机后4位
-					int phoneStrLen = employee.getPhone().length();
-					employee.setPassword(new BCryptPasswordEncoder().encode("gym" + employee.getPhone().substring(phoneStrLen - 4, phoneStrLen)));
-					// employee.setPassword(new BCryptPasswordEncoder().encode(ParamEnum.INIT_PASSWORD.getCode().toString()));
-				}
-				employee.setUserId(user.getId());
-				employee.setId(user.getId());
-				employeeDao.insert(employee);
-				//新增用户角色
-				employeeDao.batchAddEmployeeRole(user.getId(),employee.getRoleIds(), tenantId);
-				//新增用户职位
-				employeePositionService.batchAddPosition(employee.getId(),employee.getPositionIds(), tenantId);
-				employee.setUserType(user.getUserType() + ",SYSTEM");
-				teacherDao.updateUser(employee);
-				return;
-			}else{
-				throw new BizException("员工已存在");
-			}
-		}
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void add(Employee employee) {
+        SysUser user = teacherDao.getUserWithPhone(employee.getPhone());
+        Integer tenantId = employee.getTenantId();
+        if (user != null && user.getId() != null) {
+            checkTenantId(tenantId, user.getTenantId());
+            Employee employee1 = employeeDao.get(user.getId());
+            if (employee1 == null) {
+                if (StringUtils.isEmpty(user.getPassword())) {
+                    // 修改 gym + 联系人手机后4位
+                    int phoneStrLen = employee.getPhone().length();
+                    employee.setPassword(new BCryptPasswordEncoder().encode("gym" + employee.getPhone().substring(phoneStrLen - 4, phoneStrLen)));
+                    // employee.setPassword(new BCryptPasswordEncoder().encode(ParamEnum.INIT_PASSWORD.getCode().toString()));
+                }
+                employee.setUserId(user.getId());
+                employee.setId(user.getId());
+                employeeDao.insert(employee);
+                //新增用户角色
+                employeeDao.batchAddEmployeeRole(user.getId(), employee.getRoleIds(), tenantId);
+                //新增用户职位
+                employeePositionService.batchAddPosition(employee.getId(), employee.getPositionIds(), tenantId);
+                employee.setUserType(user.getUserType() + ",SYSTEM");
+                teacherDao.updateUser(employee);
+                return;
+            } else {
+                throw new BizException("员工已存在");
+            }
+        }
         if (StringUtils.isBlank(employee.getPassword())) {
             int phoneStrLen = employee.getPhone().length();
             employee.setPassword(new BCryptPasswordEncoder().encode("gym" + employee.getPhone().substring(phoneStrLen - 4, phoneStrLen)));
         }
         employee.setUserType("SYSTEM");
-		teacherDao.addSysUser(employee);
-		employee.setUserId(employee.getId());
+        teacherDao.addSysUser(employee);
+        employee.setUserId(employee.getId());
         employeeDao.insert(employee);
-		//新增用户角色
-		employeeDao.batchAddEmployeeRole(employee.getId(),employee.getRoleIds(), tenantId);
-		//新增用户职位
-		employeePositionService.batchAddPosition(employee.getId(),employee.getPositionIds(), tenantId);
-		//添加用户现金账户
-		sysUserCashAccountDao.insert(new SysUserCashAccount(employee.getId(), tenantId,"CNY"));
-		ImResult imResult = imFeignService.register(new ImUserModel(employee.getId().toString(), employee.getUsername(),null));
-		employee.setImToken(imResult.getToken());
-		teacherDao.updateUser(employee);
-		if(user != null){
-			employee.setAvatar(user.getAvatar());
-		}
+        //新增用户角色
+        employeeDao.batchAddEmployeeRole(employee.getId(), employee.getRoleIds(), tenantId);
+        //新增用户职位
+        employeePositionService.batchAddPosition(employee.getId(), employee.getPositionIds(), tenantId);
+        //添加用户现金账户
+        sysUserCashAccountDao.insert(new SysUserCashAccount(employee.getId(), tenantId, "CNY"));
+        ImResult imResult = imFeignService.register(new ImUserModel(employee.getId().toString(), employee.getUsername(), null));
+        employee.setImToken(imResult.getToken());
+        teacherDao.updateUser(employee);
+        if (user != null) {
+            employee.setAvatar(user.getAvatar());
+        }
 
-		//添加到OA
-		oaUserService.addOaUser(employee);
-	}
+        //添加到OA
+        oaUserService.addOaUser(employee);
+    }
 
-	@Override
-	@Transactional(rollbackFor = Exception.class)
-	public void updateEmployee(Employee employee) {
-		Employee employee1 = employeeDao.get(employee.getId());
-		if(null==employee1){
-			throw new BizException("员工信息不存在");
-		}
-		employee.setUserId(employee.getId());
-		SysUser sysUser = teacherDao.getUserWithPhone(employee.getPhone());
-		if(StringUtils.isNotEmpty(employee.getPhone())){
-			if(sysUser != null && !sysUser.getId().equals(employee.getUserId())){
-				throw new BizException("手机号已存在");
-			}
-			if(sysUser == null){
-				sysUser = sysUserFeignService.queryUserInfo();
-			}
-		}
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void updateEmployee(Employee employee) {
+        Employee employee1 = employeeDao.get(employee.getId());
+        if (null == employee1) {
+            throw new BizException("员工信息不存在");
+        }
+        employee.setUserId(employee.getId());
+        SysUser sysUser = teacherDao.getUserWithPhone(employee.getPhone());
+        if (StringUtils.isNotEmpty(employee.getPhone())) {
+            if (sysUser != null && !sysUser.getId().equals(employee.getUserId())) {
+                throw new BizException("手机号已存在");
+            }
+            if (sysUser == null) {
+                sysUser = sysUserFeignService.queryUserInfo();
+            }
+        }
 
-		// 同步更新机构手机号 如果它存在  138xxx -> 159xxx
-		SysUser user = teacherDao.getUser(employee.getId());
-		if (!Objects.equals(user.getPhone(), employee.getPhone())) {
-			tenantInfoService.updatePhone(employee.getPhone(), user.getPhone());
-		}
+        // 同步更新机构手机号 如果它存在  138xxx -> 159xxx
+        SysUser user = teacherDao.getUser(employee.getId());
+        if (!Objects.equals(user.getPhone(), employee.getPhone())) {
+            tenantInfoService.updatePhone(employee.getPhone(), user.getPhone());
+        }
 
-		employeeDao.update(employee);
-		//删除当前用户角色
-		employeeDao.delEmployeeRole(employee.getId());
-		//新增用户角色
-		Integer tenantId = TenantContextHolder.getTenantId();
-		employeeDao.batchAddEmployeeRole(employee.getId(),employee.getRoleIds(), tenantId);
+        employeeDao.update(employee);
+        //删除当前用户角色
+        employeeDao.delEmployeeRole(employee.getId());
+        //新增用户角色
+        Integer tenantId = TenantContextHolder.getTenantId();
+        employeeDao.batchAddEmployeeRole(employee.getId(), employee.getRoleIds(), tenantId);
 
-		//删除用户职位
-		employeePositionService.delPosition(employee.getId(),tenantId);
-		//添加职位
-		employeePositionService.batchAddPosition(employee.getId(),employee.getPositionIds(), tenantId);
-		teacherDao.updateUser(employee);
-		imGroupDao.updateNickname(employee.getUserId(), employee.getRealName());
-		imGroupDao.updateUserFriendNickname(employee.getUserId(), employee.getRealName());
-		imFeignService.update(new ImUserModel(employee.getUserId().toString(),employee.getRealName(),sysUser.getAvatar()));
+        //删除用户职位
+        employeePositionService.delPosition(employee.getId(), tenantId);
+        //添加职位
+        employeePositionService.batchAddPosition(employee.getId(), employee.getPositionIds(), tenantId);
+        teacherDao.updateUser(employee);
+        imGroupDao.updateNickname(employee.getUserId(), employee.getRealName());
+        imGroupDao.updateUserFriendNickname(employee.getUserId(), employee.getRealName());
+        imFeignService.update(new ImUserModel(employee.getUserId().toString(), employee.getRealName(), sysUser.getAvatar()));
 
-		employee.setAvatar(sysUser.getAvatar());
+        employee.setAvatar(sysUser.getAvatar());
         //更新机构信息
         TenantInfo tenantInfo = tenantInfoService.getOne(new WrapperUtil<TenantInfo>()
-                .queryWrapper().eq("user_id_",employee.getId()));
-        if(Objects.nonNull(tenantInfo) && !Objects.equals(tenantInfo.getPhone(),employee.getPhone())){
+                .queryWrapper().eq("user_id_", employee.getId()));
+        if (Objects.nonNull(tenantInfo) && !Objects.equals(tenantInfo.getPhone(), employee.getPhone())) {
             tenantInfo.setPhone(employee.getPhone());
             tenantInfo.setUpdatedTime(new Date());
             tenantInfo.setUpdatedBy(sysUser.getId());
             tenantInfoService.updateById(tenantInfo);
         }
 
-		//更新OA信息
-		oaUserService.updateOaUser(employee);
-	}
+        //更新OA信息
+        oaUserService.updateOaUser(employee);
+    }
 
-	@Override
-	public PageInfo queryEmployByOrganId(EmployeeQueryInfo queryInfo){
-		SysUser user = sysUserFeignService.queryUserInfo();
-		if(user == null){
-			throw new BizException("获取用户信息失败");
-		}
-		PageInfo<EmployeeDto> pageInfo = new PageInfo<>(queryInfo.getPage(), queryInfo.getRows());
-		Map<String, Object> params = new HashMap<>();
-		MapUtil.populateMap(params, queryInfo);
-		List<EmployeeDto> dataList = null;
-		int count = employeeDao.queryEmployByOrganIdCount(params);
-		if (count > 0) {
-			pageInfo.setTotal(count);
-			params.put("offset", pageInfo.getOffset());
-			dataList = employeeDao.queryEmployByOrganId(params);
-			Integer tenantId = TenantContextHolder.getTenantId();
-			List<Integer> userIds = dataList.stream().map(e -> e.getId()).collect(Collectors.toList());
-			Map<Integer,String> positionMap = MapUtil.convertMybatisMap(employeePositionDao.queryPositionMap(userIds,tenantId));
-			Map<Integer,String> positionNameMap = MapUtil.convertMybatisMap(employeePositionDao.queryPositionNameMap(userIds,tenantId));
-			List<Integer> allOrganIds = new ArrayList<>();
-			for (EmployeeDto employeeDto : dataList) {
-				employeeDto.setPositionIds(positionMap.get(employeeDto.getId()));
-				employeeDto.setPositionNames(positionNameMap.get(employeeDto.getId()));
-				if(StringUtils.isBlank(employeeDto.getOrganIdStr())){
-					continue;
-				}
-				List<Integer> organIds = Arrays.stream(employeeDto.getOrganIdStr().split(",")).map(s -> Integer.valueOf(s)).collect(Collectors.toList());
-				allOrganIds.addAll(organIds);
-			}
-			if(!CollectionUtils.isEmpty(allOrganIds)){
-				List<Organization> allOrgans = organizationDao.findOrgans(allOrganIds);
-				for (EmployeeDto employeeDto : dataList) {
-					if(StringUtils.isBlank(employeeDto.getOrganIdStr())){
-						continue;
-					}
-					List<Integer> organIds = Arrays.stream(employeeDto.getOrganIdStr().split(",")).map(s -> Integer.valueOf(s)).collect(Collectors.toList());
-					List<Organization> organs = allOrgans.stream().filter(organ -> organIds.contains(organ.getId())).collect(Collectors.toList());
-					List<String> organNames = organs.stream().map(Organization::getName).collect(Collectors.toList());
-					employeeDto.setOrganNameList(organNames);
-					employeeDto.setOrganIdList(organIds.stream().mapToLong(Long::valueOf).boxed().collect(Collectors.toList()));
-				}
-			}
-		}
-		if (count == 0) {
-			dataList = new ArrayList<>();
-		}
-		pageInfo.setRows(dataList);
-		return pageInfo;
-	}
+    @Override
+    public PageInfo queryEmployByOrganId(EmployeeQueryInfo queryInfo) {
+        SysUser user = sysUserFeignService.queryUserInfo();
+        if (user == null) {
+            throw new BizException("获取用户信息失败");
+        }
+        PageInfo<EmployeeDto> pageInfo = new PageInfo<>(queryInfo.getPage(), queryInfo.getRows());
+        Map<String, Object> params = new HashMap<>();
+        MapUtil.populateMap(params, queryInfo);
+        List<EmployeeDto> dataList = null;
+        int count = employeeDao.queryEmployByOrganIdCount(params);
+        if (count > 0) {
+            pageInfo.setTotal(count);
+            params.put("offset", pageInfo.getOffset());
+            dataList = employeeDao.queryEmployByOrganId(params);
+            Integer tenantId = TenantContextHolder.getTenantId();
+            List<Integer> userIds = dataList.stream().map(e -> e.getId()).collect(Collectors.toList());
+            Map<Integer, String> positionMap = MapUtil.convertMybatisMap(employeePositionDao.queryPositionMap(userIds, tenantId));
+            Map<Integer, String> positionNameMap = MapUtil.convertMybatisMap(employeePositionDao.queryPositionNameMap(userIds, tenantId));
+            List<Integer> allOrganIds = new ArrayList<>();
+            for (EmployeeDto employeeDto : dataList) {
+                employeeDto.setPositionIds(positionMap.get(employeeDto.getId()));
+                employeeDto.setPositionNames(positionNameMap.get(employeeDto.getId()));
+                if (StringUtils.isBlank(employeeDto.getOrganIdStr())) {
+                    continue;
+                }
+                List<Integer> organIds = Arrays.stream(employeeDto.getOrganIdStr().split(",")).map(s -> Integer.valueOf(s)).collect(Collectors.toList());
+                allOrganIds.addAll(organIds);
+            }
+            if (!CollectionUtils.isEmpty(allOrganIds)) {
+                List<Organization> allOrgans = organizationDao.findOrgans(allOrganIds);
+                for (EmployeeDto employeeDto : dataList) {
+                    if (StringUtils.isBlank(employeeDto.getOrganIdStr())) {
+                        continue;
+                    }
+                    List<Integer> organIds = Arrays.stream(employeeDto.getOrganIdStr().split(",")).map(s -> Integer.valueOf(s)).collect(Collectors.toList());
+                    List<Organization> organs = allOrgans.stream().filter(organ -> organIds.contains(organ.getId())).collect(Collectors.toList());
+                    List<String> organNames = organs.stream().map(Organization::getName).collect(Collectors.toList());
+                    employeeDto.setOrganNameList(organNames);
+                    employeeDto.setOrganIdList(organIds.stream().mapToLong(Long::valueOf).boxed().collect(Collectors.toList()));
+                }
+            }
+        }
+        if (count == 0) {
+            dataList = new ArrayList<>();
+        }
+        pageInfo.setRows(dataList);
+        return pageInfo;
+    }
 
-	@Override
-	@Transactional(rollbackFor = Exception.class)
-	public void employeeOperate(Integer employeeId, EmployeeOperateEnum operate) {
-		Employee employee = employeeDao.get(employeeId);
-		SysUser sysUser = teacherDao.getUser(employeeId);
-		switch (operate){
-			case RESET_PASSWORD:
-				employeeDao.updatePassword(employeeId,new BCryptPasswordEncoder().encode(ParamEnum.INIT_PASSWORD.getCode().toString()));
-				break;
-			case LOCK_UNLOCK:
-				if(employee != null && employee.getDemissionDate() != null && sysUser.getLockFlag() == 1){
-					throw new BizException("操作失败:离职员工不允许解冻");
-				}
-				employeeDao.updateUserLockStatus(employeeId);
-				if(sysUser.getUserType().contains("TEACHER")){
-					sysUserFeignService.exitByPhone("teacher", sysUser.getPhone());
-				}else if(sysUser.getUserType().contains("SYSTEM")){
-					sysUserFeignService.exitByPhone("system", sysUser.getPhone());
-				}
-				break;
-			case DEMISSION:
-				employeeDao.updateUserLock(employeeId,1);
-				employeeDao.updateUserDemissionDate(employeeId);
-				sysUserFeignService.exitByPhone("system", sysUser.getPhone());
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void employeeOperate(Integer employeeId, EmployeeOperateEnum operate) {
+        Employee employee = employeeDao.get(employeeId);
+        SysUser sysUser = teacherDao.getUser(employeeId);
+        switch (operate) {
+            case RESET_PASSWORD:
+                employeeDao.updatePassword(employeeId, new BCryptPasswordEncoder().encode(ParamEnum.INIT_PASSWORD.getCode().toString()));
+                break;
+            case LOCK_UNLOCK:
+                if (employee != null && employee.getDemissionDate() != null && sysUser.getLockFlag() == 1) {
+                    throw new BizException("操作失败:离职员工不允许解冻");
+                }
+                employeeDao.updateUserLockStatus(employeeId);
+                if (sysUser.getUserType().contains("TEACHER")) {
+                    sysUserFeignService.exitByPhone("teacher", sysUser.getPhone());
+                } else if (sysUser.getUserType().contains("SYSTEM")) {
+                    sysUserFeignService.exitByPhone("system", sysUser.getPhone());
+                }
+                break;
+            case DEMISSION:
+                employeeDao.updateUserLock(employeeId, 1);
+                employeeDao.updateUserDemissionDate(employeeId);
+                sysUserFeignService.exitByPhone("system", sysUser.getPhone());
 
-				//更新OA信息
-				oaUserService.delOaUser(employee);
-				break;
-			case REINSTATE:
-				//离职,如果有关联课程组教务老师,
-				employeeDao.updateUserDemissionDate(employeeId);
+                //更新OA信息
+                oaUserService.delOaUser(employee);
+                break;
+            case REINSTATE:
+                //离职,如果有关联课程组教务老师,
+                employeeDao.updateUserDemissionDate(employeeId);
 
-				//更新OA信息
-				oaUserService.reInsertOaUser(employee);
-				break;
-		}
-	}
+                //更新OA信息
+                oaUserService.reInsertOaUser(employee);
+                break;
+        }
+    }
 
-	@Override
-	public HashMap<String, Integer> hasCourseGroupRelation(Integer employeeId) {
-		Integer hasCourseGroupRelation = employeeDao.hasCourseGroupRelation(employeeId);
-		Integer hasCourseSchedule = employeeDao.hasCourseSchedule(employeeId);
-		HashMap<String, Integer> map = new HashMap<>(2);
-		map.put("hasCourseGroupRelation",hasCourseGroupRelation);
-		map.put("hasCourseSchedule",hasCourseSchedule);
-		return map;
-	}
+    @Override
+    public HashMap<String, Integer> hasCourseGroupRelation(Integer employeeId) {
+        Integer hasCourseGroupRelation = employeeDao.hasCourseGroupRelation(employeeId);
+        Integer hasCourseSchedule = employeeDao.hasCourseSchedule(employeeId);
+        HashMap<String, Integer> map = new HashMap<>(2);
+        map.put("hasCourseGroupRelation", hasCourseGroupRelation);
+        map.put("hasCourseSchedule", hasCourseSchedule);
+        return map;
+    }
 
-	@Override
-	public void updateEducationTeacherId(Integer currentUserId, Integer targetUserId) {
-		employeeDao.updateEducationTeacherId(currentUserId,targetUserId);
-	}
+    @Override
+    public void updateEducationTeacherId(Integer currentUserId, Integer targetUserId) {
+        employeeDao.updateEducationTeacherId(currentUserId, targetUserId);
+    }
 
-	@Override
-	public Map<String, Object> levelDetail(Integer userId) {
-		Map<String,Object> resultMap = new HashMap<>(4);
-		//维修技师所在分部列表
-		List<Integer> repair = employeeDao.queryRepairOrganList(userId);
-		resultMap.put("repair",repair);
-		//教务老师所在分部列表
-		List<Integer> education = employeeDao.queryEducationOrganList(userId);
-		resultMap.put("education",education);
-		//运营主管所在分部列表
-		List<Integer> teamTeacher = employeeDao.queryTeamTeacherOrganList(userId);
-		resultMap.put("teamTeacher",teamTeacher);
-		//乐队指导所在分部列表
-		List<Integer> director = employeeDao.queryDirectorOrganList(userId);
-		resultMap.put("director",director);
-		return resultMap;
-	}
+    @Override
+    public Map<String, Object> levelDetail(Integer userId) {
+        Map<String, Object> resultMap = new HashMap<>(4);
+        //维修技师所在分部列表
+        List<Integer> repair = employeeDao.queryRepairOrganList(userId);
+        resultMap.put("repair", repair);
+        //教务老师所在分部列表
+        List<Integer> education = employeeDao.queryEducationOrganList(userId);
+        resultMap.put("education", education);
+        //运营主管所在分部列表
+        List<Integer> teamTeacher = employeeDao.queryTeamTeacherOrganList(userId);
+        resultMap.put("teamTeacher", teamTeacher);
+        //乐队指导所在分部列表
+        List<Integer> director = employeeDao.queryDirectorOrganList(userId);
+        resultMap.put("director", director);
+        return resultMap;
+    }
 
-	@Override
-	@Transactional(rollbackFor = Exception.class)
-	public void level(List<EmployeeLevelDto> employeeLevelDtos){
-		Integer levelUserId = employeeLevelDtos.get(0).getLevelUserId();
-		List<ImGroupModel> educationGroupModels = new ArrayList<>();
-		//获取用户需要加入的群组列表
-		Map<String, List<EmployeeLevelDto>> collect = employeeLevelDtos.stream().collect(Collectors.groupingBy(e -> e.getRoleName()));
-		Set<String> roleNames = collect.keySet();
-		Set<Integer> userIds = new HashSet<>();
-		for (String roleName : roleNames) {
-			List<EmployeeLevelDto> levelDtos = collect.get(roleName);
-			Map<Integer, List<EmployeeLevelDto>> organIdMap = levelDtos.stream().collect(Collectors.groupingBy(e -> e.getOrganId()));
-			Set<Integer> organIds = organIdMap.keySet();
-			for (Integer organId : organIds) {
-				List<EmployeeLevelDto> levelDtoList = organIdMap.get(organId);
-				for (EmployeeLevelDto employeeLevelDto : levelDtoList) {
-					if(employeeLevelDto.getLevelUserId() == employeeLevelDto.getTransferUserId()){
-						throw new BizException("交接人校验失败,请重新填写");
-					}
-					userIds.add(employeeLevelDto.getTransferUserId());
-					//获取关联的预报名的群聊
-					educationGroupModels.addAll(classGroupDao.queryApplyGroups(employeeLevelDto.getTransferUserId(),levelUserId,organId));
-					switch (roleName){
-						case "education":
-							//替换当前分部合作单位关联的乐团主管
-							cooperationOrganDao.batchUpdateEduId(employeeLevelDto.getTransferUserId(),levelUserId,organId);
-							//教务老师所需加入的群组
-							educationGroupModels.addAll(classGroupDao.queryEducationGroups(employeeLevelDto.getTransferUserId(),levelUserId,organId));
-							break;
-						case "teamTeacher":
-							//运营主管所需加入的群组
-							educationGroupModels.addAll(classGroupDao.queryTeamTeacherGroups(employeeLevelDto.getTransferUserId(),levelUserId,organId));
-							break;
-						case "director":
-							//乐队指导所需加入的群组
-							educationGroupModels.addAll(classGroupDao.queryDirectorGroups(employeeLevelDto.getTransferUserId(),levelUserId,organId));
-							break;
-					}
-				}
-			}
-		}
-		Date date = new Date();
-		if(educationGroupModels.size() > 0){
-			Map<Integer, String> realNameMap = MapUtil.convertIntegerMap(teacherDao.queryNameByIdList(new ArrayList<>(userIds)));
-			//❤️用户加群
-			List<com.ym.mec.biz.dal.entity.ImGroupMember> imGroupMemberList = new ArrayList<>();
-			List<GroupModel> groupModelList = new ArrayList<>();
-			for (ImGroupModel imGroupModel : educationGroupModels) {
-				String userId = imGroupModel.getMemberList().get(0).getId();
-				com.ym.mec.biz.dal.entity.ImGroupMember imGroupMember = new com.ym.mec.biz.dal.entity.ImGroupMember();
-				imGroupMember.setCreateTime(date);
-				imGroupMember.setImGroupId(Long.parseLong(imGroupModel.getId()));
-				imGroupMember.setIsAdmin(false);
-				imGroupMember.setRoleType(imGroupModel.getUserRole());
-				imGroupMember.setUpdateTime(date);
-				imGroupMember.setUserId(Integer.parseInt(userId));
-				imGroupMember.setNickname(realNameMap.get(imGroupMember.getUserId()));
-				imGroupMemberList.add(imGroupMember);
-				GroupMember groupMember = new GroupMember(userId, imGroupModel.getId());
-				GroupModel groupModel = new GroupModel(imGroupModel.getId(), new GroupMember[] { groupMember }, imGroupModel.getName());
-				groupModelList.add(groupModel);
-			}
-			imGroupMemberService.batchInsert(imGroupMemberList);
-			imFeignService.groupBatchJoin(groupModelList);
-		}
-		//原有员工退群
-		List<ImGroupModel> groupModels = classGroupDao.queryTeacherQuitGroups(levelUserId);
-		//原有员工退预报名群
-		groupModels.addAll(classGroupDao.queryQuitApplyGroups(levelUserId));
-		if(groupModels.size() > 0){
-			List<com.ym.mec.biz.dal.entity.ImGroupMember> imGroupMemberList = new ArrayList<>();
-			List<GroupModel> groupModelList = new ArrayList<>();
-			for (ImGroupModel imGroupModel : groupModels) {
-				com.ym.mec.biz.dal.entity.ImGroupMember imGroupMember = new com.ym.mec.biz.dal.entity.ImGroupMember();
-				imGroupMember.setImGroupId(Long.parseLong(imGroupModel.getId()));
-				imGroupMember.setUserId(Integer.parseInt(imGroupModel.getMemberList().get(0).getId()));
-				imGroupMemberList.add(imGroupMember);
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void level(List<EmployeeLevelDto> employeeLevelDtos) {
+        Integer levelUserId = employeeLevelDtos.get(0).getLevelUserId();
+        List<ImGroupModel> educationGroupModels = new ArrayList<>();
+        //获取用户需要加入的群组列表
+        Map<String, List<EmployeeLevelDto>> collect = employeeLevelDtos.stream().collect(Collectors.groupingBy(e -> e.getRoleName()));
+        Set<String> roleNames = collect.keySet();
+        Set<Integer> userIds = new HashSet<>();
+        for (String roleName : roleNames) {
+            List<EmployeeLevelDto> levelDtos = collect.get(roleName);
+            Map<Integer, List<EmployeeLevelDto>> organIdMap = levelDtos.stream().collect(Collectors.groupingBy(e -> e.getOrganId()));
+            Set<Integer> organIds = organIdMap.keySet();
+            for (Integer organId : organIds) {
+                List<EmployeeLevelDto> levelDtoList = organIdMap.get(organId);
+                for (EmployeeLevelDto employeeLevelDto : levelDtoList) {
+                    if (employeeLevelDto.getLevelUserId() == employeeLevelDto.getTransferUserId()) {
+                        throw new BizException("交接人校验失败,请重新填写");
+                    }
+                    userIds.add(employeeLevelDto.getTransferUserId());
+                    //获取关联的预报名的群聊
+                    educationGroupModels.addAll(classGroupDao.queryApplyGroups(employeeLevelDto.getTransferUserId(), levelUserId, organId));
+                    switch (roleName) {
+                        case "education":
+                            //替换当前分部合作单位关联的乐团主管
+                            cooperationOrganDao.batchUpdateEduId(employeeLevelDto.getTransferUserId(), levelUserId, organId);
+                            //教务老师所需加入的群组
+                            educationGroupModels.addAll(classGroupDao.queryEducationGroups(employeeLevelDto.getTransferUserId(), levelUserId, organId));
+                            break;
+                        case "teamTeacher":
+                            //运营主管所需加入的群组
+                            educationGroupModels.addAll(classGroupDao.queryTeamTeacherGroups(employeeLevelDto.getTransferUserId(), levelUserId, organId));
+                            break;
+                        case "director":
+                            //乐队指导所需加入的群组
+                            educationGroupModels.addAll(classGroupDao.queryDirectorGroups(employeeLevelDto.getTransferUserId(), levelUserId, organId));
+                            break;
+                    }
+                }
+            }
+        }
+        Date date = new Date();
+        if (educationGroupModels.size() > 0) {
+            Map<Integer, String> realNameMap = MapUtil.convertIntegerMap(teacherDao.queryNameByIdList(new ArrayList<>(userIds)));
+            //❤️用户加群
+            List<com.ym.mec.biz.dal.entity.ImGroupMember> imGroupMemberList = new ArrayList<>();
+            List<GroupModel> groupModelList = new ArrayList<>();
+            for (ImGroupModel imGroupModel : educationGroupModels) {
+                String userId = imGroupModel.getMemberList().get(0).getId();
+                com.ym.mec.biz.dal.entity.ImGroupMember imGroupMember = new com.ym.mec.biz.dal.entity.ImGroupMember();
+                imGroupMember.setCreateTime(date);
+                imGroupMember.setImGroupId(Long.parseLong(imGroupModel.getId()));
+                imGroupMember.setIsAdmin(false);
+                imGroupMember.setRoleType(imGroupModel.getUserRole());
+                imGroupMember.setUpdateTime(date);
+                imGroupMember.setUserId(Integer.parseInt(userId));
+                imGroupMember.setNickname(realNameMap.get(imGroupMember.getUserId()));
+                imGroupMemberList.add(imGroupMember);
+                GroupMember groupMember = new GroupMember(userId, imGroupModel.getId());
+                GroupModel groupModel = new GroupModel(imGroupModel.getId(), new GroupMember[]{groupMember}, imGroupModel.getName());
+                groupModelList.add(groupModel);
+            }
+            imGroupMemberService.batchInsert(imGroupMemberList);
+            imFeignService.groupBatchJoin(groupModelList);
+        }
+        //原有员工退群
+        List<ImGroupModel> groupModels = classGroupDao.queryTeacherQuitGroups(levelUserId);
+        //原有员工退预报名群
+        groupModels.addAll(classGroupDao.queryQuitApplyGroups(levelUserId));
+        if (groupModels.size() > 0) {
+            List<com.ym.mec.biz.dal.entity.ImGroupMember> imGroupMemberList = new ArrayList<>();
+            List<GroupModel> groupModelList = new ArrayList<>();
+            for (ImGroupModel imGroupModel : groupModels) {
+                com.ym.mec.biz.dal.entity.ImGroupMember imGroupMember = new com.ym.mec.biz.dal.entity.ImGroupMember();
+                imGroupMember.setImGroupId(Long.parseLong(imGroupModel.getId()));
+                imGroupMember.setUserId(Integer.parseInt(imGroupModel.getMemberList().get(0).getId()));
+                imGroupMemberList.add(imGroupMember);
 
-				GroupMember groupMember = new GroupMember(imGroupMember.getUserId().toString(), imGroupModel.getId());
-				GroupModel groupModel = new GroupModel(imGroupModel.getId(), new GroupMember[] { groupMember }, imGroupModel.getName());
-				groupModelList.add(groupModel);
-			}
-			imGroupMemberService.batchDeleteByGroupIdAndUserId(imGroupMemberList);
-			imFeignService.groupBatchQuit(groupModelList);
-		}
-		//更换教务老师等数据
-		employeeDao.employeeLevel(employeeLevelDtos);
-		//新增离职时间
-		employeeDao.updateUserDemissionDate(levelUserId);
-		//冻结用户
-		employeeDao.updateUserLock(levelUserId,1);
-		ExecutorService executor = Executors.newFixedThreadPool(5);
-		CompletableFuture<Boolean> refreshUserFriend = CompletableFuture.supplyAsync(()->{
-			//获取用户担任教务老师、维修技师的所有乐团列表
-			List<String> musicGroupIds = employeeDao.queryMusicGroupIdByUserId(levelUserId);
-			//获取用户担任教务老师的所有网管课列表
-			List<String> practiceGroupIds = employeeDao.queryPracticeGroupIdByUserId(levelUserId);
-			//获取用户担任教务老师的所有VIP课列表
-			List<String> vipGroupIds = employeeDao.queryVipGroupIdByUserId(levelUserId);
-			Boolean refreshFlag = false;
-			if(musicGroupIds.size() > 0){
-				for (String musicGroupId : musicGroupIds) {
-					imUserFriendService.refreshGroupImUserFriend(musicGroupId, GroupType.MUSIC);
-				}
-				refreshFlag = true;
-			}
-			if(practiceGroupIds.size() > 0){
-				for (String musicGroupId : practiceGroupIds) {
-					imUserFriendService.refreshGroupImUserFriend(musicGroupId, GroupType.PRACTICE);
-				}
-				refreshFlag = true;
-			}
-			if(vipGroupIds.size() > 0){
-				for (String musicGroupId : vipGroupIds) {
-					imUserFriendService.refreshGroupImUserFriend(musicGroupId, GroupType.VIP);
-				}
-				refreshFlag = true;
-			}
-			return refreshFlag;
-		},executor);
-		Boolean join = refreshUserFriend.join();
-		if(join){
-			refreshUserFriend.thenRun(()->{
-				//更新群成员数量
-				imGroupDao.updateMemberNum();
-				//删除重复的群成员
-				imGroupMemberService.delRepeat();
-			});
-		}
-		executor.shutdown();
-	}
+                GroupMember groupMember = new GroupMember(imGroupMember.getUserId().toString(), imGroupModel.getId());
+                GroupModel groupModel = new GroupModel(imGroupModel.getId(), new GroupMember[]{groupMember}, imGroupModel.getName());
+                groupModelList.add(groupModel);
+            }
+            imGroupMemberService.batchDeleteByGroupIdAndUserId(imGroupMemberList);
+            imFeignService.groupBatchQuit(groupModelList);
+        }
+        //更换教务老师等数据
+        employeeDao.employeeLevel(employeeLevelDtos);
+        //新增离职时间
+        employeeDao.updateUserDemissionDate(levelUserId);
+        //冻结用户
+        employeeDao.updateUserLock(levelUserId, 1);
+        ExecutorService executor = Executors.newCachedThreadPool();
+        CompletableFuture<Boolean> refreshUserFriend = CompletableFuture.supplyAsync(() -> {
+            //获取用户担任教务老师、维修技师的所有乐团列表
+            List<String> musicGroupIds = employeeDao.queryMusicGroupIdByUserId(levelUserId);
+            //获取用户担任教务老师的所有网管课列表
+            List<String> practiceGroupIds = employeeDao.queryPracticeGroupIdByUserId(levelUserId);
+            //获取用户担任教务老师的所有VIP课列表
+            List<String> vipGroupIds = employeeDao.queryVipGroupIdByUserId(levelUserId);
+            boolean refreshFlag = false;
+            if (musicGroupIds.size() > 0) {
+                for (String musicGroupId : musicGroupIds) {
+                    imUserFriendService.refreshGroupImUserFriend(musicGroupId, GroupType.MUSIC);
+                }
+                refreshFlag = true;
+            }
+            if (practiceGroupIds.size() > 0) {
+                for (String musicGroupId : practiceGroupIds) {
+                    imUserFriendService.refreshGroupImUserFriend(musicGroupId, GroupType.PRACTICE);
+                }
+                refreshFlag = true;
+            }
+            if (vipGroupIds.size() > 0) {
+                for (String musicGroupId : vipGroupIds) {
+                    imUserFriendService.refreshGroupImUserFriend(musicGroupId, GroupType.VIP);
+                }
+                refreshFlag = true;
+            }
+            return refreshFlag;
+        }, executor);
+        Boolean join = refreshUserFriend.join();
+        if (join) {
+            refreshUserFriend.thenRun(() -> {
+                //更新群成员数量
+                imGroupDao.updateMemberNum();
+                //删除重复的群成员
+                imGroupMemberService.delRepeat();
+            });
+        }
+        executor.shutdown();
+    }
 
-	@Override
-	public List<Integer> queryUserRole(Integer sysUserId) {
-		return employeeDao.queryUserRole(sysUserId);
-	}
+    @Override
+    public List<Integer> queryUserRole(Integer sysUserId) {
+        return employeeDao.queryUserRole(sysUserId);
+    }
 
     /**
      * 批量添加角色和菜单关系
@@ -473,21 +477,28 @@ public class EmployeeServiceImpl extends BaseServiceImpl<Integer, Employee>  imp
         return employeeDao.insertSysRole(sysRole);
     }
 
-	@Override
-	@Transactional(rollbackFor = Exception.class)
-	public void simpleUpdate(Employee employee) {
-		SysUser user = teacherDao.getUser(employee.getId());
-		//为了处理平台账户修改个人信息
-		employee.setTenantId(user.getTenantId());
-		employee.setUserId(employee.getId());
-		employee.setUpdateTime(new Date());
-		if(StringUtils.isNotEmpty(employee.getPhone())){
-			SysUser sysUser = teacherDao.getUserWithPhone(employee.getPhone());
-			if(sysUser != null && !sysUser.getId().equals(employee.getUserId())){
-				throw new BizException("手机号已存在");
-			}
-			teacherDao.updateUser(employee);
-		}
-		employeeDao.update(employee);
-	}
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void simpleUpdate(Employee employee) {
+        SysUser user = teacherDao.getUser(employee.getId());
+        //为了处理平台账户修改个人信息
+        employee.setTenantId(user.getTenantId());
+        employee.setUserId(employee.getId());
+        employee.setUpdateTime(new Date());
+        if (StringUtils.isNotEmpty(employee.getPhone())) {
+            SysUser sysUser = teacherDao.getUserWithPhone(employee.getPhone());
+            if (sysUser != null && !sysUser.getId().equals(employee.getUserId())) {
+                throw new BizException("手机号已存在");
+            }
+            teacherDao.updateUser(employee);
+            //同步修改机构手机号
+            TenantInfo tenantInfo = tenantInfoService.getOne(new QueryWrapper<TenantInfo>()
+                    .eq("user_id_", employee.getUserId()));
+            if (Objects.nonNull(tenantInfo)) {
+                tenantInfo.setPhone(employee.getPhone());
+                tenantInfoService.updateById(tenantInfo);
+            }
+        }
+        employeeDao.update(employee);
+    }
 }

+ 1 - 1
mec-im/src/main/java/com/ym/common/ErrorEnum.java

@@ -19,7 +19,7 @@ public enum ErrorEnum {
     ERR_JOIN_ROOM_ERROR(12, "Join room error"),
     JOIN_ROOM_ERROR(35, "加入房间失败,请前往线下教室"),
     ROOM_NOT_START(36, "网络教室暂未开启,请稍后重试"),
-    CLOUD_BALANCE_NOT_FEE(37, "云教室余额不足,请联系教务老师"),
+    CLOUD_BALANCE_NOT_FEE(37, "云教室受限不可进入,请联系教务老师。"),
     ERR_MESSAGE_ERROR(13, "IM Message send error"),