From 4bb63c2596c4b549e47b514e23f707b37fe9c743 Mon Sep 17 00:00:00 2001
From: zhaoxiaohao <279049017@qq.com>
Date: Thu, 15 Oct 2020 17:13:52 +0800
Subject: [PATCH] 修改  redis保存一条记录的bug

---
 kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-biz/src/main/java/com/kidgrow/usercenter/service/impl/SysDoctorServiceImpl.java |  153 ++++++++++++++++++++++++++++++---------------------
 1 files changed, 90 insertions(+), 63 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 8a596ea..d2850bf 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);
@@ -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,21 +256,24 @@
                     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());
                     sysGongsi.setOrgId(sysHospital.getOrgId());
                     sysGongsi.setFromId(sysDoctor.getHospitalId());
                     sysGongsi.setFromLevel(CommonConstant.SYSTEM_ORG_DEP_LEVEL);
+                    sysUserOrgs.add(sysGongsi);
                     sysUserOrgService.saveOrUpdate(sysGongsi);
                     baseMapper.updateById(sysDoctor);
                     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 +288,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 +304,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 +326,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 +359,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 +368,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 +384,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);
             }
@@ -396,12 +418,14 @@
                 sysRoleUser.setUserId(sysUser.getId());
                 int insert = sysUserRoleMapper.insert(sysRoleUser);
             });
+            List<SysUserOrg> sysUserOrgs=new ArrayList<>();
             //保存将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());
+            sysUserOrgs.add(sysUserOrg);
             //保存公司
             sysUserOrgService.saveOrUpdate(sysUserOrg);
             SysUserOrg sysGongsi = new SysUserOrg();
@@ -410,8 +434,9 @@
             sysGongsi.setFromId(sysDoctor.getHospitalId());
             sysGongsi.setFromLevel(CommonConstant.SYSTEM_ORG_DEP_LEVEL);
             sysUserOrgService.saveOrUpdate(sysGongsi);
+            sysUserOrgs.add(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 +456,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 +473,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 +489,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