From f342a0d88b2a7168f794d0cf545d16a3138acb6d Mon Sep 17 00:00:00 2001
From: wuqiping <wuqiping@qq.com>
Date: Wed, 09 Jun 2021 15:55:33 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/dev' into dev

---
 screen-manage/src/main/java/com/moral/api/pojo/vo/login/LoginVO.java                       |   14 
 screen-manage/src/main/java/com/moral/api/service/ManageMenuService.java                   |    4 
 screen-manage/src/main/java/com/moral/api/service/UserService.java                         |    9 
 screen-manage/src/main/java/com/moral/api/pojo/form/accountRole/AccountRoleUpdateForm.java |   24 +
 screen-manage/src/main/java/com/moral/api/entity/ManageMenu.java                           |    1 
 screen-common/src/main/java/com/moral/util/TokenUtils.java                                 |    7 
 screen-manage/src/main/java/com/moral/api/service/impl/ManageAccountRoleServiceImpl.java   |   91 +++++
 screen-manage/src/main/java/com/moral/api/service/impl/ManageAccountServiceImpl.java       |  117 +----
 screen-manage/src/main/java/com/moral/api/service/impl/MonitorPointServiceImpl.java        |  150 ++++++-
 screen-manage/src/main/java/com/moral/api/pojo/form/user/UserUpdateForm.java               |    3 
 screen-manage/src/main/java/com/moral/api/service/ManageAccountRoleService.java            |   11 
 screen-manage/src/main/java/com/moral/api/service/impl/UserServiceImpl.java                |   28 -
 screen-manage/src/main/java/com/moral/api/controller/MenuController.java                   |    5 
 screen-manage/src/main/java/com/moral/api/entity/ManageAccountRole.java                    |    6 
 screen-manage/src/main/resources/mapper/ManageMenuMapper.xml                               |   26 +
 screen-manage/src/main/java/com/moral/api/pojo/redisBean/AccountInfoDTO.java               |    4 
 screen-manage/src/main/java/com/moral/api/service/impl/MenuServiceImpl.java                |   82 ++-
 screen-manage/src/main/java/com/moral/api/pojo/dto/accountRole/AccountRoleDTO.java         |   19 +
 screen-common/src/main/java/com/moral/constant/ResponseCodeEnum.java                       |    5 
 screen-manage/src/main/java/com/moral/api/service/MonitorPointService.java                 |    3 
 screen-manage/src/main/java/com/moral/api/service/impl/DeviceServiceImpl.java              |    5 
 screen-manage/src/main/java/com/moral/api/service/impl/ManageMenuServiceImpl.java          |  167 +++++++--
 screen-manage/src/main/java/com/moral/api/service/ManageRoleService.java                   |    2 
 screen-manage/src/main/java/com/moral/api/controller/ManageRoleController.java             |    3 
 screen-manage/src/main/java/com/moral/api/pojo/vo/login/AccountInfoVO.java                 |   44 ++
 screen-manage/src/main/java/com/moral/api/controller/AccountController.java                |   24 +
 screen-manage/src/main/java/com/moral/api/pojo/dto/login/LoginDTO.java                     |    1 
 screen-manage/src/main/java/com/moral/api/service/impl/SensorServiceImpl.java              |    8 
 screen-manage/src/main/java/com/moral/api/controller/UserController.java                   |   13 
 screen-manage/src/main/java/com/moral/api/service/impl/ManageRoleServiceImpl.java          |   19 
 screen-manage/src/main/java/com/moral/api/controller/LoginController.java                  |   17 
 /dev/null                                                                                  |   26 -
 screen-manage/src/main/java/com/moral/api/util/LogUtils.java                               |    3 
 screen-manage/src/main/java/com/moral/api/controller/ManageMenuController.java             |   27 
 screen-manage/src/main/java/com/moral/api/pojo/form/account/AccountUpdateForm.java         |    4 
 screen-manage/src/main/java/com/moral/api/service/impl/OrganizationServiceImpl.java        |   43 +
 screen-manage/src/main/java/com/moral/api/mapper/ManageMenuMapper.java                     |    2 
 screen-manage/src/main/java/com/moral/api/controller/SysDictController.java                |   13 
 screen-manage/src/main/java/com/moral/api/service/impl/SysDictTypeServiceImpl.java         |    6 
 screen-manage/src/main/resources/mapper/MonitorPointMapper.xml                             |   42 ++
 40 files changed, 732 insertions(+), 346 deletions(-)

diff --git a/screen-common/src/main/java/com/moral/constant/ResponseCodeEnum.java b/screen-common/src/main/java/com/moral/constant/ResponseCodeEnum.java
index 02dd276..817af9c 100644
--- a/screen-common/src/main/java/com/moral/constant/ResponseCodeEnum.java
+++ b/screen-common/src/main/java/com/moral/constant/ResponseCodeEnum.java
@@ -54,7 +54,10 @@
     MONITOR_POINT_IS_NOT_EXIST(-40,"���������������"),
     VERSION_NOT_EXIST(-41,"���������������"),
     VERSION_EXIST(-42,"������������������"),
-    MAC_IS_EXIST(-42,"mac���������")
+    MAC_IS_EXIST(-42,"mac���������"),
+    URL_IS_EXIST(-43,"���������������"),
+    ORGANIZATION_EXIST_MONITORPOINT(-44,"���������������������������������"),
+    CHILDREN_ORGANIZATION_EXIST_MONITORPOINT(-45,"������������������������������������")
     ;
     private final Integer code;
     private final String  msg;
diff --git a/screen-common/src/main/java/com/moral/util/TokenUtils.java b/screen-common/src/main/java/com/moral/util/TokenUtils.java
index eafb27f..03daa13 100644
--- a/screen-common/src/main/java/com/moral/util/TokenUtils.java
+++ b/screen-common/src/main/java/com/moral/util/TokenUtils.java
@@ -120,6 +120,11 @@
         return userInfo;
     }
 
+    public static Object getUserInfo() {
+        String token = getCurrentToken();
+        return getUserInfoByToken(token);
+    }
+
     /**
      * @Description: ������token
      * @Param: [uid, token]
@@ -148,7 +153,7 @@
 
 
     /**
-     * @Description: ���������������������token0
+     * @Description: ���������������������token
      * @Param: []
      * @return: void
      * @Author: ���������
diff --git a/screen-manage/src/main/java/com/moral/api/controller/AccountController.java b/screen-manage/src/main/java/com/moral/api/controller/AccountController.java
index e361433..3d6d8af 100644
--- a/screen-manage/src/main/java/com/moral/api/controller/AccountController.java
+++ b/screen-manage/src/main/java/com/moral/api/controller/AccountController.java
@@ -1,11 +1,11 @@
 package com.moral.api.controller;
 
 import com.moral.api.pojo.dto.account.*;
-import com.moral.api.pojo.form.account.AccountDeleteForm;
-import com.moral.api.pojo.form.account.AccountInsertForm;
-import com.moral.api.pojo.form.account.AccountQueryForm;
-import com.moral.api.pojo.form.account.AccountUpdateForm;
+import com.moral.api.pojo.dto.accountRole.AccountRoleDTO;
+import com.moral.api.pojo.form.account.*;
+import com.moral.api.pojo.form.accountRole.AccountRoleUpdateForm;
 import com.moral.api.pojo.vo.account.AccountQueryVO;
+import com.moral.api.service.ManageAccountRoleService;
 import com.moral.api.service.ManageAccountService;
 import com.moral.constant.ResponseCodeEnum;
 import com.moral.constant.ResultMessage;
@@ -23,6 +23,8 @@
 public class AccountController {
     @Autowired
     ManageAccountService accountService;
+    @Autowired
+    ManageAccountRoleService manageAccountRoleService;
 
     @PostMapping("insert")
     public ResultMessage insert(@RequestBody AccountInsertForm form) {
@@ -92,4 +94,18 @@
         return new ResultMessage(accountQueryDTO.getCode(), accountQueryDTO.getMsg(), accountQueryVO);
     }
 
+    @PostMapping("updateRole")
+    public ResultMessage updateRole(@RequestBody AccountRoleUpdateForm form){
+
+        //������������������������
+        if (!form.valid())
+            return ResultMessage.fail(ResponseCodeEnum.PARAMETERS_IS_MISSING.getCode(),
+                    ResponseCodeEnum.PARAMETERS_IS_MISSING.getMsg());
+
+        //������������������
+        AccountRoleDTO dto = manageAccountRoleService.updateAccountRole(form);
+
+        return new ResultMessage(dto.getCode(), dto.getMsg(), null);
+    }
+
 }
diff --git a/screen-manage/src/main/java/com/moral/api/controller/LoginController.java b/screen-manage/src/main/java/com/moral/api/controller/LoginController.java
index 8269a9d..d72a4c4 100644
--- a/screen-manage/src/main/java/com/moral/api/controller/LoginController.java
+++ b/screen-manage/src/main/java/com/moral/api/controller/LoginController.java
@@ -5,6 +5,8 @@
 import com.moral.api.pojo.dto.login.LoginDTO;
 import com.moral.api.pojo.form.login.LoginForm;
 import com.moral.api.pojo.form.login.LogoutForm;
+import com.moral.api.pojo.redisBean.AccountInfoDTO;
+import com.moral.api.pojo.vo.login.AccountInfoVO;
 import com.moral.api.pojo.vo.login.LoginVO;
 import com.moral.api.service.ManageAccountService;
 import com.moral.api.service.SysConfigService;
@@ -13,6 +15,7 @@
 import com.moral.constant.ResultMessage;
 import com.moral.pojo.VerificationCode;
 import com.moral.util.KaptchaUtils;
+import com.moral.util.TokenUtils;
 import io.swagger.annotations.Api;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -59,6 +62,20 @@
         return new ResultMessage(loginDTO.getCode(), loginDTO.getMsg(), loginVO);
     }
 
+    /**
+    * @Description: ������������������������
+            * @Param: []
+            * @return: com.moral.constant.ResultMessage
+            * @Author: ���������
+            * @Date: 2021/6/9
+            */
+    @GetMapping("getAccountInfo")
+    public ResultMessage getAccountInfo(){
+        AccountInfoDTO dto = (AccountInfoDTO) TokenUtils.getUserInfo();
+        AccountInfoVO vo = AccountInfoVO.convert(dto);
+        return new ResultMessage(ResponseCodeEnum.SUCCESS.getCode(), ResponseCodeEnum.SUCCESS.getMsg(), vo);
+    }
+
 
     /**
      * @Description: ������������
diff --git a/screen-manage/src/main/java/com/moral/api/controller/ManageMenuController.java b/screen-manage/src/main/java/com/moral/api/controller/ManageMenuController.java
index ebe54ef..0a8a6b5 100644
--- a/screen-manage/src/main/java/com/moral/api/controller/ManageMenuController.java
+++ b/screen-manage/src/main/java/com/moral/api/controller/ManageMenuController.java
@@ -52,9 +52,9 @@
         String msg = resultMap.get("msg").toString();
         int code = Integer.parseInt(resultMap.get("code").toString());
         if (code == 0){
-            return ResultMessage.ok(msg);
+            return ResultMessage.ok(code,msg);
         }
-        return ResultMessage.fail(msg);
+        return ResultMessage.fail(code,msg);
     }
 
     @ApiOperation(value = "������������", notes = "������������")
@@ -70,9 +70,9 @@
         String msg = resultMap.get("msg").toString();
         int code = Integer.parseInt(resultMap.get("code").toString());
         if (code == 0){
-            return ResultMessage.ok(msg);
+            return ResultMessage.ok(code,msg);
         }
-        return ResultMessage.fail(msg);
+        return ResultMessage.fail(code,msg);
     }
 
     @ApiOperation(value = "������������", notes = "������������")
@@ -85,9 +85,9 @@
         String msg = resultMap.get("msg").toString();
         int code = Integer.parseInt(resultMap.get("code").toString());
         if (code == 0){
-            return ResultMessage.ok(msg);
+            return ResultMessage.ok(code,msg);
         }
-        return ResultMessage.fail(msg);
+        return ResultMessage.fail(code,msg);
     }
 
     @ApiOperation(value = "������������������", notes = "������������������")
@@ -121,17 +121,12 @@
     public ResultMessage getManageMenuByNameFuzzy(HttpServletRequest request) {
         Map<String,Object> parameters = getParametersStartingWith(request,null);
         Map<String,Object> resultMap = new HashMap<>();
-        if (parameters.get("name") == null || parameters.get("current") == null || parameters.get("size") == null){
-            resultMap.put("code",ResponseCodeEnum.PARAMETERS_IS_MISSING.getCode());
-            resultMap.put("msg",ResponseCodeEnum.PARAMETERS_IS_MISSING.getMsg());
-            return ResultMessage.fail(resultMap);
-        }
         if (Integer.parseInt(parameters.get("current").toString())<1 || Integer.parseInt(parameters.get("size").toString())<1){
             resultMap.put("code",ResponseCodeEnum.PARAMETERS_NOT_REQUIREMENT.getCode());
             resultMap.put("msg",ResponseCodeEnum.PARAMETERS_NOT_REQUIREMENT.getMsg());
             return ResultMessage.fail(resultMap);
         }
-        List<Map<String,Object>> re = manageMenuService.getManageMenuByNameFuzzy(parameters);
+        Map<String,Object> re = manageMenuService.getManageMenuByCondition(parameters);
         return ResultMessage.ok(re);
     }
 
@@ -192,4 +187,12 @@
         List<ManageMenu> result = manageMenuService.getManageChildMenuByRoleId(Integer.parseInt(parameters.get("roleId").toString()));
         return ResultMessage.ok(result);
     }
+
+    @ApiOperation(value = "���������������������", notes = "���������������������")
+    @RequestMapping(value = "getManageParentMenu", method = RequestMethod.GET)
+    public ResultMessage getManageParentMenu(HttpServletRequest request) {
+        Map<String, Object> parameters = getParametersStartingWith(request, null);
+        Map<String,Object> result = manageMenuService.getManageParentMenu(parameters);
+        return ResultMessage.ok(result);
+    }
 }
diff --git a/screen-manage/src/main/java/com/moral/api/controller/ManageRoleController.java b/screen-manage/src/main/java/com/moral/api/controller/ManageRoleController.java
index 4b43851..ff2b526 100644
--- a/screen-manage/src/main/java/com/moral/api/controller/ManageRoleController.java
+++ b/screen-manage/src/main/java/com/moral/api/controller/ManageRoleController.java
@@ -2,12 +2,9 @@
 
 import com.alibaba.fastjson.JSON;
 import com.moral.api.entity.ManageRole;
-import com.moral.api.pojo.dto.login.AccountInfoDTO;
 import com.moral.api.service.ManageRoleMenuService;
 import com.moral.api.service.ManageRoleService;
-import com.moral.constant.ResponseCodeEnum;
 import com.moral.constant.ResultMessage;
-import com.moral.util.TokenUtils;
 import com.moral.util.WebUtils;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiImplicitParam;
diff --git a/screen-manage/src/main/java/com/moral/api/controller/MenuController.java b/screen-manage/src/main/java/com/moral/api/controller/MenuController.java
index 2f657d1..1d0c995 100644
--- a/screen-manage/src/main/java/com/moral/api/controller/MenuController.java
+++ b/screen-manage/src/main/java/com/moral/api/controller/MenuController.java
@@ -79,10 +79,7 @@
         //������������������
         MenuDTO dto = menuService.insertMenu(form);
 
-        //������������������������
-        MenuInsertVO vo = MenuInsertVO.convert(dto);
-
-        return new ResultMessage(dto.getCode(), dto.getMsg(), vo);
+        return new ResultMessage(dto.getCode(), dto.getMsg(),null);
     }
 
     @PostMapping("delete")
diff --git a/screen-manage/src/main/java/com/moral/api/controller/SysDictController.java b/screen-manage/src/main/java/com/moral/api/controller/SysDictController.java
index f1e9d44..7c3731b 100644
--- a/screen-manage/src/main/java/com/moral/api/controller/SysDictController.java
+++ b/screen-manage/src/main/java/com/moral/api/controller/SysDictController.java
@@ -9,10 +9,7 @@
 import com.moral.api.pojo.form.sysDictType.SysDictTypeDeleteForm;
 import com.moral.api.pojo.form.sysDictType.SysDictTypeInsertForm;
 import com.moral.api.pojo.form.sysDictType.SysDictTypeUpdateForm;
-import com.moral.api.pojo.vo.sysDictType.SysDictTypeDeleteVO;
-import com.moral.api.pojo.vo.sysDictType.SysDictTypeInsertVO;
 import com.moral.api.pojo.vo.sysDictType.SysDictTypeQueryVO;
-import com.moral.api.pojo.vo.sysDictType.SysDictTypeUpdateVO;
 import com.moral.api.service.SysDictDataService;
 import com.moral.api.service.SysDictTypeService;
 import com.moral.constant.ResponseCodeEnum;
@@ -132,10 +129,7 @@
         //������������������
         SysDictTypeDTO dto = sysDictTypeService.updateType(form);
 
-        //������������������������
-        SysDictTypeUpdateVO vo = SysDictTypeUpdateVO.convert(dto);
-
-        return new ResultMessage(dto.getCode(), dto.getMsg(), vo);
+        return new ResultMessage(dto.getCode(), dto.getMsg(), null);
     }
 
     @PostMapping("type/delete")
@@ -148,10 +142,7 @@
         //������������������
         SysDictTypeDTO dto = sysDictTypeService.deleteType(form);
 
-        //������������������������
-        SysDictTypeDeleteVO vo = SysDictTypeDeleteVO.convert(dto);
-
-        return new ResultMessage(dto.getCode(), dto.getMsg(), vo);
+        return new ResultMessage(dto.getCode(), dto.getMsg(),null);
     }
 
 }
diff --git a/screen-manage/src/main/java/com/moral/api/controller/UserController.java b/screen-manage/src/main/java/com/moral/api/controller/UserController.java
index 2f9f886..50115ae 100644
--- a/screen-manage/src/main/java/com/moral/api/controller/UserController.java
+++ b/screen-manage/src/main/java/com/moral/api/controller/UserController.java
@@ -66,19 +66,6 @@
         return new ResultMessage(dto.getCode(), dto.getMsg(), null);
     }
 
-    @PostMapping("delete")
-    public ResultMessage delete(@RequestBody UserDeleteForm form){
-
-        //������������������������
-        if (!form.valid())
-            return ResultMessage.fail(ResponseCodeEnum.PARAMETERS_IS_MISSING.getCode(),
-                    ResponseCodeEnum.PARAMETERS_IS_MISSING.getMsg());
-
-        //������������������
-        UserDTO dto = userService.deleteUser(form);
-
-        return new ResultMessage(dto.getCode(), dto.getMsg(), null);
-    }
 
     @PostMapping("insert")
     public ResultMessage insert(@RequestBody UserInsertForm form){
diff --git a/screen-manage/src/main/java/com/moral/api/entity/ManageAccountRole.java b/screen-manage/src/main/java/com/moral/api/entity/ManageAccountRole.java
index 8522a8a..930396a 100644
--- a/screen-manage/src/main/java/com/moral/api/entity/ManageAccountRole.java
+++ b/screen-manage/src/main/java/com/moral/api/entity/ManageAccountRole.java
@@ -5,6 +5,8 @@
 import com.baomidou.mybatisplus.annotation.TableId;
 import java.time.LocalDateTime;
 import java.io.Serializable;
+import java.util.Date;
+
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 
@@ -41,12 +43,12 @@
     /**
      * ������������
      */
