forked from kidgrow-microservices-platform

zhaoxiaohao
2020-08-08 f532169845c8fc4214dc1cb817981cc1d3e7befd
c端  不添加数据user
2 files modified
233 ■■■■■ changed files
kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-biz/src/main/java/com/kidgrow/usercenter/service/impl/SysDoctorServiceImpl.java 231 ●●●●● patch | view | raw | blame | history
kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-biz/src/main/java/com/kidgrow/usercenter/service/impl/SysOrganizationServiceImpl.java 2 ●●● patch | view | raw | blame | history
kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-biz/src/main/java/com/kidgrow/usercenter/service/impl/SysDoctorServiceImpl.java
@@ -120,6 +120,7 @@
    /**
     * 根据userid删除医生数据
     *
     * @param userId
     * @return
     */
@@ -129,8 +130,10 @@
        params.put("userId", userId);
        return baseMapper.deleteByMap(params);
    }
    /**
     * 统计医生的数量
     *
     * @param datatype 业务类型
     *                 0 自注册医生
     *                 1 签约医生
@@ -173,36 +176,16 @@
        if(null==sysDoctor){
           return  ResultBody.failed("请填写信息");
        }else {
            Boolean flag = false;
            if (sysDoctor.getDoctorType() != 2) {
            if(sysDoctor.getRoles()==null||sysDoctor.getRoles().size()<=0){
                return  ResultBody.failed("选择一个角色");
            }
            }
            /**
             * 限制管理员只有一个
             * 管理员只有一个
             */
            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(flag){
            if (isSupperRole(sysDoctor)) {
                return  ResultBody.failed("该部门已经有管理员");
            }
            /**
@@ -215,66 +198,23 @@
            SysHospital sysHospital= sysHospitalMapper.selectById(sysDoctor.getHospitalId());
            SysDepartment sysDepartment= sysDepartmentMapper.selectById(sysDoctor.getDepartmentId());
            if (sysDoctor.getId()==null) {
                //保存
                SysUser sysUser=new SysUser();
                sysUser.setUsername(sysDoctor.getUsername());
                sysUser.setPassword(passwordEncoder.encode(sysDoctor.getPassword()));
                sysUser.setNickname(sysDoctor.getHospitalName());
                sysUser.setHeadImgUrl(sysDoctor.getDoctorLogo());
                sysUser.setMobile(sysDoctor.getDoctorTel());
                sysUser.setType(UserType.DOCTOR.name());
                sysUser.setTenantId(CommonConstant.H_TENANT);
                sysUser.setCreateTime(new Date());
                SysUser byId = iSysUserService.getById(id);
                if(byId!=null){
                    sysUser.setCreateUserId(byId.getId());
                    sysUser.setCreateUserName(byId.getUsername());
                }
                iSysUserService.save(sysUser);
                //保存  角色信息
//                Map<String,Object> map= new HashMap<>();
//                map.put("code",HOSPITAL_ADMIN);
//                map.put("enabled",1);
//                map.put("is_del",0);
//                List<SysRole> sysRoles = sysRoleMapper.selectByMap(map);
//                if(sysRoles.size()>0){
                    //保存一个角色
                sysDoctor.getRoles().forEach(e->{
                    SysRoleUser sysRoleUser=new SysRoleUser();
                    sysRoleUser.setRoleId(e);
                    sysRoleUser.setUserId(sysUser.getId());
                    int insert = sysUserRoleMapper.insert(sysRoleUser);
                });
                Long sysUserId = null;
                //保存部门信息
                sysUserId = this.saveFenjiekou(sysDoctor, id, sysHospital, sysDepartment);
                //保存doctor的数据
                SysDoctor sysDoc=new SysDoctor();
                BeanCopier beanCopier = BeanCopier.create(SysDoctorDto.class, SysDoctor.class, false);
                beanCopier.copy(sysDoctor,sysDoc,null);
                sysDoc.setUserId(sysUser.getId());
                sysDoc.setUserId(sysUserId);
                if(user.getOrganizations()!=null){
                    List<SysOrganization> organizations = user.getOrganizations();
                    sysDoc.setCreateUserOrgCode(organizations.get(organizations.size()-1).getOrgCode());
                }
                baseMapper.insert(sysDoc);
                //保存将sys_user_org 保存部门
                SysUserOrg sysUserOrg=new SysUserOrg();
                sysUserOrg.setUserId(sysUser.getId());
                sysUserOrg.setFromId(sysDoctor.getDepartmentId());
                sysUserOrg.setFromLevel(CommonConstant.SYSTEM_ORG_DEP_LEVEL);
                sysUserOrg.setOrgId(sysDepartment.getOrgId());
                //保存公司
                sysUserOrgService.saveOrUpdate(sysUserOrg);
                SysUserOrg sysGongsi=new SysUserOrg();
                sysGongsi.setUserId(sysUser.getId());
                sysGongsi.setOrgId(sysHospital.getOrgId());
                sysGongsi.setFromId(sysDoctor.getHospitalId());
                sysGongsi.setFromLevel(CommonConstant.SYSTEM_ORG_DEP_LEVEL);
                sysUserOrgService.saveOrUpdate(sysGongsi);
                //保存到Redis
                boolean hset = redisUtils.hset(RedisConstant.USER_ORGANIZATION, sysUserOrg.getUserId().toString(), sysUserOrg);
            }else {
                //更新
                SysDoctor getOne = baseMapper.selectById(sysDoctor.getId());
                if (getOne.getDoctorType() != 2 && sysDoctor.getDoctorType() != 2) {
                Map<String, Object> columnMap=new HashMap<>();
                columnMap.put("user_id",sysDoctor.getUserId());
                boolean b = sysUserOrgService.removeByMap(columnMap);
@@ -298,9 +238,115 @@
                    redisUtils.hdel(RedisConstant.USER_ORGANIZATION, getOne.getUserId().toString());
                }
                redisUtils.hset(RedisConstant.USER_ORGANIZATION, getOne.getUserId().toString(), sysUserOrg);
                } else if (getOne.getDoctorType() == 2 && sysDoctor.getDoctorType() != 2) {
                    /**
                     * 管理员只有一个
                     */
                    if (isSupperRole(sysDoctor)) {
                        return ResultBody.failed("该部门已经有管理员");
                    }
                    Long sysUserId = saveFenjiekou(sysDoctor, id, sysHospital, sysDepartment);
                    sysDoctor.setUserId(sysUserId);
                    baseMapper.updateById(sysDoctor);
                } else if (getOne.getDoctorType() != 2 && sysDoctor.getDoctorType() == 2) {
                    //将组织删除
                    Map<String, Object> columnMap = new HashMap<>();
                    columnMap.put("user_id", getOne.getUserId());
                    boolean b = sysUserOrgService.removeByMap(columnMap);
                    SysUser byId = iSysUserService.getById(getOne.getUserId());
                    //将角色删除
                    QueryWrapper queryWrapper=new QueryWrapper();
                    queryWrapper.eq("user_id",getOne.getUserId());
                    int delete = sysUserRoleMapper.delete(queryWrapper);
                    if(byId!=null){
//                        iSysUserService.delUser(byId.getId());
                        boolean userdelete = iSysUserService.removeById(byId.getId());
                    }
                    redisUtils.hdel(RedisConstant.USER_ORGANIZATION, getOne.getUserId().toString());
                    sysDoctor.setUserId(null);
                    baseMapper.updateById(sysDoctor);
                } else if (getOne.getDoctorType() == 2 && sysDoctor.getDoctorType() == 2) {
                    baseMapper.updateById(sysDoctor);
                }
            }
        }
        return ResultBody.ok();
    }
    //是否可以使是超管角色
    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;
                    }
                }
            }
        }
        return flag;
    }
    //保存的分接口
    public Long saveFenjiekou(SysDoctorDto sysDoctor, String id, SysHospital sysHospital, SysDepartment sysDepartment) {
        Long sysUserId = null;
        if (sysDoctor.getDoctorType() != 2) {
            //保存
            SysUser sysUser = new SysUser();
            sysUser.setUsername(sysDoctor.getUsername());
            sysUser.setPassword(passwordEncoder.encode(sysDoctor.getPassword()));
            sysUser.setNickname(sysDoctor.getHospitalName());
            sysUser.setHeadImgUrl(sysDoctor.getDoctorLogo());
            sysUser.setMobile(sysDoctor.getDoctorTel());
            sysUser.setType(UserType.DOCTOR.name());
            sysUser.setTenantId(CommonConstant.H_TENANT);
            sysUser.setCreateTime(new Date());
            SysUser byId = iSysUserService.getById(id);
            if (byId != null) {
                sysUser.setCreateUserId(byId.getId());
                sysUser.setCreateUserName(byId.getUsername());
            }
            iSysUserService.save(sysUser);
            sysUserId = sysUser.getId();
            //保存一个角色
            sysDoctor.getRoles().forEach(e -> {
                SysRoleUser sysRoleUser = new SysRoleUser();
                sysRoleUser.setRoleId(e);
                sysRoleUser.setUserId(sysUser.getId());
                int insert = sysUserRoleMapper.insert(sysRoleUser);
            });
            //保存将sys_user_org 保存部门
            SysUserOrg sysUserOrg = new SysUserOrg();
            sysUserOrg.setUserId(sysUser.getId());
            sysUserOrg.setFromId(sysDoctor.getDepartmentId());
            sysUserOrg.setFromLevel(CommonConstant.SYSTEM_ORG_DEP_LEVEL);
            sysUserOrg.setOrgId(sysDepartment.getOrgId());
            //保存公司
            sysUserOrgService.saveOrUpdate(sysUserOrg);
            SysUserOrg sysGongsi = new SysUserOrg();
            sysGongsi.setUserId(sysUser.getId());
            sysGongsi.setOrgId(sysHospital.getOrgId());
            sysGongsi.setFromId(sysDoctor.getHospitalId());
            sysGongsi.setFromLevel(CommonConstant.SYSTEM_ORG_DEP_LEVEL);
            sysUserOrgService.saveOrUpdate(sysGongsi);
            //保存到Redis
            boolean hset = redisUtils.hset(RedisConstant.USER_ORGANIZATION, sysUserOrg.getUserId().toString(), sysUserOrg);
        }
        return sysUserId;
    }
    @Override
