Commit 469c7f4e LN

增加数据初始化方法,增加mapstruct配置和BaseMapper类

1 个父辈 6f5cd8da
...@@ -133,7 +133,22 @@ ...@@ -133,7 +133,22 @@
<artifactId>xercesImpl</artifactId> <artifactId>xercesImpl</artifactId>
<version>2.12.0</version> <version>2.12.0</version>
</dependency> </dependency>
<!--mapStruct-->
<dependency>
<groupId>org.mapstruct</groupId>
<artifactId>mapstruct</artifactId>
<version>1.3.1.Final</version>
</dependency>
<dependency>
<groupId>org.mapstruct</groupId>
<artifactId>mapstruct-processor</artifactId>
<version>1.3.1.Final</version>
</dependency>
<dependency>
<groupId>org.mapstruct</groupId>
<artifactId>mapstruct-jdk8</artifactId>
<version>1.4.0.Final</version>
</dependency>
</dependencies> </dependencies>
......
package com.neotel.smfcore.common.base;
import java.util.List;
public interface BaseMapper<D, E> {
/**
* DTO转Entity
* @param dto /
* @return /
*/
E toEntity(D dto);
/**
* Entity转DTO
* @param entity /
* @return /
*/
D toDto(E entity);
/**
* DTO集合转Entity集合
* @param dtoList /
* @return /
*/
List<E> toEntity(List<D> dtoList);
/**
* Entity集合转DTO集合
* @param entityList /
* @return /
*/
List <D> toDto(List<E> entityList);
}
package com.neotel.smfcore.common.init;
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.Menu;
import com.neotel.smfcore.security.service.po.Role;
import com.neotel.smfcore.security.service.po.User;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import javax.annotation.PostConstruct;
import javax.jws.soap.SOAPBinding;
import java.util.*;
@Slf4j
@Component
public class DataInitManager {
@Autowired
UserManagerImpl userManager;
@Autowired
RoleManagerImpl roleManager;
@Autowired
MenuManagerImpl menuManager;
@PostConstruct
public void DataInit() {
try {
log.info("初始化环境...");
//查询admin的用户是否存在
String userName = "admin";
User admin = userManager.findByUserName(userName);
if (admin == null) {
/* 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 Long pid, final Integer subCount, final Boolean iFrame, final Boolean cache,
final Boolean hidden, final String componentName, final String icon) {
*/
Menu menu1 = new Menu(new ArrayList<Menu>(), 0, "menu:list", "料架管理", 1, "menu", "storage/boxChart", 0l, 0, false, false, false, "料架管理", "menu");
Menu menu2 = new Menu(new ArrayList<Menu>(), 0, "menu:list", "工单", 2, "menu", "workOrder/liteOrderSearch", 0l, 0, false, false, false, "工单", "menu");
Menu menu3 = new Menu(new ArrayList<Menu>(), 0, "menu:list", "查找出库", 3, "menu", "component/storagePosFind", 0l, 0, false, false, false, "查找出库", "menu");
Menu menu4 = new Menu(new ArrayList<Menu>(), 0, "menu:list", "角色管理", 4, "menu", "user/roleSearch", 0l, 0, false, false, false, "角色管理", "menu");
menu1= menuManager.save(menu1);
menu2= menuManager.save(menu2);
menu3= menuManager.save(menu3);
menu4=menuManager.save(menu4);
log.info("创建默认菜单:" + menu1.toString());
log.info("创建默认菜单:" + menu2.toString());
log.info("创建默认菜单:" + menu3.toString());
log.info("创建默认菜单:"+menu4.toString());
Set<String> Menus = new HashSet<String>() ;
Menus.add(menu1.getId());
Menus.add(menu2.getId());
Menus.add(menu3.getId());
Menus.add(menu4.getId());
Role role = new Role(Menus,"admin","全部",1,"管理员");
role= roleManager.save(role);
log.info("创建默认角色:" + role.toString());
admin = new User(role.getId(), userName, "", "123456", true,true,new Date());
userManager.save(admin);
log.info("创建默认用户:" + admin.toString());
} else {
log.info("初始化环境完成...");
}
} catch (Exception exception) {
log.error("初始化环境出错..." + exception.toString());
}
}
}
...@@ -17,10 +17,15 @@ package com.neotel.smfcore.security.rest; ...@@ -17,10 +17,15 @@ package com.neotel.smfcore.security.rest;
import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.collection.CollectionUtil;
import com.neotel.smfcore.common.annotation.QueryCondition; import com.neotel.smfcore.common.annotation.QueryCondition;
import com.neotel.smfcore.security.annotation.AnonymousAccess;
import com.neotel.smfcore.security.rest.bean.dto.MenuDto;
import com.neotel.smfcore.security.rest.bean.mapstruct.MenuMapper;
import com.neotel.smfcore.security.service.manager.IMenuManager; import com.neotel.smfcore.security.service.manager.IMenuManager;
import com.neotel.smfcore.security.service.po.Menu;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import lombok.extern.log4j.Log4j;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus; import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity; import org.springframework.http.ResponseEntity;
...@@ -43,11 +48,22 @@ import java.util.stream.Collectors; ...@@ -43,11 +48,22 @@ import java.util.stream.Collectors;
@RequestMapping("/api/menus") @RequestMapping("/api/menus")
public class MenuController { public class MenuController {
// @Autowired @Autowired
// private final IMenuManager menuManager; private final IMenuManager menuManager;
// private final MenuMapper menuMapper; @Autowired
// private static final String ENTITY_NAME = "menu"; private final MenuMapper menuMapper;
// private static final String ENTITY_NAME = "menu";
@GetMapping(value = "/build")
@ApiOperation("获取前端所需菜单")
@AnonymousAccess
public ResponseEntity<Object> buildMenus(){
String userId="1";
List<Menu> menuList = menuManager.findByUserId(userId);
List<MenuDto> menuDtoList=menuMapper.toDto(menuManager.buildTree(menuList));
return new ResponseEntity<>(menuDtoList, HttpStatus.OK);
}
// @ApiOperation("导出菜单数据") // @ApiOperation("导出菜单数据")
// @GetMapping(value = "/download") // @GetMapping(value = "/download")
// @PreAuthorize("@el.check('menu:list')") // @PreAuthorize("@el.check('menu:list')")
......
package com.neotel.smfcore.security.rest.bean.dto;
import com.neotel.smfcore.security.service.po.Menu;
import lombok.Getter;
import lombok.Setter;
import java.io.Serializable;
import java.util.List;
@Getter
@Setter
public class MenuDto implements Serializable {
/**
* 子菜单
*/
private List<Menu> children;
/**
* 菜单类型
*/
private Integer type;
/**
* 权限
*/
private String permission;
/**
* 菜单标题
*/
private String title;
/**
* 排序
*/
private Integer menuSort;
/**
* 连接地址
*/
private String path;
/**
* 组件
*/
private String component;
/**
* 上级菜单ID
*/
private Long pid;
/**
* 子菜单数目
*/
private Integer subCount;
/**
* 是否外链
*/
private Boolean iFrame;
/**
* 缓存
*/
private Boolean cache;
/**
* 隐藏
*/
private Boolean hidden;
/**
* 组件名称
*/
private String componentName;
/**
* 图标
*/
private String icon;
public Boolean getHasChildren() {
return subCount > 0;
}
public Boolean getLeaf() {
return subCount <= 0;
}
public String getLabel() {
return title;
}
public String getPermission(){return permission;}
}
package com.neotel.smfcore.security.rest.bean.mapstruct;
import com.neotel.smfcore.common.base.BaseMapper;
import com.neotel.smfcore.security.rest.bean.dto.MenuDto;
import com.neotel.smfcore.security.service.po.Menu;
import org.mapstruct.Mapper;
import org.mapstruct.ReportingPolicy;
@Mapper(componentModel = "spring",unmappedTargetPolicy = ReportingPolicy.IGNORE)
public interface MenuMapper extends BaseMapper<MenuDto, Menu> {
}
...@@ -2,6 +2,7 @@ package com.neotel.smfcore.security.service.dao.impl; ...@@ -2,6 +2,7 @@ package com.neotel.smfcore.security.service.dao.impl;
import com.neotel.smfcore.common.base.AbstractBaseDao; import com.neotel.smfcore.common.base.AbstractBaseDao;
import com.neotel.smfcore.security.service.dao.IRoleDao; import com.neotel.smfcore.security.service.dao.IRoleDao;
import com.neotel.smfcore.security.service.po.Role;
import com.neotel.smfcore.security.service.po.User; import com.neotel.smfcore.security.service.po.User;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
...@@ -12,7 +13,7 @@ import org.springframework.stereotype.Service; ...@@ -12,7 +13,7 @@ import org.springframework.stereotype.Service;
public class RoleDaoImpl extends AbstractBaseDao implements IRoleDao { public class RoleDaoImpl extends AbstractBaseDao implements IRoleDao {
@Override @Override
public Class getEntityClass() { public Class getEntityClass() {
return User.class; return Role.class;
} }
} }
...@@ -5,8 +5,30 @@ import com.neotel.smfcore.common.base.IBaseManager; ...@@ -5,8 +5,30 @@ import com.neotel.smfcore.common.base.IBaseManager;
import com.neotel.smfcore.security.service.po.Menu; import com.neotel.smfcore.security.service.po.Menu;
import com.neotel.smfcore.security.service.po.Role; import com.neotel.smfcore.security.service.po.Role;
import java.util.List;
public interface IMenuManager extends IBaseManager<Menu> { public interface IMenuManager extends IBaseManager<Menu> {
/**
* 根据角色ID获取菜单
* @param roleId
* @return
*/
List<Menu> findByRoleId(String roleId);
/**
* 根据当前用户获取菜单
* @param currentUserId /
* @return /
*/
List<Menu> findByUserId(String currentUserId);
/**
* 构建菜单树
* @param menuDtos 原始数据
* @return /
*/
List<Menu> buildTree(List<Menu> menuDtos);
} }
package com.neotel.smfcore.security.service.manager.impl; 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.exception.ValidateException;
import com.neotel.smfcore.security.service.dao.IMenuDao; import com.neotel.smfcore.security.service.dao.IMenuDao;
import com.neotel.smfcore.security.service.dao.IRoleDao; import com.neotel.smfcore.security.service.dao.IRoleDao;
import com.neotel.smfcore.security.service.manager.IMenuManager; import com.neotel.smfcore.security.service.manager.IMenuManager;
import com.neotel.smfcore.security.service.manager.IRoleManager; import com.neotel.smfcore.security.service.manager.IRoleManager;
import com.neotel.smfcore.security.service.manager.IUserManager;
import com.neotel.smfcore.security.service.po.Menu; import com.neotel.smfcore.security.service.po.Menu;
import com.neotel.smfcore.security.service.po.Role; import com.neotel.smfcore.security.service.po.Role;
import com.neotel.smfcore.security.service.po.User;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Pageable; import org.springframework.data.domain.Pageable;
import org.springframework.data.domain.Sort;
import org.springframework.data.mongodb.core.query.Criteria;
import org.springframework.data.mongodb.core.query.Query; import org.springframework.data.mongodb.core.query.Query;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.util.List; import java.util.*;
import java.util.stream.Collectors;
@Service @Service
public class MenuManagerImpl implements IMenuManager { public class MenuManagerImpl implements IMenuManager {
@Autowired @Autowired
protected IMenuDao menuDao; protected IMenuDao menuDao;
@Autowired
protected IRoleManager roleManager;
@Autowired
protected IUserManager userManager;
@Override @Override
public Menu get(String id) { public Menu get(String id) {
...@@ -44,4 +55,57 @@ public class MenuManagerImpl implements IMenuManager { ...@@ -44,4 +55,57 @@ public class MenuManagerImpl implements IMenuManager {
public List<Menu> findByQuery(Query query) { public List<Menu> findByQuery(Query query) {
return menuDao.findByQuery(query); return menuDao.findByQuery(query);
} }
@Override
public List<Menu> findByRoleId(String roleId) {
Role role= roleManager.get(roleId);
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 new ArrayList<Menu>();
}
@Override
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 new ArrayList<Menu>();
}
@Override
public List<Menu> buildTree(List<Menu> menus) {
List<Menu> trees = new ArrayList<>();
Set<String> ids = new HashSet<>();
for (Menu menu : menus) {
if (menu.getPid() == null) {
trees.add(menu);
}
for (Menu it : menus) {
if (menu.getId().equals(it.getPid())) {
if (menu.getChildren() == null) {
menu.setChildren(new ArrayList<>());
}
menu.getChildren().add(it);
ids.add(it.getId());
}
}
}
if(trees.size() == 0){
trees = menus.stream().filter(s -> !ids.contains(s.getId())).collect(Collectors.toList());
}
return trees;
}
} }
...@@ -16,8 +16,7 @@ ...@@ -16,8 +16,7 @@
package com.neotel.smfcore.security.service.po; package com.neotel.smfcore.security.service.po;
import com.neotel.smfcore.common.base.BasePo; import com.neotel.smfcore.common.base.BasePo;
import lombok.Getter; import lombok.*;
import lombok.Setter;
import org.springframework.data.mongodb.core.mapping.Document; import org.springframework.data.mongodb.core.mapping.Document;
import java.io.Serializable; import java.io.Serializable;
...@@ -28,37 +27,66 @@ import java.util.Objects; ...@@ -28,37 +27,66 @@ import java.util.Objects;
* @author Zheng Jie * @author Zheng Jie
* @date 2018-12-17 * @date 2018-12-17
*/ */
@Getter @Data
@Setter
@Document @Document
@NoArgsConstructor
@AllArgsConstructor
public class Menu extends BasePo implements Serializable { public class Menu extends BasePo implements Serializable {
/**
* 子菜单
*/
private List<Menu> children; private List<Menu> children;
/**
* 菜单类型
*/
private Integer type; private Integer type;
/**
* 权限
*/
private String permission; private String permission;
/**
* 菜单标题
*/
private String title; private String title;
/**
* 排序
*/
private Integer menuSort; private Integer menuSort;
/**
* 连接地址
*/
private String path; private String path;
/**
* 组件
*/
private String component; private String component;
/**
* 上级菜单ID
*/
private Long pid; private Long pid;
/**
* 子菜单数目
*/
private Integer subCount; private Integer subCount;
/**
* 是否外链
*/
private Boolean iFrame; private Boolean iFrame;
/**
* 缓存
*/
private Boolean cache; private Boolean cache;
/**
* 隐藏
*/
private Boolean hidden; private Boolean hidden;
/**
* 组件名称
*/
private String componentName; private String componentName;
/**
* 图标
*/
private String icon; private String icon;
public Boolean getHasChildren() { public Boolean getHasChildren() {
...@@ -72,4 +100,6 @@ public class Menu extends BasePo implements Serializable { ...@@ -72,4 +100,6 @@ public class Menu extends BasePo implements Serializable {
public String getLabel() { public String getLabel() {
return title; return title;
} }
public String getPermission(){return permission;}
} }
...@@ -16,8 +16,7 @@ ...@@ -16,8 +16,7 @@
package com.neotel.smfcore.security.service.po; package com.neotel.smfcore.security.service.po;
import com.neotel.smfcore.common.base.BasePo; import com.neotel.smfcore.common.base.BasePo;
import lombok.Getter; import lombok.*;
import lombok.Setter;
import org.springframework.data.mongodb.core.mapping.Document; import org.springframework.data.mongodb.core.mapping.Document;
import java.io.Serializable; import java.io.Serializable;
...@@ -28,13 +27,13 @@ import java.util.Set; ...@@ -28,13 +27,13 @@ import java.util.Set;
* @author Zheng Jie * @author Zheng Jie
* @date 2018-11-23 * @date 2018-11-23
*/ */
@Getter @Data
@Setter
@Document @Document
@NoArgsConstructor
@AllArgsConstructor
public class Role extends BasePo implements Serializable { public class Role extends BasePo implements Serializable {
private Set<Menu> menus; private Set<String> menus;
// private Set<Dept> depts; // private Set<Dept> depts;
......
...@@ -17,8 +17,7 @@ package com.neotel.smfcore.security.service.po; ...@@ -17,8 +17,7 @@ package com.neotel.smfcore.security.service.po;
import com.alibaba.fastjson.annotation.JSONField; import com.alibaba.fastjson.annotation.JSONField;
import com.neotel.smfcore.common.base.BasePo; import com.neotel.smfcore.common.base.BasePo;
import lombok.Getter; import lombok.*;
import lombok.Setter;
import org.springframework.data.mongodb.core.mapping.Document; import org.springframework.data.mongodb.core.mapping.Document;
import java.io.Serializable; import java.io.Serializable;
...@@ -28,11 +27,13 @@ import java.util.Date; ...@@ -28,11 +27,13 @@ import java.util.Date;
* @author Zheng Jie * @author Zheng Jie
* @date 2018-11-23 * @date 2018-11-23
*/ */
@Getter @Data
@Setter
@Document @Document
@NoArgsConstructor
@AllArgsConstructor
public class User extends BasePo implements Serializable { public class User extends BasePo implements Serializable {
private String roleId; private String roleId;
private String username; private String username;
...@@ -48,4 +49,5 @@ public class User extends BasePo implements Serializable { ...@@ -48,4 +49,5 @@ public class User extends BasePo implements Serializable {
private Boolean isAdmin = false; private Boolean isAdmin = false;
private Date pwdResetTime; private Date pwdResetTime;
} }
支持 Markdown 格式
你添加了 0 到此讨论。请谨慎行事。
Finish editing this message first!