-    private LocalDateTime createTime;
+    private Date createTime;
 
     /**
      * ������������
      */
-    private LocalDateTime updateTime;
+    private Date updateTime;
 
     /**
      * ������������
diff --git a/screen-manage/src/main/java/com/moral/api/entity/ManageMenu.java b/screen-manage/src/main/java/com/moral/api/entity/ManageMenu.java
index 7e888f6..522ee7e 100644
--- a/screen-manage/src/main/java/com/moral/api/entity/ManageMenu.java
+++ b/screen-manage/src/main/java/com/moral/api/entity/ManageMenu.java
@@ -57,6 +57,7 @@
     /**
      * ���������������������������
      */
+    @TableField(value = "`order`")
     private Integer order;
 
     /**
diff --git a/screen-manage/src/main/java/com/moral/api/mapper/ManageMenuMapper.java b/screen-manage/src/main/java/com/moral/api/mapper/ManageMenuMapper.java
index 5d9b771..2258c82 100644
--- a/screen-manage/src/main/java/com/moral/api/mapper/ManageMenuMapper.java
+++ b/screen-manage/src/main/java/com/moral/api/mapper/ManageMenuMapper.java
@@ -34,6 +34,8 @@
 
     List<ManageMenu> getManageRoleByNameFuzzy(Map map);
 
+    List<ManageMenu> getManageMenuByNameFuzzy(Map map);
+
     List<ManageMenu> getManageMenuByCondition(Map map);
 
     List<ManageMenu> getManageMenuByRoleId(int roleId);
diff --git a/screen-manage/src/main/java/com/moral/api/pojo/dto/accountRole/AccountRoleDTO.java b/screen-manage/src/main/java/com/moral/api/pojo/dto/accountRole/AccountRoleDTO.java
new file mode 100644
index 0000000..95a84b0
--- /dev/null
+++ b/screen-manage/src/main/java/com/moral/api/pojo/dto/accountRole/AccountRoleDTO.java
@@ -0,0 +1,19 @@
+package com.moral.api.pojo.dto.accountRole;
+
+import lombok.Data;
+
+/**
+ * @ClassName AccountRoleDTO
+ * @Description TODO
+ * @Author ���������
+ * @Date 2021/6/9 8:56
+ * @Version TODO
+ **/
+@Data
+public class AccountRoleDTO {
+
+    private Integer code;
+
+    private String msg;
+
+}
diff --git a/screen-manage/src/main/java/com/moral/api/pojo/dto/login/LoginDTO.java b/screen-manage/src/main/java/com/moral/api/pojo/dto/login/LoginDTO.java
index 6fdca56..a6b6b42 100644
--- a/screen-manage/src/main/java/com/moral/api/pojo/dto/login/LoginDTO.java
+++ b/screen-manage/src/main/java/com/moral/api/pojo/dto/login/LoginDTO.java
@@ -1,5 +1,6 @@
 package com.moral.api.pojo.dto.login;
 
+import com.moral.api.pojo.redisBean.AccountInfoDTO;
 import lombok.Data;
 
 /**
diff --git a/screen-manage/src/main/java/com/moral/api/pojo/form/account/AccountUpdateForm.java b/screen-manage/src/main/java/com/moral/api/pojo/form/account/AccountUpdateForm.java
index ae3cfe8..238e94d 100644
--- a/screen-manage/src/main/java/com/moral/api/pojo/form/account/AccountUpdateForm.java
+++ b/screen-manage/src/main/java/com/moral/api/pojo/form/account/AccountUpdateForm.java
@@ -33,7 +33,6 @@
 
     private String wechat;
 
-    private List<Integer> roleIds;
 
     public boolean valid() {
         if (ObjectUtils.isEmpty(accountId))
@@ -43,8 +42,7 @@
                         ObjectUtils.isEmpty(password) &&
                         ObjectUtils.isEmpty(email) &&
                         ObjectUtils.isEmpty(mobile) &&
-                        ObjectUtils.isEmpty(wechat) &&
-                        null == roleIds
+                        ObjectUtils.isEmpty(wechat)
                 )
             return false;
         return true;
diff --git a/screen-manage/src/main/java/com/moral/api/pojo/form/accountRole/AccountRoleUpdateForm.java b/screen-manage/src/main/java/com/moral/api/pojo/form/accountRole/AccountRoleUpdateForm.java
new file mode 100644
index 0000000..038a4b3
--- /dev/null
+++ b/screen-manage/src/main/java/com/moral/api/pojo/form/accountRole/AccountRoleUpdateForm.java
@@ -0,0 +1,24 @@
+package com.moral.api.pojo.form.accountRole;
+
+import lombok.Data;
+
+/**
+ * @ClassName AccountUpdateRoleForm
+ * @Description TODO
+ * @Author ���������
+ * @Date 2021/6/9 8:51
+ * @Version TODO
+ **/
+@Data
+public class AccountRoleUpdateForm {
+
+    private Integer accountId;
+
+    private Integer roleId;
+
+    public boolean valid(){
+        if(accountId==null)
+            return false;
+        return true;
+    }
+}
diff --git a/screen-manage/src/main/java/com/moral/api/pojo/form/user/UserUpdateForm.java b/screen-manage/src/main/java/com/moral/api/pojo/form/user/UserUpdateForm.java
index 0a73bb5..29b53fb 100644
--- a/screen-manage/src/main/java/com/moral/api/pojo/form/user/UserUpdateForm.java
+++ b/screen-manage/src/main/java/com/moral/api/pojo/form/user/UserUpdateForm.java
@@ -34,6 +34,8 @@
 
     private String wechat;
 
+    private String userName;
+
     @DateTimeFormat(pattern = "yyyy-MM-dd")
     @JsonFormat(pattern = "yyyy-MM-dd",timezone = "GMT+8")
     private Date expireTime;
