From a59c45cf807e7b800cd8ab901fe15a90d4894bb5 Mon Sep 17 00:00:00 2001
From: xiaoyong931011 <15274802129@163.com>
Date: Tue, 31 May 2022 16:57:37 +0800
Subject: [PATCH] 20220527

---
 src/main/java/com/xcong/farmer/cms/modules/system/vo/AdminSeeUserInfoVo.java            |    8 
 src/main/java/com/xcong/farmer/cms/modules/system/service/ICommonService.java           |    2 
 src/main/java/com/xcong/farmer/cms/modules/system/Controller/AdminUserController.java   |    6 +
 src/main/java/com/xcong/farmer/cms/modules/system/dto/AdminAddRoleDto.java              |    2 
 src/main/java/com/xcong/farmer/cms/modules/system/service/Impl/UserServiceImpl.java     |  169 ++++++++++++++++++++++++----
 src/main/java/com/xcong/farmer/cms/configurations/security/TokenFilter.java             |    7 +
 src/main/java/com/xcong/farmer/cms/modules/system/mapper/MenuMapper.java                |    2 
 src/main/java/com/xcong/farmer/cms/modules/system/dto/AdminAddUserDto.java              |    4 
 src/main/java/com/xcong/farmer/cms/modules/system/vo/AdminUserVo.java                   |    6 
 src/main/java/com/xcong/farmer/cms/modules/system/Controller/AdminCommonController.java |    6 
 src/main/java/com/xcong/farmer/cms/modules/system/service/IUserService.java             |    2 
 src/main/resources/mapper/MenuMapper.xml                                                |    7 +
 src/main/java/com/xcong/farmer/cms/modules/system/service/Impl/RoleServiceImpl.java     |   10 -
 src/main/java/com/xcong/farmer/cms/modules/system/entity/UserEntity.java                |    4 
 src/main/java/com/xcong/farmer/cms/common/system/base/BaseEntity.java                   |    8 
 src/main/java/com/xcong/farmer/cms/modules/system/service/Impl/CommonServiceImpl.java   |    4 
 src/main/java/com/xcong/farmer/cms/modules/system/util/LoginUserUtil.java               |   19 +++
 src/main/java/com/xcong/farmer/cms/modules/system/dto/AdminUpdateUserDto.java           |    4 
 src/main/resources/application.yml                                                      |    2 
 src/main/java/com/xcong/farmer/cms/modules/system/vo/AdminUserMenuVo.java               |   30 +++++
 20 files changed, 241 insertions(+), 61 deletions(-)

diff --git a/src/main/java/com/xcong/farmer/cms/common/system/base/BaseEntity.java b/src/main/java/com/xcong/farmer/cms/common/system/base/BaseEntity.java
index ce55de5..e4fd241 100644
--- a/src/main/java/com/xcong/farmer/cms/common/system/base/BaseEntity.java
+++ b/src/main/java/com/xcong/farmer/cms/common/system/base/BaseEntity.java
@@ -21,15 +21,15 @@
     @TableId(value = "id",type = IdType.AUTO)
     private Long id;
 
-    private String createBy;
+    private String createBy = "system";
 
     @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
-    private Date createTime;
+    private Date createTime = new Date();
 
-    private String updateBy;
+    private String updateBy = "system";
 
     @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
-    private Date updateTime;
+    private Date updateTime = new Date();
 
     private Integer version;
 }
diff --git a/src/main/java/com/xcong/farmer/cms/configurations/security/TokenFilter.java b/src/main/java/com/xcong/farmer/cms/configurations/security/TokenFilter.java
index c5a6d21..3e7bbbe 100644
--- a/src/main/java/com/xcong/farmer/cms/configurations/security/TokenFilter.java
+++ b/src/main/java/com/xcong/farmer/cms/configurations/security/TokenFilter.java
@@ -3,11 +3,13 @@
 import cn.hutool.core.util.StrUtil;
 import cn.hutool.crypto.asymmetric.KeyType;
 import cn.hutool.crypto.asymmetric.RSA;
+import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONObject;
 import com.xcong.farmer.cms.common.contants.AppContants;
 import com.xcong.farmer.cms.common.system.bean.LoginUserBean;
 import com.xcong.farmer.cms.configurations.properties.ApplicationProperties;
 import com.xcong.farmer.cms.configurations.properties.SecurityProperties;
