From 810ad9dbaa8553299a4516790a9f546a9b84905e Mon Sep 17 00:00:00 2001
From: 13693261870 <252740454@qq.com>
Date: 星期二, 08 七月 2025 16:16:26 +0800
Subject: [PATCH] 添加图层管理,修改权限管理

---
 se-system/src/main/java/com/terra/system/controller/sys/RoleController.java      |   20 
 se-system/src/main/resources/mapper/sys/RoleResMapper.xml                        |   28 
 se-system/src/main/java/com/terra/system/controller/sys/LayerController.java     |   97 --
 se-system/src/main/java/com/terra/system/entity/sys/RoleLayerEntity.java         |  142 ++++
 se-system/src/main/java/com/terra/system/service/data/LayerService.java          |   91 +
 se-system/src/main/java/com/terra/system/controller/all/PermsController.java     |   82 +
 se-system/src/main/resources/mapper/all/PermsMapper.xml                          |   23 
 se-system/src/main/java/com/terra/system/mapper/sys/LayerMapper.java             |   42 +
 se-system/src/main/resources/mapper/data/LayerMapper.xml                         |   89 +
 se-system/src/main/resources/mapper/sys/LayerMapper.xml                          |  123 +++
 se-system/src/main/java/com/terra/system/service/all/TestService.java            |    5 
 se-system/src/main/java/com/terra/system/service/sys/RoleResService.java         |    5 
 se-system/src/main/java/com/terra/system/controller/sys/RoleLayerController.java |  226 ++++++
 se-system/src/main/java/com/terra/system/entity/sys/LayerEntity.java             |  272 +++++++
 se-system/src/main/java/com/terra/system/mapper/sys/RoleResMapper.java           |   63 -
 se-system/src/main/java/com/terra/system/controller/sys/RoleResController.java   |   50 -
 se-system/src/main/java/com/terra/system/entity/all/RedisCacheKey.java           |    4 
 se-system/src/main/java/com/terra/system/mapper/data/LayerMapper.java            |   77 -
 se-system/src/main/java/com/terra/system/mapper/sys/RoleLayerMapper.java         |   34 
 se-system/src/main/resources/mapper/sys/RoleLayerMapper.xml                      |   79 ++
 /dev/null                                                                        |  143 ----
 se-system/src/main/java/com/terra/system/service/all/PermsService.java           |   22 
 se-system/src/main/java/com/terra/system/service/sys/RoleLayerService.java       |   71 ++
 se-system/src/main/java/com/terra/system/entity/data/LayerEntity.java            |  140 ++-
 se-system/src/main/java/com/terra/system/mapper/all/PermsMapper.java             |   12 
 se-system/src/main/java/com/terra/system/service/sys/LayerService.java           |  125 +++
 26 files changed, 1,508 insertions(+), 557 deletions(-)

diff --git a/se-system/src/main/java/com/terra/system/controller/all/FloatServerController.java b/se-system/src/main/java/com/terra/system/controller/all/FloatServerController.java
deleted file mode 100644
index f850430..0000000
--- a/se-system/src/main/java/com/terra/system/controller/all/FloatServerController.java
+++ /dev/null
@@ -1,130 +0,0 @@
-package com.terra.system.controller.all;
-
-import com.alibaba.fastjson.JSON;
-import com.terra.system.entity.ctrl.SdkDecryptEntity;
-import com.terra.system.entity.ctrl.SdkSecretEntity;
-import com.terra.system.entity.other.FloatServerResponse;
-import com.terra.system.entity.other.ReqParamFloatServer;
-import com.terra.system.helper.HttpHelper;
-import com.terra.system.helper.LicHelper;
-import com.terra.system.helper.WebHelper;
-import org.apache.http.HttpEntity;
-import org.apache.http.entity.InputStreamEntity;
-import org.apache.http.util.EntityUtils;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
-
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-import java.util.Arrays;
-
-/**
- * FloatServer
- * @author WWW
- */
-@RestController
-@RequestMapping("/floatserver")
-public class FloatServerController extends BaseController {
-    private static LicHelper licHelper;
-
-    private final static boolean IS_REDIRECT = false;
-
-    @PostMapping({"/checkout/license"})
-    public void license(HttpServletRequest req, HttpServletResponse res) {
-        try {
-            if (IS_REDIRECT) {
-                HttpHelper httpHelper = new HttpHelper();
-                httpHelper.service(req, res, "http://192.168.20.43:38080/floatserver/checkout/license", null);
-                return;
-            }
-
-            HttpEntity entity = new InputStreamEntity(req.getInputStream(), getContentLength(req));
-            String str = EntityUtils.toString(entity, "UTF-8");
-
-            LicHelper helper = getHelper();
-            String reqJson = helper.b(str);
-
-            ReqParamFloatServer rfs = JSON.parseObject(reqJson, ReqParamFloatServer.class);
-            FloatServerResponse fsr = new FloatServerResponse(rfs);
-
-            String resJson = JSON.toJSONString(fsr);
-            String strRes = helper.a(resJson);
-
-            res.getWriter().write(strRes);
-        } catch (Exception ex) {
-            log.error(ex.getMessage(), ex);
-        }
-    }
-
-    private Integer getContentLength(HttpServletRequest request) {
-        String contentLengthHeader = request.getHeader("Content-Length");
-        if (contentLengthHeader != null) {
-            return Integer.parseInt(contentLengthHeader);
-        }
-
-        return -1;
-    }
-
-    private static LicHelper getHelper() {
-        if (licHelper == null) {
-            licHelper = new LicHelper();
-            licHelper.d("&kdaow$IEW.##%5-");
-            licHelper.c("*y91z72a;pclfleoqc20161v$DSP&%3+");
-        }
-
-        return licHelper;
-    }
-
-    @SuppressWarnings("AlibabaUndefineMagicConstant")
-    private static String getClientIpAddr(HttpServletRequest req) {
-        String ip;
-        if ((ip = req.getHeader("x-forwarded-for")) == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
-            ip = req.getHeader("Proxy-Client-IP");
-        }
-        if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
-            ip = req.getHeader("WL-Proxy-Client-IP");
-        }
-        if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
-            ip = req.getRemoteAddr();
-        }
-
-        return ip;
-    }
-
-    public static void test() {
-        try {
-            ReqParamFloatServer reqParam = new ReqParamFloatServer("192.168.20.106", "12316");
-            String json = JSON.toJSONString(reqParam);
-
-            String licCode = "78a82f0920de0f557f8177bec1e48601c4dc25e4054a00728e4314b56528d3a1632de5298edee38a65412277977a174fea5d91c452b19ef138dbc2ba089ba632";
-
-            LicHelper helper = getHelper();
-            String str = helper.a(json);
-            System.out.println("ReqParamFloatServer: " + str);
-
-            String data = "8dfb75298185cbcc4b2d485fdb4f25627f7aeb4dd41329076b5015586e4d56cfe2c56f12cd9852c447904210117b41fe2672b24d7e82fd581ad5a0983b501b5bcbe97d65dbbe770dbdc4a98e80d2966a71ecd0041a5282283bff853d70caf7aed671bc9c9d4bedf6d1d0294394861af40f195d68a965d957d53c78aa50ada3afc65d1a526c54648e6e081e8f7f7ab1c31b9f75916170e638b0b9216d30204864afe3a7a1bc8a6563bf44daf6a29e27c19f798c4f82dbb904ea4aa4fcc87a82226d9bf3e891ecb97b94263064fec025e3aa7c440d7c0e8ed559b84ae2438ec0fc438444a03c992883170ecdde20e08552efcf9d584de469930b27c81f946548d5c6e63e815671182b03b5e6e622ddb10a3f6a35ad3f44ec247a3b2dee0e936020d48efb7abc2d2abfb555f61d54c85eca";
-            String rs = helper.b(data);
-            System.out.println("Lic: " + rs);
-        } catch (Exception ex) {
-            System.out.println(Arrays.toString(ex.getStackTrace()));
-        }
-    }
-
-    @GetMapping({"/licenseEncryption/getLicenseSecret"})
-    @PostMapping({"/licenseEncryption/getLicenseSecret"})
-    public void getLicenseSecret(HttpServletResponse res) {
-        // http://127.0.0.1:12316/server/floatserver/licenseEncryption/getLicenseSecret
-        String json = JSON.toJSONString(new SdkSecretEntity());
-        WebHelper.writeStr2Page(res, json);
-    }
-
-    @GetMapping({"/licenseEncryption/getLicenseDecrypt"})
-    @PostMapping({"/licenseEncryption/getLicenseDecrypt"})
-    public void getLicenseDecrypt(HttpServletResponse res) {
-        // http://127.0.0.1:12316/server/floatserver/licenseEncryption/getLicenseDecrypt
-        String json = JSON.toJSONString(new SdkDecryptEntity());
-        WebHelper.writeStr2Page(res, json);
-    }
-}
diff --git a/se-system/src/main/java/com/terra/system/controller/all/PermsController.java b/se-system/src/main/java/com/terra/system/controller/all/PermsController.java
index 9fb4aae..48c8234 100644
--- a/se-system/src/main/java/com/terra/system/controller/all/PermsController.java
+++ b/se-system/src/main/java/com/terra/system/controller/all/PermsController.java
@@ -4,6 +4,7 @@
 import com.terra.system.entity.all.*;
 import com.terra.system.entity.data.LayerEntity;
 import com.terra.system.entity.sys.MenuEntity;
+import com.terra.system.entity.sys.ResEntity;
 import com.terra.system.entity.sys.UserEntity;
 import com.terra.system.service.all.PermsService;
 import com.terra.system.service.data.LayerService;
@@ -40,9 +41,9 @@
     LayerService layerService;
 
     @SysLog()
