From 6ebf2b2a84b903f3600238dd084b3ae9ee4d6d3b Mon Sep 17 00:00:00 2001
From: kaiyu <404897439@qq.com>
Date: Fri, 16 Apr 2021 17:33:07 +0800
Subject: [PATCH] Merge branch 'dev' of http://blit.7drlb.com:8888/r/moral into dev

---
 screen-manage/src/main/java/com/moral/api/service/ManageMenuService.java              |    8 
 screen-api/src/main/java/com/moral/api/utils/OperationLogUtils.java                   |    3 
 screen-api/src/main/java/com/moral/api/entity/GroupMenu.java                          |    1 
 screen-api/src/main/java/com/moral/api/service/MenuService.java                       |    3 
 screen-api/src/main/java/com/moral/api/service/impl/GroupServiceImpl.java             |   61 ++
 screen-api/src/main/java/com/moral/api/service/GroupMenuService.java                  |    5 
 screen-api/src/main/resources/mapper/ManageLogMapper.xml                              |    6 
 screen-api/src/main/java/com/moral/api/service/GroupService.java                      |    4 
 screen-api/src/main/java/com/moral/api/service/impl/UserServiceImpl.java              |  103 ++++-
 screen-api/src/main/java/com/moral/api/controller/GroupController.java                |   34 -
 screen-api/src/main/java/com/moral/api/controller/LogController.java                  |   46 ++
 screen-api/src/main/java/com/moral/api/service/UserLogService.java                    |    5 
 screen-api/src/main/java/com/moral/api/service/UserService.java                       |    4 
 screen-api/src/main/java/com/moral/api/entity/ManageLog.java                          |   37 +
 screen-api/src/main/java/com/moral/api/service/impl/UserGroupServiceImpl.java         |   45 ++
 screen-manage/src/main/java/com/moral/api/service/impl/ManageRoleMenuServiceImpl.java |   41 ++
 screen-api/src/main/java/com/moral/api/mapper/ManageLogMapper.java                    |    2 
 screen-manage/src/main/resources/mapper/ManageMenuMapper.xml                          |   41 ++
 screen-api/src/main/resources/mapper/MenuMapper.xml                                   |   23 
 screen-api/src/main/java/com/moral/api/controller/MenuController.java                 |   35 +
 screen-api/src/main/java/com/moral/api/entity/Menu.java                               |    7 
 screen-api/src/main/java/com/moral/api/service/impl/MenuServiceImpl.java              |   11 
 screen-api/src/main/java/com/moral/api/service/impl/GroupMenuServiceImpl.java         |   55 ++
 screen-manage/src/main/java/com/moral/api/service/impl/ManageMenuServiceImpl.java     |  134 +++++++
 screen-api/src/main/java/com/moral/api/controller/LoginController.java                |   16 
 screen-api/src/main/java/com/moral/api/service/ManageLogService.java                  |    2 
 screen-api/src/main/java/com/moral/api/controller/UserController.java                 |   37 -
 screen-manage/src/main/java/com/moral/api/controller/ManageRoleController.java        |   11 
 screen-api/src/main/java/com/moral/api/entity/UserLog.java                            |   10 
 screen-api/src/main/java/com/moral/api/service/UserGroupService.java                  |    2 
 screen-manage/src/main/java/com/moral/api/service/impl/ManageRoleServiceImpl.java     |   66 ++
 screen-api/src/main/java/com/moral/api/service/impl/UserLogServiceImpl.java           |   35 ++
 screen-manage/src/main/java/com/moral/api/controller/ManageMenuController.java        |   78 +++-
 screen-manage/src/main/resources/application-dev.yml                                  |   10 
 screen-api/src/main/java/com/moral/api/entity/Group.java                              |    4 
 screen-api/src/main/resources/mapper/UserLogMapper.xml                                |   19 
 screen-manage/src/main/java/com/moral/api/mapper/ManageMenuMapper.java                |    4 
 screen-api/src/main/java/com/moral/api/service/impl/ManageLogServiceImpl.java         |    2 
 38 files changed, 782 insertions(+), 228 deletions(-)

diff --git a/screen-api/src/main/java/com/moral/api/controller/GroupController.java b/screen-api/src/main/java/com/moral/api/controller/GroupController.java
index fa8b0df..938b016 100644
--- a/screen-api/src/main/java/com/moral/api/controller/GroupController.java
+++ b/screen-api/src/main/java/com/moral/api/controller/GroupController.java
@@ -22,7 +22,6 @@
 import com.moral.api.entity.Group;
 import com.moral.api.service.GroupService;
 import com.moral.api.service.UserGroupService;
-import com.moral.api.utils.OperationLogUtils;
 import com.moral.constant.ResponseCodeEnum;
 import com.moral.constant.ResultMessage;
 import com.moral.util.PageResult;
@@ -44,20 +43,15 @@
             @ApiImplicitParam(name = "token", value = "token", required = true, paramType = "header", dataType = "String")
     })
     @RequestMapping(value = "insert", method = RequestMethod.POST)
-    private ResultMessage insert(@RequestBody Group group, HttpServletRequest request) {
+    private ResultMessage insert(@RequestBody Group group) {
         if (group.getGroupName().isEmpty()) {
             return ResultMessage.fail(ResponseCodeEnum.PARAMETERS_IS_MISSING.getCode(),
                     ResponseCodeEnum.PARAMETERS_IS_MISSING.getMsg());
         }
-        String token = request.getHeader("token");
-        Map<String, Object> result = groupService.addGroup(group, token);
+        Map<String, Object> result = groupService.addGroup(group);
         if (!result.isEmpty()) {
             return ResultMessage.fail((int) result.get("code"), result.get("msg").toString());
         }
-
-        //������
-        String content = "���������������" + group.getGroupName();
-        OperationLogUtils.insertLog(request, content);
         return ResultMessage.ok();
     }
 
@@ -66,7 +60,7 @@
             @ApiImplicitParam(name = "token", value = "token", required = true, paramType = "header", dataType = "String")
     })
     @RequestMapping(value = "delete", method = RequestMethod.POST)
-    public ResultMessage delete(@RequestBody Group group, HttpServletRequest request) {
+    public ResultMessage delete(@RequestBody Group group) {
         if (group.getId() == null) {
             return ResultMessage.fail(ResponseCodeEnum.PARAMETERS_IS_MISSING.getCode(),
                     ResponseCodeEnum.PARAMETERS_IS_MISSING.getMsg());
@@ -78,10 +72,6 @@
             return ResultMessage.fail(ResponseCodeEnum.ACCOUNT_NOT_EXIST.getCode(), ResponseCodeEnum.ACCOUNT_NOT_EXIST.getMsg());
         }
         groupService.deleteGroup(group);
-
-        //������
-        String content = "���������������" + group.getGroupName();
-        OperationLogUtils.insertLog(request, content);
         return ResultMessage.ok();
     }
 
@@ -92,14 +82,10 @@
     @RequestMapping(value = "update", method = RequestMethod.POST)
     public ResultMessage update(@RequestBody Group group, HttpServletRequest request) {
         String token = request.getHeader("token");
-        Map<String, Object> result = groupService.updateGroup(group, token);
+        Map<String, Object> result = groupService.updateGroup(group);
         if (!result.isEmpty()) {
             return ResultMessage.fail((int) result.get("code"), result.get("msg").toString());
         }
-
-        //������
-        String content = "���������������" + group.getGroupName();
-        OperationLogUtils.insertLog(request, content);
         return ResultMessage.ok();
     }
 
@@ -113,8 +99,7 @@
             @ApiImplicitParam(name = "groupName", value = "������������������", required = false, paramType = "query", dataType = "String")
     })
     @RequestMapping(value = "select", method = RequestMethod.POST)
-    public ResultMessage select(@RequestBody Map<String, Object> parameters, HttpServletRequest request) {
-        parameters.put("token", request.getHeader("token"));
+    public ResultMessage select(@RequestBody Map<String, Object> parameters) {
         Page<Group> userPage = groupService.selectGroups(parameters);
         PageResult<Group> pageResult = new PageResult<>(
                 userPage.getTotal(), userPage.getPages(), userPage.getRecords()
@@ -122,12 +107,12 @@
         return ResultMessage.ok(pageResult);
     }
 
-    @ApiOperation(value = "���������������������", notes = "���������������������")
+    @ApiOperation(value = "���������������������ids", notes = "���������������������ids")
     @ApiImplicitParams({
             @ApiImplicitParam(name = "token", value = "token", required = true, paramType = "header", dataType = "String")
     })
     @RequestMapping(value = "get-group-ids", method = RequestMethod.GET)
-    public ResultMessage getGroupIds(Integer userId){
+    public ResultMessage getGroupIds(Integer userId) {
         List<Integer> groupIds = userGroupService.getGroupIds(userId);
         return ResultMessage.ok(groupIds);
     }
@@ -137,13 +122,12 @@
             @ApiImplicitParam(name = "token", value = "token", required = true, paramType = "header", dataType = "String")
     })
     @RequestMapping(value = "allot", method = RequestMethod.POST)
-    public ResultMessage allot(@RequestBody Map<String, Object> parameters, HttpServletRequest request) {
+    public ResultMessage allot(@RequestBody Map<String, Object> parameters) {
         if (!parameters.containsKey("userId")) {
             return ResultMessage.fail(ResponseCodeEnum.PARAMETERS_IS_MISSING.getCode(),
                     ResponseCodeEnum.PARAMETERS_IS_MISSING.getMsg());
         }
-        String token = request.getHeader("token");
-        userGroupService.allotGroups(parameters, token);
+        userGroupService.allotGroups(parameters);
         return ResultMessage.ok();
     }
 }
diff --git a/screen-api/src/main/java/com/moral/api/controller/LogController.java b/screen-api/src/main/java/com/moral/api/controller/LogController.java
new file mode 100644
index 0000000..8df7d1a
--- /dev/null
+++ b/screen-api/src/main/java/com/moral/api/controller/LogController.java
@@ -0,0 +1,46 @@
+package com.moral.api.controller;
+
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiImplicitParam;
+import io.swagger.annotations.ApiImplicitParams;
+import io.swagger.annotations.ApiOperation;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.Map;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.moral.api.entity.UserLog;
+import com.moral.api.service.UserLogService;
+import com.moral.constant.ResultMessage;
+import com.moral.util.PageResult;
+
+@Slf4j
+@RestController
+@RequestMapping("/log")
+@Api(tags = "������")
+public class LogController {
+
+    @Autowired
+    private UserLogService userLogService;
+
+    @ApiOperation(value = "������������������", notes = "������������������")
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "page", value = "���������", required = false, paramType = "query", dataType = "Integer"),
+            @ApiImplicitParam(name = "size", value = "������������", required = false, paramType = "query", dataType = "Integer"),
+            @ApiImplicitParam(name = "type", value = "���������������0������������1������������2������������3���������", required = false, paramType = "query", dataType = "String"),
+            @ApiImplicitParam(name = "token", value = "token", required = true, paramType = "header", dataType = "String")
+    })
+    @RequestMapping(value = "select", method = RequestMethod.POST)
+    public ResultMessage select(@RequestBody Map<String, Object> parameters) {
+        Page<UserLog> userLogPage = userLogService.selectLogs(parameters);
+        PageResult pageResult = new PageResult<>(
+                userLogPage.getTotal(), userLogPage.getPages(), userLogPage.getRecords()
+        );
+        return ResultMessage.ok(pageResult);
+    }
+}
diff --git a/screen-api/src/main/java/com/moral/api/controller/LoginController.java b/screen-api/src/main/java/com/moral/api/controller/LoginController.java
index 444fa13..a0f2a98 100644
--- a/screen-api/src/main/java/com/moral/api/controller/LoginController.java
+++ b/screen-api/src/main/java/com/moral/api/controller/LoginController.java
@@ -21,7 +21,6 @@
 
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.moral.api.entity.SysConfig;
-import com.moral.api.entity.UserLog;
 import com.moral.api.service.SysConfigService;
 import com.moral.api.service.UserLogService;
 import com.moral.api.service.UserService;