+import com.xcong.farmer.cms.modules.system.entity.UserEntity;
 import com.xcong.farmer.cms.utils.RedisUtils;
 import com.xcong.farmer.cms.utils.SpringContextHolder;
 import lombok.extern.slf4j.Slf4j;
@@ -49,6 +51,11 @@
                 Authentication authentication = new UsernamePasswordAuthenticationToken(loginUser.getMemberEntity(), token, new ArrayList<>());
                 SecurityContextHolder.getContext().setAuthentication(authentication);
                 redisUtils.expire(AppContants.APP_LOGIN_PREFIX + token, 300000);
+
+                String userJsonStr = redisUtils.getString(AppContants.APP_LOGIN_PREFIX + token);
+                UserEntity user = JSON.parseObject(userJsonStr, UserEntity.class);
+
+                request.getSession().setAttribute("user", user);
             } else {
                 SecurityContextHolder.clearContext();
             }
diff --git a/src/main/java/com/xcong/farmer/cms/modules/system/Controller/AdminCommonController.java b/src/main/java/com/xcong/farmer/cms/modules/system/Controller/AdminCommonController.java
index 4156ded..2b5bc78 100644
--- a/src/main/java/com/xcong/farmer/cms/modules/system/Controller/AdminCommonController.java
+++ b/src/main/java/com/xcong/farmer/cms/modules/system/Controller/AdminCommonController.java
@@ -54,9 +54,9 @@
      * @return
      */
     @ApiOperation(value="用户退出登录", notes="用户退出登录")
-    @GetMapping(value = "/Logout/{id}")
-    public Result  memberLogout(@PathVariable(value = "id") Long id) {
-        return iCommonService.memberLogout(id);
+    @GetMapping(value = "/Logout")
+    public Result  memberLogout() {
+        return iCommonService.memberLogout();
     }
 
 }
diff --git a/src/main/java/com/xcong/farmer/cms/modules/system/Controller/AdminUserController.java b/src/main/java/com/xcong/farmer/cms/modules/system/Controller/AdminUserController.java
index 4af43fd..e1b28aa 100644
--- a/src/main/java/com/xcong/farmer/cms/modules/system/Controller/AdminUserController.java
+++ b/src/main/java/com/xcong/farmer/cms/modules/system/Controller/AdminUserController.java
@@ -79,4 +79,10 @@
         return iUserService.resetPassword(id);
     }
 
+    @ApiOperation(value = "查看用户的全部菜单", notes = "查看用户的全部菜单")
+    @GetMapping(value = "/userMenu")
+    public Result userMenu() {
+        return iUserService.userMenu();
+    }
+
 }
diff --git a/src/main/java/com/xcong/farmer/cms/modules/system/dto/AdminAddRoleDto.java b/src/main/java/com/xcong/farmer/cms/modules/system/dto/AdminAddRoleDto.java
index 55538d1..4b2c9cf 100644
--- a/src/main/java/com/xcong/farmer/cms/modules/system/dto/AdminAddRoleDto.java
+++ b/src/main/java/com/xcong/farmer/cms/modules/system/dto/AdminAddRoleDto.java
@@ -14,7 +14,7 @@
     @ApiModelProperty(value = "备注")
     private String remark;
 
-    @ApiModelProperty(value = "菜单按钮ID")
+    @ApiModelProperty(value = "菜单按钮IDS")
     private String menuIds;
 
 }
diff --git a/src/main/java/com/xcong/farmer/cms/modules/system/dto/AdminAddUserDto.java b/src/main/java/com/xcong/farmer/cms/modules/system/dto/AdminAddUserDto.java
index 532989b..489c9fd 100644
--- a/src/main/java/com/xcong/farmer/cms/modules/system/dto/AdminAddUserDto.java
+++ b/src/main/java/com/xcong/farmer/cms/modules/system/dto/AdminAddUserDto.java
@@ -16,8 +16,8 @@
     @ApiModelProperty(value = "昵称")
     private String nickname;
 
-    @ApiModelProperty(value = "角色ID")
-    private Long roleId;
+    @ApiModelProperty(value = "角色IDS")
+    private String roleIds;
 
     @ApiModelProperty(value = "联系电话")
     private String phone;
