From 3ad8fb4e7cc1391e8090f3da6ffa9c48690a12a3 Mon Sep 17 00:00:00 2001
From: feige <791364011@qq.com>
Date: 星期日, 16 六月 2024 13:45:39 +0800
Subject: [PATCH] 修改了权限的代码

---
 zhang-content/src/main/java/com/ruoyi/service/impl/ZInfoUserServiceImpl.java |  903 ++++++++++++++++++++++++++++++++++++++++++++-----------
 1 files changed, 715 insertions(+), 188 deletions(-)

diff --git a/zhang-content/src/main/java/com/ruoyi/service/impl/ZInfoUserServiceImpl.java b/zhang-content/src/main/java/com/ruoyi/service/impl/ZInfoUserServiceImpl.java
index ca62533..314d72a 100644
--- a/zhang-content/src/main/java/com/ruoyi/service/impl/ZInfoUserServiceImpl.java
+++ b/zhang-content/src/main/java/com/ruoyi/service/impl/ZInfoUserServiceImpl.java
@@ -3,8 +3,6 @@
 
 
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
-import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
-import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.ruoyi.common.core.domain.AjaxResult;
@@ -12,24 +10,21 @@
 import com.ruoyi.common.utils.MapUtils;
 import com.ruoyi.common.utils.SecurityUtils;
 import com.ruoyi.common.utils.StringUtils;