@@ -31,7 +30,6 @@
 import com.moral.pojo.VerificationCode;
 import com.moral.util.KaptchaUtils;
 import com.moral.util.TokenUtils;
-import com.moral.util.WebUtils;
 
 @Slf4j
 @Api(tags = {"������"})
@@ -44,12 +42,9 @@
     @Autowired
     private SysConfigService sysConfigService;
 
-    @Autowired
-    private UserLogService userLogService;
-
     @ApiOperation(value = "������", notes = "������")
     @RequestMapping(value = "login", method = RequestMethod.POST)
-    public ResultMessage login(@RequestBody Map<String, Object> parameters, HttpServletRequest request) {
+    public ResultMessage login(@RequestBody Map<String, Object> parameters) {
         if (!(parameters.containsKey("account") && parameters.containsKey("password"))) {
             return ResultMessage.fail(ResponseCodeEnum.PARAMETERS_IS_MISSING.getCode(),
                     ResponseCodeEnum.PARAMETERS_IS_MISSING.getMsg());
@@ -59,15 +54,6 @@
             return ResultMessage.fail((int) result.get("code"), (String) result.get("msg"));
         }
         Map<String, Object> data = (Map<String, Object>) result.get("data");
-        Map<String, Object> userInfo = (Map<String, Object>) data.get("user");
-        UserLog userLog = new UserLog();
-        String ip = WebUtils.getIpAddr(request);
-        userLog.setIp(ip);
-        userLog.setOperateId((Integer) userInfo.get("userId"));
-        Map<String, Object> organization = (Map<String, Object>) userInfo.get("organization");
-        userLog.setOrganizationId((Integer) organization.get("id"));
-        userLog.setContent(userInfo.get("account") + "���������");
-        userLogService.save(userLog);
         return ResultMessage.ok(data);
     }
 
diff --git a/screen-api/src/main/java/com/moral/api/controller/MenuController.java b/screen-api/src/main/java/com/moral/api/controller/MenuController.java
index 258a122..0a9fd19 100644
--- a/screen-api/src/main/java/com/moral/api/controller/MenuController.java
+++ b/screen-api/src/main/java/com/moral/api/controller/MenuController.java
@@ -6,6 +6,7 @@
 import io.swagger.annotations.ApiOperation;
 import lombok.extern.slf4j.Slf4j;
 
+import java.util.List;
 import java.util.Map;
 
 import javax.servlet.http.HttpServletRequest;
@@ -16,6 +17,7 @@
 import org.springframework.web.bind.annotation.RequestMethod;
 import org.springframework.web.bind.annotation.RestController;
 
+import com.moral.api.entity.Menu;
 import com.moral.api.service.GroupMenuService;
 import com.moral.api.service.MenuService;
 import com.moral.constant.ResponseCodeEnum;
@@ -39,17 +41,29 @@
             @ApiImplicitParam(name = "token", value = "token", required = true, paramType = "header", dataType = "String")
     })
     @RequestMapping(value = "allot", method = RequestMethod.POST)
-    public ResultMessage allot(@RequestBody Map<String, Object> parameters, HttpServletRequest request) {
+    public ResultMessage allot(@RequestBody Map<String, Object> parameters) {
         if (!parameters.containsKey("groupId")) {
             return ResultMessage.fail(ResponseCodeEnum.PARAMETERS_IS_MISSING.getCode(),
                     ResponseCodeEnum.PARAMETERS_IS_MISSING.getMsg());
         }
-        String token = request.getHeader("token");
-        groupMenuService.allotMenus(parameters, token);
+        groupMenuService.allotMenus(parameters);
         return ResultMessage.ok();
     }
 
-    @ApiOperation(value = "������������������������", notes = "������������������������")
+    @ApiOperation(value = "������������", notes = "������������")
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "token", value = "token", required = true, paramType = "header", dataType = "String"),
+    })
+    @RequestMapping(value = "menu-list", method = RequestMethod.POST)
+    public ResultMessage selectMenus(HttpServletRequest request) {
+        String token = request.getHeader("token");
+        Map<String, Object> currentUserInfo = (Map<String, Object>) TokenUtils.getUserInfoByToken(token);
+        Map<String, Object> orgInfo = (Map<String, Object>) currentUserInfo.get("organization");
+        List<Menu> menus = menuService.getMenuList((Integer) orgInfo.get("id"));
+        return ResultMessage.ok(menus);
+    }
+
+    @ApiOperation(value = "������������", notes = "������������")
     @ApiImplicitParams({
             @ApiImplicitParam(name = "token", value = "token", required = true, paramType = "header", dataType = "String"),
     })
@@ -57,7 +71,18 @@
     public ResultMessage select(HttpServletRequest request) {
         String token = request.getHeader("token");
         Map<String, Object> currentUserInfo = (Map<String, Object>) TokenUtils.getUserInfoByToken(token);
-        Map<String, Object> result = menuService.selectMenusByOrgId((Integer) currentUserInfo.get("organizationId"));
+        Map<String, Object> orgInfo = (Map<String, Object>) currentUserInfo.get("organization");
+        Map<String, Object> result = menuService.selectMenusByOrgId((Integer) orgInfo.get("id"));
         return ResultMessage.ok(result);
     }
+
+    @ApiOperation(value = "���������������ids", notes = "���������������ids")
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "token", value = "token", required = true, paramType = "header", dataType = "String")
+    })
+    @RequestMapping(value = "get-menu-ids", method = RequestMethod.GET)
+    public ResultMessage getMenuIds(Integer groupId) {
+        List<Integer> menusIds = groupMenuService.getMenusIds(groupId);
+        return ResultMessage.ok(menusIds);
+    }
 }
diff --git a/screen-api/src/main/java/com/moral/api/controller/UserController.java b/screen-api/src/main/java/com/moral/api/controller/UserController.java
index 8f582ab..a9dfc17 100644
--- a/screen-api/src/main/java/com/moral/api/controller/UserController.java
+++ b/screen-api/src/main/java/com/moral/api/controller/UserController.java
@@ -21,7 +21,6 @@
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.moral.api.entity.User;
 import com.moral.api.service.UserService;
-import com.moral.api.utils.OperationLogUtils;
 import com.moral.constant.ResponseCodeEnum;
 import com.moral.constant.ResultMessage;
 import com.moral.util.PageResult;
@@ -39,21 +38,16 @@
     @ApiImplicitParams({
             @ApiImplicitParam(name = "token", value = "token", required = true, paramType = "header", dataType = "String")
     })
-    @RequestMapping(value = "addUser", method = RequestMethod.POST)
-    public ResultMessage addUser(@RequestBody User user, HttpServletRequest request) {
+    @RequestMapping(value = "insert", method = RequestMethod.POST)
+    public ResultMessage insert(@RequestBody User user) {
         if (user.getAccount().isEmpty() || user.getPassword().isEmpty()) {
             return ResultMessage.fail(ResponseCodeEnum.PARAMETERS_IS_MISSING.getCode(),
                     ResponseCodeEnum.PARAMETERS_IS_MISSING.getMsg());
         }
-        String token = request.getHeader("token");
-        Map<String, Object> result = userService.addUser(user, token);
+        Map<String, Object> result = userService.addUser(user);
         if (!result.isEmpty()) {
             return ResultMessage.fail((int) result.get("code"), result.get("msg").toString());
         }
-
-        //������
-        String content = "������������������" + user.getAccount();
-        OperationLogUtils.insertLog(request, content);
         return ResultMessage.ok();
     }
 
@@ -61,8 +55,8 @@
     @ApiImplicitParams({
             @ApiImplicitParam(name = "token", value = "token", required = true, paramType = "header", dataType = "String")
     })
-    @RequestMapping(value = "deleteUser", method = RequestMethod.POST)
-    public ResultMessage deleteUser(@RequestBody User user, HttpServletRequest request) {
+    @RequestMapping(value = "delete", method = RequestMethod.POST)
+    public ResultMessage delete(@RequestBody User user) {
         if (user.getId() == null) {
             return ResultMessage.fail(ResponseCodeEnum.PARAMETERS_IS_MISSING.getCode(),
                     ResponseCodeEnum.PARAMETERS_IS_MISSING.getMsg());
@@ -75,10 +69,6 @@
                     ResponseCodeEnum.ACCOUNT_NOT_EXIST.getMsg());
         }
         userService.deleteUser(user);
-
-        //������
-        String content = "������������������" + user.getAccount();
-        OperationLogUtils.insertLog(request, content);
         return ResultMessage.ok();
     }
 
@@ -86,21 +76,16 @@
     @ApiImplicitParams({
             @ApiImplicitParam(name = "token", value = "token", required = true, paramType = "header", dataType = "String")
     })
-    @RequestMapping(value = "updateUser", method = RequestMethod.POST)
-    public ResultMessage updateUser(@RequestBody User user, HttpServletRequest request) {
+    @RequestMapping(value = "update", method = RequestMethod.POST)
+    public ResultMessage update(@RequestBody User user) {
         if (user.getId() == null) {
             return ResultMessage.fail(ResponseCodeEnum.PARAMETERS_IS_MISSING.getCode(),
                     ResponseCodeEnum.PARAMETERS_IS_MISSING.getMsg());
         }
-        String token = request.getHeader("token");
-        Map<String, Object> result = userService.updateUser(user, token);
+        Map<String, Object> result = userService.updateUser(user);
         if (!result.isEmpty()) {
             return ResultMessage.fail((int) result.get("code"), result.get("msg").toString());
         }
-
-        //������
-        String content = "������������������" + user.getAccount();
-        OperationLogUtils.insertLog(request, content);
         return ResultMessage.ok();
     }
 
@@ -109,6 +94,7 @@
             @ApiImplicitParam(name = "page", value = "���������", required = false, paramType = "query", dataType = "Integer"),
             @ApiImplicitParam(name = "size", value = "������������", required = false, paramType = "query", dataType = "Integer"),
             @ApiImplicitParam(name = "order", value = "������������", required = false, paramType = "query", dataType = "String"),
+            @ApiImplicitParam(name = "orderType", value = "������������������������0������������1", defaultValue = "0", required = false, paramType = "query", dataType = "String"),
             @ApiImplicitParam(name = "token", value = "token", required = true, paramType = "header", dataType = "String"),
             @ApiImplicitParam(name = "account", value = "������������������", required = false, paramType = "query", dataType = "String"),
             @ApiImplicitParam(name = "userName", value = "���������������������", required = false, paramType = "query", dataType = "String"),
@@ -117,9 +103,8 @@
             @ApiImplicitParam(name = "wechat", value = "������������������", required = false, paramType = "query", dataType = "String"),
 
     })