@@ -55,6 +57,7 @@
     public User formConvertEntity(){
         User user = new User();
         user.setId(id);
+        user.setUserName(userName);
         if (!ObjectUtils.isEmpty(password))
             user.setPassword(MD5Utils.saltMD5(AESUtils.decrypt(password)));
         user.setEmail(email);
diff --git a/screen-manage/src/main/java/com/moral/api/pojo/dto/login/AccountInfoDTO.java b/screen-manage/src/main/java/com/moral/api/pojo/redisBean/AccountInfoDTO.java
similarity index 87%
rename from screen-manage/src/main/java/com/moral/api/pojo/dto/login/AccountInfoDTO.java
rename to screen-manage/src/main/java/com/moral/api/pojo/redisBean/AccountInfoDTO.java
index ce073b0..4874bae 100644
--- a/screen-manage/src/main/java/com/moral/api/pojo/dto/login/AccountInfoDTO.java
+++ b/screen-manage/src/main/java/com/moral/api/pojo/redisBean/AccountInfoDTO.java
@@ -1,4 +1,4 @@
-package com.moral.api.pojo.dto.login;
+package com.moral.api.pojo.redisBean;
 
 import com.fasterxml.jackson.annotation.JsonInclude;
 import com.moral.api.entity.ManageAccount;
@@ -10,7 +10,7 @@
 
 /**
  * @ClassName AccountInfoDto
- * @Description TODO
+ * @Description ������������redis������������
  * @Author ���������
  * @Date 2021/3/12 13:51
  * @Version TODO
diff --git a/screen-manage/src/main/java/com/moral/api/pojo/vo/login/AccountInfoVO.java b/screen-manage/src/main/java/com/moral/api/pojo/vo/login/AccountInfoVO.java
index 5267d67..958da56 100644
--- a/screen-manage/src/main/java/com/moral/api/pojo/vo/login/AccountInfoVO.java
+++ b/screen-manage/src/main/java/com/moral/api/pojo/vo/login/AccountInfoVO.java
@@ -4,12 +4,11 @@
 import com.moral.api.entity.ManageAccount;
 import com.moral.api.entity.ManageMenu;
 import com.moral.api.entity.ManageRole;
-import com.moral.api.pojo.dto.login.AccountInfoDTO;
+import com.moral.api.pojo.redisBean.AccountInfoDTO;
 import lombok.Data;
 import org.springframework.util.ObjectUtils;
 
-import java.util.ArrayList;
-import java.util.List;
+import java.util.*;
 
 /**
  * @ClassName AccountInfoVO
@@ -65,6 +64,10 @@
                 removeAttribute(menu);
             }
         }
+        //menu������������
+        if (!ObjectUtils.isEmpty(menus)) {
+            orderRootMenu(menus);
+        }
         vo.setAccountId(account.getId());
         vo.setUserName(account.getUserName());
         vo.setMenus(menus);
@@ -85,4 +88,39 @@
         }
     }
 
+
+    /**
+    * @Description: ������������������������
+            * @Param: [menus]
+            * @return: void
+            * @Author: ���������
+            * @Date: 2021/6/8
+            */
+    public static void orderRootMenu(List<ManageMenu> menus){
+        menus.sort(Comparator.comparing(ManageMenu::getOrder));
+        for (ManageMenu menu : menus) {
+            orderMenu(menu);
+        }
+    }
+
+    /**
+    * @Description: ���������������������������
+            * @Param: [menu]
+            * @return: void
+            * @Author: ���������
+            * @Date: 2021/6/8
+            */
+    public static void orderMenu(ManageMenu menu){
+        List<ManageMenu> children = menu.getChildren();
+        if(!ObjectUtils.isEmpty(children)){
+            children.sort(Comparator.comparing(ManageMenu::getOrder));
+            for (ManageMenu child : children) {
+                orderMenu(child);
+            }
+        }else{
+            return;
+        }
+    }
+
+
 }
diff --git a/screen-manage/src/main/java/com/moral/api/pojo/vo/login/LoginVO.java b/screen-manage/src/main/java/com/moral/api/pojo/vo/login/LoginVO.java
index 52878a0..bf15054 100644
--- a/screen-manage/src/main/java/com/moral/api/pojo/vo/login/LoginVO.java
+++ b/screen-manage/src/main/java/com/moral/api/pojo/vo/login/LoginVO.java
@@ -1,11 +1,10 @@
 package com.moral.api.pojo.vo.login;
 
 import com.fasterxml.jackson.annotation.JsonInclude;
-import com.moral.api.pojo.dto.login.AccountInfoDTO;
+import com.moral.api.pojo.redisBean.AccountInfoDTO;
 import com.moral.api.pojo.dto.login.LoginDTO;
 import com.moral.constant.ResponseCodeEnum;
 import lombok.Data;
-import org.springframework.util.ObjectUtils;
 
 /**
  * @ClassName LoginVo
@@ -24,11 +23,6 @@
      * */
     private String token;
 
-    /*
-     * ������������������
-     * */
-    private AccountInfoVO accountInfoVO;
-
     /**
      * @Description: DTO������VO
      * @Param: [dto]
@@ -41,11 +35,7 @@
             return null;
 
         LoginVO vo = new LoginVO();
-        String token = dto.getToken();
-        AccountInfoDTO accountInfoDTO = dto.getAccountInfoDTO();
-        AccountInfoVO accountInfoVO = AccountInfoVO.convert(accountInfoDTO);
-        vo.setAccountInfoVO(accountInfoVO);
-        vo.setToken(token);
+        vo.setToken(dto.getToken());
         return vo;
     }
 }
diff --git a/screen-manage/src/main/java/com/moral/api/pojo/vo/sysDictType/SysDictTypeDeleteVO.java b/screen-manage/src/main/java/com/moral/api/pojo/vo/sysDictType/SysDictTypeDeleteVO.java
deleted file mode 100644
index 0a33707..0000000
--- a/screen-manage/src/main/java/com/moral/api/pojo/vo/sysDictType/SysDictTypeDeleteVO.java
+++ /dev/null
@@ -1,27 +0,0 @@
-package com.moral.api.pojo.vo.sysDictType;
-
-import com.moral.api.entity.SysDictType;
-import com.moral.api.pojo.dto.sysDictType.SysDictTypeDTO;
-import com.moral.constant.ResponseCodeEnum;
-
-/**
- * @ClassName SysDictTypeDeleteVO
- * @Description TODO
- * @Author ���������
- * @Date 2021/4/16 8:43
- * @Version TODO
- **/
-public class SysDictTypeDeleteVO extends SysDictTypeVO {
-
-    public static SysDictTypeDeleteVO convert(SysDictTypeDTO dto) {
-        if (dto.getCode() != ResponseCodeEnum.SUCCESS.getCode())
-            return null;
-        //������������������
-        SysDictTypeDeleteVO vo = new SysDictTypeDeleteVO();
-        SysDictType type = dto.getSysDictType();
-        vo.setId(type.getId());
-        vo.setName(type.getName());
-        vo.setDesc(type.getDesc());
-        return vo;
-    }
-}
diff --git a/screen-manage/src/main/java/com/moral/api/pojo/vo/sysDictType/SysDictTypeInsertVO.java b/screen-manage/src/main/java/com/moral/api/pojo/vo/sysDictType/SysDictTypeInsertVO.java
deleted file mode 100644
index 62fbf32..0000000
--- a/screen-manage/src/main/java/com/moral/api/pojo/vo/sysDictType/SysDictTypeInsertVO.java
+++ /dev/null
@@ -1,27 +0,0 @@
-package com.moral.api.pojo.vo.sysDictType;
-
-import com.moral.api.entity.SysDictType;
-import com.moral.api.pojo.dto.sysDictType.SysDictTypeDTO;
-import com.moral.constant.ResponseCodeEnum;
-
-/**
- * @ClassName SysDictTypeInsertVO
- * @Description TODO
- * @Author ���������
- * @Date 2021/4/15 14:32
- * @Version TODO
- **/
-public class SysDictTypeInsertVO extends SysDictTypeVO {
-
-    public static SysDictTypeInsertVO convert(SysDictTypeDTO dto){
-        if (dto.getCode() != ResponseCodeEnum.SUCCESS.getCode())
-            return null;
-        //������������������
-        SysDictTypeInsertVO vo = new SysDictTypeInsertVO();
-        SysDictType sysDictType = dto.getSysDictType();
-        vo.setId(sysDictType.getId());
-        vo.setName(sysDictType.getName());
-        vo.setDesc(sysDictType.getDesc());
-        return vo;
-    }
-}
diff --git a/screen-manage/src/main/java/com/moral/api/pojo/vo/sysDictType/SysDictTypeUpdateVO.java b/screen-manage/src/main/java/com/moral/api/pojo/vo/sysDictType/SysDictTypeUpdateVO.java
deleted file mode 100644
index 2fab990..0000000
--- a/screen-manage/src/main/java/com/moral/api/pojo/vo/sysDictType/SysDictTypeUpdateVO.java
+++ /dev/null
@@ -1,26 +0,0 @@
-package com.moral.api.pojo.vo.sysDictType;
-
-import com.moral.api.entity.SysDictType;
-import com.moral.api.pojo.dto.sysDictType.SysDictTypeDTO;
-import com.moral.constant.ResponseCodeEnum;
-
-/**
- * @ClassName SysDictTypeUpdateVO
- * @Description TODO
- * @Author ���������
- * @Date 2021/4/15 15:52
- * @Version TODO
- **/
-public class SysDictTypeUpdateVO extends SysDictTypeVO {
-
-    public static SysDictTypeUpdateVO convert(SysDictTypeDTO dto) {
-        if (dto.getCode() != ResponseCodeEnum.SUCCESS.getCode())
-            return null;
-        SysDictTypeUpdateVO vo = new SysDictTypeUpdateVO();
-        SysDictType sysDictType = dto.getSysDictType();
-        vo.setId(sysDictType.getId());
-        vo.setName(sysDictType.getName());
-        vo.setDesc(sysDictType.getDesc());
-        return vo;
-    }
-}
diff --git a/screen-manage/src/main/java/com/moral/api/service/ManageAccountRoleService.java b/screen-manage/src/main/java/com/moral/api/service/ManageAccountRoleService.java
index 3abe688..8cd5a9c 100644
--- a/screen-manage/src/main/java/com/moral/api/service/ManageAccountRoleService.java
+++ b/screen-manage/src/main/java/com/moral/api/service/ManageAccountRoleService.java
@@ -2,6 +2,8 @@
 
 import com.moral.api.entity.ManageAccountRole;
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.moral.api.pojo.dto.accountRole.AccountRoleDTO;
+import com.moral.api.pojo.form.accountRole.AccountRoleUpdateForm;
 
 /**
  * <p>
@@ -13,4 +15,13 @@
  */
 public interface ManageAccountRoleService extends IService<ManageAccountRole> {
 
+    /**
+    * @Description: ������������������
+            * @Param: [form]
+            * @return: com.moral.api.pojo.dto.accountRole.AccountRoleDTO
+            * @Author: ���������
+            * @Date: 2021/6/9
+            */
+    AccountRoleDTO updateAccountRole(AccountRoleUpdateForm form);
+
 }
diff --git a/screen-manage/src/main/java/com/moral/api/service/ManageMenuService.java b/screen-manage/src/main/java/com/moral/api/service/ManageMenuService.java
index d8e1711..5c67807 100644
--- a/screen-manage/src/main/java/com/moral/api/service/ManageMenuService.java
+++ b/screen-manage/src/main/java/com/moral/api/service/ManageMenuService.java
@@ -38,6 +38,10 @@
 
     List<Map<String,Object>> getManageMenuByNameFuzzy(Map map);
 
+    Map<String,Object> getManageMenuByCondition(Map map);
+
+    Map<String,Object> getManageParentMenu(Map map);
+
     List<Map<String,Object>> getManageMenuByParentId(Map map);
 
     List<ManageMenu> getParentChildrenMenusByRoles(List<ManageRole> roles);
diff --git a/screen-manage/src/main/java/com/moral/api/service/ManageRoleService.java b/screen-manage/src/main/java/com/moral/api/service/ManageRoleService.java
index a04c024..7db2502 100644
--- a/screen-manage/src/main/java/com/moral/api/service/ManageRoleService.java
+++ b/screen-manage/src/main/java/com/moral/api/service/ManageRoleService.java
@@ -30,4 +30,6 @@
 
     @Transactional
     Map<String,Object> deleteManageRole(Map map);
+
+    ManageRole getRoleByAccountId(Integer accountId);
 }
diff --git a/screen-manage/src/main/java/com/moral/api/service/MonitorPointService.java b/screen-manage/src/main/java/com/moral/api/service/MonitorPointService.java
index d5e0349..d617135 100644
--- a/screen-manage/src/main/java/com/moral/api/service/MonitorPointService.java
+++ b/screen-manage/src/main/java/com/moral/api/service/MonitorPointService.java
@@ -4,6 +4,7 @@
 import com.baomidou.mybatisplus.extension.service.IService;
 import org.springframework.transaction.annotation.Transactional;
 