-    @ApiOperation(value = "鏌ヨ褰撳墠鐢ㄦ埛鐨勮祫婧愭巿鏉�")
-    @GetMapping(value = "/selectRes")
-    public ResponseMsg<List<ResAuthEntity>> selectRes(HttpServletRequest req) {
+    @ApiOperation(value = "鏌ヨ褰撳墠鐢ㄦ埛鐨勫浘灞傛巿鏉�")
+    @GetMapping(value = "/selectLayers")
+    public ResponseMsg<Object> selectLayers(HttpServletRequest req) {
         try {
             UserEntity ue = tokenService.getCurrentUser(req);
             if (ue == null) {
@@ -50,9 +51,47 @@
             }
 
             String uid = StaticData.ADMIN.equals(ue.getUid()) ? null : ue.getUid();
-            List<ResAuthEntity> rs = permsService.selectRes(uid);
+            List<LayerEntity> rs = layerService.selectLayers(uid);
 
-            return success(rs);
+            return success(null == rs ? 0 : rs.size(), rs);
+        } catch (Exception ex) {
+            return fail(ex, null);
+        }
+    }
+
+    @SysLog()
+    @ApiOperation(value = "鏌ヨ褰撳墠鐢ㄦ埛鐨勬姇褰卞浘灞傛巿鏉�")
+    @GetMapping(value = "/selectProjectLayers")
+    public ResponseMsg<Object> selectProjectLayers(HttpServletRequest req) {
+        try {
+            UserEntity ue = tokenService.getCurrentUser(req);
+            if (ue == null) {
+                return fail("鐢ㄦ埛鏈櫥褰�", null);
+            }
+
+            String uid = StaticData.ADMIN.equals(ue.getUid()) ? null : ue.getUid();
+            List<LayerEntity> rs = layerService.selectProjectLayers(uid);
+
+            return success(null == rs ? 0 : rs.size(), rs);
+        } catch (Exception ex) {
+            return fail(ex, null);
+        }
+    }
+
+    @SysLog()
+    @ApiOperation(value = "鏌ヨ褰撳墠鐢ㄦ埛鐨勮祫婧愭巿鏉�")
+    @GetMapping(value = "/selectRes")
+    public ResponseMsg<Object> selectRes(HttpServletRequest req) {
+        try {
+            UserEntity ue = tokenService.getCurrentUser(req);
+            if (ue == null) {
+                return fail("鐢ㄦ埛鏈櫥褰�", null);
+            }
+
+            String uid = StaticData.ADMIN.equals(ue.getUid()) ? null : ue.getUid();
+            List<ResEntity> rs = permsService.selectRes(uid);
+
+            return success(null == rs ? 0 : rs.size(), rs);
         } catch (Exception ex) {
             return fail(ex, null);
         }
@@ -116,7 +155,20 @@
     }
 
     @SysLog()
-    @ApiOperation(value = "娓呯┖鎵�鏈夋巿鏉冪紦瀛�")
+    @ApiOperation(value = "娓呯┖鎺堟潈缂撳瓨")
+    @GetMapping(value = "/deletePermsCache")
+    public ResponseMsg<Boolean> deletePermsCache() {
+        try {
+            permsService.clearPermsCache();
+
+            return success(true);
+        } catch (Exception ex) {
+            return fail(ex, false);
+        }
+    }
+
+    @SysLog()
+    @ApiOperation(value = "娓呯┖鎵�鏈夌紦瀛�")
     @GetMapping(value = "/deleteAllCache")
     public ResponseMsg<Boolean> deleteAllCache() {
         try {
@@ -161,24 +213,6 @@
 
             String uid = StaticData.ADMIN.equals(ue.getUid()) ? null : ue.getUid();
             List<MenuEntity> list = permsService.selectMenuRecursive(id, uid);
-
-            return success(list);
-        } catch (Exception ex) {
-            return fail(ex, null);
-        }
-    }
-
-    @SysLog()
-    @ApiOperation(value = "鏌ヨ鎵�鏈夊浘灞�")
-    @GetMapping(value = "/selectLayers")
-    public ResponseMsg<Object> selectLayers(HttpServletRequest req) {
-        try {
-            UserEntity ue = tokenService.getCurrentUser(req);
-            if (ue == null) {
-                return fail("鐢ㄦ埛鏈櫥褰�", null);
-            }
-
-            List<LayerEntity> list = layerService.selectAll();
 
             return success(list);
         } catch (Exception ex) {
diff --git a/se-system/src/main/java/com/terra/system/controller/show/PipelineController.java b/se-system/src/main/java/com/terra/system/controller/show/PipelineController.java
deleted file mode 100644
index a6ae1fa..0000000
--- a/se-system/src/main/java/com/terra/system/controller/show/PipelineController.java
+++ /dev/null
@@ -1,265 +0,0 @@
-package com.terra.system.controller.show;
-
-import com.terra.system.annotation.SysLog;
-import com.terra.system.controller.all.BaseController;
-import com.terra.system.entity.all.HttpStatus;
-import com.terra.system.entity.all.ResponseMsg;
-import com.terra.system.entity.all.StaticData;
-import com.terra.system.entity.data.DownloadEntity;
-import com.terra.system.entity.show.PipelineEntity;
-import com.terra.system.entity.sys.UserEntity;
-import com.terra.system.helper.Md5Helper;
-import com.terra.system.helper.StringHelper;
-import com.terra.system.helper.WebHelper;
-import com.terra.system.service.data.DownloadService;
-import com.terra.system.service.show.PipelineService;
-import com.terra.system.service.sys.DownlogService;
-import com.terra.system.service.sys.TokenService;
-import io.swagger.annotations.Api;
-import io.swagger.annotations.ApiImplicitParam;
-import io.swagger.annotations.ApiImplicitParams;
-import io.swagger.annotations.ApiOperation;
-import javax.annotation.Resource;
-
-import org.springframework.web.bind.annotation.*;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-import java.io.File;
-import java.net.URLDecoder;
-import java.nio.charset.StandardCharsets;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-/**
- * 绠¢亾鍒嗘瀽
- * @author WWW
- */
-@Api(tags = "缁煎悎灞曠ず\\绠¢亾鍒嗘瀽")
-@RestController
-@RequestMapping("/pipeline")
-public class PipelineController extends BaseController {
-    @Resource
-    TokenService tokenService;
-
-    @Resource
-    DownlogService downlogService;
-
-    @Resource
-    DownloadService downloadService;
-
-    @Resource
-    PipelineService pipelineService;
-
-    @SysLog()
-    @ApiOperation(value = "鏌ヨ绠℃")
-    @GetMapping(value = "/selectSegNames")
-    public ResponseMsg<Object> selectSegNames() {
-        try {
-            List<PipelineEntity> rs = pipelineService.selectSegNames();
-
-            return success(rs);
-        } catch (Exception ex) {
-            return fail(ex, null);
-        }
-    }
-
-    @SysLog()
-    @ApiOperation(value = "鏌ヨ绠$嚎鍒嗘瀽")
-    @ApiImplicitParams({
-            @ApiImplicitParam(name = "pe", value = "绠¢亾鍒嗘瀽瀹炰綋绫�", dataType = "PipelineEntity", paramType = "body")
-    })
-    @ResponseBody
-    @PostMapping(value = "/selectPipeAnalysis")
-    public ResponseMsg<Object> selectPipeAnalysis(@RequestBody PipelineEntity pe) {
-        try {
-            if (null == pe.getGid() || pe.getGid() < 1) {
-                return fail("璇疯緭鍏ョ娈礗D");
-            }
-            if (null == pe.getTabs() || 0 == pe.getTabs().size()) {
-                return fail("璇疯緭鍏ヨ〃鍚�");
-            }
-            if (!checkTabs(pe.getTabs())) {
-                return fail("瀛樺湪闈炴硶琛ㄥ悕");
-            }
-
-            Map<String, Object> map = new HashMap<>(4);
-            for (String tab : pe.getTabs()) {
-                List<PipelineEntity> rs = pipelineService.selectPipeAnalysis(tab, pe.getGid());
-                map.put(tab, rs);
-            }
-
-            return success(map);
-        } catch (Exception ex) {
-            return fail(ex, null);
-        }
-    }
-
-    @SysLog()
-    @ApiOperation(value = "璇锋眰绠¢亾鍒嗘瀽缁撴灉涓嬭浇")
-    @ApiImplicitParams({
-            @ApiImplicitParam(name = "pe", value = "绠¢亾鍒嗘瀽瀹炰綋绫�", dataType = "PipelineEntity", paramType = "body")
-    })
-    @ResponseBody
-    @PostMapping(value = "/downloadReq")
-    public ResponseMsg<Object> downloadReq(@RequestBody PipelineEntity pe, HttpServletRequest req) {
-        try {
-            if (null == pe || StringHelper.isEmpty(pe.getPwd())) {
-                return fail("瀵嗙爜涓嶈兘涓虹┖");
-            }
-            if (null == pe.getTabs() || 0 == pe.getTabs().size()) {
-                return fail("璇疯緭鍏ヨ〃鍚�");
-            }
-            if (!checkTabs(pe.getTabs())) {
-                return fail("瀛樺湪闈炴硶琛ㄥ悕");
-            }
-            if (!DownloadService.decryptPwd(pe)) {
-                return fail("瀵嗙爜瑙e瘑澶辫触", null);
-            }
-            if (StringHelper.isPwdInvalid(pe.getPwd())) {
-                return fail("瀵嗙爜涓嶇鍚堣姹�");
-            }
-
-            Map<String, List<PipelineEntity>> map = new HashMap<>(4);
-            for (String tab : pe.getTabs()) {
-                List<PipelineEntity> rs = pipelineService.selectPipeAnalysis(tab, pe.getGid());
-                if (null != rs && rs.size() > 0) {
-                    map.put(tab, rs);
-                }
-            }
-            if (map.size() == 0) {
-                return fail("鏌ユ棤鏁版嵁");
-            }
-
-            UserEntity ue = tokenService.getCurrentUser(req);
-            String guid = pipelineService.createZipFile(ue, map, pe.getPwd());
-
-            return success(guid);
-        } catch (Exception ex) {
-            return fail(ex, null);
-        }
-    }
-
-    @SysLog()
-    @ApiOperation(value = "鍒嗛〉鏌ヨ涓嬭浇鏂囦欢")
-    @ApiImplicitParams({
-            @ApiImplicitParam(name = "name", value = "鍚嶇О", dataType = "String", paramType = "query", example = ""),
-            @ApiImplicitParam(name = "pageSize", value = "姣忛〉鏉℃暟", dataType = "Integer", paramType = "query", example = "10"),
-            @ApiImplicitParam(name = "pageIndex", value = "鍒嗛〉鏁帮紙浠�1寮�濮嬶級", dataType = "Integer", paramType = "query", example = "1")
-    })
-    @GetMapping(value = "/selectPageCountForDownload")
-    public ResponseMsg<List<DownloadEntity>> selectPageCountForDownload(String name, Integer pageSize, Integer pageIndex, HttpServletRequest req) {
-        try {
-            if (pageSize < 1 || pageIndex < 1) {
-                return fail("姣忛〉椤垫暟鎴栧垎椤垫暟灏忎簬1", null);
-            }
-
-            UserEntity ue = tokenService.getCurrentUser(req);
-            if (ue == null) {
-                return fail("鐢ㄦ埛鏈櫥褰�", null);
-            }
-
-            int count = downloadService.selectCountForUser(ue.getId(), "5", name);
-            if (count == 0) {
-                return success(0, null);
-            }
-            List<DownloadEntity> rs = downloadService.selectByPageForUser(ue.getId(), "5", name, pageSize, pageSize * (pageIndex - 1));
-
-            return success(count, rs);
-        } catch (Exception ex) {
-            return fail(ex, null);
-        }
-    }
-
-    @SysLog()
-    @ApiOperation(value = "鏌ヨ涓嬭浇鏂囦欢")
-    @ApiImplicitParams({
-            @ApiImplicitParam(name = "guid", value = "鏂囦欢GUID", dataType = "String", paramType = "query"),
-            @ApiImplicitParam(name = "pwd", value = "瀵嗙爜", dataType = "String", paramType = "query")
-    })
-    @GetMapping(value = "/selectDownloadFile")
-    public ResponseMsg<Boolean> selectDownloadFile(String guid, String pwd) {
-        try {
-            if (StringHelper.isEmpty(guid) || StringHelper.isEmpty(pwd)) {
-                return fail("鏂囦欢ID鍜屽瘑鐮佷笉鑳戒负绌�", null);
-            }
-            if (!pwd.endsWith(StaticData.EQ)) {
-                pwd = URLDecoder.decode(pwd, StandardCharsets.UTF_8.name());
-            }
-
-            String password = DownloadService.decryptPwd(pwd);
-            if (null == password) {
-                return fail("瀵嗙爜瑙e瘑澶辫触", null);
-            }
-
-            DownloadEntity de = downloadService.selectByGuid(guid);
-            if (null == de) {
-                return fail("鏂囦欢涓嶅瓨鍦�", null);
-            }
-            if (!StringHelper.isNull(de.getPwd()) && !Md5Helper.validatePassword(password, de.getPwd())) {
-                return fail("瀵嗙爜涓嶆纭�", null);
-            }
-
-            String filePath = downloadService.getDownloadFilePath(de);
-            File file = new File(filePath);
-
-            return success(file.exists());
-        } catch (Exception ex) {
-            return fail(ex, false);
-        }
-    }
-
-    @SysLog()
-    @ApiOperation(value = "涓嬭浇鏂囦欢")
-    @ApiImplicitParams({
-            @ApiImplicitParam(name = "guid", value = "鏂囦欢GUID", dataType = "String", paramType = "query"),
-            @ApiImplicitParam(name = "pwd", value = "瀵嗙爜", dataType = "String", paramType = "query")
-    })
-    @ResponseBody
-    @GetMapping(value = "/downloadFile")
-    public void downloadFile(String guid, String pwd, HttpServletRequest req, HttpServletResponse res) {
-        try {
-            if (StringHelper.isEmpty(guid) || StringHelper.isEmpty(pwd)) {
-                WebHelper.writeInfo(HttpStatus.BAD_REQUEST, "鏂囦欢ID鍜屽瘑鐮佷笉鑳戒负绌�", res);
-            }
-            if (!pwd.endsWith(StaticData.EQ)) {
-                pwd = URLDecoder.decode(pwd, StandardCharsets.UTF_8.name());
-            }
-
-            String password = DownloadService.decryptPwd(pwd);
-            if (null == password) {
-                WebHelper.writeInfo(HttpStatus.BAD_REQUEST, "瀵嗙爜瑙e瘑澶辫触", res);
-            }
-
-            DownloadEntity de = downloadService.selectByGuid(guid);
-            if (null == de) {
-                WebHelper.writeInfo(HttpStatus.NOT_FOUND, "鏂囦欢涓嶅瓨鍦�", res);
-                return;
-            }
-            if (!StringHelper.isNull(de.getPwd()) && !Md5Helper.validatePassword(password, de.getPwd())) {
-                WebHelper.writeInfo(HttpStatus.UNAUTHORIZED, "瀵嗙爜涓嶆纭�", res);
-            }
-
-            UserEntity ue = tokenService.getCurrentUser(req);
-            downlogService.updateInfos(ue, de, req);
-
-            String filePath = downloadService.getDownloadFilePath(de);
-            WebHelper.download(filePath, de.getName(), res);
-        } catch (Exception ex) {
-            WebHelper.writeInfo(HttpStatus.ERROR, ex.getMessage(), res);
-        }
-    }
-
-    /**
-     * 妫�鏌ヨ〃鍚�
-     */
-    private boolean checkTabs(List<String> tabs) {
-        for (String tab : tabs) {
-            if (!StaticData.PIPE_ANALYSIS_TABS.contains(tab)) {
-                return false;
-            }
-        }
-
-        return true;
-    }
-}
diff --git a/se-system/src/main/java/com/terra/system/controller/data/LayerController.java b/se-system/src/main/java/com/terra/system/controller/sys/LayerController.java
similarity index 69%
rename from se-system/src/main/java/com/terra/system/controller/data/LayerController.java
rename to se-system/src/main/java/com/terra/system/controller/sys/LayerController.java
index c1d543e..46fb208 100644
--- a/se-system/src/main/java/com/terra/system/controller/data/LayerController.java
+++ b/se-system/src/main/java/com/terra/system/controller/sys/LayerController.java
@@ -1,94 +1,57 @@
-package com.terra.system.controller.data;
+package com.terra.system.controller.sys;
 
 import com.terra.system.annotation.SysLog;
 import com.terra.system.controller.all.BaseController;
 import com.terra.system.entity.all.ResponseMsg;
-import com.terra.system.entity.data.LayerEntity;
+import com.terra.system.entity.sys.LayerEntity;
 import com.terra.system.entity.sys.UserEntity;
-import com.terra.system.service.data.LayerService;
+import com.terra.system.service.all.PermsService;
+import com.terra.system.service.sys.LayerService;
 import com.terra.system.service.sys.TokenService;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiImplicitParam;
 import io.swagger.annotations.ApiImplicitParams;
 import io.swagger.annotations.ApiOperation;
-import javax.annotation.Resource;
-
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
+
 import javax.servlet.http.HttpServletRequest;
 import java.util.List;
 
-/**
- * 鍥惧眰绠$悊
- * @author WWW
- */
-@Api(tags = "鏁版嵁绠$悊\\鍥惧眰绠$悊")
+@Api(tags = "杩愮淮绠$悊\\鍥惧眰绠$悊")
 @RestController
+@SuppressWarnings("ALL")
 @RequestMapping("/layer")
 public class LayerController extends BaseController {
-    @Resource
+    @Autowired
     LayerService layerService;
 
-    @Resource
+    @Autowired
     TokenService tokenService;
 
-    @SysLog()
-    @ApiOperation(value = "鏌ヨ璁板綍鏁�")
-    @ApiImplicitParams({
-            @ApiImplicitParam(name = "cnName", value = "涓枃鍚嶇О", dataType = "String", paramType = "query", required = false, example = "")
-    })
-    @GetMapping({"/selectCount"})
-    public ResponseMsg<Integer> selectCount(String cnName) {
-        try {
-            int count = layerService.selectCount(cnName);
-
-            return success(count);
-        } catch (Exception ex) {
-            return fail(ex, -1);
-        }
-    }
-
-    @SysLog()
-    @ApiOperation(value = "鍒嗛〉鏌ヨ")
-    @ApiImplicitParams({
-            @ApiImplicitParam(name = "cnName", value = "涓枃鍚嶇О", dataType = "String", paramType = "query", example = ""),
-            @ApiImplicitParam(name = "pageSize", value = "姣忛〉鏉℃暟", dataType = "Integer", paramType = "query", example = "10"),
-            @ApiImplicitParam(name = "pageIndex", value = "鍒嗛〉鏁帮紙浠�1寮�濮嬶級", dataType = "Integer", paramType = "query", example = "1")
-    })
-    @GetMapping(value = "/selectByPage")
-    public ResponseMsg<List<LayerEntity>> selectByPage(String cnName, Integer pageSize, Integer pageIndex) {
-        try {
-            if (pageSize < 1 || pageIndex < 1) {
-                return fail("姣忛〉椤垫暟鎴栧垎椤垫暟灏忎簬1", null);
-            }
-
-            List<LayerEntity> rs = layerService.selectByPage(cnName, pageSize, pageSize * (pageIndex - 1));
-
-            return success(rs);
-        } catch (Exception ex) {
-            return fail(ex, null);
-        }
-    }
+    @Autowired
+    PermsService permsService;
 
     @SysLog()
     @ApiOperation(value = "鍒嗛〉鏌ヨ骞惰繑鍥炶褰曟暟")
     @ApiImplicitParams({
-            @ApiImplicitParam(name = "cnName", value = "涓枃鍚嶇О", dataType = "String", paramType = "query", example = ""),
+            @ApiImplicitParam(name = "name", value = "鍚嶇О", dataType = "String", paramType = "query", example = ""),
             @ApiImplicitParam(name = "pageSize", value = "姣忛〉鏉℃暟", dataType = "Integer", paramType = "query", example = "10"),
             @ApiImplicitParam(name = "pageIndex", value = "鍒嗛〉鏁帮紙浠�1寮�濮嬶級", dataType = "Integer", paramType = "query", example = "1")
     })
     @GetMapping(value = "/selectByPageAndCount")
-    public ResponseMsg<List<LayerEntity>> selectByPageAndCount(String cnName, Integer pageSize, Integer pageIndex) {
+    public ResponseMsg<List<LayerEntity>> selectByPageAndCount(String name, Integer pageSize, Integer pageIndex) {
         try {
             if (pageSize < 1 || pageIndex < 1) {
                 return fail("姣忛〉椤垫暟鎴栧垎椤垫暟灏忎簬1", null);
             }
 
-            int count = layerService.selectCount(cnName);
+            int count = layerService.selectCount(name);
             if (count == 0) {
                 return success(0, null);
             }
 
-            List<LayerEntity> rs = layerService.selectByPage(cnName, pageSize, pageSize * (pageIndex - 1));
+            List<LayerEntity> rs = layerService.selectByPage(name, pageSize, pageSize * (pageIndex - 1));
 
             return success(count, rs);
         } catch (Exception ex) {
@@ -99,9 +62,9 @@
     @SysLog()
     @ApiOperation(value = "鏌ヨ鎵�鏈�")
     @GetMapping(value = "/selectAll")
-    public ResponseMsg<List<LayerEntity>> selectAll() {
+    public ResponseMsg<List<LayerEntity>> selectAll(Integer flag) {
         try {
-            List<LayerEntity> list = layerService.selectAll();
+            List<LayerEntity> list = layerService.selectAll(flag);
 
             return success(list);
         } catch (Exception ex) {
@@ -138,10 +101,8 @@
                 entity.setCreateUser(ue.getId());
             }
 
+            permsService.clearPermsCache();
             int count = layerService.insert(entity);
-            if (count > 0) {
-                layerService.clearCache();
-            }
 
             return success(count);
         } catch (Exception ex) {
@@ -164,10 +125,8 @@
                 }
             }
 
+            permsService.clearPermsCache();
             int count = layerService.inserts(list);
-            if (count > 0) {
-                layerService.clearCache();
-            }
 
             return success(count);
         } catch (Exception ex) {
@@ -183,10 +142,8 @@
     @GetMapping(value = "/delete")
     public ResponseMsg<Integer> delete(int id) {
         try {
+            permsService.clearPermsCache();
             int count = layerService.delete(id);
-            if (count > 0) {
-                layerService.clearCache();
-            }
 
             return success(count);
         } catch (Exception ex) {
@@ -206,10 +163,8 @@
                 return fail("id鏁扮粍涓嶈兘涓虹┖", -1);
             }
 
+            permsService.clearPermsCache();
             int count = layerService.deletes(ids);
-            if (count > 0) {
-                layerService.clearCache();
-            }
 
             return success(count);
         } catch (Exception ex) {
@@ -231,10 +186,8 @@
                 entity.setUpdateUser(ue.getId());
             }
 
+            permsService.clearPermsCache();
             int count = layerService.update(entity);
-            if (count > 0) {
-                layerService.clearCache();
-            }
 
             return success(count);
         } catch (Exception ex) {
@@ -258,10 +211,8 @@
                 }
             }
 
+            permsService.clearPermsCache();
             int count = layerService.updates(list);
-            if (count > 0) {
-                layerService.clearCache();
-            }
 
             return success(count);
         } catch (Exception ex) {
diff --git a/se-system/src/main/java/com/terra/system/controller/sys/RoleController.java b/se-system/src/main/java/com/terra/system/controller/sys/RoleController.java
index 1488aff..9912fac 100644
--- a/se-system/src/main/java/com/terra/system/controller/sys/RoleController.java
+++ b/se-system/src/main/java/com/terra/system/controller/sys/RoleController.java
@@ -117,10 +117,8 @@
                 entity.setCreateUser(ue.getId());
             }
 
+            permsService.clearPermsCache();
             int count = roleService.insertRole(entity);
-            if (count > 0) {
-                permsService.clearPermsCache();
-            }
 
             return success(count);
         } catch (Exception ex) {
@@ -143,10 +141,8 @@
                 }
             }
 
+            permsService.clearPermsCache();
             int count = roleService.insertRoles(list);
-            if (count > 0) {
-                permsService.clearPermsCache();
-            }
 
             return success(count);
         } catch (Exception ex) {
@@ -162,10 +158,8 @@
     @GetMapping(value = "/deleteRole")
     public ResponseMsg<Integer> deleteRole(int id) {
         try {
+            permsService.clearPermsCache();
             int count = roleService.deleteRole(id);
-            if (count > 0) {
-                permsService.clearPermsCache();
-            }
 
             return success(count);
         } catch (Exception ex) {
@@ -185,10 +179,8 @@
                 return fail("id鏁扮粍涓嶈兘涓虹┖", -1);
             }
 
+            permsService.clearPermsCache();
             int count = roleService.deleteRoles(ids);
-            if (count > 0) {
-                permsService.clearPermsCache();
-            }
 
             return success(count);
         } catch (Exception ex) {
@@ -210,10 +202,8 @@
                 entity.setUpdateUser(ue.getId());
             }
 
+            permsService.clearPermsCache();
             int count = roleService.updateRole(entity);
-            if (count > 0) {
-                permsService.clearPermsCache();
-            }
 
             return success(count);
         } catch (Exception ex) {
diff --git a/se-system/src/main/java/com/terra/system/controller/sys/RoleLayerController.java b/se-system/src/main/java/com/terra/system/controller/sys/RoleLayerController.java
new file mode 100644
index 0000000..c565867
--- /dev/null
+++ b/se-system/src/main/java/com/terra/system/controller/sys/RoleLayerController.java
@@ -0,0 +1,226 @@
+package com.terra.system.controller.sys;
+
+import com.terra.system.annotation.SysLog;
+import com.terra.system.controller.all.BaseController;
+import com.terra.system.entity.all.ResponseMsg;
+import com.terra.system.entity.sys.RoleLayerEntity;
+import com.terra.system.entity.sys.RoleResEntity;
+import com.terra.system.entity.sys.UserEntity;
+import com.terra.system.service.all.PermsService;
+import com.terra.system.service.sys.RoleLayerService;
+import com.terra.system.service.sys.TokenService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiImplicitParam;
+import io.swagger.annotations.ApiImplicitParams;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import javax.servlet.http.HttpServletRequest;
+import java.util.List;
+
+@SuppressWarnings("ALL")
+@Api(tags = "杩愮淮绠$悊\\瑙掕壊鍥惧眰")
+@RestController
+@RequestMapping("/roleLayer")
+public class RoleLayerController extends BaseController {
+    @Autowired
+    RoleLayerService roleLayerService;
+
+    @Autowired
+    TokenService tokenService;
+
+    @Autowired
+    PermsService permsService;
+
+    @SysLog()
+    @ApiOperation(value = "鏍规嵁瑙掕壊ID鏌ヨ鍥惧眰")
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "roleid", value = "瑙掕壊ID", dataType = "Integer", paramType = "query", example = "1")
+    })
+    @GetMapping(value = "/selectResByRole")
+    public ResponseMsg<Object> selectLayersByRole(Integer roleid) {
+        try {
+            List<RoleLayerEntity> rs = roleLayerService.selectLayersByRole(roleid);
+
+            return success(null == rs ? 0 : rs.size(), rs);
+        } catch (Exception ex) {
+            return fail(ex, null);
+        }
+    }
+
+    @SysLog()
+    @ApiOperation(value = "鍒嗛〉鏌ヨ骞惰繑鍥炶褰曟暟")
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "roleid", value = "瑙掕壊ID", dataType = "Integer", paramType = "query", example = ""),
+            @ApiImplicitParam(name = "pageSize", value = "姣忛〉鏉℃暟", dataType = "Integer", paramType = "query", example = "10"),
+            @ApiImplicitParam(name = "pageIndex", value = "鍒嗛〉鏁帮紙浠�1寮�濮嬶級", dataType = "Integer", paramType = "query", example = "1")
+    })
+    @GetMapping(value = "/selectByPageAndCount")
+    public ResponseMsg<List<RoleLayerEntity>> selectByPageAndCount(Integer roleid, Integer pageSize, Integer pageIndex) {
+        try {
+            if (pageSize < 1 || pageIndex < 1) {
+                return fail("姣忛〉椤垫暟鎴栧垎椤垫暟灏忎簬1", null);
+            }
+
+            int count = roleLayerService.selectCount(roleid);
+            if (count == 0) {
+                return success(0, null);
+            }
+
+            List<RoleLayerEntity> rs = roleLayerService.selectByPage(roleid, pageSize, pageSize * (pageIndex - 1));
+
+            return success(count, rs);
+        } catch (Exception ex) {
+            return fail(ex, null);
+        }
+    }
+
+    @SysLog()
+    @ApiOperation(value = "鏍规嵁ID鏌ヨ")
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "id", value = "ID", dataType = "int", paramType = "query", example = "1")
+    })
+    @GetMapping(value = "/selectById")
+    public ResponseMsg<RoleLayerEntity> selectById(int id) {
+        try {
+            RoleLayerEntity entity = roleLayerService.selectById(id);
+
+            return success(entity);
+        } catch (Exception ex) {
+            return fail(ex, null);
+        }
+    }
+
+    @SysLog()
+    @ApiOperation(value = "鎻掑叆涓�鏉�")
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "entity", value = "瀹炰綋绫�", dataType = "RoleLayerEntity", paramType = "body")
+    })
+    @PostMapping(value = "/insert", produces = "application/json; charset=UTF-8")
+    public ResponseMsg<Integer> insert(@RequestBody RoleLayerEntity entity, HttpServletRequest req) {
+        try {
+            UserEntity ue = tokenService.getCurrentUser(req);
+            if (ue != null) {
+                entity.setCreateUser(ue.getId());
+            }
+
+            permsService.clearPermsCache();
+            int count = roleLayerService.insert(entity);
+
+            return success(count);
+        } catch (Exception ex) {
+            return fail(ex, -1);
+        }
+    }
+
+    @SysLog()
+    @ApiOperation(value = "鎻掑叆澶氭潯")
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "list", value = "瀹炰綋绫婚泦鍚�", dataType = "RoleLayerEntity", paramType = "body")
+    })
+    @PostMapping(value = "/inserts", produces = "application/json; charset=UTF-8")
+    public ResponseMsg<Integer> inserts(@RequestBody List<RoleLayerEntity> list, HttpServletRequest req) {
+        try {
+            UserEntity ue = tokenService.getCurrentUser(req);
+            if (ue != null) {
+                for (RoleLayerEntity entity : list) {
+                    entity.setCreateUser(ue.getId());
+                }
+            }
+
+            permsService.clearPermsCache();
+            int count = roleLayerService.inserts(list);
+
+            return success(count);
+        } catch (Exception ex) {
+            return fail(ex, -1);
+        }
+    }
+
+    @SysLog()
+    @ApiOperation(value = "鍒犻櫎涓�鏉�")
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "id", value = "ID", dataType = "Integer", paramType = "query", example = "1")
+    })
+    @GetMapping(value = "/delete")
+    public ResponseMsg<Integer> delete(int id) {
+        try {
+            permsService.clearPermsCache();
+            int count = roleLayerService.delete(id);
+
+            return success(count);
+        } catch (Exception ex) {
+            return fail(ex, -1);
+        }
+    }
+
+    @SysLog()
+    @ApiOperation(value = "鍒犻櫎澶氭潯")
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "ids", value = "ID鏁扮粍", dataType = "Integer", paramType = "query", example = "1,2")
+    })
+    @GetMapping(value = "/deletes")
+    public ResponseMsg<Integer> deletes(@RequestParam List<Integer> ids) {
+        try {
+            if (ids == null || ids.isEmpty()) {
+                return fail("id鏁扮粍涓嶈兘涓虹┖", -1);
+            }
+
+            permsService.clearPermsCache();
+            int count = roleLayerService.deletes(ids);
+
+            return success(count);
+        } catch (Exception ex) {
+            return fail(ex, -1);
+        }
+    }
+
+    @SysLog()
+    @ApiOperation(value = "鏇存柊涓�鏉�")
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "entity", value = "瀹炰綋绫�", dataType = "RoleLayerEntity", paramType = "body")
+    })
+    @ResponseBody
+    @PostMapping(value = "/update", produces = "application/json; charset=UTF-8")
+    public ResponseMsg<Integer> update(@RequestBody RoleLayerEntity entity, HttpServletRequest req) {
+        try {
+            UserEntity ue = tokenService.getCurrentUser(req);
+            if (ue != null) {
+                entity.setUpdateUser(ue.getId());
+            }
+
+            permsService.clearPermsCache();
+            int count = roleLayerService.update(entity);
+
+            return success(count);
+        } catch (Exception ex) {
+            return fail(ex, -1);
+        }
+    }
+
+    @SysLog()
+    @ApiOperation(value = "鏇存柊澶氭潯")
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "list", value = "瀹炰綋绫婚泦鍚�", dataType = "RoleLayerEntity", paramType = "body")
+    })
+    @ResponseBody
+    @PostMapping(value = "/updates", produces = "application/json; charset=UTF-8")
+    public ResponseMsg<Integer> updates(@RequestBody List<RoleLayerEntity> list, HttpServletRequest req) {
+        try {
+            UserEntity ue = tokenService.getCurrentUser(req);
+            if (ue != null) {
+                for (RoleLayerEntity entity : list) {
+                    entity.setUpdateUser(ue.getId());
+                }
+            }
+
+            permsService.clearPermsCache();
+            int count = roleLayerService.updates(list);
+
+            return success(count);
+        } catch (Exception ex) {
+            return fail(ex, -1);
+        }
+    }
+}
diff --git a/se-system/src/main/java/com/terra/system/controller/sys/RoleResController.java b/se-system/src/main/java/com/terra/system/controller/sys/RoleResController.java
index 28cfc94..b0de681 100644
--- a/se-system/src/main/java/com/terra/system/controller/sys/RoleResController.java
+++ b/se-system/src/main/java/com/terra/system/controller/sys/RoleResController.java
@@ -36,38 +36,16 @@
     PermsService permsService;
 
     @SysLog()