-    @RequestMapping(value = "selectUsers", method = RequestMethod.POST)
-    public ResultMessage selectUsers(@RequestBody Map<String, Object> parameters, HttpServletRequest request) {
-        parameters.put("token", request.getHeader("token"));
+    @RequestMapping(value = "select", method = RequestMethod.POST)
+    public ResultMessage select(@RequestBody Map<String, Object> parameters) {
         Page<User> userPage = userService.selectUsers(parameters);
         PageResult<User> pageResult = new PageResult<>(
                 userPage.getTotal(), userPage.getPages(), userPage.getRecords()
diff --git a/screen-api/src/main/java/com/moral/api/entity/Group.java b/screen-api/src/main/java/com/moral/api/entity/Group.java
index 22ed32c..0b79a9b 100644
--- a/screen-api/src/main/java/com/moral/api/entity/Group.java
+++ b/screen-api/src/main/java/com/moral/api/entity/Group.java
@@ -4,6 +4,8 @@
 import com.baomidou.mybatisplus.annotation.TableName;
 import com.baomidou.mybatisplus.extension.activerecord.Model;
 import com.baomidou.mybatisplus.annotation.TableId;
+import com.fasterxml.jackson.annotation.JsonFormat;
+
 import java.io.Serializable;
 import java.util.Date;
 
@@ -44,11 +46,13 @@
     /**
      * ������������
      */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
     private Date createTime;
 
     /**
      * ������������
      */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
     private Date updateTime;
 
     /**
diff --git a/screen-api/src/main/java/com/moral/api/entity/GroupMenu.java b/screen-api/src/main/java/com/moral/api/entity/GroupMenu.java
index 7d4264d..942572f 100644
--- a/screen-api/src/main/java/com/moral/api/entity/GroupMenu.java
+++ b/screen-api/src/main/java/com/moral/api/entity/GroupMenu.java
@@ -3,6 +3,7 @@
 import com.baomidou.mybatisplus.annotation.IdType;
 import com.baomidou.mybatisplus.extension.activerecord.Model;
 import com.baomidou.mybatisplus.annotation.TableId;
+
 import java.io.Serializable;
 import java.util.Date;
 
diff --git a/screen-api/src/main/java/com/moral/api/entity/ManageLog.java b/screen-api/src/main/java/com/moral/api/entity/ManageLog.java
index a305e3f..516426e 100644
--- a/screen-api/src/main/java/com/moral/api/entity/ManageLog.java
+++ b/screen-api/src/main/java/com/moral/api/entity/ManageLog.java
@@ -3,8 +3,9 @@
 import com.baomidou.mybatisplus.annotation.IdType;
 import com.baomidou.mybatisplus.extension.activerecord.Model;
 import com.baomidou.mybatisplus.annotation.TableId;
+
+import java.time.LocalDateTime;
 import java.io.Serializable;
-import java.util.Date;
 
 import lombok.Data;
 import lombok.EqualsAndHashCode;
@@ -15,7 +16,7 @@
  * </p>
  *
  * @author moral
- * @since 2021-03-09
+ * @since 2021-04-13
  */
 @Data
 @EqualsAndHashCode(callSuper = false)
@@ -30,19 +31,29 @@
     private Integer id;
 
     /**
+     * ������������id
+     */
+    private Integer accountId;
+
+    /**
+     * ������������������
+     */
+    private String account;
+
+    /**
+     * ������������
+     */
+    private String userName;
+
+    /**
+     * ������������
+     */
+    private String type;
+
+    /**
      * ������������
      */
     private String content;
-
-    /**
-     * ������Id
-     */
-    private Integer organizationId;
-
-    /**
-     * ������������id
-     */
-    private Integer operateId;
 
     /**
      * Ip������
@@ -52,7 +63,7 @@
     /**
      * ������������
      */
-    private Date createTime;
+    private LocalDateTime createTime;
 
 
     @Override
diff --git a/screen-api/src/main/java/com/moral/api/entity/Menu.java b/screen-api/src/main/java/com/moral/api/entity/Menu.java
index 951d960..acfd0c9 100644
--- a/screen-api/src/main/java/com/moral/api/entity/Menu.java
+++ b/screen-api/src/main/java/com/moral/api/entity/Menu.java
@@ -1,8 +1,11 @@
 package com.moral.api.entity;
 
 import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.extension.activerecord.Model;
 import com.baomidou.mybatisplus.annotation.TableId;
+import com.fasterxml.jackson.annotation.JsonFormat;
+
 import java.io.Serializable;
 import java.util.Date;
 
@@ -32,6 +35,7 @@
     /**
      * ���������
      */
+    @TableField(value = "`name`")
     private String name;
 
     /**
@@ -52,16 +56,19 @@
     /**
      * ���������������������������
      */
+    @TableField(value = "`order`")
     private Integer order;
 
     /**
      * ������������
      */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
     private Date createTime;
 
     /**
      * ������������
      */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
     private Date updateTime;
 
     /**
diff --git a/screen-api/src/main/java/com/moral/api/entity/UserLog.java b/screen-api/src/main/java/com/moral/api/entity/UserLog.java
index 259a1eb..416fef5 100644
--- a/screen-api/src/main/java/com/moral/api/entity/UserLog.java
+++ b/screen-api/src/main/java/com/moral/api/entity/UserLog.java
@@ -3,6 +3,8 @@
 import com.baomidou.mybatisplus.annotation.IdType;
 import com.baomidou.mybatisplus.extension.activerecord.Model;
 import com.baomidou.mybatisplus.annotation.TableId;
+import com.fasterxml.jackson.annotation.JsonFormat;
+
 import java.io.Serializable;
 import java.util.Date;
 
@@ -15,7 +17,7 @@
  * </p>
  *
  * @author moral
- * @since 2021-03-09
+ * @since 2021-04-13
  */
 @Data
 @EqualsAndHashCode(callSuper = false)
@@ -28,6 +30,11 @@
      */
     @TableId(value = "id", type = IdType.AUTO)
     private Integer id;
+
+    /**
+     * ������������
+     */
+    private String type;
 
     /**
      * ������������
@@ -52,6 +59,7 @@
     /**
      * ������������
      */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
     private Date createTime;
 
 
diff --git a/screen-api/src/main/java/com/moral/api/mapper/ManageLogMapper.java b/screen-api/src/main/java/com/moral/api/mapper/ManageLogMapper.java
index 385155e..cafaf27 100644
--- a/screen-api/src/main/java/com/moral/api/mapper/ManageLogMapper.java
+++ b/screen-api/src/main/java/com/moral/api/mapper/ManageLogMapper.java
@@ -9,7 +9,7 @@
  * </p>
  *
  * @author moral
- * @since 2021-03-09
+ * @since 2021-04-13
  */
 public interface ManageLogMapper extends BaseMapper<ManageLog> {
 
diff --git a/screen-api/src/main/java/com/moral/api/service/GroupMenuService.java b/screen-api/src/main/java/com/moral/api/service/GroupMenuService.java
index a1bd398..45edad9 100644
--- a/screen-api/src/main/java/com/moral/api/service/GroupMenuService.java
+++ b/screen-api/src/main/java/com/moral/api/service/GroupMenuService.java
@@ -1,5 +1,6 @@
 package com.moral.api.service;
 
+import java.util.List;
 import java.util.Map;
 
 import com.moral.api.entity.GroupMenu;
@@ -15,5 +16,7 @@
  */
 public interface GroupMenuService extends IService<GroupMenu> {
 
-    void allotMenus(Map<String, Object> parameters, String token);
+    void allotMenus(Map<String, Object> parameters);
+
+    List<Integer> getMenusIds(Integer groupId);
 }
diff --git a/screen-api/src/main/java/com/moral/api/service/GroupService.java b/screen-api/src/main/java/com/moral/api/service/GroupService.java
index 0548339..02c1ea8 100644
--- a/screen-api/src/main/java/com/moral/api/service/GroupService.java
+++ b/screen-api/src/main/java/com/moral/api/service/GroupService.java
@@ -18,11 +18,11 @@
  */
 public interface GroupService extends IService<Group> {
 
-    Map<String, Object> addGroup(Group group, String token);
+    Map<String, Object> addGroup(Group group);
 
     void deleteGroup(Group group);
 
-    Map<String, Object> updateGroup(Group group, String token);
+    Map<String, Object> updateGroup(Group group);
 
     Page<Group> selectGroups(Map<String, Object> parameters);
 
diff --git a/screen-api/src/main/java/com/moral/api/service/ManageLogService.java b/screen-api/src/main/java/com/moral/api/service/ManageLogService.java
index cec721b..483ebc2 100644
--- a/screen-api/src/main/java/com/moral/api/service/ManageLogService.java
+++ b/screen-api/src/main/java/com/moral/api/service/ManageLogService.java
@@ -9,7 +9,7 @@
  * </p>
  *
  * @author moral
- * @since 2021-03-09
+ * @since 2021-04-13
  */
 public interface ManageLogService extends IService<ManageLog> {
 
diff --git a/screen-api/src/main/java/com/moral/api/service/MenuService.java b/screen-api/src/main/java/com/moral/api/service/MenuService.java
index 242c94a..aa78b9e 100644
--- a/screen-api/src/main/java/com/moral/api/service/MenuService.java
+++ b/screen-api/src/main/java/com/moral/api/service/MenuService.java
@@ -1,5 +1,6 @@
 package com.moral.api.service;
 
+import java.util.List;
 import java.util.Map;
 
 import com.moral.api.entity.Menu;
@@ -16,4 +17,6 @@
 public interface MenuService extends IService<Menu> {
 
     Map<String,Object> selectMenusByOrgId(Integer orgId);
+
+    List<Menu> getMenuList(Integer orgId);
 }
diff --git a/screen-api/src/main/java/com/moral/api/service/UserGroupService.java b/screen-api/src/main/java/com/moral/api/service/UserGroupService.java
index e17e7bb..4bf9c24 100644
--- a/screen-api/src/main/java/com/moral/api/service/UserGroupService.java
+++ b/screen-api/src/main/java/com/moral/api/service/UserGroupService.java
@@ -16,7 +16,7 @@
  */
 public interface UserGroupService extends IService<UserGroup> {
 
-    void allotGroups(Map<String, Object> parameters, String token);
+    void allotGroups(Map<String, Object> parameters);
 
     List<Integer> getGroupIds(Integer userId);
 }
diff --git a/screen-api/src/main/java/com/moral/api/service/UserLogService.java b/screen-api/src/main/java/com/moral/api/service/UserLogService.java
index 8c18d33..9d61777 100644
--- a/screen-api/src/main/java/com/moral/api/service/UserLogService.java
+++ b/screen-api/src/main/java/com/moral/api/service/UserLogService.java
@@ -1,5 +1,8 @@
 package com.moral.api.service;
 
+import java.util.Map;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.moral.api.entity.UserLog;
 import com.baomidou.mybatisplus.extension.service.IService;
 
@@ -13,4 +16,6 @@
  */
 public interface UserLogService extends IService<UserLog> {
 
+    Page<UserLog> selectLogs(Map<String, Object> parameters);
+
 }
diff --git a/screen-api/src/main/java/com/moral/api/service/UserService.java b/screen-api/src/main/java/com/moral/api/service/UserService.java
index d57b212..5680a37 100644
--- a/screen-api/src/main/java/com/moral/api/service/UserService.java
+++ b/screen-api/src/main/java/com/moral/api/service/UserService.java
@@ -24,11 +24,11 @@
 
     Map<String, Object> getMenus(Map<String, Object> parameters);
 
-    Map<String, Object> addUser(User user, String token);
+    Map<String, Object> addUser(User user);
 
     void deleteUser(User user);
 
-    Map<String, Object> updateUser(User user, String token);
+    Map<String, Object> updateUser(User user);
 
     Page<User> selectUsers(Map<String, Object> parameters);
 
diff --git a/screen-api/src/main/java/com/moral/api/service/impl/GroupMenuServiceImpl.java b/screen-api/src/main/java/com/moral/api/service/impl/GroupMenuServiceImpl.java
index 651b199..45bdefd 100644
--- a/screen-api/src/main/java/com/moral/api/service/impl/GroupMenuServiceImpl.java
+++ b/screen-api/src/main/java/com/moral/api/service/impl/GroupMenuServiceImpl.java
@@ -3,17 +3,27 @@
 import java.util.ArrayList;
 import java.util.List;
 import java.util.Map;
+import java.util.Objects;
 
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
 import com.moral.api.entity.GroupMenu;
+import com.moral.api.mapper.GroupMapper;
 import com.moral.api.mapper.GroupMenuMapper;
+import com.moral.api.mapper.MenuMapper;
 import com.moral.api.service.GroupMenuService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.moral.api.utils.OperationLogUtils;
 import com.moral.constant.Constants;
 import com.moral.util.TokenUtils;
 
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.web.context.request.RequestContextHolder;
+import org.springframework.web.context.request.ServletRequestAttributes;
+
+import javax.servlet.http.HttpServletRequest;
 
 /**
  * <p>
@@ -29,25 +39,52 @@
     @Autowired
     private GroupMenuMapper groupMenuMapper;
 
+    @Autowired
+    private GroupMapper groupMapper;
+
+    @Autowired
+    private MenuMapper menuMapper;
+
     @Override
-    public void allotMenus(Map<String, Object> parameters, String token) {
+    @Transactional
+    public void allotMenus(Map<String, Object> parameters) {
+        HttpServletRequest request = ((ServletRequestAttributes) Objects.requireNonNull(RequestContextHolder.getRequestAttributes())).getRequest();
+        String token = request.getHeader("token");
+
         Integer groupId = Integer.parseInt(parameters.get("groupId").toString());
         List<Integer> menuIds = (ArrayList) parameters.get("menuIds");
         Map<String, Object> currentUserInfo = (Map<String, Object>) TokenUtils.getUserInfoByToken(token);
+        Map<String, Object> orgInfo = (Map<String, Object>) currentUserInfo.get("organization");
         UpdateWrapper<GroupMenu> deleteWrapper = new UpdateWrapper<>();
-        deleteWrapper.set("is_delete", Constants.DELETE)
-                .eq("group_id", groupId)
-                .eq("channel", Constants.WEB_CHANNEL);
-        groupMenuMapper.update(null, deleteWrapper);
-        if (!menuIds.isEmpty()) {
-            for (Integer menuId : menuIds) {
+        deleteWrapper.eq("group_id", groupId).eq("channel", Constants.WEB_CHANNEL);
+        groupMenuMapper.delete(deleteWrapper);
+        List<String> menus = new ArrayList<>();
+        if (menuIds != null && !menuIds.isEmpty()) {
+            menuIds.forEach(menuId -> {
+                menus.add(menuMapper.selectById(menuId).getName());
                 GroupMenu groupMenu = new GroupMenu();
                 groupMenu.setGroupId(groupId);
                 groupMenu.setMenuId(menuId);
                 groupMenu.setChannel(Constants.WEB_CHANNEL);
-                groupMenu.setOrganizationId((Integer) currentUserInfo.get("organizationId"));
+                groupMenu.setOrganizationId((Integer) orgInfo.get("id"));
                 groupMenuMapper.insert(groupMenu);
-            }
+            });
         }
+
+
+        //������
+        String groupName = groupMapper.selectById((Integer) parameters.get("groupId")).getGroupName();
+        String content = "���������" + groupName + "������������������" + menus.toString();
+        OperationLogUtils.insertLog(request, content, Constants.UPDATE_OPERATE_TYPE);
+    }
+
+    @Override
+    public List<Integer> getMenusIds(Integer groupId) {
+        QueryWrapper<GroupMenu> queryWrapper = new QueryWrapper<>();
+        queryWrapper.eq("group_id", groupId).eq("is_delete", Constants.NOT_DELETE);
+        List<GroupMenu> groupMenus = groupMenuMapper.selectList(queryWrapper);
+        List<Integer> menuIds = new ArrayList<>();
+        groupMenus.forEach(groupMenu -> menuIds.add(groupMenu.getMenuId()));
+        return menuIds;
     }
 }
diff --git a/screen-api/src/main/java/com/moral/api/service/impl/GroupServiceImpl.java b/screen-api/src/main/java/com/moral/api/service/impl/GroupServiceImpl.java
index 49a9833..3f6b6ba 100644
--- a/screen-api/src/main/java/com/moral/api/service/impl/GroupServiceImpl.java
+++ b/screen-api/src/main/java/com/moral/api/service/impl/GroupServiceImpl.java
@@ -2,8 +2,8 @@
 
 
 import java.util.HashMap;
-import java.util.List;
 import java.util.Map;
+import java.util.Objects;
 
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
@@ -16,6 +16,7 @@
 import com.moral.api.mapper.UserGroupMapper;
 import com.moral.api.service.GroupService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.moral.api.utils.OperationLogUtils;
 import com.moral.constant.Constants;
 import com.moral.constant.ResponseCodeEnum;
 import com.moral.util.ConvertUtils;
@@ -23,6 +24,10 @@
 
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+import org.springframework.web.context.request.RequestContextHolder;
+import org.springframework.web.context.request.ServletRequestAttributes;
+
+import javax.servlet.http.HttpServletRequest;
 
 /**
  * <p>
@@ -45,10 +50,14 @@
     private UserGroupMapper userGroupMapper;
 
     @Override
-    public Map<String, Object> addGroup(Group group, String token) {
+    public Map<String, Object> addGroup(Group group) {
+        HttpServletRequest request = ((ServletRequestAttributes) Objects.requireNonNull(RequestContextHolder.getRequestAttributes())).getRequest();
+        String token = request.getHeader("token");
+
         Map<String, Object> result = new HashMap<>();
         Map<String, Object> currentUserInfo = (Map<String, Object>) TokenUtils.getUserInfoByToken(token);
-        Integer orgId = (int) currentUserInfo.get("organizationId");
+        Map<String, Object> orgInfo = (Map<String, Object>) currentUserInfo.get("organization");
+        Integer orgId = (Integer) orgInfo.get("id");
         QueryWrapper<Group> queryWrapper = new QueryWrapper<>();
         queryWrapper.eq("group_name", group.getGroupName())
                 .eq("organization_id", orgId)
@@ -60,6 +69,10 @@
         }
         group.setOrganizationId(orgId);
         groupMapper.insert(group);
+
+        //������
+        String content = "���������������" + group.getGroupName();
+        OperationLogUtils.insertLog(request, content, Constants.INSERT_OPERATE_TYPE);
         return result;
     }
 
@@ -68,42 +81,58 @@
         //������������group
         group.setIsDelete(Constants.DELETE);
         groupMapper.updateById(group);
-        //������������group_menu
+        //������group_menu
         UpdateWrapper<GroupMenu> deleteGroupWrapper = new UpdateWrapper<>();
-        deleteGroupWrapper.set("is_delete", Constants.DELETE).eq("group_id", group.getId());
-        groupMenuMapper.update(null, deleteGroupWrapper);
-        //������������user_group
+        deleteGroupWrapper.eq("group_id", group.getId());
+        groupMenuMapper.delete(deleteGroupWrapper);
+        //������user_group
         UpdateWrapper<UserGroup> deleteUserGroupWrapper = new UpdateWrapper<>();
-        deleteUserGroupWrapper.set("is_delete", Constants.DELETE).eq("group_id", group.getId());
-        userGroupMapper.update(null, deleteUserGroupWrapper);
+        deleteUserGroupWrapper.eq("group_id", group.getId());
+        userGroupMapper.delete(deleteUserGroupWrapper);
+        //������
+        HttpServletRequest request = ((ServletRequestAttributes) Objects.requireNonNull(RequestContextHolder.getRequestAttributes())).getRequest();
+        String content = "���������������" + group.getGroupName();
+        OperationLogUtils.insertLog(request, content, Constants.DELETE_OPERATE_TYPE);
     }
 
     @Override
-    public Map<String, Object> updateGroup(Group group, String token) {
+    public Map<String, Object> updateGroup(Group group) {
+        HttpServletRequest request = ((ServletRequestAttributes) Objects.requireNonNull(RequestContextHolder.getRequestAttributes())).getRequest();
+        String token = request.getHeader("token");
+
+        String before = groupMapper.selectById(group.getId()).getGroupName();
         Map<String, Object> result = new HashMap<>();
         Map<String, Object> currentUserInfo = (Map<String, Object>) TokenUtils.getUserInfoByToken(token);
-        Object organizationId = currentUserInfo.get("organizationId");
+        Map<String, Object> orgInfo = (Map<String, Object>) currentUserInfo.get("organization");
+        Integer orgId = (Integer) orgInfo.get("id");
         QueryWrapper<Group> queryWrapper = new QueryWrapper<>();
         queryWrapper.ne("id", group.getId())
                 .eq("group_name", group.getGroupName())
                 .eq("is_delete", Constants.NOT_DELETE)
-                .eq("organization_id", organizationId);
+                .eq("organization_id", orgId);
         if (groupMapper.selectOne(queryWrapper) != null) {
             result.put("code", ResponseCodeEnum.GROUP_EXIST.getCode());
             result.put("msg", ResponseCodeEnum.GROUP_EXIST.getMsg());
             return result;
         }
-        group.setOrganizationId((int) organizationId);
+        group.setOrganizationId(orgId);
         groupMapper.updateById(group);
+        //������
+        String content = "���������������" + before + "=>" + group.getGroupName();
+        OperationLogUtils.insertLog(request, content, Constants.UPDATE_OPERATE_TYPE);
         return result;
     }
 
     @Override
     public Page<Group> selectGroups(Map<String, Object> parameters) {
-        Map<String, Object> currentUserInfo = (Map<String, Object>) TokenUtils.getUserInfoByToken(parameters.get("token").toString());
-        Object organizationId = currentUserInfo.get("organizationId");
+        HttpServletRequest request = ((ServletRequestAttributes) Objects.requireNonNull(RequestContextHolder.getRequestAttributes())).getRequest();
+        String token = request.getHeader("token");
+
+        Map<String, Object> currentUserInfo = (Map<String, Object>) TokenUtils.getUserInfoByToken(token);
+        Map<String, Object> orgInfo = (Map<String, Object>) currentUserInfo.get("organization");
+        Integer orgId = (Integer) orgInfo.get("id");
         QueryWrapper<Group> queryWrapper = new QueryWrapper<>();
-        queryWrapper.eq("organization_id", organizationId)
+        queryWrapper.eq("organization_id", orgId)
                 .eq("is_delete", Constants.NOT_DELETE);
         Object order = parameters.get("order");
         Object orderType = parameters.get("orderType");
diff --git a/screen-api/src/main/java/com/moral/api/service/impl/ManageLogServiceImpl.java b/screen-api/src/main/java/com/moral/api/service/impl/ManageLogServiceImpl.java
index 30c5c3c..b6589c5 100644
--- a/screen-api/src/main/java/com/moral/api/service/impl/ManageLogServiceImpl.java
+++ b/screen-api/src/main/java/com/moral/api/service/impl/ManageLogServiceImpl.java
@@ -12,7 +12,7 @@
  * </p>
  *
  * @author moral
- * @since 2021-03-09
+ * @since 2021-04-13
  */
 @Service
 public class ManageLogServiceImpl extends ServiceImpl<ManageLogMapper, ManageLog> implements ManageLogService {
diff --git a/screen-api/src/main/java/com/moral/api/service/impl/MenuServiceImpl.java b/screen-api/src/main/java/com/moral/api/service/impl/MenuServiceImpl.java
index f05735c..d1a0ed3 100644
--- a/screen-api/src/main/java/com/moral/api/service/impl/MenuServiceImpl.java
+++ b/screen-api/src/main/java/com/moral/api/service/impl/MenuServiceImpl.java
@@ -1,6 +1,7 @@
 package com.moral.api.service.impl;
 
 import java.util.HashMap;
+import java.util.List;
 import java.util.Map;
 
 import com.moral.api.entity.Menu;
@@ -26,10 +27,18 @@
     @Autowired
     private UserService userService;
 
+    @Autowired
+    private MenuMapper menuMapper;
+
     @Override
     public Map<String, Object> selectMenusByOrgId(Integer orgId) {
         Map<String, Object> map = new HashMap<>();
-        map.put("orgId",orgId);
+        map.put("orgId", orgId);
         return userService.getMenus(map);
     }
+
+    @Override
+    public List<Menu> getMenuList(Integer orgId) {
+        return menuMapper.selectOrganizationMenu(orgId);
+    }
 }
diff --git a/screen-api/src/main/java/com/moral/api/service/impl/UserGroupServiceImpl.java b/screen-api/src/main/java/com/moral/api/service/impl/UserGroupServiceImpl.java
index 1bf3af4..66f03ef 100644
--- a/screen-api/src/main/java/com/moral/api/service/impl/UserGroupServiceImpl.java
+++ b/screen-api/src/main/java/com/moral/api/service/impl/UserGroupServiceImpl.java
@@ -3,18 +3,27 @@
 import java.util.ArrayList;
 import java.util.List;
 import java.util.Map;
+import java.util.Objects;
 
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
 import com.moral.api.entity.UserGroup;
+import com.moral.api.mapper.GroupMapper;
 import com.moral.api.mapper.UserGroupMapper;
+import com.moral.api.mapper.UserMapper;
 import com.moral.api.service.UserGroupService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.moral.api.utils.OperationLogUtils;
 import com.moral.constant.Constants;
 import com.moral.util.TokenUtils;
 
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.web.context.request.RequestContextHolder;
+import org.springframework.web.context.request.ServletRequestAttributes;
+
+import javax.servlet.http.HttpServletRequest;
 
 /**
  * <p>
@@ -30,23 +39,41 @@
     @Autowired
     private UserGroupMapper userGroupMapper;
 
+    @Autowired
+    private UserMapper userMapper;
+
+    @Autowired
+    private GroupMapper groupMapper;
+
     @Override
-    public void allotGroups(Map<String, Object> parameters, String token) {
+    @Transactional
+    public void allotGroups(Map<String, Object> parameters) {
+        HttpServletRequest request = ((ServletRequestAttributes) Objects.requireNonNull(RequestContextHolder.getRequestAttributes())).getRequest();
+        String token = request.getHeader("token");
+
         Integer userId = Integer.parseInt(parameters.get("userId").toString());
         List<Integer> groupIds = (ArrayList) parameters.get("groupIds");
         Map<String, Object> currentUserInfo = (Map<String, Object>) TokenUtils.getUserInfoByToken(token);
+        Map<String, Object> orgInfo = (Map<String, Object>) currentUserInfo.get("organization");
         UpdateWrapper<UserGroup> deleteWrapper = new UpdateWrapper<>();
-        deleteWrapper.set("is_delete", Constants.DELETE).eq("user_id", userId);
-        userGroupMapper.update(null, deleteWrapper);
-        if (!groupIds.isEmpty()) {
-            for (Integer groupId : groupIds) {
+        deleteWrapper.eq("user_id", userId);
+        userGroupMapper.delete(deleteWrapper);
+        List<String> groups = new ArrayList<>();
+        if (groupIds != null && !groupIds.isEmpty()) {
+            groupIds.forEach(groupId -> {
+                groups.add(groupMapper.selectById(groupId).getGroupName());
                 UserGroup userGroup = new UserGroup();
                 userGroup.setUserId(userId);
                 userGroup.setGroupId(groupId);
-                userGroup.setOrganizationId((Integer) currentUserInfo.get("organizationId"));
+                userGroup.setOrganizationId((Integer) orgInfo.get("id"));
                 userGroupMapper.insert(userGroup);
-            }
+            });
         }
+
+        //������
+        String account = userMapper.selectById((Integer) parameters.get("userId")).getAccount();
+        String content = "������������" + account + "���������������" + groups.toString();
+        OperationLogUtils.insertLog(request, content, Constants.UPDATE_OPERATE_TYPE);
     }
 
     @Override
@@ -55,9 +82,7 @@
         queryWrapper.eq("user_id", userId).eq("is_delete", Constants.NOT_DELETE);
         List<UserGroup> userGroups = userGroupMapper.selectList(queryWrapper);
         List<Integer> groupIds = new ArrayList<>();
-        for (UserGroup userGroup : userGroups) {
-            groupIds.add(userGroup.getGroupId());
-        }
+        userGroups.forEach(userGroup -> groupIds.add(userGroup.getGroupId()));
         return groupIds;
     }
 }
diff --git a/screen-api/src/main/java/com/moral/api/service/impl/UserLogServiceImpl.java b/screen-api/src/main/java/com/moral/api/service/impl/UserLogServiceImpl.java
index 381f1d0..61e14ef 100644
--- a/screen-api/src/main/java/com/moral/api/service/impl/UserLogServiceImpl.java
+++ b/screen-api/src/main/java/com/moral/api/service/impl/UserLogServiceImpl.java
@@ -1,10 +1,22 @@
 package com.moral.api.service.impl;
 
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.moral.api.entity.UserLog;
 import com.moral.api.mapper.UserLogMapper;
 import com.moral.api.service.UserLogService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.moral.util.TokenUtils;
+
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+import org.springframework.web.context.request.RequestContextHolder;
+import org.springframework.web.context.request.ServletRequestAttributes;
+
+import java.util.Map;
+import java.util.Objects;
+
+import javax.servlet.http.HttpServletRequest;
 
 /**
  * <p>
@@ -17,4 +29,27 @@
 @Service
 public class UserLogServiceImpl extends ServiceImpl<UserLogMapper, UserLog> implements UserLogService {
 
+    @Autowired
+    private UserLogMapper userLogMapper;
+
+    @Override
+    public Page<UserLog> selectLogs(Map<String, Object> parameters) {
+        HttpServletRequest request = ((ServletRequestAttributes) Objects.requireNonNull(RequestContextHolder.getRequestAttributes())).getRequest();
+        String token = request.getHeader("token");
+        Map<String, Object> currentUserInfo = (Map<String, Object>) TokenUtils.getUserInfoByToken(token);
+        Map<String, Object> orgInfo = (Map<String, Object>) currentUserInfo.get("organization");
+        Object orgId = orgInfo.get("id");
+        QueryWrapper<UserLog> queryWrapper = new QueryWrapper<>();
+        queryWrapper.eq("organization_id", orgId);
+        Object type = parameters.get("type");
+        if (type != null) {
+            queryWrapper.eq("type", type);
+        }
+        queryWrapper.orderByDesc("create_time");
+        Integer page = (Integer) parameters.get("page");
+        Integer size = (Integer) parameters.get("size");
+        Page<UserLog> userLogPage = new Page<>(page, size);
+        userLogMapper.selectPage(userLogPage, queryWrapper);
+        return userLogPage;
+    }
 }
diff --git a/screen-api/src/main/java/com/moral/api/service/impl/UserServiceImpl.java b/screen-api/src/main/java/com/moral/api/service/impl/UserServiceImpl.java
index 70b8a57..ca8fb19 100644
--- a/screen-api/src/main/java/com/moral/api/service/impl/UserServiceImpl.java
+++ b/screen-api/src/main/java/com/moral/api/service/impl/UserServiceImpl.java
@@ -1,5 +1,12 @@
 package com.moral.api.service.impl;
 
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.web.context.request.RequestContextHolder;
+import org.springframework.web.context.request.ServletRequestAttributes;
+
 import java.util.ArrayList;
 import java.util.Comparator;
 import java.util.Date;
@@ -7,13 +14,13 @@
 import java.util.LinkedHashMap;
 import java.util.List;
 import java.util.Map;
+import java.util.Objects;
 import java.util.stream.Collectors;
 
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.beans.factory.annotation.Value;
-import org.springframework.stereotype.Service;
-import org.springframework.transaction.annotation.Transactional;
+import javax.servlet.http.HttpServletRequest;
 
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
@@ -23,12 +30,14 @@
 import com.moral.api.entity.Organization;
 import com.moral.api.entity.User;
 import com.moral.api.entity.UserGroup;
-
+import com.moral.api.entity.UserLog;
 import com.moral.api.mapper.MenuMapper;
 import com.moral.api.mapper.UserGroupMapper;
+import com.moral.api.mapper.UserLogMapper;
 import com.moral.api.mapper.UserMapper;
 import com.moral.api.pojo.bo.UserBO;
 import com.moral.api.service.UserService;
+import com.moral.api.utils.OperationLogUtils;
 import com.moral.constant.Constants;
 import com.moral.constant.ResponseCodeEnum;
 import com.moral.util.AESUtils;
@@ -37,6 +46,7 @@
 import com.moral.util.MD5Utils;
 import com.moral.util.RegexUtils;
 import com.moral.util.TokenUtils;
+import com.moral.util.WebUtils;
 
 /**
  * <p>
@@ -58,8 +68,12 @@
     @Autowired
     private UserGroupMapper userGroupMapper;
 
+    @Autowired
+    private UserLogMapper userLogMapper;
+
     @Value("${AES.KEY}")
     private String AESKey;
+
 
     @Override
     public UserBO selectUserInfo(Map<String, Object> parameters) {
@@ -145,6 +159,15 @@
             result.put("code", ResponseCodeEnum.TOKEN_CREATE_ERROR.getCode());
             result.put("msg", ResponseCodeEnum.TOKEN_CREATE_ERROR.getMsg());
         }
+        //������
+        HttpServletRequest request = ((ServletRequestAttributes) Objects.requireNonNull(RequestContextHolder.getRequestAttributes())).getRequest();
+        UserLog userLog = new UserLog();
+        userLog.setType(Constants.LOGIN_OPERTATE_TYPE);
+        userLog.setIp(WebUtils.getIpAddr(request));
+        userLog.setOperateId(userBo.getId());
+        userLog.setOrganizationId(userBo.getOrganizationId());
+        userLog.setContent("������������������" + userBo.getAccount());
+        userLogMapper.insert(userLog);
         return result;
     }
 
@@ -206,7 +229,10 @@
 
     @Override
     @Transactional
-    public Map<String, Object> addUser(User user, String token) {
+    public Map<String, Object> addUser(User user) {
+        HttpServletRequest request = ((ServletRequestAttributes) Objects.requireNonNull(RequestContextHolder.getRequestAttributes())).getRequest();
+        String token = request.getHeader("token");
+
         Map<String, Object> result = new HashMap<>();
         Map<String, Object> currentUserInfo = (Map<String, Object>) TokenUtils.getUserInfoByToken(token);
 
@@ -261,8 +287,15 @@
             } else {
                 user.setExpireTime(userExpireTime);
             }
+        } else {
+            if (orgExpireTime != null) {
+                user.setExpireTime(orgExpireTime);
+            }
         }
         userMapper.insert(user);
+        //������
+        String content = "������������������" + user.getAccount();
+        OperationLogUtils.insertLog(request, content, Constants.INSERT_OPERATE_TYPE);
         return result;
     }
 
@@ -273,23 +306,34 @@
         //������������user
         user.setIsDelete(Constants.DELETE);
         userMapper.updateById(user);
-        //������������user_group
+        //������user_group
         UpdateWrapper<UserGroup> deleteWrapper = new UpdateWrapper<>();
-        deleteWrapper.set("is_delete", Constants.DELETE).eq("user_id", userId);
+        deleteWrapper.eq("user_id", userId);
+        userGroupMapper.delete(deleteWrapper);
         //������redis
         if (TokenUtils.hHasKey(userId)) {
             String token = TokenUtils.hget(userId).toString();
             TokenUtils.destoryToken(userId, token);
         }
-        userGroupMapper.update(null, deleteWrapper);
+        //������
+        HttpServletRequest request = ((ServletRequestAttributes) Objects.requireNonNull(RequestContextHolder.getRequestAttributes())).getRequest();
+        String content = "������������������" + user.getAccount();
+        OperationLogUtils.insertLog(request, content, Constants.DELETE_OPERATE_TYPE);
     }
 
     @Override
     @Transactional
-    public Map<String, Object> updateUser(User user, String token) {
+    public Map<String, Object> updateUser(User user) {
+        HttpServletRequest request = ((ServletRequestAttributes) Objects.requireNonNull(RequestContextHolder.getRequestAttributes())).getRequest();
+        String token = request.getHeader("token");
+
+        //���������������
+        Map<String, Object> update = JSONObject.parseObject(JSON.toJSONString(user), Map.class);
         Map<String, Object> result = new HashMap<>();
         Map<String, Object> currentUserInfo = (Map<String, Object>) TokenUtils.getUserInfoByToken(token);
-        String account = userMapper.selectById(user.getId()).getAccount();
+        User beforeUser = userMapper.selectById(user.getId());
+        Map<String, Object> before = JSONObject.parseObject(JSON.toJSONString(beforeUser), Map.class);
+        String account = beforeUser.getAccount();
         //account������������
         user.setAccount(account);
 
@@ -301,12 +345,14 @@
         }
         //������������
         String password = user.getPassword();
-        //������������
-        password = AESUtils.decrypt(password, AESKey);
-        if (!RegexUtils.checkPassword(password)) {
-            result.put("code", ResponseCodeEnum.PASSWORD_INVALID.getCode());
-            result.put("msg", ResponseCodeEnum.PASSWORD_INVALID.getMsg());
-            return result;
+        if (password != null) {
+            //������������
+            password = AESUtils.decrypt(password, AESKey);
+            if (!RegexUtils.checkPassword(password)) {
+                result.put("code", ResponseCodeEnum.PASSWORD_INVALID.getCode());
+                result.put("msg", ResponseCodeEnum.PASSWORD_INVALID.getMsg());
+                return result;
+            }
         }
 
         //���������������������
@@ -331,6 +377,10 @@
             } else {
                 user.setExpireTime(userExpireTime);
             }
+        } else {
+            if (orgExpireTime != null) {
+                user.setExpireTime(orgExpireTime);
+            }
         }
         //������redis
         String userId = user.getId().toString();
@@ -339,12 +389,28 @@
             TokenUtils.destoryToken(userId, deleteToken);
         }
         userMapper.updateById(user);
+
+        //������
+        StringBuilder content = new StringBuilder("������������������" + user.getAccount() + "->");
+        for (String key : update.keySet()) {
+            Object afterValue = update.get(key);
+            if (!key.equals("id") && afterValue != null) {
+                //������������������
+                Object beforeValue = before.get(key);
+                content.append(key).append(":").append(beforeValue).append("=>").append(afterValue).append(";");
+            }
+        }
+        OperationLogUtils.insertLog(request, content.toString(), Constants.UPDATE_OPERATE_TYPE);
+
         return result;
     }
 
     @Override
     public Page<User> selectUsers(Map<String, Object> parameters) {
-        Map<String, Object> currentUserInfo = (Map<String, Object>) TokenUtils.getUserInfoByToken(parameters.get("token").toString());
+        HttpServletRequest request = ((ServletRequestAttributes) Objects.requireNonNull(RequestContextHolder.getRequestAttributes())).getRequest();
+        String token = request.getHeader("token");
+
+        Map<String, Object> currentUserInfo = (Map<String, Object>) TokenUtils.getUserInfoByToken(token);
         Map<String, Object> orgInfo = (Map<String, Object>) currentUserInfo.get("organization");
         QueryWrapper<User> queryWrapper = new QueryWrapper<>();
         queryWrapper.eq("organization_id", orgInfo.get("id"))
@@ -387,7 +453,6 @@
             queryWrapper.orderByDesc("create_time");
         }
         userMapper.selectPage(pageData, queryWrapper);
-
         return pageData;
     }
 
diff --git a/screen-api/src/main/java/com/moral/api/utils/OperationLogUtils.java b/screen-api/src/main/java/com/moral/api/utils/OperationLogUtils.java
index 88afde3..19c9cf4 100644
--- a/screen-api/src/main/java/com/moral/api/utils/OperationLogUtils.java
+++ b/screen-api/src/main/java/com/moral/api/utils/OperationLogUtils.java
@@ -25,10 +25,11 @@
         this.userLogService = userLogService;
     }
 
-    public static void insertLog(HttpServletRequest request, String content) {
+    public static void insertLog(HttpServletRequest request, String content, String type) {
         String token = request.getHeader("token");
         Map<String, Object> currentUserInfo = (Map<String, Object>) TokenUtils.getUserInfoByToken(token);
         UserLog userLog = new UserLog();
+        userLog.setType(type);
         userLog.setIp(WebUtils.getIpAddr(request));
         userLog.setOperateId((Integer) currentUserInfo.get("userId"));
         Map<String, Object> orgInfo = (Map<String, Object>) currentUserInfo.get("organization");
diff --git a/screen-api/src/main/resources/mapper/ManageLogMapper.xml b/screen-api/src/main/resources/mapper/ManageLogMapper.xml
index caccc42..a688e65 100644
--- a/screen-api/src/main/resources/mapper/ManageLogMapper.xml
+++ b/screen-api/src/main/resources/mapper/ManageLogMapper.xml
@@ -5,9 +5,11 @@
         <!-- ������������������������ -->
         <resultMap id="BaseResultMap" type="com.moral.api.entity.ManageLog">
                     <id column="id" property="id" />
+                    <result column="account_id" property="accountId" />
+                    <result column="account" property="account" />
+                    <result column="user_name" property="userName" />
+                    <result column="type" property="type" />
                     <result column="content" property="content" />
-                    <result column="organization_id" property="organizationId" />
-                    <result column="operate_id" property="operateId" />
                     <result column="ip" property="ip" />
                     <result column="create_time" property="createTime" />
         </resultMap>
diff --git a/screen-api/src/main/resources/mapper/MenuMapper.xml b/screen-api/src/main/resources/mapper/MenuMapper.xml
index 261a915..28df161 100644
--- a/screen-api/src/main/resources/mapper/MenuMapper.xml
+++ b/screen-api/src/main/resources/mapper/MenuMapper.xml
@@ -15,17 +15,13 @@
         <result column="is_delete" property="isDelete"/>
     </resultMap>
 
-    <resultMap id="MenuResultMap" type="com.moral.api.entity.Menu">
-        <id column="id" property="id"/>
-        <result column="name" property="name"/>
-        <result column="url" property="url"/>
-        <result column="icon" property="icon"/>
-        <result column="parent_id" property="parentId"/>
-        <result column="order" property="order" jdbcType="INTEGER"/>
-    </resultMap>
+    <sql id="Base_Column_List">
+        m.id, m.name, m.url, m.icon, m.parent_id, m.order, m.create_time, m.update_time
+    </sql>
 
-    <select id="selectUserMenu" resultMap="MenuResultMap">
-        SELECT DISTINCT m.id,m.name,m.url,m.icon,m.parent_id,m.order
+    <select id="selectUserMenu" resultMap="BaseResultMap">
+        select
+        <include refid="Base_Column_List"></include>
         FROM `user_group` ug,`group_menu` gm,`menu` m
         WHERE ug.user_id = #{userId}
         AND ug.group_id = gm.group_id
@@ -34,11 +30,11 @@
         AND gm.is_delete = 0
         AND gm.channel = 1
         AND m.is_delete = 0
-        ORDER  by m.`order`
     </select>
 
-    <select id="selectOrganizationMenu" resultMap="MenuResultMap">
-        SELECT m.id,m.name,m.url,m.icon,m.parent_id,m.order
+    <select id="selectOrganizationMenu" resultMap="BaseResultMap">
+        select
+        <include refid="Base_Column_List"></include>
         FROM `menu` m, `organization_menu` om
         WHERE om.organization_id = #{orgId}
         AND m.id = om.menu_id
@@ -46,6 +42,5 @@
         AND om.menu_id = m.id
         AND om.is_delete = 0
         AND m.is_delete = 0
-        ORDER  by m.`order`
     </select>
 </mapper>
\ No newline at end of file
diff --git a/screen-api/src/main/resources/mapper/UserLogMapper.xml b/screen-api/src/main/resources/mapper/UserLogMapper.xml
index 52f730a..94e75cc 100644
--- a/screen-api/src/main/resources/mapper/UserLogMapper.xml
+++ b/screen-api/src/main/resources/mapper/UserLogMapper.xml
@@ -2,14 +2,15 @@
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="com.moral.api.mapper.UserLogMapper">
 
-        <!-- ������������������������ -->
-        <resultMap id="BaseResultMap" type="com.moral.api.entity.UserLog">
-                    <id column="id" property="id" />
-                    <result column="content" property="content" />
-                    <result column="organization_id" property="organizationId" />
-                    <result column="operate_id" property="operateId" />
-                    <result column="ip" property="ip" />
-                    <result column="create_time" property="createTime" />
-        </resultMap>
+    <!-- ������������������������ -->
+    <resultMap id="BaseResultMap" type="com.moral.api.entity.UserLog">
+        <id column="id" property="id" />
+        <result column="type" property="type" />
+        <result column="content" property="content" />
+        <result column="organization_id" property="organizationId" />
+        <result column="operate_id" property="operateId" />
+        <result column="ip" property="ip" />
+        <result column="create_time" property="createTime" />
+    </resultMap>
 
 </mapper>
\ No newline at end of file
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 c9d1342..c4f87db 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
@@ -14,6 +14,7 @@
 import io.swagger.annotations.ApiOperation;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RequestMethod;
 import org.springframework.web.bind.annotation.RestController;
@@ -45,13 +46,12 @@
             @ApiImplicitParam(name = "order", value = "������������������", required = true, paramType = "query", dataType = "String")
     })
     @RequestMapping(value = "insertOneManageMenu", method = RequestMethod.POST)
-    public ResultMessage insertOneManageMenu(HttpServletRequest request) {
-        Map<String, Object> parameters = WebUtils.getParametersStartingWith(request, null);
+    public ResultMessage insertOneManageMenu(@RequestBody Map<String, Object> parameters) {
         ManageMenu manageMenu = JSON.parseObject(JSON.toJSONString(parameters), ManageMenu.class);
         Map<String,Object> resultMap = manageMenuService.insertManageMenu(manageMenu);
         String msg = resultMap.get("msg").toString();
-        boolean flag = Boolean.parseBoolean(resultMap.get("flag").toString());
-        if (flag){
+        int code = Integer.parseInt(resultMap.get("code").toString());
+        if (code == 0){
             return ResultMessage.ok(msg);
         }
         return ResultMessage.fail(msg);
@@ -64,28 +64,27 @@
             @ApiImplicitParam(name = "url", value = "url������", required = true, paramType = "query", dataType = "String")
     })
     @RequestMapping(value = "updateManageMenuById", method = RequestMethod.POST)
-    public ResultMessage updateManageMenuById(HttpServletRequest request) {
-        Map<String, Object> parameters = WebUtils.getParametersStartingWith(request, null);
+    public ResultMessage updateManageMenuById(@RequestBody Map<String, Object> parameters) {
+        System.out.println("parameters:"+parameters);
         Map<String,Object> resultMap = manageMenuService.updateManageMenu(parameters);
         String msg = resultMap.get("msg").toString();
-        boolean flag = Boolean.parseBoolean(resultMap.get("flag").toString());
-        if (flag){
+        int code = Integer.parseInt(resultMap.get("code").toString());
+        if (code == 0){
             return ResultMessage.ok(msg);
         }
         return ResultMessage.fail(msg);
     }
 
-    @ApiOperation(value = "������������", notes = "������������")
+    @ApiOperation(value = "������������", notes = "������������")
     @ApiImplicitParams({
             @ApiImplicitParam(name = "id", value = "������", required = true, paramType = "query", dataType = "int")
     })
     @RequestMapping(value = "deleteManageMenu", method = RequestMethod.POST)
-    public ResultMessage deleteManageMenu(HttpServletRequest request) {
-        Map<String, Object> parameters = WebUtils.getParametersStartingWith(request, null);
+    public ResultMessage deleteManageMenu(@RequestBody Map<String, Object> parameters) {
         Map<String,Object> resultMap = manageMenuService.deleteManageMenu(parameters);
         String msg = resultMap.get("msg").toString();
-        boolean flag = Boolean.parseBoolean(resultMap.get("flag").toString());
-        if (flag){
+        int code = Integer.parseInt(resultMap.get("code").toString());
+        if (code == 0){
             return ResultMessage.ok(msg);
         }
         return ResultMessage.fail(msg);
@@ -93,8 +92,6 @@
 
     @ApiOperation(value = "������������������", notes = "������������������")
     @ApiImplicitParams({
-            /*@ApiImplicitParam(name = "current", value = "������", required = true, paramType = "query", dataType = "int"),
-            @ApiImplicitParam(name = "size", value = "������������", required = true, paramType = "query", dataType = "int")*/
     })
     @RequestMapping(value = "getAllManageMenu", method = RequestMethod.GET)
     public ResultMessage getAllManageMenu(HttpServletRequest request) {
@@ -122,7 +119,7 @@
     })
     @RequestMapping(value = "getManageMenuByNameFuzzy", method = RequestMethod.GET)
     public ResultMessage getManageMenuByNameFuzzy(HttpServletRequest request) {
-        Map<String, Object> parameters = getParametersStartingWith(request, null);
+        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());
@@ -134,7 +131,54 @@
             resultMap.put("msg",ResponseCodeEnum.PARAMETERS_NOT_REQUIREMENT.getMsg());
             return ResultMessage.fail(resultMap);
         }
-        List<ManageMenu> re = manageMenuService.getManageMenuByNameFuzzy(parameters);
+        List<Map<String,Object>> re = manageMenuService.getManageMenuByNameFuzzy(parameters);
+        return ResultMessage.ok(re);
+    }
+
+    @ApiOperation(value = "������roleId������������", notes = "������roleId������������")
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "roleId", value = "������id", required = true, paramType = "query", dataType = "int")
+    })
+    @RequestMapping(value = "getManageMenuByRoleId", method = RequestMethod.GET)
+    public ResultMessage getManageMenuByRoleId(HttpServletRequest request) {
+        Map<String, Object> parameters = getParametersStartingWith(request, null);
+        List<ManageMenu> result = manageMenuService.getManageMenuByRoleId(Integer.parseInt(parameters.get("roleId").toString()));
+        return ResultMessage.ok(result);
+    }
+
+    @ApiOperation(value = "������������������", notes = "������������������")
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "current", value = "������", required = true, paramType = "query", dataType = "int"),
+            @ApiImplicitParam(name = "size", value = "������������", required = true, paramType = "query", dataType = "int")
+    })
+    @RequestMapping(value = "getManageMenuList", method = RequestMethod.GET)
+    public ResultMessage getManageMenuList(HttpServletRequest request) {
+        Map<String, Object> parameters = getParametersStartingWith(request, null);
+        List<Map<String,Object>> result = manageMenuService.getAllWithPagingQuery(parameters);
+        return ResultMessage.ok(result);
+    }
+
+    @ApiOperation(value = "������������������������������", notes = "������������������������������")
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "parent_id", value = "���������id", required = true, paramType = "query", dataType = "int"),
+            @ApiImplicitParam(name = "current", value = "������", required = true, paramType = "query", dataType = "int"),
+            @ApiImplicitParam(name = "size", value = "������������", required = true, paramType = "query", dataType = "int")
+    })
+    @RequestMapping(value = "getManageMenuByParentId", method = RequestMethod.GET)
+    public ResultMessage getManageMenuByParentId(HttpServletRequest request) {
+        Map<String,Object> parameters = getParametersStartingWith(request,null);
+        Map<String,Object> resultMap = new HashMap<>();
+        if (parameters.get("parent_id") == 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.getManageMenuByParentId(parameters);
         return ResultMessage.ok(re);
     }
 }
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 0fb5f4a..e56cf48 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
@@ -1,12 +1,13 @@
 package com.moral.api.controller;
 
 import com.alibaba.fastjson.JSON;
