From d63b4703ef5017a6b49571b1558f6716f55733f2 Mon Sep 17 00:00:00 2001
From: 13693261870 <252740454@qq.com>
Date: 星期一, 17 十月 2022 09:14:48 +0800
Subject: [PATCH] 1、修改所有Mapper的删除功能 2、用户添加批量修改密码功能 3、添加Java的GDAL操作类

---
 src/main/resources/mapper/sys/OperateMapper.xml                |   16 
 src/main/resources/mapper/data/StyleMapper.xml                 |    9 
 src/main/resources/mapper/sys/MsgMapper.xml                    |    4 
 data/db_tab.sql                                                |    8 
 src/main/java/com/lf/server/entity/ctrl/UserUpdateEntity.java  |   46 ++
 src/main/java/com/lf/server/mapper/sys/AuthMapper.java         |    4 
 src/main/java/com/lf/server/service/sys/TokenService.java      |    2 
 src/main/resources/mapper/sys/RoleMenuAuthMapper.xml           |    4 
 src/main/java/com/lf/server/entity/ctrl/LayerDto.java          |   50 ++
 src/main/java/com/lf/server/helper/WebHelper.java              |    4 
 src/main/java/com/lf/server/config/RestTemplateConfig.java     |    2 
 data/db_fn.sql                                                 |    2 
 src/main/resources/mapper/sys/RoleMapper.xml                   |   25 
 src/main/resources/mapper/sys/ArgsMapper.xml                   |    4 
 src/main/java/com/lf/server/controller/sys/UserController.java |   56 +--
 说明.txt                                                         |   26 +
 src/main/resources/mapper/sys/BlacklistMapper.xml              |    4 
 src/main/java/com/lf/server/mapper/sys/MenuMapper.java         |    8 
 src/main/resources/mapper/sys/MenuAuthMapper.xml               |    4 
 src/main/java/com/lf/server/mapper/sys/TokenMapper.java        |    4 
 src/main/resources/mapper/sys/AttachMapper.xml                 |    4 
 src/main/resources/mapper/sys/MenuMapper.xml                   |    5 
 src/main/resources/mapper/data/MetaFileMapper.xml              |    4 
 src/main/resources/mapper/sys/LoginMapper.xml                  |    5 
 src/main/resources/mapper/sys/RoleResMapper.xml                |    4 
 src/main/java/com/lf/server/service/sys/UserService.java       |   77 ++++
 src/main/resources/mapper/data/DownloadMapper.xml              |    4 
 src/main/java/com/lf/server/mapper/data/VerMapper.java         |    4 
 src/main/java/com/lf/server/interceptor/AuthInterceptor.java   |   31 
 src/main/java/com/lf/server/mapper/sys/ResMapper.java          |    4 
 src/main/resources/mapper/sys/ResMapper.xml                    |    6 
 pom.xml                                                        |   10 
 src/main/resources/mapper/sys/DepMapper.xml                    |   11 
 src/main/java/com/lf/server/mapper/sys/DepMapper.java          |    4 
 src/main/resources/mapper/sys/ResOpMapper.xml                  |   16 
 src/main/java/com/lf/server/mapper/sys/RoleMapper.java         |    4 
 src/main/java/com/lf/server/mapper/sys/UserMapper.java         |   10 
 src/main/resources/mapper/sys/UserMapper.xml                   |   20 
 src/main/resources/mapper/sys/AuthMapper.xml                   |    6 
 src/main/java/com/lf/server/mapper/sys/LoginMapper.java        |    4 
 src/main/java/com/lf/server/entity/sys/RoleEntity.java         |   10 
 src/main/java/com/lf/server/config/InitConfig.java             |    7 
 src/main/java/com/lf/server/mapper/data/DirMapper.java         |    8 
 src/main/resources/mapper/data/DirMapper.xml                   |   10 
 src/main/java/com/lf/server/mapper/data/StyleMapper.java       |    4 
 src/main/java/com/lf/server/helper/GdalHelper.java             |  380 +++++++++++++++++++++
 src/main/java/com/lf/server/entity/all/SettingData.java        |   10 
 src/main/resources/mapper/data/DictMapper.xml                  |   15 
 src/main/resources/mapper/data/MetaMapper.xml                  |    4 
 src/main/resources/mapper/sys/TokenMapper.xml                  |   10 
 src/main/java/com/lf/server/mapper/sys/ResOpMapper.java        |    4 
 src/main/resources/mapper/sys/RoleUserMapper.xml               |    4 
 src/main/java/com/lf/server/mapper/sys/OperateMapper.java      |    4 
 src/main/java/com/lf/server/mapper/data/DictMapper.java        |    4 
 src/main/resources/mapper/data/VerMapper.xml                   |    7 
 src/main/resources/application.yml                             |   39 +
 56 files changed, 813 insertions(+), 222 deletions(-)

diff --git a/data/db_fn.sql b/data/db_fn.sql
index 5da600c..270c1c0 100644
--- a/data/db_fn.sql
+++ b/data/db_fn.sql
@@ -192,7 +192,7 @@
 select a.*,b.menuid,c.name from lf.sys_role_menu_auth a inner join lf.sys_menu_auth b on a.menu_auth_id = b.id
 inner join lf.sys_auth c on b.authid = c.id where a.roleid = 1 and b.menuid = 1 order by c.id;
 ----------------------------------------------------------------------------------------------------- 
-
+select * from lf.sys_user;
 
 
 
diff --git a/data/db_tab.sql b/data/db_tab.sql
index 7185ed6..fcaa293 100644
--- a/data/db_tab.sql
+++ b/data/db_tab.sql
@@ -419,6 +419,7 @@
   depid integer default 1,
   name varchar(100),
   descr varchar(100),
+  is_admin integer default 0,
   create_user integer default 1,
   create_time timestamp(6) without time zone default now(),
   update_user integer,
@@ -430,12 +431,13 @@
 comment on column lf.sys_role.depid is '鍗曚綅ID';
 comment on column lf.sys_role.name is '鍚嶇О';
 comment on column lf.sys_role.descr is '鎻忚堪';
+comment on column lf.sys_role.is_admin is '鏄惁涓虹鐞嗗憳锛�0-鍚�,1-鏄�';
 comment on column lf.sys_role.create_user is '鍒涘缓浜篒D';
 comment on column lf.sys_role.create_time is '鍒涘缓鏃堕棿';
 comment on column lf.sys_role.update_user is '鏇存柊浜篒D';
 comment on column lf.sys_role.update_time is '鏇存柊鏃堕棿';
 comment on column lf.sys_role.bak is '澶囨敞';
---insert into lf.sys_role (id,depid,name,descr) values (1,1,'Admin','绯荤粺绠$悊鍛�');
+--insert into lf.sys_role (id,depid,name,descr,is_admin) values (1,1,'Admin','绯荤粺绠$悊鍛�',1);
 
 select * from lf.sys_role;
 select a.*,b.name depname from lf.sys_role a inner join lf.sys_dep b on a.depid = b.id order by a.id limit 10 offset 0;
@@ -830,7 +832,9 @@
 comment on column lf.sys_args.create_time is '鍒涘缓鏃堕棿';
 comment on column lf.sys_args.update_user is '鏇存柊浜篒D';
 comment on column lf.sys_args.update_time is '鏇存柊鏃堕棿';
