Commit 7bf1558a authored by 廖旭伟's avatar 廖旭伟

Merge remote-tracking branch 'origin/master'

# Conflicts:
#	portal-manager/src/main/java/com/mortals/xhx/module/user/web/UserController.java
parents 4153e5fb cc1a6c0d
...@@ -207,10 +207,6 @@ PRIMARY KEY (`id`) ...@@ -207,10 +207,6 @@ PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='操作日志业务'; ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='操作日志业务';
-- ----------------------------
-- Records of mortals_xhx_role
-- ----------------------------
INSERT INTO `mortals_xhx_role` VALUES (1, '管理员', '类似admin', 0, now(), 1, 'admin');
-- ---------------------------- -- ----------------------------
-- Records of mortals_xhx_task -- Records of mortals_xhx_task
-- ---------------------------- -- ----------------------------
......
...@@ -39,8 +39,7 @@ password|String|用户密码|是|- ...@@ -39,8 +39,7 @@ password|String|用户密码|是|-
{ {
"loginName":"zhang3", "loginName":"zhang3",
"password":"123456", "password":"123456"
"securityCode":"5455"
} }
``` ```
...@@ -50,18 +49,133 @@ password|String|用户密码|是|- ...@@ -50,18 +49,133 @@ password|String|用户密码|是|-
---|---|---|--- ---|---|---|---
code|Integer|结果码(-1.失败,1.成功)|- code|Integer|结果码(-1.失败,1.成功)|-
msg|String|消息|- msg|String|消息|-
data|Object|数据对象|-
 token|String|jwt token认证信息|-
 user|Object|用户信息|-
  id|Long|用户ID
  loginName|String|登录名
  realName|String|用户名
  mobile|String|用户手机号
  phone|String|用户联系电话
  email|String|用户邮箱
  qq|String|QQ号码
  siteIds|String|所属站点id,多个逗号分隔
  areaCodes|String|所属区域code,多个逗号分隔
  menuList|Arrays|菜单列表,树结构
   id|Long|菜单ID,主键
   name|String|菜单名称
   url|String|连接地址
   parentId|Long|父菜单ID,一级菜单的该字段值为-1
   linkType|Integer|链接方式,(0.内链,1.外链,2.脚本)
   imgPath|String|主菜单图标,主菜单图标的css样式名
   buttonImgPath|String|按钮图标
   imgCommPath|String|常用菜单图标
   visible|Integer|菜单显示(0.隐藏,1.显示)
   menuType|Integer|菜单类型(0.目录,1.菜单,2.按钮)
   status|Integer|菜单状态(0.禁用,1.启用)
   authType|Integer|权限类型(0.无限制,1.无需登录查看,2.需要登录查看,3.需要角色权限查看)
   orderId|Integer|排序编号
   childList|Arrays|菜单子列表
**响应消息样例:** **响应消息样例:**
``` ```
{ {
"msg":"登录成功", "msg":"用户登录系统成功!",
"code":1, "code":1,
"data":{ "data":{
"user":{
"areaCodes":"",
"createTime":1654132346000,
"createUserId":1,
"createUserName":"admin",
"expireTime":1654223524841,
"id":1,
"lastLoginAddress":"127.0.0.1",
"lastLoginTime":1654132346000,
"loginName":"admin",
"loginTime":1654137124841,
"manager":false,
"menuList":[
{
"authType":0,
"childList":[
{
"authType":1,
"childList":[
{
"authType":1,
"childList":[
],
"id":3,
"linkType":1,
"menuType":2,
"name":"排号系统",
"orderId":3,
"parentId":2,
"status":1,
"url":"http://www.baidu.com",
"visible":1
}
],
"id":2,
"linkType":0,
"menuType":0,
"name":"聚集服务",
"orderId":2,
"parentId":1,
"status":1,
"visible":1
}
],
"id":1,
"linkType":0,
"menuType":0,
"name":"数据管理",
"orderId":1,
"parentId":-1,
"status":1,
"visible":1
}
],
"mobile":"13808095770",
"realName":"系统管理员",
"siteIds":""
},
"token":"eyJhbGciOiJIUzI1NiJ9.eyJsb2dpbl91c2VyX2tleSI6IjI0OGNlYTkxYzZlNTQ4MTU5ZWQ2MWYzNjgxNDg4ZDY3In0.XOwzDtTpAayGbH8auQbG96Qqmd1sivx8w59S60pm19g"
} }
} }
```
### 首页
**请求URL:** login/index
**请求方式:** POST
**内容类型:** application/json;charset=utf-8
**简要描述:** 用户首页
**请求参数:**
参数名称|类型|备注|必填|其它
---|---|---|---|---
**请求样例:**
```
```
**响应参数:**
参数名称 |参数类型|备注|其它
---|---|---|---
code|Integer|结果码(-1.失败,1.成功)|-
msg|String|消息|-
data|Object|数据对象|同登录返回数据一样,包含用户信息及菜单
**响应消息样例:**
```
``` ```
...@@ -95,17 +209,14 @@ msg|String|消息|- ...@@ -95,17 +209,14 @@ msg|String|消息|-
**响应消息样例:** **响应消息样例:**
``` ```
``` ```
### 上传附件 ### 上传附件
**请求URL:** file/commonupload **请求URL:** file/commonupload
**请求方式:** POST **请求方式:** POST
**内容类型:** multipart/form-data **内容类型:** multipart/form-data
**简要描述:** 用户上传附件 **简要描述:** 用户上传附件
...@@ -128,8 +239,6 @@ Content-Type: multipart/form-data ...@@ -128,8 +239,6 @@ Content-Type: multipart/form-data
``` ```
**响应参数:** **响应参数:**
**响应消息样例:** **响应消息样例:**
``` ```
...@@ -174,10 +283,8 @@ data|object|数据对象 ...@@ -174,10 +283,8 @@ data|object|数据对象
 last_page|Integer|总页数  last_page|Integer|总页数
 current_page|Integer|当前页  current_page|Integer|当前页
 data|array|结果集列表|数组  data|array|结果集列表|数组
  id|Long|用户ID,主键,自增长   id|Long|用户ID
  loginName|String|登录名   loginName|String|登录名
  loginPwd|String|登录密码,使用md5双次加密
  loginLimitAddress|String|登录限制地址,多个IP地址用逗号分隔,可以使用IP段匹配,如:172.17.*非空:则只能该值内的IP可以登录
  realName|String|用户名   realName|String|用户名
  mobile|String|用户手机号   mobile|String|用户手机号
  phone|String|用户联系电话   phone|String|用户联系电话
...@@ -186,6 +293,8 @@ data|object|数据对象 ...@@ -186,6 +293,8 @@ data|object|数据对象
  userType|Integer|用户类型(0.系统用户,1.普通用户,2.工作人员)   userType|Integer|用户类型(0.系统用户,1.普通用户,2.工作人员)
  siteIds|String|所属站点id,多个逗号分隔   siteIds|String|所属站点id,多个逗号分隔
  areaCodes|String|所属区域code,多个逗号分隔   areaCodes|String|所属区域code,多个逗号分隔
  roleId|String|所属角色id,多个逗号分隔
  roleName|String|所属角色名称,多个逗号分隔
  status|Integer|用户状态(0.停用,1.正常,2.冻结,3.销户,4.离职)   status|Integer|用户状态(0.停用,1.正常,2.冻结,3.销户,4.离职)
  createTime|Date|创建时间   createTime|Date|创建时间
  createUserId|Long|创建用户   createUserId|Long|创建用户