diff --git a/src/main/java/com/xcong/farmer/cms/modules/system/dto/AdminUpdateUserDto.java b/src/main/java/com/xcong/farmer/cms/modules/system/dto/AdminUpdateUserDto.java
index 4aaa771..76aa163 100644
--- a/src/main/java/com/xcong/farmer/cms/modules/system/dto/AdminUpdateUserDto.java
+++ b/src/main/java/com/xcong/farmer/cms/modules/system/dto/AdminUpdateUserDto.java
@@ -23,8 +23,8 @@
     @ApiModelProperty(value = "邮箱")
     private String email;
 
-    @ApiModelProperty(value = "角色ID")
-    private Long roleId;
+    @ApiModelProperty(value = "角色IDS")
+    private String roleIds;
 
     @ApiModelProperty(value = "角色名称")
     private String roleName;
diff --git a/src/main/java/com/xcong/farmer/cms/modules/system/entity/UserEntity.java b/src/main/java/com/xcong/farmer/cms/modules/system/entity/UserEntity.java
index 0b3958b..10e9376 100644
--- a/src/main/java/com/xcong/farmer/cms/modules/system/entity/UserEntity.java
+++ b/src/main/java/com/xcong/farmer/cms/modules/system/entity/UserEntity.java
@@ -32,10 +32,6 @@
     private String nickname;
     //登录密码
     private String password;
-    //角色ID
-    private Long roleId;
-    //角色名称
-    private String roleName;
     //联系电话
     private String phone;
     //邮箱
diff --git a/src/main/java/com/xcong/farmer/cms/modules/system/mapper/MenuMapper.java b/src/main/java/com/xcong/farmer/cms/modules/system/mapper/MenuMapper.java
index 5f775e6..b73e7ba 100644
--- a/src/main/java/com/xcong/farmer/cms/modules/system/mapper/MenuMapper.java
+++ b/src/main/java/com/xcong/farmer/cms/modules/system/mapper/MenuMapper.java
@@ -5,10 +5,12 @@
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.xcong.farmer.cms.modules.system.entity.MenuEntity;
 import com.xcong.farmer.cms.modules.system.vo.AdminMenuVo;
+import com.xcong.farmer.cms.modules.system.vo.AdminUserMenuVo;
 import org.apache.ibatis.annotations.Param;
 
 public interface MenuMapper extends BaseMapper<MenuEntity> {
 
     IPage<AdminMenuVo> selectAdminMenuVoInPage(Page<AdminMenuVo> page, @Param("record")MenuEntity menuEntity);
 
+    AdminUserMenuVo selectAdminRoleMenuVoById(@Param("id")Long parentId);
 }
diff --git a/src/main/java/com/xcong/farmer/cms/modules/system/service/ICommonService.java b/src/main/java/com/xcong/farmer/cms/modules/system/service/ICommonService.java
index 5969a21..ef6dc9b 100644
--- a/src/main/java/com/xcong/farmer/cms/modules/system/service/ICommonService.java
+++ b/src/main/java/com/xcong/farmer/cms/modules/system/service/ICommonService.java
@@ -9,5 +9,5 @@
 
     Result login(AdminLoginDto adminLoginDto);
 
-    Result memberLogout(Long id);
+    Result memberLogout();
 }
diff --git a/src/main/java/com/xcong/farmer/cms/modules/system/service/IUserService.java b/src/main/java/com/xcong/farmer/cms/modules/system/service/IUserService.java
index 1baac3d..24c4fe3 100644
--- a/src/main/java/com/xcong/farmer/cms/modules/system/service/IUserService.java
+++ b/src/main/java/com/xcong/farmer/cms/modules/system/service/IUserService.java
@@ -24,4 +24,6 @@
     Result updateUser(AdminUpdateUserDto adminUpdateUserDto);
 
     Result resetPassword(Long id);
+
+    Result userMenu();
 }