-import com.moral.api.entity.ManageMenu;
 import com.moral.api.entity.ManageRole;
-import com.moral.api.service.ManageMenuService;
+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;
@@ -14,6 +15,7 @@
 import io.swagger.annotations.ApiOperation;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.redis.core.RedisTemplate;
 import org.springframework.web.bind.annotation.*;
 
 import javax.servlet.http.HttpServletRequest;
@@ -36,6 +38,9 @@
     @Autowired
     private ManageRoleMenuService manageRoleMenuService;
 
+    @Autowired
+    private RedisTemplate redisTemplate;
+
     @ApiOperation(value = "������������������", notes = "������������������")
     @ApiImplicitParams({
             @ApiImplicitParam(name = "current", value = "������", required = true, paramType = "query", dataType = "int"),
@@ -56,7 +61,7 @@
     })
     @RequestMapping(value = "insertOneManageRole", method = RequestMethod.POST)
     @ResponseBody
-    public ResultMessage insertOneManageRole(@RequestBody Map<String, Object> parameters) {
+    public ResultMessage insertOneManageRole(@RequestBody Map<String, Object> parameters,HttpServletRequest request) {
         List list = new ArrayList();
         if (parameters.get("menuIds") != null){
             String menuIdsStr = parameters.get("menuIds").toString();
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 93155b2..5d9b771 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,4 +34,8 @@
 
     List<ManageMenu> getManageRoleByNameFuzzy(Map map);
 
+    List<ManageMenu> getManageMenuByCondition(Map map);
+
+    List<ManageMenu> getManageMenuByRoleId(int roleId);
+
 }
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 3915f76..4c08837 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
@@ -28,11 +28,15 @@
     @Transactional
     Map<String,Object> deleteManageMenu(Map map);
 
-    List<ManageMenu> getAllWithPagingQuery(Map map);
+    List<Map<String,Object>> getAllWithPagingQuery(Map map);
 
     List<ManageMenu> getAllMenus();
 
-    List<ManageMenu> getManageMenuByNameFuzzy(Map map);
+    List getManageMenuByRoleId(int roleId);
+
+    List<Map<String,Object>> getManageMenuByNameFuzzy(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/impl/ManageMenuServiceImpl.java b/screen-manage/src/main/java/com/moral/api/service/impl/ManageMenuServiceImpl.java
index 35b3607..e64de85 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
@@ -1,5 +1,6 @@
 package com.moral.api.service.impl;
 
+import com.alibaba.fastjson.JSON;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.moral.api.entity.ManageMenu;
@@ -8,13 +9,19 @@
 import com.moral.api.mapper.ManageRoleMenuMapper;
 import com.moral.api.service.ManageMenuService;
 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.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.annotation.Resource;
+import javax.servlet.http.HttpServletRequest;
+import java.text.SimpleDateFormat;
 import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
@@ -38,6 +45,9 @@
     @Autowired(required = false)
     private ManageRoleMenuMapper manageRoleMenuMapper;
 
+    @Autowired
+    LogUtils logUtils;
+
     @Override
     @Transactional
     public Map<String, Object> insertManageMenu(ManageMenu manageMenu) {
@@ -52,6 +62,10 @@
             resultMap.put("msg", ResponseCodeEnum.MENU_IS_EXPIRE.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());
         }
@@ -71,7 +85,30 @@
             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")){
+                    content = content+"���������:"+manageMenuOld.getName()+"->"+map.get(key)+";";
+                }
+                if (key.toString().equals("url")){
+                    content = content+"url������:"+manageMenuOld.getUrl()+"->"+map.get(key)+";";
+                }
+                if (key.toString().equals("icon")){
+                    content = content+"������������:"+manageMenuOld.getIcon()+"->"+map.get(key)+";";
+                }
+                if (key.toString().equals("parent_id")){
+                    content = content+"���������:"+manageMenuMapper.getManageMenuById(manageMenuOld.getId()).getName()+"->"+manageMenuMapper.getManageMenuById(Integer.parseInt(map.get(key).toString())).getName()+";";
+                }
+                if (key.toString().equals("order")){
+                    content = content+"������������������������:"+manageMenuOld.getOrder()+"->"+map.get(key)+";";
+                }
+            }
+            logUtils.saveOperationForManage(request,content,Constants.UPDATE_OPERATE_TYPE);
             resultMap.put("code", ResponseCodeEnum.SUCCESS.getCode());
             resultMap.put("msg", ResponseCodeEnum.SUCCESS.getMsg());
         }
