forked from kidgrow-microservices-platform

houruijun
2020-08-13 d526d571cbe0a950e777fb325978d72f3ddb302b
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;
@@ -73,14 +75,14 @@
//    private final String HOSPITAL_ADMIN="hospital_admin";
    @Override
    public PageResult<SysDoctorVo> findList(Map<String, Object> params, SysUser user) {
    public PageResult<SysDoctorDto> findList(Map<String, Object> params, SysUser user) {
        Page<SysDoctor> page = new Page<>(MapUtils.getInteger(params, "page"), MapUtils.getInteger(params, "limit"));
        //添加权限
        SysRoleOrganizationServiceImpl.getRoleOrg(params, user);
        List<SysDoctor> list = baseMapper.findList(page, params);
        List<SysDoctorVo> listvo = new ArrayList<>();
        List<SysDoctorDto> listvo = new ArrayList<>();
        list.forEach(e -> {
            SysDoctorVo vo = new SysDoctorVo();
            SysDoctorDto vo = new SysDoctorDto();
            BeanCopier beanCopier = BeanCopier.create(SysDoctor.class, SysDoctorVo.class, false);
            beanCopier.copy(e, vo, null);
            //查询用户的登录账号;
@@ -89,10 +91,15 @@
                if (sysUser != null) {
                    vo.setUsername(sysUser.getUsername());
                }
                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);
            }
            listvo.add(vo);
        });
        return PageResult.<SysDoctorVo>builder().data(listvo).code(0).count(page.getTotal()).build();
        return PageResult.<SysDoctorDto>builder().data(listvo).code(0).count(page.getTotal()).build();
    }
    /**
@@ -183,12 +190,7 @@
                    return ResultBody.failed("选择一个角色");
                }
            }
            /**
             * 管理员只有一个
             */
            if (isSupperRole(sysDoctor)) {
                return ResultBody.failed("该部门已经有管理员");
            }
            /**
             * 限制只有创建医生的个数
             *
@@ -201,7 +203,12 @@
            if (sysDoctor.getId() == null) {
                Long sysUserId = null;
                //保存部门信息
                sysUserId = this.saveFenjiekou(sysDoctor, id, sysHospital, sysDepartment);
                ResultBody resultBody = this.saveFenjiekou(sysDoctor, id, sysHospital, sysDepartment,null);
                if(resultBody.getCode()==0){
                    sysUserId=(Long)resultBody.getData();
                }else {
                    return resultBody;
                }
                //保存doctor的数据
                SysDoctor sysDoc = new SysDoctor();
                BeanCopier beanCopier = BeanCopier.create(SysDoctorDto.class, SysDoctor.class, false);
@@ -216,6 +223,12 @@
                //更新
                SysDoctor getOne = baseMapper.selectById(sysDoctor.getId());
                if (getOne.getDoctorType() != 2 && sysDoctor.getDoctorType() != 2) {
                    /**
                     * 管理员只有一个
                     */
                    if (isSupperRole(sysDoctor)) {
                        return ResultBody.failed("该部门已经有管理员");
                    }
                    Map<String, Object> columnMap = new HashMap<>();
                    columnMap.put("user_id", sysDoctor.getUserId());
                    boolean b = sysUserOrgService.removeByMap(columnMap);
@@ -239,6 +252,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) {
                    /**
                     * 管理员只有一个
@@ -246,7 +269,13 @@
                    if (isSupperRole(sysDoctor)) {
                        return ResultBody.failed("该部门已经有管理员");
                    }
                    Long sysUserId = 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 {
                        return resultBody;
                    }
                    sysDoctor.setUserId(sysUserId);
                    baseMapper.updateById(sysDoctor);
                } else if (getOne.getDoctorType() != 2 && sysDoctor.getDoctorType() == 2) {
@@ -260,12 +289,17 @@
                    queryWrapper.eq("user_id",getOne.getUserId());
                    int delete = sysUserRoleMapper.delete(queryWrapper);
                    if(byId!=null){
//                        iSysUserService.delUser(byId.getId());
                        boolean userdelete = iSysUserService.removeById(byId.getId());
                        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);
                }
@@ -293,7 +327,7 @@
                wrapper.in("user_id", collect);
                List<SysRoleUser> list = this.sysUserRoleMapper.selectList(wrapper);
                for (SysRoleUser sysRoleUser : list) {
                    if (sysRoleUser.getRoleId() == CommonConstant.HOSPITAL_ADMIN_ID) {
                    if (sysRoleUser.getRoleId().equals( CommonConstant.HOSPITAL_ADMIN_ID)) {
                        flag = true;
                    }
                }
@@ -303,14 +337,20 @@
    }
    //保存的分接口
    public Long 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;
        /**
         * 管理员只有一个
         */
        if (isSupperRole(sysDoctor)) {
            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()));
            sysUser.setNickname(sysDoctor.getHospitalName());
            sysUser.setNickname(sysDoctor.getDoctorName());
            sysUser.setHeadImgUrl(sysDoctor.getDoctorLogo());
            sysUser.setMobile(sysDoctor.getDoctorTel());
            sysUser.setType(UserType.DOCTOR.name());
@@ -321,7 +361,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 -> {
@@ -347,7 +413,7 @@
            //保存到Redis
            boolean hset = redisUtils.hset(RedisConstant.USER_ORGANIZATION, sysUserOrg.getUserId().toString(), sysUserOrg);
        }
        return sysUserId;
        return ResultBody.ok().data(sysUserId);
    }
    @Override
@@ -365,6 +431,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("当前操作用户不是管理员");