diff --git a/src/main/java/com/xcong/farmer/cms/modules/system/service/Impl/CommonServiceImpl.java b/src/main/java/com/xcong/farmer/cms/modules/system/service/Impl/CommonServiceImpl.java
index 4399b6a..b966f3c 100644
--- a/src/main/java/com/xcong/farmer/cms/modules/system/service/Impl/CommonServiceImpl.java
+++ b/src/main/java/com/xcong/farmer/cms/modules/system/service/Impl/CommonServiceImpl.java
@@ -13,6 +13,7 @@
 import com.xcong.farmer.cms.modules.system.entity.UserEntity;
 import com.xcong.farmer.cms.modules.system.mapper.UserMapper;
 import com.xcong.farmer.cms.modules.system.service.ICommonService;
+import com.xcong.farmer.cms.modules.system.util.LoginUserUtil;
 import com.xcong.farmer.cms.utils.MessageSourceUtils;
 import com.xcong.farmer.cms.utils.RedisUtils;
 import lombok.extern.slf4j.Slf4j;
@@ -73,7 +74,8 @@
     }
 
     @Override
-    public Result memberLogout(Long id) {
+    public Result memberLogout() {
+        Long id = LoginUserUtil.getLoginUser().getId();
         //获取用户ID
         UserEntity userEntity = userMapper.selectById(id);
         if (ObjectUtil.isEmpty(userEntity)) {
diff --git a/src/main/java/com/xcong/farmer/cms/modules/system/service/Impl/RoleServiceImpl.java b/src/main/java/com/xcong/farmer/cms/modules/system/service/Impl/RoleServiceImpl.java
index f95c35a..1699bef 100644
--- a/src/main/java/com/xcong/farmer/cms/modules/system/service/Impl/RoleServiceImpl.java
+++ b/src/main/java/com/xcong/farmer/cms/modules/system/service/Impl/RoleServiceImpl.java
@@ -147,16 +147,6 @@
         if(StrUtil.isNotEmpty(menuIds)){
             saveRoleMenus(menuIds,id);
         }
-
-        QueryWrapper<UserEntity> userWrapper = new QueryWrapper<>();
-        userWrapper.eq("role_id",id);
-        List<UserEntity> userEntities = userMapper.selectList(userWrapper);
-        if(CollUtil.isNotEmpty(userEntities)){
-            for(UserEntity userEntity : userEntities){
-                userEntity.setRoleName(roleName);
-                userMapper.updateById(userEntity);
-            }
-        }
         return Result.ok("更新成功");
     }
 
diff --git a/src/main/java/com/xcong/farmer/cms/modules/system/service/Impl/UserServiceImpl.java b/src/main/java/com/xcong/farmer/cms/modules/system/service/Impl/UserServiceImpl.java
index 7b15c11..dd3877c 100644
--- a/src/main/java/com/xcong/farmer/cms/modules/system/service/Impl/UserServiceImpl.java
+++ b/src/main/java/com/xcong/farmer/cms/modules/system/service/Impl/UserServiceImpl.java
@@ -1,27 +1,33 @@
 package com.xcong.farmer.cms.modules.system.service.Impl;
 
 import cn.hutool.crypto.SecureUtil;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.toolkit.StringPool;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.xcong.farmer.cms.common.response.Result;
 import com.xcong.farmer.cms.modules.system.dto.AdminAddUserDto;
 import com.xcong.farmer.cms.modules.system.dto.AdminUpdateUserDto;
 import com.xcong.farmer.cms.modules.system.dto.AdminUserDto;
-import com.xcong.farmer.cms.modules.system.entity.RoleEntity;
-import com.xcong.farmer.cms.modules.system.entity.UserEntity;
-import com.xcong.farmer.cms.modules.system.mapper.RoleMapper;
-import com.xcong.farmer.cms.modules.system.mapper.UserMapper;
+import com.xcong.farmer.cms.modules.system.entity.*;
+import com.xcong.farmer.cms.modules.system.mapper.*;
 import com.xcong.farmer.cms.modules.system.service.IUserService;
+import com.xcong.farmer.cms.modules.system.util.LoginUserUtil;
+import com.xcong.farmer.cms.modules.system.vo.AdminRoleVo;
 import com.xcong.farmer.cms.modules.system.vo.AdminSeeUserInfoVo;
+import com.xcong.farmer.cms.modules.system.vo.AdminUserMenuVo;
 import com.xcong.farmer.cms.modules.system.vo.AdminUserVo;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.stereotype.Service;
 import cn.hutool.core.util.StrUtil;
 import cn.hutool.core.util.ObjectUtil;
+
+import cn.hutool.core.collection.CollUtil;
 import org.springframework.transaction.annotation.Transactional;
 
 import javax.annotation.Resource;
+import java.util.*;
 
 @Service
 @Slf4j
@@ -29,6 +35,12 @@
 
     @Resource
     private RoleMapper roleMapper;
+    @Resource
+    private UserRoleMapper userRoleMapper;
+    @Resource
+    private RoleMenuMapper roleMenuMapper;
+    @Resource
+    private MenuMapper menuMapper;
 
     @Override
     public Result getUserInPage(AdminUserDto adminUserDto) {
@@ -37,8 +49,28 @@
         if(StrUtil.isNotEmpty(adminUserDto.getUsername())){
             userEntity.setUsername(adminUserDto.getUsername());
         }
-        IPage<AdminUserVo> list = this.baseMapper.selectAdminUserVoInPage(page,userEntity);
-        return Result.ok(list);
+        IPage<AdminUserVo> AdminUserVos = this.baseMapper.selectAdminUserVoInPage(page,userEntity);
+        List<AdminUserVo> records = AdminUserVos.getRecords();
+        if(CollUtil.isNotEmpty(records)){
+            for(AdminUserVo adminUserVo : records){
+                List<AdminRoleVo> adminRoleVos = new ArrayList<>();
+                QueryWrapper<UserRoleEntity> objectQueryWrapper = new QueryWrapper<>();
+                objectQueryWrapper.eq("user_id",adminUserVo.getId());
+                List<UserRoleEntity> userRoleEntities = userRoleMapper.selectList(objectQueryWrapper);
+                if(CollUtil.isNotEmpty(userRoleEntities)){
+                    for(UserRoleEntity userRoleEntity : userRoleEntities){
+                        RoleEntity roleEntity = roleMapper.selectById(userRoleEntity.getRoleId());
+                        AdminRoleVo adminRoleVo = new AdminRoleVo();
+                        adminRoleVo.setId(roleEntity.getId());
+                        adminRoleVo.setRoleName(roleEntity.getRoleName());
+                        adminRoleVos.add(adminRoleVo);
+                    }
+                }
+                adminUserVo.setAdminRoleVos(adminRoleVos);
+            }
+        }
+
+        return Result.ok(AdminUserVos);
     }
 
     @Override
@@ -48,12 +80,8 @@
         if(StrUtil.isEmpty(username)){
             return Result.fail("请输入用户名");
         }
-        Long roleId = adminAddUserDto.getRoleId();
-        if(ObjectUtil.isEmpty(roleId)){
-            return Result.fail("请选择用户角色");
-        }
-        RoleEntity roleEntity = roleMapper.selectById(roleId);
-        if(ObjectUtil.isEmpty(roleEntity)){
+        String roleIds = adminAddUserDto.getRoleIds();
+        if(StrUtil.isEmpty(roleIds)){
             return Result.fail("请选择用户角色");
         }
         String phone = adminAddUserDto.getPhone();
@@ -63,19 +91,17 @@
         UserEntity userEntity = new UserEntity();
         userEntity.setUsername(username);
         userEntity.setPhone(phone);
-        userEntity.setRoleId(roleId);
-        userEntity.setRoleName(roleEntity.getRoleName());
         if(StrUtil.isNotEmpty(adminAddUserDto.getNickname())){
             userEntity.setNickname(adminAddUserDto.getNickname());
         }
         if(StrUtil.isNotEmpty(adminAddUserDto.getEmail())){
             userEntity.setEmail(adminAddUserDto.getEmail());
         }
-
         userEntity.setPassword(SecureUtil.md5(UserEntity.PASSWORD_DEFAULT));
         userEntity.setStatus(UserEntity.STATUS_ENABLE);
         int insert = this.baseMapper.insert(userEntity);
         if(insert > 0){
+            saveUserRole(roleIds,userEntity.getId());
             return Result.ok("添加成功");
         }
         return Result.fail("添加失败");
@@ -113,6 +139,10 @@
             return Result.fail("用户不存在");
         }
         this.baseMapper.deleteById(id);
+
+        QueryWrapper<UserRoleEntity> objectQueryWrapper = new QueryWrapper<>();
+        objectQueryWrapper.eq("user_id",userEntity.getId());
+        userRoleMapper.delete(objectQueryWrapper);
         return Result.ok("删除成功");
     }
 
@@ -128,8 +158,21 @@
         adminSeeUserInfoVo.setNickname(userEntity.getNickname());
         adminSeeUserInfoVo.setPhone(userEntity.getPhone());
         adminSeeUserInfoVo.setEmail(userEntity.getEmail());
-        adminSeeUserInfoVo.setRoleId(userEntity.getRoleId());
-        adminSeeUserInfoVo.setRoleName(userEntity.getRoleName());
+
+        List<AdminRoleVo> adminRoleVos = new ArrayList<>();
+        QueryWrapper<UserRoleEntity> objectQueryWrapper = new QueryWrapper<>();
+        objectQueryWrapper.eq("user_id",userEntity.getId());
+        List<UserRoleEntity> userRoleEntities = userRoleMapper.selectList(objectQueryWrapper);
+        if(CollUtil.isNotEmpty(userRoleEntities)){
+            for(UserRoleEntity userRoleEntity : userRoleEntities){
+                RoleEntity roleEntity = roleMapper.selectById(userRoleEntity.getRoleId());
+                AdminRoleVo adminRoleVo = new AdminRoleVo();
+                adminRoleVo.setId(roleEntity.getId());
+                adminRoleVo.setRoleName(roleEntity.getRoleName());
+                adminRoleVos.add(adminRoleVo);
+            }
+        }
+        adminSeeUserInfoVo.setAdminRoleVos(adminRoleVos);
         return Result.ok(adminSeeUserInfoVo);
     }
 