@@ -91,6 +128,8 @@
             resultMap.put("code", ResponseCodeEnum.MENU_IS_NULL.getCode());
             resultMap.put("msg", ResponseCodeEnum.MENU_IS_NULL.getMsg());
         } else {
+            //������������������������������
+            ManageMenu manageMenuDelete = manageMenuMapper.getManageMenuById(Integer.parseInt(map.get("id").toString()));
             Map deleteMap = new HashMap();
             int id = Integer.parseInt(map.get("id").toString());
             deleteMap.put("id", id);
@@ -99,6 +138,10 @@
             Map role_menuDeleteMap = new HashMap();
             role_menuDeleteMap.put("menu_id", id);
             manageRoleMenuMapper.updateDeleteStateByMenu_id(role_menuDeleteMap);
+            //������������������
+            HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
+            String content = "������������:"+manageMenuDelete.getName()+";";
+            logUtils.saveOperationForManage(request,content,Constants.DELETE_OPERATE_TYPE);
             resultMap.put("code", ResponseCodeEnum.SUCCESS.getCode());
             resultMap.put("msg", ResponseCodeEnum.SUCCESS.getMsg());
         }
@@ -106,12 +149,33 @@
     }
 
     @Override
-    public List<ManageMenu> getAllWithPagingQuery(Map map) {
+    public List<Map<String,Object>> getAllWithPagingQuery(Map map) {
         Map limitMap = new HashMap();
         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.getDataWithPage(limitMap);
-        return manageMenus;
+        SimpleDateFormat SDF = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+        List<Map<String,Object>> resultList = 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);
+            resultList.add(manegeMenuMap);
+        }
+        return resultList;
     }
 
     @Override