+import java.util.List;
 import java.util.Map;
 
 /**
@@ -30,4 +31,6 @@
 
     Map<String,Object> getMonitorPointByFuzzy(Map map);
 
+    List<MonitorPoint> getMonitorPointsByOrganizationId(Integer organizationId);
+
 }
diff --git a/screen-manage/src/main/java/com/moral/api/service/UserService.java b/screen-manage/src/main/java/com/moral/api/service/UserService.java
index 86b437e..a453dd8 100644
--- a/screen-manage/src/main/java/com/moral/api/service/UserService.java
+++ b/screen-manage/src/main/java/com/moral/api/service/UserService.java
@@ -38,15 +38,6 @@
     UserDTO updateUser(UserUpdateForm form);
 
     /**
-    * @Description: ���������������admin������
-            * @Param: [form]
-            * @return: com.moral.api.pojo.dto.user.UserDTO
-            * @Author: ���������
-            * @Date: 2021/5/20
-            */
-    UserDTO deleteUser(UserDeleteForm form);
-
-    /**
     * @Description: ���������������admin������
             * @Param: [form]
             * @return: com.moral.api.pojo.dto.user.UserDTO
diff --git a/screen-manage/src/main/java/com/moral/api/service/impl/DeviceServiceImpl.java b/screen-manage/src/main/java/com/moral/api/service/impl/DeviceServiceImpl.java
index b34ad91..01836ff 100644
--- a/screen-manage/src/main/java/com/moral/api/service/impl/DeviceServiceImpl.java
+++ b/screen-manage/src/main/java/com/moral/api/service/impl/DeviceServiceImpl.java
@@ -83,6 +83,7 @@
         deviceMapper.insert(device);
         Map<String, Object> deviceInfo = selectDeviceInfoById(device.getId());
         //������������������������redis
+        RedisUtil.del("device_" + device.getMac());
         RedisUtil.set("device_" + device.getMac(), deviceInfo);
         //������������������
         HttpServletRequest request = ((ServletRequestAttributes) Objects.requireNonNull(RequestContextHolder.getRequestAttributes())).getRequest();
@@ -265,6 +266,9 @@
         deviceInfo.put("createTime", DateUtils.dateToDateString(device.getCreateTime()));
         deviceInfo.put("installTime", device.getInstallTime() == null ? null : DateUtils.dateToDateString(device.getInstallTime()));
 
+        //������������
+        deviceInfo.put("extend", device.getExtend());
+
         //������
         deviceInfo.put("profession", device.getProfession());
         deviceInfo.put("professionName", device.getProfessionName());
@@ -312,6 +316,7 @@
         mpInfo.put("id", monitorPoint.getId());
         mpInfo.put("name", monitorPoint.getName());
         deviceInfo.put("monitorPoint", mpInfo);
+
         RedisUtil.set("device_" + mac, deviceInfo);
         return deviceInfo;
     }
diff --git a/screen-manage/src/main/java/com/moral/api/service/impl/ManageAccountRoleServiceImpl.java b/screen-manage/src/main/java/com/moral/api/service/impl/ManageAccountRoleServiceImpl.java
index f3b2d19..f521ccb 100644
--- a/screen-manage/src/main/java/com/moral/api/service/impl/ManageAccountRoleServiceImpl.java
+++ b/screen-manage/src/main/java/com/moral/api/service/impl/ManageAccountRoleServiceImpl.java
@@ -1,10 +1,31 @@
 package com.moral.api.service.impl;
 
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
+import com.moral.api.entity.ManageAccount;
 import com.moral.api.entity.ManageAccountRole;
+import com.moral.api.entity.ManageRole;
+import com.moral.api.mapper.ManageAccountMapper;
 import com.moral.api.mapper.ManageAccountRoleMapper;
+import com.moral.api.mapper.ManageRoleMapper;
+import com.moral.api.pojo.dto.accountRole.AccountRoleDTO;
+import com.moral.api.pojo.form.accountRole.AccountRoleUpdateForm;
 import com.moral.api.service.ManageAccountRoleService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.moral.api.service.ManageAccountService;
+import com.moral.api.service.ManageRoleService;
+import com.moral.api.util.LogUtils;
+import com.moral.constant.Constants;
+import com.moral.constant.ResponseCodeEnum;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.util.ObjectUtils;
+import org.springframework.web.context.request.RequestContextHolder;
+import org.springframework.web.context.request.ServletRequestAttributes;
+
+import javax.management.relation.Role;
+import javax.servlet.http.HttpServletRequest;
 
 /**
  * <p>
@@ -17,4 +38,74 @@
 @Service
 public class ManageAccountRoleServiceImpl extends ServiceImpl<ManageAccountRoleMapper, ManageAccountRole> implements ManageAccountRoleService {
 
+    @Autowired
+    ManageAccountRoleMapper manageAccountRoleMapper;
+    @Autowired
+    ManageRoleMapper manageRoleMapper;
+    @Autowired
+    ManageRoleService manageRoleService;
+    @Autowired
+    ManageAccountMapper manageAccountMapper;
+    @Autowired
+    LogUtils logUtils;
+
+    @Override
+    @Transactional
+    public AccountRoleDTO updateAccountRole(AccountRoleUpdateForm form) {
+        //������������������
+        AccountRoleDTO dto = new AccountRoleDTO();
+        //������
+        Integer accountId = form.getAccountId();
+        Integer roleId = form.getRoleId();
+        //������������������������������������������
+        ManageAccount account = manageAccountMapper.selectById(accountId);
+        //������������������������������������������
+        ManageRole updateRole = null;
+        if (!ObjectUtils.isEmpty(roleId)) {
+            QueryWrapper<ManageRole> queryWrapper = new QueryWrapper();
+            queryWrapper.eq("is_delete", Constants.NOT_DELETE);
+            queryWrapper.eq("id", roleId);
+            updateRole = manageRoleMapper.selectOne(queryWrapper);
+        }
+        //������������������������������������
+        ManageRole oldRole = manageRoleService.getRoleByAccountId(accountId);
+        //������������������������������������
+        UpdateWrapper updateWrapper = new UpdateWrapper();
+        updateWrapper.set("is_delete", Constants.DELETE);
+        updateWrapper.eq("account_id", accountId);
+        manageAccountRoleMapper.update(null, updateWrapper);
+        if (!ObjectUtils.isEmpty(roleId)) {
+            ManageAccountRole role = new ManageAccountRole();
+            role.setAccountId(accountId);
+            role.setRoleId(roleId);
+            manageAccountRoleMapper.insert(role);
+        }
+        //������������
+        insertUpdateLog(oldRole,updateRole,account);
+        //������������������
+        dto.setCode(ResponseCodeEnum.SUCCESS.getCode());
+        dto.setMsg(ResponseCodeEnum.SUCCESS.getMsg());
+        return dto;
+    }
+
+    private void insertUpdateLog(ManageRole oldRole, ManageRole updateRole, ManageAccount account) {
+        HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
+        StringBuilder content = new StringBuilder();
+        content.append("������������������").append(account.getUserName() + ";")
+                .append("������:" + account.getAccount() + ";")
+                .append("������:");
+
+        if(ObjectUtils.isEmpty(oldRole))
+            content.append("���->");
+        else
+            content.append(oldRole.getName()+"->");
+
+        if(ObjectUtils.isEmpty(updateRole))
+            content.append("���;");
+        else
+            content.append(updateRole.getName()+";");
+
+        logUtils.saveOperationForManage(request, content.toString(), Constants.UPDATE_OPERATE_TYPE);
+    }
+
 }
diff --git a/screen-manage/src/main/java/com/moral/api/service/impl/ManageAccountServiceImpl.java b/screen-manage/src/main/java/com/moral/api/service/impl/ManageAccountServiceImpl.java
index 2076867..dcc9e60 100644
--- a/screen-manage/src/main/java/com/moral/api/service/impl/ManageAccountServiceImpl.java
+++ b/screen-manage/src/main/java/com/moral/api/service/impl/ManageAccountServiceImpl.java
@@ -11,10 +11,9 @@
 import com.moral.api.entity.ManageRole;
 import com.moral.api.mapper.ManageAccountMapper;
 import com.moral.api.mapper.ManageAccountRoleMapper;
-import com.moral.api.mapper.ManageMenuMapper;
 import com.moral.api.mapper.ManageRoleMapper;
 import com.moral.api.pojo.dto.account.*;
-import com.moral.api.pojo.dto.login.AccountInfoDTO;
+import com.moral.api.pojo.redisBean.AccountInfoDTO;
 import com.moral.api.pojo.dto.login.LoginDTO;
 import com.moral.api.pojo.form.account.AccountDeleteForm;
 import com.moral.api.pojo.form.account.AccountInsertForm;
@@ -40,6 +39,7 @@
 
 import javax.servlet.http.HttpServletRequest;
 import java.util.*;
+import java.util.function.Predicate;
 
 /**
  * <p>
@@ -89,21 +89,10 @@
         //������������������
         QueryWrapper<ManageAccount> wrapper = new QueryWrapper<>();
         wrapper.eq("account", account);
-        List<ManageAccount> manageAccounts = manageAccountMapper.selectList(wrapper);
-        if (ObjectUtils.isEmpty(manageAccounts)) {
-            loginDTO.setCode(ResponseCodeEnum.ACCOUNT_NOT_EXIST.getCode());
-            loginDTO.setMsg(ResponseCodeEnum.ACCOUNT_NOT_EXIST.getMsg());
-            return loginDTO;
-        }
-        //������������������������
-        ManageAccount manageAccount = null;
-        for (ManageAccount value : manageAccounts) {
-            if (Constants.NOT_DELETE.equals(value.getIsDelete()))
-                manageAccount = value;
-        }
-
+        wrapper.eq("is_delete",Constants.NOT_DELETE);
+        ManageAccount manageAccount = manageAccountMapper.selectOne(wrapper);
         if (ObjectUtils.isEmpty(manageAccount)) {
-            loginDTO.setCode(ResponseCodeEnum.ACCOUNT_IS_DELETE.getCode());
+            loginDTO.setCode(ResponseCodeEnum.ACCOUNT_NOT_EXIST.getCode());
             loginDTO.setMsg(ResponseCodeEnum.ACCOUNT_NOT_EXIST.getMsg());
             return loginDTO;
         }
@@ -118,7 +107,7 @@
         List<ManageRole> roles = manageRoleMapper.getManageRoleByAccountId(manageAccount.getId());
 
         //������������
-        List<ManageMenu> menus = null;
+        List<ManageMenu> menus = new ArrayList<>();
         if (!ObjectUtils.isEmpty(roles)) {
             menus = manageMenuService.getParentChildrenMenusByRoles(roles);
         }
@@ -135,7 +124,6 @@
         //������������������
         loginDTO.setCode(ResponseCodeEnum.SUCCESS.getCode());
         loginDTO.setMsg(ResponseCodeEnum.SUCCESS.getMsg());
-        loginDTO.setAccountInfoDTO(accountInfoDTO);
         loginDTO.setToken(token);
 
         //������������������
@@ -267,9 +255,27 @@
 
         //������������
         Page resultPage = manageAccountMapper.selectPage(queryPage, wrapper);
-
-        //���������������������������
         List<ManageAccount> accounts = resultPage.getRecords();
+        //������������������������������admin������admin���������������������
+        AccountInfoDTO accountInfoDTO = (AccountInfoDTO) TokenUtils.getUserInfo();
+        List<ManageRole> ownRoles = accountInfoDTO.getRoles();
+        boolean ownAdminRole = false;
+        for (ManageRole ownRole : ownRoles) {
+            String roleName = ownRole.getName();
+            if ("admin".equals(roleName))
+                ownAdminRole = true;
+        }
+        if (!ownAdminRole) {
+            accounts.removeIf(new Predicate<ManageAccount>() {
+                @Override
+                public boolean test(ManageAccount manageAccount) {
+                    if (manageAccount.getAccount().equals("admin"))
+                        return true;
+                    return false;
+                }
+            });
+        }
+        //���������������������������
         List<AccountDTO> accountDTOS = new ArrayList<>();
         for (ManageAccount manageAccount : accounts) {
             AccountDTO accountDTO = new AccountDTO();
@@ -354,7 +360,6 @@
         AccountDTO accountDTO = new AccountDTO();
         //������
         ManageAccount manageAccount = accountUpdateForm.formConvertEntity();
-        List<Integer> roleIds = accountUpdateForm.getRoleIds();
 
         //������������������������������������������
         QueryWrapper<ManageAccount> oldAccountWrapper = new QueryWrapper<>();
@@ -370,40 +375,15 @@
         }
 
         //������ManageAccount���
-        Map manageAccountMap = JSONObject.parseObject(JSON.toJSONString(manageAccount), Map.class);//���������Map���������������������������
-        if (manageAccountMap.size() > 1) {//������������������������id���������������������������������
-            manageAccountMapper.updateById(manageAccount);
-        }
+        manageAccountMapper.updateById(manageAccount);
 
-        //������������������������������
-        List<ManageRole> oldRoles = manageRoleMapper.getManageRoleByAccountId(manageAccount.getId());
-
-        //���������������������������������ManageAccountRole���
-        /*
-         * ������roleIds���null������������������������������������������
-         * ������roleIds���������������������������������������������������
-         * ������roleIds���������������������������������������������
-         * */
-        if (roleIds != null) {
-            //������������������
-            UpdateWrapper<ManageAccountRole> deleteWrapper = new UpdateWrapper<>();
-            deleteWrapper.eq("account_id", manageAccount.getId()).set("is_delete", Constants.DELETE);
-            manageAccountRoleMapper.update(null, deleteWrapper);
-            /*������������������*/
-            for (Integer roleId : roleIds) {
-                ManageAccountRole manageAccountRole = new ManageAccountRole();
-                manageAccountRole.setAccountId(manageAccount.getId());
-                manageAccountRole.setRoleId(roleId);
-                manageAccountRoleMapper.insert(manageAccountRole);
-            }
-        }
+        //������������������
+        insertUpdateLog(accountUpdateForm, oldManageAccount);
         //������token
         TokenUtils.destoryToken(manageAccount.getId());
         //������������������
         accountDTO.setCode(ResponseCodeEnum.SUCCESS.getCode());
         accountDTO.setMsg(ResponseCodeEnum.SUCCESS.getMsg());