@@ -140,12 +183,8 @@
         if(StrUtil.isEmpty(username)){
             return Result.fail("请输入用户名");
         }
-        Long roleId = adminUpdateUserDto.getRoleId();
-        if(ObjectUtil.isEmpty(roleId)){
-            return Result.fail("请选择用户角色");
-        }
-        RoleEntity roleEntity = roleMapper.selectById(roleId);
-        if(ObjectUtil.isEmpty(roleEntity)){
+        String roleIds = adminUpdateUserDto.getRoleIds();
+        if(StrUtil.isEmpty(roleIds)){
             return Result.fail("请选择用户角色");
         }
         String phone = adminUpdateUserDto.getPhone();
@@ -158,8 +197,6 @@
         }
         userEntity.setUsername(username);
         userEntity.setPhone(phone);
-        userEntity.setRoleId(roleId);
-        userEntity.setRoleName(roleEntity.getRoleName());
         if(StrUtil.isNotEmpty(adminUpdateUserDto.getNickname())){
             userEntity.setNickname(adminUpdateUserDto.getNickname());
         }
@@ -168,6 +205,11 @@
         }
         int insert = this.baseMapper.updateById(userEntity);
         if(insert > 0){
+            QueryWrapper<UserRoleEntity> objectQueryWrapper = new QueryWrapper<>();
+            objectQueryWrapper.eq("user_id",userEntity.getId());
+            userRoleMapper.delete(objectQueryWrapper);
+
+            saveUserRole(roleIds,userEntity.getId());
             return Result.ok("更新成功");
         }
         return Result.fail("更新失败");
