From 5d97b0934973737a903f45d1d89e095b2e255694 Mon Sep 17 00:00:00 2001 From: zxh <279049017@qq.com> Date: Fri, 21 Aug 2020 10:12:36 +0800 Subject: [PATCH] 提交到Gitblit --- kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-biz/src/main/java/com/kidgrow/usercenter/service/impl/SysDoctorServiceImpl.java | 153 +++++++++++++++++++++++++++++++++++++------------- 1 files changed, 113 insertions(+), 40 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 341ba3c..6be917c 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 @@ -52,6 +52,8 @@ @Autowired private ISysUserService iSysUserService; @Autowired + private SysUserMapper sysUserMapper; + @Autowired private PasswordEncoder passwordEncoder; @Autowired private ISysUserOrgService sysUserOrgService; @@ -89,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); @@ -116,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; } @@ -201,10 +203,10 @@ if (sysDoctor.getId() == null) { Long sysUserId = null; //保存部门信息 - ResultBody resultBody = this.saveFenjiekou(sysDoctor, id, sysHospital, sysDepartment); - 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的数据 @@ -221,6 +223,28 @@ //更新 SysDoctor getOne = baseMapper.selectById(sysDoctor.getId()); if (getOne.getDoctorType() != 2 && sysDoctor.getDoctorType() != 2) { + 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()); boolean b = sysUserOrgService.removeByMap(columnMap); @@ -244,6 +268,16 @@ redisUtils.hdel(RedisConstant.USER_ORGANIZATION, getOne.getUserId().toString()); } redisUtils.hset(RedisConstant.USER_ORGANIZATION, getOne.getUserId().toString(), sysUserOrg); + //角色更换 + QueryWrapper queryWrapper = new QueryWrapper(); + queryWrapper.eq("user_id", getOne.getUserId()); + int delete = sysUserRoleMapper.delete(queryWrapper); + sysDoctor.getRoles().forEach(e -> { + SysRoleUser sysRoleUser = new SysRoleUser(); + sysRoleUser.setRoleId(e); + sysRoleUser.setUserId(getOne.getUserId()); + int insert = sysUserRoleMapper.insert(sysRoleUser); + }); } else if (getOne.getDoctorType() == 2 && sysDoctor.getDoctorType() != 2) { /** * 管理员只有一个 @@ -251,11 +285,11 @@ if (isSupperRole(sysDoctor)) { return ResultBody.failed("该部门已经有管理员"); } - ResultBody resultBody = this.saveFenjiekou(sysDoctor, id, sysHospital, sysDepartment); + 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); @@ -267,16 +301,21 @@ 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); } redisUtils.hdel(RedisConstant.USER_ORGANIZATION, getOne.getUserId().toString()); sysDoctor.setUserId(null); baseMapper.updateById(sysDoctor); + //将用户删除 + SysUser sysUser = new SysUser(); + sysUser.setId(getOne.getUserId()); + sysUser.setDel(true); + sysUserMapper.deleteById(sysUser); } else if (getOne.getDoctorType() == 2 && sysDoctor.getDoctorType() == 2) { baseMapper.updateById(sysDoctor); } @@ -284,28 +323,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() == 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; + } } } } @@ -314,7 +356,7 @@ } //保存的分接口 - public ResultBody saveFenjiekou(SysDoctorDto sysDoctor, String id, SysHospital sysHospital, SysDepartment sysDepartment) { + public ResultBody saveFenjiekou(SysDoctorDto sysDoctor, String id, SysHospital sysHospital, SysDepartment sysDepartment, SysDoctor getOne) { Long sysUserId = null; /** * 管理员只有一个 @@ -323,11 +365,11 @@ return ResultBody.failed("该部门已经有管理员"); } if (sysDoctor.getDoctorType() != 2) { - //保存 SysUser sysUser = new SysUser(); + //保存 sysUser.setUsername(sysDoctor.getUsername()); sysUser.setPassword(passwordEncoder.encode(sysDoctor.getPassword())); - sysUser.setNickname(sysDoctor.getHospitalName()); + sysUser.setNickname(sysDoctor.getDoctorName()); sysUser.setHeadImgUrl(sysDoctor.getDoctorLogo()); sysUser.setMobile(sysDoctor.getDoctorTel()); sysUser.setType(UserType.DOCTOR.name()); @@ -338,7 +380,33 @@ sysUser.setCreateUserId(byId.getId()); sysUser.setCreateUserName(byId.getUsername()); } - iSysUserService.save(sysUser); + //做判断是否注册过手机号; + 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 (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 (sysUser.getId() != null) { + //更新 + sysUser.setDel(false); + iSysUserService.updateById(sysUser); + } else { + //保存 + iSysUserService.save(sysUser); + } sysUserId = sysUser.getId(); //保存一个角色 sysDoctor.getRoles().forEach(e -> { @@ -382,6 +450,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); List<SysDoctor> sysDoctors = baseMapper.selectByMap(map); if (sysDoctors == null || sysDoctors.size() <= 0) { return ResultBody.failed("当前操作用户不是管理员"); @@ -396,8 +467,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) { @@ -411,8 +483,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