-    @ApiOperation(value = "鏌ヨ璁板綍鏁�")
+    @ApiOperation(value = "鏍规嵁瑙掕壊ID鏌ヨ璧勬簮")
     @ApiImplicitParams({
-            @ApiImplicitParam(name = "roleid", value = "瑙掕壊ID", dataType = "Integer", paramType = "query", required = false, example = "")
+            @ApiImplicitParam(name = "roleid", value = "瑙掕壊ID", dataType = "Integer", paramType = "query", example = "1")
     })
-    @GetMapping({"/selectCount"})
-    public ResponseMsg<Integer> selectCount(Integer roleid) {
+    @GetMapping(value = "/selectResByRole")
+    public ResponseMsg<List<RoleResEntity>> selectResByRole(Integer roleid) {
         try {
-            int count = roleResService.selectCount(roleid);
+            List<RoleResEntity> rs = roleResService.selectResByRole(roleid);
 
-            return success(count);
-        } catch (Exception ex) {
-            return fail(ex, -1);
-        }
-    }
-
-    @SysLog()
-    @ApiOperation(value = "鍒嗛〉鏌ヨ")
-    @ApiImplicitParams({
-            @ApiImplicitParam(name = "roleid", value = "瑙掕壊ID", dataType = "Integer", paramType = "query", example = ""),
-            @ApiImplicitParam(name = "pageSize", value = "姣忛〉鏉℃暟", dataType = "Integer", paramType = "query", example = "10"),
-            @ApiImplicitParam(name = "pageIndex", value = "鍒嗛〉鏁帮紙浠�1寮�濮嬶級", dataType = "Integer", paramType = "query", example = "1")
-    })
-    @GetMapping(value = "/selectByPage")
-    public ResponseMsg<List<RoleResEntity>> selectByPage(Integer roleid, Integer pageSize, Integer pageIndex) {
-        try {
-            if (pageSize < 1 || pageIndex < 1) {
-                return fail("姣忛〉椤垫暟鎴栧垎椤垫暟灏忎簬1", null);
-            }
-
-            List<RoleResEntity> rs = roleResService.selectByPage(roleid, pageSize, pageSize * (pageIndex - 1));
-
-            return success(rs);
+            return success(null == rs ? 0 : rs.size(), rs);
         } catch (Exception ex) {
             return fail(ex, null);
         }
@@ -76,7 +54,7 @@
     @SysLog()
     @ApiOperation(value = "鍒嗛〉鏌ヨ骞惰繑鍥炶褰曟暟")
     @ApiImplicitParams({
-            @ApiImplicitParam(name = "roleid", value = "瑙掕壊ID", dataType = "Integer", paramType = "query", example = ""),
+            @ApiImplicitParam(name = "roleid", value = "瑙掕壊ID", dataType = "Integer", paramType = "query", example = "1"),
             @ApiImplicitParam(name = "pageSize", value = "姣忛〉鏉℃暟", dataType = "Integer", paramType = "query", example = "10"),
             @ApiImplicitParam(name = "pageIndex", value = "鍒嗛〉鏁帮紙浠�1寮�濮嬶級", dataType = "Integer", paramType = "query", example = "1")
     })
@@ -86,6 +64,7 @@
             if (pageSize < 1 || pageIndex < 1) {
                 return fail("姣忛〉椤垫暟鎴栧垎椤垫暟灏忎簬1", null);
             }
+
             int count = roleResService.selectCount(roleid);
             if (count == 0) {
                 return success(0, null);
@@ -93,19 +72,6 @@
             List<RoleResEntity> rs = roleResService.selectByPage(roleid, pageSize, pageSize * (pageIndex - 1));
 
             return success(count, rs);
-        } catch (Exception ex) {
-            return fail(ex, null);
-        }
-    }
-
-    @SysLog()
-    @ApiOperation(value = "鏌ヨ鎵�鏈�")
-    @GetMapping(value = "/selectAll")
-    public ResponseMsg<List<RoleResEntity>> selectAll() {
-        try {
-            List<RoleResEntity> list = roleResService.selectAll();
-
-            return success(list);
         } catch (Exception ex) {
             return fail(ex, null);
         }
diff --git a/se-system/src/main/java/com/terra/system/entity/all/RedisCacheKey.java b/se-system/src/main/java/com/terra/system/entity/all/RedisCacheKey.java
index 1081291..4b0d3fd 100644
--- a/se-system/src/main/java/com/terra/system/entity/all/RedisCacheKey.java
+++ b/se-system/src/main/java/com/terra/system/entity/all/RedisCacheKey.java
@@ -47,6 +47,10 @@
         return "perms:layer:" + key;
     }
 
+    public static String permsProjectLayerKey(String key) {
+        return "perms:projectLayer:" + key;
+    }
+
     /**
      * 鑿滃崟鎺堟潈閿�
      */
diff --git a/se-system/src/main/java/com/terra/system/entity/data/LayerEntity.java b/se-system/src/main/java/com/terra/system/entity/data/LayerEntity.java
index f8c49a5..f0d30e0 100644
--- a/se-system/src/main/java/com/terra/system/entity/data/LayerEntity.java
+++ b/se-system/src/main/java/com/terra/system/entity/data/LayerEntity.java
@@ -20,9 +20,9 @@
 
     private String url;
 
-    private String testUrl;
+    private int isLayer;
 
-    private int type;
+    private int isShow;
 
     private String icon;
 
@@ -30,7 +30,11 @@
 
     private int orderNum;
 
-    private int isShow;
+    private int status;
+
+    private int data;
+
+    private String tab;
 
     private int createUser;
 
@@ -42,19 +46,21 @@
 
     private String bak;
 
-    private String serveType;
-
-    private String dataType;
-
     private double elev;
 
-    private String ns;
+    private int resid;
+
+    private int type;
+
+    private String proxy;
+
+    private int category;
+
+    private int flag;
 
     private Integer pubid;
 
-    private Integer isProject;
-
-    private String json;
+    private String unit;
 
     public LayerEntity() {
     }
@@ -99,20 +105,20 @@
         this.url = url;
     }
 