-        //������������������
-        insertUpdateLog(accountUpdateForm, oldManageAccount, oldRoles);
         return accountDTO;
     }
 
@@ -414,7 +394,7 @@
      * @Author: ���������
      * @Date: 2021/4/8
      */
-    private void insertUpdateLog(AccountUpdateForm updateForm, ManageAccount oldAccount, List<ManageRole> oldRoles) {
+    private void insertUpdateLog(AccountUpdateForm updateForm, ManageAccount oldAccount) {
         //������������������
         HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
         StringBuilder content = new StringBuilder();
@@ -430,43 +410,6 @@
             if ("password".equals(key)) {//������������������������������������������
                 if (!ObjectUtils.isEmpty(updateForm.getPassword())) {//���������������������������������
                     content.append("���������������;");
-                }
-            } else if ("roleIds".equals(key)) {//������������������������Id���������������������
-                List<Integer> newRoleIds = updateForm.getRoleIds();
-
-                if (newRoleIds != null && 0 == newRoleIds.size()) {//���������������������������������������������������������������
-                    content.append("������������������������������;");
-                }
-                if ((newRoleIds != null) && (newRoleIds.size() != 0)) {//���������������������������������������������null���������������������������
-                    StringBuilder oldRolesName = new StringBuilder("���");
-                    StringBuilder newRolesName = new StringBuilder("���");
-
-                    List<ManageRole> newRoles = null;
-                    if (!ObjectUtils.isEmpty(updateForm.getRoleIds())) {
-                        newRoles = manageRoleMapper.selectBatchIds(updateForm.getRoleIds());
-                    }
-
-                    if (!ObjectUtils.isEmpty(oldRoles)) {
-                        oldRolesName.deleteCharAt(oldRolesName.length() - 1);//������ "���"
-                        oldRolesName.append("[");
-                        for (ManageRole role : oldRoles) {
-                            oldRolesName.append(role.getName() + ",");
-                        }
-                        oldRolesName.deleteCharAt(oldRolesName.length() - 1);//������������������������
-                        oldRolesName.append("]");
-                    }
-
-                    if (!ObjectUtils.isEmpty(newRoles)) {
-                        newRolesName.deleteCharAt(newRolesName.length() - 1);//������ "���"
-                        newRolesName.append("[");
-                        for (ManageRole role : newRoles) {
-                            newRolesName.append(role.getName() + ",");
-                        }
-                        newRolesName.deleteCharAt(newRolesName.length() - 1);//������������������������
-                        newRolesName.append("]");
-                    }
-                    //������������content
-                    content.append(value + ":" + oldRolesName + "->" + newRolesName + ";");
                 }
             } else {//������������������
                 if (newParameters.get(key) != null) {
diff --git a/screen-manage/src/main/java/com/moral/api/service/impl/ManageMenuServiceImpl.java b/screen-manage/src/main/java/com/moral/api/service/impl/ManageMenuServiceImpl.java
index 5b9656c..e48fc17 100644
--- a/screen-manage/src/main/java/com/moral/api/service/impl/ManageMenuServiceImpl.java
+++ b/screen-manage/src/main/java/com/moral/api/service/impl/ManageMenuServiceImpl.java
@@ -60,15 +60,23 @@
         if (manageMenuMapper.getManageMenuByName(manageMenu.getName()) != null) {
             resultMap.put("code", ResponseCodeEnum.MENU_IS_EXIST.getCode());
             resultMap.put("msg", ResponseCodeEnum.MENU_IS_EXIST.getMsg());
-        } else {
-            manageMenuMapper.insertOne(manageMenu);
-            //������������������
-            HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
-            String content = "������������:"+manageMenu.getName()+";";
-            logUtils.saveOperationForManage(request,content,Constants.INSERT_OPERATE_TYPE);
-            resultMap.put("code", ResponseCodeEnum.SUCCESS.getCode());
-            resultMap.put("msg", ResponseCodeEnum.SUCCESS.getMsg());
+            return resultMap;
         }
+        QueryWrapper<ManageMenu> wrapper_url = new QueryWrapper();
+        wrapper_url.eq("url",manageMenu.getUrl());
+        wrapper_url.eq("is_delete",Constants.NOT_DELETE);
+        if (manageMenuMapper.selectCount(wrapper_url) != 0) {
+            resultMap.put("code", ResponseCodeEnum.URL_IS_EXIST.getCode());
+            resultMap.put("msg", ResponseCodeEnum.URL_IS_EXIST.getMsg());
+            return resultMap;
+        }
+        manageMenuMapper.insertOne(manageMenu);
+        //������������������
+        HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
+        String content = "������������:"+manageMenu.getName()+";";
+        logUtils.saveOperationForManage(request,content,Constants.INSERT_OPERATE_TYPE);
+        resultMap.put("code", ResponseCodeEnum.SUCCESS.getCode());
+        resultMap.put("msg", ResponseCodeEnum.SUCCESS.getMsg());
         return resultMap;
     }
 
@@ -84,37 +92,56 @@
         if (manageMenuMapper.getManageMenuById(Integer.parseInt(map.get("id").toString())) == null) {
             resultMap.put("code", ResponseCodeEnum.MENU_IS_NULL.getCode());
             resultMap.put("msg", ResponseCodeEnum.MENU_IS_NULL.getMsg());
-        } else {
-            //���������������������������������������
-            ManageMenu manageMenuOld = manageMenuMapper.getManageMenuById(Integer.parseInt(map.get("id").toString()));
-            manageMenuMapper.updateManageMenuById(map);
-            //������������������
-            HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
-            String content = "���������������:"+manageMenuOld.getName()+";";
-            for (Object key:map.keySet()) {
-                if (key.toString().equals("name")&&map.get(key)!=null){
-                    content = content+"���������:"+manageMenuOld.getName()+"->"+map.get(key)+";";
-                }
-                if (key.toString().equals("url")&&map.get(key)!=null){
-                    content = content+"url������:"+manageMenuOld.getUrl()+"->"+map.get(key)+";";
-                }
-                if (key.toString().equals("icon")&&map.get(key)!=null){
-                    content = content+"������������:"+manageMenuOld.getIcon()+"->"+map.get(key)+";";
-                }
-                if (key.toString().equals("parent_id")&&map.get(key)!=null){
+            return resultMap;
+        }
+        if (map.get("name")!=null && manageMenuMapper.getManageMenuByName(map.get("name").toString()) != null) {
+            resultMap.put("code", ResponseCodeEnum.MENU_IS_EXIST.getCode());
+            resultMap.put("msg", ResponseCodeEnum.MENU_IS_EXIST.getMsg());
+            return resultMap;
+        }
+        QueryWrapper<ManageMenu> wrapper_url = new QueryWrapper();
+        wrapper_url.eq("url",map.get("url"));
+        wrapper_url.eq("is_delete",Constants.NOT_DELETE);
+        if (manageMenuMapper.selectCount(wrapper_url) != 0) {
+            resultMap.put("code", ResponseCodeEnum.URL_IS_EXIST.getCode());
+            resultMap.put("msg", ResponseCodeEnum.URL_IS_EXIST.getMsg());
+            return resultMap;
+        }
+        //���������������������������������������
+        ManageMenu manageMenuOld = manageMenuMapper.getManageMenuById(Integer.parseInt(map.get("id").toString()));
+        manageMenuMapper.updateManageMenuById(map);
+        //������������������
+        HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
+        String content = "���������������:"+manageMenuOld.getName()+";";
+        for (Object key:map.keySet()) {
+            if (key.toString().equals("name")&&map.get(key)!=null){
+                content = content+"���������:"+manageMenuOld.getName()+"->"+map.get(key)+";";
+            }
+            if (key.toString().equals("url")&&map.get(key)!=null){
+                content = content+"url������:"+manageMenuOld.getUrl()+"->"+map.get(key)+";";
+            }
+            if (key.toString().equals("icon")&&map.get(key)!=null){
+                content = content+"������������:"+manageMenuOld.getIcon()+"->"+map.get(key)+";";
+            }
+            if (key.toString().equals("parent_id")&&map.get(key)!=null){
+                if (map.get(key).toString().equals("0")){
+                    content = content+"���������:"+manageMenuMapper.getManageMenuById(manageMenuOld.getId()).getName()+"->0"+";";
+                }else if (manageMenuOld.getId().toString().equals("0")){
+                    content = content+"���������:"+"0->"+manageMenuMapper.getManageMenuById(Integer.parseInt(map.get(key).toString())).getName()+";";
+                }else {
                     content = content+"���������:"+manageMenuMapper.getManageMenuById(manageMenuOld.getId()).getName()+"->"+manageMenuMapper.getManageMenuById(Integer.parseInt(map.get(key).toString())).getName()+";";
                 }
-                if (key.toString().equals("order")&&map.get(key)!=null){
-                    content = content+"������������������������:"+manageMenuOld.getOrder()+"->"+map.get(key)+";";
-                }
-                if (key.toString().equals("desc")&&map.get(key)!=null){
-                    content = content+"������:"+manageMenuOld.getDesc()+"->"+map.get(key)+";";
-                }
             }
-            logUtils.saveOperationForManage(request,content,Constants.UPDATE_OPERATE_TYPE);
-            resultMap.put("code", ResponseCodeEnum.SUCCESS.getCode());
-            resultMap.put("msg", ResponseCodeEnum.SUCCESS.getMsg());
+            if (key.toString().equals("order")&&map.get(key)!=null){
+                content = content+"������������������������:"+manageMenuOld.getOrder()+"->"+map.get(key)+";";
+            }
+            if (key.toString().equals("desc")&&map.get(key)!=null){
+                content = content+"������:"+manageMenuOld.getDesc()+"->"+map.get(key)+";";
+            }
         }
+        logUtils.saveOperationForManage(request,content,Constants.UPDATE_OPERATE_TYPE);
+        resultMap.put("code", ResponseCodeEnum.SUCCESS.getCode());
+        resultMap.put("msg", ResponseCodeEnum.SUCCESS.getMsg());
         return resultMap;
     }
 
@@ -237,10 +264,15 @@
     @Override
     public List<Map<String,Object>> getManageMenuByNameFuzzy(Map map) {
         Map limitMap = new HashMap();
-        limitMap.put("name", map.get("name"));
+        if(!ObjectUtils.isEmpty(map.get("name"))){
+            limitMap.put("name", map.get("name"));
+        }
+        if(!ObjectUtils.isEmpty(map.get("parent_id"))){
+            limitMap.put("parent_id", map.get("parent_id"));
+        }
         limitMap.put("start", (Integer.parseInt(map.get("current").toString()) - 1) * Integer.parseInt(map.get("size").toString()));
         limitMap.put("number", Integer.parseInt(map.get("size").toString()));
-        List<ManageMenu> manageMenus = manageMenuMapper.getManageRoleByNameFuzzy(limitMap);
+        List<ManageMenu> manageMenus = manageMenuMapper.getManageMenuByNameFuzzy(limitMap);
         SimpleDateFormat SDF = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
         List<Map<String,Object>> resultList = new ArrayList<>();
         for (ManageMenu manageMenu:manageMenus) {
@@ -266,6 +298,67 @@
     }
 
     @Override
+    public Map<String, Object> getManageMenuByCondition(Map map) {
+        Map<String,Object> resultMap = new HashMap<>();
+        int current = Integer.parseInt(map.get("current").toString());
+        int size = Integer.parseInt(map.get("size").toString());
+        Page<ManageMenu> page = new Page<>(current,size);
+        QueryWrapper<ManageMenu> wrapper = new QueryWrapper();
+        wrapper.eq("is_delete",Constants.NOT_DELETE);
+        if(!ObjectUtils.isEmpty(map.get("name"))){
+            wrapper.like("name", map.get("name"));
+        }
+        if(!ObjectUtils.isEmpty(map.get("parent_id"))){
+            wrapper.eq("parent_id", map.get("parent_id"));
+        }
+        Page resultpage = manageMenuMapper.selectPage(page,wrapper);
+        List<ManageMenu> manageMenus = resultpage.getRecords();
+        SimpleDateFormat SDF = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+        List<Map<String,Object>> manageMenuList = new ArrayList<>();
+        for (ManageMenu manageMenu:manageMenus) {
+            Map manegeMenuMap = JSON.parseObject(JSON.toJSONString(manageMenu));
+            if (manageMenu.getParentId().equals(0)){
+                manegeMenuMap.put("parent_name","");
+            }else {
+                ManageMenu parentMenu = manageMenuMapper.getManageMenuById(manageMenu.getParentId());
+                if (ObjectUtils.isEmpty(parentMenu)){
+                    manegeMenuMap.put("parent_name","");
+                }else {
+                    String parent_name = parentMenu.getName();
+                    manegeMenuMap.put("parent_name",parent_name);
+                }
+            }
+            String createTime = SDF.format(manageMenu.getCreateTime());
+            String updateTime = SDF.format(manageMenu.getUpdateTime());
+            manegeMenuMap.put("createTime",createTime);
+            manegeMenuMap.put("updateTime",updateTime);
+            manageMenuList.add(manegeMenuMap);
+        }
+        resultMap.put("manageMenus",manageMenuList);
+        int totalNumber = manageMenuMapper.selectCount(wrapper);
+        resultMap.put("totalNumber",totalNumber);
+        resultMap.put("current",current);
+        resultMap.put("size",size);
+        int totalPageNumber = totalNumber/size;
+        if(totalNumber%size != 0){
+            totalPageNumber += 1;
+        }
+        resultMap.put("totalPageNumber",totalPageNumber);
+        return resultMap;
+    }
+
+    @Override
+    public Map<String, Object> getManageParentMenu(Map map) {
+        Map<String,Object> resultMap = new HashMap();
+        QueryWrapper<ManageMenu> wrapper = new QueryWrapper();
+        wrapper.eq("is_delete",Constants.NOT_DELETE);
+        wrapper.eq("parent_id",0);
+        List<ManageMenu> manageMenus = manageMenuMapper.selectList(wrapper);
+        resultMap.put("manageMenus",manageMenus);
+        return resultMap;
+    }
+
+    @Override
     public List<Map<String, Object>> getManageMenuByParentId(Map map) {
         Map limitMap = new HashMap();
         limitMap.put("parent_id", map.get("parent_id"));
diff --git a/screen-manage/src/main/java/com/moral/api/service/impl/ManageRoleServiceImpl.java b/screen-manage/src/main/java/com/moral/api/service/impl/ManageRoleServiceImpl.java
index c4a94b0..4877afb 100644
--- a/screen-manage/src/main/java/com/moral/api/service/impl/ManageRoleServiceImpl.java
+++ b/screen-manage/src/main/java/com/moral/api/service/impl/ManageRoleServiceImpl.java
@@ -4,16 +4,15 @@
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.moral.api.entity.*;
 import com.moral.api.mapper.*;
-import com.moral.api.pojo.dto.login.AccountInfoDTO;
 import com.moral.api.service.ManageRoleService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.moral.api.util.LogUtils;
 import com.moral.constant.Constants;
 import com.moral.constant.ResponseCodeEnum;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.data.domain.Page;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
+import org.springframework.util.ObjectUtils;
 import org.springframework.util.StringUtils;
 import org.springframework.web.context.request.RequestContextHolder;
 import org.springframework.web.context.request.ServletRequestAttributes;
@@ -179,6 +178,7 @@
         QueryWrapper<ManageRole> wrapper = new QueryWrapper();
         wrapper.eq("is_delete",0);
         wrapper.like("name",map.get("name"));
+        wrapper.orderByDesc("create_time");
         com.baomidou.mybatisplus.extension.plugins.pagination.Page resultpage = manageRoleMapper.selectPage(page,wrapper);
         List<ManageRole> manageRoles = resultpage.getRecords();
         SimpleDateFormat SDF = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
@@ -238,6 +238,21 @@
         return resultMap;
     }
 
+    @Override
+    public ManageRole getRoleByAccountId(Integer accountId) {
+        QueryWrapper<ManageAccountRole> queryAccountRoleWrapper = new QueryWrapper<>();
+        queryAccountRoleWrapper.eq("is_delete",Constants.NOT_DELETE);
+        queryAccountRoleWrapper.eq("account_id",accountId);
+        ManageAccountRole accountRole = manageAccountRoleMapper.selectOne(queryAccountRoleWrapper);
+        if(ObjectUtils.isEmpty(accountRole))
+            return null;
+        Integer roleId = accountRole.getRoleId();
+        QueryWrapper<ManageRole> queryRoleWrapper = new QueryWrapper();
+        queryRoleWrapper.eq("is_delete", Constants.NOT_DELETE);
+        queryRoleWrapper.eq("id", roleId);
+        return  manageRoleMapper.selectOne(queryRoleWrapper);
+    }
+
     /**
      * @Description: ���������������
      * @Param: [list, menuId]list���menuId������
diff --git a/screen-manage/src/main/java/com/moral/api/service/impl/MenuServiceImpl.java b/screen-manage/src/main/java/com/moral/api/service/impl/MenuServiceImpl.java
index 8155f11..7cb06d8 100644
--- a/screen-manage/src/main/java/com/moral/api/service/impl/MenuServiceImpl.java
+++ b/screen-manage/src/main/java/com/moral/api/service/impl/MenuServiceImpl.java
@@ -19,6 +19,7 @@
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.moral.constant.Constants;
 import com.moral.constant.ResponseCodeEnum;
+import com.sun.corba.se.spi.presentation.rmi.IDLNameTranslator;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
@@ -47,6 +48,7 @@
     GroupService groupService;
     @Autowired
     GroupMenuMapper groupMenuMapper;
+
 
     @Override
     public MenuQueryDTO queryAllMenus() {
@@ -82,18 +84,16 @@
             dto.setMsg(ResponseCodeEnum.ORGANIZATION_USER_NOT_EXIST.getMsg());
             return dto;
         }
-        //���������������������������������������
-        List<Menu> allMenus = menuMapper.getMenusByGroupId(group.getId());
-        //������������������������������
-        combinationParentChildrenMenus(allMenus);
-        //������������������������������������������
-        List<Menu> menus = new ArrayList<>();
-        for (Menu menu : allMenus) {
-            getNotParentMenu(menu, menus);
-        }
+        //���������������������������������������
+        List<Menu> ownMenus = menuMapper.getMenusByGroupId(group.getId());
+
+        /*������������������������������������������������������������
+         * ���������������������������������������������������������������������������������������������������������*/
+        removeMenuWithChildren(ownMenus);
+
         //������������������
         List<MenuDTO> dtos = new ArrayList<>();
-        for (Menu menu : menus) {
+        for (Menu menu : ownMenus) {
             MenuDTO menuDTO = new MenuDTO();
             menuDTO.setMenu(menu);
             dtos.add(menuDTO);
@@ -162,10 +162,12 @@
         UpdateWrapper deleteGroupMenuWrapper = new UpdateWrapper();
         List<Integer> allMenuIds = new ArrayList<>();
         allMenuIds.add(id);
-        allMenuIds.addAll(childrenIds);
-        deleteGroupMenuWrapper.in("menu_id",allMenuIds);
-        deleteGroupMenuWrapper.set("is_delete",Constants.DELETE);
-        groupMenuMapper.update(null,deleteGroupMenuWrapper);
+        if (!ObjectUtils.isEmpty(childrenIds)) {
+            allMenuIds.addAll(childrenIds);
+        }
+        deleteGroupMenuWrapper.in("menu_id", allMenuIds);
+        deleteGroupMenuWrapper.set("is_delete", Constants.DELETE);
+        groupMenuMapper.update(null, deleteGroupMenuWrapper);
         //������������������
         dto.setCode(ResponseCodeEnum.SUCCESS.getCode());
         dto.setMsg(ResponseCodeEnum.SUCCESS.getMsg());
@@ -245,13 +247,13 @@
 
 
     /**
-    * @Description: ������������������������������������������������������
-            * @Param: [menus]
-            * @return: java.util.List<com.moral.api.entity.Menu>
-            * @Author: ���������
-            * @Date: 2021/5/13
-            */
-    public void combinationParentChildrenMenus(List<Menu> menus){
+     * @Description: ������������������������������������������������������
+     * @Param: [menus]
+     * @return: java.util.List<com.moral.api.entity.Menu>
+     * @Author: ���������
+     * @Date: 2021/5/13
+     */
+    public void combinationParentChildrenMenus(List<Menu> menus) {
         //������menu������������
         Map<Integer, Menu> menuMap = new HashMap<>();
         for (Menu menu : menus) {
@@ -351,21 +353,35 @@
     }
 
     /**
-     * @Description: ������menu������������������������������������menus���
-     * @Param: [menu, menus]
-     * @return: void
+     * @Description: ������������������������������
+     * @Param: [menus]
+     * @return: java.util.List<com.moral.api.entity.Menu>
      * @Author: ���������
-     * @Date: 2021/5/13
+     * @Date: 2021/5/28
      */
-    private void getNotParentMenu(Menu menu, List<Menu> menus) {
-        if (ObjectUtils.isEmpty(menu.getChildren())) {
-            menus.add(menu);
-        } else {
-            List<Menu> children = menu.getChildren();
-            for (Menu child : children) {
-                getNotParentMenu(child, menus);
-            }
+    private void removeMenuWithChildren(List<Menu> menus) {
+        //������������������
+        QueryWrapper wrapper = new QueryWrapper();
+        wrapper.eq("is_delete", Constants.NOT_DELETE);
+        List<Menu> allMenus = menuMapper.selectList(wrapper);
+        //������menu������������
+        Map<Integer, Menu> menuMap = new HashMap<>();
+        for (Menu menu : allMenus) {
+            menuMap.put(menu.getId(), menu);
+            menu.setChildren(new ArrayList<>());//���������������
         }
+        for (Menu menu : allMenus) {
+            putMenuToParentMenu(menuMap, menu);
+        }
+        //������������������������������
+        menus.removeIf(new Predicate<Menu>() {
+            @Override
+            public boolean test(Menu menu) {
+                if (ObjectUtils.isEmpty(menuMap.get(menu.getId()).getChildren()))
+                    return false;
+                return true;
+            }
+        });
     }
 
 }
diff --git a/screen-manage/src/main/java/com/moral/api/service/impl/MonitorPointServiceImpl.java b/screen-manage/src/main/java/com/moral/api/service/impl/MonitorPointServiceImpl.java
index 0c047cd..a589883 100644
--- a/screen-manage/src/main/java/com/moral/api/service/impl/MonitorPointServiceImpl.java
+++ b/screen-manage/src/main/java/com/moral/api/service/impl/MonitorPointServiceImpl.java
@@ -6,13 +6,16 @@
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.moral.api.entity.MonitorPoint;
 import com.moral.api.entity.Organization;
+import com.moral.api.entity.SysArea;
 import com.moral.api.mapper.MonitorPointMapper;
 import com.moral.api.mapper.OrganizationMapper;
+import com.moral.api.mapper.SysAreaMapper;
 import com.moral.api.service.MonitorPointService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.moral.api.util.LogUtils;
 import com.moral.constant.Constants;
 import com.moral.constant.ResponseCodeEnum;
+import com.moral.util.ConvertUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
@@ -21,10 +24,7 @@
 
 import javax.servlet.http.HttpServletRequest;
 import java.text.SimpleDateFormat;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
 
 /**
  * <p>
@@ -43,6 +43,9 @@
 
     @Autowired(required = false)
     private OrganizationMapper organizationMapper;
+
+    @Autowired(required = false)
+    private SysAreaMapper sysAreaMapper;
 
     @Autowired
     LogUtils logUtils;
@@ -100,9 +103,9 @@
         int totalNumber = monitorPointMapper.selectCount(wrapper);
         String orderType = map.get("orderType").toString();
         if (orderType.equals(Constants.ORDER_ASC)){
-            wrapper.orderByAsc("create_time");
+            wrapper.orderByAsc("update_time");
         }else {
-            wrapper.orderByDesc("create_time");
+            wrapper.orderByDesc("update_time");
         }
         Page resultPage = monitorPointMapper.selectPage(page,wrapper);
         List<MonitorPoint> monitorPoints = resultPage.getRecords();
@@ -115,6 +118,34 @@
             monitorPointMap.put("createTime",createTime);
             monitorPointMap.put("updateTime",updateTime);
             monitorPointMap.put("key",monitorPoint.getId());
+            if (monitorPointMap.get("provinceCode")!=null&&monitorPointMap.get("provinceCode")!=""){
+                monitorPointMap.put("provinceCode",getAreaArr(monitorPointMap.get("provinceCode").toString()));
+            }else {
+                String[] arr = {null,null};
+                monitorPointMap.put("provinceCode",arr);
+            }
+            if (monitorPointMap.get("cityCode")!=null&&monitorPointMap.get("cityCode")!=""){
+                monitorPointMap.put("cityCode",getAreaArr(monitorPointMap.get("cityCode").toString()));
+            }else {
+                String[] arr = {null,null};
+                monitorPointMap.put("cityCode",arr);
+            }
+            if (monitorPointMap.get("areaCode")!=null&&monitorPointMap.get("areaCode")!=""){
+                monitorPointMap.put("areaCode",getAreaArr(monitorPointMap.get("areaCode").toString()));
+            }else {
+                String[] arr = {null,null};
+                monitorPointMap.put("areaCode",arr);
+            }
+            if (monitorPointMap.get("organizationId")!=null&&monitorPointMap.get("organizationId")!=""){
+                Organization organization = organizationMapper.selectById(Integer.parseInt(monitorPointMap.get("organizationId").toString()));
+                if (!ObjectUtils.isEmpty(organization)) {
+                    String[] organizationArr = {monitorPointMap.get("organizationId").toString(),organization.getName()};
+                    monitorPointMap.put("organizationId",organizationArr);
+                }
+            }else {
+                String[] arr = {null,null};
+                monitorPointMap.put("organizationId",arr);
+            }
             monitorPointtList.add(monitorPointMap);
         }
         resultMap.put("monitorPoints",monitorPointtList);
@@ -130,8 +161,12 @@
 
     @Override
     @Transactional
-    public Map<String, Object> updateMonitorPoint(Map<String,Object> updateMap) {
+    public Map<String, Object> updateMonitorPoint(Map<String,Object> parameterMap) {
         Map resultMap = new HashMap();
+        Map<String,Object> updateMap = new HashMap<>();
+        for (String key : parameterMap.keySet()) {
+            updateMap.put(ConvertUtils.toLine(key),parameterMap.get(key));
+        }
         if(!updateMap.containsKey("id")){
             resultMap.put("code",ResponseCodeEnum.PARAMETERS_IS_MISSING.getCode());
             resultMap.put("msg",ResponseCodeEnum.PARAMETERS_IS_MISSING.getMsg());
@@ -146,49 +181,51 @@
             resultMap.put("msg",ResponseCodeEnum.MONITOR_POINT_IS_NOT_EXIST.getMsg());
             return resultMap;
         }
-        if (updateMap.get("name")==null||updateMap.get("name")==""){
+        if (updateMap.get("name")!=null&&updateMap.get("name").equals("")){
             resultMap.put("code",ResponseCodeEnum.PARAMETERS_IS_MISSING.getCode());
             resultMap.put("msg",ResponseCodeEnum.PARAMETERS_IS_MISSING.getMsg());
             return resultMap;
         }
-        QueryWrapper<MonitorPoint> wapper_name = new QueryWrapper<>();
-        wapper_name.eq("name",updateMap.get("name"));
-        wapper_name.eq("is_delete",Constants.NOT_DELETE);
-        MonitorPoint monitorPoint_name = monitorPointMapper.selectOne(wapper_name);
-        if(monitorPoint_name!=null&&!monitorPoint_name.getId().toString().equals(updateMap.get("id").toString())){
-            resultMap.put("code",ResponseCodeEnum.MONITOR_POINT_IS_EXIST.getCode());
-            resultMap.put("msg",ResponseCodeEnum.MONITOR_POINT_IS_EXIST.getMsg());
-            return resultMap;
+        if (updateMap.get("name")!=null){
+            QueryWrapper<MonitorPoint> wapper_name = new QueryWrapper<>();
+            wapper_name.eq("name",updateMap.get("name"));
+            wapper_name.eq("is_delete",Constants.NOT_DELETE);
+            MonitorPoint monitorPoint_name = monitorPointMapper.selectOne(wapper_name);
+            if(monitorPoint_name!=null&&!monitorPoint_name.getId().toString().equals(updateMap.get("id").toString())){
+                resultMap.put("code",ResponseCodeEnum.MONITOR_POINT_IS_EXIST.getCode());
+                resultMap.put("msg",ResponseCodeEnum.MONITOR_POINT_IS_EXIST.getMsg());
+                return resultMap;
+            }
         }
         monitorPointMapper.updateMonitorPoint(updateMap);
         HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
         String content = "���������������:"+oldMonitorPoint.getName()+";";
         for (Object key:updateMap.keySet()) {
-            if (key.toString().equals("name")){
+            if (key.toString().equals("name")&&updateMap.get(key)!=null){
                 content = content+"������������:"+oldMonitorPoint.getName()+"->"+updateMap.get(key)+";";
             }
-            if (key.toString().equals("longitude")){
+            if (key.toString().equals("longitude")&&updateMap.get(key)!=null){
                 content = content+"������:"+oldMonitorPoint.getLongitude()+"->"+updateMap.get(key)+";";
             }
-            if (key.toString().equals("latitude")){
+            if (key.toString().equals("latitude")&&updateMap.get(key)!=null){
                 content = content+"������:"+oldMonitorPoint.getLatitude()+"->"+updateMap.get(key)+";";
             }
-            if (key.toString().equals("province_code")){
+            if (key.toString().equals("province_code")&&updateMap.get(key)!=null){
                 content = content+"������������:"+oldMonitorPoint.getProvinceCode()+"->"+updateMap.get(key)+";";
             }
-            if (key.toString().equals("city_code")){
+            if (key.toString().equals("city_code")&&updateMap.get(key)!=null){
                 content = content+"���������������:"+oldMonitorPoint.getCityCode()+"->"+updateMap.get(key)+";";
             }
-            if (key.toString().equals("area_code")){
+            if (key.toString().equals("area_code")&&updateMap.get(key)!=null){
                 content = content+"���/���/���������:"+oldMonitorPoint.getAreaCode()+"->"+updateMap.get(key)+";";
             }
-            if (key.toString().equals("address")){
+            if (key.toString().equals("address")&&updateMap.get(key)!=null){
                 content = content+"������:"+oldMonitorPoint.getAddress()+"->"+updateMap.get(key)+";";
             }
-            if (key.toString().equals("organization_id")){
+            if (key.toString().equals("organization_id")&&updateMap.get(key)!=null){
                 content = content+"������id:"+oldMonitorPoint.getOrganizationId()+"->"+updateMap.get(key)+";";
             }
-            if (key.toString().equals("desc")){
+            if (key.toString().equals("desc")&&updateMap.get(key)!=null){
                 content = content+"������:"+oldMonitorPoint.getDesc()+"->"+updateMap.get(key)+";";
             }
         }
@@ -249,9 +286,9 @@
         int totalNumber = monitorPointMapper.selectCount(wrapper);
         String orderType = map.get("orderType").toString();
         if (orderType.equals(Constants.ORDER_ASC)){
-            wrapper.orderByAsc("create_time");
+            wrapper.orderByAsc("update_time");
         }else {
-            wrapper.orderByDesc("create_time");
+            wrapper.orderByDesc("update_time");
         }
         Page resultPage = monitorPointMapper.selectPage(page,wrapper);
         List<MonitorPoint> monitorPoints = resultPage.getRecords();
@@ -264,6 +301,39 @@
             monitorPointMap.put("createTime",createTime);
             monitorPointMap.put("updateTime",updateTime);
             monitorPointMap.put("key",monitorPoint.getId());
+            if (monitorPointMap.get("provinceCode")!=null&&monitorPointMap.get("provinceCode")!=""){
+                monitorPointMap.put("provinceCode",getAreaArr(monitorPointMap.get("provinceCode").toString()));
+            }else {
+                String[] arr = {null,null};
+                monitorPointMap.put("provinceCode",arr);
+            }
+            if (monitorPointMap.get("cityCode")!=null&&monitorPointMap.get("cityCode")!=""){
+                monitorPointMap.put("cityCode",getAreaArr(monitorPointMap.get("cityCode").toString()));
+            }else {
+                String[] arr = {null,null};
+                monitorPointMap.put("cityCode",arr);
+            }
+            if (monitorPointMap.get("areaCode")!=null&&monitorPointMap.get("areaCode")!=""){
+                monitorPointMap.put("areaCode",getAreaArr(monitorPointMap.get("areaCode").toString()));
+            }else {
+                String[] arr = {null,null};
+                monitorPointMap.put("areaCode",arr);
+            }
+            /*Organization organization = organizationMapper.selectById(Integer.parseInt(monitorPointMap.get("organizationId").toString()));
+            if (!ObjectUtils.isEmpty(organization)) {
+                String[] organizationArr = {monitorPointMap.get("organizationId").toString(),organization.getName()};
+                monitorPointMap.put("organizationId",organizationArr);
+            }*/
+            if (monitorPointMap.get("organizationId")!=null&&monitorPointMap.get("organizationId")!=""){
+                Organization organization = organizationMapper.selectById(Integer.parseInt(monitorPointMap.get("organizationId").toString()));
+                if (!ObjectUtils.isEmpty(organization)) {
+                    String[] organizationArr = {monitorPointMap.get("organizationId").toString(),organization.getName()};
+                    monitorPointMap.put("organizationId",organizationArr);
+                }
+            }else {
+                String[] arr = {null,null};
+                monitorPointMap.put("organizationId",arr);
+            }
             monitorPointtList.add(monitorPointMap);
         }
         resultMap.put("monitorPoints",monitorPointtList);
@@ -276,4 +346,30 @@
         resultMap.put("totalPageNumber",totalPageNumber);
         return resultMap;
     }
+
+    @Override
+    public List<MonitorPoint> getMonitorPointsByOrganizationId(Integer organizationId) {
+        QueryWrapper<MonitorPoint> monitorPointQueryWrapper = new QueryWrapper<>();
+        MonitorPoint monitorPoint = new MonitorPoint();
+        monitorPoint.setOrganizationId(organizationId);
+        monitorPoint.setIsDelete(Constants.NOT_DELETE);
+        monitorPointQueryWrapper.setEntity(monitorPoint);
+        List<MonitorPoint> monitorPoints = monitorPointMapper.selectList(monitorPointQueryWrapper);
+        return monitorPoints;
+    }
+
+    /**
+     * @Description: ���������������
+     * @Param: [areaArr, menu]menuMap���key���menuid���value���menu
+     * @return: Array
+     * @Author: lizijie
+     * @Date: 2021/4/7
+     */
+    private String[] getAreaArr(String areaCode) {
+        QueryWrapper<SysArea> wrapper = new QueryWrapper<>();
+        wrapper.eq("area_code",areaCode);
+        SysArea sysArea = sysAreaMapper.selectOne(wrapper);
+        String[] arr = {areaCode,sysArea.getAreaName()};
+        return arr;
+    }
 }
diff --git a/screen-manage/src/main/java/com/moral/api/service/impl/OrganizationServiceImpl.java b/screen-manage/src/main/java/com/moral/api/service/impl/OrganizationServiceImpl.java
index 54c25ba..5e40443 100644
--- a/screen-manage/src/main/java/com/moral/api/service/impl/OrganizationServiceImpl.java
+++ b/screen-manage/src/main/java/com/moral/api/service/impl/OrganizationServiceImpl.java
@@ -6,14 +6,17 @@
 import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.moral.api.config.mybatis.wrapper.NullFilterWrapper;
+import com.moral.api.entity.MonitorPoint;
 import com.moral.api.entity.Organization;
 import com.moral.api.entity.User;
+import com.moral.api.mapper.MonitorPointMapper;
 import com.moral.api.mapper.OrganizationMapper;
 import com.moral.api.mapper.UserMapper;
 import com.moral.api.pojo.dto.organization.OrganizationDTO;
 import com.moral.api.pojo.dto.organization.OrganizationQueryDTO;
 import com.moral.api.pojo.dto.organization.OrganizationQueryNamesDTO;
 import com.moral.api.pojo.form.organization.*;
+import com.moral.api.service.MonitorPointService;
 import com.moral.api.service.OrganizationService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.moral.api.service.UserService;
@@ -57,6 +60,9 @@
 
     @Autowired
     UserMapper userMapper;
+
+    @Autowired
+    MonitorPointService monitorPointService;
 
     Map<String, String> organizationFormMap;
 
@@ -166,6 +172,14 @@
         //������
         Integer id = form.getOrganizationId();
 
+        //������������������������������
+        List<MonitorPoint> monitorPoints = monitorPointService.getMonitorPointsByOrganizationId(id);
+        if(!ObjectUtils.isEmpty(monitorPoints)){
+            dto.setCode(ResponseCodeEnum.ORGANIZATION_EXIST_MONITORPOINT.getCode());
+            dto.setMsg(ResponseCodeEnum.ORGANIZATION_EXIST_MONITORPOINT.getMsg());
+            return dto;
+        }
+
         //������������������������������������������
         Organization existOrganization = new Organization();
         existOrganization.setIsDelete(Constants.NOT_DELETE);
@@ -179,18 +193,9 @@
             return dto;
         }
 
-        //������������������
-        UpdateWrapper deleteWrapper = new UpdateWrapper();
-        deleteWrapper.eq("id", id);
-        deleteWrapper.set("is_delete", Constants.DELETE);
-        organizationMapper.update(null, deleteWrapper);
-
-        //������������������
-        userService.deleteUsersByOrganizationId(id);
-
         //���������������������������
         List<Organization> children = getAllChildrenOrganization(existOrganization.getId());
-        if (!ObjectUtils.isEmpty(children)) {//���������������������
+        if (!ObjectUtils.isEmpty(children)) {
             //���������������������������������������������������������������������������������������������������������������������������
             UpdateWrapper updateWrapper = new UpdateWrapper();
             if (form.getDeleteChildren().equals(Constants.DELETE_CHILDREN_ORG)) {//���������������������
@@ -199,6 +204,15 @@
                 children.forEach(value -> {
                     childrenId.add(value.getId());
                 });
+                //���������������������������������������������������������������������������������
+                for (Integer childId : childrenId) {
+                    List<MonitorPoint> childMonitorPoints = monitorPointService.getMonitorPointsByOrganizationId(childId);
+                    if(!ObjectUtils.isEmpty(childMonitorPoints)){
+                        dto.setCode(ResponseCodeEnum.CHILDREN_ORGANIZATION_EXIST_MONITORPOINT.getCode());
+                        dto.setMsg(ResponseCodeEnum.CHILDREN_ORGANIZATION_EXIST_MONITORPOINT.getMsg());
+                        return dto;
+                    }
+                }
                 //������������
                 updateWrapper.in("id", childrenId);
                 updateWrapper.set("is_delete", Constants.DELETE);
@@ -220,6 +234,15 @@
             }
         }
 
+        //������������������
+        UpdateWrapper deleteWrapper = new UpdateWrapper();
+        deleteWrapper.eq("id", id);
+        deleteWrapper.set("is_delete", Constants.DELETE);
+        organizationMapper.update(null, deleteWrapper);
+
+        //������������������
+        userService.deleteUsersByOrganizationId(id);
+
         //������������������
         dto.setCode(ResponseCodeEnum.SUCCESS.getCode());
         dto.setMsg(ResponseCodeEnum.SUCCESS.getMsg());
diff --git a/screen-manage/src/main/java/com/moral/api/service/impl/SensorServiceImpl.java b/screen-manage/src/main/java/com/moral/api/service/impl/SensorServiceImpl.java
index 0bf6dc0..b003f5f 100644
--- a/screen-manage/src/main/java/com/moral/api/service/impl/SensorServiceImpl.java
+++ b/screen-manage/src/main/java/com/moral/api/service/impl/SensorServiceImpl.java
@@ -179,9 +179,9 @@
         if (!ObjectUtils.isEmpty(map.get("orderType"))){
             String orderType = map.get("orderType").toString();
             if (orderType.equals(Constants.ORDER_DESC)){
-                wrapper.orderByDesc("create_time");
+                wrapper.orderByDesc("update_time");
             }else {
-                wrapper.orderByAsc("create_time");
+                wrapper.orderByAsc("update_time");
             }
         }
         Page resultPage = sensorMapper.selectPage(page,wrapper);
@@ -264,9 +264,9 @@
         int totleNum = sensorMapper.selectCount(wrapper);
         String orderType = map.get("orderType").toString();
         if (orderType.equals(Constants.ORDER_ASC)){
-            wrapper.orderByAsc("create_time");
+            wrapper.orderByAsc("update_time");
         }else {
-            wrapper.orderByDesc("create_time");
+            wrapper.orderByDesc("update_time");
         }
         Page resultPage = sensorMapper.selectPage(page,wrapper);
         List<Sensor> sensors = resultPage.getRecords();
diff --git a/screen-manage/src/main/java/com/moral/api/service/impl/SysDictTypeServiceImpl.java b/screen-manage/src/main/java/com/moral/api/service/impl/SysDictTypeServiceImpl.java
index 07a42ce..a0aa05b 100644
--- a/screen-manage/src/main/java/com/moral/api/service/impl/SysDictTypeServiceImpl.java
+++ b/screen-manage/src/main/java/com/moral/api/service/impl/SysDictTypeServiceImpl.java
@@ -52,7 +52,7 @@
         SysDictTypeDTO dto = new SysDictTypeDTO();
         //������Id
         Integer typeId = form.getId();
-        //������type������������
+        //������������������type������������������
         QueryWrapper<SysDictType> existWrapper = new QueryWrapper<>();
         existWrapper.eq("is_delete",Constants.NOT_DELETE);
         existWrapper.eq("id",typeId);
@@ -75,7 +75,6 @@
         //������������������
         CacheUtils.clearDictionariesCache();
         //������������������
-        dto.setSysDictType(type);
         dto.setCode(ResponseCodeEnum.SUCCESS.getCode());
         dto.setMsg(ResponseCodeEnum.SUCCESS.getMsg());
         return dto;
@@ -89,7 +88,7 @@
         SysDictTypeDTO dto = new SysDictTypeDTO();
         //������������
         SysDictType type = form.formConvertEntity();
-        //������type������������
+        //������type������������������
         QueryWrapper<SysDictType> existNameWrapper = new QueryWrapper<>();
         existNameWrapper.eq("id",type.getId());
         existNameWrapper.eq("is_delete",Constants.NOT_DELETE);
@@ -106,7 +105,6 @@
         //������������
         CacheUtils.clearDictionariesCache();
         //������������������
-        dto.setSysDictType(sysDictType);
         dto.setCode(ResponseCodeEnum.SUCCESS.getCode());
         dto.setMsg(ResponseCodeEnum.SUCCESS.getMsg());
         return dto;
diff --git a/screen-manage/src/main/java/com/moral/api/service/impl/UserServiceImpl.java b/screen-manage/src/main/java/com/moral/api/service/impl/UserServiceImpl.java
index fe313f3..054185d 100644
--- a/screen-manage/src/main/java/com/moral/api/service/impl/UserServiceImpl.java
+++ b/screen-manage/src/main/java/com/moral/api/service/impl/UserServiceImpl.java
@@ -214,34 +214,6 @@
         return dto;
     }
 
-    @Override
-    @Transactional
-    public UserDTO deleteUser(UserDeleteForm form) {
-        //������������������
-        UserDTO dto = new UserDTO();
-        //������
-        Integer id = form.getId();
-        //������������������
-        User user = new User();
-        user.setIsDelete(Constants.DELETE);
-        user.setId(id);
-        //������������
-        userMapper.updateById(user);
-        //������user_group
-        UpdateWrapper deleteUserGroupWrapper = new UpdateWrapper();
-        deleteUserGroupWrapper.eq("user_id", id);
-        deleteUserGroupWrapper.set("is_delete", Constants.DELETE);
-        userGroupMapper.update(null, deleteUserGroupWrapper);
-        //���������������admin������������
-        UpdateWrapper updateOrgWrapper = new UpdateWrapper();
-        updateOrgWrapper.eq("admin_user_id", user.getId());
-        updateOrgWrapper.set("admin_user_id", 0);
-        organizationMapper.update(null, updateOrgWrapper);
-        //������������������
-        dto.setCode(ResponseCodeEnum.SUCCESS.getCode());
-        dto.setMsg(ResponseCodeEnum.SUCCESS.getMsg());
-        return dto;
-    }
 
     @Override
     @Transactional
diff --git a/screen-manage/src/main/java/com/moral/api/util/LogUtils.java b/screen-manage/src/main/java/com/moral/api/util/LogUtils.java
index da15277..fbaac38 100644
--- a/screen-manage/src/main/java/com/moral/api/util/LogUtils.java
+++ b/screen-manage/src/main/java/com/moral/api/util/LogUtils.java
@@ -3,12 +3,11 @@
 import com.moral.api.entity.ManageAccount;
 import com.moral.api.entity.ManageLog;
 import com.moral.api.mapper.ManageLogMapper;
-import com.moral.api.pojo.dto.login.AccountInfoDTO;
+import com.moral.api.pojo.redisBean.AccountInfoDTO;
 import com.moral.constant.Constants;
 import com.moral.util.TokenUtils;
 import com.moral.util.WebUtils;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.http.HttpRequest;
 import org.springframework.stereotype.Component;
 import org.springframework.transaction.annotation.Transactional;
 
diff --git a/screen-manage/src/main/resources/mapper/ManageMenuMapper.xml b/screen-manage/src/main/resources/mapper/ManageMenuMapper.xml
index 64a0bd7..fecfa44 100644
--- a/screen-manage/src/main/resources/mapper/ManageMenuMapper.xml
+++ b/screen-manage/src/main/resources/mapper/ManageMenuMapper.xml
@@ -190,4 +190,30 @@
         limit #{start},#{number}
     </select>
 
+    <select id="getManageMenuByNameFuzzy" parameterType="java.util.Map" resultMap="BaseResultMap">
+        select
+        <include refid="Base_Column_List"></include>
+        from manage_menu mm
+        where mm.is_delete = 0
+        <if test="name != null">
+            and mm.name like concat('%',#{name},'%')
+        </if>
+        <if test="url != null">
+            and mm.url = #{url}
+        </if>
+        <if test="icon != null">
+            and mm.icon = #{icon}
+        </if>
+        <if test="parent_id != null">
+            and mm.parent_id = #{parent_id}
+        </if>
+        <if test="order != null">
+            and mm.order = #{order}
+        </if>
+        <if test="desc != null">
+            and mm.desc = #{order}
+        </if>
+        limit #{start},#{number}
+    </select>
+
 </mapper>
\ No newline at end of file
diff --git a/screen-manage/src/main/resources/mapper/MonitorPointMapper.xml b/screen-manage/src/main/resources/mapper/MonitorPointMapper.xml
index 44233f3..0a714b3 100644
--- a/screen-manage/src/main/resources/mapper/MonitorPointMapper.xml
+++ b/screen-manage/src/main/resources/mapper/MonitorPointMapper.xml
@@ -30,25 +30,55 @@
                 name = #{name},
             </if>
             <if test="longitude != null">
-                longitude = #{longitude},
+                <if test="longitude == ''">
+                    longitude = null,
+                </if>
+                <if test="longitude != ''">
+                    longitude = #{longitude},
+                </if>
             </if>
             <if test="latitude != null">
-                latitude = #{latitude},
+                <if test="latitude == ''">
+                    latitude = null,
+                </if>
+                <if test="latitude != ''">
+                    latitude = #{latitude},
+                </if>
             </if>
             <if test="province_code != null">
-                province_code = #{province_code},
+                <if test="province_code == ''">
+                    province_code = null,
+                </if>
+                <if test="province_code != ''">
+                    province_code = #{province_code},
+                </if>
             </if>
             <if test="city_code != null">
-                city_code = #{city_code},
+                <if test="city_code == ''">
+                    city_code = null,
+                </if>
+                <if test="city_code != ''">
+                    city_code = #{city_code},
+                </if>
             </if>
             <if test="area_code != null">
-                area_code = #{area_code},
+                <if test="area_code == ''">
+                    area_code = null,
+                </if>
+                <if test="area_code != ''">
+                    area_code = #{area_code},
+                </if>
             </if>
             <if test="address != null">
                 address = #{address},
             </if>
             <if test="organization_id != null">
-                organization_id = #{organization_id},
+                <if test="organization_id == ''">
+                    organization_id = null,
+                </if>
+                <if test="organization_id != ''">
+                    organization_id = #{organization_id},
+                </if>
             </if>
             <if test="desc != null">
                 `desc` = #{desc},

--
Gitblit v1.8.0