| | |
| | | import com.ruoyi.domain.dto.*; |
| | | import com.ruoyi.mapper.ZInfoUserMapper; |
| | | import com.ruoyi.service.ZInfoUserService; |
| | | import com.ruoyi.service.ZfFamilyService; |
| | | import com.ruoyi.service.ZfRelationService; |
| | | import com.ruoyi.service.ZfRoleService; |
| | | import lombok.extern.slf4j.Slf4j; |
| | | import org.springframework.beans.BeanUtils; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.stereotype.Service; |
| | | import org.springframework.transaction.annotation.Transactional; |
| | | |
| | | import javax.annotation.Resource; |
| | | import java.util.*; |
| | | import java.util.stream.Collectors; |
| | | |
| | |
| | | |
| | | @Autowired |
| | | private ZInfoUserService zInfoUserService; |
| | | |
| | | @Resource |
| | | private ZfFamilyService zfFamilyService; |
| | | |
| | | @Resource |
| | | private ZfRoleService zfRoleService; |
| | | |
| | | @Override |
| | | public AjaxResult selectInfoList(ZInfoUser zInfoUser, Integer pageNum, Integer pageSize) { |
| | |
| | | return AjaxResult.success(); |
| | | } |
| | | |
| | | /** |
| | | * 给用户授权的方法 |
| | | * @param empowerDto |
| | | * @return |
| | | */ |
| | | @Override |
| | | @Transactional |
| | | public AjaxResult empower(EmpowerDto empowerDto) { |
| | | |
| | | //得到dto中的信息 |
| | | String otherUserId = empowerDto.getUserId(); |
| | | String destinationFamilyId = empowerDto.getFamilyId(); |
| | | List<String> authorityList = empowerDto.getAuthorityList(); |
| | | |
| | | String familyId = getMyFamilyId(); |
| | | checkAuthorization(familyId, destinationFamilyId,true); |
| | | |
| | | //授权 //3{2007 1988 1004} |
| | | String finalStr = getFinalStr(destinationFamilyId, authorityList); |
| | | |
| | | //更新被授权用户的权限 |
| | | LambdaQueryWrapper<ZInfoUser> lqw2 = new LambdaQueryWrapper<>(); |
| | | lqw2.eq(ZInfoUser::getUserId,otherUserId); |
| | | ZInfoUser otherUser = getOne(lqw2); |
| | | String secondFamilyId = otherUser.getSecondFamilyId(); |
| | | |
| | | String replaceFamilyId=null; |
| | | |
| | | boolean save=true; |
| | | |
| | | if (StringUtils.isNotEmpty(secondFamilyId)){ |
| | | //如果原来就已经有被赋予权限了,那么需要判断是不是跟这个家庭号有关的权限 |
| | | |
| | | //这个secondFamilyId是当前用户的完整权限字段 |
| | | if(secondFamilyId.contains(",")){ |
| | | String[] split = secondFamilyId.split(","); |
| | | for (int i = 0; i < split.length; i++) { |
| | | String fid = split[i].substring(0, split[i].indexOf("{"));//从权限块中拿到被授权的家庭号 |
| | | if(fid.equals(finalStr.substring(0,finalStr.indexOf("{")))){ |
| | | //如果匹配到了对应的家庭号,那么就替换掉对应的权限块就可以了,不需要追加 |
| | | save=false; |
| | | split[i]=finalStr; |
| | | break; |
| | | } |
| | | } |
| | | List<String> finalList = Arrays.asList(split); |
| | | StringBuilder stringBuilder = new StringBuilder(); |
| | | for (String s : finalList) { |
| | | stringBuilder.append(s).append(","); |
| | | } |
| | | stringBuilder.deleteCharAt(stringBuilder.length()-1); |
| | | |
| | | replaceFamilyId = stringBuilder.toString(); |
| | | |
| | | }else { |
| | | String fid = secondFamilyId.substring(0, secondFamilyId.indexOf("{"));//从权限块中拿到被授权的家庭号 |
| | | if(fid.equals(finalStr.substring(0,finalStr.indexOf("{")))){ |
| | | //如果匹配到了对应的家庭号,那么就替换掉对应的权限块就可以了,不需要追加 |
| | | save=false; |
| | | replaceFamilyId=finalStr; |
| | | } |
| | | } |
| | | |
| | | if(save){ |
| | | //需要追加,没有匹配到对应的家庭号 |
| | | replaceFamilyId=secondFamilyId+","+finalStr; |
| | | }else { |
| | | //不需要追加 |
| | | } |
| | | |
| | | }else { |
| | | //原来就没有权限了 |
| | | replaceFamilyId=finalStr; |
| | | } |
| | | |
| | | LambdaUpdateWrapper<ZInfoUser> uw = new LambdaUpdateWrapper<>(); |
| | | uw.eq(ZInfoUser::getUserId,otherUserId).set(ZInfoUser::getSecondFamilyId,replaceFamilyId); |
| | | if (update(null,uw)) { |
| | | return AjaxResult.success(); |
| | | }else { |
| | | return AjaxResult.error(); |
| | | } |
| | | |
| | | return null; |
| | | } |
| | | |
| | | // /** |
| | | // * 给用户授权的方法 |
| | | // * @param empowerDto |
| | | // * @return |
| | | // */ |
| | | // @Override |
| | | // @Transactional |
| | | // public AjaxResult empower(EmpowerDto empowerDto) { |
| | | // |
| | | // //得到dto中的信息 |
| | | // String otherUserId = empowerDto.getUserId(); |
| | | // String destinationFamilyId = empowerDto.getFamilyId(); |
| | | // List<String> authorityList = empowerDto.getAuthorityList(); |
| | | // |
| | | // String familyId = getMyFamilyId(); |
| | | // checkAuthorization(familyId, destinationFamilyId,true); |
| | | // |
| | | // //授权 //3{2007 1988 1004} |
| | | // String finalStr = getFinalStr(destinationFamilyId, authorityList); |
| | | // |
| | | // //更新被授权用户的权限 |
| | | // LambdaQueryWrapper<ZInfoUser> lqw2 = new LambdaQueryWrapper<>(); |
| | | // lqw2.eq(ZInfoUser::getUserId,otherUserId); |
| | | // ZInfoUser otherUser = getOne(lqw2); |
| | | // String secondFamilyId = otherUser.getSecondFamilyId(); |
| | | // |
| | | // String replaceFamilyId=null; |
| | | // |
| | | // boolean save=true; |
| | | // |
| | | // if (StringUtils.isNotEmpty(secondFamilyId)){ |
| | | // //如果原来就已经有被赋予权限了,那么需要判断是不是跟这个家庭号有关的权限 |
| | | // |
| | | // //这个secondFamilyId是当前用户的完整权限字段 |
| | | // if(secondFamilyId.contains(",")){ |
| | | // String[] split = secondFamilyId.split(","); |
| | | // for (int i = 0; i < split.length; i++) { |
| | | // String fid = split[i].substring(0, split[i].indexOf("{"));//从权限块中拿到被授权的家庭号 |
| | | // if(fid.equals(finalStr.substring(0,finalStr.indexOf("{")))){ |
| | | // //如果匹配到了对应的家庭号,那么就替换掉对应的权限块就可以了,不需要追加 |
| | | // save=false; |
| | | // split[i]=finalStr; |
| | | // break; |
| | | // } |
| | | // } |
| | | // List<String> finalList = Arrays.asList(split); |
| | | // StringBuilder stringBuilder = new StringBuilder(); |
| | | // for (String s : finalList) { |
| | | // stringBuilder.append(s).append(","); |
| | | // } |
| | | // stringBuilder.deleteCharAt(stringBuilder.length()-1); |
| | | // |
| | | // replaceFamilyId = stringBuilder.toString(); |
| | | // |
| | | // }else { |
| | | // String fid = secondFamilyId.substring(0, secondFamilyId.indexOf("{"));//从权限块中拿到被授权的家庭号 |
| | | // if(fid.equals(finalStr.substring(0,finalStr.indexOf("{")))){ |
| | | // //如果匹配到了对应的家庭号,那么就替换掉对应的权限块就可以了,不需要追加 |
| | | // save=false; |
| | | // replaceFamilyId=finalStr; |
| | | // } |
| | | // } |
| | | // |
| | | // if(save){ |
| | | // //需要追加,没有匹配到对应的家庭号 |
| | | // replaceFamilyId=secondFamilyId+","+finalStr; |
| | | // }else { |
| | | // //不需要追加 |
| | | // } |
| | | // |
| | | // }else { |
| | | // //原来就没有权限了 |
| | | // replaceFamilyId=finalStr; |
| | | // } |
| | | // |
| | | // LambdaUpdateWrapper<ZInfoUser> uw = new LambdaUpdateWrapper<>(); |
| | | // uw.eq(ZInfoUser::getUserId,otherUserId).set(ZInfoUser::getSecondFamilyId,replaceFamilyId); |
| | | // if (update(null,uw)) { |
| | | // return AjaxResult.success(); |
| | | // }else { |
| | | // return AjaxResult.error(); |
| | | // } |
| | | // |
| | | // } |
| | | |
| | | |
| | | private void checkAuthorization(String familyId, String destinationFamilyId,boolean flag) { |
| | |
| | | } |
| | | } |
| | | |
| | | private String getMyFamilyId() { |
| | | private Long getMyFamilyId() { |
| | | //得到自己的家庭id信息 |
| | | SysUser user = SecurityUtils.getLoginUser().getUser(); |
| | | Long myUserId = user.getUserId(); |
| | | LambdaQueryWrapper<ZInfoUser> lqw = new LambdaQueryWrapper<>(); |
| | | lqw.eq(ZInfoUser::getUserId,myUserId); |
| | | ZInfoUser zInfoUser = getOne(lqw); |
| | | String familyId = zInfoUser.getFamilyId(); |
| | | Long familyId = zInfoUser.getFamilyId(); |
| | | return familyId; |
| | | } |
| | | |
| | |
| | | |
| | | List<ZInfoUser> allPeopleList = list(); |
| | | List<ZInfoUser> result = null; |
| | | try { |
| | | result = allPeopleList.stream().filter(people -> people.getUserId()!=1&&(people.getFatherId() == 0||people.getMomId()==0)) |
| | | // try { |
| | | // result = allPeopleList.stream().filter(people -> people.getUserId()!=1&&(people.getFatherId() == 0||people.getMomId()==0)) |
| | | // .map(people -> { |
| | | // if(depth>1){ |
| | | // people.setIdentity(1); |
| | | // //根据配偶id查询配偶的数据,封装好一起返回 |
| | | // Long spouseId = people.getSpouseId(); |
| | | // ZInfoUser spouse = zInfoUserService.getById(spouseId); |
| | | // spouse.setIdentity(1); |
| | | // people.setSpouse(spouse); |
| | | // people.setChildList(fillChildren(people, allPeopleList, depth-1)); |
| | | // } |
| | | // return people; |
| | | // }).collect(Collectors.toList()); |
| | | // } catch (NullPointerException e) { |
| | | // throw new RuntimeException("您在加入成员的时候没有指定该成员的父亲或者母亲"); |
| | | // } |
| | | result = allPeopleList.stream().filter(people -> people.getUserId()!=1&&(people.getFatherId() == 0||people.getMomId()==0)&&people.getIsMyFamily()==1) |
| | | .map(people -> { |
| | | if(depth>1){ |
| | | people.setIdentity(1); |
| | | //根据配偶id查询配偶的数据,封装好一起返回 |
| | | Long spouseId = people.getSpouseId(); |
| | | ZInfoUser spouse = zInfoUserService.getById(spouseId); |
| | | spouse.setIdentity(1); |
| | | people.setSpouse(spouse); |
| | | people.setChildList(fillChildren(people, allPeopleList, depth-1)); |
| | | } |
| | | return people; |
| | | }).collect(Collectors.toList()); |
| | | } catch (NullPointerException e) { |
| | | throw new RuntimeException("您在加入成员的时候没有指定该成员的父亲或者母亲"); |
| | | } |
| | | |
| | | |
| | | return AjaxResult.success(result); |
| | |
| | | |
| | | } |
| | | |
| | | @Override |
| | | public ZInfoUser getInfoById(Long userId) { |
| | | ZInfoUser user = getById(userId); |
| | | Long familyId = user.getFamilyId(); |
| | | String familyName = zfFamilyService.getById(familyId).getName(); |
| | | String roleName = zfRoleService.getById(user.getRoleId()).getName(); |
| | | user.setFamilyName(familyName); |
| | | user.setRoleName(roleName); |
| | | return user; |
| | | } |
| | | |
| | | // @Override |
| | | // public ZInfoUser getInfoById(Long userId) { |
| | | // |
| | | // ZInfoUser user = getById(userId); |
| | | // |
| | | // //用逗号隔开的家庭id |
| | | // String familyId = user.getFamilyId(); |
| | | // |
| | | // //在自己家庭中角色的id |
| | | // Long roleId = user.getRoleId(); |
| | | // |
| | | // ArrayList<String> familyList = new ArrayList<>(); |
| | | // |
| | | // //填充所属家庭 |
| | | // if(familyId.contains(",")){ |
| | | // String[] familyIds = familyId.split(","); |
| | | // for (String id : familyIds) { |
| | | // familyList.add(zfFamilyService.getById(id).getName()); |
| | | // } |
| | | // }else { |
| | | // familyList.add(zfFamilyService.getById(familyId).getName()); |
| | | // } |
| | | // |
| | | // user.setFamilyList(familyList); |
| | | // |
| | | // //填充所在家庭的角色 |
| | | // user.setRole(zfRoleService.getById(roleId).getName()); |
| | | // |
| | | // return user; |
| | | // } |
| | | |
| | | @Override |
| | | public ZInfoUser getMyself() { |
| | | SysUser user = SecurityUtils.getLoginUser().getUser(); |
| | | Long userId = user.getUserId(); |
| | | return getById(userId); |
| | | } |
| | | |
| | | |
| | | private void recursionFindUser(List<ZInfoUser> treeList){ |
| | | if (treeList==null||treeList.isEmpty()){ |
| | |
| | | return one; |
| | | else { |
| | | one.setIdentity(people.getIdentity()+1); |
| | | |
| | | //根据配偶id查询配偶的数据,封装好一起返回 |
| | | Long spouseId = one.getSpouseId(); |
| | | ZInfoUser spouse = zInfoUserService.getById(spouseId); |
| | | one.setSpouse(spouse); |
| | | if(spouseId!=null){ |
| | | ZInfoUser spouse = zInfoUserService.getById(spouseId); |
| | | spouse.setIdentity(people.getIdentity()+1); |
| | | one.setSpouse(spouse); |
| | | } |
| | | List<ZInfoUser> zinfo = fillChildren(one, allPeopleList, depth - 1); |
| | | one.setChildList(zinfo); |
| | | System.out.println(one); |