From 24679b74b46479acf248151f70a3768a9588249b Mon Sep 17 00:00:00 2001 From: zhaoxiaohao <279049017@qq.com> Date: Thu, 15 Oct 2020 16:58:55 +0800 Subject: [PATCH] 修改 h端添加的用户不能在h端登录的问题 --- kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-biz/src/main/java/com/kidgrow/usercenter/service/impl/SysDoctorServiceImpl.java | 155 ++++++++++++++++++++++++++++++--------------------- 1 files changed, 90 insertions(+), 65 deletions(-) diff --git a/kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-biz/src/main/java/com/kidgrow/usercenter/service/impl/SysDoctorServiceImpl.java b/kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-biz/src/main/java/com/kidgrow/usercenter/service/impl/SysDoctorServiceImpl.java index 4dbfd44..4e396a7 100644 --- a/kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-biz/src/main/java/com/kidgrow/usercenter/service/impl/SysDoctorServiceImpl.java +++ b/kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-biz/src/main/java/com/kidgrow/usercenter/service/impl/SysDoctorServiceImpl.java @@ -91,8 +91,8 @@ if (sysUser != null) { vo.setUsername(sysUser.getUsername()); } - QueryWrapper queryWrapper=new QueryWrapper(); - queryWrapper.eq("user_id",e.getUserId()); + QueryWrapper queryWrapper = new QueryWrapper(); + queryWrapper.eq("user_id", e.getUserId()); List<SysRoleUser> roleUserList = sysUserRoleMapper.selectList(queryWrapper); List<Long> collect = roleUserList.stream().map(roleUser -> roleUser.getRoleId()).collect(Collectors.toList()); vo.setRoles(collect); @@ -118,10 +118,10 @@ //查询user表 SysDoctor sysDoctor = baseMapper.selectById(id); if (sysDoctor != null && sysDoctor.getUserId() != null) { - boolean b = iSysUserService.delUser(sysDoctor.getUserId()); + boolean b = iSysUserService.deleteNoContact(sysDoctor.getUserId()); } sysDoctor.setIsDel(true); - int i = baseMapper.deleteById(id); + int i = baseMapper.updateById(sysDoctor); return true; } @@ -203,10 +203,10 @@ if (sysDoctor.getId() == null) { Long sysUserId = null; //保存部门信息 - ResultBody resultBody = this.saveFenjiekou(sysDoctor, id, sysHospital, sysDepartment,null); - if(resultBody.getCode()==0){ - sysUserId=(Long)resultBody.getData(); - }else { + ResultBody resultBody = this.saveFenjiekou(sysDoctor, id, sysHospital, sysDepartment, null); + if (resultBody.getCode() == 0) { + sysUserId = (Long) resultBody.getData(); + } else { return resultBody; } //保存doctor的数据 @@ -223,11 +223,27 @@ //更新 SysDoctor getOne = baseMapper.selectById(sysDoctor.getId()); if (getOne.getDoctorType() != 2 && sysDoctor.getDoctorType() != 2) { - /** - * 管理员只有一个 - */ - if (isSupperRole(sysDoctor)) { - return ResultBody.failed("该部门已经有管理员"); + QueryWrapper queryrole = new QueryWrapper(); + queryrole.eq("user_id", getOne.getUserId()); + List<SysRoleUser> list = sysUserRoleMapper.selectList(queryrole); + //如果是本来是管理员的话,不用走判读管理员的方法 + if (!list.isEmpty()) { + List<Long> collect = list.stream().map(e -> e.getRoleId()).collect(Collectors.toList()); + if (!collect.contains(CommonConstant.HOSPITAL_ADMIN_ID)) { + /** + * 管理员只有一个 + */ + if (isSupperRole(sysDoctor)) { + return ResultBody.failed("该部门已经有管理员"); + } + } + } else { + /** + * 管理员只有一个 + */ + if (isSupperRole(sysDoctor)) { + return ResultBody.failed("该部门已经有管理员"); + } } Map<String, Object> columnMap = new HashMap<>(); columnMap.put("user_id", sysDoctor.getUserId()); @@ -240,6 +256,8 @@ sysUserOrg.setFromLevel(CommonConstant.SYSTEM_ORG_DEP_LEVEL); sysUserOrg.setOrgId(sysDepartment.getOrgId()); sysUserOrg.setCreateTime(new Date()); + List<SysUserOrg> sysUserOrgs=new ArrayList<>(); + sysUserOrgs.add(sysUserOrg); sysUserOrgService.saveOrUpdate(sysUserOrg); SysUserOrg sysGongsi = new SysUserOrg(); sysGongsi.setUserId(getOne.getId()); @@ -251,10 +269,10 @@ if (redisUtils.hHasKey(RedisConstant.USER_ORGANIZATION, getOne.getUserId().toString())) { redisUtils.hdel(RedisConstant.USER_ORGANIZATION, getOne.getUserId().toString()); } - redisUtils.hset(RedisConstant.USER_ORGANIZATION, getOne.getUserId().toString(), sysUserOrg); + redisUtils.hset(RedisConstant.USER_ORGANIZATION, getOne.getUserId().toString(), sysUserOrgs); //角色更换 - QueryWrapper queryWrapper=new QueryWrapper(); - queryWrapper.eq("user_id",getOne.getUserId()); + QueryWrapper queryWrapper = new QueryWrapper(); + queryWrapper.eq("user_id", getOne.getUserId()); int delete = sysUserRoleMapper.delete(queryWrapper); sysDoctor.getRoles().forEach(e -> { SysRoleUser sysRoleUser = new SysRoleUser(); @@ -269,11 +287,11 @@ if (isSupperRole(sysDoctor)) { return ResultBody.failed("该部门已经有管理员"); } - ResultBody resultBody = this.saveFenjiekou(sysDoctor, id, sysHospital, sysDepartment,getOne); + ResultBody resultBody = this.saveFenjiekou(sysDoctor, id, sysHospital, sysDepartment, getOne); Long sysUserId = null; - if(resultBody.getCode()==0){ - sysUserId=(Long)resultBody.getData(); - }else { + if (resultBody.getCode() == 0) { + sysUserId = (Long) resultBody.getData(); + } else { return resultBody; } sysDoctor.setUserId(sysUserId); @@ -285,10 +303,10 @@ boolean b = sysUserOrgService.removeByMap(columnMap); SysUser byId = iSysUserService.getById(getOne.getUserId()); //将角色删除 - QueryWrapper queryWrapper=new QueryWrapper(); - queryWrapper.eq("user_id",getOne.getUserId()); + QueryWrapper queryWrapper = new QueryWrapper(); + queryWrapper.eq("user_id", getOne.getUserId()); int delete = sysUserRoleMapper.delete(queryWrapper); - if(byId!=null){ + if (byId != null) { byId.setDel(true); boolean b1 = iSysUserService.updateById(byId); } @@ -307,28 +325,31 @@ } return ResultBody.ok(); } + //是否可以使是超管角色 - public Boolean isSupperRole(SysDoctorDto sysDoctor){ + public Boolean isSupperRole(SysDoctorDto sysDoctor) { Boolean flag = false; /** * 限制管理员只有一个 */ - if (sysDoctor.getRoles().contains(CommonConstant.HOSPITAL_ADMIN_ID)) { - //查询一个部门下的所有医生 - QueryWrapper wrapper = new QueryWrapper(); - wrapper.eq("is_del", 0); - wrapper.eq("enabled", 1); - wrapper.eq("department_id", sysDoctor.getDepartmentId()); - List<SysDoctor> doctoerList = this.baseMapper.selectList(wrapper); - if (doctoerList.size() > 0) { - //查询role——user - List<Long> collect = doctoerList.stream().map(e -> e.getUserId()).collect(Collectors.toList()); - wrapper = new QueryWrapper(); - wrapper.in("user_id", collect); - List<SysRoleUser> list = this.sysUserRoleMapper.selectList(wrapper); - for (SysRoleUser sysRoleUser : list) { - if (sysRoleUser.getRoleId().equals( CommonConstant.HOSPITAL_ADMIN_ID)) { - flag = true; + if (sysDoctor.getDoctorType() != 2) { + if (sysDoctor.getRoles().contains(CommonConstant.HOSPITAL_ADMIN_ID)) { + //查询一个部门下的所有医生 + QueryWrapper wrapper = new QueryWrapper(); + wrapper.eq("is_del", 0); + wrapper.eq("enabled", 1); + wrapper.eq("department_id", sysDoctor.getDepartmentId()); + List<SysDoctor> doctoerList = this.baseMapper.selectList(wrapper); + if (doctoerList.size() > 0) { + //查询role——user + List<Long> collect = doctoerList.stream().map(e -> e.getUserId()).collect(Collectors.toList()); + wrapper = new QueryWrapper(); + wrapper.in("user_id", collect); + List<SysRoleUser> list = this.sysUserRoleMapper.selectList(wrapper); + for (SysRoleUser sysRoleUser : list) { + if (sysRoleUser.getRoleId().equals(CommonConstant.HOSPITAL_ADMIN_ID)) { + flag = true; + } } } } @@ -337,7 +358,7 @@ } //保存的分接口 - public ResultBody saveFenjiekou(SysDoctorDto sysDoctor, String id, SysHospital sysHospital, SysDepartment sysDepartment,SysDoctor getOne) { + public ResultBody saveFenjiekou(SysDoctorDto sysDoctor, String id, SysHospital sysHospital, SysDepartment sysDepartment, SysDoctor getOne) { Long sysUserId = null; /** * 管理员只有一个 @@ -346,7 +367,7 @@ return ResultBody.failed("该部门已经有管理员"); } if (sysDoctor.getDoctorType() != 2) { - SysUser sysUser=new SysUser(); + SysUser sysUser = new SysUser(); //保存 sysUser.setUsername(sysDoctor.getUsername()); sysUser.setPassword(passwordEncoder.encode(sysDoctor.getPassword())); @@ -362,29 +383,29 @@ sysUser.setCreateUserName(byId.getUsername()); } //做判断是否注册过手机号; - QueryWrapper queryWrapper=new QueryWrapper(); - queryWrapper.eq("username",sysDoctor.getDoctorTel()); - queryWrapper.eq("enabled",1); - queryWrapper.eq("is_del",0); + QueryWrapper queryWrapper = new QueryWrapper(); + queryWrapper.eq("username", sysDoctor.getDoctorTel()); + queryWrapper.eq("enabled", 1); + queryWrapper.eq("is_del", 0); Integer integer = sysUserMapper.selectCount(queryWrapper); - if(integer>0){ - return ResultBody.failed("该手机号已经注册"); + if (integer > 0) { + return ResultBody.failed("该手机号已经注册"); } - if (getOne!=null&&getOne.getUserId()!=null) { - Map<String,Object> map=new HashMap<>(); - map.put("id",getOne.getUserId()); - map.put("enabled",1); - map.put("is_del",1); + if (getOne != null && getOne.getUserId() != null) { + Map<String, Object> map = new HashMap<>(); + map.put("id", getOne.getUserId()); + map.put("enabled", 1); + map.put("is_del", 1); List<SysUser> sysUsers = sysUserMapper.selectByMap(map); - if(sysUsers!=null&&!sysUsers.isEmpty()){ - sysUser.setId(sysUsers.get(sysUsers.size()-1).getId()); + if (sysUsers != null && !sysUsers.isEmpty()) { + sysUser.setId(sysUsers.get(sysUsers.size() - 1).getId()); } } - if(sysUser.getId()!=null){ + if (sysUser.getId() != null) { //更新 sysUser.setDel(false); iSysUserService.updateById(sysUser); - }else { + } else { //保存 iSysUserService.save(sysUser); } @@ -402,6 +423,8 @@ sysUserOrg.setFromId(sysDoctor.getDepartmentId()); sysUserOrg.setFromLevel(CommonConstant.SYSTEM_ORG_DEP_LEVEL); sysUserOrg.setOrgId(sysDepartment.getOrgId()); + List<SysUserOrg> sysUserOrgs=new ArrayList<>(); + sysUserOrgs.add(sysUserOrg); //保存公司 sysUserOrgService.saveOrUpdate(sysUserOrg); SysUserOrg sysGongsi = new SysUserOrg(); @@ -411,7 +434,7 @@ sysGongsi.setFromLevel(CommonConstant.SYSTEM_ORG_DEP_LEVEL); sysUserOrgService.saveOrUpdate(sysGongsi); //保存到Redis - boolean hset = redisUtils.hset(RedisConstant.USER_ORGANIZATION, sysUserOrg.getUserId().toString(), sysUserOrg); + boolean hset = redisUtils.hset(RedisConstant.USER_ORGANIZATION, sysUserOrg.getUserId().toString(), sysUserOrgs); } return ResultBody.ok().data(sysUserId); } @@ -431,9 +454,9 @@ if (id > 0 && adminId > 0) { Map<String, Object> map = new HashMap<>(); map.put("user_id", adminId); - map.put("is_admin_user",1); - map.put("is_del",0); - map.put("enabled",1); + map.put("is_admin_user", 1); + map.put("is_del", 0); + map.put("enabled", 1); List<SysDoctor> sysDoctors = baseMapper.selectByMap(map); if (sysDoctors == null || sysDoctors.size() <= 0) { return ResultBody.failed("当前操作用户不是管理员"); @@ -448,8 +471,9 @@ sysRoleUser.setRoleId(CommonConstant.HOSPITAL_DOCTOR_ID); QueryWrapper queryWrapper = new QueryWrapper(); queryWrapper.eq("user_id", adminId); - queryWrapper.eq("role_id", CommonConstant.HOSPITAL_ADMIN_ID); - int update = sysUserRoleMapper.update(sysRoleUser, queryWrapper); +// queryWrapper.eq("role_id", CommonConstant.HOSPITAL_ADMIN_ID); + int delete = sysUserRoleMapper.delete(queryWrapper); + int update = sysUserRoleMapper.insert(sysRoleUser); //现将操作人员设为非管理角色 sysDoctor.setIsAdminUser(false); if (baseMapper.updateById(sysDoctor) > 0) { @@ -463,8 +487,9 @@ sysRoleUser.setRoleId(CommonConstant.HOSPITAL_ADMIN_ID); queryWrapper = new QueryWrapper(); queryWrapper.eq("user_id", sysDoctor.getUserId()); - queryWrapper.eq("role_id", CommonConstant.HOSPITAL_DOCTOR_ID); - sysUserRoleMapper.update(sysRoleUser, queryWrapper); +// queryWrapper.eq("role_id", CommonConstant.HOSPITAL_DOCTOR_ID); + sysUserRoleMapper.delete(queryWrapper); + sysUserRoleMapper.insert(sysRoleUser); sysDoctor.setIsAdminUser(true); if (baseMapper.updateById(sysDoctor) > 0) { return ResultBody.ok().data(true).msg("管理员设置成功!"); -- Gitblit v1.8.0