-/* insert into lf.sys_args (name,cvalue,dvalue,min_value,max_value,times,descr,mark) values ('鑷姩鐧诲嚭鏃堕棿',15,15,3,1440,1,'榛樿鐢ㄦ埛15鍒嗛挓涓嶆搷浣滐紝灏辫嚜鍔ㄧ櫥鍑虹郴缁熴��','AUTO_LOGOUT');
+/* insert into lf.sys_args (name,cvalue,dvalue,min_value,max_value,times,descr,mark) values ('瀵嗙爜鍑洪敊娆℃暟',5,5,3,20,1,'榛樿鐢ㄦ埛瀵嗙爜杩炵画杈撳叆鍑洪敊5娆★紝灏辨殏鏃舵嫆缁濈櫥褰曘��','PWD_ERR_COUNT');
+insert into lf.sys_args (name,cvalue,dvalue,min_value,max_value,times,descr,mark) values ('瀵嗙爜鍑洪敊绛夊緟鏃堕棿',5,5,1,60,1,'榛樿鐢ㄦ埛瀵嗙爜杩炵画杈撳叆澶氭鍑洪敊鏃讹紝5鍒嗛挓鍐呮嫆缁濈櫥褰曘��','PWD_ERR_TIME');
+insert into lf.sys_args (name,cvalue,dvalue,min_value,max_value,times,descr,mark) values ('鑷姩鐧诲嚭鏃堕棿',15,15,3,1440,1,'榛樿鐢ㄦ埛15鍒嗛挓涓嶆搷浣滐紝灏辫嚜鍔ㄧ櫥鍑虹郴缁熴��','AUTO_LOGOUT');
 insert into lf.sys_args (name,cvalue,dvalue,min_value,max_value,times,descr,mark) values ('浠ょ墝鏈夋晥鏈�',240,240,60,1440,1,'浠ょ墝榛樿鏈夋晥鏈熶负240鍒嗛挓锛岃秴鏃跺皢澶辨晥銆�','TOKEN_EXPIRE');
 insert into lf.sys_args (name,cvalue,dvalue,min_value,max_value,times,descr,mark) values ('缂撳瓨鏈夋晥鏈�',240,240,60,1440,1,'缂撳瓨榛樿鏈夋晥鏈熶负240鍒嗛挓锛岃秴鏃跺皢澶辨晥銆�','CACHE_EXPIRE');
 insert into lf.sys_args (name,cvalue,dvalue,min_value,max_value,times,descr,mark) values ('鏈�澶ф枃浠舵暟',2000,2000,500,2500,1,'鍗曚釜鏂囦欢澶逛笅榛樿鏈�澶у瓨鍌ㄦ枃浠剁殑鏁扮洰涓�2000涓��','MAX_FILES');
diff --git a/pom.xml b/pom.xml
index 109799a..be47d43 100644
--- a/pom.xml
+++ b/pom.xml
@@ -6,7 +6,7 @@
     <parent>
         <groupId>org.springframework.boot</groupId>
         <artifactId>spring-boot-starter-parent</artifactId>
-        <version>2.3.0.RELEASE</version>
+        <version>2.3.6.RELEASE</version>
         <relativePath/>
     </parent>
 
@@ -180,6 +180,12 @@
             <artifactId>commons-io</artifactId>
             <version>2.5</version>
         </dependency>
+        <!--GDAL-->
+        <dependency>
+            <groupId>org.gdal</groupId>
+            <artifactId>gdal</artifactId>
+            <version>3.2.0</version>
+        </dependency>
     </dependencies>
 
     <build>
@@ -187,7 +193,7 @@
             <plugin>
                 <groupId>org.springframework.boot</groupId>
                 <artifactId>spring-boot-maven-plugin</artifactId>
-                <version>2.3.0.RELEASE</version>
+                <!--<version>2.3.0.RELEASE</version>-->
                 <configuration>
                     <mainClass>com.lf.server.LfApplication</mainClass>
                 </configuration>
diff --git a/src/main/java/com/lf/server/config/InitConfig.java b/src/main/java/com/lf/server/config/InitConfig.java
index dc8beb0..d0a9615 100644
--- a/src/main/java/com/lf/server/config/InitConfig.java
+++ b/src/main/java/com/lf/server/config/InitConfig.java
@@ -1,5 +1,6 @@
 package com.lf.server.config;
 
+import com.lf.server.helper.GdalHelper;
 import com.lf.server.helper.PathHelper;
 import com.lf.server.service.sys.ArgsService;
 import org.apache.commons.logging.Log;
@@ -25,7 +26,13 @@
 
     @Override
     public void run(ApplicationArguments args) {
+        // noinspection AlibabaRemoveCommentedCode
         try {
+            // "E:\\data\\7.Insar\\insartest.tif","E:\\data\\6.楂樺厜璋盶\GF5_Cut_1.img","E:\\data\\22.tif\\110.747 sq km.tif","E:\\Test\\Test.gdb"
+            //GdalHelper.readTif("E:\\data\\7.Insar\\insartest.tif")
+            //GdalHelper.readShp("E:\\data\\13.cppe\\shps\\addr.shp");
+            //GdalHelper.readGdb("E:\\Test\\addr.gdb");
+
             pathHelper.init();
 
             argsService.initSettingData();
diff --git a/src/main/java/com/lf/server/config/RestTemplateConfig.java b/src/main/java/com/lf/server/config/RestTemplateConfig.java
index e99c489..403dce2 100644
--- a/src/main/java/com/lf/server/config/RestTemplateConfig.java
+++ b/src/main/java/com/lf/server/config/RestTemplateConfig.java
@@ -62,9 +62,11 @@
         }
 
         HttpClient httpClient = HttpClientBuilder.create().setMaxConnTotal(this.maxTotalConnect).setMaxConnPerRoute(this.maxConnectPerRoute).build();
+
         HttpComponentsClientHttpRequestFactory factory = new HttpComponentsClientHttpRequestFactory(httpClient);
         factory.setConnectTimeout(this.connectTimeout);
         factory.setReadTimeout(this.readTimeout);
+
         return factory;
     }
 
diff --git a/src/main/java/com/lf/server/controller/sys/UserController.java b/src/main/java/com/lf/server/controller/sys/UserController.java
index b679e79..1c28601 100644
--- a/src/main/java/com/lf/server/controller/sys/UserController.java
+++ b/src/main/java/com/lf/server/controller/sys/UserController.java
@@ -4,8 +4,7 @@
 import com.lf.server.controller.all.BaseController;
 import com.lf.server.entity.all.ResponseMsg;
 import com.lf.server.entity.sys.UserEntity;
-import com.lf.server.helper.Md5Helper;
-import com.lf.server.helper.StringHelper;
+import com.lf.server.entity.ctrl.UserUpdateEntity;
 import com.lf.server.service.sys.TokenService;
 import com.lf.server.service.sys.UserService;
 import io.swagger.annotations.Api;
@@ -16,7 +15,6 @@
 import org.springframework.web.bind.annotation.*;
 
 import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
 import java.util.List;
 
 /**
@@ -162,7 +160,7 @@
     @PostMapping(value = "/insertUser", produces = "application/json; charset=UTF-8")
     public ResponseMsg<Integer> insertUser(@RequestBody UserEntity entity, HttpServletRequest req) {
         try {
-            String str = userService.ValidateNewPwd(entity);
+            String str = userService.validateNewPwd(entity);
             if (str != null) {
                 return fail(str, -1);
             }
@@ -194,7 +192,7 @@
 
             UserEntity ue = tokenService.getCurrentUser(req);
             for (UserEntity entity : list) {
-                String str = userService.ValidateNewPwd(entity);
+                String str = userService.validateNewPwd(entity);
                 if (str != null) {
                     return fail(str, -1);
                 }
@@ -257,7 +255,7 @@
     @PostMapping(value = "/updateUser", produces = "application/json; charset=UTF-8")
     public ResponseMsg<Integer> updateUser(@RequestBody UserEntity entity, HttpServletRequest req) {
         try {
-            String str = userService.ValidateOldPwd(entity);
+            String str = userService.validateOldPwd(entity);
             if (str != null) {
                 return fail(str, -1);
             }
@@ -276,49 +274,35 @@
     }
 
     @SysLog()
-    @ApiOperation(value = "鏇存柊鐢ㄦ埛瀵嗙爜")
+    @ApiOperation(value = "鏇存柊澶氫釜鐢ㄦ埛瀵嗙爜")
     @ApiImplicitParams({
-            @ApiImplicitParam(name = "user", value = "鐢ㄦ埛瀹炰綋绫�", dataType = "UsersEntity", paramType = "body", example = "")
+            @ApiImplicitParam(name = "adminPwd", value = "绠$悊鍛樺瘑鐮�", dataType = "String", paramType = "body", example = ""),
+            @ApiImplicitParam(name = "newPwd", value = "鏂板瘑鐮�", dataType = "String", paramType = "body", example = ""),
+            @ApiImplicitParam(name = "ids", value = "鐢ㄦ埛ID闆嗗悎", dataType = "List<Integer>", paramType = "body", example = "")
     })
-    @PostMapping(value = "/updateUserPwd")
-    public ResponseMsg<Boolean> updateUserPwd(@RequestBody UserEntity user, HttpServletRequest req, HttpServletResponse res) {
+    @PostMapping(value = "/updateUsersPwd", produces = "application/json; charset=UTF-8")
+    public ResponseMsg<Boolean> updateUsersPwd(@RequestBody UserUpdateEntity uue, HttpServletRequest req) {
         try {
-            if (user == null) {
-                return fail("璇锋彁浜ょ敤鎴蜂俊鎭紒", false);
-            }
-            if (StringHelper.isEmpty(user.getPwd())) {
-                return fail("璇疯緭鍏ョ敤鎴峰瘑鐮侊紒", false);
-            }
-            if (StringHelper.isEmpty(user.getSalt())) {
-                return fail("璇疯緭鍏ョ鐞嗗憳瀵嗙爜锛�", false);
-            }
-            if (!StringHelper.checkPwdValid(user.getPwd())) {
-                return fail("鏂板瘑鐮佷笉绗﹀悎瑙勫垯瑕佹眰锛�", false);
+            if (uue == null || uue.getIds() == null || uue.getIds().isEmpty()) {
+                return fail("娌℃湁鎵惧埌鏁版嵁", false);
             }
 
             UserEntity ue = tokenService.getCurrentUser(req);
-            if (ue == null) {
-                return fail("娌℃湁鐧诲綍鎴栫櫥褰曡秴鏃讹紒", false);
-            }
-            if (!Md5Helper.validatePassword(user.getSalt(), ue.getPwd())) {
-                return fail("绠$悊鍛樺瘑鐮佷笉姝g‘锛�", false);
+            String str = userService.validateAdminPwd(ue, uue.getAdminPwd());
+            if (str != null) {
+                return fail(str, false);
             }
 
-            UserEntity userEntity = userService.selectUser(user.getId());
-            if (userEntity == null) {
-                return fail("娌℃湁鎵惧埌瑕佷慨鏀圭殑鐢ㄦ埛锛�", false);
+            str = userService.validateNewPwd(ue, uue.getNewPwd());
+            if (str != null) {
+                return fail(str, false);
             }
-            // 璁剧疆鏂板瘑鐮�
-            String md5 = Md5Helper.reverse(Md5Helper.generate(user.getPwd()));
-            userEntity.setPwd(md5);
-            // 璁剧疆鏇存柊淇℃伅
-            userEntity.setUpdateUser(ue.getId());
 
-            Integer rows = userService.updateUsers(userEntity);
+            Integer rows = userService.updateUsersPwd(ue.getId(), ue.getSalt(), uue.getIds());
 
             return success(rows > 0 ? "鏇存柊鎴愬姛" : "鏇存柊澶辫触", rows > 0);
         } catch (Exception ex) {
             return fail(ex.getMessage(), false);
         }
     }
-}
\ No newline at end of file
+}
diff --git a/src/main/java/com/lf/server/entity/all/SettingData.java b/src/main/java/com/lf/server/entity/all/SettingData.java
index 6f7e7d4..f3a1266 100644
--- a/src/main/java/com/lf/server/entity/all/SettingData.java
+++ b/src/main/java/com/lf/server/entity/all/SettingData.java
@@ -6,6 +6,16 @@
  */
 public class SettingData {
     /**
+     * 瀵嗙爜鍑洪敊娆℃暟
+     */
+    public static int PWD_ERR_COUNT = 5;
+
+    /**
+     * 鍑洪敊绛夊緟鏃堕棿
+     */
+    public static int PWD_ERR_TIME = 5;
+
+    /**
      * 鑷姩鐧诲嚭鏃堕棿
      */
     public static int AUTO_LOGOUT = 15;
diff --git a/src/main/java/com/lf/server/entity/ctrl/LayerDto.java b/src/main/java/com/lf/server/entity/ctrl/LayerDto.java
new file mode 100644
index 0000000..2576c93
--- /dev/null
+++ b/src/main/java/com/lf/server/entity/ctrl/LayerDto.java
@@ -0,0 +1,50 @@
+package com.lf.server.entity.ctrl;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 鍥惧眰淇℃伅
+ * @author WWW
+ */
+public class LayerDto {
+    private long count;
+
+    private String layerName;
+
+    private List<Map> list;
+
+    private List<Map<String, String>> map;
+
+    public long getCount() {
+        return count;
+    }
+
+    public void setCount(long count) {
+        this.count = count;
+    }
+
+    public String getLayerName() {
+        return layerName;
+    }
+
+    public void setLayerName(String layerName) {
+        this.layerName = layerName;
+    }
+
+    public List<Map> getList() {
+        return list;
+    }
+
+    public void setList(List<Map> list) {
+        this.list = list;
+    }
+
+    public List<Map<String, String>> getMap() {
+        return map;
+    }
+
+    public void setMap(List<Map<String, String>> map) {
+        this.map = map;
+    }
+}
diff --git a/src/main/java/com/lf/server/entity/ctrl/UserUpdateEntity.java b/src/main/java/com/lf/server/entity/ctrl/UserUpdateEntity.java
new file mode 100644
index 0000000..01b5b35
--- /dev/null
+++ b/src/main/java/com/lf/server/entity/ctrl/UserUpdateEntity.java
@@ -0,0 +1,46 @@
+package com.lf.server.entity.ctrl;
+
+import java.io.Serializable;
+import java.util.List;
+
+/**
+ * 鐢ㄦ埛鏇存柊绫�
+ * @author WWW
+ */
+public class UserUpdateEntity implements Serializable {
+    private static final long serialVersionUID = 8390219588267518254L;
+
+    private String adminPwd;
+
+    private String newPwd;
+
+    private List<Integer> ids;
+
+    public UserUpdateEntity() {
+
+    }
+
+    public String getAdminPwd() {
+        return adminPwd;
+    }
+
+    public void setAdminPwd(String adminPwd) {
+        this.adminPwd = adminPwd;
+    }
+
+    public String getNewPwd() {
+        return newPwd;
+    }
+
+    public void setNewPwd(String newPwd) {
+        this.newPwd = newPwd;
+    }
+
+    public List<Integer> getIds() {
+        return ids;
+    }
+
+    public void setIds(List<Integer> ids) {
+        this.ids = ids;
+    }
+}
diff --git a/src/main/java/com/lf/server/entity/sys/RoleEntity.java b/src/main/java/com/lf/server/entity/sys/RoleEntity.java
index eb9ecb0..d57b280 100644
--- a/src/main/java/com/lf/server/entity/sys/RoleEntity.java
+++ b/src/main/java/com/lf/server/entity/sys/RoleEntity.java
@@ -19,6 +19,8 @@
 
     private String descr;
 
+    private int isAdmin;
+
     private int createUser;
 
     private Timestamp createTime;
@@ -67,6 +69,14 @@
         this.descr = descr;
     }
 
+    public int getIsAdmin() {
+        return isAdmin;
+    }
+
+    public void setIsAdmin(int isAdmin) {
+        this.isAdmin = isAdmin;
+    }
+
     public int getCreateUser() {
         return createUser;
     }
