Commit 7ecd0925 LN

增加组管理类

1 个父辈 2babe04a
正在显示 21 个修改的文件 包含 527 行增加110 行删除
package com.neotel.smfcore.common.init;
import com.neotel.smfcore.security.service.manager.IGroupManager;
import com.neotel.smfcore.security.service.manager.IMenuManager;
import com.neotel.smfcore.security.service.manager.IRoleManager;
import com.neotel.smfcore.security.service.manager.IUserManager;
import com.neotel.smfcore.security.service.manager.impl.GroupManagerImpl;
import com.neotel.smfcore.security.service.manager.impl.MenuManagerImpl;
import com.neotel.smfcore.security.service.manager.impl.RoleManagerImpl;
import com.neotel.smfcore.security.service.manager.impl.UserManagerImpl;
import com.neotel.smfcore.security.service.po.Group;
import com.neotel.smfcore.security.service.po.Menu;
import com.neotel.smfcore.security.service.po.Role;
import com.neotel.smfcore.security.service.po.User;
......@@ -19,11 +25,13 @@ import java.util.*;
public class DataInitManager {
@Autowired
UserManagerImpl userManager;
IUserManager userManager;
@Autowired
RoleManagerImpl roleManager;
IRoleManager roleManager;
@Autowired
MenuManagerImpl menuManager;
IMenuManager menuManager;
@Autowired
IGroupManager groupManager;
@PostConstruct
public void DataInit() {
......@@ -34,28 +42,71 @@ public class DataInitManager {
User admin = userManager.findByUserName(userName);
if (admin == null) {
Menu menu1 = new Menu(new ArrayList<Menu>(), 0, "menu:list", "料架分组", 1, "lightGroup", "neolight/lightGroup/index", "", 0, false, false, false, "料架管理", "menu");
Menu menu2 = new Menu(new ArrayList<Menu>(), 0, "menu:list", "工单", 2, "workOrder", "neolight/workOrder/index", "", 0, false, false, false, "工单", "menu");
Menu menu3 = new Menu(new ArrayList<Menu>(), 0, "menu:list", "查找出库", 3, "menu", "neolight/singleOuput/index", "", 0, false, false, false, "查找出库", "menu");
Menu menu1 = new Menu(new ArrayList<Menu>(), 1, "menu:list", "料架分组", 1, "lightGroup", "neolight/lightGroup/index", "", 0, "menu");
Menu menu2 = new Menu(new ArrayList<Menu>(), 1, "menu:list", "工单", 2, "workOrder", "neolight/workOrder/index", "", 0, "menu");
Menu menu3 = new Menu(new ArrayList<Menu>(), 1, "menu:list", "查找出库", 3, "singleOuput", "neolight/singleOuput/index", "", 0, "menu");
Menu menu4 = new Menu(new ArrayList<Menu>(), 1, "menu:list", "分组管理", 4, "groupManager", "neolight/groupManager/index", "", 0, "menu");
// Menu menu4 = new Menu(new ArrayList<Menu>(), 0, "menu:list", "角色管理", 4, "menu", "user/roleSearch", "", 0, false, false, false, "角色管理", "menu");
List<Menu> menus=new ArrayList<Menu>();
menus.add(menu1);
menus.add(menu2);
menus.add(menu3);
Set<String> Menus = new HashSet<String>() ;
for (Menu menu: menus
) {
menus.add(menu4);
Set<String> menuIdSet = new HashSet<String>() ;
for (Menu menu: menus ) {
menu=menuManager.save(menu);
// log.info("创建默认菜单:" + menu.toString());
// Menus.add(menu.getId());
}
Menu menuUser = new Menu(new ArrayList<Menu>(), 1, "user:list", "用户管理", 11, "peoples", "system/user/index", "", 3, "peoples");
menuUser=menuManager.save(menuUser);
Menu menuUser1 =menuManager.save(new Menu( "user:edit", "用户编辑", 12, menuUser.getId())) ;
Menu menuUser2 = menuManager.save(new Menu( "user:del", "用户删除", 13, menuUser.getId()));
Menu menuUser3 =menuManager.save( new Menu( "user:add", "用户新增", 13, menuUser.getId()));
menus.add(menuUser);
menus.add(menuUser1);
menus.add(menuUser2);
menus.add(menuUser3);
Menu menuRole = new Menu(new ArrayList<Menu>(), 1, "role:list", "角色管理", 21, "role", "system/role/index", "", 3, "role");
menuUser=menuManager.save(menuRole);
Menu menuRole1 =menuManager.save(new Menu( "role:edit", "角色编辑", 22, menuRole.getId())) ;
Menu menuRole2 = menuManager.save(new Menu( "role:del", "角色删除", 23, menuRole.getId()));
Menu menuRole3 =menuManager.save( new Menu( "role:add", "角色新增", 23, menuRole.getId()));
menus.add(menuRole);
menus.add(menuRole1);
menus.add(menuRole2);
menus.add(menuRole3);
Menu menuMenu = new Menu(new ArrayList<Menu>(), 1, "menu:list", "菜单管理", 31, "menu", "system/menu/index", "", 3, "menu");
menuMenu=menuManager.save(menuMenu);
Menu menuMenu1 =menuManager.save(new Menu( "menu:edit", "菜单编辑", 32, menuMenu.getId())) ;
Menu menuMenu2 = menuManager.save(new Menu( "menu:del", "菜单删除", 33, menuMenu.getId()));
Menu menuMenu3 =menuManager.save( new Menu( "menu:add", "菜单新增", 33, menuMenu.getId()));
menus.add(menuMenu);
menus.add(menuMenu1);
menus.add(menuMenu2);
menus.add(menuMenu3);
for (Menu menu: menus ) {
log.info("创建默认菜单:" + menu.toString());
Menus.add(menu.getId());
menuIdSet.add(menu.getId());
}
Role role = new Role(Menus,"admin","全部",1,"管理员");
Group group=new Group("未分组");
group=groupManager.save(group);
log.info("创建默认组:" + group.toString());
Set<String> groupIds= new HashSet<>();
groupIds.add(group.getId());
Role role = new Role(menuIdSet,"admin","全部",1,"管理员");
role= roleManager.save(role);
log.info("创建默认角色:" + role.toString());
admin = new User(role.getId(), userName, "", "$2a$10$Egp1/gvFlt7zhlXVfEFw4OfWQCGPw0ClmMcc6FjTnvXNRVf9zdMRa", true,true,new Date());
admin = new User(role.getId(), userName, "", "$2a$10$Egp1/gvFlt7zhlXVfEFw4OfWQCGPw0ClmMcc6FjTnvXNRVf9zdMRa", true, true, new Date(), groupIds );
userManager.save(admin);
log.info("创建默认用户:" + admin.toString());
......
package com.neotel.smfcore.security.config;
import com.neotel.smfcore.common.utils.SecurityUtils;
import org.springframework.security.core.GrantedAuthority;
import org.springframework.stereotype.Service;
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
@Service(value = "el")
public class ElPermissionConfig {
public Boolean check(String ... permissions){
// 获取当前用户的所有权限
List<String> elPermissions = SecurityUtils.getCurrentUser().getAuthorities().stream().map(GrantedAuthority::getAuthority).collect(Collectors.toList());
// 判断当前用户的所有权限是否包含接口上定义的权限
return elPermissions.contains("admin") || Arrays.stream(permissions).anyMatch(elPermissions::contains);
}
}
......@@ -121,6 +121,7 @@ public class SpringSecurityConfig extends WebSecurityConfigurerAdapter {
.antMatchers("/druid/**").permitAll()
// 放行OPTIONS请求
.antMatchers(HttpMethod.OPTIONS, "/**").permitAll()
.antMatchers("api/menus/build").permitAll()
// 自定义匿名访问所有url放行:允许匿名和带Token访问,细腻化到每个 Request 类型
// GET
.antMatchers(HttpMethod.GET, anonymousUrls.get(RequestMethodEnum.GET.getType()).toArray(new String[0])).permitAll()
......
package com.neotel.smfcore.security.rest;
import io.swagger.annotations.Api;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequiredArgsConstructor
@Api(tags = "系统:组管理")
@RequestMapping("/api/groups")
@Slf4j
public class GroupController {
}
......@@ -17,6 +17,8 @@ package com.neotel.smfcore.security.rest;
import cn.hutool.core.collection.CollectionUtil;
import com.neotel.smfcore.common.annotation.QueryCondition;
import com.neotel.smfcore.common.exception.ValidateException;
import com.neotel.smfcore.common.utils.PageUtil;
import com.neotel.smfcore.common.utils.SecurityUtils;
import com.neotel.smfcore.security.annotation.AnonymousAccess;
import com.neotel.smfcore.security.rest.bean.dto.MenuDto;
......@@ -30,6 +32,8 @@ import lombok.RequiredArgsConstructor;
import lombok.extern.log4j.Log4j;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.mongodb.core.query.Criteria;
import org.springframework.data.mongodb.core.query.Query;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.security.access.prepost.PreAuthorize;
......@@ -74,96 +78,103 @@ public class MenuController {
return new ResponseEntity<>(vos, HttpStatus.OK);
}
// @ApiOperation("导出菜单数据")
// @GetMapping(value = "/download")
// @PreAuthorize("@el.check('menu:list')")
// public void download(HttpServletResponse response, QueryCondition criteria) throws Exception {
// menuService.download(menuService.queryAll(criteria, false), response);
// }
//
// @GetMapping(value = "/build")
// @ApiOperation("获取前端所需菜单")
// public ResponseEntity<Object> buildMenus(){
// List<MenuDto> menuDtoList = menuService.findByUser(SecurityUtils.getCurrentUserId());
// List<MenuDto> menuDtos = menuService.buildTree(menuDtoList);
// return new ResponseEntity<>(menuService.buildMenus(menuDtos), HttpStatus.OK);
// }
//
// @ApiOperation("返回全部的菜单")
// @GetMapping(value = "/lazy")
// @PreAuthorize("@el.check('menu:list','roles:list')")
// public ResponseEntity<Object> query(@RequestParam Long pid){
// return new ResponseEntity<>(menuService.getMenus(pid), HttpStatus.OK);
// }
//
// @ApiOperation("根据菜单ID返回所有子节点ID,包含自身ID")
// @GetMapping(value = "/child")
// @PreAuthorize("@el.check('menu:list','roles:list')")
// public ResponseEntity<Object> child(@RequestParam Long id){
// Set<Menu> menuSet = new HashSet<>();
// List<MenuDto> menuList = menuService.getMenus(id);
// menuSet.add(menuService.findOne(id));
// menuSet = menuService.getChildMenus(menuMapper.toEntity(menuList), menuSet);
// Set<Long> ids = menuSet.stream().map(Menu::getId).collect(Collectors.toSet());
// return new ResponseEntity<>(ids, HttpStatus.OK);
// }
//
// @GetMapping
// @ApiOperation("查询菜单")
// @PreAuthorize("@el.check('menu:list')")
// public ResponseEntity<Object> query(MenuQueryCriteria criteria) throws Exception {
// List<MenuDto> menuDtoList = menuService.queryAll(criteria, true);
// return new ResponseEntity<>(PageUtil.toPage(menuDtoList, menuDtoList.size()), HttpStatus.OK);
// }
//
// @ApiOperation("查询菜单:根据ID获取同级与上级数据")
// @PostMapping("/superior")
// @PreAuthorize("@el.check('menu:list')")
// public ResponseEntity<Object> getSuperior(@RequestBody List<Long> ids) {
// Set<MenuDto> menuDtos = new LinkedHashSet<>();
// if(CollectionUtil.isNotEmpty(ids)){
// for (Long id : ids) {
// MenuDto menuDto = menuService.findById(id);
// menuDtos.addAll(menuService.getSuperior(menuDto, new ArrayList<>()));
// }
// return new ResponseEntity<>(menuService.buildTree(new ArrayList<>(menuDtos)), HttpStatus.OK);
// }
// return new ResponseEntity<>(menuService.getMenus(null), HttpStatus.OK);
// }
@ApiOperation("导出菜单数据")
@GetMapping(value = "/download")
@PreAuthorize("@el.check('menu:list')")
public void download(HttpServletResponse response, QueryCondition criteria) throws Exception {
Query query=new Query(Criteria.where("type").ne(2));
menuManager.download(menuManager.findByQuery(query), response);
}
//
@ApiOperation("返回全部的菜单")
@GetMapping(value = "/lazy")
@PreAuthorize("@el.check('menu:list','roles:list')")
public ResponseEntity<Object> query(@RequestParam String pid){
return new ResponseEntity<>(menuManager.getMenusByPid(pid), HttpStatus.OK);
}
@ApiOperation("根据菜单ID返回所有子节点ID,包含自身ID")
@GetMapping(value = "/child")
@PreAuthorize("@el.check('menu:list','roles:list')")
public ResponseEntity<Object> child(@RequestParam String id){
Set<Menu> menuSet = new HashSet<>();
List<Menu> menuList = menuManager.getMenusByPid(id);
menuSet.add(menuManager.get(id));
menuSet = menuManager.getChildMenus(menuList, menuSet);
Set<String> ids = menuSet.stream().map(Menu::getId).collect(Collectors.toSet());
return new ResponseEntity<>(ids, HttpStatus.OK);
}
@GetMapping
@ApiOperation("查询菜单")
@PreAuthorize("@el.check('menu:list')")
public ResponseEntity<Object> query(QueryCondition criteria) throws Exception {
Query query=new Query(Criteria.where("type").ne(2));
List<MenuDto> menuDtoList =menuMapper.toDto( menuManager.findByQuery(query));
return new ResponseEntity<>(PageUtil.toPage(menuDtoList, menuDtoList.size()), HttpStatus.OK);
}
@ApiOperation("查询菜单:根据ID获取同级与上级数据")
@PostMapping("/superior")
@PreAuthorize("@el.check('menu:list')")
public ResponseEntity<Object> getSuperior(@RequestBody List<String> ids) {
Set<Menu> menus = new LinkedHashSet<>();
if(CollectionUtil.isNotEmpty(ids)){
for (String id : ids) {
Menu menu = menuManager.get(id);
menus.addAll(menuManager.getSuperior(menu, new ArrayList<>()));
}
return new ResponseEntity<>(menuManager.buildTree(new ArrayList<>(menus)), HttpStatus.OK);
}
return new ResponseEntity<>(menuMapper.toDto(menuManager.getMenusByPid("")) , HttpStatus.OK);
}
// @Log("新增菜单")
// @ApiOperation("新增菜单")
// @PostMapping
// @PreAuthorize("@el.check('menu:add')")
// public ResponseEntity<Object> create(@Validated @RequestBody Menu resources){
// if (resources.getId() != null) {
@ApiOperation("新增菜单")
@PostMapping
@PreAuthorize("@el.check('menu:add')")
public ResponseEntity<Object> create(@Validated @RequestBody Menu resources){
if (resources.getId() != null) {
// throw new BadRequestException("A new "+ ENTITY_NAME +" cannot already have an ID");
// }
// menuService.create(resources);
// return new ResponseEntity<>(HttpStatus.CREATED);
// }
//
log.error("menu:add 参数错误:ID不能为空");
return new ResponseEntity<>(HttpStatus.BAD_REQUEST);
}
try {
menuManager.save(resources);
}catch ( Exception exception){
log.error("menu:add 新增菜单["+resources.toString()+"]出错:"+exception);
return new ResponseEntity<>(HttpStatus.INTERNAL_SERVER_ERROR);
}
return new ResponseEntity<>(HttpStatus.CREATED);
}
// @Log("修改菜单")
// @ApiOperation("修改菜单")
// @PutMapping
// @PreAuthorize("@el.check('menu:edit')")
// public ResponseEntity<Object> update(@Validated(Menu.Update.class) @RequestBody Menu resources){
// menuService.update(resources);
// return new ResponseEntity<>(HttpStatus.NO_CONTENT);
// }
//
@ApiOperation("修改菜单")
@PutMapping
@PreAuthorize("@el.check('menu:edit')")
public ResponseEntity<Object> update(@Validated @RequestBody Menu resources){
// public ResponseEntity<Object> update(@Validated(Menu.Update.class) @RequestBody Menu resources){
try {
menuManager.save(resources);
} catch (ValidateException e) {
log.error("menu:add 修改菜单["+resources.toString()+"]出错:"+e);
return new ResponseEntity<>(HttpStatus.INTERNAL_SERVER_ERROR);
}
return new ResponseEntity<>(HttpStatus.NO_CONTENT);
}
// @Log("删除菜单")
// @ApiOperation("删除菜单")
// @DeleteMapping
// @PreAuthorize("@el.check('menu:del')")
// public ResponseEntity<Object> delete(@RequestBody Set<Long> ids){
// Set<Menu> menuSet = new HashSet<>();
// for (Long id : ids) {
// List<MenuDto> menuList = menuService.getMenus(id);
// menuSet.add(menuService.findOne(id));
// menuSet = menuService.getChildMenus(menuMapper.toEntity(menuList), menuSet);
// }
// menuService.delete(menuSet);
// return new ResponseEntity<>(HttpStatus.OK);
// }
}
@ApiOperation("删除菜单")
@DeleteMapping
@PreAuthorize("@el.check('menu:del')")
public ResponseEntity<Object> delete(@RequestBody Set<String> ids){
Set<Menu> menuSet = new HashSet<>();
for (String id : ids) {
List<Menu> menuList = menuManager.getMenusByPid(id);
menuSet.add(menuManager.get(id));
menuSet = menuManager.getChildMenus(menuList, menuSet);
}
menuManager.delete(menuSet);
return new ResponseEntity<>(HttpStatus.OK);
}
}
package com.neotel.smfcore.security.rest.bean.vo;
import lombok.Getter;
import lombok.Setter;
import org.springframework.stereotype.Service;
@Setter
@Getter
public class UserPassVo {
private String oldPass;
private String newPass;
}
package com.neotel.smfcore.security.service.dao;
import com.neotel.smfcore.common.base.IBaseDao;
public interface IGroupDao extends IBaseDao {
}
package com.neotel.smfcore.security.service.dao;
import com.neotel.smfcore.common.base.IBaseDao;
import com.neotel.smfcore.security.service.po.Menu;
import java.util.List;
/**
* Created by sunke on 2021/7/8.
*/
public interface IMenuDao extends IBaseDao {
List<Menu> findByPid(String pid);
}
package com.neotel.smfcore.security.service.dao.impl;
import com.neotel.smfcore.common.base.AbstractBaseDao;
import com.neotel.smfcore.security.service.dao.IGroupDao;
import com.neotel.smfcore.security.service.po.Group;
import org.springframework.stereotype.Service;
@Service
public class GroupDaoImpl extends AbstractBaseDao implements IGroupDao {
@Override
public Class getEntityClass() {
return Group.class;
}
}
......@@ -7,6 +7,8 @@ import com.neotel.smfcore.security.service.po.Menu;
import com.neotel.smfcore.security.service.po.User;
import org.springframework.stereotype.Service;
import java.util.List;
/**
* Created by sunke on 2021/7/7.
*/
......@@ -17,4 +19,8 @@ public class MenuDaoImpl extends AbstractBaseDao implements IMenuDao {
return Menu.class;
}
@Override
public List<Menu> findByPid(String pid) {
return super.findOneByCondition(new String[] {"pid"}, new String[] {pid});
}
}
package com.neotel.smfcore.security.service.dao.impl;
import com.neotel.smfcore.common.base.AbstractBaseDao;
import com.neotel.smfcore.security.service.OnlineUserService;
import com.neotel.smfcore.security.service.dao.IUserDao;
import com.neotel.smfcore.security.service.po.User;
import org.springframework.stereotype.Service;
......@@ -14,6 +15,8 @@ import java.util.Set;
*/
@Service
public class UserDaoImpl extends AbstractBaseDao implements IUserDao {
@Override
public Class getEntityClass() {
return User.class;
......@@ -29,6 +32,8 @@ public class UserDaoImpl extends AbstractBaseDao implements IUserDao {
return super.findOneByCondition(new String[] {"email"}, new String[] {email});
}
@Override
public void updatePass(String username, String pass, Date lastPasswordResetTime) {
......
package com.neotel.smfcore.security.service.manager;
import com.neotel.smfcore.common.base.IBaseManager;
import com.neotel.smfcore.security.service.po.Group;
public interface IGroupManager extends IBaseManager<Group> {
}
......@@ -7,7 +7,10 @@ import com.neotel.smfcore.security.rest.bean.vo.MenuVo;
import com.neotel.smfcore.security.service.po.Menu;
import com.neotel.smfcore.security.service.po.Role;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.List;
import java.util.Set;
public interface IMenuManager extends IBaseManager<Menu> {
......@@ -37,4 +40,36 @@ public interface IMenuManager extends IBaseManager<Menu> {
*/
List<MenuVo> buildMenus(List<MenuDto> menuDtos);
/**
* 懒加载菜单数据
* @param pid 根据父节点查询菜单,父节点空时查询所有父节点为空的/
* @return /
*/
List<Menu> getMenusByPid(String pid);
/**
* 获取当前菜单的上级菜单或者同级菜单
* @param menuDto
* @param menus
* @return
*/
List<Menu> getSuperior(Menu menuDto, List<Menu> menus);
/**
* 下载菜单数据
* @param menuDtos
* @param response
* @throws IOException
*/
void download(List<Menu> menuDtos, HttpServletResponse response) throws IOException;
Set<Menu> getChildMenus(List<Menu> menuList, Set<Menu> menuSet);
/**
* 删除
* @param menuSet /
*/
void delete(Set<Menu> menuSet);
}
......@@ -16,6 +16,7 @@
package com.neotel.smfcore.security.service.manager;
import com.neotel.smfcore.common.base.IBaseManager;
import com.neotel.smfcore.common.exception.ValidateException;
import com.neotel.smfcore.security.service.po.User;
import org.springframework.data.domain.Pageable;
import org.springframework.web.multipart.MultipartFile;
......@@ -33,6 +34,11 @@ import java.util.Set;
public interface IUserManager extends IBaseManager<User> {
/**
* 其他人编辑用户信息
* @param user
*/
void update(User user);
/**
* 根据用户名查询
* @param userName /
* @return /
......@@ -50,4 +56,10 @@ public interface IUserManager extends IBaseManager<User> {
* @param resources /
*/
void updateCenter(User resources);
/**
* 删除用户
* @param ids
*/
void deleteUsers(Set<String> ids) throws ValidateException;
}
package com.neotel.smfcore.security.service.manager.impl;
import com.neotel.smfcore.common.exception.ValidateException;
import com.neotel.smfcore.security.service.dao.IGroupDao;
import com.neotel.smfcore.security.service.manager.IGroupManager;
import com.neotel.smfcore.security.service.po.Group;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Pageable;
import org.springframework.data.mongodb.core.query.Query;
import org.springframework.stereotype.Service;
import java.util.List;
@Service
public class GroupManagerImpl implements IGroupManager {
@Autowired
IGroupDao groupDao;
@Override
public Group get(String id) {
return groupDao.findOneById(id);
}
@Override
public Group save(Group object) throws ValidateException {
return groupDao.save(object);
}
@Override
public void delete(Group object) throws ValidateException {
groupDao.removeOne(object);
}
@Override
public List<Group> findByPage(Query query, Pageable pageable) {
return groupDao.findByQuery(query,pageable);
}
@Override
public List<Group> findByQuery(Query query) {
return groupDao.findByQuery(query);
}
}
......@@ -3,12 +3,12 @@ package com.neotel.smfcore.security.service.manager.impl;
import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.util.ObjectUtil;
import com.neotel.smfcore.common.exception.ValidateException;
import com.neotel.smfcore.common.utils.FileUtil;
import com.neotel.smfcore.common.utils.StringUtils;
import com.neotel.smfcore.security.rest.bean.dto.MenuDto;
import com.neotel.smfcore.security.rest.bean.vo.MenuMetaVo;
import com.neotel.smfcore.security.rest.bean.vo.MenuVo;
import com.neotel.smfcore.security.service.dao.IMenuDao;
import com.neotel.smfcore.security.service.dao.IRoleDao;
import com.neotel.smfcore.security.service.manager.IMenuManager;
import com.neotel.smfcore.security.service.manager.IRoleManager;
import com.neotel.smfcore.security.service.manager.IUserManager;
......@@ -22,6 +22,8 @@ import org.springframework.data.mongodb.core.query.Criteria;
import org.springframework.data.mongodb.core.query.Query;
import org.springframework.stereotype.Service;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.*;
import java.util.stream.Collectors;
......@@ -65,7 +67,9 @@ public class MenuManagerImpl implements IMenuManager {
Role role= roleManager.get(roleId);
if(role!=null){
Criteria c = Criteria.where("id").in(role.getMenus());
c.and("type").ne(2);
Query query = new Query(c);
query.with(Sort.by(Sort.Direction.ASC, "menuSort"));
List<Menu> menus= findByQuery(query);
return buildTree(menus);
}
......@@ -76,13 +80,7 @@ public class MenuManagerImpl implements IMenuManager {
public List<Menu> findByUserId(String currentUserId) {
User user = userManager.get(currentUserId);
if(user!=null){
Role role= roleManager.get(user.getRoleId());
if(role!=null){
Criteria c = Criteria.where("id").in(role.getMenus());
Query query = new Query(c);
List<Menu> menus= findByQuery(query);
return buildTree(menus);
}
return findByRoleId(user.getRoleId());
}
return new ArrayList<Menu>();
}
......@@ -115,7 +113,7 @@ public class MenuManagerImpl implements IMenuManager {
public List<MenuVo> buildMenus(List<MenuDto> menuDtos) {
List<MenuVo> list=new LinkedList<>() ;
menuDtos.forEach(menuDto -> {
if(menuDto!=null){
if(menuDto!=null && menuDto.getType()<=1){
List<MenuDto> menuDtoList=menuDto.getChildren();
MenuVo menuVo=new MenuVo();
menuVo.setName(ObjectUtil.isNotEmpty(menuDto.getComponentName())?menuDto.getComponentName():menuDto.getTitle());
......@@ -162,5 +160,76 @@ public class MenuManagerImpl implements IMenuManager {
return list;
}
@Override
public List<Menu> getMenusByPid(String pid) {
List<Menu> menus;
if(pid != null && !pid.equals("")){
menus = menuDao.findByPid(pid);
} else {
menus = menuDao.findByPid("");
}
return menus;
}
@Override
public List<Menu> getSuperior(Menu menu, List<Menu> menus) {
if(menu!=null&& menu.getPid().equals("")){
menus.addAll(menuDao.findByPid(menu.getPid()));
return menus;
}
menus.addAll(menuDao.findByPid(menu.getPid()));
return getSuperior(get(menu.getPid()), menus);
}
@Override
public void download(List<Menu> menuDtos, HttpServletResponse response) throws IOException {
List<Map<String, Object>> list = new ArrayList<>();
for (Menu menu : menuDtos) {
Map<String,Object> map = new LinkedHashMap<>();
map.put("菜单标题", menu.getTitle());
map.put("菜单类型", menu.getType() == null ? "目录" : menu.getType() == 1 ? "菜单" : "按钮");
map.put("权限标识", menu.getPermission());
map.put("外链菜单", menu.getIFrame() ? "是" : "否");
map.put("菜单可见", menu.getHidden() ? "否" : "是");
map.put("是否缓存", menu.getCache() ? "是" : "否");
list.add(map);
}
FileUtil.downloadExcel(list, response);
}
@Override
public Set<Menu> getChildMenus(List<Menu> menuList, Set<Menu> menuSet) {
for (Menu menu : menuList) {
menuSet.add(menu);
List<Menu> menus = menuDao.findByPid(menu.getId());
if(menus!=null && menus.size()!=0){
getChildMenus(menus, menuSet);
}
}
return menuSet;
}
@Override
public void delete(Set<Menu> menuSet) {
for (Menu menu : menuSet) {
// 清理缓存
// delCaches(menu.getId());
// roleService.untiedMenu(menu.getId());
// menuDao.removeOneById(menu.getId());
// updateSubCnt(menu.getPid());
}
}
// /**
// * 清理缓存
// * @param id 菜单ID
// */
// public void delCaches(Long id){
// List<User> users = userManager.findByMenuId(id);
// redisUtils.del(CacheKey.MENU_ID + id);
// redisUtils.delByKeys(CacheKey.MENU_USER, users.stream().map(User::getId).collect(Collectors.toSet()));
// // 清除 Role 缓存
// List<Role> roles = roleService.findInMenuId(new ArrayList<Long>(){{
// add(id);
// }});
// redisUtils.delByKeys(CacheKey.ROLE_ID, roles.stream().map(Role::getId).collect(Collectors.toSet()));
// }
}
......@@ -12,7 +12,10 @@ import org.springframework.data.mongodb.core.query.Criteria;
import org.springframework.data.mongodb.core.query.Query;
import org.springframework.data.mongodb.core.query.Update;
import org.springframework.stereotype.Service;
import java.util.Date;
import java.util.List;
import java.util.Set;
/**
* Created by kangmor on 2015/12/1.
......@@ -36,10 +39,41 @@ public class UserManagerImpl implements IUserManager {
Update update = Update.update("password","password");
userDao.updateFirst(query,update);
}
@Override
public void update(User user) {
User dataUser=this.get(user.getId());
if(dataUser!=null){
// 如果用户被禁用,则清除用户登录信息
if(!user.getEnabled()){
}
dataUser.setUsername(user.getUsername());
dataUser.setEmail(user.getEmail());
dataUser.setEnabled(user.getEnabled());
dataUser.setIsAdmin(user.getIsAdmin());;
dataUser.setRoleId(user.getRoleId());
dataUser.setGroups(user.getGroups());
userDao.save(dataUser);
}
}
@Override
public void updateCenter(User resources) {
userDao.save(resources);
User dataUser=this.get(resources.getId());
if(dataUser!=null){
dataUser.setEmail(resources.getEmail());
}
userDao.save(dataUser);
}
@Override
public void deleteUsers(Set<String> ids) throws ValidateException{
for (String id:ids
) {
User user=get(id);
if(user!=null){
this.delete(user);
}
}
}
@Override
......
package com.neotel.smfcore.security.service.po;
import com.neotel.smfcore.common.base.BasePo;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
@Data
@NoArgsConstructor
@AllArgsConstructor
public class Group extends BasePo implements Serializable {
private String groupName;
}
......@@ -20,6 +20,7 @@ import lombok.*;
import org.springframework.data.mongodb.core.mapping.Document;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
......@@ -102,4 +103,56 @@ public class Menu extends BasePo implements Serializable {
}
public String getPermission(){return permission;}
/**
* 此方法用于构建一级菜单,type=1
* @param children
* @param type
* @param permission
* @param title
* @param menuSort
* @param path
* @param component
* @param pid
* @param subCount
* @param icon
*/
public Menu(final List<Menu> children,final Integer type, final String permission, final String title, final Integer menuSort, final String path, final String component, final String pid, final Integer subCount, final String icon) {
this.children = children;
this.permission = permission;
this.type=type;
this.title = title;
this.menuSort = menuSort;
this.path = path;
this.component = component;
this.pid = pid;
this.subCount = subCount;
this.iFrame = false;
this.cache = false;
this.hidden = false;
this.componentName = title;
this.icon = icon;
}/**
* 此方法用于构建权限菜单,type=2
* @param permission
* @param title
* @param menuSort
* @param pid
*/
public Menu( final String permission, final String title, final Integer menuSort, final String pid ) {
this.children = new ArrayList<Menu>();
this.type = 2;
this.permission = permission;
this.title = title;
this.menuSort = menuSort;
this.path = "";
this.component = "";
this.pid = pid;
this.subCount = 0;
this.iFrame = false;
this.cache = false;
this.hidden = false;
this.componentName = title;
this.icon = "";
}
}
......@@ -22,6 +22,7 @@ import org.springframework.data.mongodb.core.mapping.Document;
import java.io.Serializable;
import java.util.Date;
import java.util.Set;
/**
* @author Zheng Jie
......@@ -50,4 +51,6 @@ public class User extends BasePo implements Serializable {
private Date pwdResetTime;
private Set<String> groups;
}
支持 Markdown 格式
你添加了 0 到此讨论。请谨慎行事。
Finish editing this message first!