-    public String getTestUrl() {
-        return testUrl;
+    public int getIsLayer() {
+        return isLayer;
     }
 
-    public void setTestUrl(String testUrl) {
-        this.testUrl = testUrl;
+    public void setIsLayer(int isLayer) {
+        this.isLayer = isLayer;
     }
 
-    public int getType() {
-        return type;
+    public int getIsShow() {
+        return isShow;
     }
 
-    public void setType(int type) {
-        this.type = type;
+    public void setIsShow(int isShow) {
+        this.isShow = isShow;
     }
 
     public String getIcon() {
@@ -139,12 +145,28 @@
         this.orderNum = orderNum;
     }
 
-    public int getIsShow() {
-        return isShow;
+    public int getStatus() {
+        return status;
     }
 
-    public void setIsShow(int isShow) {
-        this.isShow = isShow;
+    public void setStatus(int status) {
+        this.status = status;
+    }
+
+    public int getData() {
+        return data;
+    }
+
+    public void setData(int data) {
+        this.data = data;
+    }
+
+    public String getTab() {
+        return tab;
+    }
+
+    public void setTab(String tab) {
+        this.tab = tab;
     }
 
     public int getCreateUser() {
@@ -187,22 +209,6 @@
         this.bak = bak;
     }
 
-    public String getServeType() {
-        return serveType;
-    }
-
-    public void setServeType(String serveType) {
-        this.serveType = serveType;
-    }
-
-    public String getDataType() {
-        return dataType;
-    }
-
-    public void setDataType(String dataType) {
-        this.dataType = dataType;
-    }
-
     public double getElev() {
         return elev;
     }
@@ -211,12 +217,44 @@
         this.elev = elev;
     }
 
-    public String getNs() {
-        return ns;
+    public int getResid() {
+        return resid;
     }
 
-    public void setNs(String ns) {
-        this.ns = ns;
+    public void setResid(int resid) {
+        this.resid = resid;
+    }
+
+    public int getType() {
+        return type;
+    }
+
+    public void setType(int type) {
+        this.type = type;
+    }
+
+    public String getProxy() {
+        return proxy;
+    }
+
+    public void setProxy(String proxy) {
+        this.proxy = proxy;
+    }
+
+    public int getCategory() {
+        return category;
+    }
+
+    public void setCategory(int category) {
+        this.category = category;
+    }
+
+    public int getFlag() {
+        return flag;
+    }
+
+    public void setFlag(int flag) {
+        this.flag = flag;
     }
 
     public Integer getPubid() {
@@ -227,19 +265,11 @@
         this.pubid = pubid;
     }
 
-    public Integer getIsProject() {
-        return isProject;
+    public String getUnit() {
+        return unit;
     }
 
-    public void setIsProject(Integer isProject) {
-        this.isProject = isProject;
-    }
-
-    public String getJson() {
-        return json;
-    }
-
-    public void setJson(String json) {
-        this.json = json;
+    public void setUnit(String unit) {
+        this.unit = unit;
     }
 }
diff --git a/se-system/src/main/java/com/terra/system/entity/other/CheckOutLicense.java b/se-system/src/main/java/com/terra/system/entity/other/CheckOutLicense.java
deleted file mode 100644
index a1cd332..0000000
--- a/se-system/src/main/java/com/terra/system/entity/other/CheckOutLicense.java
+++ /dev/null
@@ -1,238 +0,0 @@
-package com.terra.system.entity.other;
-
-import org.apache.commons.codec.binary.Hex;
-
-import javax.crypto.Cipher;
-import javax.crypto.SecretKey;
-import java.io.ByteArrayInputStream;
-import java.io.ObjectInputStream;
-import java.util.Arrays;
-import java.util.Calendar;
-import java.util.Random;
-
-/**
- *  CheckOutLicense
- * @author WWW
- */
-@SuppressWarnings("AlibabaUndefineMagicConstant")
-public class CheckOutLicense {
-    public static String createFloatingLicense(int n, String s, long expireDate) {
-        int[] registeredModules = new int[]{1, 3, 4, 9, 10, 11, 12, 13, 17, 25, 30, 33, 37};
-
-        long n2;
-        if ((n2 = System.currentTimeMillis() + 86400000L) > expireDate) {
-            n2 = expireDate;
-        }
-
-        CheckOutLicense e = new CheckOutLicense();
-        e.a(n2);
-        e.a(n);
-        e.cc(s);
-        e.a(registeredModules);
-
-        return e.aaa(e);
-    }
-
-    public String aaa(final CheckOutLicense b) {
-        final CheckOutLicense e = b;
-        return new String(a(e.a, e.b, e.c)) + new bb().a(new StringBuilder().append(e.ee()).toString());
-    }
-
-    private char[] a(final long n, final int[] array, final int i) {
-        final char[] array2 = new char[48];
-        final String b = b(n);
-        final String value = String.valueOf(i);
-
-        final bb b2 = new bb();
-        final String a = b2.a(b);
-        final String a2 = b2.a(value);
-
-        final cc c = new cc();
-        for (int j = 0; j < array.length; ++j) {
-            c.b(array[j]);
-        }
-
-        final char[] a3 = c.a();
-        for (int k = 0; k < 16; ++k) {
-            array2[k * 3] = a3[k];
-            array2[k * 3 + 1] = a.charAt(k);
-            array2[k * 3 + 2] = a2.charAt(k);
-        }
-        return array2;
-    }
-
-    private static String b(final long timeInMillis) {
-        final Calendar instance;
-        (instance = Calendar.getInstance()).setTimeInMillis(timeInMillis);
-        final int value = instance.get(1);
-        final int value2 = instance.get(2);
-        final int value3 = instance.get(5);
-        final String substring = Integer.toString(value).substring(2, 4);
-        String s;
-        if ((s = Integer.toString(value2 + 1)).length() == 1) {
-            s = "0".concat(String.valueOf(s));
-        }
-        String s2;
-        if ((s2 = Integer.toString(value3)).length() == 1) {
-            s2 = "0".concat(String.valueOf(s2));
-        }
-        return String.valueOf(substring) + s + s2;
-    }
-
-    public static CheckOutLicense a(String s) {
-        try {
-            return null;
-        } catch (Exception ex) {
-            return null;
-        }
-    }
-
-    public final String ee() {
-        return this.aa;
-    }
-
-    private String aa;
-    private long a;
-    private int c;
-    private int[] b;
-
-    public final void a(final long a) {
-        this.a = a;
-    }
-
-    public final void a(final int c) {
-        this.c = c;
-    }
-
-    public final void a(final int[] b) {
-        this.b = b;
-    }
-
-    public final long a() {
-        return this.a;
-    }
-
-    public final int[] b() {
-        return this.b;
-    }
-
-    public final int c() {
-        return this.c;
-    }
-
-    private void cc(String aa) {
-        this.aa = aa;
-    }
-
-    @SuppressWarnings("AlibabaClassNamingShouldBeCamel")
-    public class bb {
-        private SecretKey a;
-
-        public bb() {
-            try {
-                this.a = (SecretKey) new ObjectInputStream(new ByteArrayInputStream(Hex.decodeHex("aced0005737200146a6176612e73656375726974792e4b6579526570bdf94fb3889aa5430200044c0009616c676f726974686d7400124c6a6176612f6c616e672f537472696e673b5b0007656e636f6465647400025b424c0006666f726d617471007e00014c00047479706574001b4c6a6176612f73656375726974792f4b657952657024547970653b7870740003444553757200025b42acf317f8060854e00200007870000000084f5b0e52b33dbf797400035241577e7200196a6176612e73656375726974792e4b6579526570245479706500000000000000001200007872000e6a6176612e6c616e672e456e756d00000000000000001200007870740006534543524554".toCharArray()))).readObject();
-            } catch (Exception ex) {
-                ex.printStackTrace();
-            }
-        }
-
-        public String a(final String s) {
-            try {
-                final Cipher instance;
-                (instance = Cipher.getInstance("DES/ECB/PKCS5Padding")).init(1, this.a);
-                return Hex.encodeHexString(instance.doFinal(s.getBytes()));
-            } catch (Exception ex) {
-                return null;
-            }
-        }
-
-        public String b(final String s) {
-            try {
-                final Cipher instance;
-                (instance = Cipher.getInstance("DES/ECB/PKCS5Padding")).init(2, this.a);
-                return new String(instance.doFinal(Hex.decodeHex(s.toCharArray())));
-            } catch (Exception ex) {
-                return null;
-            }
-        }
-    }
-
-    @SuppressWarnings("AlibabaClassNamingShouldBeCamel")
-    public final class cc {
-        private int a;
-        private char[] b;
-        private int c = 63;
-
-        public cc() {
-            this.a = 0;
-            Arrays.fill(this.b = new char[c], '0');
-            this.a = new Random().nextInt(16);
-            String obj;
-            if ((obj = Integer.toBinaryString(this.a)).length() == 1) {
-                obj = "000".concat(String.valueOf(obj));
-            } else if (obj.length() == 2) {
-                obj = "00".concat(String.valueOf(obj));
-            } else if (obj.length() == 3) {
-                obj = "0".concat(String.valueOf(obj));
-            }
-            for (int i = 0; i < 4; ++i) {
-                this.b[i] = obj.charAt(i);
-            }
-        }
-
-        public cc(String binaryString) {
-            this.a = 0;
-            Arrays.fill(this.b = new char[c], '0');
-            final int length;
-            if ((length = (binaryString = Long.toBinaryString(Long.parseUnsignedLong(binaryString, 16))).length()) <= c) {
-                for (int i = 0; i < length; ++i) {
-                    this.b[c - length + i] = binaryString.charAt(i);
-                }
-            }
-            final char[] value = new char[4];
-            System.arraycopy(this.b, 0, value, 0, 4);
-            binaryString = new String(value);
-            this.a = Integer.parseUnsignedInt(binaryString, 2);
-        }
-
-        @Override
-        public final String toString() {
-            String string = "";
-            for (int i = 0; i < c; ++i) {
-                string = String.valueOf(string) + this.b[i];
-            }
-            return string;
-        }
-
-        public final char[] a() {
-            final String hexString = Long.toHexString(Long.parseUnsignedLong(this.toString(), 2));
-            final int n;
-            final char[] array;
-            Arrays.fill(array = new char[n = (c + 1) / 4], '0');
-            for (int length = hexString.length(), i = 0; i < length; ++i) {
-                array[n - length + i] = hexString.charAt(i);
-            }
-            return array;
-        }
-
-        public final boolean a(int c) {
-            return (c = this.c(c)) < c && this.b[c] == '1' && c >= 4;
-        }
-
-        private int c(int n) {
-            if (n >= 0 && n < 59) {
-                if ((n += 4 + this.a) >= 63) {
-                    n -= 59;
-                }
-                return n;
-            }
-            return -1;
-        }
-
-        public final void b(int c) {
-            if ((c = this.c(c)) < c && c >= 4) {
-                this.b[c] = '1';
-            }
-        }
-    }
-}
diff --git a/se-system/src/main/java/com/terra/system/entity/other/FloatServerResponse.java b/se-system/src/main/java/com/terra/system/entity/other/FloatServerResponse.java
deleted file mode 100644
index ba8006e..0000000
--- a/se-system/src/main/java/com/terra/system/entity/other/FloatServerResponse.java
+++ /dev/null
@@ -1,107 +0,0 @@
-package com.terra.system.entity.other;
-
-import com.terra.system.helper.StringHelper;
-
-import java.util.Calendar;
-
-/**
- * FloatServerResponse
- * @author WWW
- */
-public class FloatServerResponse {
-    private String modules;
-
-    private String id;
-
-    private String expireDate;
-
-    private int processNum;
-
-    private long time;
-
-    private int availableNum;
-
-    private String licenseCode;
-
-    private String localId;
-
-    public FloatServerResponse() {
-    }
-
-    public FloatServerResponse(ReqParamFloatServer rfs) {
-        Calendar calendar = Calendar.getInstance();
-        calendar.set(Calendar.YEAR, 2025);
-
-        this.id = rfs.getId();
-        this.localId = rfs.getLocalId();
-        this.availableNum = rfs.getAvailableNum();
-        this.time = calendar.getTimeInMillis();
-        this.expireDate = StringHelper.YMD_FORMAT.format(this.time);
-        //this.licenseCode = "78a82f0920de0f557f8177bec1e48601c4dc25e4054a00728e4314b56528d3a1632de5298edee38a65412277977a174fea5d91c452b19ef138dbc2ba089ba632";
-        this.licenseCode = CheckOutLicense.createFloatingLicense(rfs.getAvailableNum(), rfs.getId(), this.time);
-    }
-
-    public String getModules() {
-        return this.modules;
-    }
-
-    public void setModules(final String modules) {
-        this.modules = modules;
-    }
-
-    public String getId() {
-        return this.id;
-    }
-
-    public void setId(final String id) {
-        this.id = id;
-    }
-
-    public String getExpireDate() {
-        return this.expireDate;
-    }
-
-    public void setExpireDate(final String expireDate) {
-        this.expireDate = expireDate;
-    }
-
-    public int getProcessNum() {
-        return this.processNum;
-    }
-
-    public void setProcessNum(final int processNum) {
-        this.processNum = processNum;
-    }
-
-    public int getAvailableNum() {
-        return this.availableNum;
-    }
-
-    public void setAvailableNum(final int availableNum) {
-        this.availableNum = availableNum;
-    }
-
-    public long getTime() {
-        return this.time;
-    }
-
-    public void setTime(final long time) {
-        this.time = time;
-    }
-
-    public String getLicenseCode() {
-        return this.licenseCode;
-    }
-
-    public void setLicenseCode(final String licenseCode) {
-        this.licenseCode = licenseCode;
-    }
-
-    public String getLocalId() {
-        return localId;
-    }
-
-    public void setLocalId(String localId) {
-        this.localId = localId;
-    }
-}
diff --git a/se-system/src/main/java/com/terra/system/entity/other/ReqParamFloatServer.java b/se-system/src/main/java/com/terra/system/entity/other/ReqParamFloatServer.java
deleted file mode 100644
index 22e2bdd..0000000
--- a/se-system/src/main/java/com/terra/system/entity/other/ReqParamFloatServer.java
+++ /dev/null
@@ -1,143 +0,0 @@
-package com.terra.system.entity.other;
-
-import java.net.Inet4Address;
-import java.net.InetAddress;
-import java.net.NetworkInterface;
-import java.net.SocketException;
-import java.util.Enumeration;
-
-/**
- * ReqParamFloatServer
- * @author WWW
- */
-public class ReqParamFloatServer {
-    private String id;
-
-    private String port;
-
-    private String modules;
-
-    private int availableNum;
-
-    private long time;
-
-    private String localId;
-
-    private String cmdType;
-
-    public ReqParamFloatServer() {
-        this.localId = a();
-    }
-
-    public ReqParamFloatServer(String id, String port) {
-        this.id = id;
-        this.port = port;
-        this.localId = a();
-    }
-
-    public String getPort() {
-        return this.port;
-    }
-
-    public void setPort(final String port) {
-        this.port = port;
-    }
-
-    public String getId() {
-        return this.id;
-    }
-
-    public void setId(final String id) {
-        this.id = id;
-    }
-
-    public String getModules() {
-        return this.modules;
-    }
-
-    public void setModules(final String modules) {
-        this.modules = modules;
-    }
-
-    public int getAvailableNum() {
-        return this.availableNum;
-    }
-
-    public void setAvailableNum(final int availableNum) {
-        this.availableNum = availableNum;
-    }
-
-    public long getTime() {
-        return this.time;
-    }
-
-    public void setTime(final long time) {
-        this.time = time;
-    }
-
-    public String getLocalId() {
-        return this.localId;
-    }
-
-    public String getCmdType() {
-        return this.cmdType;
-    }
-
-    public void setCmdType(final String cmdType) {
-        this.cmdType = cmdType;
-    }
-
-    public static String a() {
-        String string = "";
-        try {
-            final Enumeration<NetworkInterface> networkInterfaces = NetworkInterface.getNetworkInterfaces();
-            while (networkInterfaces.hasMoreElements()) {
-                final NetworkInterface networkInterface;
-                if (!(networkInterface = networkInterfaces.nextElement()).isLoopback() && !networkInterface.isVirtual() && networkInterface.isUp()) {
-                    final Enumeration<InetAddress> inetAddresses = networkInterface.getInetAddresses();
-                    final byte[] hardwareAddress;
-                    if ((hardwareAddress = networkInterface.getHardwareAddress()) == null || networkInterface.getName().contains("docker")) {
-                        continue;
-                    }
-                    while (inetAddresses.hasMoreElements()) {
-                        final InetAddress inetAddress;
-                        if ((inetAddress = inetAddresses.nextElement()) != null && inetAddress instanceof Inet4Address) {
-                            final String a = a(inetAddress);
-                            string = String.valueOf(inetAddress.getHostAddress()) + "|" + a;
-                            if (!a.isEmpty()) {
-                                return string;
-                            }
-                            continue;
-                        }
-                    }
-                }
-            }
-        } catch (SocketException ex) {
-            //
-        }
-        return string;
-    }
-
-    private static String a(final InetAddress addr) {
-        String upperCase = "";
-        try {
-            final byte[] hardwareAddress = NetworkInterface.getByInetAddress(addr).getHardwareAddress();
-            final StringBuffer sb = new StringBuffer("");
-            for (int i = 0; i < hardwareAddress.length; ++i) {
-                if (i != 0) {
-                    sb.append("-");
-                }
-                final String hexString;
-                if ((hexString = Integer.toHexString(hardwareAddress[i] & 0xFF)).length() == 1) {
-                    sb.append("0".concat(String.valueOf(hexString)));
-                } else {
-                    sb.append(hexString);
-                }
-            }
-            upperCase = sb.toString().toUpperCase();
-        } catch (Exception ex) {
-            //
-        }
-        return upperCase;
-    }
-}
diff --git a/se-system/src/main/java/com/terra/system/entity/sys/LayerEntity.java b/se-system/src/main/java/com/terra/system/entity/sys/LayerEntity.java
new file mode 100644
index 0000000..e0bb9f1
--- /dev/null
+++ b/se-system/src/main/java/com/terra/system/entity/sys/LayerEntity.java
@@ -0,0 +1,272 @@
+package com.terra.system.entity.sys;
+
+import java.io.Serializable;
+import java.sql.Timestamp;
+
+@SuppressWarnings("ALL")
+public class LayerEntity implements Serializable {
+    private static final long serialVersionUID = -371902381708800000L;
+
+    private int id;
+
+    private int pid;
+
+    private String cnName;
+
+    private String enName;
+
+    private String url;
+
+    private int isLayer;
+
+    private int isShow;
+
+    private String icon;
+
+    private int level;
+
+    private int orderNum;
+
+    private int status;
+
+    private int data;
+
+    private String tab;
+
+    private int createUser;
+
+    private Timestamp createTime;
+
+    private int updateUser;
+
+    private Timestamp updateTime;
+
+    private String bak;
+
+    private double elev;
+
+    private int resid;
+
+    private int type;
+
+    private String proxy;
+
+    private int category;
+
+    private int flag;
+
+    private Integer pubid;
+
+    private String unit;
+
+    public LayerEntity() {
+    }
+
+    public int getId() {
+        return id;
+    }
+
+    public void setId(int id) {
+        this.id = id;
+    }
+
+    public int getPid() {
+        return pid;
+    }
+
+    public void setPid(int pid) {
+        this.pid = pid;
+    }
+
+    public String getCnName() {
+        return cnName;
+    }
+
+    public void setCnName(String cnName) {
+        this.cnName = cnName;
+    }
+
+    public String getEnName() {
+        return enName;
+    }
+
+    public void setEnName(String enName) {
+        this.enName = enName;
+    }
+
+    public String getUrl() {
+        return url;
+    }
+
+    public void setUrl(String url) {
+        this.url = url;
+    }
+
+    public int getIsLayer() {
+        return isLayer;
+    }
+
+    public void setIsLayer(int isLayer) {
+        this.isLayer = isLayer;
+    }
+
+    public int getIsShow() {
+        return isShow;
+    }
+
+    public void setIsShow(int isShow) {
+        this.isShow = isShow;
+    }
+
+    public String getIcon() {
+        return icon;
+    }
+
+    public void setIcon(String icon) {
+        this.icon = icon;
+    }
+
+    public int getLevel() {
+        return level;
+    }
+
+    public void setLevel(int level) {
+        this.level = level;
+    }
+
+    public int getOrderNum() {
+        return orderNum;
+    }
+
+    public void setOrderNum(int orderNum) {
+        this.orderNum = orderNum;
+    }
+
+    public int getStatus() {
+        return status;
+    }
+
+    public void setStatus(int status) {
+        this.status = status;
+    }
+
+    public int getData() {
+        return data;
+    }
+
+    public void setData(int data) {
+        this.data = data;
+    }
+
+    public String getTab() {
+        return tab;
+    }
+
+    public void setTab(String tab) {
+        this.tab = tab;
+    }
+
+    public int getCreateUser() {
+        return createUser;
+    }
+
+    public void setCreateUser(int createUser) {
+        this.createUser = createUser;
+    }
+
+    public Timestamp getCreateTime() {
+        return createTime;
+    }
+
+    public void setCreateTime(Timestamp createTime) {
+        this.createTime = createTime;
+    }
+
+    public int getUpdateUser() {
+        return updateUser;
+    }
+
+    public void setUpdateUser(int updateUser) {
+        this.updateUser = updateUser;
+    }
+
+    public Timestamp getUpdateTime() {
+        return updateTime;
+    }
+
+    public void setUpdateTime(Timestamp updateTime) {
+        this.updateTime = updateTime;
+    }
+
+    public String getBak() {
+        return bak;
+    }
+
+    public void setBak(String bak) {
+        this.bak = bak;
+    }
+
+    public double getElev() {
+        return elev;
+    }
+
+    public void setElev(double elev) {
+        this.elev = elev;
+    }
+
+    public int getResid() {
+        return resid;
+    }
+
+    public void setResid(int resid) {
+        this.resid = resid;
+    }
+
+    public int getType() {
+        return type;
+    }
+
+    public void setType(int type) {
+        this.type = type;
+    }
+
+    public String getProxy() {
+        return proxy;
+    }
+
+    public void setProxy(String proxy) {
+        this.proxy = proxy;
+    }
+
+    public int getCategory() {
+        return category;
+    }
+
+    public void setCategory(int category) {
+        this.category = category;
+    }
+
+    public int getFlag() {
+        return flag;
+    }
+
+    public void setFlag(int flag) {
+        this.flag = flag;
+    }
+
+    public Integer getPubid() {
+        return pubid;
+    }
+
+    public void setPubid(Integer pubid) {
+        this.pubid = pubid;
+    }
+
+    public String getUnit() {
+        return unit;
+    }
+
+    public void setUnit(String unit) {
+        this.unit = unit;
+    }
+}
diff --git a/se-system/src/main/java/com/terra/system/entity/sys/RoleLayerEntity.java b/se-system/src/main/java/com/terra/system/entity/sys/RoleLayerEntity.java
new file mode 100644
index 0000000..828ccc1
--- /dev/null
+++ b/se-system/src/main/java/com/terra/system/entity/sys/RoleLayerEntity.java
@@ -0,0 +1,142 @@
+package com.terra.system.entity.sys;
+
+import java.io.Serializable;
+import java.sql.Timestamp;
+
+@SuppressWarnings("ALL")
+public class RoleLayerEntity implements Serializable {
+    private static final long serialVersionUID = -773018130926889472L;
+
+    private Integer id;
+
+    private int roleid;
+
+    private int layerid;
+
+    private int createUser;
+
+    private Timestamp createTime;
+
+    private int updateUser;
+
+    private Timestamp updateTime;
+
+    private String cnName;
+
+    private String enName;
+
+    private Integer isLayer;
+
+    private Integer pid;
+
+    private Integer level;
+
+    private Integer orderNum;
+
+    public RoleLayerEntity() {
+    }
+
+    public Integer getId() {
+        return id;
+    }
+
+    public void setId(Integer id) {
+        this.id = id;
+    }
+
+    public int getRoleid() {
+        return roleid;
+    }
+
+    public void setRoleid(int roleid) {
+        this.roleid = roleid;
+    }
+
+    public int getLayerid() {
+        return layerid;
+    }
+
+    public void setLayerid(int layerid) {
+        this.layerid = layerid;
+    }
+
+    public int getCreateUser() {
+        return createUser;
+    }
+
+    public void setCreateUser(int createUser) {
+        this.createUser = createUser;
+    }
+
+    public Timestamp getCreateTime() {
+        return createTime;
+    }
+
+    public void setCreateTime(Timestamp createTime) {
+        this.createTime = createTime;
+    }
+
+    public int getUpdateUser() {
+        return updateUser;
+    }
+
+    public void setUpdateUser(int updateUser) {
+        this.updateUser = updateUser;
+    }
+
+    public Timestamp getUpdateTime() {
+        return updateTime;
+    }
+
+    public void setUpdateTime(Timestamp updateTime) {
+        this.updateTime = updateTime;
+    }
+
+    public String getCnName() {
+        return cnName;
+    }
+
+    public void setCnName(String cnName) {
+        this.cnName = cnName;
+    }
+
+    public String getEnName() {
+        return enName;
+    }
+
+    public void setEnName(String enName) {
+        this.enName = enName;
+    }
+
+    public Integer getIsLayer() {
+        return isLayer;
+    }
+
+    public void setIsLayer(Integer isLayer) {
+        this.isLayer = isLayer;
+    }
+
+    public Integer getPid() {
+        return pid;
+    }
+
+    public void setPid(Integer pid) {
+        this.pid = pid;
+    }
+
+    public Integer getLevel() {
+        return level;
+    }
+
+    public void setLevel(Integer level) {
+        this.level = level;
+    }
+
+    public Integer getOrderNum() {
+        return orderNum;
+    }
+
+    public void setOrderNum(Integer orderNum) {
+        this.orderNum = orderNum;
+    }
+}
diff --git a/se-system/src/main/java/com/terra/system/mapper/all/PermsMapper.java b/se-system/src/main/java/com/terra/system/mapper/all/PermsMapper.java
index d787a42..0120571 100644
--- a/se-system/src/main/java/com/terra/system/mapper/all/PermsMapper.java
+++ b/se-system/src/main/java/com/terra/system/mapper/all/PermsMapper.java
@@ -2,8 +2,8 @@
 
 import com.terra.system.entity.all.MenusAuthEntity;
 import com.terra.system.entity.all.PermsAuthEntity;
-import com.terra.system.entity.all.ResAuthEntity;
 import com.terra.system.entity.sys.MenuEntity;
+import com.terra.system.entity.sys.ResEntity;
 import org.apache.ibatis.annotations.Mapper;
 import org.springframework.stereotype.Repository;
 
@@ -16,13 +16,9 @@
 @Mapper
 @Repository
 public interface PermsMapper {
-    /**
-     * 鏍规嵁鐢ㄦ埛Uid鏌ヨ璧勬簮鎺堟潈
-     *
-     * @param uid
-     * @return
-     */
-    public List<ResAuthEntity> selectRes(String uid);
+    public List<ResEntity> selectRes(String uid);
+
+    public List<ResEntity> selectAllRes();
 
     /**
      * 鏍规嵁鐢ㄦ埛Uid鏌ヨ鑿滃崟鎺堟潈
diff --git a/se-system/src/main/java/com/terra/system/mapper/data/LayerMapper.java b/se-system/src/main/java/com/terra/system/mapper/data/LayerMapper.java
index 35a938b..b97c44b 100644
--- a/se-system/src/main/java/com/terra/system/mapper/data/LayerMapper.java
+++ b/se-system/src/main/java/com/terra/system/mapper/data/LayerMapper.java
@@ -13,84 +13,33 @@
 @Mapper
 @Repository
 public interface LayerMapper {
-    /**
-     * 鏌ヨ璁板綍鏁�
-     *
-     * @param cnName 涓枃鍚嶇О
-     * @return 璁板綍鏁�
-     */
-    public Integer selectCount(String cnName);
+    public List<LayerEntity> selectLayers(String uid);
 
-    /**
-     * 鍒嗛〉鏌ヨ
-     *
-     * @param cnName   涓枃鍚嶇О
-     * @param limit  璁板綍鏁�
-     * @param offset 鍋忕Щ閲�
-     * @return 鍒楄〃
-     */
-    public List<LayerEntity> selectByPage(String cnName, Integer limit, Integer offset);
+    public List<LayerEntity> selectProjectLayers(String uid);
 
-    /**
-     * 鏌ヨ鎵�鏈�
-     *
-     * @return
-     */
-    public List<LayerEntity> selectAll();
+    public Integer selectCount(String name);
 
-    /**
-     * 鏍规嵁ID鏌ヨ
-     *
-     * @param id
-     * @return
-     */
+    public List<LayerEntity> selectByPage(String name, Integer limit, Integer offset);
+
+    public List<LayerEntity> selectAll(Integer flag);
+
     public LayerEntity selectById(int id);
 
-    /**
-     * 鎻掑叆涓�鏉�
-     *
-     * @param entity
-     * @return
-     */
+    public Integer selectIdByName(String name);
+
+    public Integer selectMaxOrderNumByPid(Integer pid);
+
+    public LayerEntity selectByResId(Integer resid);
+
     public Integer insert(LayerEntity entity);
 
-    /**
-     * 鎻掑叆澶氭潯
-     *
-     * @param list
-     * @return
-     */
     public Integer inserts(List<LayerEntity> list);
 
-    /**
-     * 鍒犻櫎涓�鏉�
-     *
-     * @param id
-     * @return
-     */
     public Integer delete(int id);
 
-    /**
-     * 鍒犻櫎澶氭潯
-     *
-     * @param ids
-     * @return
-     */
     public Integer deletes(List<Integer> ids);
 
-    /**
-     * 鏇存柊涓�鏉�
-     *
-     * @param entity
-     * @return
-     */
     public Integer update(LayerEntity entity);
 
-    /**
-     * 鏇存柊澶氭潯
-     *
-     * @param list
-     * @return
-     */
     public Integer updates(List<LayerEntity> list);
 }
diff --git a/se-system/src/main/java/com/terra/system/mapper/sys/LayerMapper.java b/se-system/src/main/java/com/terra/system/mapper/sys/LayerMapper.java
new file mode 100644
index 0000000..bc691db
--- /dev/null
+++ b/se-system/src/main/java/com/terra/system/mapper/sys/LayerMapper.java
@@ -0,0 +1,42 @@
+package com.terra.system.mapper.sys;
+
+import com.terra.system.entity.sys.LayerEntity;
+import org.apache.ibatis.annotations.Mapper;
+import org.springframework.stereotype.Repository;
+
+import java.util.List;
+
+@Mapper
+@Repository
+@SuppressWarnings("ALL")
+public interface LayerMapper {
+    public List<LayerEntity> selectLayers(String uid);
+
+    public List<LayerEntity> selectProjectLayers(String uid);
+
+    public Integer selectCount(String name);
+
+    public List<LayerEntity> selectByPage(String name, Integer limit, Integer offset);
+
+    public List<LayerEntity> selectAll(Integer flag);
+
+    public LayerEntity selectById(int id);
+
+    public Integer selectIdByName(String name);
+
+    public Integer selectMaxOrderNumByPid(Integer pid);
+
+    public LayerEntity selectByResId(Integer resid);
+
+    public Integer insert(LayerEntity entity);
+
+    public Integer inserts(List<LayerEntity> list);
+
+    public Integer delete(int id);
+
+    public Integer deletes(List<Integer> ids);
+
+    public Integer update(LayerEntity entity);
+
+    public Integer updates(List<LayerEntity> list);
+}
diff --git a/se-system/src/main/java/com/terra/system/mapper/sys/RoleLayerMapper.java b/se-system/src/main/java/com/terra/system/mapper/sys/RoleLayerMapper.java
new file mode 100644
index 0000000..87687e9
--- /dev/null
+++ b/se-system/src/main/java/com/terra/system/mapper/sys/RoleLayerMapper.java
@@ -0,0 +1,34 @@
+package com.terra.system.mapper.sys;
+
+import com.terra.system.entity.sys.RoleLayerEntity;
+import org.apache.ibatis.annotations.Mapper;
+import org.springframework.stereotype.Repository;
+
+import java.util.List;
+
+@Mapper
+@Repository
+@SuppressWarnings("ALL")
+public interface RoleLayerMapper {
+    public List<RoleLayerEntity> selectLayersByRole(Integer roleid);
+
+    public Integer selectCount(Integer roleid);
+
+    public List<RoleLayerEntity> selectByPage(Integer roleid, Integer limit, Integer offset);
+
+    public List<RoleLayerEntity> selectAll();
+
+    public RoleLayerEntity selectById(int id);
+
+    public Integer insert(RoleLayerEntity entity);
+
+    public Integer inserts(List<RoleLayerEntity> list);
+
+    public Integer delete(int id);
+
+    public Integer deletes(List<Integer> ids);
+
+    public Integer update(RoleLayerEntity entity);
+
+    public Integer updates(List<RoleLayerEntity> list);
+}
diff --git a/se-system/src/main/java/com/terra/system/mapper/sys/RoleResMapper.java b/se-system/src/main/java/com/terra/system/mapper/sys/RoleResMapper.java
index d55f3fa..b9988b6 100644
--- a/se-system/src/main/java/com/terra/system/mapper/sys/RoleResMapper.java
+++ b/se-system/src/main/java/com/terra/system/mapper/sys/RoleResMapper.java
@@ -13,84 +13,25 @@
 @Mapper
 @Repository
 public interface RoleResMapper {
-    /**
-     * 鏌ヨ璁板綍鏁�
-     *
-     * @param roleid 瑙掕壊ID
-     * @return 璁板綍鏁�
-     */
+    public List<RoleResEntity> selectResByRole(Integer roleid);
+
     public Integer selectCount(Integer roleid);
 
-    /**
-     * 鍒嗛〉鏌ヨ
-     *
-     * @param roleid   瑙掕壊ID
-     * @param limit  璁板綍鏁�
-     * @param offset 鍋忕Щ閲�
-     * @return 鍒楄〃
-     */
     public List<RoleResEntity> selectByPage(Integer roleid, Integer limit, Integer offset);
 
-    /**
-     * 鏌ヨ鎵�鏈�
-     *
-     * @return
-     */
     public List<RoleResEntity> selectAll();
 
-    /**
-     * 鏍规嵁ID鏌ヨ
-     *
-     * @param id
-     * @return
-     */
     public RoleResEntity selectById(int id);
 
-    /**
-     * 鎻掑叆涓�鏉�
-     *
-     * @param entity
-     * @return
-     */
     public Integer insert(RoleResEntity entity);
 
-    /**
-     * 鎻掑叆澶氭潯
-     *
-     * @param list
-     * @return
-     */
     public Integer inserts(List<RoleResEntity> list);
 
-    /**
-     * 鍒犻櫎涓�鏉�
-     *
-     * @param id
-     * @return
-     */
     public Integer delete(int id);
 
-    /**
-     * 鍒犻櫎澶氭潯
-     *
-     * @param ids
-     * @return
-     */
     public Integer deletes(List<Integer> ids);
 
-    /**
-     * 鏇存柊涓�鏉�
-     *
-     * @param entity
-     * @return
-     */
     public Integer update(RoleResEntity entity);
 
-    /**
-     * 鏇存柊澶氭潯
-     *
-     * @param list
-     * @return
-     */
     public Integer updates(List<RoleResEntity> list);
 }
diff --git a/se-system/src/main/java/com/terra/system/service/all/PermsService.java b/se-system/src/main/java/com/terra/system/service/all/PermsService.java
index 6ee3538..b0077f7 100644
--- a/se-system/src/main/java/com/terra/system/service/all/PermsService.java
+++ b/se-system/src/main/java/com/terra/system/service/all/PermsService.java
@@ -2,6 +2,7 @@
 
 import com.terra.system.entity.all.*;
 import com.terra.system.entity.sys.MenuEntity;
+import com.terra.system.entity.sys.ResEntity;
 import com.terra.system.mapper.all.PermsMapper;
 import org.springframework.stereotype.Service;
 
@@ -22,14 +23,23 @@
     RedisService redisService;
 
     @Override
-    public List<ResAuthEntity> selectRes(String uid) {
+    public List<ResEntity> selectRes(String uid) {
+        return selectResByUid(uid, false);
+    }
+
+    @Override
+    public List<ResEntity> selectAllRes() {
+        return selectResByUid(StaticData.ADMIN, true);
+    }
+
+    private List<ResEntity> selectResByUid(String uid, boolean isAll) {
         String key = RedisCacheKey.permsResKey(uid);
         Object obj = redisService.get(key);
         if (obj instanceof List<?>) {
-            return (List<ResAuthEntity>) obj;
+            return (List<ResEntity>) obj;
         }
 
-        List<ResAuthEntity> list = permsMapper.selectRes(uid);
+        List<ResEntity> list = isAll ? permsMapper.selectAllRes() : permsMapper.selectRes(uid);
         if (list != null && list.size() > 0) {
             redisService.put(key, list, SettingData.CACHE_EXPIRE, TimeUnit.MINUTES);
         }
@@ -46,7 +56,7 @@
         }
 
         List<MenusAuthEntity> list = permsMapper.selectMenus(uid);
-        if (list != null && list.size() > 0) {
+        if (list != null && !list.isEmpty()) {
             redisService.put(key, list, SettingData.CACHE_EXPIRE, TimeUnit.MINUTES);
         }
 
@@ -62,7 +72,7 @@
         }
 
         List<String> list = permsMapper.selectPerms(uid);
-        if (list != null && list.size() > 0) {
+        if (list != null && !list.isEmpty()) {
             redisService.put(key, list, SettingData.CACHE_EXPIRE, TimeUnit.MINUTES);
         }
 
@@ -78,7 +88,7 @@
         }
 
         List<PermsAuthEntity> list = permsMapper.selectPermsEntity(uid);
-        if (list != null && list.size() > 0) {
+        if (list != null && !list.isEmpty()) {
             redisService.put(key, list, SettingData.CACHE_EXPIRE, TimeUnit.MINUTES);
         }
 
diff --git a/se-system/src/main/java/com/terra/system/service/all/TestService.java b/se-system/src/main/java/com/terra/system/service/all/TestService.java
index 7c5a6d6..3a1eaef 100644
--- a/se-system/src/main/java/com/terra/system/service/all/TestService.java
+++ b/se-system/src/main/java/com/terra/system/service/all/TestService.java
@@ -10,6 +10,7 @@
 import com.terra.system.entity.ctrl.CountEntity;
 import com.terra.system.entity.data.MetaEntity;
 import com.terra.system.entity.data.MetaFileEntity;
+import com.terra.system.entity.sys.ResEntity;
 import com.terra.system.helper.*;
 import com.terra.system.service.data.MetaService;
 import com.terra.system.service.data.UploadService;
@@ -174,8 +175,8 @@
     }
 
     public void testPerms() {
-        List<ResAuthEntity> raeList = permsService.selectRes("admin");
-        List<ResAuthEntity> raeList2 = permsService.selectRes("admin");
+        List<ResEntity> raeList = permsService.selectRes("admin");
+        List<ResEntity> raeList2 = permsService.selectRes("admin");
 
         List<MenusAuthEntity> maeList = permsService.selectMenus("admin");
         List<MenusAuthEntity> maeList2 = permsService.selectMenus("admin");
diff --git a/se-system/src/main/java/com/terra/system/service/data/LayerService.java b/se-system/src/main/java/com/terra/system/service/data/LayerService.java
index e331cb8..ccdb29b 100644
--- a/se-system/src/main/java/com/terra/system/service/data/LayerService.java
+++ b/se-system/src/main/java/com/terra/system/service/data/LayerService.java
@@ -1,6 +1,7 @@
 package com.terra.system.service.data;
 
 import com.terra.system.entity.all.RedisCacheKey;
+import com.terra.system.entity.all.SettingData;
 import com.terra.system.entity.data.LayerEntity;
 import com.terra.system.helper.StringHelper;
 import com.terra.system.mapper.data.LayerMapper;
@@ -9,6 +10,7 @@
 
 import javax.annotation.Resource;
 import java.util.List;
+import java.util.concurrent.TimeUnit;
 
 /**
  * 鍥惧眰
@@ -23,41 +25,75 @@
     RedisService redisService;
 
     @Override
-    public Integer selectCount(String cnName) {
-        cnName = StringHelper.getLikeUpperStr(cnName);
+    public List<LayerEntity> selectLayers(String uid) {
+        String key = RedisCacheKey.permsLayerKey(uid);
+        Object obj = redisService.get(key);
+        if (obj instanceof List<?>) {
+            return (List<LayerEntity>) obj;
+        }
 
-        return layerMapper.selectCount(cnName);
-    }
-
-    @Override
-    public List<LayerEntity> selectByPage(String cnName, Integer limit, Integer offset) {
-        cnName = StringHelper.getLikeUpperStr(cnName);
-
-        return layerMapper.selectByPage(cnName, limit, offset);
-    }
-
-    @Override
-    public List<LayerEntity> selectAll() {
-        String key = RedisCacheKey.permsLayerKey("selectAll");
-        List<LayerEntity> list = redisService.getListByKey(key);
-        if (null == list) {
-            list = layerMapper.selectAll();
-            redisService.saveListByKey(key, list);
+        List<LayerEntity> list = layerMapper.selectLayers(uid);
+        if (list != null && list.size() > 0) {
+            redisService.put(key, list, SettingData.CACHE_EXPIRE, TimeUnit.MINUTES);
         }
 
         return list;
     }
 
-    /**
-     * 娓呴櫎缂撳瓨
-     */
-    public void clearCache() {
-        redisService.clearKeys(RedisCacheKey.permsLayerKey(""));
+    @Override
+    public List<LayerEntity> selectProjectLayers(String uid) {
+        String key = RedisCacheKey.permsProjectLayerKey(uid);
+        Object obj = redisService.get(key);
+        if (obj instanceof List<?>) {
+            return (List<LayerEntity>) obj;
+        }
+
+        List<LayerEntity> list = layerMapper.selectProjectLayers(uid);
+        if (list != null && list.size() > 0) {
+            redisService.put(key, list, SettingData.CACHE_EXPIRE, TimeUnit.MINUTES);
+        }
+
+        return list;
+    }
+
+    @Override
+    public Integer selectCount(String name) {
+        name = StringHelper.getLikeUpperStr(name);
+
+        return layerMapper.selectCount(name);
+    }
+
+    @Override
+    public List<LayerEntity> selectByPage(String name, Integer limit, Integer offset) {
+        name = StringHelper.getLikeUpperStr(name);
+
+        return layerMapper.selectByPage(name, limit, offset);
+    }
+
+    @Override
+    public List<LayerEntity> selectAll(Integer flag) {
+        return layerMapper.selectAll(flag);
     }
 
     @Override
     public LayerEntity selectById(int id) {
         return layerMapper.selectById(id);
+    }
+
+    @Override
+    public Integer selectIdByName(String name) {
+        Integer id = layerMapper.selectIdByName(name);
+        return null == id ? 0 : id;
+    }
+
+    @Override
+    public Integer selectMaxOrderNumByPid(Integer pid) {
+        return layerMapper.selectMaxOrderNumByPid(pid);
+    }
+
+    @Override
+    public LayerEntity selectByResId(Integer resid) {
+        return layerMapper.selectByResId(resid);
     }
 
     @Override
@@ -89,4 +125,11 @@
     public Integer updates(List<LayerEntity> list) {
         return layerMapper.updates(list);
     }
+
+    /**
+     * 娓呴櫎缂撳瓨
+     */
+    public void clearCache() {
+        redisService.clearKeys(RedisCacheKey.permsLayerKey(""));
+    }
 }
diff --git a/se-system/src/main/java/com/terra/system/service/sys/LayerService.java b/se-system/src/main/java/com/terra/system/service/sys/LayerService.java
new file mode 100644
index 0000000..15c9b5c
--- /dev/null
+++ b/se-system/src/main/java/com/terra/system/service/sys/LayerService.java
@@ -0,0 +1,125 @@
+package com.terra.system.service.sys;
+
+import com.terra.system.entity.all.RedisCacheKey;
+import com.terra.system.entity.all.SettingData;
+import com.terra.system.entity.sys.LayerEntity;
+import com.terra.system.helper.StringHelper;
+import com.terra.system.mapper.sys.LayerMapper;
+import com.terra.system.service.all.RedisService;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+import java.util.List;
+import java.util.concurrent.TimeUnit;
+
+@Service
+@SuppressWarnings("ALL")
+public class LayerService implements LayerMapper {
+    @Resource
+    LayerMapper layerMapper;
+
+    @Resource
+    RedisService redisService;
+
+    @Override
+    public List<LayerEntity> selectLayers(String uid) {
+        String key = RedisCacheKey.permsLayerKey(uid);
+        Object obj = redisService.get(key);
+        if (obj instanceof List<?>) {
+            return (List<LayerEntity>) obj;
+        }
+
+        List<LayerEntity> list = layerMapper.selectLayers(uid);
+        if (list != null && list.size() > 0) {
+            redisService.put(key, list, SettingData.CACHE_EXPIRE, TimeUnit.MINUTES);
+        }
+
+        return list;
+    }
+
+    @Override
+    public List<LayerEntity> selectProjectLayers(String uid) {
+        String key = RedisCacheKey.permsProjectLayerKey(uid);
+        Object obj = redisService.get(key);
+        if (obj instanceof List<?>) {
+            return (List<LayerEntity>) obj;
+        }
+
+        List<LayerEntity> list = layerMapper.selectProjectLayers(uid);
+        if (list != null && list.size() > 0) {
+            redisService.put(key, list, SettingData.CACHE_EXPIRE, TimeUnit.MINUTES);
+        }
+
+        return list;
+    }
+
+    @Override
+    public Integer selectCount(String name) {
+        name = StringHelper.getLikeUpperStr(name);
+
+        return layerMapper.selectCount(name);
+    }
+
+    @Override
+    public List<LayerEntity> selectByPage(String name, Integer limit, Integer offset) {
+        name = StringHelper.getLikeUpperStr(name);
+
+        return layerMapper.selectByPage(name, limit, offset);
+    }
+
+    @Override
+    public List<LayerEntity> selectAll(Integer flag) {
+        return layerMapper.selectAll(flag);
+    }
+
+    @Override
+    public LayerEntity selectById(int id) {
+        return layerMapper.selectById(id);
+    }
+
+    @Override
+    public Integer selectIdByName(String name) {
+        Integer id = layerMapper.selectIdByName(name);
+        return null == id ? 0 : id;
+    }
+
+    @Override
+    public Integer selectMaxOrderNumByPid(Integer pid) {
+        return layerMapper.selectMaxOrderNumByPid(pid);
+    }
+
+    @Override
+    public LayerEntity selectByResId(Integer resid) {
+        return layerMapper.selectByResId(resid);
+    }
+
+    @Override
+    public Integer insert(LayerEntity entity) {
+        return layerMapper.insert(entity);
+    }
+
+    @Override
+    public Integer inserts(List<LayerEntity> list) {
+        return layerMapper.inserts(list);
+    }
+
+    @Override
+    public Integer delete(int id) {
+        return layerMapper.delete(id);
+    }
+
+    @Override
+    public Integer deletes(List<Integer> ids) {
+        return layerMapper.deletes(ids);
+    }
+
+    @Override
+    public Integer update(LayerEntity entity) {
+        return layerMapper.update(entity);
+    }
+
+    @Override
+    public Integer updates(List<LayerEntity> list) {
+        return layerMapper.updates(list);
+    }
+}
diff --git a/se-system/src/main/java/com/terra/system/service/sys/RoleLayerService.java b/se-system/src/main/java/com/terra/system/service/sys/RoleLayerService.java
new file mode 100644
index 0000000..f650fdd
--- /dev/null
+++ b/se-system/src/main/java/com/terra/system/service/sys/RoleLayerService.java
@@ -0,0 +1,71 @@
+package com.terra.system.service.sys;
+
+import com.terra.system.entity.sys.RoleLayerEntity;
+import com.terra.system.helper.StringHelper;
+import com.terra.system.mapper.sys.RoleLayerMapper;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+@Service
+@SuppressWarnings("ALL")
+public class RoleLayerService implements RoleLayerMapper {
+    @Autowired
+    RoleLayerMapper roleLayerMapper;
+
+    @Override
+    public List<RoleLayerEntity> selectLayersByRole(Integer roleid) {
+        return roleLayerMapper.selectLayersByRole(roleid);
+    }
+
+    @Override
+    public Integer selectCount(Integer roleid) {
+        return roleLayerMapper.selectCount(roleid);
+    }
+
+    @Override
+    public List<RoleLayerEntity> selectByPage(Integer roleid, Integer limit, Integer offset) {
+        return roleLayerMapper.selectByPage(roleid, limit, offset);
+    }
+
+    @Override
+    public List<RoleLayerEntity> selectAll() {
+        return roleLayerMapper.selectAll();
+    }
+
+    @Override
+    public RoleLayerEntity selectById(int id) {
+        return roleLayerMapper.selectById(id);
+    }
+
+    @Override
+    public Integer insert(RoleLayerEntity entity) {
+        return roleLayerMapper.insert(entity);
+    }
+
+    @Override
+    public Integer inserts(List<RoleLayerEntity> list) {
+        return roleLayerMapper.inserts(list);
+    }
+
+    @Override
+    public Integer delete(int id) {
+        return roleLayerMapper.delete(id);
+    }
+
+    @Override
+    public Integer deletes(List<Integer> ids) {
+        return roleLayerMapper.deletes(ids);
+    }
+
+    @Override
+    public Integer update(RoleLayerEntity entity) {
+        return roleLayerMapper.update(entity);
+    }
+
+    @Override
+    public Integer updates(List<RoleLayerEntity> list) {
+        return roleLayerMapper.updates(list);
+    }
+}
diff --git a/se-system/src/main/java/com/terra/system/service/sys/RoleResService.java b/se-system/src/main/java/com/terra/system/service/sys/RoleResService.java
index 04bc26d..435f819 100644
--- a/se-system/src/main/java/com/terra/system/service/sys/RoleResService.java
+++ b/se-system/src/main/java/com/terra/system/service/sys/RoleResService.java
@@ -17,6 +17,11 @@
     RoleResMapper roleResMapper;
 
     @Override
+    public List<RoleResEntity> selectResByRole(Integer roleid) {
+        return roleResMapper.selectResByRole(roleid);
+    }
+
+    @Override
     public Integer selectCount(Integer roleid) {
         return roleResMapper.selectCount(roleid);
     }
diff --git a/se-system/src/main/resources/mapper/all/PermsMapper.xml b/se-system/src/main/resources/mapper/all/PermsMapper.xml
index ba8258e..4366d99 100644
--- a/se-system/src/main/resources/mapper/all/PermsMapper.xml
+++ b/se-system/src/main/resources/mapper/all/PermsMapper.xml
@@ -1,18 +1,27 @@
 <?xml version="1.0" encoding="UTF-8" ?>
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="com.terra.system.mapper.all.PermsMapper">
-    <select id="selectRes" resultType="com.terra.system.entity.all.ResAuthEntity">
-        select distinct d.id,d.name,d.server
+    <select id="selectRes" resultType="com.terra.system.entity.sys.ResEntity">
+        select distinct e.*
         from lf.sys_user a
-            inner join lf.sys_role_user b on a.id = b.userid
-            inner join lf.sys_role_res c on b.roleid = c.roleid
-            inner join lf.sys_res d on c.resid = d.id
+        inner join lf.sys_role_user b on a.id = b.userid
+        inner join lf.sys_role_layer c on b.roleid = c.roleid
+        inner join lf.sys_layer d on c.layerid = d.id
+        inner join lf.sys_res e on d.resid = e.id
         <where>
+            d.status between 1 and 2 and e.status between 1 and 2
             <if test="uid != null">
-                a.uid = #{uid}
+                and a.uid = #{uid}
             </if>
         </where>
-        order by d.id
+        order by e.id;
+    </select>
+
+    <select id="selectAllRes" resultType="com.terra.system.entity.sys.ResEntity">
+        select e.*
+        from lf.sys_res e
+        where e.status between 1 and 2
+        order by e.id;
     </select>
 
     <select id="selectMenus" resultType="com.terra.system.entity.all.MenusAuthEntity">
diff --git a/se-system/src/main/resources/mapper/data/LayerMapper.xml b/se-system/src/main/resources/mapper/data/LayerMapper.xml
index 7eaabd6..11eb882 100644
--- a/se-system/src/main/resources/mapper/data/LayerMapper.xml
+++ b/se-system/src/main/resources/mapper/data/LayerMapper.xml
@@ -1,51 +1,98 @@
 <?xml version="1.0" encoding="UTF-8" ?>
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="com.terra.system.mapper.data.LayerMapper">
+    <select id="selectLayers" resultType="com.terra.system.entity.sys.LayerEntity">
+        select distinct d.*, e.proxy, e.pubid
+        from lf.sys_user a
+        inner join lf.sys_role_user b on a.id = b.userid
+        inner join lf.sys_role_layer c on b.roleid = c.roleid
+        inner join lf.sys_layer d on c.layerid = d.id
+        left join lf.sys_res e on d.resid = e.id and e.status = 2
+        <where>
+            d.status = 1 and d.flag = 0
+            <if test="uid != null">
+                and a.uid = #{uid}
+            </if>
+        </where>
+        order by d.id;
+    </select>
+
+    <select id="selectProjectLayers" resultType="com.terra.system.entity.sys.LayerEntity">
+        select distinct d.*, e.proxy
+        from lf.sys_user a
+        inner join lf.sys_role_user b on a.id = b.userid
+        inner join lf.sys_role_layer c on b.roleid = c.roleid
+        inner join lf.sys_layer d on c.layerid = d.id
+        left join lf.sys_res e on d.resid = e.id and e.status = 2
+        <where>
+            d.status = 1 and d.flag = 1
+            <if test="uid != null">
+                and a.uid = #{uid}
+            </if>
+        </where>
+        order by d.id;
+    </select>
+
     <select id="selectCount" resultType="java.lang.Integer">
         select count(*) from lf.sys_layer
         <where>
-            <if test="cnName != null">
-                upper(cn_name) like #{cnName}
+            <if test="name != null">
+                upper(cn_name) like #{name} or upper(en_name) like #{name}
             </if>
         </where>
     </select>
 
-    <select id="selectByPage" resultType="com.terra.system.entity.data.LayerEntity">
+    <select id="selectByPage" resultType="com.terra.system.entity.sys.LayerEntity">
         select * from lf.sys_layer
         <where>
-            <if test="cnName != null">
-                upper(cn_name) like #{cnName}
+            <if test="name != null">
+                upper(cn_name) like #{name} or upper(en_name) like #{name}
             </if>
         </where>
-        order by id
+        order by id desc
         limit #{limit} offset #{offset}
     </select>
 
-    <select id="selectAll" resultType="com.terra.system.entity.data.LayerEntity">
-        select a.*,
-			(select ns from lf.sys_dict b where b.field = 'gid' and b.tab = a.en_name) "ns",
-			(select json from lf.sys_publish c where c.id = a.pubid)
-        from lf.sys_layer a
-        order by id;
+    <select id="selectAll" resultType="com.terra.system.entity.sys.LayerEntity">
+        select *
+        from lf.sys_layer
+        <where>
+            <if test="flag != null">
+                flag = #{flag}
+            </if>
+        </where>
+        order by id desc;
     </select>
 
-    <select id="selectById" resultType="com.terra.system.entity.data.LayerEntity">
+    <select id="selectById" resultType="com.terra.system.entity.sys.LayerEntity">
         select * from lf.sys_layer where id = #{id}
     </select>
 
-    <insert id="insert" parameterType="com.terra.system.entity.data.LayerEntity">
+    <select id="selectIdByName" resultType="java.lang.Integer">
+        select id from lf.sys_dir where name = #{name};
+    </select>
+
+    <select id="selectMaxOrderNumByPid" resultType="java.lang.Integer">
+        select coalesce(max(order_num), 0) + 1 from lf.sys_layer where pid = #{pid};
+    </select>
+
+    <select id="selectByResId" resultType="com.terra.system.entity.sys.LayerEntity">
+        select * from lf.sys_layer where resid = #{resid} limit 1;
+    </select>
+
+    <insert id="insert" parameterType="com.terra.system.entity.sys.LayerEntity">
         insert into lf.sys_layer
-        (pid,cn_name,en_name,url,test_url,type,icon,level,order_num,is_show,create_user,create_time,bak,serve_type,data_type,elev,is_project)
+        (pid,cn_name,en_name,url,is_layer,is_show,icon,level,order_num,status,create_user,create_time,bak,elev,resid,type,data,tab,category,flag,unit)
         values
-        (#{pid},#{cnName},#{enName},#{url},#{testUrl},#{type},#{icon},#{level},#{orderNum},#{isShow},#{createUser},now(),#{bak},#{serveType},#{dataType},#{elev},#{isProject})
+        (#{pid},#{cnName},#{enName},#{url},#{isLayer},#{isShow},#{icon},#{level},#{orderNum},#{status},#{createUser},now(),#{bak},#{elev},#{resid},#{type},#{data},#{tab},#{category},#{flag},#{unit})
     </insert>
 
     <insert id="inserts">
         insert into lf.sys_layer
-        (pid,cn_name,en_name,url,test_url,type,icon,level,order_num,is_show,create_user,create_time,bak,serve_type,data_type,elev,is_project)
+        (pid,cn_name,en_name,url,is_layer,is_show,icon,level,order_num,status,create_user,create_time,bak,elev,resid,type,data,tab,category,flag,unit)
         values
         <foreach collection="list" item="item" index="index" separator=",">
-            (#{item.pid},#{item.cnName},#{item.enName},#{item.url},#{item.testUrl},#{item.type},#{item.icon},#{item.level},#{item.orderNum},#{item.isShow},#{item.createUser},now(),#{item.bak},#{item.serveType},#{item.dataType},#{item.elev},#{item.isProject})
+            (#{item.pid},#{item.cnName},#{item.enName},#{item.url},#{item.isLayer},#{item.isShow},#{item.icon},#{item.level},#{item.orderNum},#{item.status},#{item.createUser},now(),#{item.bak},#{item.elev},#{item.resid},#{item.type},#{item.data},#{item.tab},#{item.category},#{item.flag},#{item.unit})
         </foreach>
     </insert>
 
@@ -62,16 +109,14 @@
 
     <update id="update">
         update lf.sys_layer
-        set pid=#{pid},cn_name=#{cnName},en_name=#{enName},url=#{url},test_url=#{testUrl},type=#{type},icon=#{icon},level=#{level},order_num=#{orderNum},is_show=#{isShow},update_user=#{updateUser},update_time=now(),bak=#{bak},serve_type=#{serveType},data_type=#{dataType},elev=#{elev},is_project=#{isProject}
+        set pid=#{pid},cn_name=#{cnName},en_name=#{enName},url=#{url},is_layer=#{isLayer},is_show=#{isShow},icon=#{icon},level=#{level},order_num=#{orderNum},status=#{status},update_user=#{updateUser},update_time=now(),bak=#{bak},elev=#{elev},resid=#{resid},type=#{type},data=#{data},tab=#{tab},category=#{category},flag=#{flag},unit=#{unit}
         where id=#{id}
     </update>
 
     <update id="updates">
         <foreach collection="list" item="item" index="index" separator=";">
             update lf.sys_layer
-            <set>
-                pid=#{item.pid},cn_name=#{item.cnName},en_name=#{item.enName},url=#{item.url},test_url=#{item.testUrl},type=#{item.type},icon=#{item.icon},level=#{item.level},order_num=#{item.orderNum},is_show=#{item.isShow},update_user=#{item.updateUser},update_time=now(),bak=#{item.bak},serve_type=#{item.serveType},data_type=#{item.dataType},elev=#{item.elev},is_project=#{item.isProject}
-            </set>
+            set pid=#{item.pid},cn_name=#{item.cnName},en_name=#{item.enName},url=#{item.url},is_layer=#{item.isLayer},is_show=#{item.isShow},icon=#{item.icon},level=#{item.level},order_num=#{item.orderNum},status=#{item.status},update_user=#{item.updateUser},update_time=now(),bak=#{item.bak},elev=#{item.elev},resid=#{item.resid},type=#{item.type},data=#{item.data},tab=#{item.tab},category=#{item.category},flag=#{item.flag},unit=#{item.unit}
             where id = #{item.id}
         </foreach>
     </update>
diff --git a/se-system/src/main/resources/mapper/sys/LayerMapper.xml b/se-system/src/main/resources/mapper/sys/LayerMapper.xml
new file mode 100644
index 0000000..2c3ddd8
--- /dev/null
+++ b/se-system/src/main/resources/mapper/sys/LayerMapper.xml
@@ -0,0 +1,123 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.terra.system.mapper.sys.LayerMapper">
+    <select id="selectLayers" resultType="com.terra.system.entity.sys.LayerEntity">
+        select distinct d.*, e.proxy, e.pubid
+        from lf.sys_user a
+            inner join lf.sys_role_user b on a.id = b.userid
+            inner join lf.sys_role_layer c on b.roleid = c.roleid
+            inner join lf.sys_layer d on c.layerid = d.id
+            left join lf.sys_res e on d.resid = e.id and e.status = 2
+        <where>
+            d.status = 1 and d.flag = 0
+            <if test="uid != null">
+                and a.uid = #{uid}
+            </if>
+        </where>
+        order by d.id;
+    </select>
+
+    <select id="selectProjectLayers" resultType="com.terra.system.entity.sys.LayerEntity">
+        select distinct d.*, e.proxy
+        from lf.sys_user a
+        inner join lf.sys_role_user b on a.id = b.userid
+        inner join lf.sys_role_layer c on b.roleid = c.roleid
+        inner join lf.sys_layer d on c.layerid = d.id
+        left join lf.sys_res e on d.resid = e.id and e.status = 2
+        <where>
+            d.status = 1 and d.flag = 1
+            <if test="uid != null">
+                and a.uid = #{uid}
+            </if>
+        </where>
+        order by d.id;
+    </select>
+
+    <select id="selectCount" resultType="java.lang.Integer">
+        select count(*) from lf.sys_layer
+        <where>
+            <if test="name != null">
+                upper(cn_name) like #{name} or upper(en_name) like #{name}
+            </if>
+        </where>
+    </select>
+
+    <select id="selectByPage" resultType="com.terra.system.entity.sys.LayerEntity">
+        select * from lf.sys_layer
+        <where>
+            <if test="name != null">
+                upper(cn_name) like #{name} or upper(en_name) like #{name}
+            </if>
+        </where>
+        order by id desc
+        limit #{limit} offset #{offset}
+    </select>
+
+    <select id="selectAll" resultType="com.terra.system.entity.sys.LayerEntity">
+        select *
+        from lf.sys_layer
+        <where>
+            <if test="flag != null">
+                flag = #{flag}
+            </if>
+        </where>
+        order by id desc;
+    </select>
+
+    <select id="selectById" resultType="com.terra.system.entity.sys.LayerEntity">
+        select * from lf.sys_layer where id = #{id}
+    </select>
+
+    <select id="selectIdByName" resultType="java.lang.Integer">
+        select id from lf.sys_dir where name = #{name};
+    </select>
+
+    <select id="selectMaxOrderNumByPid" resultType="java.lang.Integer">
+        select coalesce(max(order_num), 0) + 1 from lf.sys_layer where pid = #{pid};
+    </select>
+
+    <select id="selectByResId" resultType="com.terra.system.entity.sys.LayerEntity">
+        select * from lf.sys_layer where resid = #{resid} limit 1;
+    </select>
+
+    <insert id="insert" parameterType="com.terra.system.entity.sys.LayerEntity">
+        insert into lf.sys_layer
+        (pid,cn_name,en_name,url,is_layer,is_show,icon,level,order_num,status,create_user,create_time,bak,elev,resid,type,data,tab,category,flag,unit)
+        values
+        (#{pid},#{cnName},#{enName},#{url},#{isLayer},#{isShow},#{icon},#{level},#{orderNum},#{status},#{createUser},now(),#{bak},#{elev},#{resid},#{type},#{data},#{tab},#{category},#{flag},#{unit})
+    </insert>
+
+    <insert id="inserts">
+        insert into lf.sys_layer
+        (pid,cn_name,en_name,url,is_layer,is_show,icon,level,order_num,status,create_user,create_time,bak,elev,resid,type,data,tab,category,flag,unit)
+        values
+        <foreach collection="list" item="item" index="index" separator=",">
+            (#{item.pid},#{item.cnName},#{item.enName},#{item.url},#{item.isLayer},#{item.isShow},#{item.icon},#{item.level},#{item.orderNum},#{item.status},#{item.createUser},now(),#{item.bak},#{item.elev},#{item.resid},#{item.type},#{item.data},#{item.tab},#{item.category},#{item.flag},#{item.unit})
+        </foreach>
+    </insert>
+
+    <delete id="delete">
+        delete from lf.sys_layer where id = #{id}
+    </delete>
+
+    <delete id="deletes">
+        delete from lf.sys_layer where id in
+        <foreach item="id" collection="ids" index="index" open="(" separator="," close=")">
+            #{id}
+        </foreach>
+    </delete>
+
+    <update id="update">
+        update lf.sys_layer
+        set pid=#{pid},cn_name=#{cnName},en_name=#{enName},url=#{url},is_layer=#{isLayer},is_show=#{isShow},icon=#{icon},level=#{level},order_num=#{orderNum},status=#{status},update_user=#{updateUser},update_time=now(),bak=#{bak},elev=#{elev},resid=#{resid},type=#{type},data=#{data},tab=#{tab},category=#{category},flag=#{flag},unit=#{unit}
+        where id=#{id}
+    </update>
+
+    <update id="updates">
+        <foreach collection="list" item="item" index="index" separator=";">
+            update lf.sys_layer
+            set pid=#{item.pid},cn_name=#{item.cnName},en_name=#{item.enName},url=#{item.url},is_layer=#{item.isLayer},is_show=#{item.isShow},icon=#{item.icon},level=#{item.level},order_num=#{item.orderNum},status=#{item.status},update_user=#{item.updateUser},update_time=now(),bak=#{item.bak},elev=#{item.elev},resid=#{item.resid},type=#{item.type},data=#{item.data},tab=#{item.tab},category=#{item.category},flag=#{item.flag},unit=#{item.unit}
+            where id = #{item.id}
+        </foreach>
+    </update>
+</mapper>
\ No newline at end of file
diff --git a/se-system/src/main/resources/mapper/sys/RoleLayerMapper.xml b/se-system/src/main/resources/mapper/sys/RoleLayerMapper.xml
new file mode 100644
index 0000000..cf7d70f
--- /dev/null
+++ b/se-system/src/main/resources/mapper/sys/RoleLayerMapper.xml
@@ -0,0 +1,79 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.terra.system.mapper.sys.RoleLayerMapper">
+    <select id="selectLayersByRole" resultType="com.terra.system.entity.sys.RoleLayerEntity">
+        with rs as (select id, layerid from lf.sys_role_layer where roleid = #{roleid})
+        select (select id from rs b where b.layerid = a.id) "id", a.id "layerid", a.cn_name, a.en_name, a.is_layer, a.pid, a.level, a.order_num
+        from lf.sys_layer a
+        order by a.id;
+    </select>
+
+    <select id="selectCount" resultType="java.lang.Integer">
+        select count(*) from lf.sys_role_layer
+        <where>
+            <if test="roleid != null">
+                roleid = #{roleid}
+            </if>
+        </where>
+    </select>
+
+    <select id="selectByPage" resultType="com.terra.system.entity.sys.RoleLayerEntity">
+        select * from lf.sys_role_layer
+        <where>
+            <if test="roleid != null">
+                roleid = #{roleid}
+            </if>
+        </where>
+        order by id desc
+        limit #{limit} offset #{offset}
+    </select>
+
+    <select id="selectAll" resultType="com.terra.system.entity.sys.RoleLayerEntity">
+        select * from lf.sys_role_layer order by id desc;
+    </select>
+
+    <select id="selectById" resultType="com.terra.system.entity.sys.RoleLayerEntity">
+        select * from lf.sys_role_layer where id = #{id}
+    </select>
+
+    <insert id="insert" parameterType="com.terra.system.entity.sys.RoleLayerEntity">
+        insert into lf.sys_role_layer
+        (roleid,layerid,create_user,create_time)
+        values
+        (#{roleid},#{layerid},#{createUser},now())
+    </insert>
+
+    <insert id="inserts">
+        insert into lf.sys_role_layer
+        (roleid,layerid,create_user,create_time)
+        values
+        <foreach collection="list" item="item" index="index" separator=",">
+            (#{item.roleid},#{item.layerid},#{item.createUser},now())
+        </foreach>
+    </insert>
+
+    <delete id="delete">
+        delete from lf.sys_role_layer where id = #{id}
+    </delete>
+
+    <delete id="deletes">
+        delete from lf.sys_role_layer where id in
+        <foreach item="id" collection="ids" index="index" open="(" separator="," close=")">
+            #{id}
+        </foreach>
+    </delete>
+
+    <update id="update">
+        update lf.sys_role_layer
+        set roleid=#{roleid},layerid=#{layerid},update_user=#{updateUser},update_time=now()
+        where id=#{id}
+    </update>
+
+    <update id="updates">
+        <foreach collection="list" item="item" index="index" separator=";">
+            update lf.sys_role_layer
+            set roleid=#{item.roleid},layerid=#{item.layerid},update_user=#{item.updateUser},update_time=now()
+            where id = #{item.id}
+        </foreach>
+    </update>
+</mapper>
\ No newline at end of file
diff --git a/se-system/src/main/resources/mapper/sys/RoleResMapper.xml b/se-system/src/main/resources/mapper/sys/RoleResMapper.xml
index d923328..eb0b955 100644
--- a/se-system/src/main/resources/mapper/sys/RoleResMapper.xml
+++ b/se-system/src/main/resources/mapper/sys/RoleResMapper.xml
@@ -1,6 +1,12 @@
 <?xml version="1.0" encoding="UTF-8" ?>
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="com.terra.system.mapper.sys.RoleResMapper">
+    <select id="selectResByRole" resultType="com.terra.system.entity.sys.RoleResEntity">
+        with rs as (select id, resid from lf.sys_role_res where roleid = #{roleid})
+        select (select id from rs b where b.resid = a.id) "id", a.id "resid", a.cn_name, a.en_name, a.type, a.data, a.tab
+        from lf.sys_res a;
+    </select>
+
     <select id="selectCount" resultType="java.lang.Integer">
         select count(*) from lf.sys_role_res
         <where>
@@ -11,14 +17,14 @@
     </select>
 
     <select id="selectByPage" resultType="com.terra.system.entity.sys.RoleResEntity">
-        select a.*,b.name as resName  from lf.sys_role_res a inner join lf.sys_res b
-        on a.resid = b.id
+        select a.*
+        from lf.sys_role_res a
         <where>
             <if test="roleid != null">
                 a.roleid = #{roleid}
             </if>
         </where>
-        order by id
+        order by a.id
         limit #{limit} offset #{offset}
     </select>
 
@@ -27,14 +33,14 @@
     </select>
 
     <select id="selectById" resultType="com.terra.system.entity.sys.RoleResEntity">
-        select * from lf.sys_role_res where id = #{id}
+        select * from lf.sys_role_res where id = #{id};
     </select>
 
     <insert id="insert" parameterType="com.terra.system.entity.sys.RoleResEntity">
-       insert into lf.sys_role_res
-       (roleid,resid,create_user,create_time)
-       values
-       (#{roleid},#{resid},#{createUser},now())
+        insert into lf.sys_role_res
+        (roleid,resid,create_user,create_time)
+        values
+        (#{roleid},#{resid},#{createUser},now())
     </insert>
 
     <insert id="inserts">
@@ -58,9 +64,9 @@
     </delete>
 
     <update id="update">
-    update lf.sys_role_res
-    set roleid=#{roleid},resid=#{resid},update_user=#{updateUser},update_time=now()
-    where id=#{id}
+        update lf.sys_role_res
+        set roleid=#{roleid},resid=#{resid},update_user=#{updateUser},update_time=now()
+        where id=#{id}
     </update>
 
     <update id="updates">

--
Gitblit v1.9.3