diff --git a/src/main/java/com/lf/server/helper/GdalHelper.java b/src/main/java/com/lf/server/helper/GdalHelper.java
new file mode 100644
index 0000000..48bffcb
--- /dev/null
+++ b/src/main/java/com/lf/server/helper/GdalHelper.java
@@ -0,0 +1,380 @@
+package com.lf.server.helper;
+
+import com.lf.server.entity.ctrl.LayerDto;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.gdal.gdal.Band;
+import org.gdal.gdal.Driver;
+import org.gdal.gdal.gdal;
+import org.gdal.gdal.Dataset;
+import org.gdal.gdalconst.gdalconstConstants;
+import org.gdal.ogr.*;
+import org.gdal.osr.SpatialReference;
+
+import java.sql.Time;
+import java.sql.Timestamp;
+import java.time.LocalDate;
+import java.time.LocalDateTime;
+import java.time.LocalTime;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * GDAL甯姪绫�
+ * @author WWW
+ */
+@SuppressWarnings("ALL")
+public class GdalHelper {
+    private final static Log log = LogFactory.getLog(GdalHelper.class);
+
+    static {
+        // 娉ㄥ唽鎵�鏈夌殑椹卞姩
+        gdal.AllRegister();
+
+        // 涓轰簡鏀寔涓枃璺緞锛岃娣诲姞涓嬮潰杩欏彞浠g爜
+        gdal.SetConfigOption("GDAL_FILENAME_IS_UTF8", "YES");
+
+        // 閰嶇疆GDAL_DATA璺緞锛坓dal鏍圭洰褰曚笅鐨刡in\gdal-data锛�
+        // gdal.SetConfigOption("GDAL_DATA", "E:\\terrait\\TianJin\\Zip\\release-1928-x64-dev\\release-1928-x64\\bin\\gdal-data");
+        // gdal.SetConfigOption("PROJ_LIB", "E:\\terrait\\TianJin\\Zip\\release-1928-x64-dev\\release-1928-x64\\bin\\proj7\\share");
+
+        // 涓轰簡浣垮睘鎬ц〃瀛楁鏀寔涓枃锛岃娣诲姞涓嬮潰杩欏彞锛欳P936
+        gdal.SetConfigOption("SHAPE_ENCODING", "");
+    }
+
+    /**
+     * 璇诲彇tif鏂囦欢
+     *
+     * @param fileName
+     */
+    public static void readTif(String fileName) {
+        // 璇诲彇褰卞儚鏁版嵁
+        Dataset dataset = gdal.Open(fileName, gdalconstConstants.GA_ReadOnly);
+        if (dataset == null) {
+            System.out.println("read fail!");
+            return;
+        }
+
+        // providing various methods for a format specific driver.
+        Driver driver = dataset.GetDriver();
+        System.out.println("driver name: " + driver.getLongName());
+
+        // 璇诲彇褰卞儚淇℃伅
+        int xSize = dataset.getRasterXSize();
+        int ySzie = dataset.getRasterYSize();
+        int rasterCount = dataset.getRasterCount();
+        System.out.println("dataset xSize: " + xSize + ", ySzie = " + ySzie + ", rasterCount = " + rasterCount);
+
+        Band band = dataset.GetRasterBand(1);
+        // the data type of the band.
+        int type = band.GetRasterDataType();
+        System.out.println("data type = " + type + ", " + (type == gdalconstConstants.GDT_Byte));
+
+        // Frees the native resource associated to a Dataset object and close the file.
+        dataset.delete();
+
+        gdal.GDALDestroyDriverManager();
+    }
+
+    private static void writeShp(String filePath) {
+        try {
+            org.gdal.ogr.Driver driver = ogr.GetDriverByName("ESRI shapefile");
+            if (driver == null) {
+                System.out.println(" ESRI shapefile椹卞姩涓嶅彲鐢紒\n");
+                System.out.println("fail");
+            }
+
+            // Open()鐨勭浜屼釜鍙傛暟榛樿涓�0锛屾槸浠ュ彧璇绘柟寮忔墦寮�鏂囦欢锛�1鏄鍐欐柟寮忔墦寮�
+            DataSource dSource = driver.Open(filePath, 0);
+
+            Layer layer = dSource.GetLayerByIndex(0);
+            FieldDefn fieldDefn = new FieldDefn("name", ogr.OFTString);
+            fieldDefn.SetWidth(50);
+            layer.CreateField(fieldDefn, 1);
+            layer.DeleteField(layer.FindFieldIndex("name", 1));
+        } catch (Exception ex) {
+            ex.printStackTrace();
+        }
+    }
+
+    /**
+     * 璇诲彇shp鏂囦欢
+     * @param filePath
+     */
+    public static void readShp(String filePath) {
+        try {
+            org.gdal.ogr.Driver driver = ogr.GetDriverByName("ESRI shapefile");
+            if (driver == null) {
+                System.out.println(" ESRI shapefile椹卞姩涓嶅彲鐢紒\n");
+                System.out.println("fail");
+            }
+
+            DataSource dataSource = driver.Open(filePath);
+            Layer layer = dataSource.GetLayer(0);
+
+            String layerName = layer.GetName();
+            System.out.println("鍥惧眰鍚嶇О锛�" + layerName);
+
+            SpatialReference spatialReference = layer.GetSpatialRef();
+            // System.out.println(spatialReference)
+            System.out.println("绌洪棿鍙傝�冨潗鏍囩郴锛�" + spatialReference.GetAttrValue("AUTHORITY", 0) + spatialReference.GetAttrValue("AUTHORITY", 1));
+
+            double[] layerExtent = layer.GetExtent();
+            System.out.println("鍥惧眰鑼冨洿锛歮inx:" + layerExtent[0] + ",maxx:" + layerExtent[1] + ",miny:" + layerExtent[2] + ",maxy:" + layerExtent[3]);
+
+            FeatureDefn featureDefn = layer.GetLayerDefn();
+            Map<String, Object> fieldMap = new HashMap(5);
+            for (int i = 0, count = featureDefn.GetFieldCount(); i < count; i++) {
+                FieldDefn fieldDefn = featureDefn.GetFieldDefn(i);
+                //寰楀埌灞炴�у瓧娈电被鍨�
+                int fieldType = fieldDefn.GetFieldType();
+                String fieldTypeName = fieldDefn.GetFieldTypeName(fieldType);
+                //寰楀埌灞炴�у瓧娈靛悕绉�
+                String fieldName = fieldDefn.GetName();
+
+                fieldMap.put(fieldTypeName, fieldName);
+            }
+
+            long featureCount = layer.GetFeatureCount();
+            System.out.println("鍥惧眰瑕佺礌涓暟锛�" + featureCount);
+            for (int i = 0; i < featureCount; i++) {
+                Feature feature = layer.GetFeature(i);
+                Object[] arr = fieldMap.values().toArray();
+                for (int k = 0; k < arr.length; k++) {
+                    String value = feature.GetFieldAsString(arr[k].toString());
+                    System.out.print(" 灞炴�у悕绉�:" + arr[k].toString() + ",灞炴�у��:" + value);
+                }
+                System.out.println();
+                break;
+            }
+        } catch (Exception ex) {
+            ex.printStackTrace();
+        }
+    }
+
+    public static LayerDto getLayerDto(String filePath) {
+        org.gdal.ogr.Driver driver = ogr.GetDriverByName("OpenFileGDB");
+        if (driver == null) {
+            return null;
+        }
+        List<Map> list = new ArrayList<>();
+        List<Map<String, String>> mapList = new ArrayList<>();
+        LayerDto layerDto = new LayerDto();
+        DataSource dataSource = null;
+        try {
+            dataSource = driver.Open(filePath, 0);
+            int num = dataSource.GetLayerCount();
+            for (int i = 0; i < num; i++) {
+                //  鑾峰彇鍥惧眰
+                Layer layer = dataSource.GetLayer(i);
+                // 琛ㄥ悕绉�
+                String strlayerName = layer.GetName();
+                // 鑾峰彇鍥惧眰瑕佹暟涓暟
+                long count = layer.GetFeatureCount();
+                if (0 != count) {
+                    do {
+                        // 鑾峰彇鍥惧眰涓嬬殑瑕佺礌
+                        Feature feature = layer.GetNextFeature();
+                        if (null == feature) {
+                            break;
+                        }
+                        // 鑾峰彇杈圭晫鍧愭爣
+                        Geometry geometry = feature.GetGeometryRef();
+                        if (geometry != null) {
+                            String geometryJson = geometry.ExportToJson();
+                            String str = geometryJson.substring(geometryJson.lastIndexOf(":") + 1, geometryJson.length());
+                            if (!" [ [ ] ] }".equals(str)) {
+                                String s1 = str.substring(7, str.length() - 8);
+                                String[] split = s1.replaceAll(" ", "").replaceAll("\\[", "").replaceAll("]", "").split(",");
+                                List<String> xList = new ArrayList();
+                                List<String> yList = new ArrayList();
+                                Map<String, String> map1 = new HashMap(5);
+                                for (int j = 0; j < split.length; j++) {
+                                    if (j != (split.length - 1) && j % 2 == 0) {
+                                        map1.put(split[j], split[j + 1]);
+                                    }
+                                }
+                                mapList.add(map1);
+                            }
+                        }
+                        Map map = new HashMap(5);
+                        //鑾峰彇灞炴��
+                        for (int p = 0; p < feature.GetFieldCount(); p++) {
+                            map.put(feature.GetFieldDefnRef(p).GetName(), getProperty(feature, p));
+                        }
+                        list.add(map);
+                        feature.delete();
+                    } while (true);
+                }
+                layerDto.setLayerName(strlayerName);
+                layerDto.setList(list);
+                layerDto.setCount(count);
+                layerDto.setMap(mapList);
+            }
+        } catch (Exception e) {
+            e.printStackTrace();
+        } finally {
+            if (dataSource != null) {
+                dataSource.delete();
+            }
+        }
+        return layerDto;
+    }
+
+    /**
+     * 璇诲彇gdb鏂囦欢
+     * @param filePath
+     */
+    public static void readGdb(String filePath) {
+        try {
+            org.gdal.ogr.Driver driver = ogr.GetDriverByName("OpenFileGDB");
+            if (driver == null) {
+                return;
+            }
+            DataSource dataSource = driver.Open(filePath, 0);
+
+            for (int i = 0, count = dataSource.GetLayerCount(); i < count; i++) {
+                // 鑾峰彇鍥惧眰
+                Layer layer = dataSource.GetLayer(i);
+                System.out.println(i + "\t" + layer.GetName());
+                do {
+                    // 鑾峰彇鍥惧眰涓嬬殑瑕佺礌
+                    Feature feature = layer.GetNextFeature();
+                    if (null == feature) {
+                        break;
+                    }
+                    // 鑾峰彇鏍峰紡锛岃繖閲屾槸绌猴紝寰呯‘瀹�
+                    System.out.println(feature.GetStyleString());
+                    // 鑾峰彇geometry锛屼篃鍙互ExportToWkb() gml绛夌瓑
+                    System.out.println(feature.GetGeometryRef().ExportToWkt());
+                    // 鑾峰彇灞炴��
+                    System.out.println("----------------------------------");
+                    for (int p = 0; p < feature.GetFieldCount(); p++) {
+                        System.out.println(feature.GetFieldDefnRef(p).GetName() + "\t" + getProperty(feature, p));
+                    }
+                    System.out.println("----------------------------------");
+                    break;
+                } while (true);
+            }
+        } catch (Exception ex) {
+            ex.printStackTrace();
+        }
+    }
+
+    private static Object getProperty(Feature feature, int index) {
+        int type = feature.GetFieldType(index);
+
+        PropertyGetter propertyGetter;
+        if (type < 0 || type >= PROPERTY_GETTERS.length) {
+            propertyGetter = STRING_PROPERTY_GETTER;
+        } else {
+            propertyGetter = PROPERTY_GETTERS[type];
+        }
+
+        try {
+            return propertyGetter.get(feature, index);
+        } catch (Exception ex) {
+            // ex.printStackTrace()
+            log.error(ex.getMessage() + ex.getStackTrace() + "\n");
+
+            return null;
+        }
+    }
+
+    /**
+     * 灞炴�ц幏鍙栧櫒
+     */
+    @FunctionalInterface
+    private interface PropertyGetter {
+        /**
+         * 鑾峰彇灞炴��
+         *
+         * @param feature
+         * @param index
+         * @return
+         */
+        Object get(Feature feature, int index);
+    }
+
+    private static final PropertyGetter STRING_PROPERTY_GETTER = (feature, index) -> feature.GetFieldAsString(index);
+
+    /**
+     * feature.GetFieldType(index)寰楀埌涓�涓睘鎬х被鍨嬬殑int鍊�,璇ュ�煎搴斿叿浣撶被鍨�
+     */
+    private static final PropertyGetter[] PROPERTY_GETTERS = new PropertyGetter[]{
+            // 0-Integer
+            (feature, index) -> feature.GetFieldAsInteger(index),
+            // 1-IntegerList
+            (feature, index) -> feature.GetFieldAsIntegerList(index),
+            // 2-Real
+            (feature, index) -> feature.GetFieldAsDouble(index),
+            // 3-RealList
+            (feature, index) -> feature.GetFieldAsDoubleList(index),
+            // 4-String
+            STRING_PROPERTY_GETTER,
+            // 5-StringList
+            (feature, index) -> feature.GetFieldAsStringList(index),
+            // 6-unknown
+            STRING_PROPERTY_GETTER,
+            // 7-unknown
+            STRING_PROPERTY_GETTER,
+            // 8-Binary
+            (feature, index) -> feature.GetFieldAsBinary(index),
+            // 9-Date
+            (feature, index) -> {
+                int[] pnYear = new int[1];
+                int[] pnMonth = new int[1];
+                int[] pnDay = new int[1];
+                int[] pnHour = new int[1];
+                int[] pnMinute = new int[1];
+                float[] pfSecond = new float[1];
+                int[] pnTZFlag = new int[1];
+                feature.GetFieldAsDateTime(index, pnYear, pnMonth, pnDay, pnHour, pnMinute, pfSecond, pnTZFlag);
+                java.sql.Date date = java.sql.Date.valueOf(LocalDate.of(pnYear[0], pnMonth[0], pnDay[0]));
+                return date;
+            },
+            // 10-Time
+            (feature, index) -> {
+                int[] pnYear = new int[1];
+                int[] pnMonth = new int[1];
+                int[] pnDay = new int[1];
+                int[] pnHour = new int[1];
+                int[] pnMinute = new int[1];
+                float[] pfSecond = new float[1];
+                int[] pnTZFlag = new int[1];
+                feature.GetFieldAsDateTime(index, pnYear, pnMonth, pnDay, pnHour, pnMinute, pfSecond, pnTZFlag);
+                float fSecond = pfSecond[0];
+                int s = (int) fSecond;
+                int ns = (int) (1000000000 * fSecond - s);
+                Time time = Time.valueOf(LocalTime.of(pnHour[0], pnMinute[0], s, ns));
+                return time;
+            },
+            // 11-DateTime
+            (feature, index) -> {
+                int[] pnYear = new int[1];
+                int[] pnMonth = new int[1];
+                int[] pnDay = new int[1];
+                int[] pnHour = new int[1];
+                int[] pnMinute = new int[1];
+                float[] pfSecond = new float[1];
+                int[] pnTZFlag = new int[1];
+                feature.GetFieldAsDateTime(index, pnYear, pnMonth, pnDay, pnHour, pnMinute, pfSecond, pnTZFlag);
+                float fSecond = pfSecond[0];
+                int s = (int) fSecond;
+                int ns = (int) (1000000000 * fSecond - s);
+                LocalDateTime localDateTime = LocalDateTime.of(
+                        LocalDate.of(pnYear[0], pnMonth[0], pnDay[0]),
+                        LocalTime.of(pnHour[0], pnMinute[0], s, ns)
+                );
+                Timestamp timestamp = Timestamp.valueOf(localDateTime);
+                return timestamp;
+            },
+            // 12-Integer64
+            (feature, index) -> feature.GetFieldAsInteger64(index),
+            // 13 Integer64List
+            (feature, index) -> feature.GetFieldAsIntegerList(index)
+            // >=14	(unknown)
+    };
+}
diff --git a/src/main/java/com/lf/server/helper/WebHelper.java b/src/main/java/com/lf/server/helper/WebHelper.java
index 7bb7673..53db6b9 100644
--- a/src/main/java/com/lf/server/helper/WebHelper.java
+++ b/src/main/java/com/lf/server/helper/WebHelper.java
@@ -272,7 +272,7 @@
      * @param jsonPack
      * @throws Exception
      */
