From d526d571cbe0a950e777fb325978d72f3ddb302b Mon Sep 17 00:00:00 2001
From: houruijun <411269194@kidgrow.com>
Date: Thu, 13 Aug 2020 21:38:00 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/dev' into dev

---
 kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-biz/src/main/java/com/kidgrow/usercenter/service/impl/SysDoctorServiceImpl.java |   64 +++++++++++++++++++++++++++++---
 1 files changed, 58 insertions(+), 6 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 08deb28..4dbfd44 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;
@@ -201,7 +203,7 @@
             if (sysDoctor.getId() == null) {
                 Long sysUserId = null;
                 //保存部门信息
-                ResultBody resultBody = this.saveFenjiekou(sysDoctor, id, sysHospital, sysDepartment);
+                ResultBody resultBody = this.saveFenjiekou(sysDoctor, id, sysHospital, sysDepartment,null);
                 if(resultBody.getCode()==0){
                     sysUserId=(Long)resultBody.getData();
                 }else {
@@ -221,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);
@@ -244,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) {
                     /**
                      * 管理员只有一个
@@ -251,7 +269,7 @@
                     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();
@@ -277,6 +295,11 @@
                     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);
                 }
@@ -304,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;
                     }
                 }
@@ -314,7 +337,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,8 +346,8 @@
             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.getDoctorName());
@@ -338,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 -> {
@@ -382,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("当前操作用户不是管理员");

--
Gitblit v1.8.0