@@ -184,4 +226,81 @@
         this.baseMapper.updateById(userEntity);
         return Result.ok("重置成功");
     }
+
+    @Override
+    public Result userMenu() {
+        Long userId = LoginUserUtil.getLoginUser().getId();
+        List<AdminUserMenuVo> adminUserMenuVos = new ArrayList<>();
+
+        QueryWrapper<UserRoleEntity> userRoleQueryWrapper = new QueryWrapper<>();
+        userRoleQueryWrapper.eq("user_id",userId);
+        List<UserRoleEntity> userRoleEntities = userRoleMapper.selectList(userRoleQueryWrapper);
+        if(CollUtil.isNotEmpty(userRoleEntities)){
+            List menuIds = new ArrayList<Long>();
+            for(UserRoleEntity userRoleEntity : userRoleEntities){
+                List<RoleMenuEntity> roleMenuEntities = roleMenuMapper.selectListByRoleId(userRoleEntity.getRoleId());
+                if(CollUtil.isNotEmpty(roleMenuEntities)){
+                    for(RoleMenuEntity roleMenuEntity : roleMenuEntities){
+                        menuIds.add(roleMenuEntity.getMenuId());
+                    }
+                }
+            }
+            if(CollUtil.isNotEmpty(menuIds)){
+                HashSet hashSet = CollUtil.newHashSet(menuIds);
+                List<Long> parentMenuIds = new ArrayList<>();
+                List<Long> childMenuIds = new ArrayList<>();
+                for(Object s : hashSet){
+                    MenuEntity menuEntity = menuMapper.selectById(Long.parseLong(s.toString()));
+                    Long parentId = menuEntity.getParentId();
+                    if(parentId == 0L){
+                        parentMenuIds.add(menuEntity.getId());
+                    }else{
+                        childMenuIds.add(menuEntity.getId());
+                    }
+                }
+                Map<Long, AdminUserMenuVo> menuMap = new HashMap<>();
+                if(CollUtil.isNotEmpty(parentMenuIds)){
+                    for(Long parentId : parentMenuIds){
+                        AdminUserMenuVo adminUserMenuVo = menuMapper.selectAdminRoleMenuVoById(parentId);
+                        menuMap.put(parentId,adminUserMenuVo);
+                    }
+                }
+                if(CollUtil.isNotEmpty(childMenuIds)){
+                    for(Long childId : childMenuIds){
+                        AdminUserMenuVo adminUserMenuVo = menuMapper.selectAdminRoleMenuVoById(childId);
+                        Long parentId = adminUserMenuVo.getParentId();
+                        AdminUserMenuVo adminUserMenuVoParent = menuMap.get(parentId);
+                        List<AdminUserMenuVo> child = adminUserMenuVoParent.getChild();
+                        if(CollUtil.isEmpty(child)){
+                            List<AdminUserMenuVo> list = new ArrayList<>();
+                            list.add(adminUserMenuVo);
+                            adminUserMenuVoParent.setChild(list);
+                        }else{
+                            child.add(adminUserMenuVo);
+                        }
+                    }
+                }
+                Set<Map.Entry<Long, AdminUserMenuVo>> entries = menuMap.entrySet();
+                Iterator<Map.Entry<Long, AdminUserMenuVo>> iterator = entries.iterator();
+                while (iterator.hasNext()){
+                    adminUserMenuVos.add(iterator.next().getValue());
+                }
+
+            }
+        }
+        return Result.ok(adminUserMenuVos);
+    }
+
+    private void saveUserRole(String roleIds,Long userId) {
+        if (StrUtil.isNotEmpty(roleIds)) {
+            String[] roleIdList = roleIds.split(StringPool.COMMA);
+            Arrays.stream(roleIdList).forEach(roleId -> {
+                UserRoleEntity userRoleEntity = new UserRoleEntity();
+                userRoleEntity.setRoleId(Long.valueOf(roleId));
+                userRoleEntity.setUserId(userId);
+                userRoleMapper.insert(userRoleEntity);
+            });
+        }
+    }
+
 }