-import com.ruoyi.domain.ZInfoUser;
-import com.ruoyi.domain.ZfEvent;
-import com.ruoyi.domain.ZfRelation;
-import com.ruoyi.domain.dto.EmpowerDto;
-import com.ruoyi.domain.dto.UserRelationDto;
+import com.ruoyi.domain.*;
+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 java.util.ArrayList;
-import java.util.Arrays;
-import java.util.HashMap;
-import java.util.List;
+import javax.annotation.Resource;
+import java.util.*;
 import java.util.stream.Collectors;
 
 /**
@@ -47,12 +42,21 @@
     @Autowired
     private ZfRelationService zfRelationService;
 
+    @Autowired
+    private ZInfoUserService zInfoUserService;
+
+    @Resource
+    private ZfFamilyService zfFamilyService;
+
+    @Resource
+    private ZfRoleService zfRoleService;
+
     @Override
     public AjaxResult selectInfoList(ZInfoUser zInfoUser, Integer pageNum, Integer pageSize) {
 
         LambdaQueryWrapper<ZInfoUser> lqw = buildCondition(zInfoUser);
 
-        Page<ZInfoUser> zInfoUserPage = new Page<>(pageNum,pageSize);
+        Page<ZInfoUser> zInfoUserPage = new Page<>(pageNum, pageSize);
         Page<ZInfoUser> pageResult = page(zInfoUserPage, lqw);
 
         HashMap<String, Object> data = MapUtils.getResult(pageResult);
@@ -60,26 +64,66 @@
 
     }
 
+    @Override
+    public Boolean findByuid(Long uid, Long tfid) {
+
+
+        if(uid==null)
+            return false;
+     //   System.out.println(tfid);
+     //   System.out.println("00000000000---------------");
+        ZInfoUser infu = this.getById(tfid);
+        if(infu==null)
+            return false;
+        if(infu.getFatherId()!=null && uid==infu.getFatherId())
+            return true;
+        if(infu.getMomId()!=null && uid==infu.getMomId())
+            return true;
+        return findByuid(uid, infu.getFatherId()) || findByuid(uid, infu.getMomId());
+    }
+
+    @Override
+    public ZInfoUser getInfoBysysId(Long sysid) {
+        LambdaQueryWrapper<ZInfoUser> lqw = new LambdaQueryWrapper<>();
+        lqw.eq(ZInfoUser::getSysId, sysid);
+        List<ZInfoUser> list = list(lqw);
+        if(list.size()>0)
+            return list.get(0);
+        else
+            return null;
+    }
+
+    @Override
+    public AjaxResult getInfoByfid(Long fid) {
+        LambdaQueryWrapper<ZInfoUser> lqw = new LambdaQueryWrapper<>();
+        lqw.eq(ZInfoUser::getFamilyId, fid);
+        lqw.eq(ZInfoUser::getIsMyFamily, 1L);
+        lqw.isNull(ZInfoUser::getSpouseId);
+        List<ZInfoUser> list = list(lqw);
+
+        return AjaxResult.success(list);
+    }
+
     private LambdaQueryWrapper<ZInfoUser> buildCondition(ZInfoUser zInfoUser) {
 
         LambdaQueryWrapper<ZInfoUser> lqw = new LambdaQueryWrapper<>();
-        lqw.eq(zInfoUser.getUserId()!=null,ZInfoUser::getUserId,zInfoUser.getUserId());
-        lqw.like(StringUtils.isNotEmpty(zInfoUser.getAlwaysAddress()),ZInfoUser::getAlwaysAddress,zInfoUser.getAlwaysAddress());
-        lqw.like(StringUtils.isNotEmpty(zInfoUser.getAlwaysPolice()),ZInfoUser::getAlwaysPolice,zInfoUser.getAlwaysPolice());
-        lqw.like(StringUtils.isNotEmpty(zInfoUser.getIdNum()),ZInfoUser::getIdNum,zInfoUser.getIdNum());
-        lqw.like(StringUtils.isNotEmpty(zInfoUser.getLocationAddress()),ZInfoUser::getLocationAddress,zInfoUser.getLocationAddress());
-        lqw.like(StringUtils.isNotEmpty(zInfoUser.getLocationPolice()),ZInfoUser::getLocationPolice,zInfoUser.getLocationPolice());
-        lqw.like(StringUtils.isNotEmpty(zInfoUser.getNation()),ZInfoUser::getNation,zInfoUser.getNation());
-        lqw.like(StringUtils.isNotEmpty(zInfoUser.getNationality()),ZInfoUser::getNationality,zInfoUser.getNationality());
-        lqw.like(StringUtils.isNotEmpty(zInfoUser.getNickName()),ZInfoUser::getNickName,zInfoUser.getNickName());
-        lqw.like(StringUtils.isNotEmpty(zInfoUser.getOldName()),ZInfoUser::getOldName,zInfoUser.getOldName());
-        lqw.like(StringUtils.isNotEmpty(zInfoUser.getPhoneNumber()),ZInfoUser::getPhoneNumber,zInfoUser.getPhoneNumber());
-        lqw.like(StringUtils.isNotEmpty(zInfoUser.getPoliticalOutlook()),ZInfoUser::getPoliticalOutlook,zInfoUser.getPoliticalOutlook());
-        lqw.like(StringUtils.isNotEmpty(zInfoUser.getPosition()),ZInfoUser::getPosition,zInfoUser.getPosition());
-        lqw.like(StringUtils.isNotEmpty(zInfoUser.getUnit()),ZInfoUser::getUnit,zInfoUser.getUnit());
-        lqw.like(zInfoUser.getSex()!=null,ZInfoUser::getSex,zInfoUser.getSex());
-        lqw.like(zInfoUser.getMaritalStatus()!=null,ZInfoUser::getMaritalStatus,zInfoUser.getMaritalStatus());
-        lqw.like(zInfoUser.getBirth()!=null,ZInfoUser::getBirth,zInfoUser.getBirth());
+        lqw.eq(zInfoUser.getUserId() != null, ZInfoUser::getUserId, zInfoUser.getUserId());
+        lqw.like(StringUtils.isNotEmpty(zInfoUser.getAlwaysAddress()), ZInfoUser::getAlwaysAddress, zInfoUser.getAlwaysAddress());
+        lqw.like(StringUtils.isNotEmpty(zInfoUser.getAlwaysPolice()), ZInfoUser::getAlwaysPolice, zInfoUser.getAlwaysPolice());
+        lqw.like(StringUtils.isNotEmpty(zInfoUser.getIdNum()), ZInfoUser::getIdNum, zInfoUser.getIdNum());
+        lqw.like(StringUtils.isNotEmpty(zInfoUser.getLocationAddress()), ZInfoUser::getLocationAddress, zInfoUser.getLocationAddress());
+        lqw.like(StringUtils.isNotEmpty(zInfoUser.getLocationPolice()), ZInfoUser::getLocationPolice, zInfoUser.getLocationPolice());
+        lqw.like(StringUtils.isNotEmpty(zInfoUser.getNation()), ZInfoUser::getNation, zInfoUser.getNation());
+        lqw.like(StringUtils.isNotEmpty(zInfoUser.getNationality()), ZInfoUser::getNationality, zInfoUser.getNationality());
+        lqw.like(StringUtils.isNotEmpty(zInfoUser.getNickName()), ZInfoUser::getNickName, zInfoUser.getNickName());
+        lqw.like(StringUtils.isNotEmpty(zInfoUser.getOldName()), ZInfoUser::getOldName, zInfoUser.getOldName());
+        lqw.like(StringUtils.isNotEmpty(zInfoUser.getPhoneNumber()), ZInfoUser::getPhoneNumber, zInfoUser.getPhoneNumber());
+        lqw.like(StringUtils.isNotEmpty(zInfoUser.getPoliticalOutlook()), ZInfoUser::getPoliticalOutlook, zInfoUser.getPoliticalOutlook());
+        lqw.like(StringUtils.isNotEmpty(zInfoUser.getPosition()), ZInfoUser::getPosition, zInfoUser.getPosition());
+        lqw.like(StringUtils.isNotEmpty(zInfoUser.getUnit()), ZInfoUser::getUnit, zInfoUser.getUnit());
+        lqw.like(zInfoUser.getSex() != null, ZInfoUser::getSex, zInfoUser.getSex());
+        lqw.like(zInfoUser.getMaritalStatus() != null, ZInfoUser::getMaritalStatus, zInfoUser.getMaritalStatus());
+        lqw.like(zInfoUser.getBirth() != null, ZInfoUser::getBirth, zInfoUser.getBirth());
         return lqw;
 
     }
@@ -88,61 +132,54 @@
     public List<ZInfoUser> selectByCondition(ZInfoUser zInfoUser) {
         LambdaQueryWrapper<ZInfoUser> lambdaQueryWrapper = buildCondition(zInfoUser);
         List<ZInfoUser> list = list(lambdaQueryWrapper);
-        log.info("杩斿洖鐨勬暟鎹负:{}",list);
+        log.info("杩斿洖鐨勬暟鎹负:{}", list);
         return list;
 
     }
 
     @Override
-    public AjaxResult searchMyRelation(Long userId) {
-
-        LambdaQueryWrapper<ZfRelation> lqw = new LambdaQueryWrapper<>();
-        lqw.eq(ZfRelation::getMyId,userId);
-        List<ZfRelation> relationList = zfRelationService.list(lqw);
-
-        ArrayList<UserRelationDto> otherUserList = new ArrayList<>();
-
-        relationList.stream().map(
-                (relation)->{
-                    Long otherId = relation.getOtherId();
-                    ZInfoUser otherUser = getById(otherId);
-                    UserRelationDto userRelationDto = new UserRelationDto();
-                    BeanUtils.copyProperties(otherUser,userRelationDto);
-                    userRelationDto.setRelation(relation.getRelation());
-                    userRelationDto.setId(relation.getId());
-                    otherUserList.add(userRelationDto);
-                    return relation;
-                }
-        ).collect(Collectors.toList());
-
-        return AjaxResult.success(otherUserList);
+    public AjaxResult removeByUserName(List<String> userName) {
+        LambdaQueryWrapper<ZInfoUser> lqw = new LambdaQueryWrapper<>();
+        lqw.in(ZInfoUser::getNickName,String.valueOf(userName.get(0)));
+        System.out.println(userName.get(0));
+        List<ZInfoUser> beanRecords = list(lqw);
+        System.out.println("555555555555555555"+beanRecords);
+        List<Long> ids = list(lqw).stream().map(ZInfoUser::getUserId).collect(Collectors.toList());;
+        removeByIds(ids);
+        return AjaxResult.success("鍒犻櫎鎴愬姛");
     }
 
-    /**
-     * 妫�鏌ヤ紶鍏ュ鏂圭殑id鏄惁瀛樺湪
-     * @param zfRelation
-     */
-    private void checkRelation(ZfRelation zfRelation){
+    @Override
+    public List<ZInfoUser> selectByFamId(long fid) {
+        LambdaQueryWrapper<ZfFamily> lqw = new LambdaQueryWrapper<>();
+        lqw.eq(ZfFamily::getId, fid);
+        ZfFamily zfFamily = zfFamilyService.list(lqw).get(0);
+        LambdaQueryWrapper<ZInfoUser> lqws = new LambdaQueryWrapper<>();
+        lqws.eq(ZInfoUser::getFatherId, zfFamily.getFid());
+      //  lqws.eq(ZInfoUser::getMomId, zfFamily.getMid());
+        List<ZInfoUser> list = list(lqws);
+        return list;
+    }
 
-        LambdaQueryWrapper<ZInfoUser> lqw = new LambdaQueryWrapper<>();
-        lqw.eq(ZInfoUser::getUserId, zfRelation.getOtherId());
+    @Override
+    public AjaxResult searchMyRelation() {
 
-        ZInfoUser zInfoUser2 = getOne(lqw);
-        if (zInfoUser2==null){
-            throw new RuntimeException("瀵规柟鐨刬d涓嶅瓨鍦�");
-        }
+        SysUser user = SecurityUtils.getLoginUser().getUser();
+        Long userId = user.getUserId();
+
+        LambdaQueryWrapper<ZfRelation> lqw = new LambdaQueryWrapper<>();
+        lqw.eq(ZfRelation::getMyId, userId);
+
+        List<ZfRelation> list = zfRelationService.list(lqw);
+        return AjaxResult.success(list);
     }
 
     @Override
     @Transactional
     public AjaxResult addRelation(ZfRelation zfRelation) {
-        checkRelation(zfRelation);
-
-        //鑾峰彇鑷繁鐨刬d骞朵紶鍏�
         SysUser user = SecurityUtils.getLoginUser().getUser();
         Long userId = user.getUserId();
         zfRelation.setMyId(userId);
-
         zfRelationService.save(zfRelation);
         return AjaxResult.success();
     }
@@ -150,171 +187,543 @@
     @Override
     @Transactional
     public AjaxResult updateRelation(ZfRelation zfRelation) {
-        checkRelation(zfRelation);
         zfRelationService.updateById(zfRelation);
         return AjaxResult.success();
     }
 
     @Override
     public AjaxResult deleteRelation(Long[] ids) {
-        boolean flag = zfRelationService.removeByIds(Arrays.asList(ids));
-        if (flag){
-            return AjaxResult.success();
-        }else {
-            return AjaxResult.error();
-        }
+        zfRelationService.removeByIds(Arrays.asList(ids));
+        return AjaxResult.success();
     }
 
-    /**
-     * 缁欑敤鎴锋巿鏉冪殑鏂规硶
-     * @param empowerDto
-     * @return
-     */
-    @Override
-    @Transactional
-    public AjaxResult empower(EmpowerDto empowerDto) {
+//    @Override
+//    public AjaxResult empower(EmpowerDto empowerDto) {
+//        return null;
+//    }
 
-        //寰楀埌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();
-        }
-
-    }
+//    /**
+//     * 缁欑敤鎴锋巿鏉冪殑鏂规硶
+//     * @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) {
-        String text=null;
-        if(flag){
-            text="鎺堟潈";
-        }else {
-            text="鍙栨秷鎺堟潈";
+    private void checkAuthorization(String familyId, String destinationFamilyId, boolean flag) {
+        String text = null;
+        if (flag) {
+            text = "鎺堟潈";
+        } else {
+            text = "鍙栨秷鎺堟潈";
         }
 
         //瀵规湰浜虹殑瀹跺涵鍙疯繘琛屽鐞�
-        if(familyId.contains(",")){
+        if (familyId.contains(",")) {
             String[] familyIds = familyId.split(",");
             List<String> idList = Arrays.asList(familyIds);
             if (!idList.contains(destinationFamilyId)) {
-                throw new RuntimeException("涓嶈兘"+text+"涓嶅睘浜庤嚜宸卞搴殑鏁版嵁");
+                throw new RuntimeException("涓嶈兘" + text + "涓嶅睘浜庤嚜宸卞搴殑鏁版嵁");
             }
-        }else {
-            if (!familyId.equals(destinationFamilyId)){
-                throw new RuntimeException("涓嶈兘"+text+"涓嶅睘浜庤嚜宸卞搴殑鏁版嵁");
+        } else {
+            if (!familyId.equals(destinationFamilyId)) {
+                throw new RuntimeException("涓嶈兘" + text + "涓嶅睘浜庤嚜宸卞搴殑鏁版嵁");
             }
         }
     }
 
-    private String getMyFamilyId() {
+    private Long getMyFamilyId() {
         //寰楀埌鑷繁鐨勫搴璱d淇℃伅
         SysUser user = SecurityUtils.getLoginUser().getUser();
         Long myUserId = user.getUserId();
         LambdaQueryWrapper<ZInfoUser> lqw = new LambdaQueryWrapper<>();
-        lqw.eq(ZInfoUser::getUserId,myUserId);
+        lqw.eq(ZInfoUser::getUserId, myUserId);
         ZInfoUser zInfoUser = getOne(lqw);
-        String familyId = zInfoUser.getFamilyId();
+        Long familyId = zInfoUser.getFamilyId();
         return familyId;
     }
 
     private String getFinalStr(String destinationFamilyId, List<String> authorityList) {
         String authorityListStr = authorityList.stream().collect(Collectors.joining(" ", "{", "}"));
-        String finalStr= destinationFamilyId +authorityListStr;  //3{2007 1988 1004}
+        String finalStr = destinationFamilyId + authorityListStr;  //3{2007 1988 1004}
         return finalStr;
     }
 
 
     /**
      * 鑾峰彇瀹舵牴缃�
+     *
      * @return
      */
     @Override
-    public AjaxResult listWithTree() {
+    public AjaxResult listWithTree(Integer depth) {
 
         List<ZInfoUser> allPeopleList = list();
         List<ZInfoUser> result = null;
-        try {
-            result = allPeopleList.stream().filter(people -> people.getUserId()!=1&&(people.getFatherId() == 0||people.getMomId()==0))
-                    .map(people -> {
-                        people.setChildList(fillChildren(people, allPeopleList));
-                        return people;
-                    }).collect(Collectors.toList());
-        } catch (NullPointerException e) {
-            throw new RuntimeException("鎮ㄥ湪鍔犲叆鎴愬憳鐨勬椂鍊欐病鏈夋寚瀹氳鎴愬憳鐨勭埗浜叉垨鑰呮瘝浜�");
-        }
+//        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("鎮ㄥ湪鍔犲叆鎴愬憳鐨勬椂鍊欐病鏈夋寚瀹氳鎴愬憳鐨勭埗浜叉垨鑰呮瘝浜�");
+//        }
+
+        List<ZInfoUser> myFamilyPeopleList = allPeopleList.stream().filter(people -> people.getUserId() != 1 && people.getIsMyFamily() == 1).collect(Collectors.toList());
+
+result = allPeopleList.stream().filter(people -> people!=null && people.getUserId() != 1 && ((people.getFatherId()!=null &&people.getFatherId() == 0 )|| (people.getMomId()!=null&&people.getMomId() == 0)) && people.getIsMyFamily() == 1)
+                .map(people -> {
+//                    System.out.println("=======================================");
+//                    System.out.println(people);
+                    if (depth > 1) {
+                        if(people!=null) {
+                            people.setIdentity(1);
+                            //鏍规嵁閰嶅伓id鏌ヨ閰嶅伓鐨勬暟鎹紝灏佽濂戒竴璧疯繑鍥�
+                            Long spouseId = people.getSpouseId();
+                            if (spouseId != null) {
+                                ZInfoUser spouse = zInfoUserService.getById(spouseId);
+                                spouse.setIdentity(1);
+                                people.setSpouse(spouse);
+                            }
+                            people.setChildList(fillChildren(people, myFamilyPeopleList, depth - 1));
+                        }
+                    }
+//                    System.out.println("+++++++++++++++++++++++++++++");
+//                    System.out.println(people);
+                    return people;
+                }).collect(Collectors.toList());
+
+System.out.println("--------------++++++++++++++++--------------");
+System.out.println(result); 
         return AjaxResult.success(result);
 
     }
 
     /**
+     * 鏉′欢鑾峰彇瀹跺涵鎴愬憳
+     *
+     * @return
+     */
+    public AjaxResult listWithTreeByCondition(Integer depth, Genealogy genealogy) {
+
+        ZInfoUser zInfoUser = new ZInfoUser();
+        BeanUtils.copyProperties(genealogy, zInfoUser);
+        LambdaQueryWrapper<ZInfoUser> lqw = new LambdaQueryWrapper<>();
+        lqw.eq(zInfoUser.getSex() != null, ZInfoUser::getSex, zInfoUser.getSex());
+        lqw.like(StringUtils.isNotEmpty(zInfoUser.getNickName()), ZInfoUser::getNickName, zInfoUser.getNickName());
+//        lqw.between(zInfoUser.getBirth() != null, ZInfoUser::getBirth, zInfoUser.getBirth(),zInfoUser.getBirth());
+
+        List<ZInfoUser> allPeopleList = list(lqw);
+//        List<ZInfoUser> allPeopleList = list();
+        List<ZInfoUser> result = null;
+        try {
+            result = allPeopleList.stream().filter(people -> people.getUserId() != 1 && ((people.getFatherId()!=null&&people.getFatherId() == 0) || (people.getMomId()!=null&&people.getMomId() == 0)))
+                    .map(people -> {
+                        if (depth > 1) {
+                            people.setIdentity(1);
+                            people.setChildList(fillChildren2(people, allPeopleList, depth - 1));
+                        }
+                        return people;
+                    }).collect(Collectors.toList());
+        } catch (NullPointerException e) {
+            throw new RuntimeException("鎮ㄥ湪鍔犲叆鎴愬憳鐨勬椂鍊欐病鏈夋寚瀹氳鎴愬憳鐨勭埗浜叉垨鑰呮瘝浜�");
+        }
+
+
+//        result.stream().map(
+//                data->{
+//                    if(genealogy.getIdentity()!=null){
+//                        if(data.getIdentity()!=genealogy.getIdentity()){
+//                            result.remove(data);
+//                        }
+//                    }
+//
+//                    if(genealogy.getNickName()!=null){
+//
+//                    }
+//
+//                    if(genealogy.getSex()!=null){
+//
+//                    }
+//
+//                    if(genealogy.getBirth()!=null){
+//
+//                    }
+//                }
+//        )
+
+
+//        if(genealogy.getIdentity()!=null){
+//            result = result.stream().filter(data -> data.getIdentity() == genealogy.getIdentity()).collect(Collectors.toList());
+//        }
+
+        return AjaxResult.success(result);
+
+    }
+
+    private List<ZInfoUser> userList = new ArrayList<>();
+
+    /**
+     * 瀹惰氨淇℃伅
+     *
+     * @param genealogy
+     * @return
+     */
+    @Override
+    public AjaxResult listGenealogy(Genealogy genealogy, Integer pageNum, Integer pageSize) {
+        List<ZInfoUser> treeList = (List<ZInfoUser>) listWithTreeByCondition(100, genealogy).get("data");
+        recursionFindUser(treeList);
+
+        List<Genealogy> allData = userList.stream().map(
+                zInfoUser -> {
+                    Genealogy newGenealogy = new Genealogy();
+                    BeanUtils.copyProperties(zInfoUser, newGenealogy);
+
+                    if (zInfoUser.getSpouseId() != null) {
+                        ZInfoUser spouse = getById(zInfoUser.getSpouseId());
+
+                        Genealogy spouseInfo = new Genealogy();
+                        BeanUtils.copyProperties(spouse,spouseInfo);
+                        newGenealogy.setSpouse(spouseInfo);
+                        spouseInfo.setIdentity(newGenealogy.getIdentity());
+                        spouseInfo.setSpouseName(zInfoUser.getNickName());
+                        newGenealogy.setSpouseName(spouse.getNickName());
+                    }
+                    return newGenealogy;
+                }
+        ).collect(Collectors.toList());
+
+        List<Genealogy> collect = allData.stream()
+                .distinct()
+                .filter((data)-> data.getIsMyFamily() == 1)
+                .sorted(Comparator.comparing(Genealogy::getIdentity))
+                .collect(Collectors.toList());
+        List<Genealogy> resultData = new ArrayList<>();
+
+        for (int i = (pageNum - 1) * pageSize; i < pageNum * pageSize + pageSize; i++) {
+            if (i >= collect.size()) {
+                break;
+            }
+            resultData.add(collect.get(i));
+        }
+
+
+        //瀵箁esult鍋氫竴涓潯浠剁瓫閫�
+        Iterator<Genealogy> it = resultData.iterator();
+        while(it.hasNext()){
+            Genealogy data = it.next();
+
+            if(genealogy.getIdentity()!=null){
+                if(data.getIdentity()!=genealogy.getIdentity()){
+                    it.remove();
+                    continue;
+                }
+            }
+
+            if(genealogy.getNickName()!=null){
+                if(!data.getNickName().contains(genealogy.getNickName())){
+                    it.remove();
+                    continue;
+                }
+            }
+
+            if(genealogy.getSex()!=null){
+                if(data.getSex()!=genealogy.getSex()){
+                    it.remove();
+                    continue;
+                }
+            }
+
+            if(genealogy.getPhoneNumber()!=null){
+                if(data.getPhoneNumber()!=genealogy.getPhoneNumber()){
+                    it.remove();
+                    continue;
+                }
+            }
+
+            if(genealogy.getUnit()!=null){
+                if(data.getUnit()!=genealogy.getUnit()){
+                    it.remove();
+                    continue;
+                }
+            }
+
+            if(genealogy.getBirth()!=null){
+                if(data.getBirth().compareTo(genealogy.getBirth())!=0){
+                    it.remove();
+                    continue;
+                }
+            }
+        }
+
+        System.out.println(resultData);
+
+
+
+//        for (Genealogy data : resultData) {
+//
+//            if(genealogy.getIdentity()!=null){
+//                if(data.getIdentity()!=genealogy.getIdentity()){
+//                    resultData.remove(data);
+//                }
+//            }
+//
+//            if(genealogy.getNickName()!=null){
+//                if(!data.getNickName().contains(genealogy.getNickName())){
+//                    resultData.remove(data);
+//                }
+//            }
+//
+//            if(genealogy.getSex()!=null){
+//                if(data.getSex()!=genealogy.getSex()){
+//                    resultData.remove(data);
+//                }
+//            }
+//
+//            if(genealogy.getBirth()!=null){
+//                if(data.getBirth()!=genealogy.getBirth()){
+//                    resultData.remove(data);
+//                }
+//            }
+//
+//        }
+
+        HashMap<String, Object> resultMap = new HashMap<>();
+        resultMap.put("data", resultData);
+        resultMap.put("total", resultData.size());
+        resultMap.put("pageNum", pageNum);
+        resultMap.put("pageSize", pageSize);
+
+        return AjaxResult.success(resultMap);
+    }
+
+    @Override
+    public List<Genealogy> selectByIds(Long[] ids) {
+        List<ZInfoUser> zInfoUsers = listByIds(Arrays.asList(ids));
+        ArrayList<Genealogy> result = new ArrayList<>();
+        for (ZInfoUser zInfoUser : zInfoUsers) {
+            Genealogy genealogy = new Genealogy();
+            BeanUtils.copyProperties(zInfoUser, genealogy);
+            if (zInfoUser.getSpouseId() != null) {
+                ZInfoUser spouse = getById(zInfoUser.getSpouseId());
+                Genealogy spouseInfo = new Genealogy();
+                BeanUtils.copyProperties(spouse,spouseInfo);
+                spouseInfo.setIdentity(genealogy.getIdentity());
+                spouseInfo.setSpouseName(zInfoUser.getNickName());
+                genealogy.setSpouse(spouseInfo);
+                genealogy.setSpouseName(spouse.getNickName());
+            }
+            result.add(genealogy);
+        }
+
+        System.out.println("瀵煎嚭鐨勬暟鎹负:" + result);
+        return result;
+
+    }
+
+    @Override
+    public List<Genealogy> selectDatas(List<GenealogyExportDto> params) {
+        ArrayList<Long> ids = new ArrayList<>();
+        for (GenealogyExportDto param : params) {
+            ids.add(param.getId());
+        }
+
+        List<ZInfoUser> zInfoUsers = listByIds(ids);
+        ArrayList<Genealogy> result = new ArrayList<>();
+        for (int i = 0; i < zInfoUsers.size(); i++) {
+            Genealogy genealogy = new Genealogy();
+            BeanUtils.copyProperties(zInfoUsers.get(i), genealogy);
+            genealogy.setIdentity(params.get(i).getIdentity());
+            if (zInfoUsers.get(i).getSpouseId() != null) {
+                ZInfoUser spouse = getById(zInfoUsers.get(i).getSpouseId());
+                Genealogy spouseInfo = new Genealogy();
+                BeanUtils.copyProperties(spouse,spouseInfo);
+                spouseInfo.setIdentity(genealogy.getIdentity());
+                genealogy.setSpouseName(spouse.getNickName());
+                spouseInfo.setSpouseName(zInfoUsers.get(i).getNickName());
+                genealogy.setSpouse(spouseInfo);
+
+            }
+            result.add(genealogy);
+
+        }
+        System.out.println("瀵煎嚭鐨勬暟鎹负:" + result);
+        return result;
+
+
+    }
+
+    @Override
+    public ZInfoUser getInfoById(Long userId) {
+        ZInfoUser user = getInfoBysysId(userId);
+
+
+        if(user!=null)
+        {
+            Long familyId = user.getFamilyId();
+          //  System.out.println("dddddddddddddddddddd");
+
+            String roleName = zfRoleService.getById(user.getRoleId()).getName();
+
+            user.setRoleName(roleName);
+            System.out.println("dddddddddddddddddddd");
+//            System.out.println(familyId);
+//            if(familyId!=null&&familyId!=-1)
+//            {
+//                String familyName = zfFamilyService.getById(familyId).getName();
+//                user.setFamilyName(familyName);
+//            }
+        }
+        return user;
+    }
+
+//    @Override
+//    public ZInfoUser getInfoById(Long userId) {
+//
+//        ZInfoUser user = getById(userId);
+//
+//        //鐢ㄩ�楀彿闅斿紑鐨勫搴璱d
+//        String familyId = user.getFamilyId();
+//
+//        //鍦ㄨ嚜宸卞搴腑瑙掕壊鐨刬d
+//        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);
+    }
+
+    @Override
+    public AjaxResult listGenealogy2(Genealogy genealogy, Integer pageNum, Integer pageSize) {
+
+        return null;
+    }
+
+
+    private void recursionFindUser(List<ZInfoUser> treeList) {
+        if (treeList == null || treeList.isEmpty()) {
+            return;
+        }
+        for (ZInfoUser zInfoUser : treeList) {
+            userList.add(zInfoUser);
+            if (!zInfoUser.getChildList().isEmpty()) {
+                recursionFindUser(zInfoUser.getChildList());
+            }
+        }
+    }
+
+    /**
      * 涓轰簡瀹舵牴缃戙�佹柊澧炴垨鑰呬慨鏀圭埗瀛愬叧绯�
+     *
      * @param fatherId
      * @param motherId
      * @return
@@ -324,7 +733,7 @@
         SysUser user = SecurityUtils.getLoginUser().getUser();
         Long userId = user.getUserId();
         LambdaQueryWrapper<ZInfoUser> zInfoUserLambdaQueryWrapper = new LambdaQueryWrapper<>();
-        zInfoUserLambdaQueryWrapper.eq(ZInfoUser::getUserId,userId);
+        zInfoUserLambdaQueryWrapper.eq(ZInfoUser::getUserId, userId);
         ZInfoUser zInfoUser = getOne(zInfoUserLambdaQueryWrapper);
 
         zInfoUser.setFatherId(fatherId);
@@ -341,21 +750,139 @@
 
     }
 
+    @Override
+    public AjaxResult listAllFamilyPeople() {
+//        List<ZInfoUser> lis = list();
+//        for(ZInfoUser tm: lis)
+//        {
+//            System.out.println(tm.getRoleId());
+//        }
+        List<ZInfoUser> collect = list().stream().filter(zInfoUser -> zInfoUser!=null&&zInfoUser.getRoleId()!=null&&zInfoUser.getRoleId()== 3).collect(Collectors.toList());
+        return AjaxResult.success(collect);
+    }
+
+    @Override
+    public AjaxResult listMySelfAndSpouse(Long id) {
+        LambdaQueryWrapper<ZInfoUser> lqw1 = new LambdaQueryWrapper<>();
+        lqw1.eq(ZInfoUser::getUserId, id);
+        ZInfoUser myself = getOne(lqw1);
+        Long spouseId = myself.getSpouseId();
+
+        LambdaQueryWrapper<ZInfoUser> lqw2 = new LambdaQueryWrapper<>();
+        lqw2.eq(ZInfoUser::getUserId, spouseId);
+        ZInfoUser spouse = getOne(lqw2);
+
+        ArrayList<ZInfoUser> zInfoUsers = new ArrayList<>();
+        zInfoUsers.add(myself);
+        zInfoUsers.add(spouse);
+
+        return AjaxResult.success(zInfoUsers);
+    }
+
+
     /**
      * 閫掑綊绠楁硶
+     *
      * @param people
      * @param allPeopleList
      * @return
      */
-    private List<ZInfoUser> fillChildren(ZInfoUser people, List<ZInfoUser> allPeopleList) {
-        return allPeopleList.stream().filter(
-                one -> one.getFatherId() == people.getUserId() || one.getMomId() == people.getUserId()
+    private List<ZInfoUser> fillChildren(ZInfoUser people, List<ZInfoUser> allPeopleList, Integer depth) {
+
+        // TODO: 2023-05-05 鎺у埗閫掑綊鐨勬鏁�
+        // if(depth==layer)
+
+        // layer = layer + 1;
+        System.out.println(depth);
+
+//        List<ZInfoUser> myFamilyPeopleList = allPeopleList.stream().filter(
+//                one -> (one.getFatherId() == people.getUserId() || one.getMomId() == people.getUserId()) && (people.getIsMyFamily() == 1)
+//        ).collect(Collectors.toList());
+
+        List<ZInfoUser> collect = allPeopleList.stream().filter(
+
+                one -> (((one.getFamilyId()!=null && Objects.equals(one.getFatherId(), people.getUserId())) || (one.getMomId()!=null&& one.getMomId().equals(people.getUserId()))) && (one.getIsMyFamily() == 1))
         ).map(
                 one -> {
-                    one.setChildList(fillChildren(one, allPeopleList));
-                    return one;
+                    System.out.println("++++++++++----0009999");
+                    System.out.println(one);
+                    if (depth == 0) {
+                        one.setIdentity(people.getIdentity() + 1);
+                        //鏍规嵁閰嶅伓id鏌ヨ閰嶅伓鐨勬暟鎹紝灏佽濂戒竴璧疯繑鍥�
+                        Long spouseId = one.getSpouseId();
+                        if (spouseId != null) {
+                            ZInfoUser spouse = zInfoUserService.getById(spouseId);
+                            spouse.setIdentity(people.getIdentity() + 1);
+                            one.setSpouse(spouse);
+                        }
+                        return one;
+                    }
+                    else {
+                        one.setIdentity(people.getIdentity() + 1);
+                        //鏍规嵁閰嶅伓id鏌ヨ閰嶅伓鐨勬暟鎹紝灏佽濂戒竴璧疯繑鍥�
+                        Long spouseId = one.getSpouseId();
+                        if (spouseId != null) {
+                            ZInfoUser spouse = zInfoUserService.getById(spouseId);
+                          //  System.out.println(spouseId);
+                          //  System.out.println(spouse);
+                          //  System.out.println("0000))))))))))))))))");
+                            spouse.setIdentity(people.getIdentity() + 1);
+                            one.setSpouse(spouse);
+                        }
+                        List<ZInfoUser> zinfo = fillChildren(one, allPeopleList, depth - 1);
+                        one.setChildList(zinfo);
+                        System.out.println(one);
+                        return one;
+                    }
+
+                    //return one;
                 }
         ).collect(Collectors.toList());
+        System.out.println(collect);
+        return collect;
+
+    }
+
+    /**
+     * 閫掑綊绠楁硶瀹惰氨鐢�
+     *
+     * @param people
+     * @param allPeopleList
+     * @return
+     */
+    private List<ZInfoUser> fillChildren2(ZInfoUser people, List<ZInfoUser> allPeopleList, Integer depth) {
+
+        // TODO: 2023-05-05 鎺у埗閫掑綊鐨勬鏁�
+        // if(depth==layer)
+
+        // layer = layer + 1;
+        System.out.println(depth);
+        List<ZInfoUser> collect = allPeopleList.stream().filter(
+                one -> (one.getFatherId() == people.getUserId() || one.getMomId() == people.getUserId())
+        ).map(
+                one -> {
+                    if (depth == 1)
+                        return one;
+                    else {
+                        one.setIdentity(people.getIdentity() + 1);
+                        //鏍规嵁閰嶅伓id鏌ヨ閰嶅伓鐨勬暟鎹紝灏佽濂戒竴璧疯繑鍥�
+                        Long spouseId = one.getSpouseId();
+                        if (spouseId != null) {
+                            ZInfoUser spouse = zInfoUserService.getById(spouseId);
+                            spouse.setIdentity(people.getIdentity() + 1);
+                            one.setSpouse(spouse);
+                        }
+                        List<ZInfoUser> zinfo = fillChildren2(one, allPeopleList, depth - 1);
+                        one.setChildList(zinfo);
+                        System.out.println(one);
+                        return one;
+                    }
+
+                    //return one;
+                }
+        ).collect(Collectors.toList());
+        System.out.println(collect);
+        return collect;
 
     }
 

--
Gitblit v1.9.1