@@ -141,13 +205,75 @@
     }
 
     @Override
-    public List<ManageMenu> getManageMenuByNameFuzzy(Map map) {
+    public List getManageMenuByRoleId(int roleId) {
+        List<ManageMenu> manageMenus = manageMenuMapper.getManageMenuByRoleId(roleId);
+        List menuIdList = new ArrayList();
+        for (ManageMenu manageMenu:manageMenus) {
+            menuIdList.add(manageMenu.getId());
+        }
+        return menuIdList;
+    }
+
+    @Override
+    public List<Map<String,Object>> getManageMenuByNameFuzzy(Map map) {
         Map limitMap = new HashMap();
         limitMap.put("name", map.get("name"));
         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);
-        return manageMenus;
+        SimpleDateFormat SDF = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+        List<Map<String,Object>> resultList = 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);
+            resultList.add(manegeMenuMap);
+        }
+        return resultList;
+    }
+
+    @Override
+    public List<Map<String, Object>> getManageMenuByParentId(Map map) {
+        Map limitMap = new HashMap();
+        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.getManageMenuByCondition(limitMap);
+        SimpleDateFormat SDF = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+        List<Map<String,Object>> resultList = 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);
+            resultList.add(manegeMenuMap);
+        }
+        return resultList;
     }
 
     @Override
