From 0bf868d3cdf9226e178c076d3b588ed5207409a0 Mon Sep 17 00:00:00 2001
From: kongzy <kongzy>
Date: 星期五, 24 十一月 2023 17:51:40 +0800
Subject: [PATCH] merge

---
 assess-system/src/main/java/com/gkhy/assess/system/service/impl/SysRegionServiceImpl.java |  110 +++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 110 insertions(+), 0 deletions(-)

diff --git a/assess-system/src/main/java/com/gkhy/assess/system/service/impl/SysRegionServiceImpl.java b/assess-system/src/main/java/com/gkhy/assess/system/service/impl/SysRegionServiceImpl.java
new file mode 100644
index 0000000..42e6343
--- /dev/null
+++ b/assess-system/src/main/java/com/gkhy/assess/system/service/impl/SysRegionServiceImpl.java
@@ -0,0 +1,110 @@
+package com.gkhy.assess.system.service.impl;
+
+import cn.hutool.core.util.StrUtil;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper;
+import com.gkhy.assess.common.exception.ApiException;
+import com.gkhy.assess.system.domain.SysRegion;
+import com.gkhy.assess.system.domain.SysUser;
+import com.gkhy.assess.system.mapper.SysRegionMapper;
+import com.gkhy.assess.system.service.SysRegionService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.data.domain.Sort;
+import org.springframework.stereotype.Service;
+
+import java.util.Comparator;
+import java.util.List;
+import java.util.Objects;
+import java.util.stream.Collectors;
+
+/**
+ * <p>
+ * 系统地区表 服务实现类
+ * </p>
+ *
+ * @author kzy
+ * @since 2023-11-24 13:45:45
+ */
+@Service
+public class SysRegionServiceImpl extends ServiceImpl<SysRegionMapper, SysRegion> implements SysRegionService {
+
+    @Override
+    public List<SysRegion> regionTree(SysRegion region) {
+        LambdaQueryWrapper<SysRegion> lambdaQueryWrapper = Wrappers.<SysRegion>lambdaQuery();
+        if(StrUtil.isNotBlank(region.getName())){
+            lambdaQueryWrapper.like(SysRegion::getName,region.getName());
+        }
+        lambdaQueryWrapper.orderBy(true, true,SysRegion::getSort);
+        List<SysRegion> regions= list(lambdaQueryWrapper);
+        //筛选出所有一级标签
+        return regions.stream()
+                .filter(tagEntity -> tagEntity.getParentId()==0L)
+                .peek(tagEntity -> tagEntity.setChildren(this.listRegionChildren(tagEntity,regions)))
+                .sorted(Comparator.comparing(SysRegion::getSort))
+                .collect(Collectors.toList());
+    }
+
+    public List<SysRegion> listRegionChildren(SysRegion region,List<SysRegion> regions){
+        //递归查找子类
+        return regions.stream()
+                .filter(regionEntity -> Objects.equals(regionEntity.getParentId(), region.getId()))
+                .peek(regionEntity -> regionEntity.setChildren(this.listRegionChildren(regionEntity,regions)))
+                //.sorted(Comparator.comparing(SysRegion::getSort))
+                .collect(Collectors.toList());
+    }
+
+    @Override
+    public int addRegion(SysRegion region) {
+        if(!checkRegionUnique(new SysRegion().setName(region.getName()))){
+            throw new ApiException("已存在相同地区名称");
+        }
+        boolean b=save(region);
+        if(!b){
+            throw new ApiException("新增地区失败");
+        }
+        return 0;
+    }
+
+    public boolean checkRegionUnique(SysRegion region){
+        Long userId = region.getId()==null? -1L : region.getId();
+        SysRegion info = baseMapper.checkRegionUnique(region.getName(),region.getParentId()==null?0L:region.getParentId());
+        if (info!=null && info.getId().longValue() != userId.longValue())
+        {
+            return false;
+        }
+        return true;
+    }
+
+    @Override
+    public int editRegion(SysRegion region) {
+        if(!checkRegionUnique(new SysRegion().setName(region.getName()))){
+            throw new ApiException("已存在相同地区名称");
+        }
+        boolean b=updateById(region);
+        if(!b){
+            throw new ApiException("修改地区失败");
+        }
+        return 0;
+    }
+
+    @Override
+    public int deleteRegionById(Long reginId) {
+        Long count=count(Wrappers.<SysRegion>lambdaQuery()
+                .eq(true,SysRegion::getParentId,reginId));
+        if(count>0){
+            throw new ApiException("下级存在区县数据");
+        }
+        boolean b=removeById(reginId);
+        if(!b){
+            throw new ApiException("删除地区失败");
+        }
+        return 0;
+    }
+
+    @Override
+    public List<SysRegion> getChildRegionById(Long regionId) {
+        return list(Wrappers.<SysRegion>lambdaQuery()
+                .eq(true,SysRegion::getParentId,regionId));
+    }
+}

--
Gitblit v1.9.2