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`)
) 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
-- ----------------------------
......
This diff is collapsed.
......@@ -13,6 +13,7 @@ import com.mortals.framework.util.HttpUtil;
import com.mortals.framework.util.StringUtils;
import com.mortals.framework.web.BaseCRUDJsonBodyMappingController;
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.user.model.UserEntity;
import com.mortals.xhx.module.user.service.UserService;
......@@ -26,6 +27,7 @@ import org.springframework.web.bind.annotation.RestController;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Set;
......@@ -60,29 +62,18 @@ public class LoginController extends BaseCRUDJsonBodyMappingController<UserServi
loginForm.validate();
userEntity = userService.doLogin(loginName, password, ip);
userEntity.setLastLoginAddress(ip);
recordSysLog(request, userEntity, "用户登录系统成功!");
//根据用户id获取角色所分配的资源路径
// 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);
List<MenuEntity> menuList = menuService.findTreeMenuByUser(userEntity);
userEntity.setMenuList(menuList);
userEntity.setLoginTime(System.currentTimeMillis());
userEntity.setToken(IdUtil.fastSimpleUUID());
userEntity.setExpireTime(DateUtils.addCurrDate(7).getTime());
//userEntity.setMenuUrl(generateMenuUrlCode(urls));
String token = authTokenService.createToken(userEntity);
//generateMenuUrlCode(urls);
//this.generateBlackCookie(request, response, loginName, urls);
data.put("token", token);
data.put("user", userEntity);
recordSysLog(request, userEntity, "用户登录系统成功!");
ret.put(KEY_RESULT_DATA, data);
ret.put(KEY_RESULT_CODE, VALUE_RESULT_SUCCESS);
ret.put(KEY_RESULT_MSG, "用户登录系统成功!");
//ret.put("resources", urls);
return ret.toJSONString();
} catch (Exception e) {
log.error("login error ", e);
......@@ -105,75 +96,15 @@ public class LoginController extends BaseCRUDJsonBodyMappingController<UserServi
if (user == null) {
return "";
}
//Set<String> urls = resourceService.findUrlSetByUserId(user.getId());
//List<MenuEntity> outlookBarList = menuService.findTreeMenu(user, urls);
String currUserName = user.getRealName();
if (currUserName == null || currUserName.trim().length() == 0) {
currUserName = "管理员";
}
UserEntity userEntity = userService.get(user.getId());
List<MenuEntity> menuList = menuService.findTreeMenuByUser(userEntity);
userEntity.setMenuList(menuList);
JSONObject data = new JSONObject();
//data.put("barList", outlookBarList);
data.put("id", user.getId());
data.put("userType", user.getUserType());
data.put("user", userEntity);
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_MSG, "用户登录系统成功!");
//ret.put("resources", urls);
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;
import com.mortals.framework.exception.AppException;
import com.mortals.framework.service.ICRUDService;
import com.mortals.framework.service.IUser;
......@@ -8,32 +9,21 @@ import java.util.List;
import java.util.Set;
/**
* MenuService
*
* 菜单信息业务 service接口
*
* @author zxfei
* @date 2022-05-25
*/
public interface MenuService extends ICRUDService<MenuEntity,Long>{
/**
* 获取所有可用菜单
*
* @return
* @throws AppException
*/
List<MenuEntity> findAllEnable() throws AppException;
* MenuService
* <p>
* 菜单信息业务 service接口
*
* @author zxfei
* @date 2022-05-25
*/
public interface MenuService extends ICRUDService<MenuEntity, Long> {
/**
* 查询有权限的菜单
* 获取所有可用菜单,树结构
*
* @param user 当前用户
* @param urls 有权限的访问地址集合
* @return
* @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>{
*/
List<MenuEntity> findTreeMenuByUser(IUser user) throws AppException;
/**
* 查看所有菜单
*
* @return
* @throws AppException
*/
List<MenuEntity> findTreeMenu() throws AppException;
/**
* 更新排列顺序
*
* @param id
* @param type
*/
......
package com.mortals.xhx.module.menu.service.impl;
import com.mortals.framework.common.code.YesNo;
import com.mortals.framework.exception.AppException;
import com.mortals.framework.model.Context;
......@@ -16,103 +17,44 @@ import com.mortals.xhx.module.menu.service.MenuService;
import java.util.*;
/**
* MenuService
* 菜单信息业务 service实现
*
* @author zxfei
* @date 2022-05-25
*/
* MenuService
* 菜单信息业务 service实现
*
* @author zxfei
* @date 2022-05-25
*/
@Service("menuService")
public class MenuServiceImpl extends AbstractCRUDServiceImpl<MenuDao, MenuEntity, Long> implements MenuService {
@Override
public List<MenuEntity> findAllEnable() throws AppException {
MenuQuery params = new MenuQuery();
params.setStatus(YesNo.YES.getValue());
params.setMenuType(0);//主菜单
MenuQuery query = new MenuQuery();
query.setStatus(YesNo.YES.getValue());
List<OrderCol> orderColList = new ArrayList<OrderCol>();
orderColList.add(new OrderCol("parentId"));
orderColList.add(new OrderCol("orderId"));
params.setOrderColList(orderColList);
return dao.getList(params);
query.setOrderColList(orderColList);
List<MenuEntity> menuEntityList = this.find(query);
List<MenuEntity> menuTreeList = getChildPerms(menuEntityList, -1);
return menuTreeList;
}
@Override
public List<MenuEntity> findTreeMenu(IUser user, Set<String> urls) 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());
}
}
public List<MenuEntity> findTreeMenuByUser(IUser user) throws AppException {
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<>();
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);
}
List<MenuEntity> menuList = dao.selectMenuTreeByUserId(user.getId());
//转换为树结构
List<MenuEntity> menuTreeList = getChildPerms(menuList, -1);
return menuTreeList;
} else {
return findAllEnable();
}
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
public void upOrDown(Long id, Integer type) {
MenuQuery query = new MenuQuery();
query.setOrderColList(Arrays.asList(new OrderCol("orderId")));
query.setOrderKind(OrderCol.ASCENDING);
......@@ -125,7 +67,6 @@ public class MenuServiceImpl extends AbstractCRUDServiceImpl<MenuDao, MenuEntity
//二级菜单
query.setParentId(menuEntity.getParentId());
}
List<MenuEntity> list = this.find(query);
MenuEntity preEntity = null;
MenuEntity curEntity = null;
......@@ -152,7 +93,6 @@ public class MenuServiceImpl extends AbstractCRUDServiceImpl<MenuDao, MenuEntity
if (preEntity != null && curEntity != null) {
//交换
Integer temp = preEntity.getOrderId();
preEntity.setOrderId(curEntity.getOrderId());
curEntity.setOrderId(temp);
......@@ -168,11 +108,71 @@ public class MenuServiceImpl extends AbstractCRUDServiceImpl<MenuDao, MenuEntity
MenuQuery query = new MenuQuery();
query.setParentId(entity.getParentId());
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 -> {
e=e+1;
e = e + 1;
entity.setOrderId(e);
});
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 @@
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.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.RoleUserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.ObjectUtils;
import java.util.Arrays;
/**
* <p>Title: 角色信息</p>
* <p>Description: RoleServiceImpl service接口 </p>
* <p>Copyright: Copyright &reg; </p>
* <p>Company: </p>
*
* @author
* @version 1.0.0
*/
@Service("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;
import java.util.Date;
import java.util.List;
import java.util.ArrayList;
import com.alibaba.fastjson.annotation.JSONField;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.mortals.framework.annotation.Excel;
import com.mortals.framework.ap.SysConstains;
import com.mortals.framework.model.BaseEntityLong;
import com.mortals.framework.service.IUser;
import com.mortals.xhx.module.user.model.vo.UserVo;
......@@ -25,10 +28,12 @@ public class UserEntity extends UserVo implements IUser {
/**
* 登录密码,使用md5双次加密
*/
@JSONField(serialize = false)
private String loginPwd;
/**
* 登录限制地址,多个IP地址用逗号分隔,可以使用IP段匹配,如:172.17.*非空:则只能该值内的IP可以登录
*/
@JSONField(serialize = false)
private String loginLimitAddress;
/**
* 用户名
......@@ -53,6 +58,7 @@ public class UserEntity extends UserVo implements IUser {
/**
* 用户类型(0.系统用户,1.普通用户,2.工作人员)
*/
@JSONField(serialize = false)
private Integer userType;
/**
* 所属站点id,多个逗号分隔
......@@ -65,18 +71,22 @@ public class UserEntity extends UserVo implements IUser {
/**
* 用户状态(0.停用,1.正常,2.冻结,3.销户,4.离职)
*/
@JSONField(serialize = false)
private Integer status;
/**
* 创建用户名称
*/
@JSONField(serialize = false)
private String createUserName;
/**
* 最后一次登录时间
*/
@JSONField(serialize = false)
private Date lastLoginTime;
/**
* 最后一次登录地址
*/
@JSONField(serialize = false)
private String lastLoginAddress;
......@@ -134,12 +144,12 @@ public class UserEntity extends UserVo implements IUser {
@Override
public boolean isAdmin() {
return false;
return super.getId() == null ? false : super.getId().longValue() == SysConstains.ADMIN_ID;
}
@Override
public boolean isSystemUser() {
return false;
return userType != null && userType.intValue() == 0;
}
@Override
......@@ -217,6 +227,12 @@ public class UserEntity extends UserVo implements IUser {
public Integer getUserType(){
return userType;
}
@Override
public String getMenuUrl() {
return null;
}
/**
* 设置 用户类型(0.系统用户,1.普通用户,2.工作人员)
* @param userType
......
package com.mortals.xhx.module.user.model.vo;
import com.alibaba.fastjson.annotation.JSONField;
import com.mortals.framework.model.BaseEntityLong;
import com.mortals.framework.service.IUser;
import com.mortals.xhx.module.menu.model.MenuEntity;
......@@ -14,18 +15,12 @@ import java.util.List;
*/
@Data
public class UserVo extends BaseEntityLong {
/**
* 站点名称
*/
//private String siteName;
/**
* 唯一标识
*/
@JSONField(serialize = false)
private String token;
/**
* 菜单栏
*/
private String menuUrl;
/**
* 登录时间
......@@ -36,11 +31,14 @@ public class UserVo extends BaseEntityLong {
* 过期时间
*/
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>{
*/
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;
import com.mortals.framework.ap.SysConstains;
import com.mortals.framework.common.code.UserType;
import com.mortals.framework.exception.AppException;
import com.mortals.framework.model.Context;
import com.mortals.framework.model.PageInfo;
......@@ -12,6 +13,11 @@ import com.mortals.framework.util.StringUtils;
import com.mortals.xhx.common.utils.BeanUtil;
import com.mortals.xhx.module.menu.model.MenuEntity;
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.model.UserEntity;
import com.mortals.xhx.module.user.model.UserEntityExt;
......@@ -20,8 +26,10 @@ import com.mortals.xhx.module.user.service.UserService;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.ObjectUtils;
import java.util.*;
import java.util.stream.Collectors;
/**
* UserService
......@@ -34,6 +42,27 @@ import java.util.*;
public class UserServiceImpl extends AbstractCRUDServiceImpl<UserDao, UserEntity, Long> implements UserService {
@Autowired
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 {
if (StringUtils.isNotEmpty(entity.getLoginPwd())) {
......@@ -45,11 +74,11 @@ public class UserServiceImpl extends AbstractCRUDServiceImpl<UserDao, UserEntity
} else {
entity.setLoginPwd(null);
}
// if (entity.isSystemUser()) {
// entity.setUserType(UserType.SYSTEM.getValue());
// } else {
// entity.setUserType(UserType.CUSTOMER.getValue());
// }
if (entity.isSystemUser()) {
entity.setUserType(UserType.SYSTEM.getValue());
} else {
entity.setUserType(UserType.CUSTOMER.getValue());
}
}
@Override
......@@ -65,21 +94,6 @@ public class UserServiceImpl extends AbstractCRUDServiceImpl<UserDao, UserEntity
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) {
UserQuery params = new UserQuery();
......@@ -120,78 +134,6 @@ public class UserServiceImpl extends AbstractCRUDServiceImpl<UserDao, UserEntity
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
public boolean existUser(String loginName, Long userId) throws AppException {
UserEntity sysUser = this.findByLoginName(loginName);
......
package com.mortals.xhx.module.user.web;
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.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.RoleUserService;
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.RestController;
import org.springframework.web.bind.annotation.*;
......@@ -49,6 +51,9 @@ public class UserController extends BaseCRUDJsonBodyMappingController<UserServic
@Autowired
private ParamService paramService;
@Autowired
private RoleUserService roleUserService;
@Autowired
private RoleService roleService;
......@@ -61,38 +66,19 @@ public class UserController extends BaseCRUDJsonBodyMappingController<UserServic
protected void init(Map<String, Object> model, Context context) {
this.addDict(model, "userType", paramService.getParamBySecondOrganize("User", "userType"));
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);
}
@Override
public String list(@RequestBody(required = false) UserEntity query) {
Map<String, Object> model = new HashMap();
JSONObject ret = new JSONObject();
Context context = this.getContext();
String busiDesc = "查询" + this.getModuleDesc();
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);
}
protected int viewAfter(Long id, Map<String, Object> model, UserEntity entity, Context context) throws AppException {
Map<Long, String> roleMap = roleService.find(new RoleQuery()).stream().collect(Collectors.toMap(x -> x.getId(), y -> y.getName()));
List<RoleUserEntity> roleUserList = roleUserService.find(new RoleUserQuery().userId(id));
if(!ObjectUtils.isEmpty(roleUserList)){
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(",")));
this.init(model, context);
ret.put("code", code);
ret.put("msg", model.remove("message_info"));
ret.put("dict", model.remove("dict"));
ret.put("data", model);
return ret.toJSONString();
}
return super.viewAfter(id, model, entity, context);
}
}
\ No newline at end of file
......@@ -14,14 +14,14 @@
<select id="selectMenuTreeByUserId" parameterType="paramDto" resultMap="MenuEntity-Map">
select <include refid="_columns"/>
from mortals_xhx_menu m
left join mortals_xhx_role_auth rm on m.id = rm.menuId
select <include refid="_columns"/>
from mortals_xhx_menu a
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 ro on ur.roleId = ro.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
order by m.parentId, m.orderId
where u.id = #{condition.userId} and a.menuType in ('0','1','2') and a.status = 1 AND ro.status = 1
order by a.parentId, a.orderId
</select>
</mapper>
\ No newline at end of file
......@@ -16,13 +16,12 @@ Authorization: {{authToken}}
Content-Type: application/json
{
"name":"9h8jlh",
"roleCode":"beliak",
"name":"测试角色1",
"roleCode":"ceshi",
"roleSort":0,
"roleType":2,
"remark":"66tnax",
"status":0,
"createUserName":"6qo3fj"
"remark":"11111",
"status":1
}
> {%
......@@ -34,11 +33,6 @@ GET {{baseUrl}}/role/info?id={{Role_id}}
Authorization: {{authToken}}
Accept: application/json
###角色信息编辑
GET {{baseUrl}}/role/edit?id={{Role_id}}
Authorization: {{authToken}}
Accept: application/json
###角色信息删除
GET {{baseUrl}}/role/delete?id={{Role_id}}
......
......@@ -16,21 +16,13 @@ Authorization: {{authToken}}
Content-Type: application/json
{
"loginName":"jnxv54",
"loginPwd":"s1yseh",
"loginLimitAddress":"4ocvs3",
"realName":"3kr50i",
"mobile":"29odxn",
"phone":"orixyo",
"email":"6tuwgq",
"qq":"4j5ioa",
"userType":690,
"siteIds":"nzhmdx",
"areaCodes":"e76dqy",
"status":1,
"createUserName":"g8gdc6",
"lastLoginTime":"1654099200000",
"lastLoginAddress":"dfc2gz"
"loginName":"test",
"loginPwd":"test",
"realName":"测试",
"mobile":"13281114856",
"userType":1,
"siteIds":"",
"areaCodes":""
}
> {%
......
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