diff --git a/screen-manage/src/main/java/com/moral/api/service/impl/ManageRoleMenuServiceImpl.java b/screen-manage/src/main/java/com/moral/api/service/impl/ManageRoleMenuServiceImpl.java
index 2c7e1fc..5450a72 100644
--- a/screen-manage/src/main/java/com/moral/api/service/impl/ManageRoleMenuServiceImpl.java
+++ b/screen-manage/src/main/java/com/moral/api/service/impl/ManageRoleMenuServiceImpl.java
@@ -2,15 +2,24 @@
 
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.moral.api.entity.ManageMenu;
+import com.moral.api.entity.ManageRole;
 import com.moral.api.entity.ManageRoleMenu;
+import com.moral.api.mapper.ManageMenuMapper;
+import com.moral.api.mapper.ManageRoleMapper;
 import com.moral.api.mapper.ManageRoleMenuMapper;
 import com.moral.api.service.ManageRoleMenuService;
 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.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
+import org.springframework.web.context.request.RequestContextHolder;
+import org.springframework.web.context.request.ServletRequestAttributes;
 
+import javax.servlet.http.HttpServletRequest;
 import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
@@ -30,10 +39,20 @@
     @Autowired(required = false)
     private ManageRoleMenuMapper manageRoleMenuMapper;
 
