Commit 469a338b LN

修改初始菜单数据

1 个父辈 70d19f00
package com.neotel.smfcore.common.init;
import com.neotel.smfcore.common.utils.Constants;
import com.neotel.smfcore.common.utils.UserCodeUtil;
import com.neotel.smfcore.security.service.manager.IGroupManager;
import com.neotel.smfcore.security.service.manager.IMenuManager;
import com.neotel.smfcore.security.service.manager.IRoleManager;
......@@ -37,14 +38,13 @@ public class DataInitManager {
@PostConstruct
public void DataInit() {
try {
log.info("初始化环境...");
//查询admin的用户是否存在
String userName = Constants.SUPER_USERNAME;
User admin = userManager.findByUserName(userName);
if (admin == null) {
Set<String> menuIdSet = MenuInitOld() ;
Set<String> menuIdSet = MenuInitNew() ;
Group group=new Group("未分组");
group=groupManager.save(group);
......@@ -68,7 +68,6 @@ public class DataInitManager {
} catch (Exception exception) {
log.error("初始化环境出错..." + exception.toString());
}
}
private Set<String> MenuInitOld(){
......@@ -143,6 +142,9 @@ public class DataInitManager {
sortValue++;
pMenu.setSubCount(subMenus.length);
pMenu.setMenuSort(sortValue * 10);
if(pMenu.getPath().isEmpty()){
pMenu.setPath("sys-"+sortValue*10);
}
pMenu = menuManager.saveMenu(pMenu);
list.add(pMenu);
......@@ -154,8 +156,10 @@ public class DataInitManager {
) {
i++;
int subSort = sortValue * 10 + i;
subm.setSubCount(subSort);
subm.setMenuSort(subSort);
subm.setSubCount(0);
subm.setPid(pMenu.getId());
subm=menuManager.saveMenu(subm);
list.add(subm);
list.addAll(createSubPerMenus(subm));
}
......@@ -191,44 +195,45 @@ public class DataInitManager {
private Set<String> MenuInitNew(){
Set<String> menuIdSet = new HashSet<String>() ;
List<Menu> menus=new ArrayList<Menu>();
//料架分组
Menu menuShelf = new Menu(new ArrayList<Menu>(), 1, "menu:list", "料架分组", 1, "lightGroup", "neolight/lightGroup/index", "", 0, "menu");
Menu menuShelf = new Menu(new ArrayList<Menu>(), 1, "menu:list", "料架分组", 1, "lightGroup", "neolight/lightGroup/index", "", 0, "list");
menus.addAll(createMenus(menuShelf ));
//出库:工单,查找出库
Menu poutOut=Menu.CreatePMenu("工单",20,"",2,"menu");
Menu menuOrder = new Menu(new ArrayList<Menu>(), 21, "menu:list", "工单", 2, "workOrder", "neolight/workOrder/index", "", 0, "menu");
Menu menuOut = new Menu(new ArrayList<Menu>(), 22, "menu:list", "查找出库", 3, "singleOuput", "neolight/singleOuput/index", "", 0, "menu");
Menu poutOut=Menu.CreatePMenu("工单管理",20,"order",2,"zujian");
Menu menuOrder = new Menu(new ArrayList<Menu>(), 1, "menu:list", "工单", 1, "workOrder", "neolight/workOrder/index", "", 0, "icon");
Menu menuOut = new Menu(new ArrayList<Menu>(), 1, "menu:list", "查找出库", 1,"singleOuput", "neolight/singleOuput/index", "", 0, "search");
menus.addAll(createMenus( poutOut,menuOrder,menuOut));
//设置:料仓管理,菜单管理
Menu poutSet=Menu.CreatePMenu("设置",30,"",2,"menu");
Menu menuStorage = new Menu(new ArrayList<Menu>(), 31, "storage:list", "料仓管理", 61, "bunker", "storage/storage/index", "", 0, "database");
Menu menuStoragePos = new Menu(new ArrayList<Menu>(), 32, "storagePos:list", "库位管理", 51, "storagePos", "storagePos/storagePos/index", "", 0, "tree-table");
Menu menuMenu = new Menu(new ArrayList<Menu>(), 33, "menu:list", "菜单管理", 31, "menu", "system/menu/index", "", 0, "menu");
Menu poutSet=Menu.CreatePMenu("设置",30,"system",2,"system");
Menu menuStorage = new Menu(new ArrayList<Menu>(), 1, "storage:list", "料仓管理", 1, "bunker", "storage/storage/index", "", 0, "database");
Menu menuStoragePos = new Menu(new ArrayList<Menu>(), 1, "storagePos:list", "库位管理", 1, "storagePos", "storagePos/storagePos/index", "", 0, "tree-table");
Menu menuMenu = new Menu(new ArrayList<Menu>(), 1, "menu:list", "菜单管理", 1, "menu", "system/menu/index", "", 0, "menu");
menus.addAll(createMenus( poutSet,menuStorage,menuStoragePos,menuMenu));
//物料管理:元器件管理,条形码管理
Menu pMenuWl=Menu.CreatePMenu("物料管理",30,"",2,"menu");
Menu menucom = new Menu(new ArrayList<Menu>(), 1, "component:list", "元器件", 71, "componentParts", "parts/component/index", "", 0, "server");
Menu menubarcode = new Menu(new ArrayList<Menu>(), 1, "barcode:list", "条形码", 81, "barcode", "barcode/barcode/index", "", 0, "menu");
Menu pMenuWl=Menu.CreatePMenu("物料管理",30,"materiel ",2,"redis");
Menu menucom = new Menu(new ArrayList<Menu>(), 1, "component:list", "元器件",1, "componentParts", "parts/component/index", "", 0, "server");
Menu menubarcode = new Menu(new ArrayList<Menu>(), 1, "barcode:list", "条形码", 1, "barcode", "barcode/barcode/index", "", 0, "chart");
menus.addAll(createMenus( pMenuWl,menucom,menubarcode));
//日志管理:物料日志
Menu pMenuLog=Menu.CreatePMenu("日志管理",30,"",2,"menu");
Menu menuLog = new Menu(new ArrayList<Menu>(), 1, "taskLog:list", "物料日志", 41, "taskLog", "neolight/taskLog/index", "", 0, "database");
Menu pMenuLog=Menu.CreatePMenu("日志管理",30,"log",2,"log");
Menu menuLog = new Menu(new ArrayList<Menu>(), 1, "taskLog:list", "物料日志", 1, "taskLog", "neolight/taskLog/index", "", 0, "education");
menus.addAll(createMenus( pMenuLog,menuLog));
//用户管理:用户管理,角色管理
Menu pMenuUser=Menu.CreatePMenu("用户管理",30,"",2,"menu");
Menu menuUser = new Menu(new ArrayList<Menu>(), 1, "user:list", "用户管理", 11, "peoples", "system/user/index", "", 0, "peoples");
Menu menuRole = new Menu(new ArrayList<Menu>(), 1, "role:list", "角色管理", 21, "role", "system/role/index", "", 0, "role");
Menu pMenuUser=Menu.CreatePMenu("用户管理",30,"user",2,"Steve-Jobs");
Menu menuUser = new Menu(new ArrayList<Menu>(), 1, "user:list", "用户管理", 1, "peoples", "system/user/index", "", 0, "peoples");
Menu menuRole = new Menu(new ArrayList<Menu>(), 1, "role:list", "角色管理", 1, "role", "system/role/index", "", 0, "role");
menus.addAll(createMenus( pMenuUser,menuUser,menuRole));
Set<String> menuIdSet = new HashSet<String>() {};
for (Menu menu: menus ) {
log.info("创建默认菜单:" + menu.toString());
menuIdSet.add(menu.getId());
......
......@@ -13,7 +13,7 @@ public class Md5Utls {
* 获取字符串的MD5加密
*/
public static String getMd5(String userId, Date createDate){
String text = userId + "." + createDate.getTime();
String text = userId + "." + DateUtil.toDateTimeString( createDate);
return getMd5(text);
}
/**
......
package com.neotel.smfcore.common.utils;
import com.neotel.smfcore.common.csv.CsvReader;
import com.neotel.smfcore.common.csv.CsvWriter;
import com.neotel.smfcore.common.exception.ValidateException;
import com.neotel.smfcore.security.service.po.User;
import lombok.extern.slf4j.Slf4j;
import javax.jnlp.ClipboardService;
import java.io.File;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashSet;
import java.util.List;
@Slf4j
public class UserCodeUtil {
public static void CreateUserCode( ) {
try {
String filePath = "F:\\";
String fileName="用户.csv";
List<User> list = ReadFile(filePath+fileName);
//创建验证码
for (int i = 0; i < list.size(); i++
) {
String code = Md5Utls.getMd5(list.get(i).getId(), list.get(i).getCreateDate());
list.get(i).setCheckCode(code);
}
String targetFile=filePath+"更新后_"+fileName;
if(FileUtil.exist(targetFile)){
FileUtil.del(targetFile);
}
//重新保存
CsvWriter writer=new CsvWriter(targetFile);
String[] headers=new String[]{"用户ID","用户名","角色","邮箱","状态","语言","创建日期","启用码"};
writer.writeRecord(headers);
for (User user :
list) {
String[] userStr=new String[]{user.getId(),user.getUsername(),user.getRoleId(),user.getEmail(),"启用",user.getLanguage(),DateUtil.toDateString(user.getCreateDate()),user.getCheckCode() };
writer.writeRecord(userStr);
}
writer.flush();
writer.close();
log.info("保存新用户信息到文件:"+filePath+"更新后_"+fileName);
} catch (Exception ex) {
log.error("出错:" + ex.toString());
}
}
protected static int getCsvIndex(CsvReader csvReader,String titleName,String titleNameEn){
int index = csvReader.getIndex(titleName,titleNameEn);
if(index == -1){
log.info("未包含【"+titleName+"】或【"+titleNameEn+"】列");
throw new ValidateException("必须包含["+titleNameEn+"]列");
}
return index;
}
protected static List<User> ReadFile(String fileURL ) throws Exception
{
List<User> list=new ArrayList<User>();
CsvReader csvRead = new CsvReader(fileURL);
csvRead.setSkipEmptyRecords(true);//忽略空行
csvRead.setTrimWhitespace(true);//去除空格
csvRead.readHeaders();
int idIndex = getCsvIndex(csvRead,"用户ID","ID");
int usernameIndex = getCsvIndex(csvRead,"用户名","UserName");
int roleIndex = getCsvIndex(csvRead,"角色","RoleId");
int emailIndex=getCsvIndex(csvRead,"邮箱","Email");
int enableIndex=getCsvIndex(csvRead,"状态","Enable");
int lanIndex=getCsvIndex(csvRead,"语言","Language");
int timeIndex=getCsvIndex(csvRead,"创建日期","CreateDate");
int codeIndex = getCsvIndex(csvRead,"启用码","CheckCode");
int row = 1;
int newRowCount = 0;
int updateRowCount = 0;
String msg="";
while(csvRead.readRecord()){
row++;
String[] lineValues = csvRead.getValues();
String id = lineValues[idIndex];
String checkCode = lineValues[codeIndex];
String username=lineValues[usernameIndex];
String email=lineValues[emailIndex];
String enable=lineValues[enableIndex];
String createDate=lineValues[timeIndex];
String roleId=lineValues[roleIndex];
String langu=lineValues[lanIndex];
if( username.isEmpty() || id.isEmpty()||createDate.isEmpty()){
log.warn("第"+row+"行中有空白内容,此行忽略");
continue;
}
Date createData=new Date(createDate);
User user=new User(username,email,langu,roleId,"",true
,false,new Date(),new HashSet<>(),"");
user.setId(id);
user.setCreateDate(createData);
list.add(user);
}
log.info("文件"+fileURL+"共解析到"+ list.size()+"个用户");
return list;
}
}
......@@ -4,6 +4,7 @@ import com.google.common.base.Strings;
import com.neotel.smfcore.common.bean.PageData;
import com.neotel.smfcore.common.exception.BadRequestException;
import com.neotel.smfcore.common.exception.ValidateException;
import com.neotel.smfcore.common.utils.DateUtil;
import com.neotel.smfcore.common.utils.FileUtil;
import com.neotel.smfcore.core.barcode.service.dao.IBarcodeDao;
import com.neotel.smfcore.core.barcode.service.manager.IBarcodeManager;
......@@ -73,7 +74,7 @@ public class BarcodeManagerImpl implements IBarcodeManager {
map.put("供应商编码", barcode.getProviderNumber());
map.put("料盘尺寸", barcode.getPlateSize()+"X"+barcode.getHeight());
map.put("封装数量", barcode.getAmount());
map.put("创建日期", barcode.getCreateDate());
map.put("创建日期", DateUtil.toDateTimeString(barcode.getCreateDate()) );
list.add(map);
}
FileUtil.downloadExcel(list, response);
......
......@@ -3,6 +3,7 @@ package com.neotel.smfcore.core.barcode.service.manager.impl;
import com.neotel.smfcore.common.bean.PageData;
import com.neotel.smfcore.common.exception.BadRequestException;
import com.neotel.smfcore.common.exception.ValidateException;
import com.neotel.smfcore.common.utils.DateUtil;
import com.neotel.smfcore.common.utils.FileUtil;
import com.neotel.smfcore.common.utils.StorageConstants;
import com.neotel.smfcore.core.barcode.enums.COMPONENT_TYPE;
......@@ -100,7 +101,7 @@ public class ComponentManagerImpl implements IComponentManager {
map.put("供应商编码", component.getProviderNumber());
map.put("料盘尺寸", component.getPlateSize() + "X" + component.getHeight());
map.put("封装数量", component.getAmount());
map.put("创建日期", component.getCreateDate());
map.put("创建日期", DateUtil.toDateTimeString(component.getCreateDate()));
list.add(map);
}
FileUtil.downloadExcel(list, response);
......
......@@ -122,6 +122,8 @@ public class SpringSecurityConfig extends WebSecurityConfigurerAdapter {
// 放行OPTIONS请求
.antMatchers(HttpMethod.OPTIONS, "/**").permitAll()
// .antMatchers("api/menus/build").permitAll()
.antMatchers("api/users/download").permitAll()
.antMatchers("/api/users/upload").permitAll()
// 自定义匿名访问所有url放行:允许匿名和带Token访问,细腻化到每个 Request 类型
// GET
.antMatchers(HttpMethod.GET, anonymousUrls.get(RequestMethodEnum.GET.getType()).toArray(new String[0])).permitAll()
......
......@@ -271,41 +271,34 @@ public class UserController {
int newRowCount = 0;
int updateRowCount = 0;
String msg="";
while(csvRead.readRecord()){
while(csvRead.readRecord()) {
row++;
String[] lineValues = csvRead.getValues();
String id = lineValues[idIndex];
String checkCode = lineValues[codeIndex];
String username=lineValues[usernameIndex];
if(checkCode.isEmpty() || username.isEmpty() || id.isEmpty()){
log.warn("第"+row+"行中有空白内容,此行忽略");
String username = lineValues[usernameIndex];
if (checkCode.isEmpty() || username.isEmpty() || id.isEmpty()) {
log.warn("第" + row + "行中有空白内容,此行忽略");
continue;
}
User user= userManager.get(id);
User user = userManager.get(id);
if(user!=null){
if (user != null) {
boolean needUpdate = false;
String code = Md5Utls.getMd5(id, user.getCreateDate());
//判断是否已启用
if(user.getEnabled()){
if (user.getEnabled() && (!code.equals(user.getCheckCode()) && code.equals(checkCode))) {
//判断验证码是否正确
String code=Md5Utls.getMd5(id,user.getCreateDate());
if(code.equals(user.getCheckCode())){
//此用户已验证过,不需要在验证
}
else if(code.equals(checkCode)){
user.setCheckCode(checkCode);
user.setEnabled(true);
userManager.save(user);
msg+="["+user.getUsername()+"]";
needUpdate = true;
} else if (code.equals(checkCode)) {
needUpdate = true;
}
}else{
String code=Md5Utls.getMd5(id,user.getCreateDate());
if(code.equals(checkCode)){
if (needUpdate) {
user.setCheckCode(checkCode);
user.setEnabled(true);
userManager.save(user);
msg+="["+user.getUsername()+"]";
}
msg += "[" + user.getUsername() + "]";
}
}
}
......
......@@ -16,6 +16,7 @@
package com.neotel.smfcore.security.service;
import com.neotel.smfcore.common.bean.PageData;
import com.neotel.smfcore.common.utils.DateUtil;
import com.neotel.smfcore.security.bean.SecurityProperties;
import com.neotel.smfcore.security.rest.bean.dto.JwtUserDto;
import com.neotel.smfcore.security.rest.bean.dto.OnlineUserDto;
......@@ -115,7 +116,7 @@ public class OnlineUserService {
map.put("登录IP", user.getIp());
map.put("登录地点", user.getAddress());
map.put("浏览器", user.getBrowser());
map.put("登录日期", user.getLoginTime());
map.put("登录日期", DateUtil.toDateTimeString(user.getLoginTime()));
list.add(map);
}
FileUtil.downloadExcel(list, response);
......
......@@ -3,6 +3,7 @@ package com.neotel.smfcore.security.service.manager.impl;
import com.neotel.smfcore.common.bean.PageData;
import com.neotel.smfcore.common.exception.BadRequestException;
import com.neotel.smfcore.common.exception.ValidateException;
import com.neotel.smfcore.common.utils.DateUtil;
import com.neotel.smfcore.common.utils.FileUtil;
import com.neotel.smfcore.security.service.dao.IGroupDao;
import com.neotel.smfcore.security.service.manager.IGroupManager;
......@@ -59,7 +60,7 @@ public class GroupManagerImpl implements IGroupManager {
Map<String,Object> map = new LinkedHashMap<>();
map.put("组ID", group.getId());
map.put("组名称", group.getGroupName());
map.put("创建时间", group.getCreateDate());
map.put("创建时间", DateUtil.toDateTimeString(group.getCreateDate()));
list.add(map);
}
FileUtil.downloadExcel(list, response);
......
......@@ -226,12 +226,13 @@ public class MenuManagerImpl implements IMenuManager {
@Override
public Menu saveMenu(Menu menu) throws ValidateException {
String logName="新增菜单:";
if(menu.getId()!=null){
logName="修改菜单:";
if(menu.getType()==null){
throw new BadRequestException("菜单类型不能为空");
}
if(menu.getTitle()==null){
throw new BadRequestException(logName+ "标题不能为空");
throw new BadRequestException( "菜单标题不能为空");
}
if(menu.getChildren()==null){
menu.setChildren(new ArrayList<Menu>());
......@@ -251,6 +252,22 @@ public class MenuManagerImpl implements IMenuManager {
if(menu.getPid()==null||menu.getPid()=="0"){
menu.setPid("");
}
if(menu.getPath()==null){
menu.setPath("");
}
Criteria c=Criteria.where("path").is(menu.getPath());
String logName="新增菜单:";
if(menu.getId()!=null){
logName="修改菜单:";
c.and("id").ne(menu.getId());
}
Query quer=new Query(c);
//菜单path不能重复
Menu pathMenu=menuDao.findOne(quer);
if(pathMenu!=null){
throw new BadRequestException("路径["+pathMenu+"]已存在");
}
return menuDao.save(menu);
}
// /**
......
......@@ -4,6 +4,7 @@ import com.neotel.smfcore.common.bean.PageData;
import com.neotel.smfcore.common.exception.BadRequestException;
import com.neotel.smfcore.common.exception.ValidateException;
import com.neotel.smfcore.common.utils.Constants;
import com.neotel.smfcore.common.utils.DateUtil;
import com.neotel.smfcore.common.utils.FileUtil;
import com.neotel.smfcore.common.utils.SecurityUtils;
import com.neotel.smfcore.security.service.dao.IRoleDao;
......@@ -71,7 +72,7 @@ public class RoleManagerImpl implements IRoleManager {
map.put("角色名称", role.getName());
// map.put("角色级别", role.getLevel());
map.put("描述", role.getDescription());
map.put("创建日期", role.getCreateDate());
map.put("创建日期", DateUtil.toDateTimeString( role.getCreateDate()));
list.add(map);
}
FileUtil.downloadExcel(list, response);
......
......@@ -5,7 +5,9 @@ import com.neotel.smfcore.common.bean.PageData;
import com.neotel.smfcore.common.exception.BadRequestException;
import com.neotel.smfcore.common.exception.ValidateException;
import com.neotel.smfcore.common.utils.Constants;
import com.neotel.smfcore.common.utils.DateUtil;
import com.neotel.smfcore.common.utils.FileUtil;
import com.neotel.smfcore.common.utils.StringUtils;
import com.neotel.smfcore.core.storage.service.po.StoragePos;
import com.neotel.smfcore.security.rest.bean.dto.RoleSmallDto;
import com.neotel.smfcore.security.rest.bean.dto.UserDto;
......@@ -148,11 +150,11 @@ public class UserManagerImpl implements IUserManager {
Map<String, Object> map = new LinkedHashMap<>();
map.put("用户ID", user.getId());
map.put("用户名", user.getUsername());
// map.put("角色", user.getRoleId());
map.put("角色", user.getRoleId());
map.put("邮箱", user.getEmail());
map.put("状态", user.getEnabled() ? "启用" : "禁用");
// map.put("语言",user.getLanguage());
map.put("创建日期", user.getCreateDate());
map.put("语言", user.getLanguage());
map.put("创建日期", DateUtil.toDateTimeString(user.getCreateDate()));
map.put("启用码", "");
list.add(map);
}
......
支持 Markdown 格式
你添加了 0 到此讨论。请谨慎行事。
Finish editing this message first!