...@@ -234,7 +343,6 @@ msg|String|消息 ...@@ -234,7 +343,6 @@ msg|String|消息
data|object|数据对象 data|object|数据对象
 id|Long|用户ID,主键,自增长  id|Long|用户ID,主键,自增长
 loginName|String|登录名  loginName|String|登录名
 loginPwd|String|登录密码,使用md5双次加密
 loginLimitAddress|String|登录限制地址,多个IP地址用逗号分隔,可以使用IP段匹配,如:172.17.*非空:则只能该值内的IP可以登录  loginLimitAddress|String|登录限制地址,多个IP地址用逗号分隔,可以使用IP段匹配,如:172.17.*非空:则只能该值内的IP可以登录
 realName|String|用户名  realName|String|用户名
 mobile|String|用户手机号  mobile|String|用户手机号
...@@ -244,6 +352,8 @@ data|object|数据对象 ...@@ -244,6 +352,8 @@ data|object|数据对象
 userType|Integer|用户类型(0.系统用户,1.普通用户,2.工作人员)  userType|Integer|用户类型(0.系统用户,1.普通用户,2.工作人员)
 siteIds|String|所属站点id,多个逗号分隔  siteIds|String|所属站点id,多个逗号分隔
 areaCodes|String|所属区域code,多个逗号分隔  areaCodes|String|所属区域code,多个逗号分隔
 roleId|String|所属角色Id,多个逗号分隔
 roleName|String|所属角色名称,多个逗号分隔
 status|Integer|用户状态(0.停用,1.正常,2.冻结,3.销户,4.离职)  status|Integer|用户状态(0.停用,1.正常,2.冻结,3.销户,4.离职)
 createTime|Date|创建时间  createTime|Date|创建时间
 createUserId|Long|创建用户  createUserId|Long|创建用户
...@@ -296,9 +406,8 @@ dict|object|字典对象 ...@@ -296,9 +406,8 @@ dict|object|字典对象
参数名称|类型|必填|描述 参数名称|类型|必填|描述
:---|:---|:---|:------- :---|:---|:---|:-------
loginName|String|是|登录名 loginName|String|是|登录名
loginPwd|String|是|登录密码,使用md5双次加密 loginPwd|String|是|登录密码
loginLimitAddress|String|是|登录限制地址,多个IP地址用逗号分隔,可以使用IP段匹配,如:172.17.*非空:则只能该值内的IP可以登录 realName|String|是|用户真实姓名
realName|String|是|用户名
mobile|String|是|用户手机号 mobile|String|是|用户手机号
phone|String|是|用户联系电话 phone|String|是|用户联系电话
email|String|是|用户邮箱 email|String|是|用户邮箱
...@@ -307,16 +416,12 @@ userType|Integer|是|用户类型(0.系统用户,1.普通用户,2.工作人员) ...@@ -307,16 +416,12 @@ userType|Integer|是|用户类型(0.系统用户,1.普通用户,2.工作人员)
siteIds|String|是|所属站点id,多个逗号分隔 siteIds|String|是|所属站点id,多个逗号分隔
areaCodes|String|是|所属区域code,多个逗号分隔 areaCodes|String|是|所属区域code,多个逗号分隔
status|Integer|是|用户状态(0.停用,1.正常,2.冻结,3.销户,4.离职) status|Integer|是|用户状态(0.停用,1.正常,2.冻结,3.销户,4.离职)
createUserName|String|是|创建用户名称
lastLoginTime|Date|是|最后一次登录时间
lastLoginAddress|String|是|最后一次登录地址
**请求样例:** **请求样例:**
``` ```
{ {
"loginName":"6njc9h", "loginName":"6njc9h",
"loginPwd":"e8iiea", "loginPwd":"e8iiea",
"loginLimitAddress":"ljhkil",
"realName":"coyvcd", "realName":"coyvcd",
"mobile":"avklzq", "mobile":"avklzq",
"phone":"6da3c3", "phone":"6da3c3",
...@@ -325,10 +430,7 @@ lastLoginAddress|String|是|最后一次登录地址 ...@@ -325,10 +430,7 @@ lastLoginAddress|String|是|最后一次登录地址
"userType":4441, "userType":4441,
"siteIds":"hgh6s1", "siteIds":"hgh6s1",
"areaCodes":"a4cexd", "areaCodes":"a4cexd",
"status":710, "status":710
"createUserName":"p1hifg",
"lastLoginTime":"2022-06-02",
"lastLoginAddress":"gcs2a3"
} }
``` ```
...@@ -343,7 +445,6 @@ data|object|数据对象 ...@@ -343,7 +445,6 @@ data|object|数据对象
 entity|object|保存更新实体  entity|object|保存更新实体
  id|Long|用户ID,主键,自增长   id|Long|用户ID,主键,自增长
  loginName|String|登录名   loginName|String|登录名
  loginPwd|String|登录密码,使用md5双次加密
  loginLimitAddress|String|登录限制地址,多个IP地址用逗号分隔,可以使用IP段匹配,如:172.17.*非空:则只能该值内的IP可以登录   loginLimitAddress|String|登录限制地址,多个IP地址用逗号分隔,可以使用IP段匹配,如:172.17.*非空:则只能该值内的IP可以登录
  realName|String|用户名   realName|String|用户名
  mobile|String|用户手机号   mobile|String|用户手机号
...@@ -353,6 +454,8 @@ data|object|数据对象 ...@@ -353,6 +454,8 @@ data|object|数据对象
  userType|Integer|用户类型(0.系统用户,1.普通用户,2.工作人员)   userType|Integer|用户类型(0.系统用户,1.普通用户,2.工作人员)
  siteIds|String|所属站点id,多个逗号分隔   siteIds|String|所属站点id,多个逗号分隔
  areaCodes|String|所属区域code,多个逗号分隔   areaCodes|String|所属区域code,多个逗号分隔
  roleId|String|所属角色id,多个逗号分隔
  roleName|String|所属角色名称,多个逗号分隔
  status|Integer|用户状态(0.停用,1.正常,2.冻结,3.销户,4.离职)   status|Integer|用户状态(0.停用,1.正常,2.冻结,3.销户,4.离职)
  createTime|Date|创建时间   createTime|Date|创建时间
  createUserId|Long|创建用户   createUserId|Long|创建用户