-    public static void write2Page(HttpServletResponse response, String jsonPack) throws IOException {
+    public static boolean write2Page(HttpServletResponse response, String jsonPack) throws IOException {
         response.setContentType("application/json;charset=UTF-8");
         response.setHeader("Cache-Control", "no-cache");
         response.setHeader("Pragma", "No-cache");
@@ -283,5 +283,7 @@
 
         out.flush();
         out.close();
+
+        return false;
     }
 }
diff --git a/src/main/java/com/lf/server/interceptor/AuthInterceptor.java b/src/main/java/com/lf/server/interceptor/AuthInterceptor.java
index 6f30e13..30e9a57 100644
--- a/src/main/java/com/lf/server/interceptor/AuthInterceptor.java
+++ b/src/main/java/com/lf/server/interceptor/AuthInterceptor.java
@@ -1,16 +1,16 @@
 package com.lf.server.interceptor;
 
 import com.alibaba.fastjson.JSON;
-import com.lf.server.entity.all.HttpStatus;
-import com.lf.server.entity.all.ResponseMsg;
-import com.lf.server.entity.all.StaticData;
+import com.lf.server.entity.all.*;
 import com.lf.server.entity.sys.UserEntity;
 import com.lf.server.helper.StringHelper;
 import com.lf.server.helper.WebHelper;
+import com.lf.server.service.all.RedisService;
 import com.lf.server.service.sys.TokenService;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 import org.springframework.context.annotation.Configuration;
+import org.springframework.data.redis.cache.RedisCache;
 import org.springframework.web.method.HandlerMethod;
 import org.springframework.web.servlet.HandlerInterceptor;
 