@@ -336,8 +382,7 @@
                    int update = sysUserRoleMapper.update(sysRoleUser, queryWrapper);
                    //现将操作人员设为非管理角色
                    sysDoctor.setIsAdminUser(false);
                    if(baseMapper.updateById(sysDoctor)>0)
                    {
                    if (baseMapper.updateById(sysDoctor) > 0) {
                        //再将新用户设为管理
                        sysDoctor=baseMapper.selectById(id);
                        if (sysDoctor != null) {
@@ -353,46 +398,33 @@
                                sysDoctor.setIsAdminUser(true);
                                if (baseMapper.updateById(sysDoctor)>0) {
                                    return ResultBody.ok().data(true).msg("管理员设置成功!");
                                }
                                else
                                {
                                } else {
                                    return ResultBody.failed("设为管理失败!").data(false);
                                }
                            }
                            else
                            {
                            } else {
                                return ResultBody.failed("设为管理失败,改用户就是管理员!").data(false);
                            }
                        }
                        else
                        {
                        } else {
                            return ResultBody.failed("用户信息有误!").data(false);
                        }
                    }
                    else
                    {
                    } else {
                        return ResultBody.failed("设为管理失败!").data(false);
                    }
                }
                else
                {
                } else {
                    return ResultBody.failed("当前操作用户不是管理员!").data(false);
                }
            }
            else
            {
            } else {
                return ResultBody.failed("用户信息有误!").data(false);
            }
        }
        else
        {
        } else {
            return ResultBody.failed("业务参数有误!").data(false);
        }
    }
    /**
     * 判断用户名是否管理员
     *
     * @param userName
     * @return
     */
@@ -402,13 +434,10 @@
            SysDoctor sysDoctor= baseMapper.userIsAdmin(userName);
            if (sysDoctor != null) {
                return ResultBody.ok().data(sysDoctor.getIsAdminUser());
            }
            else
            {
            } else {
                return ResultBody.failed().data(false);
            }
        }else
        {
        } else {
            return ResultBody.failed("用户名不能为空!").data(false);
        }
    }
kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-biz/src/main/java/com/kidgrow/usercenter/service/impl/SysOrganizationServiceImpl.java
@@ -151,7 +151,7 @@
    @Override
    public int deleteByUserId(Long userId) {
        Map<String, Object> params = new HashMap<>();
        params.put("userId", userId);
        params.put("user_id", userId);
        return sysUserOrgMapper.deleteByMap(params);
    }