From 04c359a40d51c391fdfea626e7f147422a33b89f Mon Sep 17 00:00:00 2001 From: zhaoxiaohao <913652501@qq.com> Date: Fri, 19 Jun 2020 09:43:08 +0800 Subject: [PATCH] Merge branch 'dev' of http://192.168.2.240:7070/r/kidgrow-microservices-platform into dev --- kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-biz/src/main/java/com/kidgrow/usercenter/service/impl/SysUserServiceImpl.java | 378 +++++++++++++++++++++++++++++++++++++++-------------- 1 files changed, 274 insertions(+), 104 deletions(-) diff --git a/kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-biz/src/main/java/com/kidgrow/usercenter/service/impl/SysUserServiceImpl.java b/kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-biz/src/main/java/com/kidgrow/usercenter/service/impl/SysUserServiceImpl.java index 4b67902..20d644f 100644 --- a/kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-biz/src/main/java/com/kidgrow/usercenter/service/impl/SysUserServiceImpl.java +++ b/kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-biz/src/main/java/com/kidgrow/usercenter/service/impl/SysUserServiceImpl.java @@ -87,8 +87,6 @@ @Autowired private SysUserRoleMapper sysUserRoleMapper; - private final String HOSPITAL_ADMIN="hospital_admin"; - @Override public LoginAppUser findByUsername(String username) { SysUser sysUser = this.selectByUsername(username); @@ -117,6 +115,11 @@ public LoginAppUser getLoginAppUser(SysUser sysUser) { LoginAppUser loginAppUser = new LoginAppUser(); if (sysUser != null) { + //返回的数据为什么要把密码也返回?清空!! + loginAppUser.setPassword(""); + loginAppUser.setNewPassword(""); + loginAppUser.setOldPassword(""); + BeanUtils.copyProperties(sysUser, loginAppUser); //获取用户所属组织机构列表 List<SysOrganization> sysOrganizations = organizationService.findListByUserId(sysUser.getId()); @@ -221,7 +224,7 @@ } } - @Transactional + @Transactional(rollbackFor = Exception.class) @Override public ResultBody updatePassword(Long id, String oldPassword, String newPassword, Boolean isdefault) { SysUser sysUser = baseMapper.selectById(id); @@ -633,77 +636,113 @@ * @param userRegVo * @return */ + @Transactional(rollbackFor = Exception.class) @Override - public ResultBody doctorUserReg(UserRegVo userRegVo) { + public ResultBody doctorUserReg(UserRegVo userRegVo, SysUser sysUserd) { //检查手机号是否已经注册 H端登录名和手机号存一样的值 if (phoneIsUsed(userRegVo.getMobile())) { return ResultBody.failed("该手机号已经注册"); } - //检查判断是注册 还是添加用户,注册用户先走基本数据建设 + //创建人id + Long createUserId=0L; + //创建人id + String createUserName="自动创建"; + //是否注册用户 + Boolean isReg=false; + //业务成功 + Boolean isSuccess=true; + //业务失败提示信息 + String expMsg=""; + //检查判断是注册 还是添加用户,注册用户先走基本数据建设 组织/医院/科室 + SysOrganization sysOrganizationHos=new SysOrganization(); + SysOrganization sysOrganizationDe=new SysOrganization(); + SysUserOrg sysUserOrgH=new SysUserOrg(); + SysUserOrg sysUserOrgD=new SysUserOrg(); + SysDictionaries sysDictionaries=new SysDictionaries(); + List<SysOrganization> sysOrganizationList=new ArrayList<SysOrganization>(); + SysDoctor sysDoctor=new SysDoctor(); if (userRegVo.getHospitalId()==null) { + isReg=true; userRegVo.setDoctorState(true); //添加医院组织结构数据 - List<SysOrganization> sysOrganizationList=new ArrayList<SysOrganization>(); - SysOrganization sysOrganizationHos=new SysOrganization(); sysOrganizationHos.setOrgAttr(1); sysOrganizationHos.setOrgLevel(1); sysOrganizationHos.setOrgName(userRegVo.getHospitalName()); - sysOrganizationHos.setCreateUserName("自主注册"); - sysOrganizationHos.setCreateUserId(0L); - sysOrganizationList.add(sysOrganizationHos); + sysOrganizationHos.setCreateUserName(createUserName); + sysOrganizationHos.setCreateUserId(createUserId); + Boolean H=organizationService.save(sysOrganizationHos); + if (H) { + sysOrganizationList.add(sysOrganizationHos); + //添加科室组织数据 + sysOrganizationDe.setOrgAttr(2); + sysOrganizationDe.setOrgLevel(2); + sysOrganizationDe.setOrgName(userRegVo.getDepartmentName()); + sysOrganizationDe.setCreateUserName(createUserName); + sysOrganizationDe.setCreateUserId(createUserId); + Boolean D=organizationService.save(sysOrganizationDe); + if (D) { + sysOrganizationList.add(sysOrganizationDe); + //写医院数据 + SysHospital sysHospital=new SysHospital(); + sysHospital.setHospitalName(userRegVo.getHospitalName()); + sysHospital.setOrgId(sysOrganizationHos.getId()); + sysHospital.setHospitalState(0); + sysHospital.setCreateUserId(createUserId); + sysHospital.setCreateUserName(createUserName); - //添加科室组织数据 - SysOrganization sysOrganizationDe=new SysOrganization(); - sysOrganizationDe.setOrgAttr(2); - sysOrganizationDe.setOrgLevel(2); - sysOrganizationDe.setOrgName(userRegVo.getDepartmentName()); - sysOrganizationDe.setCreateUserName("自主注册"); - sysOrganizationDe.setCreateUserId(0L); - sysOrganizationList.add(sysOrganizationDe); - //批量写入 - boolean orgRe= organizationService.saveBatch(sysOrganizationList); - if (orgRe) { - //写医院数据 - SysHospital sysHospital=new SysHospital(); - sysHospital.setHospitalName(userRegVo.getHospitalName()); - sysHospital.setOrgId(sysOrganizationHos.getId()); - sysHospital.setAccountsCount(1); - sysHospital.setHospitalState(0); - sysHospital.setCreateUserId(0L); - sysHospital.setCreateUserName("自主注册"); - - boolean h=hospitalService.save(sysHospital); - if (h) { - userRegVo.setHospitalId(sysHospital.getId()); - //保存科室数据 - SysDepartment sysDepartment=new SysDepartment(); - sysDepartment.setHospitalId(sysHospital.getId()); - sysDepartment.setOrgId(sysOrganizationDe.getId()); - sysDepartment.setDepartmentName(userRegVo.getDepartmentName()); - sysDepartment.setSaleUserId(0L); - sysDepartment.setSaleUserName("自主注册"); - sysDepartment.setSaleUserTel("0"); - sysDepartment.setServerUserId(0L); - sysDepartment.setServerUserTel("0"); - sysDepartment.setServerUserName("自主注册"); - boolean d=departmentService.save(sysDepartment); - if (!d) { - return ResultBody.failed("科室数据写入失败"); + boolean h=hospitalService.save(sysHospital); + if (h) { + userRegVo.setHospitalId(sysHospital.getId()); + //保存科室数据 + SysDepartment sysDepartment=new SysDepartment(); + sysDepartment.setHospitalId(sysHospital.getId()); + sysDepartment.setOrgId(sysOrganizationDe.getId()); + sysDepartment.setDepartmentName(userRegVo.getDepartmentName()); + sysDepartment.setSaleUserId(createUserId); + sysDepartment.setAccountsCount(1); + sysDepartment.setSaleUserName(createUserName); + sysDepartment.setSaleUserTel("0"); + sysDepartment.setServerUserId(createUserId); + sysDepartment.setServerUserTel("0"); + sysDepartment.setServerUserName(createUserName); + boolean d=departmentService.save(sysDepartment); + if (!d) { + isSuccess=false; + expMsg="科室数据写入失败"; + } + else + { + userRegVo.setDepartmentId(sysDepartment.getId()); + } } else { - userRegVo.setDepartmentId(sysDepartment.getId()); + isSuccess=false; + expMsg="医院数据写入失败"; } } else { - return ResultBody.failed("医院数据写入失败"); + isSuccess=false; + expMsg="科室组织数据写入失败"; } } else { - return ResultBody.failed("组织数据写入失败"); + isSuccess=false; + expMsg="医院组织数据写入失败"; } + } + + //业务执行中途出错 手动撤回数据 + if (isReg&&!isSuccess) { + RollBackData(sysOrganizationList,userRegVo.getHospitalId(), + userRegVo.getDepartmentId(),0L,0L, + 0L,0L, 0L); + return ResultBody.failed(expMsg); + } + if (!isReg&&departmetAccountsCount(userRegVo.getDepartmentId())<1) { + return ResultBody.failed("当前科室可创建账户数量已满"); } //添加用户数据 如果没有输入密码,将会创建一个默认密码返回 String defaultPassWord=""; @@ -735,83 +774,188 @@ sysUser.setDel(false); sysUser.setTenantId("hospital"); boolean u=this.save(sysUser); + SysRoleUser sysRoleUser=new SysRoleUser(); if(u) { - //保存 角色信息 + //保存角色用户绑定信息 sys_role_user Map<String,Object> map= new HashMap<>(); - map.put("code",HOSPITAL_ADMIN); + map.put("code",CommonConstant.HOSPITAL_DOCTOR_CODE); map.put("enabled",1); map.put("is_del",0); List<SysRole> sysRoles = sysRoleMapper.selectByMap(map); if(sysRoles.size()>0){ - //保存一个角色 + //保存角色和用户绑定关系数据 SysRole sysRole = sysRoles.get(0); - SysRoleUser sysRoleUser=new SysRoleUser(); sysRoleUser.setRoleId(sysRole.getId()); sysRoleUser.setUserId(sysUser.getId()); int insert = sysUserRoleMapper.insert(sysRoleUser); - } - //写入职务数据 - if (StringUtils.isNotBlank(userRegVo.getDoctorRank())) { - //检查医生职务是否存在 - Map<String, Object> selectMap = new HashMap<>(); - selectMap.put("dictionaries_name", userRegVo.getDoctorRank()); - List<SysDictionaries> dictionariesList=sysDictionariesService.findAll(selectMap); - if (dictionariesList.size()>0) { - for (int i = dictionariesList.size() - 1; i >= 0; i--) { - if (dictionariesList.get(i).getDictionariesName().equals(userRegVo.getDoctorRank())) { - userRegVo.setDoctorRankId(dictionariesList.get(i).getId()); - break; + if (insert>0) { + //写入职务数据 + if (StringUtils.isNotBlank(userRegVo.getDoctorRank())) { + //检查医生职务是否存在 + Map<String, Object> selectMap = new HashMap<>(); + selectMap.put("dictionaries_name", userRegVo.getDoctorRank()); + List<SysDictionaries> dictionariesList=sysDictionariesService.findAll(selectMap); + if (dictionariesList.size()>0) { + for (int i = dictionariesList.size() - 1; i >= 0; i--) { + if (dictionariesList.get(i).getDictionariesName().equals(userRegVo.getDoctorRank())) { + userRegVo.setDoctorRankId(dictionariesList.get(i).getId()); + break; + } + } } + else + { + //创建字典数据 + sysDictionaries.setDictionariesKey(DictionariesConstants.DOCTOR_RANK); + sysDictionaries.setDictionariesClassId(DictionariesConstants.DOCTOR_RANK_ID.toString()); + //将名称汉字转为拼音 + sysDictionaries.setDictionariesKey(Pinyin4jUtil.makeStringByStringSet(Pinyin4jUtil.getPinyin(userRegVo.getDoctorRank(),true))); + sysDictionaries.setDictionariesName(userRegVo.getDoctorRank()); + sysDictionaries.setCreateUserId(createUserId); + sysDictionaries.setCreateUserName(createUserName); + boolean d=sysDictionariesService.save(sysDictionaries); + if (d) { + userRegVo.setDoctorRankId(sysDictionaries.getId()); + //写用户组织关系表 + List<SysUserOrg> sysUserOrgList=new ArrayList<SysUserOrg>(); + + sysUserOrgH.setUserId(sysUser.getId()); + sysUserOrgH.setOrgId(sysOrganizationHos.getId()); + sysUserOrgH.setCreateUserId(isReg?createUserId:sysUserd.getId()); + sysUserOrgH.setCreateUserName(isReg?createUserName:sysUserd.getUsername()); + sysUserOrgList.add(sysUserOrgH); + + sysUserOrgD.setUserId(sysUser.getId()); + sysUserOrgD.setOrgId(sysOrganizationHos.getId()); + sysUserOrgD.setCreateUserId(isReg?createUserId:sysUserd.getId()); + sysUserOrgD.setCreateUserName(isReg?createUserName:sysUserd.getUsername()); + sysUserOrgList.add(sysUserOrgD); + boolean uOrg=iSysUserOrgService.saveBatch(sysUserOrgList); + if (uOrg) { + //写入医生数据 + sysDoctor.setUserId(sysUser.getId()); + sysDoctor.setHospitalId(userRegVo.getHospitalId()); + sysDoctor.setHospitalName(userRegVo.getHospitalName()); + sysDoctor.setDepartmentId(userRegVo.getDepartmentId()); + sysDoctor.setDepartmentName(userRegVo.getDepartmentName()); + sysDoctor.setDoctorRank(userRegVo.getDoctorRank()); + sysDoctor.setDoctorRankId(userRegVo.getDoctorRankId()); + sysDoctor.setCreateUserId(isReg?createUserId:sysUserd.getId()); + sysDoctor.setCreateUserName(isReg?createUserName:sysUserd.getUsername()); + sysDoctor.setDoctorState(userRegVo.getDoctorState()); + sysDoctor.setDoctorTel(userRegVo.getMobile()); + sysDoctor.setDoctorName(userRegVo.getNickname()); + sysDoctor.setServerUserId(isReg?createUserId:sysUserd.getId()); + sysDoctor.setServerUserName(isReg?createUserName:sysUserd.getUsername()); + if (sysDoctorMapper.insert(sysDoctor)==1) { + //非自主注册的 返回信息带密码 + if (!isReg) { + sysUser.setPassword(userRegVo.getPassword()); + } + else + { + sysUser.setPassword(""); + } + } + else + { + isSuccess=false; + expMsg="医生数据写入失败"; + } + } + else + { + isSuccess=false; + expMsg="用户组织数据写入失败"; + } + } + else + { + isSuccess=false; + expMsg="职称数据写入失败"; + } + } + } + else + { + //没有职务数据 + isSuccess=false; + expMsg="没有职称数据"; } } else { - //创建字典数据 - SysDictionaries sysDictionaries=new SysDictionaries(); - sysDictionaries.setDictionariesKey(DictionariesConstants.DOCTOR_RANK); - sysDictionaries.setDictionariesClassId(DictionariesConstants.DOCTOR_RANK_ID.toString()); - //将名称汉字转为拼音 - - sysDictionaries.setDictionariesKey(Pinyin4jUtil.makeStringByStringSet(Pinyin4jUtil.getPinyin(userRegVo.getDoctorRank(),true))); - sysDictionaries.setDictionariesName(userRegVo.getDoctorRank()); - sysDictionaries.setCreateUserId(0L); - sysDictionaries.setCreateUserName("自动创建"); - boolean d=sysDictionariesService.save(sysDictionaries); - if (d) { - userRegVo.setDoctorRankId(sysDictionaries.getId()); - } + isSuccess=false; + expMsg="角色绑定数据写入失败"; } - } - //写入医生数据 - SysDoctor sysDoctor=new SysDoctor(); - sysDoctor.setUserId(sysUser.getId()); - sysDoctor.setHospitalId(userRegVo.getHospitalId()); - sysDoctor.setHospitalName(userRegVo.getHospitalName()); - sysDoctor.setDepartmentId(userRegVo.getDepartmentId()); - sysDoctor.setDepartmentName(userRegVo.getDepartmentName()); - sysDoctor.setDoctorRank(userRegVo.getDoctorRank()); - sysDoctor.setDoctorRankId(userRegVo.getDoctorRankId()); - sysDoctor.setCreateUserId(0L); - sysDoctor.setCreateUserName("自主注册"); - sysDoctor.setDoctorState(userRegVo.getDoctorState()); - sysDoctor.setDoctorTel(userRegVo.getMobile()); - sysDoctor.setDoctorName(userRegVo.getNickname()); - sysDoctor.setServerUserId(0L); - sysDoctor.setServerUserName("自主注册"); - if (sysDoctorMapper.insert(sysDoctor)==1) { - sysUser.setPassword(userRegVo.getPassword()); - return ResultBody.ok().data(sysUser); -// return ResultBody.ok(200,"注册成功").data(sysUser); } else { - return ResultBody.failed("医生数据写入失败"); + isSuccess=false; + expMsg="对应角色没有数据"; } } else { - return ResultBody.failed("用户数据写入失败"); + isSuccess=false; + expMsg="用户数据写入失败"; + } + /***返回数据***/ + if (!isSuccess) { + //撤回数据 + RollBackData(null,0L, + 0L,sysUser.getId(),sysUserOrgH.getId(), + sysUserOrgH.getId(),sysDictionaries.getId(), + sysDoctor.getId()); + return ResultBody.failed(expMsg); + } + else + { + return ResultBody.ok().data(sysUser); + } + } + + /** + * 手动撤回数据,需要撤回那个,给那个id传值,不需要的传0 + * @param sysOrganizationList + * @param hospitalId + * @param departmentId + * @param userId + * @param userOrgIdH + * @param userOrgIdD + * @param dicId + * @param doctorId + */ + private void RollBackData(List<SysOrganization> sysOrganizationList,Long hospitalId,Long departmentId, + Long userId,Long userOrgIdH,Long userOrgIdD,Long dicId,Long doctorId) + { + if (sysOrganizationList!=null&&sysOrganizationList.size()>0) { + for (int i = 0; i < sysOrganizationList.size(); i++) { + organizationService.removeById(sysOrganizationList.get(i)); + } + } + if (hospitalId>0) { + hospitalService.removeById(hospitalId); + } + if (departmentId>0) { + departmentService.removeById(departmentId); + } + if (userId>0) { + baseMapper.deleteById(userId); + sysUserRoleMapper.deleteById(userId); + } + if (userOrgIdH>0) { + sysUserRoleMapper.deleteById(userOrgIdH); + } + if (userOrgIdD>0) { + sysUserRoleMapper.deleteById(userOrgIdD); + } + if (dicId>0) { + sysDictionariesService.removeById(dicId); + } + if (doctorId>0) { + sysDoctorMapper.deleteById(doctorId); } } /** @@ -844,7 +988,33 @@ List<SysUser> sysUsers = baseMapper.selectByMap(selectMap); return (sysUsers.size() > 0); } - + /** + * 检查科室有效剩余账户数量 + * + * @param depatmentId + * @return + */ + private Integer departmetAccountsCount(Long depatmentId) { + SysDepartment sysDepartment = departmentService.getById(depatmentId); + if (sysDepartment == null) { + return 0; + } + else { + Map<String, Object> selectMap = new HashMap<>(); + selectMap.put("departmentId",depatmentId); + selectMap.put("enabled",1); + List<SysDoctor> sysDoctorList=sysDoctorMapper.selectByMap(selectMap); + if (sysDoctorList == null) { + int doctorCount=sysDoctorList.size(); + int accountCount=sysDepartment.getAccountsCount(); + return (accountCount-doctorCount); + } + else + { + return 0; + } + } + } /** * 检查用户登录名是否已经注册 true存在 false不存在 * -- Gitblit v1.8.0