@@ -46,31 +46,28 @@
     @Override
     public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) {
         try {
-            System.out.println(request.getRequestURI().toLowerCase() + "," + (handler instanceof HandlerMethod));
-
-            // 闈炴柟娉曪紝鏃犻渶鎷︽埅
-            if (!(handler instanceof HandlerMethod)) {
-                return true;
-            }
-
-            // 鏃犻渶鎺堟潈
-            if (noNeedAuth(request)) {
+            System.out.println(request.getRequestURI().toLowerCase() + ", " + (handler instanceof HandlerMethod));
+            // 闈炴柟娉� 鎴� 鏃犻渶鎺堟潈锛屾棤闇�鎷︽埅
+            if (!(handler instanceof HandlerMethod) || noNeedAuth(request)) {
                 return true;
             }
 
             String token = WebHelper.getToken(request);
             if (StringHelper.isNull(token)) {
-                WebHelper.write2Page(response, NO_TOKEN);
-                return false;
+                return WebHelper.write2Page(response, NO_TOKEN);
             }
 
             UserEntity ue = tokenService.getCurrentUser(request);
             if (ue == null) {
-                WebHelper.write2Page(response, NO_LOGIN);
-                return false;
+                return WebHelper.write2Page(response, NO_LOGIN);
             }
 
-            //noinspection AlibabaRemoveCommentedCode
+            Object objCount = tokenService.redisService.get(RedisCacheKey.signPwdError(ue.getUid()));
+            if (objCount != null && (int) objCount > SettingData.PWD_ERR_COUNT) {
+                return WebHelper.write2Page(response, JSON.toJSONString(new ResponseMsg<String>(HttpStatus.NO_LOGIN_ERROR, SettingData.PWD_ERR_TIME + "鍒嗛挓鍐呯姝㈢櫥褰�")));
+            }
+
+            // noinspection AlibabaRemoveCommentedCode
             // 鏉冮檺鏍¢獙
 
             return true;
diff --git a/src/main/java/com/lf/server/mapper/data/DictMapper.java b/src/main/java/com/lf/server/mapper/data/DictMapper.java
index 918e8dd..893ab54 100644
--- a/src/main/java/com/lf/server/mapper/data/DictMapper.java
+++ b/src/main/java/com/lf/server/mapper/data/DictMapper.java
@@ -43,10 +43,10 @@
     /**
      * 鎻掑叆澶氭潯
      *
-     * @param dictEntity
+     * @param list
      * @return
      */
-    public Integer insertDicts(List<DictEntity> dictEntity);
+    public Integer insertDicts(List<DictEntity> list);
 
     /**
      * 鍒犻櫎涓�鏉�
diff --git a/src/main/java/com/lf/server/mapper/data/DirMapper.java b/src/main/java/com/lf/server/mapper/data/DirMapper.java
index 4fd17ba..cea6647 100644
--- a/src/main/java/com/lf/server/mapper/data/DirMapper.java
+++ b/src/main/java/com/lf/server/mapper/data/DirMapper.java
@@ -24,10 +24,10 @@
 
     /**
      * 鎻掑叆澶氭潯
-     * @param dirEntity
+     * @param list
      * @return
      */
-    public Integer insertDirs(List<DirEntity> dirEntity);
+    public Integer insertDirs(List<DirEntity> list);
 
     /**
      * 鍒犻櫎涓�鏉�
@@ -52,10 +52,10 @@
 
     /**
      * 鏇存柊澶氭潯
-     * @param dirEntity
+     * @param list
      * @return
      */
-    public Integer updateDirs(List<DirEntity> dirEntity);
+    public Integer updateDirs(List<DirEntity> list);
 
     /**
      * 鏌ヨ鍗曟潯鏁版嵁
diff --git a/src/main/java/com/lf/server/mapper/data/StyleMapper.java b/src/main/java/com/lf/server/mapper/data/StyleMapper.java
index 2943aaa..93f668c 100644
--- a/src/main/java/com/lf/server/mapper/data/StyleMapper.java
+++ b/src/main/java/com/lf/server/mapper/data/StyleMapper.java
@@ -43,10 +43,10 @@
     /**
      * 鎻掑叆澶氭潯
      *
-     * @param styleEntity
+     * @param list
      * @return
      */
-    public Integer insertStyles(List<StyleEntity> styleEntity);
+    public Integer insertStyles(List<StyleEntity> list);
 
     /**
      * 鍒犻櫎涓�鏉�
diff --git a/src/main/java/com/lf/server/mapper/data/VerMapper.java b/src/main/java/com/lf/server/mapper/data/VerMapper.java
index 9822a37..0b0cd15 100644
--- a/src/main/java/com/lf/server/mapper/data/VerMapper.java
+++ b/src/main/java/com/lf/server/mapper/data/VerMapper.java
@@ -45,10 +45,10 @@
     /**
      * 鎻掑叆澶氭潯
      *
-     * @param verEntity
+     * @param list
      * @return
      */
-    public Integer insertVersions(List<VerEntity> verEntity);
+    public Integer insertVersions(List<VerEntity> list);
 
     /**
      * 鍒犻櫎涓�鏉�
diff --git a/src/main/java/com/lf/server/mapper/sys/AuthMapper.java b/src/main/java/com/lf/server/mapper/sys/AuthMapper.java
index 8720f46..7a4ec97 100644
--- a/src/main/java/com/lf/server/mapper/sys/AuthMapper.java
+++ b/src/main/java/com/lf/server/mapper/sys/AuthMapper.java
@@ -61,10 +61,10 @@
     /**
      * 鎻掑叆澶氭潯
      *
-     * @param authEntity
+     * @param list
      * @return
      */
-    public Integer insertAuths(List<AuthEntity> authEntity);
+    public Integer insertAuths(List<AuthEntity> list);
 
     /**
      * 鍒犻櫎涓�鏉�
diff --git a/src/main/java/com/lf/server/mapper/sys/DepMapper.java b/src/main/java/com/lf/server/mapper/sys/DepMapper.java
index 79b9677..9c89943 100644
--- a/src/main/java/com/lf/server/mapper/sys/DepMapper.java
+++ b/src/main/java/com/lf/server/mapper/sys/DepMapper.java
@@ -24,10 +24,10 @@
 
     /**
      * 鎻掑叆澶氭潯
-     * @param depEntity
+     * @param list
      * @return
      */
-    public Integer insertDeps(List<DepEntity> depEntity);
+    public Integer insertDeps(List<DepEntity> list);
     /**
      * 鍒犻櫎涓�鏉�
      * @param id
diff --git a/src/main/java/com/lf/server/mapper/sys/LoginMapper.java b/src/main/java/com/lf/server/mapper/sys/LoginMapper.java
index 0ea7a3d..3526cdd 100644
--- a/src/main/java/com/lf/server/mapper/sys/LoginMapper.java
+++ b/src/main/java/com/lf/server/mapper/sys/LoginMapper.java
@@ -50,10 +50,10 @@
     /**
      * 鎻掑叆澶氭潯
      *
-     * @param loginEntity
+     * @param list
      * @return
      */
-    public Integer insertLogins(List<LoginEntity> loginEntity);
+    public Integer insertLogins(List<LoginEntity> list);
 
     /**
      * 鍒犻櫎涓�鏉�
diff --git a/src/main/java/com/lf/server/mapper/sys/MenuMapper.java b/src/main/java/com/lf/server/mapper/sys/MenuMapper.java
index 20b498a..8bc37b1 100644
--- a/src/main/java/com/lf/server/mapper/sys/MenuMapper.java
+++ b/src/main/java/com/lf/server/mapper/sys/MenuMapper.java
@@ -24,10 +24,10 @@
 
     /**
      * 鎻掑叆澶氭潯
-     * @param menuEntity
+     * @param list
      * @return
      */
-    public Integer insertMenus(List<MenuEntity> menuEntity);
+    public Integer insertMenus(List<MenuEntity> list);
     /**
      * 鍒犻櫎涓�鏉�
      * @param id
@@ -64,10 +64,10 @@
 
     /**
      * 鏇存柊澶氭潯
-     * @param menuEntity
+     * @param list
      * @return
      */
-    public Integer updateMenus(List<MenuEntity> menuEntity);
+    public Integer updateMenus(List<MenuEntity> list);
 
     /**
      * 閫掑綊鏌ヨ
diff --git a/src/main/java/com/lf/server/mapper/sys/OperateMapper.java b/src/main/java/com/lf/server/mapper/sys/OperateMapper.java
index b896277..3416a26 100644
--- a/src/main/java/com/lf/server/mapper/sys/OperateMapper.java
+++ b/src/main/java/com/lf/server/mapper/sys/OperateMapper.java
@@ -48,10 +48,10 @@
     /**
      * 鎻掑叆澶氭潯
      *
-     * @param operateEntity
+     * @param list
      * @return
      */
-    public Integer insertOperates(List<OperateEntity> operateEntity);
+    public Integer insertOperates(List<OperateEntity> list);
 
     /**
      * 鍒犻櫎涓�鏉�
diff --git a/src/main/java/com/lf/server/mapper/sys/ResMapper.java b/src/main/java/com/lf/server/mapper/sys/ResMapper.java
index f99e48f..43082dd 100644
--- a/src/main/java/com/lf/server/mapper/sys/ResMapper.java
+++ b/src/main/java/com/lf/server/mapper/sys/ResMapper.java
@@ -61,10 +61,10 @@
     /**
      * 鎻掑叆澶氭潯
      *
-     * @param resEntity
+     * @param list
      * @return
      */
-    public Integer insertRess(List<ResEntity> resEntity);
+    public Integer insertRess(List<ResEntity> list);
 
     /**
      * 鍒犻櫎涓�鏉�
diff --git a/src/main/java/com/lf/server/mapper/sys/ResOpMapper.java b/src/main/java/com/lf/server/mapper/sys/ResOpMapper.java
index 05890ea..3de8a7a 100644
--- a/src/main/java/com/lf/server/mapper/sys/ResOpMapper.java
+++ b/src/main/java/com/lf/server/mapper/sys/ResOpMapper.java
@@ -50,10 +50,10 @@
     /**
      * 鎻掑叆澶氭潯
      *
-     * @param resOpEntity
+     * @param list
      * @return
      */
-    public Integer insertResOps(List<ResOpEntity> resOpEntity);
+    public Integer insertResOps(List<ResOpEntity> list);
 
     /**
      * 鍒犻櫎涓�鏉�
diff --git a/src/main/java/com/lf/server/mapper/sys/RoleMapper.java b/src/main/java/com/lf/server/mapper/sys/RoleMapper.java
index 8aa0651..61b2ee6 100644
--- a/src/main/java/com/lf/server/mapper/sys/RoleMapper.java
+++ b/src/main/java/com/lf/server/mapper/sys/RoleMapper.java
@@ -45,10 +45,10 @@
     /**
      * 鎻掑叆澶氭潯
      *
-     * @param roleEntity
+     * @param list
      * @return
      */
-    public Integer insertRoles(List<RoleEntity> roleEntity);
+    public Integer insertRoles(List<RoleEntity> list);
 
     /**
      * 鍒犻櫎涓�鏉�
diff --git a/src/main/java/com/lf/server/mapper/sys/TokenMapper.java b/src/main/java/com/lf/server/mapper/sys/TokenMapper.java
index 697c9e1..0be1a6f 100644
--- a/src/main/java/com/lf/server/mapper/sys/TokenMapper.java
+++ b/src/main/java/com/lf/server/mapper/sys/TokenMapper.java
@@ -69,10 +69,10 @@
     /**
      * 鎻掑叆澶氭潯
      *
-     * @param tokenEntity
+     * @param list
      * @return
      */
-    public Integer insertTokens(List<TokenEntity> tokenEntity);
+    public Integer insertTokens(List<TokenEntity> list);
 
     /**
      * 鍒犻櫎涓�鏉�
diff --git a/src/main/java/com/lf/server/mapper/sys/UserMapper.java b/src/main/java/com/lf/server/mapper/sys/UserMapper.java
index ba75eeb..c8af548 100644
--- a/src/main/java/com/lf/server/mapper/sys/UserMapper.java
+++ b/src/main/java/com/lf/server/mapper/sys/UserMapper.java
@@ -124,4 +124,14 @@
      * @return
      */
     public List<UserEntity> selectByPageForRole(String uname, Integer roleid, Integer depid, Integer limit, Integer offset);
+
+    /**
+     * 鏇存柊澶氫釜鐢ㄦ埛瀵嗙爜
+     *
+     * @param updateUser
+     * @param pwd
+     * @param ids
+     * @return
+     */
+    public Integer updateUsersPwd(Integer updateUser, String pwd, List<Integer> ids);
 }
\ No newline at end of file
diff --git a/src/main/java/com/lf/server/service/sys/TokenService.java b/src/main/java/com/lf/server/service/sys/TokenService.java
index ed66ab5..39c169d 100644
--- a/src/main/java/com/lf/server/service/sys/TokenService.java
+++ b/src/main/java/com/lf/server/service/sys/TokenService.java
@@ -27,7 +27,7 @@
 @Service
 public class TokenService implements TokenMapper {
     @Autowired
-    private RedisService redisService;
+    public RedisService redisService;
 
     @Autowired
     TokenMapper tokenMapper;
diff --git a/src/main/java/com/lf/server/service/sys/UserService.java b/src/main/java/com/lf/server/service/sys/UserService.java
index e871b45..51eba3c 100644
--- a/src/main/java/com/lf/server/service/sys/UserService.java
+++ b/src/main/java/com/lf/server/service/sys/UserService.java
@@ -1,14 +1,19 @@
 package com.lf.server.service.sys;
 
+import com.lf.server.entity.all.RedisCacheKey;
+import com.lf.server.entity.all.SettingData;
 import com.lf.server.entity.sys.UserEntity;
 import com.lf.server.helper.Md5Helper;
 import com.lf.server.helper.RsaHelper;
 import com.lf.server.helper.StringHelper;
 import com.lf.server.mapper.sys.UserMapper;
+import com.lf.server.service.all.RedisService;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.redis.cache.RedisCache;
 import org.springframework.stereotype.Service;
 
 import java.util.List;
+import java.util.concurrent.TimeUnit;
 
 /**
  * 鐢ㄦ埛琛�
@@ -20,6 +25,9 @@
 public class UserService implements UserMapper {
     @Autowired
     UserMapper userMapper;
+
+    @Autowired
+    RedisService redisService;
 
     @Override
     public Integer selectCount(String uname) {
@@ -94,10 +102,15 @@
         return userMapper.selectByPageForRole(uname, roleid, depid, limit, offset);
     }
 
+    @Override
+    public Integer updateUsersPwd(Integer updateUser, String pwd, List<Integer> ids) {
+        return userMapper.updateUsersPwd(updateUser, pwd, ids);
+    }
+
     /**
      * 楠岃瘉鏂扮敤鎴峰瘑鐮�
      */
-    public String ValidateNewPwd(UserEntity entity) {
+    public String validateNewPwd(UserEntity entity) {
         if (entity == null) {
             return "娌℃湁鎵惧埌鐢ㄦ埛";
         }
@@ -123,7 +136,7 @@
     /**
      * 楠岃瘉鑰佺敤鎴峰瘑鐮�
      */
-    public String ValidateOldPwd(UserEntity entity) {
+    public String validateOldPwd(UserEntity entity) {
         if (entity == null) {
             return "娌℃湁鎵惧埌鐢ㄦ埛";
         }
@@ -140,6 +153,7 @@
                 return "娌℃湁鎵惧埌鐢ㄦ埛";
             }
             if (!Md5Helper.validatePassword(pwd, ue.getPwd())) {
+                //
                 return "鏃у瘑鐮佽緭鍏ラ敊璇�";
             }
             if (!StringHelper.checkPwdValid(salt)) {
@@ -155,4 +169,63 @@
             return "瀵嗙爜瑙e瘑澶辫触";
         }
     }
+
+    /**
+     * 楠岃瘉绠$悊鍛樺瘑鐮�
+     */
+    public String validateAdminPwd(UserEntity ue, String adminPwd) {
+        if (ue == null) {
+            return "娌℃湁鐧诲綍鎴栬秴鏃�";
+        }
+        if (StringHelper.isEmpty(adminPwd)) {
+            return "绠$悊鍛樺瘑鐮佷笉鑳戒负绌�";
+        }
+
+        try {
+            String pwd = RsaHelper.decrypt(adminPwd);
+            if (!Md5Helper.validatePassword(pwd, ue.getPwd())) {
+                return "绠$悊鍛樺瘑鐮佷笉姝g‘";
+            }
+
+            return null;
+        } catch (Exception ex) {
+            return "瀵嗙爜瑙e瘑澶辫触";
+        }
+    }
+
+    /**
+     * 楠岃瘉鏂板瘑鐮�
+     */
+    public String validateNewPwd(UserEntity ue, String newPwd) {
+        if (StringHelper.isEmpty(newPwd)) {
+            return "鏂板瘑鐮佷笉鑳戒负绌�";
+        }
+
+        try {
+            String pwd = RsaHelper.decrypt(newPwd);
+            if (!StringHelper.checkPwdValid(pwd)) {
+                return "瀵嗙爜涓嶇鍚堣姹�";
+            }
+
+            String dbPwd = Md5Helper.reverse(Md5Helper.generate(pwd));
+            ue.setSalt(dbPwd);
+
+            return null;
+        } catch (Exception ex) {
+            return "瀵嗙爜瑙e瘑澶辫触";
+        }
+    }
+
+    /**
+     * 璁剧疆瀵嗙爜閿欒缂撳瓨
+     *
+     * @param ue
+     */
+    public void setPwdErrCache(UserEntity ue) {
+        String key = RedisCacheKey.signPwdError(ue.getUid());
+        Object objCount = redisService.get(key);
+
+        int count = objCount == null ? 1 : (int) objCount + 1;
+        redisService.put(key, count, SettingData.PWD_ERR_TIME, TimeUnit.MINUTES);
+    }
 }
diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml
index 28d2876..cdd9d9c 100644
--- a/src/main/resources/application.yml
+++ b/src/main/resources/application.yml
@@ -9,13 +9,31 @@
     name: land
 
 spring:
+  # redis
+  redis:
+    database: 0
+    host: 127.0.0.1
+    port: 6379
+    password: rediS_5L#F4_Server
+    timeout: 6000  # 杩炴帴瓒呮椂鏃堕暱锛堟绉掞級
+    pool:
+      max-active: 1000  # 杩炴帴姹犳渶澶ц繛鎺ユ暟锛堜娇鐢ㄨ礋鍊艰〃绀烘病鏈夐檺鍒讹級
+      max-wait: -1      # 杩炴帴姹犳渶澶ч樆濉炵瓑寰呮椂闂达紙浣跨敤璐熷�艰〃绀烘病鏈夐檺鍒讹級
+      max-idle: 10      # 杩炴帴姹犱腑鐨勬渶澶х┖闂茶繛鎺�
+      min-idle: 5       # 杩炴帴姹犱腑鐨勬渶灏忕┖闂茶繛鎺�
+  # session
   session:
     timeout: PT20M # 20鍒嗛挓
-
+  # jackson
+  jackson:
+    time-zone: GMT+8
+    date-format: yyyy-MM-dd HH:mm:ss
+    locale: zh_CN
+  # datasource
   datasource:
     name: prod
     # JDBC 鍩烘湰閰嶇疆
-    url: jdbc:postgresql://192.168.20.39:5433/langfang?useAffectedRows=true
+    url: jdbc:postgresql://127.0.0.1:5432/langfang?useAffectedRows=true
     username : postgres
     password: postgres
     driver-class-name: org.postgresql.Driver
@@ -30,7 +48,6 @@
     removeAbandonedTimeout: 180
     # 鍏抽棴 abanded 杩炴帴鏃惰緭鍑洪敊璇棩蹇�
     logAbandoned: true
-
     # 閰嶇疆杩炴帴姹犱俊鎭�
     druid:
       ## 鍒濆鍖栧ぇ灏忥紝鏈�灏忥紝鏈�澶�
@@ -53,7 +70,7 @@
       test-on-borrow: false
       # 濡傛灉涓簍rue锛堥粯璁alse锛夛紝褰撳簲鐢ㄤ娇鐢ㄥ畬杩炴帴锛岃繛鎺ユ睜鍥炴敹杩炴帴鐨勬椂鍊欎細鍒ゆ柇璇ヨ繛鎺ユ槸鍚﹁繕鍙敤
       test-on-return: false
-
+      # servlet閰嶇疆
       stat-view-servlet:
         # sql鐩戞帶寮�鍏�
         enabled: true
@@ -90,20 +107,12 @@
             log-slow-sql: true
             slow-sql-millis: 2000
 
-    redis:
-      host: 192.168.20.39
-      port: 6379
-      password: rediS_5L#F4_Server
-      database: 1
-    jackson:
-      time-zone: GMT+8
-      date-format: yyyy-MM-dd HH:mm:ss
-
+# mybatis
 mybatis:
   type-aliases-package: com.lf.server.mapper
   config-location: classpath:mybatis.xml
   mapper-locations: classpath:mapper/**/*.xml
-
+# logging
 logging:
   config: classpath:logback-spring.xml
 
@@ -126,4 +135,4 @@
     # 鍏变韩鐩綍
     share: D:\LF\share
     # 涓存椂鐩綍
-    temp: D:\LF\temp
\ No newline at end of file
+    temp: D:\LF\temp
diff --git a/src/main/resources/mapper/data/DictMapper.xml b/src/main/resources/mapper/data/DictMapper.xml
index 66c9601..115f233 100644
--- a/src/main/resources/mapper/data/DictMapper.xml
+++ b/src/main/resources/mapper/data/DictMapper.xml
@@ -45,7 +45,7 @@
         select * from lf.sys_dict where id = #{id}
     </select>
 
-    <insert id="insertDict"   parameterType="com.lf.server.entity.data.DictEntity">
+    <insert id="insertDict" parameterType="com.lf.server.entity.data.DictEntity">
        insert into lf.sys_dict
        (ns,tab,tab_desc,field,alias,type,len,precision,order_num,create_user,create_time,bak)
        values
@@ -53,25 +53,24 @@
       now(),#{bak});
     </insert>
 
-    <insert id="insertDicts"   >
+    <insert id="insertDicts">
        insert into lf.sys_dict
         (ns,tab,tab_desc,field,alias,type,len,precision,order_num,create_user,create_time,bak)
        values
-        <foreach collection="list"   item="item" index="index" separator=","  >
+        <foreach collection="list" item="item" index="index" separator=",">
             (#{item.ns},#{item.tab},#{item.tabDesc},#{item.field},#{item.alias},#{item.type},#{item.len},
             #{item.precision},#{item.orderNum},#{item.createUser},now(),#{item.bak})
         </foreach>
     </insert>
 
-    <delete id="deleteDict"  >
+    <delete id="deleteDict">
         delete from lf.sys_dict where id = #{id}
     </delete>
 
-    <delete id="deleteDicts"  >
+    <delete id="deleteDicts">
         delete from lf.sys_dict where id in
-        <foreach item="ids" collection="list" index="index" open="("
-                 separator="," close=")">
-            #{ids}
+        <foreach item="id" collection="ids" index="index" open="(" separator="," close=")">
+            #{id}
         </foreach>
     </delete>
 
diff --git a/src/main/resources/mapper/data/DirMapper.xml b/src/main/resources/mapper/data/DirMapper.xml
index 2e3aadb..01ea475 100644
--- a/src/main/resources/mapper/data/DirMapper.xml
+++ b/src/main/resources/mapper/data/DirMapper.xml
@@ -38,7 +38,7 @@
         insert into lf.sys_dir
         (pid,name,code,descr,level,order_num,create_user,create_time,bak)
         values
-        <foreach collection="list"   item="item" index="index" separator=","  >
+        <foreach collection="list" item="item" index="index" separator=",">
             (#{item.pid},#{item.name},#{item.code},#{item.descr},#{item.level}
             ,#{item.orderNum},#{item.createUser},now(),#{item.bak})
         </foreach>
@@ -48,11 +48,10 @@
         delete from lf.sys_dir where id = #{id}
     </delete>
 
-    <delete id="deleteDirs"  >
+    <delete id="deleteDirs">
         delete from lf.sys_dir where id in
-        <foreach item="ids" collection="list" index="index" open="("
-                 separator="," close=")">
-            #{ids}
+        <foreach item="id" collection="ids" index="index" open="(" separator="," close=")">
+            #{id}
         </foreach>
     </delete>
 
@@ -60,7 +59,6 @@
     update lf.sys_dir set  pid=#{pid},name=#{name},code=#{code},descr=#{descr},level=#{level},order_num=#{orderNum},
     update_user=#{updateUser},update_time=now(),bak=#{bak} where id=#{id}
     </update>
-
 
     <update id="updateDirs">
         <foreach collection="list" item="item" index="index" separator=";">
diff --git a/src/main/resources/mapper/data/DownloadMapper.xml b/src/main/resources/mapper/data/DownloadMapper.xml
index 986f901..b34929f 100644
--- a/src/main/resources/mapper/data/DownloadMapper.xml
+++ b/src/main/resources/mapper/data/DownloadMapper.xml
@@ -51,8 +51,8 @@
 
     <delete id="deletes">
         delete from lf.sys_download where id in
-        <foreach item="ids" collection="list" index="index" open="(" separator="," close=")">
-            #{ids}
+        <foreach item="id" collection="ids" index="index" open="(" separator="," close=")">
+            #{id}
         </foreach>
     </delete>
 
diff --git a/src/main/resources/mapper/data/MetaFileMapper.xml b/src/main/resources/mapper/data/MetaFileMapper.xml
index 82692d3..e512a35 100644
--- a/src/main/resources/mapper/data/MetaFileMapper.xml
+++ b/src/main/resources/mapper/data/MetaFileMapper.xml
@@ -51,8 +51,8 @@
 
     <delete id="deletes">
         delete from lf.sys_meta_file where id in
-        <foreach item="ids" collection="list" index="index" open="(" separator="," close=")">
-            #{ids}
+        <foreach item="id" collection="ids" index="index" open="(" separator="," close=")">
+            #{id}
         </foreach>
     </delete>
 
diff --git a/src/main/resources/mapper/data/MetaMapper.xml b/src/main/resources/mapper/data/MetaMapper.xml
index 2ed8096..91fa7f8 100644
--- a/src/main/resources/mapper/data/MetaMapper.xml
+++ b/src/main/resources/mapper/data/MetaMapper.xml
@@ -51,8 +51,8 @@
 
     <delete id="deletes">
         delete from lf.sys_meta where id in
-        <foreach item="ids" collection="list" index="index" open="(" separator="," close=")">
-            #{ids}
+        <foreach item="id" collection="ids" index="index" open="(" separator="," close=")">
+            #{id}
         </foreach>
     </delete>
 
diff --git a/src/main/resources/mapper/data/StyleMapper.xml b/src/main/resources/mapper/data/StyleMapper.xml
index 7cb6d81..c2f7f36 100644
--- a/src/main/resources/mapper/data/StyleMapper.xml
+++ b/src/main/resources/mapper/data/StyleMapper.xml
@@ -41,21 +41,20 @@
        insert into lf.sys_style
         (name,type,dirid,depid,ver,status,precision,descr,file_guid,view_guid,create_user,create_time,bak)
        values
-        <foreach collection="list"   item="item" index="index" separator=","  >
+        <foreach collection="list" item="item" index="index" separator=","  >
             (#{item.name},#{item.type},#{item.dirid},#{item.depid},#{item.ver},#{item.status},#{item.precision},#{item.descr},
             #{item.fileGuid},#{item.viewGuid},#{item.createUser},now(),#{item.bak})
         </foreach>
     </insert>
 
-    <delete id="deleteStyle"  >
+    <delete id="deleteStyle">
         delete from lf.sys_style where id = #{id}
     </delete>
 
     <delete id="deleteStyles"  >
         delete from lf.sys_style where id in
-        <foreach item="ids" collection="list" index="index" open="("
-                 separator="," close=")">
-            #{ids}
+        <foreach item="id" collection="ids" index="index" open="(" separator="," close=")">
+            #{id}
         </foreach>
     </delete>
 
diff --git a/src/main/resources/mapper/data/VerMapper.xml b/src/main/resources/mapper/data/VerMapper.xml
index 78890df..0c87772 100644
--- a/src/main/resources/mapper/data/VerMapper.xml
+++ b/src/main/resources/mapper/data/VerMapper.xml
@@ -57,7 +57,7 @@
        insert into lf.sys_ver
         (dirid,name,descr,create_user,create_time)
        values
-        <foreach collection="list"   item="item" index="index" separator=","  >
+        <foreach collection="list" item="item" index="index" separator=","  >
             (#{item.dirid},#{item.name},#{item.descr},#{item.createUser},now())
         </foreach>
     </insert>
@@ -68,9 +68,8 @@
 
     <delete id="deleteVersions"  >
         delete from lf.sys_ver where id in
-        <foreach item="ids" collection="list" index="index" open="("
-                 separator="," close=")">
-            #{ids}
+        <foreach item="id" collection="ids" index="index" open="(" separator="," close=")">
+            #{id}
         </foreach>
     </delete>
 
diff --git a/src/main/resources/mapper/sys/ArgsMapper.xml b/src/main/resources/mapper/sys/ArgsMapper.xml
index a156bed..5da9b80 100644
--- a/src/main/resources/mapper/sys/ArgsMapper.xml
+++ b/src/main/resources/mapper/sys/ArgsMapper.xml
@@ -51,8 +51,8 @@
 
     <delete id="deletes">
         delete from lf.sys_args where id in
-        <foreach item="ids" collection="list" index="index" open="(" separator="," close=")">
-            #{ids}
+        <foreach item="id" collection="ids" index="index" open="(" separator="," close=")">
+            #{id}
         </foreach>
     </delete>
 
diff --git a/src/main/resources/mapper/sys/AttachMapper.xml b/src/main/resources/mapper/sys/AttachMapper.xml
index c711e75..e1dc965 100644
--- a/src/main/resources/mapper/sys/AttachMapper.xml
+++ b/src/main/resources/mapper/sys/AttachMapper.xml
@@ -55,8 +55,8 @@
 
     <delete id="deletes">
         delete from lf.sys_attach where id in
-        <foreach item="ids" collection="list" index="index" open="(" separator="," close=")">
-            #{ids}
+        <foreach item="id" collection="ids" index="index" open="(" separator="," close=")">
+            #{id}
         </foreach>
     </delete>
 
diff --git a/src/main/resources/mapper/sys/AuthMapper.xml b/src/main/resources/mapper/sys/AuthMapper.xml
index 1037c84..cea865a 100644
--- a/src/main/resources/mapper/sys/AuthMapper.xml
+++ b/src/main/resources/mapper/sys/AuthMapper.xml
@@ -64,7 +64,7 @@
        insert into lf.sys_auth
         (name,tag,create_user,create_time,bak)
        values
-        <foreach collection="list"   item="item" index="index" separator=","  >
+        <foreach collection="list" item="item" index="index" separator=","  >
             (#{item.name},#{item.tag},#{item.createUser},now(),#{item.bak})
         </foreach>
     </insert>
@@ -75,8 +75,8 @@
 
     <delete id="deleteAuths"  >
         delete from lf.sys_auth where id in
-        <foreach item="ids" collection="list" index="index" open="(" separator="," close=")">
-            #{ids}
+        <foreach item="id" collection="ids" index="index" open="(" separator="," close=")">
+            #{id}
         </foreach>
     </delete>
 
diff --git a/src/main/resources/mapper/sys/BlacklistMapper.xml b/src/main/resources/mapper/sys/BlacklistMapper.xml
index 709b43d..896efe9 100644
--- a/src/main/resources/mapper/sys/BlacklistMapper.xml
+++ b/src/main/resources/mapper/sys/BlacklistMapper.xml
@@ -59,8 +59,8 @@
 
     <delete id="deletes">
         delete from lf.sys_blacklist where id in
-        <foreach item="ids" collection="list" index="index" open="(" separator="," close=")">
-            #{ids}
+        <foreach item="id" collection="ids" index="index" open="(" separator="," close=")">
+            #{id}
         </foreach>
     </delete>
 
diff --git a/src/main/resources/mapper/sys/DepMapper.xml b/src/main/resources/mapper/sys/DepMapper.xml
index 103be17..ff83928 100644
--- a/src/main/resources/mapper/sys/DepMapper.xml
+++ b/src/main/resources/mapper/sys/DepMapper.xml
@@ -33,7 +33,7 @@
        #{level},#{orderNum},#{createUser},now(),#{bak});
     </insert>
 
-    <insert id="insertDeps"   >
+    <insert id="insertDeps">
        insert into lf.sys_dep
        (pid,name,sname,code,uncode,addr,contact,fax,email,post,website,level,order_num,create_user,create_time,bak)
        values
@@ -43,15 +43,14 @@
         </foreach>
     </insert>
 
-    <delete id="deleteDep"  >
+    <delete id="deleteDep">
         delete from lf.sys_dep where id = #{id}
     </delete>
 
-    <delete id="deleteDeps"  >
+    <delete id="deleteDeps">
         delete from lf.sys_dep where id in
-        <foreach item="ids" collection="list" index="index" open="("
-                 separator="," close=")">
-            #{ids}
+        <foreach item="id" collection="ids" index="index" open="(" separator="," close=")">
+            #{id}
         </foreach>
     </delete>
 
diff --git a/src/main/resources/mapper/sys/LoginMapper.xml b/src/main/resources/mapper/sys/LoginMapper.xml
index d879a48..29adb60 100644
--- a/src/main/resources/mapper/sys/LoginMapper.xml
+++ b/src/main/resources/mapper/sys/LoginMapper.xml
@@ -75,9 +75,8 @@
 
     <delete id="deleteLogins">
         delete from lf.sys_login where id in
-        <foreach item="ids" collection="list" index="index" open="("
-                 separator="," close=")">
-            #{ids}
+        <foreach item="id" collection="ids" index="index" open="(" separator="," close=")">
+            #{id}
         </foreach>
     </delete>
 
diff --git a/src/main/resources/mapper/sys/MenuAuthMapper.xml b/src/main/resources/mapper/sys/MenuAuthMapper.xml
index d1b06cc..83cbfd0 100644
--- a/src/main/resources/mapper/sys/MenuAuthMapper.xml
+++ b/src/main/resources/mapper/sys/MenuAuthMapper.xml
@@ -78,8 +78,8 @@
 
     <delete id="deletes">
         delete from lf.sys_menu_auth where id in
-        <foreach item="ids" collection="list" index="index" open="(" separator="," close=")">
-            #{ids}
+        <foreach item="id" collection="ids" index="index" open="(" separator="," close=")">
+            #{id}
         </foreach>
     </delete>
 
diff --git a/src/main/resources/mapper/sys/MenuMapper.xml b/src/main/resources/mapper/sys/MenuMapper.xml
index 00bb333..03ae1ba 100644
--- a/src/main/resources/mapper/sys/MenuMapper.xml
+++ b/src/main/resources/mapper/sys/MenuMapper.xml
@@ -53,9 +53,8 @@
 
     <delete id="deleteMenus"  >
         delete from lf.sys_menu where id in
-        <foreach item="ids" collection="list" index="index" open="("
-                 separator="," close=")">
-            #{ids}
+        <foreach item="id" collection="ids" index="index" open="(" separator="," close=")">
+            #{id}
         </foreach>
     </delete>
 
diff --git a/src/main/resources/mapper/sys/MsgMapper.xml b/src/main/resources/mapper/sys/MsgMapper.xml
index 2287126..deec613 100644
--- a/src/main/resources/mapper/sys/MsgMapper.xml
+++ b/src/main/resources/mapper/sys/MsgMapper.xml
@@ -51,8 +51,8 @@
 
     <delete id="deletes">
         delete from lf.sys_msg where id in
-        <foreach item="ids" collection="list" index="index" open="(" separator="," close=")">
-            #{ids}
+        <foreach item="id" collection="ids" index="index" open="(" separator="," close=")">
+            #{id}
         </foreach>
     </delete>
 
diff --git a/src/main/resources/mapper/sys/OperateMapper.xml b/src/main/resources/mapper/sys/OperateMapper.xml
index a9b49b7..f6786fb 100644
--- a/src/main/resources/mapper/sys/OperateMapper.xml
+++ b/src/main/resources/mapper/sys/OperateMapper.xml
@@ -50,30 +50,28 @@
         select * from lf.sys_operate where id = #{id}
     </select>
 
-    <insert id="insertOperate"   parameterType="com.lf.server.entity.sys.OperateEntity">
+    <insert id="insertOperate" parameterType="com.lf.server.entity.sys.OperateEntity">
        insert into lf.sys_operate
        (modular1,modular2,url,ip,exec,clazz,type,userid,optime,bak)
        values
        (#{modular1},#{modular2},#{url},#{ip},#{exec},#{clazz},#{type},#{userid},now(),#{bak});
     </insert>
 
-    <insert id="insertOperates"   >
-       insert into lf.sys_operate
-        (modular1,modular2,url,ip,exec,clazz,type,userid,optime,bak)
-       values
+    <insert id="insertOperates">
+       insert into lf.sys_operate (modular1,modular2,url,ip,exec,clazz,type,userid,optime,bak) values
         <foreach collection="list" item="item" index="index" separator=","  >
             (#{modular1},#{modular2},#{url},#{ip},#{exec},#{clazz},#{type},#{userid},now(),#{bak})
         </foreach>
     </insert>
 
-    <delete id="deleteOperate"  >
+    <delete id="deleteOperate">
         delete from lf.sys_operate where id = #{id}
     </delete>
 
-    <delete id="deleteOperates"  >
+    <delete id="deleteOperates">
         delete from lf.sys_operate where id in
-        <foreach item="ids" collection="list" index="index" open="(" separator="," close=")">
-            #{ids}
+        <foreach item="id" collection="ids" index="index" open="(" separator="," close=")">
+            #{id}
         </foreach>
     </delete>
 
diff --git a/src/main/resources/mapper/sys/ResMapper.xml b/src/main/resources/mapper/sys/ResMapper.xml
index 348a674..1da40e5 100644
--- a/src/main/resources/mapper/sys/ResMapper.xml
+++ b/src/main/resources/mapper/sys/ResMapper.xml
@@ -64,7 +64,7 @@
        insert into lf.sys_res
         (name,server,source,depid,dirid,code,descr,img,create_user,create_time,bak)
        values
-        <foreach collection="list"   item="item" index="index" separator=",">
+        <foreach collection="list" item="item" index="index" separator=",">
             #{item.name},#{item.server},#{item.source},#{item.depid},#{item.dirid},#{item.code},#{item.descr},#{item.img},#{item.createUser},now(),#{item.bak})
         </foreach>
     </insert>
@@ -75,8 +75,8 @@
 
     <delete id="deleteRess">
         delete from lf.sys_res where id in
-        <foreach item="ids" collection="list" index="index" open="(" separator="," close=")">
-            #{ids}
+        <foreach item="id" collection="ids" index="index" open="(" separator="," close=")">
+            #{id}
         </foreach>
     </delete>
 
diff --git a/src/main/resources/mapper/sys/ResOpMapper.xml b/src/main/resources/mapper/sys/ResOpMapper.xml
index d716250..e2398e0 100644
--- a/src/main/resources/mapper/sys/ResOpMapper.xml
+++ b/src/main/resources/mapper/sys/ResOpMapper.xml
@@ -41,7 +41,6 @@
         limit #{limit} offset #{offset}
     </select>
 
-
     <select id="selectResOpAll" resultType="com.lf.server.entity.sys.ResOpEntity">
         select * from lf.sys_res_op order by id;
     </select>
@@ -50,31 +49,30 @@
         select * from lf.sys_res_op where id = #{id}
     </select>
 
-    <insert id="insertResOp"   parameterType="com.lf.server.entity.sys.ResOpEntity">
+    <insert id="insertResOp" parameterType="com.lf.server.entity.sys.ResOpEntity">
        insert into lf.sys_res_op
        (resid,type,ip,userid,optime)
        values
        (#{resid},#{type},#{ip},#{userid},now());
     </insert>
 
-    <insert id="insertResOps"   >
+    <insert id="insertResOps">
        insert into lf.sys_res_op
         (resid,type,ip,userid,optime)
        values
-        <foreach collection="list"   item="item" index="index" separator=","  >
+        <foreach collection="list" item="item" index="index" separator=","  >
             (#{item.resid},#{item.type},#{item.ip},#{item.userid},now());
         </foreach>
     </insert>
 
-    <delete id="deleteResOp"  >
+    <delete id="deleteResOp">
         delete from lf.sys_res_op where id = #{id}
     </delete>
 
-    <delete id="deleteResOps"  >
+    <delete id="deleteResOps">
         delete from lf.sys_res_op where id in
-        <foreach item="ids" collection="list" index="index" open="("
-                 separator="," close=")">
-            #{ids}
+        <foreach item="id" collection="ids" index="index" open="(" separator="," close=")">
+            #{id}
         </foreach>
     </delete>
 
diff --git a/src/main/resources/mapper/sys/RoleMapper.xml b/src/main/resources/mapper/sys/RoleMapper.xml
index 2f8860c..344c55e 100644
--- a/src/main/resources/mapper/sys/RoleMapper.xml
+++ b/src/main/resources/mapper/sys/RoleMapper.xml
@@ -38,35 +38,34 @@
         select a.*,fn_rec_query(a.depid, 'dep') depName,fn_uname(a.create_user) createName,fn_uname(a.update_user) updateName from lf.sys_role a where a.id = #{id}
     </select>
 
-    <insert id="insertRole"   parameterType="com.lf.server.entity.sys.RoleEntity">
+    <insert id="insertRole" parameterType="com.lf.server.entity.sys.RoleEntity">
        insert into lf.sys_role
-       (depid,name,descr,create_user,create_time,bak)
+       (depid,name,descr,is_admin,create_user,create_time,bak)
        values
-       (#{depid},#{name},#{descr},#{createUser},now(),#{bak});
+       (#{depid},#{name},#{descr},#{isAdmin},#{createUser},now(),#{bak})
     </insert>
 
-    <insert id="insertRoles"   >
+    <insert id="insertRoles">
        insert into lf.sys_role
-        (depid,name,descr,create_user,create_time,bak)
+        (depid,name,descr,is_admin,create_user,create_time,bak)
        values
-        <foreach collection="list"   item="item" index="index" separator=","  >
-            (#{item.depid},#{item.name},#{item.descr},#{item.createUser},now(),#{item.bak})
+        <foreach collection="list" item="item" index="index" separator=","  >
+            (#{item.depid},#{item.name},#{item.descr},#{item.isAdmin},#{item.createUser},now(),#{item.bak})
         </foreach>
     </insert>
 
-    <delete id="deleteRole"  >
+    <delete id="deleteRole">
         delete from lf.sys_role where id = #{id}
     </delete>
 
-    <delete id="deleteRoles"  >
+    <delete id="deleteRoles">
         delete from lf.sys_role where id in
-        <foreach item="ids" collection="list" index="index" open="("
-                 separator="," close=")">
-            #{ids}
+        <foreach item="id" collection="ids" index="index" open="(" separator="," close=")">
+            #{id}
         </foreach>
     </delete>
 
     <update id="updateRole">
-    update lf.sys_role set depid=#{depid}, name=#{name},descr=#{descr},update_user=#{id},update_time=now(),bak=#{bak} where id=#{id}
+    update lf.sys_role set depid=#{depid},name=#{name},descr=#{descr},is_admin=#{isAdmin},update_user=#{id},update_time=now(),bak=#{bak} where id=#{id}
     </update>
 </mapper>
\ No newline at end of file
diff --git a/src/main/resources/mapper/sys/RoleMenuAuthMapper.xml b/src/main/resources/mapper/sys/RoleMenuAuthMapper.xml
index 539bf6d..fe487ad 100644
--- a/src/main/resources/mapper/sys/RoleMenuAuthMapper.xml
+++ b/src/main/resources/mapper/sys/RoleMenuAuthMapper.xml
@@ -79,8 +79,8 @@
 
     <delete id="deletes">
         delete from lf.sys_role_menu_auth where id in
-        <foreach item="ids" collection="list" index="index" open="(" separator="," close=")">
-            #{ids}
+        <foreach item="id" collection="ids" index="index" open="(" separator="," close=")">
+            #{id}
         </foreach>
     </delete>
 
diff --git a/src/main/resources/mapper/sys/RoleResMapper.xml b/src/main/resources/mapper/sys/RoleResMapper.xml
index 0cb894f..3070ac8 100644
--- a/src/main/resources/mapper/sys/RoleResMapper.xml
+++ b/src/main/resources/mapper/sys/RoleResMapper.xml
@@ -52,8 +52,8 @@
 
     <delete id="deletes">
         delete from lf.sys_role_res where id in
-        <foreach item="ids" collection="list" index="index" open="(" separator="," close=")">
-            #{ids}
+        <foreach item="id" collection="ids" index="index" open="(" separator="," close=")">
+            #{id}
         </foreach>
     </delete>
 
diff --git a/src/main/resources/mapper/sys/RoleUserMapper.xml b/src/main/resources/mapper/sys/RoleUserMapper.xml
index a59f673..7acb0c4 100644
--- a/src/main/resources/mapper/sys/RoleUserMapper.xml
+++ b/src/main/resources/mapper/sys/RoleUserMapper.xml
@@ -51,8 +51,8 @@
 
     <delete id="deletes">
         delete from lf.sys_role_user where id in
-        <foreach item="ids" collection="list" index="index" open="(" separator="," close=")">
-            #{ids}
+        <foreach item="id" collection="ids" index="index" open="(" separator="," close=")">
+            #{id}
         </foreach>
     </delete>
 
diff --git a/src/main/resources/mapper/sys/TokenMapper.xml b/src/main/resources/mapper/sys/TokenMapper.xml
index ed88efd..e69dfc8 100644
--- a/src/main/resources/mapper/sys/TokenMapper.xml
+++ b/src/main/resources/mapper/sys/TokenMapper.xml
@@ -17,7 +17,6 @@
             <if test="name != null">
                 and token = #{name}
             </if>
-
             <if test="type != null">
                 and type = #{type}
             </if>
@@ -73,15 +72,14 @@
         </foreach>
     </insert>
 
-    <delete id="deleteToken"  >
+    <delete id="deleteToken">
         delete from lf.sys_token where id = #{id}
     </delete>
 
-    <delete id="deleteTokens"  >
+    <delete id="deleteTokens">
         delete from lf.sys_token where id in
-        <foreach item="ids" collection="list" index="index" open="("
-                 separator="," close=")">
-            #{ids}
+        <foreach item="id" collection="ids" index="index" open="(" separator="," close=")">
+            #{id}
         </foreach>
     </delete>
 
diff --git a/src/main/resources/mapper/sys/UserMapper.xml b/src/main/resources/mapper/sys/UserMapper.xml
index d9b09a6..1a31625 100644
--- a/src/main/resources/mapper/sys/UserMapper.xml
+++ b/src/main/resources/mapper/sys/UserMapper.xml
@@ -83,7 +83,7 @@
           select create_user from lf.sys_token where token=#{token} and expire > now() limit 1)
     </select>
 
-    <insert id="insertUser"  parameterType="com.lf.server.entity.sys.UserEntity">
+    <insert id="insertUser" parameterType="com.lf.server.entity.sys.UserEntity">
        insert into lf.sys_user
        (depid,uid,uname,pwd,salt,sex,native,contact,job,email,addr,edu,idcard,status,create_user,create_time,bak)
        values
@@ -91,7 +91,7 @@
        #{status},#{createUser},now(),#{bak})
     </insert>
 
-    <insert id="insertUsers"   >
+    <insert id="insertUsers">
        insert into lf.sys_user
         (depid,uid,uname,pwd,salt,sex,native,contact,job,email,addr,edu,idcard,status,create_user,create_time,bak)
        values
@@ -101,15 +101,14 @@
         </foreach>
     </insert>
 
-    <delete id="deleteUser"  >
+    <delete id="deleteUser">
         delete from lf.sys_user where id = #{id}
     </delete>
 
-    <delete id="deleteUsers"  >
+    <delete id="deleteUsers">
         delete from lf.sys_user where id in
-        <foreach item="ids" collection="list" index="index" open="("
-                 separator="," close=")">
-            #{ids}
+        <foreach item="id" collection="ids" index="index" open="(" separator="," close=")">
+            #{id}
         </foreach>
     </delete>
 
@@ -117,4 +116,11 @@
     update lf.sys_user set depid=#{depid},uid=#{uid},uname=#{uname},pwd=#{pwd},salt=#{salt},sex=#{sex},native=#{natives},contact=#{contact},job=#{job},email=#{email},
     addr=#{addr},edu=#{edu},idcard=#{idcard},status=#{status},update_user=#{updateUser},update_time=now(),bak=#{bak} where id=#{id}
     </update>
+
+    <update id="updateUsersPwd">
+        update lf.sys_user set pwd=#{pwd},update_user=#{updateUser},update_time=now() where id in
+        <foreach item="id" collection="ids" index="index" open="(" separator="," close=")">
+            #{id}
+        </foreach>
+    </update>
 </mapper>
\ No newline at end of file
diff --git "a/\350\257\264\346\230\216.txt" "b/\350\257\264\346\230\216.txt"
index 882d9c3..973635e 100644
--- "a/\350\257\264\346\230\216.txt"
+++ "b/\350\257\264\346\230\216.txt"
@@ -1,17 +1,24 @@
+----------------------------------------------------------------------------------------------------
 1.淇敼鑿滃崟銆佹暟鎹洰褰曘�佸崟浣嶇殑xls鏁版嵁锛岀紪鍐欓�掑綊鏌ヨSQL
 2.鐧诲綍鏃堕獙璇佷娇鐢∕D5+Salt瀵嗙爜
 3.鐧诲綍鏃剁殑鐢ㄦ埛鍚嶅拰瀵嗙爜浣跨敤RSA鍔犲瘑銆佽В瀵�
 4.WebSocket鏈嶅姟
 5.璧勬簮瀹炴椂鐩戞帶锛圕PU淇℃伅+鍐呭瓨淇℃伅+鍦ㄧ嚎鐢ㄦ埛+璧勬簮鐘舵�侊級
 
-3.淇敼鐢ㄦ埛瀵嗙爜鏃朵娇鐢∕D5+Salt瀵嗙爜
-4.瑙e喅Swagger-UI鏃犳硶浼犻�扖ookie淇℃伅
-6.瀵嗙爜澶嶆潅搴﹂獙璇�(8-20浣嶅寘鍚瓧姣嶃�佹暟瀛楀拰鐗规畩瀛楃)
-7.鍚庡彴鏈嶅姟璁块棶娣诲姞鐧诲綍楠岃瘉鎷︽埅鍣�
-8.寮�鍙戝垏闈㈡棩蹇楀姛鑳�
-9.鏁版嵁搴撶洃鎺�(Druid Monitor)+鑷姩鐧诲綍
-12.涓嬭浇鏂囦欢骞惰缃甅IME绫诲瀷
-13.涓婁紶鏂囦欢锛坈ommons-fileupload锛� *
+.淇敼鐢ㄦ埛瀵嗙爜鏃朵娇鐢∕D5+Salt瀵嗙爜
+.瑙e喅Swagger-UI鏃犳硶浼犻�扖ookie淇℃伅
+.瀵嗙爜澶嶆潅搴﹂獙璇�(8-20浣嶅寘鍚瓧姣嶃�佹暟瀛楀拰鐗规畩瀛楃)
+.鍚庡彴鏈嶅姟璁块棶娣诲姞鐧诲綍楠岃瘉鎷︽埅鍣�
+.寮�鍙戝垏闈㈡棩蹇楀姛鑳�
+.鏁版嵁搴撶洃鎺�(Druid Monitor)+鑷姩鐧诲綍
+.涓嬭浇鏂囦欢骞惰缃甅IME绫诲瀷
+
+1.Redis鏈嶅姟閰嶇疆寮哄瘑鐮侊紝SpringBoot鍚敤瀵嗙爜
+2.鎵归噺淇敼鐢ㄦ埛瀵嗙爜
+3.淇敼鎵�鏈夌殑鎵归噺鏂板銆佸垹闄ゃ�佷慨鏀规帴鍙�
+4.浣跨敤GDAL璇诲彇tif銆乻hp銆乬db鏂囦欢
+5.5鍒嗛挓瀵嗙爜閿欒5娆℃嫆缁濈櫥褰� * <<
+6.涓婁紶鏂囦欢锛坈ommons-fileupload锛� *
 ----------------------------------------------------------------------------------------------------
 java 璋冪敤gdal璇诲彇gdb鏁版嵁锛宭inux涓媕ava璋冪敤gdal锛�
 https://blog.csdn.net/weixin_53853459/article/details/120954597
@@ -30,6 +37,9 @@
 http://localhost:12316/sign/toIndex
 http://localhost:12316/sign/toLogin
 http://127.0.0.1:12316/sign/toLogin?service=http://www.sina.com.cn
+
+.gdb > HFCP+LRRL + TFCA
+.shp  > F5004_WT.shp + F5004_WL.shp + F5004.shp
 ----------------------------------------------------------------------------------------------------
 String path = System.getProperty("user.dir");
 

--
Gitblit v1.9.3