...@@ -406,6 +509,7 @@ msg|String|消息|- ...@@ -406,6 +509,7 @@ msg|String|消息|-
} }
``` ```
## 角色信息 ## 角色信息
### 查询角色信息列表 ### 查询角色信息列表
...@@ -586,7 +690,7 @@ data|object|数据对象 ...@@ -586,7 +690,7 @@ data|object|数据对象
**响应消息样例:** **响应消息样例:**
``` ```
{ {
"msg":"新增模块成功", "msg":"新增成功",
"code":1, "code":1,
"data":{} "data":{}
} }
......
...@@ -13,6 +13,7 @@ import com.mortals.framework.util.HttpUtil; ...@@ -13,6 +13,7 @@ import com.mortals.framework.util.HttpUtil;
import com.mortals.framework.util.StringUtils; import com.mortals.framework.util.StringUtils;
import com.mortals.framework.web.BaseCRUDJsonBodyMappingController; import com.mortals.framework.web.BaseCRUDJsonBodyMappingController;
import com.mortals.xhx.common.key.RedisKey; import com.mortals.xhx.common.key.RedisKey;
import com.mortals.xhx.module.menu.model.MenuEntity;
import com.mortals.xhx.module.menu.service.MenuService; import com.mortals.xhx.module.menu.service.MenuService;
import com.mortals.xhx.module.user.model.UserEntity; import com.mortals.xhx.module.user.model.UserEntity;
import com.mortals.xhx.module.user.service.UserService; import com.mortals.xhx.module.user.service.UserService;
...@@ -26,6 +27,7 @@ import org.springframework.web.bind.annotation.RestController; ...@@ -26,6 +27,7 @@ import org.springframework.web.bind.annotation.RestController;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
import java.util.HashMap; import java.util.HashMap;
import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.Set; import java.util.Set;
...@@ -60,29 +62,18 @@ public class LoginController extends BaseCRUDJsonBodyMappingController<UserServi ...@@ -60,29 +62,18 @@ public class LoginController extends BaseCRUDJsonBodyMappingController<UserServi
loginForm.validate(); loginForm.validate();
userEntity = userService.doLogin(loginName, password, ip); userEntity = userService.doLogin(loginName, password, ip);
userEntity.setLastLoginAddress(ip); userEntity.setLastLoginAddress(ip);
recordSysLog(request, userEntity, "用户登录系统成功!"); List<MenuEntity> menuList = menuService.findTreeMenuByUser(userEntity);
//根据用户id获取角色所分配的资源路径 userEntity.setMenuList(menuList);
// Set<String> urls = resourceService.findUrlSetByUserId(userEntity.getId());
// //菜单列表
// List<MenuEntity> menuList = menuService.findTreeMenu(userEntity, urls);
// userEntity.setMenuList(menuList);
// List<ModelEntity> modelList = this.service.findModelList(userEntity.getId());
// userEntity.setModelList(modelList);
userEntity.setLoginTime(System.currentTimeMillis()); userEntity.setLoginTime(System.currentTimeMillis());
userEntity.setToken(IdUtil.fastSimpleUUID()); userEntity.setToken(IdUtil.fastSimpleUUID());
userEntity.setExpireTime(DateUtils.addCurrDate(7).getTime()); userEntity.setExpireTime(DateUtils.addCurrDate(7).getTime());
//userEntity.setMenuUrl(generateMenuUrlCode(urls));
String token = authTokenService.createToken(userEntity); String token = authTokenService.createToken(userEntity);
//generateMenuUrlCode(urls);
//this.generateBlackCookie(request, response, loginName, urls);
data.put("token", token); data.put("token", token);
data.put("user", userEntity); data.put("user", userEntity);
recordSysLog(request, userEntity, "用户登录系统成功!");
ret.put(KEY_RESULT_DATA, data); ret.put(KEY_RESULT_DATA, data);
ret.put(KEY_RESULT_CODE, VALUE_RESULT_SUCCESS); ret.put(KEY_RESULT_CODE, VALUE_RESULT_SUCCESS);
ret.put(KEY_RESULT_MSG, "用户登录系统成功!"); ret.put(KEY_RESULT_MSG, "用户登录系统成功!");
//ret.put("resources", urls);
return ret.toJSONString(); return ret.toJSONString();
} catch (Exception e) { } catch (Exception e) {
log.error("login error ", e); log.error("login error ", e);
...@@ -105,75 +96,15 @@ public class LoginController extends BaseCRUDJsonBodyMappingController<UserServi ...@@ -105,75 +96,15 @@ public class LoginController extends BaseCRUDJsonBodyMappingController<UserServi
if (user == null) { if (user == null) {
return ""; return "";
} }
//Set<String> urls = resourceService.findUrlSetByUserId(user.getId()); UserEntity userEntity = userService.get(user.getId());
//List<MenuEntity> outlookBarList = menuService.findTreeMenu(user, urls); List<MenuEntity> menuList = menuService.findTreeMenuByUser(userEntity);
String currUserName = user.getRealName(); userEntity.setMenuList(menuList);
if (currUserName == null || currUserName.trim().length() == 0) {
currUserName = "管理员";
}
JSONObject data = new JSONObject(); JSONObject data = new JSONObject();
//data.put("barList", outlookBarList); data.put("user", userEntity);
data.put("id", user.getId());
data.put("userType", user.getUserType());
ret.put(KEY_RESULT_DATA, data); ret.put(KEY_RESULT_DATA, data);
//this.generateBlackCookie(request, response, user.getLoginName(), urls);
ret.put(KEY_RESULT_CODE, VALUE_RESULT_SUCCESS); ret.put(KEY_RESULT_CODE, VALUE_RESULT_SUCCESS);
ret.put(KEY_RESULT_MSG, "用户登录系统成功!"); ret.put(KEY_RESULT_MSG, "用户登录系统成功!");
//ret.put("resources", urls);
return ret.toJSONString(); return ret.toJSONString();
} }
private void generateBlackCookie(HttpServletRequest request, HttpServletResponse response, String loginName, Set<String> urls) {
try {
String cacheKey = RedisKey.KEY_MENU_CACHE + loginName;
String securityKey = GlobalSysInfo.getPropertyValue(SysConstains.PROP_COOKIE_SECURITY_KEY);
//应为Cookie会超长,所以改为仅存储key将值放入redis
//CookieService.setCookieForAuth(request, response, securityKey, null);
StringBuilder sb = new StringBuilder();
if (urls != null && urls.size() > 0) {
for (String url : urls) {
int index = url.hashCode() & (Integer.MAX_VALUE - 1);
sb.append(index).append(",");
}
}
String menuUrl = sb.toString();
menuUrl = AESUtil.encrypt(menuUrl, securityKey);
cacheService.set(cacheKey, menuUrl, 604800);
HttpUtil.setCookieValue(request, response, SysConstains.COOKIE_MENU, cacheKey, -1);
} catch (Throwable e) {
}
}
private String generateMenuUrlCode(Set<String> urls) {
try {
String securityKey = GlobalSysInfo.getPropertyValue(SysConstains.PROP_COOKIE_SECURITY_KEY);
StringBuilder sb = new StringBuilder();
if (urls != null && urls.size() > 0) {
for (String url : urls) {
int index = url.hashCode() & (Integer.MAX_VALUE - 1);
sb.append(index).append(",");
}
}
String menuUrl = sb.toString();
return AESUtil.encrypt(menuUrl, securityKey);
} catch (Throwable e) {
log.error("编码异常", e);
return null;
}
}
@RequestMapping("parseToken")
public IUser parseToken() throws Exception {
IUser userEntity = authTokenService.getLoginUser(request);
if (!ObjectUtils.isEmpty(userEntity)) {
authTokenService.verifyToken(userEntity);
return userEntity;
}
return null;
}
} }
package com.mortals.xhx.module.menu.service; package com.mortals.xhx.module.menu.service;
import com.mortals.framework.exception.AppException; import com.mortals.framework.exception.AppException;
import com.mortals.framework.service.ICRUDService; import com.mortals.framework.service.ICRUDService;
import com.mortals.framework.service.IUser; import com.mortals.framework.service.IUser;
...@@ -8,32 +9,21 @@ import java.util.List; ...@@ -8,32 +9,21 @@ import java.util.List;
import java.util.Set; import java.util.Set;
/** /**
* MenuService * MenuService
* * <p>
* 菜单信息业务 service接口 * 菜单信息业务 service接口
*
* @author zxfei
* @date 2022-05-25
*/
public interface MenuService extends ICRUDService<MenuEntity,Long>{
/**
* 获取所有可用菜单
* *
* @return * @author zxfei
* @throws AppException * @date 2022-05-25
*/ */
List<MenuEntity> findAllEnable() throws AppException; public interface MenuService extends ICRUDService<MenuEntity, Long> {
/** /**
* 查询有权限的菜单 * 获取所有可用菜单,树结构
* *
* @param user 当前用户
* @param urls 有权限的访问地址集合
* @return * @return
* @throws AppException * @throws AppException
*/ */
List<MenuEntity> findTreeMenu(IUser user, Set<String> urls) throws AppException; List<MenuEntity> findAllEnable() throws AppException;
/** /**
* 查询用户所有权限的菜单 * 查询用户所有权限的菜单
...@@ -44,19 +34,9 @@ public interface MenuService extends ICRUDService<MenuEntity,Long>{ ...@@ -44,19 +34,9 @@ public interface MenuService extends ICRUDService<MenuEntity,Long>{
*/ */
List<MenuEntity> findTreeMenuByUser(IUser user) throws AppException; List<MenuEntity> findTreeMenuByUser(IUser user) throws AppException;
/**
* 查看所有菜单
*
* @return
* @throws AppException
*/
List<MenuEntity> findTreeMenu() throws AppException;
/** /**
* 更新排列顺序 * 更新排列顺序
*
* @param id * @param id
* @param type * @param type
*/ */
......
package com.mortals.xhx.module.menu.service.impl; package com.mortals.xhx.module.menu.service.impl;
import com.mortals.framework.common.code.YesNo; import com.mortals.framework.common.code.YesNo;
import com.mortals.framework.exception.AppException; import com.mortals.framework.exception.AppException;
import com.mortals.framework.model.Context; import com.mortals.framework.model.Context;
...@@ -16,103 +17,44 @@ import com.mortals.xhx.module.menu.service.MenuService; ...@@ -16,103 +17,44 @@ import com.mortals.xhx.module.menu.service.MenuService;
import java.util.*; import java.util.*;
/** /**
* MenuService * MenuService
* 菜单信息业务 service实现 * 菜单信息业务 service实现
* *
* @author zxfei * @author zxfei
* @date 2022-05-25 * @date 2022-05-25
*/ */
@Service("menuService") @Service("menuService")
public class MenuServiceImpl extends AbstractCRUDServiceImpl<MenuDao, MenuEntity, Long> implements MenuService { public class MenuServiceImpl extends AbstractCRUDServiceImpl<MenuDao, MenuEntity, Long> implements MenuService {
@Override @Override
public List<MenuEntity> findAllEnable() throws AppException { public List<MenuEntity> findAllEnable() throws AppException {
MenuQuery params = new MenuQuery(); MenuQuery query = new MenuQuery();
params.setStatus(YesNo.YES.getValue()); query.setStatus(YesNo.YES.getValue());
params.setMenuType(0);//主菜单
List<OrderCol> orderColList = new ArrayList<OrderCol>(); List<OrderCol> orderColList = new ArrayList<OrderCol>();
orderColList.add(new OrderCol("parentId")); orderColList.add(new OrderCol("parentId"));
orderColList.add(new OrderCol("orderId")); orderColList.add(new OrderCol("orderId"));
params.setOrderColList(orderColList); query.setOrderColList(orderColList);
return dao.getList(params); List<MenuEntity> menuEntityList = this.find(query);
List<MenuEntity> menuTreeList = getChildPerms(menuEntityList, -1);
return menuTreeList;
} }
@Override @Override
public List<MenuEntity> findTreeMenu(IUser user, Set<String> urls) throws AppException { public List<MenuEntity> findTreeMenuByUser(IUser user) throws AppException {
//保存已有菜单
Set<Long> authIds = new HashSet<>();
Map<Long, MenuEntity> menuMap = new HashMap<>();
//获取所有启用的菜单
List<MenuEntity> userModuleList = this.findAllEnable();
for (MenuEntity sysModule : userModuleList) {
if (sysModule == null) {
continue;
}
menuMap.put(sysModule.getId(), sysModule);
if (!user.isAdmin() && urls.contains(StringUtils.trim(sysModule.getUrl()))) {
authIds.add(sysModule.getId());
}
}
if (!user.isAdmin()) { if (!user.isAdmin()) {
Long[] ids = authIds.toArray(new Long[authIds.size()]); List<MenuEntity> menuList = dao.selectMenuTreeByUserId(user.getId());
for (Long id : ids) { //转换为树结构
MenuEntity menu = menuMap.get(id); List<MenuEntity> menuTreeList = getChildPerms(menuList, -1);
//找父节点 return menuTreeList;
while (menu != null) { } else {
authIds.add(menu.getId()); return findAllEnable();
menu = menuMap.get(menu.getParentId());
}
}
}
List<MenuEntity> outlookBar = new ArrayList<>();
List<MenuEntity> norightList = new ArrayList<>();
for (MenuEntity sysModule : userModuleList) {
if (!user.isAdmin() && !authIds.contains(sysModule.getId())) {
norightList.add(sysModule);
continue;
}
if (sysModule.getParentId() == null || sysModule.getParentId().longValue() == 0) {
outlookBar.add(sysModule);
continue;
}
MenuEntity sysModuleParent = menuMap.get(sysModule.getParentId());
if (sysModuleParent != null) {
sysModuleParent.getChildList().add(sysModule);
}
} }
return outlookBar;
} }
@Override
public List<MenuEntity> findTreeMenuByUser(IUser user) throws AppException {
return dao.selectMenuTreeByUserId(user.getId());
}
public List<MenuEntity> findTreeMenu() throws AppException {
Map<Long, MenuEntity> menuMap = new HashMap<>();
List<MenuEntity> userModuleList = this.findAllEnable();
for (MenuEntity sysModule : userModuleList) {
if (sysModule == null) {
continue;
}
menuMap.put(sysModule.getId(), sysModule);
}
List<MenuEntity> outlookBar = new ArrayList<>();
for (MenuEntity sysModule : userModuleList) {
if (sysModule.getParentId() == null || sysModule.getParentId().longValue() == 0) {
outlookBar.add(sysModule);
continue;
}
MenuEntity sysModuleParent = menuMap.get(sysModule.getParentId());
if (sysModuleParent != null) {
sysModuleParent.getChildList().add(sysModule);
}
}
return outlookBar;
}
@Override @Override
public void upOrDown(Long id, Integer type) { public void upOrDown(Long id, Integer type) {
MenuQuery query = new MenuQuery(); MenuQuery query = new MenuQuery();
query.setOrderColList(Arrays.asList(new OrderCol("orderId"))); query.setOrderColList(Arrays.asList(new OrderCol("orderId")));
query.setOrderKind(OrderCol.ASCENDING); query.setOrderKind(OrderCol.ASCENDING);
...@@ -125,7 +67,6 @@ public class MenuServiceImpl extends AbstractCRUDServiceImpl<MenuDao, MenuEntity ...@@ -125,7 +67,6 @@ public class MenuServiceImpl extends AbstractCRUDServiceImpl<MenuDao, MenuEntity
//二级菜单 //二级菜单
query.setParentId(menuEntity.getParentId()); query.setParentId(menuEntity.getParentId());
} }
List<MenuEntity> list = this.find(query); List<MenuEntity> list = this.find(query);
MenuEntity preEntity = null; MenuEntity preEntity = null;
MenuEntity curEntity = null; MenuEntity curEntity = null;
...@@ -152,7 +93,6 @@ public class MenuServiceImpl extends AbstractCRUDServiceImpl<MenuDao, MenuEntity ...@@ -152,7 +93,6 @@ public class MenuServiceImpl extends AbstractCRUDServiceImpl<MenuDao, MenuEntity
if (preEntity != null && curEntity != null) { if (preEntity != null && curEntity != null) {
//交换 //交换
Integer temp = preEntity.getOrderId(); Integer temp = preEntity.getOrderId();
preEntity.setOrderId(curEntity.getOrderId()); preEntity.setOrderId(curEntity.getOrderId());
curEntity.setOrderId(temp); curEntity.setOrderId(temp);
...@@ -168,11 +108,71 @@ public class MenuServiceImpl extends AbstractCRUDServiceImpl<MenuDao, MenuEntity ...@@ -168,11 +108,71 @@ public class MenuServiceImpl extends AbstractCRUDServiceImpl<MenuDao, MenuEntity
MenuQuery query = new MenuQuery(); MenuQuery query = new MenuQuery();
query.setParentId(entity.getParentId()); query.setParentId(entity.getParentId());
Comparator<Integer> comparator = Comparator.comparing(Integer::intValue); Comparator<Integer> comparator = Comparator.comparing(Integer::intValue);
Optional<Integer> maxOptional = this.find(query).stream().map(MenuEntity::getOrderId).filter(f->f!=9999).max(comparator); Optional<Integer> maxOptional = this.find(query).stream().map(MenuEntity::getOrderId).filter(f -> f != 9999).max(comparator);
maxOptional.ifPresent(e -> { maxOptional.ifPresent(e -> {
e=e+1; e = e + 1;
entity.setOrderId(e); entity.setOrderId(e);
}); });
super.saveBefore(entity, context); super.saveBefore(entity, context);
} }
/**
* 根据父节点的ID获取所有子节点
*
* @param list 分类表
* @param parentId 传入的父节点ID
* @return String
*/
public List<MenuEntity> getChildPerms(List<MenuEntity> list, int parentId) {
List<MenuEntity> returnList = new ArrayList<MenuEntity>();
for (Iterator<MenuEntity> iterator = list.iterator(); iterator.hasNext(); ) {
MenuEntity t = iterator.next();
// 一、根据传入的某个父节点ID,遍历该父节点的所有子节点
if (t.getParentId() == parentId) {
recursionFn(list, t);
returnList.add(t);
}
}
return returnList;
}
/**
* 递归列表
*
* @param list
* @param t
*/
private void recursionFn(List<MenuEntity> list, MenuEntity t) {
// 得到子节点列表
List<MenuEntity> childList = getChildList(list, t);
t.setChildList(childList);
for (MenuEntity tChild : childList) {
if (hasChild(list, tChild)) {
recursionFn(list, tChild);
}
}
}
/**
* 得到子节点列表
*/
private List<MenuEntity> getChildList(List<MenuEntity> list, MenuEntity t) {
List<MenuEntity> tlist = new ArrayList<>();
Iterator<MenuEntity> it = list.iterator();
while (it.hasNext()) {
MenuEntity n = it.next();
if (n.getParentId().longValue() == t.getId().longValue()) {
tlist.add(n);
}
}
return tlist;
}
/**
* 判断是否有子节点
*/
private boolean hasChild(List<MenuEntity> list, MenuEntity t) {
return getChildList(list, t).size() > 0 ? true : false;
}
} }
\ No newline at end of file
...@@ -8,22 +8,52 @@ ...@@ -8,22 +8,52 @@
package com.mortals.xhx.module.role.service.impl; package com.mortals.xhx.module.role.service.impl;
import com.mortals.framework.exception.AppException;
import com.mortals.framework.model.Context;
import com.mortals.framework.service.impl.AbstractCRUDServiceImpl; import com.mortals.framework.service.impl.AbstractCRUDServiceImpl;
import com.mortals.xhx.module.role.dao.RoleDao; import com.mortals.xhx.module.role.dao.RoleDao;
import com.mortals.xhx.module.role.model.RoleEntity; import com.mortals.xhx.module.role.model.*;
import com.mortals.xhx.module.role.service.RoleAuthService;
import com.mortals.xhx.module.role.service.RoleService; import com.mortals.xhx.module.role.service.RoleService;
import com.mortals.xhx.module.role.service.RoleUserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.util.ObjectUtils;
import java.util.Arrays;
/** /**
* <p>Title: 角色信息</p> * <p>Title: 角色信息</p>
* <p>Description: RoleServiceImpl service接口 </p> * <p>Description: RoleServiceImpl service接口 </p>
* <p>Copyright: Copyright &reg; </p> * <p>Copyright: Copyright &reg; </p>
* <p>Company: </p> * <p>Company: </p>
*
* @author * @author
* @version 1.0.0 * @version 1.0.0
*/ */
@Service("roleService") @Service("roleService")
public class RoleServiceImpl extends AbstractCRUDServiceImpl<RoleDao, RoleEntity, Long> implements RoleService { public class RoleServiceImpl extends AbstractCRUDServiceImpl<RoleDao, RoleEntity, Long> implements RoleService {
@Autowired
private RoleAuthService roleAuthService;
@Autowired
private RoleUserService roleUserService;
@Override
protected void removeAfter(Long[] ids, Context context, int result) throws AppException {
RoleAuthQuery roleAuthQuery = new RoleAuthQuery();
roleAuthQuery.setRoleIdList(Arrays.asList(ids));
Long[] roleAuthIds = roleAuthService.find(roleAuthQuery).stream().map(RoleAuthEntity::getId).toArray(Long[]::new);
if (!ObjectUtils.isEmpty(roleAuthIds)) {
roleAuthService.remove(roleAuthIds, context);
}
RoleUserQuery roleUserQuery = new RoleUserQuery();
roleUserQuery.setRoleIdList(Arrays.asList(ids));
Long[] roleUserIds = roleUserService.find(roleUserQuery).stream().map(RoleUserEntity::getId).toArray(Long[]::new);
if (!ObjectUtils.isEmpty(roleUserIds)) {
roleUserService.remove(roleUserIds, context);
}
super.removeAfter(ids, context, result);
}
} }
\ No newline at end of file
...@@ -3,8 +3,11 @@ package com.mortals.xhx.module.user.model; ...@@ -3,8 +3,11 @@ package com.mortals.xhx.module.user.model;
import java.util.Date; import java.util.Date;
import java.util.List; import java.util.List;
import java.util.ArrayList; import java.util.ArrayList;
import com.alibaba.fastjson.annotation.JSONField;
import com.fasterxml.jackson.annotation.JsonFormat; import com.fasterxml.jackson.annotation.JsonFormat;
import com.mortals.framework.annotation.Excel; import com.mortals.framework.annotation.Excel;
import com.mortals.framework.ap.SysConstains;
import com.mortals.framework.model.BaseEntityLong; import com.mortals.framework.model.BaseEntityLong;
import com.mortals.framework.service.IUser; import com.mortals.framework.service.IUser;
import com.mortals.xhx.module.user.model.vo.UserVo; import com.mortals.xhx.module.user.model.vo.UserVo;
...@@ -25,10 +28,12 @@ public class UserEntity extends UserVo implements IUser { ...@@ -25,10 +28,12 @@ public class UserEntity extends UserVo implements IUser {
/** /**
* 登录密码,使用md5双次加密 * 登录密码,使用md5双次加密
*/ */
@JSONField(serialize = false)
private String loginPwd; private String loginPwd;
/** /**
* 登录限制地址,多个IP地址用逗号分隔,可以使用IP段匹配,如:172.17.*非空:则只能该值内的IP可以登录 * 登录限制地址,多个IP地址用逗号分隔,可以使用IP段匹配,如:172.17.*非空:则只能该值内的IP可以登录
*/ */
@JSONField(serialize = false)
private String loginLimitAddress; private String loginLimitAddress;
/** /**
* 用户名 * 用户名
...@@ -53,6 +58,7 @@ public class UserEntity extends UserVo implements IUser { ...@@ -53,6 +58,7 @@ public class UserEntity extends UserVo implements IUser {
/** /**
* 用户类型(0.系统用户,1.普通用户,2.工作人员) * 用户类型(0.系统用户,1.普通用户,2.工作人员)
*/ */
@JSONField(serialize = false)
private Integer userType; private Integer userType;
/** /**
* 所属站点id,多个逗号分隔 * 所属站点id,多个逗号分隔
...@@ -65,18 +71,22 @@ public class UserEntity extends UserVo implements IUser { ...@@ -65,18 +71,22 @@ public class UserEntity extends UserVo implements IUser {
/** /**
* 用户状态(0.停用,1.正常,2.冻结,3.销户,4.离职) * 用户状态(0.停用,1.正常,2.冻结,3.销户,4.离职)
*/ */
@JSONField(serialize = false)
private Integer status; private Integer status;
/** /**
* 创建用户名称 * 创建用户名称
*/ */
@JSONField(serialize = false)
private String createUserName; private String createUserName;
/** /**
* 最后一次登录时间 * 最后一次登录时间
*/ */
@JSONField(serialize = false)
private Date lastLoginTime; private Date lastLoginTime;
/** /**
* 最后一次登录地址 * 最后一次登录地址
*/ */
@JSONField(serialize = false)
private String lastLoginAddress; private String lastLoginAddress;
...@@ -134,12 +144,12 @@ public class UserEntity extends UserVo implements IUser { ...@@ -134,12 +144,12 @@ public class UserEntity extends UserVo implements IUser {
@Override @Override
public boolean isAdmin() { public boolean isAdmin() {
return false; return super.getId() == null ? false : super.getId().longValue() == SysConstains.ADMIN_ID;
} }
@Override @Override
public boolean isSystemUser() { public boolean isSystemUser() {
return false; return userType != null && userType.intValue() == 0;
} }
@Override @Override
...@@ -217,6 +227,12 @@ public class UserEntity extends UserVo implements IUser { ...@@ -217,6 +227,12 @@ public class UserEntity extends UserVo implements IUser {
public Integer getUserType(){ public Integer getUserType(){
return userType; return userType;
} }
@Override
public String getMenuUrl() {
return null;
}
/** /**
* 设置 用户类型(0.系统用户,1.普通用户,2.工作人员) * 设置 用户类型(0.系统用户,1.普通用户,2.工作人员)
* @param userType * @param userType
......
package com.mortals.xhx.module.user.model.vo; package com.mortals.xhx.module.user.model.vo;
import com.alibaba.fastjson.annotation.JSONField;
import com.mortals.framework.model.BaseEntityLong; import com.mortals.framework.model.BaseEntityLong;
import com.mortals.framework.service.IUser; import com.mortals.framework.service.IUser;
import com.mortals.xhx.module.menu.model.MenuEntity; import com.mortals.xhx.module.menu.model.MenuEntity;
...@@ -14,18 +15,12 @@ import java.util.List; ...@@ -14,18 +15,12 @@ import java.util.List;
*/ */
@Data @Data
public class UserVo extends BaseEntityLong { public class UserVo extends BaseEntityLong {
/**
* 站点名称
*/
//private String siteName;
/** /**
* 唯一标识 * 唯一标识
*/ */
@JSONField(serialize = false)
private String token; private String token;
/**
* 菜单栏
*/
private String menuUrl;
/** /**
* 登录时间 * 登录时间
...@@ -36,11 +31,14 @@ public class UserVo extends BaseEntityLong { ...@@ -36,11 +31,14 @@ public class UserVo extends BaseEntityLong {
* 过期时间 * 过期时间
*/ */
private Long expireTime; private Long expireTime;
/** /**
* 模块列表 * 角色id
*/
private String roleId;
/**
* 角色名称
*/ */
//private List<ModelEntity> modelList; private String roleName;
/** /**
* 菜单列表 * 菜单列表
......
...@@ -52,36 +52,6 @@ public interface UserService extends ICRUDService<UserEntity,Long>{ ...@@ -52,36 +52,6 @@ public interface UserService extends ICRUDService<UserEntity,Long>{
*/ */
boolean existUser(String loginName, Long userId) throws AppException; boolean existUser(String loginName, Long userId) throws AppException;
/**
* 通过登录用户获取菜单功能权限
*
* @param user
* @return
*/
List<MenuEntity> findOutlookBarList(IUser user);
/**
* 查询用户所有有权限的菜单ID
*
* @param userEntity
* @return
*/
Set<Long> findAllAuthIds(UserEntity userEntity) throws AppException;
/**
* 查询用户记录
*
* @param platformId
* @param params
* @param currPage
* @param prePageResult
* @return
* @throws AppException
*/
Result<UserEntity> find(Long platformId, UserEntity params, int currPage, int prePageResult) throws AppException;
/** /**
* 用户修改密码 * 用户修改密码
* *
......
package com.mortals.xhx.module.user.service.impl; package com.mortals.xhx.module.user.service.impl;
import com.mortals.framework.ap.SysConstains; import com.mortals.framework.ap.SysConstains;
import com.mortals.framework.common.code.UserType;
import com.mortals.framework.exception.AppException; import com.mortals.framework.exception.AppException;
import com.mortals.framework.model.Context; import com.mortals.framework.model.Context;
import com.mortals.framework.model.PageInfo; import com.mortals.framework.model.PageInfo;
...@@ -12,6 +13,11 @@ import com.mortals.framework.util.StringUtils; ...@@ -12,6 +13,11 @@ import com.mortals.framework.util.StringUtils;
import com.mortals.xhx.common.utils.BeanUtil; import com.mortals.xhx.common.utils.BeanUtil;
import com.mortals.xhx.module.menu.model.MenuEntity; import com.mortals.xhx.module.menu.model.MenuEntity;
import com.mortals.xhx.module.menu.service.MenuService; import com.mortals.xhx.module.menu.service.MenuService;
import com.mortals.xhx.module.role.model.RoleQuery;
import com.mortals.xhx.module.role.model.RoleUserEntity;
import com.mortals.xhx.module.role.model.RoleUserQuery;
import com.mortals.xhx.module.role.service.RoleService;
import com.mortals.xhx.module.role.service.RoleUserService;
import com.mortals.xhx.module.user.dao.UserDao; import com.mortals.xhx.module.user.dao.UserDao;
import com.mortals.xhx.module.user.model.UserEntity; import com.mortals.xhx.module.user.model.UserEntity;
import com.mortals.xhx.module.user.model.UserEntityExt; import com.mortals.xhx.module.user.model.UserEntityExt;
...@@ -20,8 +26,10 @@ import com.mortals.xhx.module.user.service.UserService; ...@@ -20,8 +26,10 @@ import com.mortals.xhx.module.user.service.UserService;
import org.springframework.beans.BeanUtils; import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.util.ObjectUtils;
import java.util.*; import java.util.*;
import java.util.stream.Collectors;
/** /**
* UserService * UserService
...@@ -34,6 +42,27 @@ import java.util.*; ...@@ -34,6 +42,27 @@ import java.util.*;
public class UserServiceImpl extends AbstractCRUDServiceImpl<UserDao, UserEntity, Long> implements UserService { public class UserServiceImpl extends AbstractCRUDServiceImpl<UserDao, UserEntity, Long> implements UserService {
@Autowired @Autowired
private MenuService menuService; private MenuService menuService;
@Autowired
private RoleUserService roleUserService;
@Autowired
private RoleService roleService;
@Override
protected void findAfter(UserEntity entity, PageInfo pageInfo, Context context, List<UserEntity> list) throws AppException {
Map<Long, String> roleMap = roleService.find(new RoleQuery()).stream().collect(Collectors.toMap(x -> x.getId(), y -> y.getName()));
List<Long> userIdList = list.stream().map(item -> item.getId()).collect(Collectors.toList());
RoleUserQuery roleUserQuery = new RoleUserQuery();
roleUserQuery.setUserIdList(userIdList);
Map<Long, List<RoleUserEntity>> collect = roleUserService.find(roleUserQuery).stream().collect(Collectors.groupingBy(item -> item.getUserId()));
list.stream().forEach(item->{
if(!ObjectUtils.isEmpty(collect.get(item.getId()))){
item.setRoleId(collect.get(item.getId()).stream().map(RoleUserEntity::getRoleId).map(String::valueOf).collect(Collectors.joining(",")));
item.setRoleName(collect.get(item.getId()).stream().map(m->roleMap.get(m.getRoleId())).filter(f->f!=null).collect(Collectors.joining(",")));
}
});
super.findAfter(entity, pageInfo, context, list);
}
private void doHandlerUser(UserEntity entity) throws AppException { private void doHandlerUser(UserEntity entity) throws AppException {
if (StringUtils.isNotEmpty(entity.getLoginPwd())) { if (StringUtils.isNotEmpty(entity.getLoginPwd())) {
...@@ -45,11 +74,11 @@ public class UserServiceImpl extends AbstractCRUDServiceImpl<UserDao, UserEntity ...@@ -45,11 +74,11 @@ public class UserServiceImpl extends AbstractCRUDServiceImpl<UserDao, UserEntity
} else { } else {
entity.setLoginPwd(null); entity.setLoginPwd(null);
} }
// if (entity.isSystemUser()) { if (entity.isSystemUser()) {
// entity.setUserType(UserType.SYSTEM.getValue()); entity.setUserType(UserType.SYSTEM.getValue());
// } else { } else {
// entity.setUserType(UserType.CUSTOMER.getValue()); entity.setUserType(UserType.CUSTOMER.getValue());
// } }
} }
@Override @Override
...@@ -65,21 +94,6 @@ public class UserServiceImpl extends AbstractCRUDServiceImpl<UserDao, UserEntity ...@@ -65,21 +94,6 @@ public class UserServiceImpl extends AbstractCRUDServiceImpl<UserDao, UserEntity
this.doHandlerUser(entity); this.doHandlerUser(entity);
} }
@Override
protected UserEntity findBefore(UserEntity params, Context context) throws AppException {
// if (StringUtils.isNotEmpty(params.getDeptIds())) {
// params.setDeptIds(StringUtils.fillWithMark(params.getDeptIds(), ","));
// }
return super.findBefore(params, context);
}
@Override
protected UserEntity findBefore(UserEntity params, PageInfo pageInfo, Context context) throws AppException {
// if (StringUtils.isNotEmpty(params.getDeptIds())) {
// params.setDeptIds(StringUtils.fillWithMark(params.getDeptIds(), ","));
// }
return super.findBefore(params, pageInfo, context);
}
public UserEntity findByLoginName(String loginName) { public UserEntity findByLoginName(String loginName) {
UserQuery params = new UserQuery(); UserQuery params = new UserQuery();
...@@ -120,78 +134,6 @@ public class UserServiceImpl extends AbstractCRUDServiceImpl<UserDao, UserEntity ...@@ -120,78 +134,6 @@ public class UserServiceImpl extends AbstractCRUDServiceImpl<UserDao, UserEntity
return sysUser; return sysUser;
} }
@Override
public Set<Long> findAllAuthIds(UserEntity userEntity) throws AppException {
Set<Long> authIds = new HashSet<Long>();
if (userEntity.isAdmin()) {
return authIds;
}
authIds.addAll(dao.getAuthListById(userEntity.getId()));
return authIds;
}
@Override
public List<MenuEntity> findOutlookBarList(IUser user) {
Set<String> urls = new HashSet<String>();
if (!user.isAdmin()) {
/* List<ResourceEntity> resList = resourceService.findListByUserId(user.getId());
for (ResourceEntity res : resList) {
String url = res.getUrl();
if (StringUtils.isEmpty(url)) {
continue;
}
url = url.replaceAll(",", ",");
urls.addAll(StringUtils.converStr2Set(url));
}*/
}
Set<Long> authIds = new HashSet<Long>();
Map<Long, MenuEntity> menuMap = new HashMap<Long, MenuEntity>();
List<MenuEntity> userModuleList = this.menuService.findAllEnable();
for (MenuEntity sysModule : userModuleList) {
if (sysModule == null) {
continue;
}
menuMap.put(sysModule.getId(), sysModule);
if (!user.isAdmin() && urls.contains(StringUtils.trim(sysModule.getUrl()))) {
authIds.add(sysModule.getId());
}
}
if (!user.isAdmin()) {
Long[] ids = authIds.toArray(new Long[authIds.size()]);
for (Long id : ids) {
MenuEntity menu = menuMap.get(id);
while (menu != null) {
authIds.add(menu.getId());
menu = menuMap.get(menu.getParentId());
}
}
}
List<MenuEntity> outlookBar = new ArrayList<MenuEntity>();
List<MenuEntity> norightList = new ArrayList<MenuEntity>();
for (MenuEntity sysModule : userModuleList) {
if (!user.isAdmin() && !authIds.contains(sysModule.getId())) {
norightList.add(sysModule);
continue;
}
if (sysModule.getParentId() == null || sysModule.getParentId().longValue() == 0) {
outlookBar.add(sysModule);
continue;
}
MenuEntity sysModuleParent = menuMap.get(sysModule.getParentId());
if (sysModuleParent != null) {
sysModuleParent.getChildList().add(sysModule);
}
}
return outlookBar;
}
@Override
public Result<UserEntity> find(Long platformId, UserEntity params, int currPage, int prePageResult) throws AppException {
PageInfo pageInfo = new PageInfo(prePageResult);
pageInfo.setCurrPage(currPage);
return super.find(params, pageInfo, null);
}
@Override @Override
public boolean existUser(String loginName, Long userId) throws AppException { public boolean existUser(String loginName, Long userId) throws AppException {
UserEntity sysUser = this.findByLoginName(loginName); UserEntity sysUser = this.findByLoginName(loginName);
......
package com.mortals.xhx.module.user.web; package com.mortals.xhx.module.user.web;
import com.mortals.framework.exception.AppException; import com.mortals.framework.exception.AppException;
import com.mortals.framework.model.PageInfo;
import com.mortals.framework.model.Result;
import com.mortals.framework.web.BaseCRUDJsonBodyMappingController; import com.mortals.framework.web.BaseCRUDJsonBodyMappingController;
import com.mortals.xhx.module.param.service.ParamService; import com.mortals.xhx.module.param.service.ParamService;
import com.mortals.xhx.module.role.model.RoleEntity; import com.mortals.xhx.module.role.model.RoleQuery;
import com.mortals.xhx.module.role.model.RoleUserEntity;
import com.mortals.xhx.module.role.model.RoleUserQuery;
import com.mortals.xhx.module.role.service.RoleService; import com.mortals.xhx.module.role.service.RoleService;
import com.mortals.xhx.module.role.service.RoleUserService;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.util.ObjectUtils;
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
...@@ -49,6 +51,9 @@ public class UserController extends BaseCRUDJsonBodyMappingController<UserServic ...@@ -49,6 +51,9 @@ public class UserController extends BaseCRUDJsonBodyMappingController<UserServic
@Autowired @Autowired
private ParamService paramService; private ParamService paramService;
@Autowired
private RoleUserService roleUserService;
@Autowired @Autowired
private RoleService roleService; private RoleService roleService;
...@@ -61,38 +66,19 @@ public class UserController extends BaseCRUDJsonBodyMappingController<UserServic ...@@ -61,38 +66,19 @@ public class UserController extends BaseCRUDJsonBodyMappingController<UserServic
protected void init(Map<String, Object> model, Context context) { protected void init(Map<String, Object> model, Context context) {
this.addDict(model, "userType", paramService.getParamBySecondOrganize("User", "userType")); this.addDict(model, "userType", paramService.getParamBySecondOrganize("User", "userType"));
this.addDict(model, "status", paramService.getParamBySecondOrganize("User", "status")); this.addDict(model, "status", paramService.getParamBySecondOrganize("User", "status"));
List<RoleEntity> roleList = roleService.find(new RoleEntity());
super.addDict(model, "roleId", roleList.stream().collect(Collectors.toMap(e->e.getId().toString(), e->e.getName())));
super.init(model, context); super.init(model, context);
} }
@Override @Override
public String list(@RequestBody(required = false) UserEntity query) { protected int viewAfter(Long id, Map<String, Object> model, UserEntity entity, Context context) throws AppException {
Map<String, Object> model = new HashMap(); Map<Long, String> roleMap = roleService.find(new RoleQuery()).stream().collect(Collectors.toMap(x -> x.getId(), y -> y.getName()));
JSONObject ret = new JSONObject(); List<RoleUserEntity> roleUserList = roleUserService.find(new RoleUserQuery().userId(id));
Context context = this.getContext(); if(!ObjectUtils.isEmpty(roleUserList)){
String busiDesc = "查询" + this.getModuleDesc(); entity.setRoleId(roleUserList.stream().map(RoleUserEntity::getRoleId).map(String::valueOf).collect(Collectors.joining(",")));
entity.setRoleName(roleUserList.stream().map(m->roleMap.get(m.getRoleId())).filter(f->f!=null).collect(Collectors.joining(",")));
int code;
try {
PageInfo pageInfo = this.buildPageInfo(query);
this.doListBefore(query, model, context);
Result result = this.getService().findExt(query, pageInfo, context);
model.put("data", result.getList());
model.put("pageInfo", result.getPageInfo());
this.parsePageInfo(model, result.getPageInfo());
code = this.doListAfter(query, model, context);
this.recordSysLog(this.request, busiDesc + " 【成功】");
} catch (Exception var9) {
code = -1;
this.doException(this.request, busiDesc, model, var9);
}
this.init(model, context); }
ret.put("code", code); return super.viewAfter(id, model, entity, context);
ret.put("msg", model.remove("message_info"));
ret.put("dict", model.remove("dict"));
ret.put("data", model);
return ret.toJSONString();
} }
} }
\ No newline at end of file
...@@ -15,13 +15,13 @@ ...@@ -15,13 +15,13 @@
<select id="selectMenuTreeByUserId" parameterType="paramDto" resultMap="MenuEntity-Map"> <select id="selectMenuTreeByUserId" parameterType="paramDto" resultMap="MenuEntity-Map">
select <include refid="_columns"/> select <include refid="_columns"/>
from mortals_xhx_menu m from mortals_xhx_menu a
left join mortals_xhx_role_auth rm on m.id = rm.menuId left join mortals_xhx_role_auth rm on a.id = rm.menuId
left join mortals_xhx_role_user ur on rm.roleId = ur.roleId left join mortals_xhx_role_user ur on rm.roleId = ur.roleId
left join mortals_xhx_role ro on ur.roleId = ro.id left join mortals_xhx_role ro on ur.roleId = ro.id
left join mortals_xhx_user u on ur.userId = u.id left join mortals_xhx_user u on ur.userId = u.id
where u.id = #{condition.userId} and m.menuType in ('0','1','2') and m.status = 1 AND ro.status = 1 where u.id = #{condition.userId} and a.menuType in ('0','1','2') and a.status = 1 AND ro.status = 1
order by m.parentId, m.orderId order by a.parentId, a.orderId
</select> </select>
</mapper> </mapper>
\ No newline at end of file
...@@ -16,13 +16,12 @@ Authorization: {{authToken}} ...@@ -16,13 +16,12 @@ Authorization: {{authToken}}
Content-Type: application/json Content-Type: application/json
{ {
"name":"9h8jlh", "name":"测试角色1",
"roleCode":"beliak", "roleCode":"ceshi",
"roleSort":0, "roleSort":0,
"roleType":2, "roleType":2,
"remark":"66tnax", "remark":"11111",
"status":0, "status":1
"createUserName":"6qo3fj"
} }
> {% > {%
...@@ -34,11 +33,6 @@ GET {{baseUrl}}/role/info?id={{Role_id}} ...@@ -34,11 +33,6 @@ GET {{baseUrl}}/role/info?id={{Role_id}}
Authorization: {{authToken}} Authorization: {{authToken}}
Accept: application/json Accept: application/json
###角色信息编辑
GET {{baseUrl}}/role/edit?id={{Role_id}}
Authorization: {{authToken}}
Accept: application/json
###角色信息删除 ###角色信息删除
GET {{baseUrl}}/role/delete?id={{Role_id}} GET {{baseUrl}}/role/delete?id={{Role_id}}
......
...@@ -16,21 +16,13 @@ Authorization: {{authToken}} ...@@ -16,21 +16,13 @@ Authorization: {{authToken}}
Content-Type: application/json Content-Type: application/json
{ {
"loginName":"jnxv54", "loginName":"test",
"loginPwd":"s1yseh", "loginPwd":"test",
"loginLimitAddress":"4ocvs3", "realName":"测试",
"realName":"3kr50i", "mobile":"13281114856",
"mobile":"29odxn", "userType":1,
"phone":"orixyo", "siteIds":"",
"email":"6tuwgq", "areaCodes":""
"qq":"4j5ioa",
"userType":690,
"siteIds":"nzhmdx",
"areaCodes":"e76dqy",
"status":1,
"createUserName":"g8gdc6",
"lastLoginTime":"1654099200000",
"lastLoginAddress":"dfc2gz"
} }
> {% > {%
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment