From bfa0f4669a6db8ef019538d1dfb8fdb762bc7650 Mon Sep 17 00:00:00 2001
From: whyclxw <810412026@qq.com>
Date: 星期二, 26 十一月 2024 15:06:29 +0800
Subject: [PATCH] 区域管理

---
 src/main/java/com/whyc/service/AreaInfService.java |   78 +++++++++++++++++++++++++++++++++++++++
 1 files changed, 78 insertions(+), 0 deletions(-)

diff --git a/src/main/java/com/whyc/service/AreaInfService.java b/src/main/java/com/whyc/service/AreaInfService.java
index abecca9..28465ae 100644
--- a/src/main/java/com/whyc/service/AreaInfService.java
+++ b/src/main/java/com/whyc/service/AreaInfService.java
@@ -1,11 +1,13 @@
 package com.whyc.service;
 
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
 import com.whyc.dto.Response;
 import com.whyc.mapper.AreaInfMapper;
 import com.whyc.pojo.db_area.AreaInf;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
 
 import java.util.List;
 
@@ -23,4 +25,80 @@
         List<AreaInf> list=mapper.selectList(wrapper);
         return new Response().setII(1,list!=null,list,"鏌ヨ鎵�鏈夊尯鍩熶俊鎭�");
     }
+    //娣诲姞鍖哄煙
+    public Response addArea(Integer parentId, String areaName,String areaUname,String areaDescript) {
+        AreaInf ainf=new AreaInf();
+        ainf.setParentId(0);
+        ainf.setAreaLevel(1);
+        ainf.setAreaPath(areaName);
+        ainf.setAreaName(areaName);
+        if(areaUname!=null){
+            ainf.setAreaUname(areaUname);
+        }
+        if(areaDescript!=null){
+            ainf.setAreaDescript(areaDescript);
+        }
+        if(parentId!=null){
+            //鑾峰彇涓婁竴绾т俊鎭�
+            QueryWrapper wrapper=new QueryWrapper();
+            wrapper.eq("id",parentId);
+            wrapper.last("limit 1");
+            AreaInf painf=mapper.selectOne(wrapper);
+            ainf.setParentId(parentId);
+            ainf.setAreaLevel(painf.getAreaLevel()+1);
+            ainf.setAreaPath(painf.getAreaName()+"_"+areaName);
+        }
+        int flag= mapper.insert(ainf);
+        return new Response().set(1,flag>0);
+    }
+    //鍒犻櫎鍖哄煙
+    public Response delArea(Integer id) {
+        delAll(id);
+        return new Response().set(1,true);
+    }
+    @Transactional
+    public void delAll(Integer id) {
+        //鑾峰彇涓婁竴绾т俊鎭�
+        QueryWrapper wrapper=new QueryWrapper();
+        wrapper.eq("parent_id",id);
+        wrapper.last("limit 1");
+        AreaInf painf=mapper.selectOne(wrapper);
+        if(painf!=null){
+            delAll(painf.getId());
+        }
+        UpdateWrapper wrapper1=new UpdateWrapper();
+        wrapper1.eq("id",id);
+        mapper.delete(wrapper1);
+    }
+    //淇敼鍖哄煙
+    public Response updateArea(Integer id, String areaName, String areaUname, String areaDescript) {
+        QueryWrapper wrapper=new QueryWrapper();
+        wrapper.eq("id",id);
+        wrapper.last("limit 1");
+        AreaInf ainf=mapper.selectOne(wrapper);
+        ainf.setAreaUname(areaUname);
+        ainf.setAreaDescript(areaDescript);
+        ainf.setAreaName(areaName);
+        String oldPath=ainf.getAreaPath();
+        String newPath=oldPath.substring(0,oldPath.lastIndexOf("_")+1)+areaName;
+        UpdateWrapper wrapper1=new UpdateWrapper();
+        wrapper1.eq("id",id);
+        mapper.update(ainf,wrapper1);
+        updateAll(id,newPath);
+        return new Response().set(1,true);
+    }
+    public void updateAll(Integer id, String newPath) {
+        QueryWrapper wrapper=new QueryWrapper();
+        wrapper.eq("parent_id",id);
+        wrapper.last("limit 1");
+        AreaInf painf=mapper.selectOne(wrapper);
+        if(painf!=null){
+            String path=newPath+"_"+painf.getAreaName();
+            updateAll(painf.getId(),path);
+        }
+        UpdateWrapper wrapper2=new UpdateWrapper();
+        wrapper2.set("area_path",newPath);
+        wrapper2.eq("id",id);
+        mapper.update(null,wrapper2);
+    }
 }
\ No newline at end of file

--
Gitblit v1.9.1