diff --git a/src/main/java/com/xcong/farmer/cms/modules/system/util/LoginUserUtil.java b/src/main/java/com/xcong/farmer/cms/modules/system/util/LoginUserUtil.java
new file mode 100644
index 0000000..ac1f9e0
--- /dev/null
+++ b/src/main/java/com/xcong/farmer/cms/modules/system/util/LoginUserUtil.java
@@ -0,0 +1,19 @@
+package com.xcong.farmer.cms.modules.system.util;
+
+import com.xcong.farmer.cms.modules.system.entity.UserEntity;
+import org.springframework.web.context.request.RequestContextHolder;
+import org.springframework.web.context.request.ServletRequestAttributes;
+
+import javax.servlet.http.HttpServletRequest;
+
+/**
+ * @author xxx
+ * @date 2020-08-24
+ **/
+public class LoginUserUtil {
+
+    public static UserEntity getLoginUser() {
+        HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.currentRequestAttributes()).getRequest();
+        return (UserEntity) request.getSession().getAttribute("user");
+    }
+}
diff --git a/src/main/java/com/xcong/farmer/cms/modules/system/vo/AdminSeeUserInfoVo.java b/src/main/java/com/xcong/farmer/cms/modules/system/vo/AdminSeeUserInfoVo.java
index 9c616b5..0131392 100644
--- a/src/main/java/com/xcong/farmer/cms/modules/system/vo/AdminSeeUserInfoVo.java
+++ b/src/main/java/com/xcong/farmer/cms/modules/system/vo/AdminSeeUserInfoVo.java
@@ -3,6 +3,7 @@
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
+import java.util.List;
 
 @Data
 @ApiModel(value = "AdminSeeUserInfoVo", description = "系统用户详情返回")