+    @Autowired(required = false)
+    private ManageMenuMapper manageMenuMapper;
+
+    @Autowired(required = false)
+    private ManageRoleMapper manageRoleMapper;
+
+    @Autowired
+    LogUtils logUtils;
+
     @Override
     @Transactional
     public Map<String, Object> updateRoleMenu(List list, int id) {
         Map<String,Object> resultMap = new HashMap<>();
+        List<ManageMenu> manageMenusOld = manageMenuMapper.getManageMenuByRoleId(id);
         if (list.size()==0){
             resultMap.put("code",ResponseCodeEnum.PARAMETERS_IS_MISSING.getCode());
             resultMap.put("msg",ResponseCodeEnum.PARAMETERS_IS_MISSING.getMsg());
@@ -95,6 +114,28 @@
             }
             manageRoleMenuMapper.insertBatch(mapList);
         }
+        List<ManageMenu> manageMenusNew = manageMenuMapper.getManageMenuByRoleId(id);
+        List manageMenuOldList = new ArrayList();
+        List manageMenuNewList = new ArrayList();
+        for (ManageMenu manageMenu:manageMenusOld) {
+            manageMenuOldList.add(manageMenu.getName());
+        }
+        for (ManageMenu manageMenu:manageMenusNew) {
+            manageMenuNewList.add(manageMenu.getName());
+        }
+        //������������������
+        ManageRole manageRole = manageRoleMapper.selectById(id);
+        //������������������
+        HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
+        String content = "���������������:"+manageRole.getName()+";";
+        if (manageMenuOldList.size()==0){
+            manageMenuOldList.add("���");
+        }
+        if (manageMenuNewList.size()==0){
+            manageMenuNewList.add("���");
+        }
+        content = content+"������:"+manageMenuOldList+"->"+manageMenuNewList+";";
+        logUtils.saveOperationForManage(request,content,Constants.UPDATE_OPERATE_TYPE);
         resultMap.put("code",ResponseCodeEnum.SUCCESS.getCode());
         resultMap.put("msg",ResponseCodeEnum.SUCCESS.getMsg());
         return resultMap;
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 b0bf07e..bccc23d 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
@@ -2,13 +2,18 @@
 
 import com.alibaba.fastjson.JSON;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.moral.api.entity.ManageAccount;
 import com.moral.api.entity.ManageAccountRole;
+import com.moral.api.entity.ManageLog;
 import com.moral.api.entity.ManageRole;
 import com.moral.api.mapper.ManageAccountRoleMapper;
+import com.moral.api.mapper.ManageLogMapper;
 import com.moral.api.mapper.ManageRoleMapper;
 import com.moral.api.mapper.ManageRoleMenuMapper;
+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;
@@ -16,8 +21,11 @@
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.util.StringUtils;
+import org.springframework.web.context.request.RequestContextHolder;
+import org.springframework.web.context.request.ServletRequestAttributes;
 
 import javax.annotation.Resource;
+import javax.servlet.http.HttpServletRequest;
 import java.text.SimpleDateFormat;
 import java.util.*;
 
@@ -49,6 +57,9 @@
 
     @Autowired(required = false)
     private ManageAccountRoleMapper manageAccountRoleMapper;
+
+    @Autowired
+    LogUtils logUtils;
 
     @Override
     public Map<String,Object> getAllWithPagingQuery(Map map) {
@@ -86,7 +97,7 @@
 
     @Override
     @Transactional
-    public Map<String,Object> insertOne(ManageRole manageRole,List list) {
+    public Map<String,Object> insertOne(ManageRole manageRole, List list) {
         Map<String,Object> resultMap = new HashMap<>();
         if (manageRole.getName()==null){
             resultMap.put("code",ResponseCodeEnum.PARAMETERS_IS_MISSING.getCode());
@@ -96,24 +107,28 @@
         if (manageRoleMapper.getManageRoleByName(manageRole.getName()) != null){
             resultMap.put("code",ResponseCodeEnum.ROLE_IS_EXPIRE.getCode());
             resultMap.put("msg",ResponseCodeEnum.ROLE_IS_EXPIRE.getMsg());
-        }else {
-            manageRoleMapper.insertOne(manageRole);
-            resultMap.put("code",ResponseCodeEnum.SUCCESS.getCode());
-            resultMap.put("msg",ResponseCodeEnum.SUCCESS.getMsg());
+            return resultMap;
         }
-        Integer code = Integer.parseInt(resultMap.get("code").toString());
-        if (code.equals(ResponseCodeEnum.SUCCESS.getCode())){
-            ManageRole manageRoleIns = manageRoleMapper.getManageRoleByName(manageRole.getName());
-            int role_id = manageRoleIns.getId();
-            List insertList = new ArrayList();
-            for (Object temp: list) {
-                Map<String,Integer> insertMap = new HashMap<>();
-                insertMap.put("role_id",role_id);
-                insertMap.put("menu_id",Integer.parseInt(temp.toString()));
-                insertList.add(insertMap);
-            }
+        manageRoleMapper.insertOne(manageRole);
+        ManageRole manageRoleIns = manageRoleMapper.getManageRoleByName(manageRole.getName());
+        int role_id = manageRoleIns.getId();
+        List insertList = new ArrayList();
+        for (Object temp: list) {
+            Map<String,Integer> insertMap = new HashMap<>();
+            insertMap.put("role_id",role_id);
+            insertMap.put("menu_id",Integer.parseInt(temp.toString()));
+            insertList.add(insertMap);
+        }
+        //���������������������������������������������
+        if (insertList.size()>0){
             manageRoleMenuMapper.insertBatch(insertList);
         }
+        //������������������
+        HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
+        String content = "������������:"+manageRole.getName()+";";
+        logUtils.saveOperationForManage(request,content,Constants.INSERT_OPERATE_TYPE);
+        resultMap.put("code",ResponseCodeEnum.SUCCESS.getCode());
+        resultMap.put("msg",ResponseCodeEnum.SUCCESS.getMsg());
         return resultMap;
     }
 
@@ -130,7 +145,21 @@
             resultMap.put("code",ResponseCodeEnum.ROLE_IS_NULL.getCode());
             resultMap.put("msg",ResponseCodeEnum.ROLE_IS_NULL.getMsg());
         }else {
+            //���������������������������������
+            ManageRole manageRoleOld = manageRoleMapper.selectById(Integer.parseInt(map.get("id").toString()));
             manageRoleMapper.updateManageRoleById(map);
+            //������������������
+            HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
+            String content = "���������������:"+manageRoleOld.getName()+";";
+            for (Object key:map.keySet()) {
+                if (key.toString().equals("name")){
+                    content = content+"���������:"+manageRoleOld.getName()+"->"+map.get(key)+";";
+                }
+                if (key.toString().equals("desc")){
+                    content = content+"������:"+manageRoleOld.getDesc()+"->"+map.get(key)+";";
+                }
+            }
+            logUtils.saveOperationForManage(request,content,Constants.UPDATE_OPERATE_TYPE);
             resultMap.put("code",ResponseCodeEnum.SUCCESS.getCode());
             resultMap.put("msg",ResponseCodeEnum.SUCCESS.getMsg());
         }
@@ -194,6 +223,11 @@
             QueryWrapper<ManageAccountRole> wrapper = new QueryWrapper();
             wrapper.eq("role_id",Integer.parseInt(map.get("id").toString()));
             manageAccountRoleMapper.update(manageAccountRole,wrapper);
+            //������������������
+            HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
+            ManageRole manageRole1 = manageRoleMapper.selectById(Integer.parseInt(map.get("id").toString()));
+            String content = "������������:"+manageRole1.getName()+";";
+            logUtils.saveOperationForManage(request,content,Constants.DELETE_OPERATE_TYPE);
             resultMap.put("code",ResponseCodeEnum.SUCCESS.getCode());
             resultMap.put("msg",ResponseCodeEnum.SUCCESS.getMsg());
         }
diff --git a/screen-manage/src/main/resources/application-dev.yml b/screen-manage/src/main/resources/application-dev.yml
index bccfc4f..18804a4 100644
--- a/screen-manage/src/main/resources/application-dev.yml
+++ b/screen-manage/src/main/resources/application-dev.yml
@@ -125,14 +125,8 @@
       - /verificationCode/**
       - /manageLog/**
 
-      - /role/getAllManageRole
-      - /role/getManageRoleByNameFuzzy
-      - /role/insertOneManageRole
-      - /role/updateManageRole
-      - /role/updateRoleMenu
-      - /role/deleteManageRole
-      - /menu/getAllManageMenu
-      - /menu/getManageMenuByNameFuzzy
+      - /role/**
+      - /menu/**
       - /api/**
 AES:
   KEY:
diff --git a/screen-manage/src/main/resources/mapper/ManageMenuMapper.xml b/screen-manage/src/main/resources/mapper/ManageMenuMapper.xml
index 2906290..3deaf39 100644
--- a/screen-manage/src/main/resources/mapper/ManageMenuMapper.xml
+++ b/screen-manage/src/main/resources/mapper/ManageMenuMapper.xml
@@ -68,7 +68,7 @@
             <if test="icon != null">
                 icon,
             </if>
-            <if test="parent_id != null">
+            <if test="parentId != null">
                 parent_id,
             </if>
             <if test="order != null">
@@ -85,8 +85,8 @@
             <if test="icon != null">
                 #{icon},
             </if>
-            <if test="parent_id != null">
-                #{parent_id},
+            <if test="parentId != null">
+                #{parentId},
             </if>
             <if test="order != null">
                 #{order},
@@ -124,6 +124,7 @@
         <include refid="Base_Column_List"></include>
         from manage_menu mm
         where mm.is_delete = 0
+        ORDER BY parent_id ASC,`order` ASC
         limit #{start},#{number}
     </select>
 
@@ -143,4 +144,38 @@
         limit #{start},#{number}
     </select>
 
+    <select id="getManageMenuByRoleId" resultMap="BaseResultMap">
+        select
+        <include refid="Base_Column_List"></include>
+        FROM manage_menu mm
+        JOIN manage_role_menu mrm
+        ON mm.id = mrm.menu_id AND mrm.is_delete = 0
+        JOIN manage_role mr
+        ON mr.id = mrm.role_id and mr.id = #{roleId}
+        WHERE mm.is_delete = 0
+    </select>
+
+    <select id="getManageMenuByCondition" 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 = #{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>
+        limit #{start},#{number}
+    </select>
+
 </mapper>
\ No newline at end of file

--
Gitblit v1.8.0