@@ -23,10 +24,7 @@
     @ApiModelProperty(value = "邮箱")
     private String email;
 
-    @ApiModelProperty(value = "角色ID")
-    private Long roleId;
-
-    @ApiModelProperty(value = "角色名称")
-    private String roleName;
+    @ApiModelProperty(value = "角色")
+    private  List<AdminRoleVo> AdminRoleVos;
 
 }
diff --git a/src/main/java/com/xcong/farmer/cms/modules/system/vo/AdminUserMenuVo.java b/src/main/java/com/xcong/farmer/cms/modules/system/vo/AdminUserMenuVo.java
new file mode 100644
index 0000000..76980d5
--- /dev/null
+++ b/src/main/java/com/xcong/farmer/cms/modules/system/vo/AdminUserMenuVo.java
@@ -0,0 +1,30 @@
+package com.xcong.farmer.cms.modules.system.vo;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+@ApiModel(value = "AdminUserMenuVo", description = "系统菜单列表返回")
+public class AdminUserMenuVo {
+
+    @ApiModelProperty(value = "菜单ID")
+    private Long id;
+
+    @ApiModelProperty(value = "菜单按钮标题")
+    private String menuName;
+
+    @ApiModelProperty(value = "菜单类型 1:菜单 2:按钮")
+    private Integer menuType;
+
+    @ApiModelProperty(value = "路由地址")
+    private String routeUrl;
+
+    @ApiModelProperty(value = "父ID")
+    private Long parentId;
+
+    @ApiModelProperty(value = "子菜单")
+    private List<AdminUserMenuVo> child;
+}
diff --git a/src/main/java/com/xcong/farmer/cms/modules/system/vo/AdminUserVo.java b/src/main/java/com/xcong/farmer/cms/modules/system/vo/AdminUserVo.java
index 9f22a8e..44f266c 100644
--- a/src/main/java/com/xcong/farmer/cms/modules/system/vo/AdminUserVo.java
+++ b/src/main/java/com/xcong/farmer/cms/modules/system/vo/AdminUserVo.java
@@ -2,6 +2,8 @@
 
 import com.fasterxml.jackson.annotation.JsonFormat;
 import java.util.Date;
+import java.util.List;
+
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
@@ -25,8 +27,8 @@
     @ApiModelProperty(value = "邮箱")
     private String email;
 
-    @ApiModelProperty(value = "角色名称")
-    private String roleName;
+    @ApiModelProperty(value = "角色")
+    private List<AdminRoleVo> AdminRoleVos;
 
     @ApiModelProperty(value = "账号状态 0:禁用 1:激活")
     private Integer status;
diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml
index 255857b..0f0a173 100644
--- a/src/main/resources/application.yml
+++ b/src/main/resources/application.yml
@@ -5,7 +5,7 @@
 
 spring:
   datasource:
-    url: jdbc:mysql://120.27.238.55:3306/farmer-cms?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=GMT%2b8
+    url: jdbc:mysql://120.27.238.55:3306/farmer_cms?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=GMT%2b8
     username: ct_test
     password: 123456
     driver-class-name: com.mysql.jdbc.Driver
diff --git a/src/main/resources/mapper/MenuMapper.xml b/src/main/resources/mapper/MenuMapper.xml
index 74e8534..e1127a9 100644
--- a/src/main/resources/mapper/MenuMapper.xml
+++ b/src/main/resources/mapper/MenuMapper.xml
@@ -17,4 +17,11 @@
         order by a.create_time desc
     </select>
 
+    <select id="selectAdminRoleMenuVoById" resultType="com.xcong.farmer.cms.modules.system.vo.AdminUserMenuVo">
+        SELECT
+        a.*
+        FROM
+        t_menu a where a.id = #{id}
+    </select>
+
 </mapper>
\ No newline at end of file

--
Gitblit v1.9.1