From e775de19bfb598f6a23c6bb47d6254df46c7d3ba Mon Sep 17 00:00:00 2001 From: dqjdda <201507802@qq.com> Date: Thu, 22 Aug 2019 20:15:28 +0800 Subject: [PATCH 01/14] =?UTF-8?q?=E4=BB=A3=E7=A0=81=E7=94=9F=E6=88=90?= =?UTF-8?q?=E5=99=A8=E4=BC=98=E5=8C=96=EF=BC=8C=E9=85=8D=E7=BD=AE=E6=9B=B4?= =?UTF-8?q?=E6=96=B9=E4=BE=BF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/GenConfigServiceImpl.java | 18 ++++++++++++++++++ .../main/resources/config/application-dev.yml | 4 ++-- 2 files changed, 20 insertions(+), 2 deletions(-) diff --git a/eladmin-generator/src/main/java/me/zhengjie/service/impl/GenConfigServiceImpl.java b/eladmin-generator/src/main/java/me/zhengjie/service/impl/GenConfigServiceImpl.java index ec53052e..165cd5a1 100644 --- a/eladmin-generator/src/main/java/me/zhengjie/service/impl/GenConfigServiceImpl.java +++ b/eladmin-generator/src/main/java/me/zhengjie/service/impl/GenConfigServiceImpl.java @@ -5,6 +5,8 @@ import me.zhengjie.repository.GenConfigRepository; import me.zhengjie.service.GenConfigService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; + +import java.io.File; import java.util.Optional; /** @@ -30,6 +32,22 @@ public class GenConfigServiceImpl implements GenConfigService { @Override public GenConfig update(GenConfig genConfig) { genConfig.setId(1L); + // 自动设置Api路径,注释掉前需要同步取消前端的注释 + String separator = File.separator; + String[] paths = null; + if (separator.equals("\\")) { + paths = genConfig.getPath().split("\\\\"); + } else paths = genConfig.getPath().split(File.separator); + StringBuffer api = new StringBuffer(); + for (int i = 0; i < paths.length; i++) { + api.append(paths[i]); + api.append(separator); + if(paths[i].equals("src")){ + api.append("api"); + break; + } + } + genConfig.setApiPath(api.toString()); return genConfigRepository.save(genConfig); } } diff --git a/eladmin-system/src/main/resources/config/application-dev.yml b/eladmin-system/src/main/resources/config/application-dev.yml index 96eeef78..58489bb7 100644 --- a/eladmin-system/src/main/resources/config/application-dev.yml +++ b/eladmin-system/src/main/resources/config/application-dev.yml @@ -45,8 +45,8 @@ spring: jwt: header: Authorization secret: mySecret - # token 过期时间 2个小时 - expiration: 7200000 + # token 过期时间 6个小时 + expiration: 21000000 auth: # 授权路径 path: /login From e6146cb1c88b1c5eeb1601006a72ec4bc99ea7a0 Mon Sep 17 00:00:00 2001 From: dqjdda <201507802@qq.com> Date: Mon, 26 Aug 2019 17:34:03 +0800 Subject: [PATCH 02/14] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E5=90=8E=E7=AB=AF?= =?UTF-8?q?=E5=B8=A6=E6=9D=A1=E4=BB=B6=E5=AF=BC=E5=87=BA=E5=8A=9F=E8=83=BD?= =?UTF-8?q?=EF=BC=88=E7=A4=BA=E4=BE=8B=E8=A7=81=E7=94=A8=E6=88=B7=E7=AE=A1?= =?UTF-8?q?=E7=90=86=E6=8E=A7=E5=88=B6=E5=99=A8=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/me/zhengjie/utils/FileUtil.java | 35 +++++++++++++++++ .../modules/system/rest/RoleController.java | 1 - .../modules/system/rest/UserController.java | 8 ++++ .../modules/system/service/RoleService.java | 11 ++++++ .../modules/system/service/UserService.java | 8 ++++ .../system/service/impl/RoleServiceImpl.java | 8 ++++ .../system/service/impl/UserServiceImpl.java | 39 ++++++++++++++++++- eladmin-system/src/main/resources/logback.xml | 3 +- pom.xml | 5 +++ 9 files changed, 114 insertions(+), 4 deletions(-) diff --git a/eladmin-common/src/main/java/me/zhengjie/utils/FileUtil.java b/eladmin-common/src/main/java/me/zhengjie/utils/FileUtil.java index 5549b814..011b92bf 100644 --- a/eladmin-common/src/main/java/me/zhengjie/utils/FileUtil.java +++ b/eladmin-common/src/main/java/me/zhengjie/utils/FileUtil.java @@ -1,10 +1,17 @@ package me.zhengjie.utils; +import cn.hutool.core.io.IoUtil; import cn.hutool.core.util.IdUtil; +import cn.hutool.poi.excel.ExcelUtil; +import cn.hutool.poi.excel.ExcelWriter; import org.springframework.web.multipart.MultipartFile; +import javax.servlet.ServletOutputStream; +import javax.servlet.http.HttpServletResponse; import java.io.*; import java.text.DecimalFormat; +import java.util.List; +import java.util.Map; /** * File工具类,扩展 hutool 工具包 @@ -139,4 +146,32 @@ public class FileUtil extends cn.hutool.core.io.FileUtil { ins.close(); return file; } + + /** + * 导出excel + * @param list + * @return + * @throws Exception + */ + public static void downloadExcel(List> list, HttpServletResponse response){ + // 通过工具类创建writer + ExcelWriter writer = ExcelUtil.getWriter(); + // 一次性写出内容,使用默认样式,强制输出标题 + writer.write(list, true); + //response为HttpServletResponse对象 + response.setContentType("application/vnd.ms-excel;charset=utf-8"); + //test.xls是弹出下载对话框的文件名,不能为中文,中文请自行编码 + response.setHeader("Content-Disposition","attachment;filename=file.xls"); + ServletOutputStream out= null; + try { + out = response.getOutputStream(); + } catch (IOException e) { + e.printStackTrace(); + } + writer.flush(out, true); + // 关闭writer,释放内存 + writer.close(); + //此处记得关闭输出Servlet流 + IoUtil.close(out); + } } diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/rest/RoleController.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/rest/RoleController.java index ce28bca3..66ef07db 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/rest/RoleController.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/rest/RoleController.java @@ -5,7 +5,6 @@ import me.zhengjie.aop.log.Log; import me.zhengjie.modules.system.domain.Role; import me.zhengjie.exception.BadRequestException; import me.zhengjie.modules.system.service.RoleService; -import me.zhengjie.modules.system.service.dto.MenuQueryCriteria; import me.zhengjie.modules.system.service.dto.RoleQueryCriteria; import me.zhengjie.modules.system.service.dto.RoleSmallDTO; import me.zhengjie.utils.SecurityUtils; diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/rest/UserController.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/rest/UserController.java index d5634e48..9e4b8d44 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/rest/UserController.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/rest/UserController.java @@ -26,6 +26,7 @@ import org.springframework.util.ObjectUtils; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; +import javax.servlet.http.HttpServletResponse; import java.util.*; import java.util.stream.Collectors; @@ -55,6 +56,13 @@ public class UserController { @Autowired private VerificationCodeService verificationCodeService; + @Log("导出用户数据") + @GetMapping(value = "/users/download") + @PreAuthorize("hasAnyRole('ADMIN','USER_ALL','USER_SELECT')") + public void update(HttpServletResponse response, UserQueryCriteria criteria){ + userService.download(userService.queryAll(criteria), response); + } + @Log("查询用户") @GetMapping(value = "/users") @PreAuthorize("hasAnyRole('ADMIN','USER_ALL','USER_SELECT')") diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/RoleService.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/RoleService.java index eccb2459..d49870ef 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/RoleService.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/RoleService.java @@ -10,6 +10,7 @@ import org.springframework.cache.annotation.CacheEvict; import org.springframework.cache.annotation.Cacheable; import org.springframework.data.domain.Pageable; +import javax.servlet.http.HttpServletResponse; import java.util.List; import java.util.Set; @@ -86,6 +87,7 @@ public interface RoleService { * @param pageable * @return */ + @Cacheable(keyGenerator = "keyGenerator") Object queryAll(Pageable pageable); /** @@ -94,5 +96,14 @@ public interface RoleService { * @param criteria * @return */ + @Cacheable(keyGenerator = "keyGenerator") Object queryAll(RoleQueryCriteria criteria, Pageable pageable); + + /** + * queryAll + * @param criteria + * @return + */ + @Cacheable(keyGenerator = "keyGenerator") + List queryAll(RoleQueryCriteria criteria); } diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/UserService.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/UserService.java index 5fe40b5f..fd16c599 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/UserService.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/UserService.java @@ -9,6 +9,9 @@ import org.springframework.cache.annotation.CacheEvict; import org.springframework.cache.annotation.Cacheable; import org.springframework.data.domain.Pageable; +import javax.servlet.http.HttpServletResponse; +import java.util.List; + /** * @author Zheng Jie * @date 2018-11-23 @@ -80,4 +83,9 @@ public interface UserService { @Cacheable(keyGenerator = "keyGenerator") Object queryAll(UserQueryCriteria criteria, Pageable pageable); + + @Cacheable(keyGenerator = "keyGenerator") + List queryAll(UserQueryCriteria criteria); + + void download(List queryAll, HttpServletResponse response); } diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/RoleServiceImpl.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/RoleServiceImpl.java index cc68febb..fdae7833 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/RoleServiceImpl.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/RoleServiceImpl.java @@ -10,6 +10,7 @@ import me.zhengjie.modules.system.service.dto.RoleQueryCriteria; import me.zhengjie.modules.system.service.dto.RoleSmallDTO; import me.zhengjie.modules.system.service.mapper.RoleMapper; import me.zhengjie.modules.system.service.mapper.RoleSmallMapper; +import me.zhengjie.utils.FileUtil; import me.zhengjie.utils.PageUtil; import me.zhengjie.utils.QueryHelp; import me.zhengjie.utils.ValidationUtil; @@ -19,6 +20,8 @@ import org.springframework.data.domain.Pageable; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Propagation; import org.springframework.transaction.annotation.Transactional; + +import javax.servlet.http.HttpServletResponse; import java.util.*; import java.util.stream.Collectors; @@ -44,6 +47,11 @@ public class RoleServiceImpl implements RoleService { return roleMapper.toDto(roleRepository.findAll(pageable).getContent()); } + @Override + public List queryAll(RoleQueryCriteria criteria) { + return roleMapper.toDto(roleRepository.findAll((root, criteriaQuery, criteriaBuilder) -> QueryHelp.getPredicate(root,criteria,criteriaBuilder))); + } + @Override public Object queryAll(RoleQueryCriteria criteria, Pageable pageable) { Page page = roleRepository.findAll((root, criteriaQuery, criteriaBuilder) -> QueryHelp.getPredicate(root,criteria,criteriaBuilder),pageable); diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/UserServiceImpl.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/UserServiceImpl.java index 8a951b38..eeb40847 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/UserServiceImpl.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/UserServiceImpl.java @@ -1,14 +1,19 @@ package me.zhengjie.modules.system.service.impl; +import cn.hutool.core.io.IoUtil; +import cn.hutool.poi.excel.ExcelUtil; +import cn.hutool.poi.excel.ExcelWriter; import me.zhengjie.modules.monitor.service.RedisService; import me.zhengjie.modules.system.domain.User; import me.zhengjie.exception.EntityExistException; import me.zhengjie.exception.EntityNotFoundException; import me.zhengjie.modules.system.repository.UserRepository; import me.zhengjie.modules.system.service.UserService; +import me.zhengjie.modules.system.service.dto.RoleSmallDTO; import me.zhengjie.modules.system.service.dto.UserDTO; import me.zhengjie.modules.system.service.dto.UserQueryCriteria; import me.zhengjie.modules.system.service.mapper.UserMapper; +import me.zhengjie.utils.FileUtil; import me.zhengjie.utils.PageUtil; import me.zhengjie.utils.QueryHelp; import me.zhengjie.utils.ValidationUtil; @@ -18,8 +23,11 @@ import org.springframework.data.domain.Pageable; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Propagation; import org.springframework.transaction.annotation.Transactional; -import java.util.Date; -import java.util.Optional; +import javax.servlet.ServletOutputStream; +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.util.*; +import java.util.stream.Collectors; /** * @author Zheng Jie @@ -44,6 +52,12 @@ public class UserServiceImpl implements UserService { return PageUtil.toPage(page.map(userMapper::toDto)); } + @Override + public List queryAll(UserQueryCriteria criteria) { + List users = userRepository.findAll((root, criteriaQuery, criteriaBuilder) -> QueryHelp.getPredicate(root,criteria,criteriaBuilder)); + return userMapper.toDto(users); + } + @Override public UserDTO findById(long id) { Optional user = userRepository.findById(id); @@ -144,4 +158,25 @@ public class UserServiceImpl implements UserService { public void updateEmail(String username, String email) { userRepository.updateEmail(username,email); } + + @Override + public void download(List queryAll, HttpServletResponse response) { + List> list = new ArrayList<>(); + for (UserDTO userDTO : queryAll) { + List roles = userDTO.getRoles().stream().map(RoleSmallDTO::getName).collect(Collectors.toList()); + Map map = new LinkedHashMap(); + map.put("用户名", userDTO.getUsername()); + map.put("头像", userDTO.getAvatar()); + map.put("邮箱", userDTO.getEmail()); + map.put("状态", userDTO.getEnabled() ? "启用" : "禁用"); + map.put("手机号码", userDTO.getPhone()); + map.put("角色", roles); + map.put("部门", userDTO.getDept().getName()); + map.put("岗位", userDTO.getJob().getName()); + map.put("最后修改密码的时间", userDTO.getLastPasswordResetTime()); + map.put("创建日期", userDTO.getCreateTime()); + list.add(map); + } + FileUtil.downloadExcel(list, response); + } } diff --git a/eladmin-system/src/main/resources/logback.xml b/eladmin-system/src/main/resources/logback.xml index 5d7e59d8..ec1ccfa3 100644 --- a/eladmin-system/src/main/resources/logback.xml +++ b/eladmin-system/src/main/resources/logback.xml @@ -24,7 +24,8 @@ - + + diff --git a/pom.xml b/pom.xml index 0127ac16..c80bbf20 100644 --- a/pom.xml +++ b/pom.xml @@ -155,6 +155,11 @@ ip2region 1.7.2 + + org.apache.poi + poi + 3.17 + From 8fc04d4af4b80d9b1ed13141f8600234ba37f38b Mon Sep 17 00:00:00 2001 From: dqjdda <201507802@qq.com> Date: Tue, 27 Aug 2019 14:16:37 +0800 Subject: [PATCH 03/14] =?UTF-8?q?=E8=8F=9C=E5=8D=95=E7=AE=A1=E7=90=86?= =?UTF-8?q?=E5=8A=9F=E8=83=BD=E5=8A=A0=E5=BC=BA=EF=BC=8C=E6=96=B0=E5=A2=9E?= =?UTF-8?q?=E5=8A=9F=E8=83=BD=E9=A1=B9=EF=BC=9A=E6=98=AF=E5=90=A6=E9=9A=90?= =?UTF-8?q?=E8=97=8F=E8=8F=9C=E5=8D=95=EF=BC=88=E6=9F=90=E4=BA=9B=E9=A1=B5?= =?UTF-8?q?=E9=9D=A2=E4=B8=8D=E9=9C=80=E8=A6=81=E6=98=BE=E7=A4=BA=E5=9C=A8?= =?UTF-8?q?=E5=B7=A6=E4=BE=A7=E8=8F=9C=E5=8D=95=E6=A0=8F=E4=B8=AD=EF=BC=89?= =?UTF-8?q?=EF=BC=8C=E6=98=AF=E5=90=A6=E7=BC=93=E5=AD=98=E8=8F=9C=E5=8D=95?= =?UTF-8?q?=EF=BC=88=E5=8F=AF=E8=A7=A3=E5=86=B3=E5=88=87=E6=8D=A2Tab?= =?UTF-8?q?=E9=87=8D=E6=96=B0=E6=B8=B2=E6=9F=93=E7=9A=84=E9=97=AE=E9=A2=98?= =?UTF-8?q?=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/me/zhengjie/modules/system/domain/Menu.java | 7 +++++++ .../me/zhengjie/modules/system/domain/vo/MenuMetaVo.java | 2 ++ .../java/me/zhengjie/modules/system/domain/vo/MenuVo.java | 2 ++ .../me/zhengjie/modules/system/service/dto/MenuDTO.java | 4 ++++ .../modules/system/service/impl/MenuServiceImpl.java | 5 ++++- 5 files changed, 19 insertions(+), 1 deletion(-) diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/domain/Menu.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/domain/Menu.java index b9f684f0..bd47c433 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/domain/Menu.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/domain/Menu.java @@ -34,6 +34,7 @@ public class Menu implements Serializable { @NotNull private Long sort; + @NotBlank @Column(name = "path") private String path; @@ -41,6 +42,12 @@ public class Menu implements Serializable { private String icon; + @Column(columnDefinition = "bit(1) default 0") + private Boolean cache; + + @Column(columnDefinition = "bit(1) default 0") + private Boolean hidden; + /** * 上级菜单ID */ diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/domain/vo/MenuMetaVo.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/domain/vo/MenuMetaVo.java index d6fc9ddd..00856fb1 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/domain/vo/MenuMetaVo.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/domain/vo/MenuMetaVo.java @@ -15,4 +15,6 @@ public class MenuMetaVo implements Serializable { private String title; private String icon; + + private Boolean noCache; } diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/domain/vo/MenuVo.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/domain/vo/MenuVo.java index ea0610ba..c511c3db 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/domain/vo/MenuVo.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/domain/vo/MenuVo.java @@ -19,6 +19,8 @@ public class MenuVo implements Serializable { private String path; + private Boolean hidden; + private String redirect; private String component; diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/MenuDTO.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/MenuDTO.java index 9dd8bd61..d5f1d014 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/MenuDTO.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/MenuDTO.java @@ -27,6 +27,10 @@ public class MenuDTO { private Boolean iFrame; + private Boolean cache; + + private Boolean hidden; + private String icon; private List children; diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/MenuServiceImpl.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/MenuServiceImpl.java index 7d081559..f8ac5026 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/MenuServiceImpl.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/MenuServiceImpl.java @@ -92,6 +92,8 @@ public class MenuServiceImpl implements MenuService { menu.setIFrame(resources.getIFrame()); menu.setPid(resources.getPid()); menu.setSort(resources.getSort()); + menu.setCache(resources.getCache()); + menu.setHidden(resources.getHidden()); menuRepository.save(menu); } @@ -158,6 +160,7 @@ public class MenuServiceImpl implements MenuService { MenuVo menuVo = new MenuVo(); menuVo.setName(menuDTO.getName()); menuVo.setPath(menuDTO.getPath()); + menuVo.setHidden(menuDTO.getHidden()); // 如果不是外链 if(!menuDTO.getIFrame()){ @@ -169,7 +172,7 @@ public class MenuServiceImpl implements MenuService { menuVo.setComponent(menuDTO.getComponent()); } } - menuVo.setMeta(new MenuMetaVo(menuDTO.getName(),menuDTO.getIcon())); + menuVo.setMeta(new MenuMetaVo(menuDTO.getName(),menuDTO.getIcon(),!menuDTO.getCache())); if(menuDTOList!=null && menuDTOList.size()!=0){ menuVo.setAlwaysShow(true); menuVo.setRedirect("noredirect"); From d6888471cd16be353866246ec039d7f571e5b90b Mon Sep 17 00:00:00 2001 From: dqjdda <201507802@qq.com> Date: Tue, 27 Aug 2019 15:58:18 +0800 Subject: [PATCH 04/14] =?UTF-8?q?=E8=8F=9C=E5=8D=95=E7=AE=A1=E7=90=86?= =?UTF-8?q?=E5=8A=9F=E8=83=BD=E5=8A=A0=E5=BC=BA=EF=BC=8C=E6=96=B0=E5=A2=9E?= =?UTF-8?q?=E5=8A=9F=E8=83=BD=E9=A1=B9=EF=BC=9A=E6=98=AF=E5=90=A6=E9=9A=90?= =?UTF-8?q?=E8=97=8F=E8=8F=9C=E5=8D=95=EF=BC=88=E6=9F=90=E4=BA=9B=E9=A1=B5?= =?UTF-8?q?=E9=9D=A2=E4=B8=8D=E9=9C=80=E8=A6=81=E6=98=BE=E7=A4=BA=E5=9C=A8?= =?UTF-8?q?=E5=B7=A6=E4=BE=A7=E8=8F=9C=E5=8D=95=E6=A0=8F=E4=B8=AD=EF=BC=89?= =?UTF-8?q?=EF=BC=8C=E6=98=AF=E5=90=A6=E7=BC=93=E5=AD=98=E8=8F=9C=E5=8D=95?= =?UTF-8?q?=EF=BC=88=E5=8F=AF=E8=A7=A3=E5=86=B3=E5=88=87=E6=8D=A2Tab?= =?UTF-8?q?=E9=87=8D=E6=96=B0=E6=B8=B2=E6=9F=93=E7=9A=84=E9=97=AE=E9=A2=98?= =?UTF-8?q?=EF=BC=8C=E4=BD=BF=E7=94=A8=E8=AF=A5=E5=8A=9F=E8=83=BD=E5=BF=85?= =?UTF-8?q?=E9=A1=BB=E5=A1=AB=E5=86=99=E7=BB=84=E4=BB=B6=E5=90=8D=E7=A7=B0?= =?UTF-8?q?=EF=BC=8C=E4=B8=94=E5=BF=85=E9=A1=BB=E4=B8=8E=E7=BB=84=E4=BB=B6?= =?UTF-8?q?=E4=B8=AD=E7=9A=84name=E4=B8=80=E8=87=B4=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../zhengjie/modules/system/domain/Menu.java | 3 +++ .../system/repository/MenuRepository.java | 7 +++++++ .../modules/system/service/dto/MenuDTO.java | 2 ++ .../system/service/impl/MenuServiceImpl.java | 18 +++++++++++++++++- 4 files changed, 29 insertions(+), 1 deletion(-) diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/domain/Menu.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/domain/Menu.java index bd47c433..16846e57 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/domain/Menu.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/domain/Menu.java @@ -40,6 +40,9 @@ public class Menu implements Serializable { private String component; + @Column(unique = true) + private String componentName; + private String icon; @Column(columnDefinition = "bit(1) default 0") diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/repository/MenuRepository.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/repository/MenuRepository.java index 220ca061..91c6d798 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/repository/MenuRepository.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/repository/MenuRepository.java @@ -23,6 +23,13 @@ public interface MenuRepository extends JpaRepository, JpaSpecificat */ Menu findByName(String name); + /** + * findByName + * @param name + * @return + */ + Menu findByComponentName(String name); + /** * findByPid * @param pid diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/MenuDTO.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/MenuDTO.java index d5f1d014..3b9aaae6 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/MenuDTO.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/MenuDTO.java @@ -31,6 +31,8 @@ public class MenuDTO { private Boolean hidden; + private String componentName; + private String icon; private List children; diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/MenuServiceImpl.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/MenuServiceImpl.java index f8ac5026..f997d5a9 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/MenuServiceImpl.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/MenuServiceImpl.java @@ -1,5 +1,7 @@ package me.zhengjie.modules.system.service.impl; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.RandomUtil; import cn.hutool.core.util.StrUtil; import me.zhengjie.modules.system.domain.Menu; import me.zhengjie.modules.system.domain.vo.MenuMetaVo; @@ -13,6 +15,7 @@ import me.zhengjie.modules.system.service.dto.MenuQueryCriteria; import me.zhengjie.modules.system.service.dto.RoleSmallDTO; import me.zhengjie.modules.system.service.mapper.MenuMapper; import me.zhengjie.utils.QueryHelp; +import me.zhengjie.utils.StringUtils; import me.zhengjie.utils.ValidationUtil; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -58,6 +61,11 @@ public class MenuServiceImpl implements MenuService { if(menuRepository.findByName(resources.getName()) != null){ throw new EntityExistException(Menu.class,"name",resources.getName()); } + if(StringUtils.isNotBlank(resources.getComponentName())){ + if(menuRepository.findByComponentName(resources.getComponentName()) != null){ + throw new EntityExistException(Menu.class,"componentName",resources.getComponentName()); + } + } if(resources.getIFrame()){ if (!(resources.getPath().toLowerCase().startsWith("http://")||resources.getPath().toLowerCase().startsWith("https://"))) { throw new BadRequestException("外链必须以http://或者https://开头"); @@ -85,6 +93,13 @@ public class MenuServiceImpl implements MenuService { if(menu1 != null && !menu1.getId().equals(menu.getId())){ throw new EntityExistException(Menu.class,"name",resources.getName()); } + + if(StringUtils.isNotBlank(resources.getComponentName())){ + menu1 = menuRepository.findByComponentName(resources.getComponentName()); + if(menu1 != null && !menu1.getId().equals(menu.getId())){ + throw new EntityExistException(Menu.class,"componentName",resources.getComponentName()); + } + } menu.setName(resources.getName()); menu.setComponent(resources.getComponent()); menu.setPath(resources.getPath()); @@ -94,6 +109,7 @@ public class MenuServiceImpl implements MenuService { menu.setSort(resources.getSort()); menu.setCache(resources.getCache()); menu.setHidden(resources.getHidden()); + menu.setComponentName(resources.getComponentName()); menuRepository.save(menu); } @@ -158,7 +174,7 @@ public class MenuServiceImpl implements MenuService { if (menuDTO!=null){ List menuDTOList = menuDTO.getChildren(); MenuVo menuVo = new MenuVo(); - menuVo.setName(menuDTO.getName()); + menuVo.setName(ObjectUtil.isNotEmpty(menuDTO.getComponentName()) ? menuDTO.getComponentName() : RandomUtil.randomString(5)); menuVo.setPath(menuDTO.getPath()); menuVo.setHidden(menuDTO.getHidden()); From 2371fab0656846ce3a9158c6834f416a8ee72268 Mon Sep 17 00:00:00 2001 From: dqjdda <201507802@qq.com> Date: Tue, 27 Aug 2019 16:01:37 +0800 Subject: [PATCH 05/14] =?UTF-8?q?=E6=9B=B4=E6=96=B0sql=E6=96=87=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- sql/eladmin.sql | 841 ++++++++++++++++++++++++------------------------ 1 file changed, 423 insertions(+), 418 deletions(-) diff --git a/sql/eladmin.sql b/sql/eladmin.sql index 2aa9b3a1..fb7a4a39 100644 --- a/sql/eladmin.sql +++ b/sql/eladmin.sql @@ -1,642 +1,647 @@ /* -Navicat MySQL Data Transfer + Navicat Premium Data Transfer -Source Server : localhost -Source Server Version : 50562 -Source Host : localhost:3306 -Source Database : eladmin + Source Server : 本地 + Source Server Type : MySQL + Source Server Version : 50562 + Source Host : localhost:3306 + Source Schema : eladmin -Target Server Type : MYSQL -Target Server Version : 50562 -File Encoding : 65001 + Target Server Type : MySQL + Target Server Version : 50562 + File Encoding : 65001 -Date: 2019-06-05 11:13:41 + Date: 27/08/2019 15:46:59 */ -SET FOREIGN_KEY_CHECKS=0; +SET NAMES utf8mb4; +SET FOREIGN_KEY_CHECKS = 0; -- ---------------------------- -- Table structure for alipay_config -- ---------------------------- DROP TABLE IF EXISTS `alipay_config`; -CREATE TABLE `alipay_config` ( +CREATE TABLE `alipay_config` ( `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键', - `app_id` varchar(255) DEFAULT NULL COMMENT '应用ID', - `charset` varchar(255) DEFAULT NULL COMMENT '编码', - `format` varchar(255) DEFAULT NULL COMMENT '类型 固定格式json', - `gateway_url` varchar(255) DEFAULT NULL COMMENT '网关地址', - `notify_url` varchar(255) DEFAULT NULL COMMENT '异步回调', - `private_key` text COMMENT '私钥', - `public_key` text COMMENT '公钥', - `return_url` varchar(255) DEFAULT NULL COMMENT '回调地址', - `sign_type` varchar(255) DEFAULT NULL COMMENT '签名方式', - `sys_service_provider_id` varchar(255) DEFAULT NULL COMMENT '商户号', + `app_id` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '应用ID', + `charset` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '编码', + `format` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '类型 固定格式json', + `gateway_url` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '网关地址', + `notify_url` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '异步回调', + `private_key` text CHARACTER SET utf8 COLLATE utf8_general_ci NULL COMMENT '私钥', + `public_key` text CHARACTER SET utf8 COLLATE utf8_general_ci NULL COMMENT '公钥', + `return_url` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '回调地址', + `sign_type` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '签名方式', + `sys_service_provider_id` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '商户号', PRIMARY KEY (`id`) USING BTREE -) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8; +) ENGINE = InnoDB AUTO_INCREMENT = 2 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Compact; + +-- ---------------------------- +-- Records of alipay_config +-- ---------------------------- +INSERT INTO `alipay_config` VALUES (1, '2016091700532697', 'utf-8', 'JSON', 'https://openapi.alipaydev.com/gateway.do', 'http://api.auauz.net/api/aliPay/notify', 'MIIEvAIBADANBgkqhkiG9w0BAQEFAASCBKYwggSiAgEAAoIBAQC5js8sInU10AJ0cAQ8UMMyXrQ+oHZEkVt5lBwsStmTJ7YikVYgbskx1YYEXTojRsWCb+SH/kDmDU4pK/u91SJ4KFCRMF2411piYuXU/jF96zKrADznYh/zAraqT6hvAIVtQAlMHN53nx16rLzZ/8jDEkaSwT7+HvHiS+7sxSojnu/3oV7BtgISoUNstmSe8WpWHOaWv19xyS+Mce9MY4BfseFhzTICUymUQdd/8hXA28/H6osUfAgsnxAKv7Wil3aJSgaJczWuflYOve0dJ3InZkhw5Cvr0atwpk8YKBQjy5CdkoHqvkOcIB+cYHXJKzOE5tqU7inSwVbHzOLQ3XbnAgMBAAECggEAVJp5eT0Ixg1eYSqFs9568WdetUNCSUchNxDBu6wxAbhUgfRUGZuJnnAll63OCTGGck+EGkFh48JjRcBpGoeoHLL88QXlZZbC/iLrea6gcDIhuvfzzOffe1RcZtDFEj9hlotg8dQj1tS0gy9pN9g4+EBH7zeu+fyv+qb2e/v1l6FkISXUjpkD7RLQr3ykjiiEw9BpeKb7j5s7Kdx1NNIzhkcQKNqlk8JrTGDNInbDM6inZfwwIO2R1DHinwdfKWkvOTODTYa2MoAvVMFT9Bec9FbLpoWp7ogv1JMV9svgrcF9XLzANZ/OQvkbe9TV9GWYvIbxN6qwQioKCWO4GPnCAQKBgQDgW5MgfhX8yjXqoaUy/d1VjI8dHeIyw8d+OBAYwaxRSlCfyQ+tieWcR2HdTzPca0T0GkWcKZm0ei5xRURgxt4DUDLXNh26HG0qObbtLJdu/AuBUuCqgOiLqJ2f1uIbrz6OZUHns+bT/jGW2Ws8+C13zTCZkZt9CaQsrp3QOGDx5wKBgQDTul39hp3ZPwGNFeZdkGoUoViOSd5Lhowd5wYMGAEXWRLlU8z+smT5v0POz9JnIbCRchIY2FAPKRdVTICzmPk2EPJFxYTcwaNbVqL6lN7J2IlXXMiit5QbiLauo55w7plwV6LQmKm9KV7JsZs5XwqF7CEovI7GevFzyD3w+uizAQKBgC3LY1eRhOlpWOIAhpjG6qOoohmeXOphvdmMlfSHq6WYFqbWwmV4rS5d/6LNpNdL6fItXqIGd8I34jzql49taCmi+A2nlR/E559j0mvM20gjGDIYeZUz5MOE8k+K6/IcrhcgofgqZ2ZED1ksHdB/E8DNWCswZl16V1FrfvjeWSNnAoGAMrBplCrIW5xz+J0Hm9rZKrs+AkK5D4fUv8vxbK/KgxZ2KaUYbNm0xv39c+PZUYuFRCz1HDGdaSPDTE6WeWjkMQd5mS6ikl9hhpqFRkyh0d0fdGToO9yLftQKOGE/q3XUEktI1XvXF0xyPwNgUCnq0QkpHyGVZPtGFxwXiDvpvgECgYA5PoB+nY8iDiRaJNko9w0hL4AeKogwf+4TbCw+KWVEn6jhuJa4LFTdSqp89PktQaoVpwv92el/AhYjWOl/jVCm122f9b7GyoelbjMNolToDwe5pF5RnSpEuDdLy9MfE8LnE3PlbE7E5BipQ3UjSebkgNboLHH/lNZA5qvEtvbfvQ==', 'MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAut9evKRuHJ/2QNfDlLwvN/S8l9hRAgPbb0u61bm4AtzaTGsLeMtScetxTWJnVvAVpMS9luhEJjt+Sbk5TNLArsgzzwARgaTKOLMT1TvWAK5EbHyI+eSrc3s7Awe1VYGwcubRFWDm16eQLv0k7iqiw+4mweHSz/wWyvBJVgwLoQ02btVtAQErCfSJCOmt0Q/oJQjj08YNRV4EKzB19+f5A+HQVAKy72dSybTzAK+3FPtTtNen/+b5wGeat7c32dhYHnGorPkPeXLtsqqUTp1su5fMfd4lElNdZaoCI7osZxWWUo17vBCZnyeXc9fk0qwD9mK6yRAxNbrY72Xx5VqIqwIDAQAB', 'http://api.auauz.net/api/aliPay/return', 'RSA2', '2088102176044281'); -- ---------------------------- -- Table structure for dept -- ---------------------------- DROP TABLE IF EXISTS `dept`; -CREATE TABLE `dept` ( +CREATE TABLE `dept` ( `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'ID', - `name` varchar(255) NOT NULL COMMENT '名称', + `name` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '名称', `pid` bigint(20) NOT NULL COMMENT '上级部门', - `create_time` datetime DEFAULT NULL, + `create_time` datetime NULL DEFAULT NULL, `enabled` bit(1) NOT NULL, - PRIMARY KEY (`id`) -) ENGINE=InnoDB AUTO_INCREMENT=13 DEFAULT CHARSET=utf8; + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB AUTO_INCREMENT = 13 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Compact; -- ---------------------------- -- Records of dept -- ---------------------------- -INSERT INTO `dept` VALUES ('1', 'eladmin', '0', '2019-03-25 09:14:05', ''); -INSERT INTO `dept` VALUES ('2', '研发部', '7', '2019-03-25 09:15:32', ''); -INSERT INTO `dept` VALUES ('5', '运维部', '7', '2019-03-25 09:20:44', ''); -INSERT INTO `dept` VALUES ('6', '测试部', '8', '2019-03-25 09:52:18', ''); -INSERT INTO `dept` VALUES ('7', '华南分部', '1', '2019-03-25 11:04:50', ''); -INSERT INTO `dept` VALUES ('8', '华北分部', '1', '2019-03-25 11:04:53', ''); -INSERT INTO `dept` VALUES ('9', '财务部', '7', '2019-03-25 11:05:34', ''); -INSERT INTO `dept` VALUES ('10', '行政部', '8', '2019-03-25 11:05:58', ''); -INSERT INTO `dept` VALUES ('11', '人事部', '8', '2019-03-25 11:07:58', ''); -INSERT INTO `dept` VALUES ('12', '市场部', '7', '2019-03-25 11:10:24', '\0'); +INSERT INTO `dept` VALUES (1, 'eladmin', 0, '2019-03-25 09:14:05', b'1'); +INSERT INTO `dept` VALUES (2, '研发部', 7, '2019-03-25 09:15:32', b'1'); +INSERT INTO `dept` VALUES (5, '运维部', 7, '2019-03-25 09:20:44', b'1'); +INSERT INTO `dept` VALUES (6, '测试部', 8, '2019-03-25 09:52:18', b'1'); +INSERT INTO `dept` VALUES (7, '华南分部', 1, '2019-03-25 11:04:50', b'1'); +INSERT INTO `dept` VALUES (8, '华北分部', 1, '2019-03-25 11:04:53', b'1'); +INSERT INTO `dept` VALUES (9, '财务部', 7, '2019-03-25 11:05:34', b'1'); +INSERT INTO `dept` VALUES (10, '行政部', 8, '2019-03-25 11:05:58', b'1'); +INSERT INTO `dept` VALUES (11, '人事部', 8, '2019-03-25 11:07:58', b'1'); +INSERT INTO `dept` VALUES (12, '市场部', 7, '2019-03-25 11:10:24', b'0'); -- ---------------------------- -- Table structure for dict -- ---------------------------- DROP TABLE IF EXISTS `dict`; -CREATE TABLE `dict` ( +CREATE TABLE `dict` ( `id` bigint(11) NOT NULL AUTO_INCREMENT, - `name` varchar(255) NOT NULL COMMENT '字典名称', - `remark` varchar(255) DEFAULT NULL COMMENT '描述', - PRIMARY KEY (`id`) -) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8; + `name` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '字典名称', + `remark` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '描述', + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB AUTO_INCREMENT = 6 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Compact; -- ---------------------------- -- Records of dict -- ---------------------------- -INSERT INTO `dict` VALUES ('1', 'user_status', '用户状态'); -INSERT INTO `dict` VALUES ('4', 'dept_status', '部门状态'); -INSERT INTO `dict` VALUES ('5', 'job_status', '岗位状态'); +INSERT INTO `dict` VALUES (1, 'user_status', '用户状态'); +INSERT INTO `dict` VALUES (4, 'dept_status', '部门状态'); +INSERT INTO `dict` VALUES (5, 'job_status', '岗位状态'); -- ---------------------------- -- Table structure for dict_detail -- ---------------------------- DROP TABLE IF EXISTS `dict_detail`; -CREATE TABLE `dict_detail` ( +CREATE TABLE `dict_detail` ( `id` bigint(11) NOT NULL AUTO_INCREMENT, - `label` varchar(255) NOT NULL COMMENT '字典标签', - `value` varchar(255) NOT NULL COMMENT '字典值', - `sort` varchar(255) DEFAULT NULL COMMENT '排序', - `dict_id` bigint(11) DEFAULT NULL COMMENT '字典id', - PRIMARY KEY (`id`), - KEY `FK5tpkputc6d9nboxojdbgnpmyb` (`dict_id`), - CONSTRAINT `FK5tpkputc6d9nboxojdbgnpmyb` FOREIGN KEY (`dict_id`) REFERENCES `dict` (`id`) -) ENGINE=InnoDB AUTO_INCREMENT=15 DEFAULT CHARSET=utf8; + `label` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '字典标签', + `value` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '字典值', + `sort` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '排序', + `dict_id` bigint(11) NULL DEFAULT NULL COMMENT '字典id', + PRIMARY KEY (`id`) USING BTREE, + INDEX `FK5tpkputc6d9nboxojdbgnpmyb`(`dict_id`) USING BTREE, + CONSTRAINT `FK5tpkputc6d9nboxojdbgnpmyb` FOREIGN KEY (`dict_id`) REFERENCES `dict` (`id`) ON DELETE RESTRICT ON UPDATE RESTRICT +) ENGINE = InnoDB AUTO_INCREMENT = 15 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Compact; -- ---------------------------- -- Records of dict_detail -- ---------------------------- -INSERT INTO `dict_detail` VALUES ('1', '激活', 'true', '1', '1'); -INSERT INTO `dict_detail` VALUES ('2', '锁定', 'false', '2', '1'); -INSERT INTO `dict_detail` VALUES ('11', '正常', 'true', '1', '4'); -INSERT INTO `dict_detail` VALUES ('12', '停用', 'false', '2', '4'); -INSERT INTO `dict_detail` VALUES ('13', '正常', 'true', '1', '5'); -INSERT INTO `dict_detail` VALUES ('14', '停用', 'false', '2', '5'); +INSERT INTO `dict_detail` VALUES (1, '激活', 'true', '1', 1); +INSERT INTO `dict_detail` VALUES (2, '锁定', 'false', '2', 1); +INSERT INTO `dict_detail` VALUES (11, '正常', 'true', '1', 4); +INSERT INTO `dict_detail` VALUES (12, '停用', 'false', '2', 4); +INSERT INTO `dict_detail` VALUES (13, '正常', 'true', '1', 5); +INSERT INTO `dict_detail` VALUES (14, '停用', 'false', '2', 5); -- ---------------------------- -- Table structure for email_config -- ---------------------------- DROP TABLE IF EXISTS `email_config`; -CREATE TABLE `email_config` ( +CREATE TABLE `email_config` ( `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'ID', - `from_user` varchar(255) DEFAULT NULL COMMENT '收件人', - `host` varchar(255) DEFAULT NULL COMMENT '邮件服务器SMTP地址', - `pass` varchar(255) DEFAULT NULL COMMENT '密码', - `port` varchar(255) DEFAULT NULL COMMENT '端口', - `user` varchar(255) DEFAULT NULL COMMENT '发件者用户名', + `from_user` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '收件人', + `host` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '邮件服务器SMTP地址', + `pass` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '密码', + `port` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '端口', + `user` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '发件者用户名', PRIMARY KEY (`id`) USING BTREE -) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8; +) ENGINE = InnoDB AUTO_INCREMENT = 2 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Compact; -- ---------------------------- -- Table structure for gen_config -- ---------------------------- DROP TABLE IF EXISTS `gen_config`; -CREATE TABLE `gen_config` ( +CREATE TABLE `gen_config` ( `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'ID', - `author` varchar(255) DEFAULT NULL COMMENT '作者', - `cover` bit(1) DEFAULT NULL COMMENT '是否覆盖', - `module_name` varchar(255) DEFAULT NULL COMMENT '模块名称', - `pack` varchar(255) DEFAULT NULL COMMENT '至于哪个包下', - `path` varchar(255) DEFAULT NULL COMMENT '前端代码生成的路径', - `api_path` varchar(255) DEFAULT NULL, - `prefix` varchar(255) DEFAULT NULL, + `author` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '作者', + `cover` bit(1) NULL DEFAULT NULL COMMENT '是否覆盖', + `module_name` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '模块名称', + `pack` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '至于哪个包下', + `path` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '前端代码生成的路径', + `api_path` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, + `prefix` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, PRIMARY KEY (`id`) USING BTREE -) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8; +) ENGINE = InnoDB AUTO_INCREMENT = 2 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Compact; -- ---------------------------- -- Records of gen_config -- ---------------------------- -INSERT INTO `gen_config` VALUES ('1', 'jie', '\0', 'eladmin-system', 'me.zhengjie.modules.test', 'E:\\workspace\\me\\front\\eladmin-qt\\src\\views\\test', 'E:\\workspace\\me\\front\\eladmin-qt\\src\\api', null); +INSERT INTO `gen_config` VALUES (1, 'Zheng Jie', b'0', 'eladmin-system', 'me.zhengjie.modules.test', 'E:\\workspace\\me\\front\\eladmin-qt\\src\\views\\test', 'E:\\workspace\\me\\front\\eladmin-qt\\src\\api', NULL); -- ---------------------------- -- Table structure for job -- ---------------------------- DROP TABLE IF EXISTS `job`; -CREATE TABLE `job` ( +CREATE TABLE `job` ( `id` bigint(20) NOT NULL AUTO_INCREMENT, - `name` varchar(255) NOT NULL, + `name` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL, `enabled` bit(1) NOT NULL, - `create_time` datetime DEFAULT NULL, + `create_time` datetime NULL DEFAULT NULL, `sort` bigint(20) NOT NULL, - `dept_id` bigint(20) DEFAULT NULL, - PRIMARY KEY (`id`), - KEY `FKmvhj0rogastlctflsxf1d6k3i` (`dept_id`), - CONSTRAINT `FKmvhj0rogastlctflsxf1d6k3i` FOREIGN KEY (`dept_id`) REFERENCES `dept` (`id`) -) ENGINE=InnoDB AUTO_INCREMENT=20 DEFAULT CHARSET=utf8; + `dept_id` bigint(20) NULL DEFAULT NULL, + PRIMARY KEY (`id`) USING BTREE, + INDEX `FKmvhj0rogastlctflsxf1d6k3i`(`dept_id`) USING BTREE, + CONSTRAINT `FKmvhj0rogastlctflsxf1d6k3i` FOREIGN KEY (`dept_id`) REFERENCES `dept` (`id`) ON DELETE RESTRICT ON UPDATE RESTRICT +) ENGINE = InnoDB AUTO_INCREMENT = 24 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Compact; -- ---------------------------- -- Records of job -- ---------------------------- -INSERT INTO `job` VALUES ('2', '董事长秘书', '', '2019-03-29 14:01:30', '2', '1'); -INSERT INTO `job` VALUES ('8', '人事专员', '', '2019-03-29 14:52:28', '3', '11'); -INSERT INTO `job` VALUES ('10', '产品经理', '\0', '2019-03-29 14:55:51', '4', '2'); -INSERT INTO `job` VALUES ('11', '全栈开发', '', '2019-03-31 13:39:30', '6', '2'); -INSERT INTO `job` VALUES ('12', '软件测试', '', '2019-03-31 13:39:43', '5', '2'); -INSERT INTO `job` VALUES ('19', '董事长', '', '2019-03-31 14:58:15', '1', '1'); +INSERT INTO `job` VALUES (2, '董事长秘书', b'1', '2019-03-29 14:01:30', 2, 1); +INSERT INTO `job` VALUES (8, '人事专员', b'1', '2019-03-29 14:52:28', 3, 11); +INSERT INTO `job` VALUES (10, '产品经理', b'0', '2019-03-29 14:55:51', 4, 2); +INSERT INTO `job` VALUES (11, '全栈开发', b'1', '2019-03-31 13:39:30', 6, 2); +INSERT INTO `job` VALUES (12, '软件测试', b'1', '2019-03-31 13:39:43', 5, 2); +INSERT INTO `job` VALUES (19, '董事长', b'1', '2019-03-31 14:58:15', 1, 1); +INSERT INTO `job` VALUES (20, 'test', b'1', '2019-06-25 08:50:52', 999, 1); +INSERT INTO `job` VALUES (21, 'testtest', b'1', '2019-06-25 08:50:57', 999, 1); +INSERT INTO `job` VALUES (22, 'testtesttest', b'1', '2019-06-25 08:51:01', 999, 1); +INSERT INTO `job` VALUES (23, 'testtesttesttest', b'1', '2019-06-25 08:51:06', 999, 1); -- ---------------------------- -- Table structure for log -- ---------------------------- DROP TABLE IF EXISTS `log`; -CREATE TABLE `log` ( +CREATE TABLE `log` ( `id` bigint(20) NOT NULL AUTO_INCREMENT, - `create_time` datetime DEFAULT NULL, - `description` varchar(255) DEFAULT NULL, - `exception_detail` text, - `log_type` varchar(255) DEFAULT NULL, - `method` varchar(255) DEFAULT NULL, - `params` text, - `request_ip` varchar(255) DEFAULT NULL, - `time` bigint(20) DEFAULT NULL, - `username` varchar(255) DEFAULT NULL, - PRIMARY KEY (`id`) -) ENGINE=InnoDB AUTO_INCREMENT=10334 DEFAULT CHARSET=utf8; - --- ---------------------------- --- Records of log --- ---------------------------- + `create_time` datetime NULL DEFAULT NULL, + `description` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, + `exception_detail` text CHARACTER SET utf8 COLLATE utf8_general_ci NULL, + `log_type` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, + `method` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, + `params` text CHARACTER SET utf8 COLLATE utf8_general_ci NULL, + `request_ip` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, + `time` bigint(20) NULL DEFAULT NULL, + `username` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, + `address` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB AUTO_INCREMENT = 12921 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Compact; -- ---------------------------- -- Table structure for menu -- ---------------------------- DROP TABLE IF EXISTS `menu`; -CREATE TABLE `menu` ( +CREATE TABLE `menu` ( `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'ID', - `create_time` datetime DEFAULT NULL COMMENT '创建日期', - `i_frame` bit(1) DEFAULT NULL COMMENT '是否外链', - `name` varchar(255) DEFAULT NULL COMMENT '菜单名称', - `component` varchar(255) DEFAULT NULL COMMENT '组件', + `create_time` datetime NULL DEFAULT NULL COMMENT '创建日期', + `i_frame` bit(1) NULL DEFAULT NULL COMMENT '是否外链', + `name` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '菜单名称', + `component` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '组件', `pid` bigint(20) NOT NULL COMMENT '上级菜单ID', `sort` bigint(20) NOT NULL COMMENT '排序', - `icon` varchar(255) DEFAULT NULL COMMENT '图标', - `path` varchar(255) DEFAULT NULL COMMENT '链接地址', + `icon` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '图标', + `path` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '链接地址', + `cache` bit(1) NULL DEFAULT b'0', + `hidden` bit(1) NULL DEFAULT b'0', + `component_name` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '-', PRIMARY KEY (`id`) USING BTREE -) ENGINE=InnoDB AUTO_INCREMENT=41 DEFAULT CHARSET=utf8; +) ENGINE = InnoDB AUTO_INCREMENT = 41 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Compact; -- ---------------------------- -- Records of menu -- ---------------------------- -INSERT INTO `menu` VALUES ('1', '2018-12-18 15:11:29', '\0', '系统管理', null, '0', '1', 'system', 'system'); -INSERT INTO `menu` VALUES ('2', '2018-12-18 15:14:44', '\0', '用户管理', 'system/user/index', '1', '2', 'peoples', 'user'); -INSERT INTO `menu` VALUES ('3', '2018-12-18 15:16:07', '\0', '角色管理', 'system/role/index', '1', '3', 'role', 'role'); -INSERT INTO `menu` VALUES ('4', '2018-12-18 15:16:45', '\0', '权限管理', 'system/permission/index', '1', '4', 'permission', 'permission'); -INSERT INTO `menu` VALUES ('5', '2018-12-18 15:17:28', '\0', '菜单管理', 'system/menu/index', '1', '5', 'menu', 'menu'); -INSERT INTO `menu` VALUES ('6', '2018-12-18 15:17:48', '\0', '系统监控', null, '0', '10', 'monitor', 'monitor'); -INSERT INTO `menu` VALUES ('7', '2018-12-18 15:18:26', '\0', '操作日志', 'monitor/log/index', '6', '11', 'log', 'logs'); -INSERT INTO `menu` VALUES ('8', '2018-12-18 15:19:01', '\0', '系统缓存', 'monitor/redis/index', '6', '13', 'redis', 'redis'); -INSERT INTO `menu` VALUES ('9', '2018-12-18 15:19:34', '\0', 'SQL监控', 'monitor/sql/index', '6', '14', 'sqlMonitor', 'druid'); -INSERT INTO `menu` VALUES ('10', '2018-12-19 13:38:16', '\0', '组件管理', null, '0', '50', 'zujian', 'components'); -INSERT INTO `menu` VALUES ('11', '2018-12-19 13:38:49', '\0', '图标库', 'components/IconSelect', '10', '51', 'icon', 'icon'); -INSERT INTO `menu` VALUES ('14', '2018-12-27 10:13:09', '\0', '邮件工具', 'tools/email/index', '36', '24', 'email', 'email'); -INSERT INTO `menu` VALUES ('15', '2018-12-27 11:58:25', '\0', '富文本', 'components/Editor', '10', '52', 'fwb', 'tinymce'); -INSERT INTO `menu` VALUES ('16', '2018-12-28 09:36:53', '\0', '图床管理', 'tools/picture/index', '36', '25', 'image', 'pictures'); -INSERT INTO `menu` VALUES ('17', '2018-12-28 15:09:49', '', '项目地址', '', '0', '0', 'github', 'https://github.com/elunez/eladmin'); -INSERT INTO `menu` VALUES ('18', '2018-12-31 11:12:15', '\0', '七牛云存储', 'tools/qiniu/index', '36', '26', 'qiniu', 'qiniu'); -INSERT INTO `menu` VALUES ('19', '2018-12-31 14:52:38', '\0', '支付宝工具', 'tools/aliPay/index', '36', '27', 'alipay', 'aliPay'); -INSERT INTO `menu` VALUES ('21', '2019-01-04 16:22:03', '\0', '多级菜单', '', '0', '900', 'menu', 'nested'); -INSERT INTO `menu` VALUES ('22', '2019-01-04 16:23:29', '\0', '二级菜单1', 'nested/menu1/index', '21', '999', 'menu', 'menu1'); -INSERT INTO `menu` VALUES ('23', '2019-01-04 16:23:57', '\0', '二级菜单2', 'nested/menu2/index', '21', '999', 'menu', 'menu2'); -INSERT INTO `menu` VALUES ('24', '2019-01-04 16:24:48', '\0', '三级菜单1', 'nested/menu1/menu1-1', '22', '999', 'menu', 'menu1-1'); -INSERT INTO `menu` VALUES ('27', '2019-01-07 17:27:32', '\0', '三级菜单2', 'nested/menu1/menu1-2', '22', '999', 'menu', 'menu1-2'); -INSERT INTO `menu` VALUES ('28', '2019-01-07 20:34:40', '\0', '定时任务', 'system/timing/index', '36', '21', 'timing', 'timing'); -INSERT INTO `menu` VALUES ('30', '2019-01-11 15:45:55', '\0', '代码生成', 'generator/index', '36', '22', 'dev', 'generator'); -INSERT INTO `menu` VALUES ('32', '2019-01-13 13:49:03', '\0', '异常日志', 'monitor/log/errorLog', '6', '12', 'error', 'errorLog'); -INSERT INTO `menu` VALUES ('33', '2019-03-08 13:46:44', '\0', 'Markdown', 'components/MarkDown', '10', '53', 'markdown', 'markdown'); -INSERT INTO `menu` VALUES ('34', '2019-03-08 15:49:40', '\0', 'Yaml编辑器', 'components/YamlEdit', '10', '54', 'dev', 'yaml'); -INSERT INTO `menu` VALUES ('35', '2019-03-25 09:46:00', '\0', '部门管理', 'system/dept/index', '1', '6', 'dept', 'dept'); -INSERT INTO `menu` VALUES ('36', '2019-03-29 10:57:35', '\0', '系统工具', '', '0', '20', 'sys-tools', 'sys-tools'); -INSERT INTO `menu` VALUES ('37', '2019-03-29 13:51:18', '\0', '岗位管理', 'system/job/index', '1', '7', 'Steve-Jobs', 'job'); -INSERT INTO `menu` VALUES ('38', '2019-03-29 19:57:53', '\0', '接口文档', 'tools/swagger/index', '36', '23', 'swagger', 'swagger2'); -INSERT INTO `menu` VALUES ('39', '2019-04-10 11:49:04', '\0', '字典管理', 'system/dict/index', '1', '8', 'dictionary', 'dict'); +INSERT INTO `menu` VALUES (1, '2018-12-18 15:11:29', b'0', '系统管理', NULL, 0, 1, 'system', 'system', b'0', b'0', NULL); +INSERT INTO `menu` VALUES (2, '2018-12-18 15:14:44', b'0', '用户管理', 'system/user/index', 1, 2, 'peoples', 'user', b'0', b'0', 'User'); +INSERT INTO `menu` VALUES (3, '2018-12-18 15:16:07', b'0', '角色管理', 'system/role/index', 1, 3, 'role', 'role', b'0', b'0', 'Role'); +INSERT INTO `menu` VALUES (4, '2018-12-18 15:16:45', b'0', '权限管理', 'system/permission/index', 1, 4, 'permission', 'permission', b'0', b'0', 'Permission'); +INSERT INTO `menu` VALUES (5, '2018-12-18 15:17:28', b'0', '菜单管理', 'system/menu/index', 1, 5, 'menu', 'menu', b'0', b'0', 'Menu'); +INSERT INTO `menu` VALUES (6, '2018-12-18 15:17:48', b'0', '系统监控', NULL, 0, 10, 'monitor', 'monitor', b'0', b'0', NULL); +INSERT INTO `menu` VALUES (7, '2018-12-18 15:18:26', b'0', '操作日志', 'monitor/log/index', 6, 11, 'log', 'logs', b'1', b'0', 'Log'); +INSERT INTO `menu` VALUES (8, '2018-12-18 15:19:01', b'0', '系统缓存', 'monitor/redis/index', 6, 13, 'redis', 'redis', b'0', b'0', 'Redis'); +INSERT INTO `menu` VALUES (9, '2018-12-18 15:19:34', b'0', 'SQL监控', 'monitor/sql/index', 6, 14, 'sqlMonitor', 'druid', b'0', b'0', 'Sql'); +INSERT INTO `menu` VALUES (10, '2018-12-19 13:38:16', b'0', '组件管理', NULL, 0, 50, 'zujian', 'components', b'0', b'0', NULL); +INSERT INTO `menu` VALUES (11, '2018-12-19 13:38:49', b'0', '图标库', 'components/IconSelect', 10, 51, 'icon', 'icon', b'0', b'0', 'Icons'); +INSERT INTO `menu` VALUES (14, '2018-12-27 10:13:09', b'0', '邮件工具', 'tools/email/index', 36, 24, 'email', 'email', b'0', b'0', 'Email'); +INSERT INTO `menu` VALUES (15, '2018-12-27 11:58:25', b'0', '富文本', 'components/Editor', 10, 52, 'fwb', 'tinymce', b'0', b'0', 'Editor'); +INSERT INTO `menu` VALUES (16, '2018-12-28 09:36:53', b'0', '图床管理', 'tools/picture/index', 36, 25, 'image', 'pictures', b'0', b'0', 'Pictures'); +INSERT INTO `menu` VALUES (17, '2018-12-28 15:09:49', b'1', '项目地址', '', 0, 0, 'github', 'https://github.com/elunez/eladmin', b'0', b'0', NULL); +INSERT INTO `menu` VALUES (18, '2018-12-31 11:12:15', b'0', '七牛云存储', 'tools/qiniu/index', 36, 26, 'qiniu', 'qiniu', b'0', b'0', 'Qiniu'); +INSERT INTO `menu` VALUES (19, '2018-12-31 14:52:38', b'0', '支付宝工具', 'tools/aliPay/index', 36, 27, 'alipay', 'aliPay', b'0', b'0', 'AliPay'); +INSERT INTO `menu` VALUES (21, '2019-01-04 16:22:03', b'0', '多级菜单', '', 0, 900, 'menu', 'nested', b'0', b'0', NULL); +INSERT INTO `menu` VALUES (22, '2019-01-04 16:23:29', b'0', '二级菜单1', 'nested/menu1/index', 21, 999, 'menu', 'menu1', b'0', b'0', NULL); +INSERT INTO `menu` VALUES (23, '2019-01-04 16:23:57', b'0', '二级菜单2', 'nested/menu2/index', 21, 999, 'menu', 'menu2', b'0', b'0', NULL); +INSERT INTO `menu` VALUES (24, '2019-01-04 16:24:48', b'0', '三级菜单1', 'nested/menu1/menu1-1', 22, 999, 'menu', 'menu1-1', b'0', b'0', NULL); +INSERT INTO `menu` VALUES (27, '2019-01-07 17:27:32', b'0', '三级菜单2', 'nested/menu1/menu1-2', 22, 999, 'menu', 'menu1-2', b'0', b'0', NULL); +INSERT INTO `menu` VALUES (28, '2019-01-07 20:34:40', b'0', '定时任务', 'system/timing/index', 36, 21, 'timing', 'timing', b'0', b'0', 'Timing'); +INSERT INTO `menu` VALUES (30, '2019-01-11 15:45:55', b'0', '代码生成', 'generator/index', 36, 22, 'dev', 'generator', b'0', b'0', 'Generator'); +INSERT INTO `menu` VALUES (32, '2019-01-13 13:49:03', b'0', '异常日志', 'monitor/log/errorLog', 6, 12, 'error', 'errorLog', b'0', b'0', 'ErrorLog'); +INSERT INTO `menu` VALUES (33, '2019-03-08 13:46:44', b'0', 'Markdown', 'components/MarkDown', 10, 53, 'markdown', 'markdown', b'0', b'0', 'Markdown'); +INSERT INTO `menu` VALUES (34, '2019-03-08 15:49:40', b'0', 'Yaml编辑器', 'components/YamlEdit', 10, 54, 'dev', 'yaml', b'0', b'0', 'YamlEdit'); +INSERT INTO `menu` VALUES (35, '2019-03-25 09:46:00', b'0', '部门管理', 'system/dept/index', 1, 6, 'dept', 'dept', b'0', b'0', 'Dept'); +INSERT INTO `menu` VALUES (36, '2019-03-29 10:57:35', b'0', '系统工具', '', 0, 20, 'sys-tools', 'sys-tools', b'0', b'0', NULL); +INSERT INTO `menu` VALUES (37, '2019-03-29 13:51:18', b'0', '岗位管理', 'system/job/index', 1, 7, 'Steve-Jobs', 'job', b'0', b'0', 'Job'); +INSERT INTO `menu` VALUES (38, '2019-03-29 19:57:53', b'0', '接口文档', 'tools/swagger/index', 36, 23, 'swagger', 'swagger2', b'0', b'0', 'Swagger'); +INSERT INTO `menu` VALUES (39, '2019-04-10 11:49:04', b'0', '字典管理', 'system/dict/index', 1, 8, 'dictionary', 'dict', b'0', b'0', 'Dict'); -- ---------------------------- -- Table structure for permission -- ---------------------------- DROP TABLE IF EXISTS `permission`; -CREATE TABLE `permission` ( +CREATE TABLE `permission` ( `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'ID', - `alias` varchar(255) DEFAULT NULL COMMENT '别名', - `create_time` datetime DEFAULT NULL COMMENT '创建日期', - `name` varchar(255) DEFAULT NULL COMMENT '名称', + `alias` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '别名', + `create_time` datetime NULL DEFAULT NULL COMMENT '创建日期', + `name` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '名称', `pid` int(11) NOT NULL COMMENT '上级权限', PRIMARY KEY (`id`) USING BTREE -) ENGINE=InnoDB AUTO_INCREMENT=55 DEFAULT CHARSET=utf8; +) ENGINE = InnoDB AUTO_INCREMENT = 55 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Compact; -- ---------------------------- -- Records of permission -- ---------------------------- -INSERT INTO `permission` VALUES ('1', '超级管理员', '2018-12-03 12:27:48', 'ADMIN', '0'); -INSERT INTO `permission` VALUES ('2', '用户管理', '2018-12-03 12:28:19', 'USER_ALL', '0'); -INSERT INTO `permission` VALUES ('3', '用户查询', '2018-12-03 12:31:35', 'USER_SELECT', '2'); -INSERT INTO `permission` VALUES ('4', '用户创建', '2018-12-03 12:31:35', 'USER_CREATE', '2'); -INSERT INTO `permission` VALUES ('5', '用户编辑', '2018-12-03 12:31:35', 'USER_EDIT', '2'); -INSERT INTO `permission` VALUES ('6', '用户删除', '2018-12-03 12:31:35', 'USER_DELETE', '2'); -INSERT INTO `permission` VALUES ('7', '角色管理', '2018-12-03 12:28:19', 'ROLES_ALL', '0'); -INSERT INTO `permission` VALUES ('8', '角色查询', '2018-12-03 12:31:35', 'ROLES_SELECT', '7'); -INSERT INTO `permission` VALUES ('10', '角色创建', '2018-12-09 20:10:16', 'ROLES_CREATE', '7'); -INSERT INTO `permission` VALUES ('11', '角色编辑', '2018-12-09 20:10:42', 'ROLES_EDIT', '7'); -INSERT INTO `permission` VALUES ('12', '角色删除', '2018-12-09 20:11:07', 'ROLES_DELETE', '7'); -INSERT INTO `permission` VALUES ('13', '权限管理', '2018-12-09 20:11:37', 'PERMISSION_ALL', '0'); -INSERT INTO `permission` VALUES ('14', '权限查询', '2018-12-09 20:11:55', 'PERMISSION_SELECT', '13'); -INSERT INTO `permission` VALUES ('15', '权限创建', '2018-12-09 20:14:10', 'PERMISSION_CREATE', '13'); -INSERT INTO `permission` VALUES ('16', '权限编辑', '2018-12-09 20:15:44', 'PERMISSION_EDIT', '13'); -INSERT INTO `permission` VALUES ('17', '权限删除', '2018-12-09 20:15:59', 'PERMISSION_DELETE', '13'); -INSERT INTO `permission` VALUES ('18', '缓存管理', '2018-12-17 13:53:25', 'REDIS_ALL', '0'); -INSERT INTO `permission` VALUES ('20', '缓存查询', '2018-12-17 13:54:07', 'REDIS_SELECT', '18'); -INSERT INTO `permission` VALUES ('22', '缓存删除', '2018-12-17 13:55:04', 'REDIS_DELETE', '18'); -INSERT INTO `permission` VALUES ('23', '图床管理', '2018-12-27 20:31:49', 'PICTURE_ALL', '0'); -INSERT INTO `permission` VALUES ('24', '查询图片', '2018-12-27 20:32:04', 'PICTURE_SELECT', '23'); -INSERT INTO `permission` VALUES ('25', '上传图片', '2018-12-27 20:32:24', 'PICTURE_UPLOAD', '23'); -INSERT INTO `permission` VALUES ('26', '删除图片', '2018-12-27 20:32:45', 'PICTURE_DELETE', '23'); -INSERT INTO `permission` VALUES ('29', '菜单管理', '2018-12-28 17:34:31', 'MENU_ALL', '0'); -INSERT INTO `permission` VALUES ('30', '菜单查询', '2018-12-28 17:34:41', 'MENU_SELECT', '29'); -INSERT INTO `permission` VALUES ('31', '菜单创建', '2018-12-28 17:34:52', 'MENU_CREATE', '29'); -INSERT INTO `permission` VALUES ('32', '菜单编辑', '2018-12-28 17:35:20', 'MENU_EDIT', '29'); -INSERT INTO `permission` VALUES ('33', '菜单删除', '2018-12-28 17:35:29', 'MENU_DELETE', '29'); -INSERT INTO `permission` VALUES ('35', '定时任务管理', '2019-01-08 14:59:57', 'JOB_ALL', '0'); -INSERT INTO `permission` VALUES ('36', '任务查询', '2019-01-08 15:00:09', 'JOB_SELECT', '35'); -INSERT INTO `permission` VALUES ('37', '任务创建', '2019-01-08 15:00:20', 'JOB_CREATE', '35'); -INSERT INTO `permission` VALUES ('38', '任务编辑', '2019-01-08 15:00:33', 'JOB_EDIT', '35'); -INSERT INTO `permission` VALUES ('39', '任务删除', '2019-01-08 15:01:13', 'JOB_DELETE', '35'); -INSERT INTO `permission` VALUES ('40', '部门管理', '2019-03-29 17:06:55', 'DEPT_ALL', '0'); -INSERT INTO `permission` VALUES ('41', '部门查询', '2019-03-29 17:07:09', 'DEPT_SELECT', '40'); -INSERT INTO `permission` VALUES ('42', '部门创建', '2019-03-29 17:07:29', 'DEPT_CREATE', '40'); -INSERT INTO `permission` VALUES ('43', '部门编辑', '2019-03-29 17:07:52', 'DEPT_EDIT', '40'); -INSERT INTO `permission` VALUES ('44', '部门删除', '2019-03-29 17:08:14', 'DEPT_DELETE', '40'); -INSERT INTO `permission` VALUES ('45', '岗位管理', '2019-03-29 17:08:52', 'USERJOB_ALL', '0'); -INSERT INTO `permission` VALUES ('46', '岗位查询', '2019-03-29 17:10:27', 'USERJOB_SELECT', '45'); -INSERT INTO `permission` VALUES ('47', '岗位创建', '2019-03-29 17:10:55', 'USERJOB_CREATE', '45'); -INSERT INTO `permission` VALUES ('48', '岗位编辑', '2019-03-29 17:11:08', 'USERJOB_EDIT', '45'); -INSERT INTO `permission` VALUES ('49', '岗位删除', '2019-03-29 17:11:19', 'USERJOB_DELETE', '45'); -INSERT INTO `permission` VALUES ('50', '字典管理', '2019-04-10 16:24:51', 'DICT_ALL', '0'); -INSERT INTO `permission` VALUES ('51', '字典查询', '2019-04-10 16:25:16', 'DICT_SELECT', '50'); -INSERT INTO `permission` VALUES ('52', '字典创建', '2019-04-10 16:25:29', 'DICT_CREATE', '50'); -INSERT INTO `permission` VALUES ('53', '字典编辑', '2019-04-10 16:27:19', 'DICT_EDIT', '50'); -INSERT INTO `permission` VALUES ('54', '字典删除', '2019-04-10 16:27:30', 'DICT_DELETE', '50'); +INSERT INTO `permission` VALUES (1, '超级管理员', '2018-12-03 12:27:48', 'ADMIN', 0); +INSERT INTO `permission` VALUES (2, '用户管理', '2018-12-03 12:28:19', 'USER_ALL', 0); +INSERT INTO `permission` VALUES (3, '用户查询', '2018-12-03 12:31:35', 'USER_SELECT', 2); +INSERT INTO `permission` VALUES (4, '用户创建', '2018-12-03 12:31:35', 'USER_CREATE', 2); +INSERT INTO `permission` VALUES (5, '用户编辑', '2018-12-03 12:31:35', 'USER_EDIT', 2); +INSERT INTO `permission` VALUES (6, '用户删除', '2018-12-03 12:31:35', 'USER_DELETE', 2); +INSERT INTO `permission` VALUES (7, '角色管理', '2018-12-03 12:28:19', 'ROLES_ALL', 0); +INSERT INTO `permission` VALUES (8, '角色查询', '2018-12-03 12:31:35', 'ROLES_SELECT', 7); +INSERT INTO `permission` VALUES (10, '角色创建', '2018-12-09 20:10:16', 'ROLES_CREATE', 7); +INSERT INTO `permission` VALUES (11, '角色编辑', '2018-12-09 20:10:42', 'ROLES_EDIT', 7); +INSERT INTO `permission` VALUES (12, '角色删除', '2018-12-09 20:11:07', 'ROLES_DELETE', 7); +INSERT INTO `permission` VALUES (13, '权限管理', '2018-12-09 20:11:37', 'PERMISSION_ALL', 0); +INSERT INTO `permission` VALUES (14, '权限查询', '2018-12-09 20:11:55', 'PERMISSION_SELECT', 13); +INSERT INTO `permission` VALUES (15, '权限创建', '2018-12-09 20:14:10', 'PERMISSION_CREATE', 13); +INSERT INTO `permission` VALUES (16, '权限编辑', '2018-12-09 20:15:44', 'PERMISSION_EDIT', 13); +INSERT INTO `permission` VALUES (17, '权限删除', '2018-12-09 20:15:59', 'PERMISSION_DELETE', 13); +INSERT INTO `permission` VALUES (18, '缓存管理', '2018-12-17 13:53:25', 'REDIS_ALL', 0); +INSERT INTO `permission` VALUES (20, '缓存查询', '2018-12-17 13:54:07', 'REDIS_SELECT', 18); +INSERT INTO `permission` VALUES (22, '缓存删除', '2018-12-17 13:55:04', 'REDIS_DELETE', 18); +INSERT INTO `permission` VALUES (23, '图床管理', '2018-12-27 20:31:49', 'PICTURE_ALL', 0); +INSERT INTO `permission` VALUES (24, '查询图片', '2018-12-27 20:32:04', 'PICTURE_SELECT', 23); +INSERT INTO `permission` VALUES (25, '上传图片', '2018-12-27 20:32:24', 'PICTURE_UPLOAD', 23); +INSERT INTO `permission` VALUES (26, '删除图片', '2018-12-27 20:32:45', 'PICTURE_DELETE', 23); +INSERT INTO `permission` VALUES (29, '菜单管理', '2018-12-28 17:34:31', 'MENU_ALL', 0); +INSERT INTO `permission` VALUES (30, '菜单查询', '2018-12-28 17:34:41', 'MENU_SELECT', 29); +INSERT INTO `permission` VALUES (31, '菜单创建', '2018-12-28 17:34:52', 'MENU_CREATE', 29); +INSERT INTO `permission` VALUES (32, '菜单编辑', '2018-12-28 17:35:20', 'MENU_EDIT', 29); +INSERT INTO `permission` VALUES (33, '菜单删除', '2018-12-28 17:35:29', 'MENU_DELETE', 29); +INSERT INTO `permission` VALUES (35, '定时任务管理', '2019-01-08 14:59:57', 'JOB_ALL', 0); +INSERT INTO `permission` VALUES (36, '任务查询', '2019-01-08 15:00:09', 'JOB_SELECT', 35); +INSERT INTO `permission` VALUES (37, '任务创建', '2019-01-08 15:00:20', 'JOB_CREATE', 35); +INSERT INTO `permission` VALUES (38, '任务编辑', '2019-01-08 15:00:33', 'JOB_EDIT', 35); +INSERT INTO `permission` VALUES (39, '任务删除', '2019-01-08 15:01:13', 'JOB_DELETE', 35); +INSERT INTO `permission` VALUES (40, '部门管理', '2019-03-29 17:06:55', 'DEPT_ALL', 0); +INSERT INTO `permission` VALUES (41, '部门查询', '2019-03-29 17:07:09', 'DEPT_SELECT', 40); +INSERT INTO `permission` VALUES (42, '部门创建', '2019-03-29 17:07:29', 'DEPT_CREATE', 40); +INSERT INTO `permission` VALUES (43, '部门编辑', '2019-03-29 17:07:52', 'DEPT_EDIT', 40); +INSERT INTO `permission` VALUES (44, '部门删除', '2019-03-29 17:08:14', 'DEPT_DELETE', 40); +INSERT INTO `permission` VALUES (45, '岗位管理', '2019-03-29 17:08:52', 'USERJOB_ALL', 0); +INSERT INTO `permission` VALUES (46, '岗位查询', '2019-03-29 17:10:27', 'USERJOB_SELECT', 45); +INSERT INTO `permission` VALUES (47, '岗位创建', '2019-03-29 17:10:55', 'USERJOB_CREATE', 45); +INSERT INTO `permission` VALUES (48, '岗位编辑', '2019-03-29 17:11:08', 'USERJOB_EDIT', 45); +INSERT INTO `permission` VALUES (49, '岗位删除', '2019-03-29 17:11:19', 'USERJOB_DELETE', 45); +INSERT INTO `permission` VALUES (50, '字典管理', '2019-04-10 16:24:51', 'DICT_ALL', 0); +INSERT INTO `permission` VALUES (51, '字典查询', '2019-04-10 16:25:16', 'DICT_SELECT', 50); +INSERT INTO `permission` VALUES (52, '字典创建', '2019-04-10 16:25:29', 'DICT_CREATE', 50); +INSERT INTO `permission` VALUES (53, '字典编辑', '2019-04-10 16:27:19', 'DICT_EDIT', 50); +INSERT INTO `permission` VALUES (54, '字典删除', '2019-04-10 16:27:30', 'DICT_DELETE', 50); -- ---------------------------- -- Table structure for picture -- ---------------------------- DROP TABLE IF EXISTS `picture`; -CREATE TABLE `picture` ( +CREATE TABLE `picture` ( `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'ID', - `create_time` datetime DEFAULT NULL COMMENT '上传日期', - `delete_url` varchar(255) DEFAULT NULL COMMENT '删除的URL', - `filename` varchar(255) DEFAULT NULL COMMENT '图片名称', - `height` varchar(255) DEFAULT NULL COMMENT '图片高度', - `size` varchar(255) DEFAULT NULL COMMENT '图片大小', - `url` varchar(255) DEFAULT NULL COMMENT '图片地址', - `username` varchar(255) DEFAULT NULL COMMENT '用户名称', - `width` varchar(255) DEFAULT NULL COMMENT '图片宽度', + `create_time` datetime NULL DEFAULT NULL COMMENT '上传日期', + `delete_url` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '删除的URL', + `filename` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '图片名称', + `height` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '图片高度', + `size` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '图片大小', + `url` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '图片地址', + `username` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '用户名称', + `width` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '图片宽度', PRIMARY KEY (`id`) USING BTREE -) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8; +) ENGINE = InnoDB AUTO_INCREMENT = 3 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Compact; -- ---------------------------- -- Table structure for qiniu_config -- ---------------------------- DROP TABLE IF EXISTS `qiniu_config`; -CREATE TABLE `qiniu_config` ( +CREATE TABLE `qiniu_config` ( `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'ID', - `access_key` text COMMENT 'accessKey', - `bucket` varchar(255) DEFAULT NULL COMMENT 'Bucket 识别符', - `host` varchar(255) NOT NULL COMMENT '外链域名', - `secret_key` text COMMENT 'secretKey', - `type` varchar(255) DEFAULT NULL COMMENT '空间类型', - `zone` varchar(255) DEFAULT NULL COMMENT '机房', + `access_key` text CHARACTER SET utf8 COLLATE utf8_general_ci NULL COMMENT 'accessKey', + `bucket` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT 'Bucket 识别符', + `host` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '外链域名', + `secret_key` text CHARACTER SET utf8 COLLATE utf8_general_ci NULL COMMENT 'secretKey', + `type` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '空间类型', + `zone` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '机房', PRIMARY KEY (`id`) USING BTREE -) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8; +) ENGINE = InnoDB AUTO_INCREMENT = 2 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Compact; -- ---------------------------- -- Table structure for qiniu_content -- ---------------------------- DROP TABLE IF EXISTS `qiniu_content`; -CREATE TABLE `qiniu_content` ( +CREATE TABLE `qiniu_content` ( `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'ID', - `bucket` varchar(255) DEFAULT NULL COMMENT 'Bucket 识别符', - `name` varchar(255) DEFAULT NULL COMMENT '文件名称', - `size` varchar(255) DEFAULT NULL COMMENT '文件大小', - `type` varchar(255) DEFAULT NULL COMMENT '文件类型:私有或公开', - `update_time` datetime DEFAULT NULL COMMENT '上传或同步的时间', - `url` varchar(255) DEFAULT NULL COMMENT '文件url', + `bucket` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT 'Bucket 识别符', + `name` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '文件名称', + `size` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '文件大小', + `type` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '文件类型:私有或公开', + `update_time` datetime NULL DEFAULT NULL COMMENT '上传或同步的时间', + `url` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '文件url', PRIMARY KEY (`id`) USING BTREE -) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8; +) ENGINE = InnoDB AUTO_INCREMENT = 49 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Compact; -- ---------------------------- -- Table structure for quartz_job -- ---------------------------- DROP TABLE IF EXISTS `quartz_job`; -CREATE TABLE `quartz_job` ( +CREATE TABLE `quartz_job` ( `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'ID', - `bean_name` varchar(255) DEFAULT NULL COMMENT 'Spring Bean名称', - `cron_expression` varchar(255) DEFAULT NULL COMMENT 'cron 表达式', - `is_pause` bit(1) DEFAULT NULL COMMENT '状态:1暂停、0启用', - `job_name` varchar(255) DEFAULT NULL COMMENT '任务名称', - `method_name` varchar(255) DEFAULT NULL COMMENT '方法名称', - `params` varchar(255) DEFAULT NULL COMMENT '参数', - `remark` varchar(255) DEFAULT NULL COMMENT '备注', - `update_time` datetime DEFAULT NULL COMMENT '创建或更新日期', + `bean_name` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT 'Spring Bean名称', + `cron_expression` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT 'cron 表达式', + `is_pause` bit(1) NULL DEFAULT NULL COMMENT '状态:1暂停、0启用', + `job_name` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '任务名称', + `method_name` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '方法名称', + `params` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '参数', + `remark` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '备注', + `update_time` datetime NULL DEFAULT NULL COMMENT '创建或更新日期', PRIMARY KEY (`id`) USING BTREE -) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8; +) ENGINE = InnoDB AUTO_INCREMENT = 4 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Compact; -- ---------------------------- -- Records of quartz_job -- ---------------------------- -INSERT INTO `quartz_job` VALUES ('1', 'visitsTask', '0 0 0 * * ?', '\0', '更新访客记录', 'run', null, '每日0点创建新的访客记录', '2019-01-08 14:53:31'); -INSERT INTO `quartz_job` VALUES ('2', 'testTask', '0/5 * * * * ?', '', '测试1', 'run1', 'test', '带参测试,多参使用json', '2019-01-13 14:20:50'); -INSERT INTO `quartz_job` VALUES ('3', 'testTask', '0/5 * * * * ?', '', '测试', 'run', '', '不带参测试', '2019-04-09 16:16:44'); +INSERT INTO `quartz_job` VALUES (1, 'visitsTask', '0 0 0 * * ?', b'0', '更新访客记录', 'run', NULL, '每日0点创建新的访客记录', '2019-01-08 14:53:31'); +INSERT INTO `quartz_job` VALUES (2, 'testTask', '0/5 * * * * ?', b'1', '测试1', 'run1', 'test', '带参测试,多参使用json', '2019-08-22 14:08:29'); +INSERT INTO `quartz_job` VALUES (3, 'testTask', '0/5 * * * * ?', b'1', '测试', 'run', '', '不带参测试', '2019-08-22 14:08:28'); -- ---------------------------- -- Table structure for quartz_log -- ---------------------------- DROP TABLE IF EXISTS `quartz_log`; -CREATE TABLE `quartz_log` ( +CREATE TABLE `quartz_log` ( `id` bigint(20) NOT NULL AUTO_INCREMENT, - `baen_name` varchar(255) DEFAULT NULL, - `create_time` datetime DEFAULT NULL, - `cron_expression` varchar(255) DEFAULT NULL, - `exception_detail` text, - `is_success` bit(1) DEFAULT NULL, - `job_name` varchar(255) DEFAULT NULL, - `method_name` varchar(255) DEFAULT NULL, - `params` varchar(255) DEFAULT NULL, - `time` bigint(20) DEFAULT NULL, + `baen_name` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, + `create_time` datetime NULL DEFAULT NULL, + `cron_expression` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, + `exception_detail` text CHARACTER SET utf8 COLLATE utf8_general_ci NULL, + `is_success` bit(1) NULL DEFAULT NULL, + `job_name` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, + `method_name` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, + `params` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, + `time` bigint(20) NULL DEFAULT NULL, PRIMARY KEY (`id`) USING BTREE -) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8; - --- ---------------------------- --- Records of quartz_log --- ---------------------------- +) ENGINE = InnoDB AUTO_INCREMENT = 29 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Compact; -- ---------------------------- -- Table structure for role -- ---------------------------- DROP TABLE IF EXISTS `role`; -CREATE TABLE `role` ( +CREATE TABLE `role` ( `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'ID', - `create_time` datetime DEFAULT NULL COMMENT '创建日期', - `name` varchar(255) NOT NULL COMMENT '名称', - `remark` varchar(255) DEFAULT NULL COMMENT '备注', - `data_scope` varchar(255) DEFAULT NULL, - `level` int(255) DEFAULT NULL, + `create_time` datetime NULL DEFAULT NULL COMMENT '创建日期', + `name` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '名称', + `remark` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '备注', + `data_scope` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, + `level` int(255) NULL DEFAULT NULL, PRIMARY KEY (`id`) USING BTREE -) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8; +) ENGINE = InnoDB AUTO_INCREMENT = 5 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Compact; -- ---------------------------- -- Records of role -- ---------------------------- -INSERT INTO `role` VALUES ('1', '2018-11-23 11:04:37', '超级管理员', '系统所有权', '全部', '1'); -INSERT INTO `role` VALUES ('2', '2018-11-23 13:09:06', '普通用户', '用于测试菜单与权限', '自定义', '3'); -INSERT INTO `role` VALUES ('4', '2019-05-13 14:16:15', '普通管理员', '普通管理员级别为2,使用该角色新增用户时只能赋予比普通管理员级别低的角色', '自定义', '2'); +INSERT INTO `role` VALUES (1, '2018-11-23 11:04:37', '超级管理员', '·', '全部', 1); +INSERT INTO `role` VALUES (2, '2018-11-23 13:09:06', '普通用户', '用于测试菜单与权限', '自定义', 3); +INSERT INTO `role` VALUES (4, '2019-05-13 14:16:15', '普通管理员', '普通管理员级别为2,使用该角色新增用户时只能赋予比普通管理员级别低的角色', '自定义', 2); -- ---------------------------- -- Table structure for roles_depts -- ---------------------------- DROP TABLE IF EXISTS `roles_depts`; -CREATE TABLE `roles_depts` ( +CREATE TABLE `roles_depts` ( `role_id` bigint(20) NOT NULL, `dept_id` bigint(20) NOT NULL, - PRIMARY KEY (`role_id`,`dept_id`), - KEY `FK7qg6itn5ajdoa9h9o78v9ksur` (`dept_id`), - CONSTRAINT `FK7qg6itn5ajdoa9h9o78v9ksur` FOREIGN KEY (`dept_id`) REFERENCES `dept` (`id`), - CONSTRAINT `FKrg1ci4cxxfbja0sb0pddju7k` FOREIGN KEY (`role_id`) REFERENCES `role` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; + PRIMARY KEY (`role_id`, `dept_id`) USING BTREE, + INDEX `FK7qg6itn5ajdoa9h9o78v9ksur`(`dept_id`) USING BTREE, + CONSTRAINT `FK7qg6itn5ajdoa9h9o78v9ksur` FOREIGN KEY (`dept_id`) REFERENCES `dept` (`id`) ON DELETE RESTRICT ON UPDATE RESTRICT, + CONSTRAINT `FKrg1ci4cxxfbja0sb0pddju7k` FOREIGN KEY (`role_id`) REFERENCES `role` (`id`) ON DELETE RESTRICT ON UPDATE RESTRICT +) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Compact; -- ---------------------------- -- Records of roles_depts -- ---------------------------- -INSERT INTO `roles_depts` VALUES ('2', '5'); -INSERT INTO `roles_depts` VALUES ('4', '6'); -INSERT INTO `roles_depts` VALUES ('4', '7'); -INSERT INTO `roles_depts` VALUES ('2', '8'); +INSERT INTO `roles_depts` VALUES (2, 5); +INSERT INTO `roles_depts` VALUES (4, 6); +INSERT INTO `roles_depts` VALUES (4, 7); +INSERT INTO `roles_depts` VALUES (2, 8); -- ---------------------------- -- Table structure for roles_menus -- ---------------------------- DROP TABLE IF EXISTS `roles_menus`; -CREATE TABLE `roles_menus` ( +CREATE TABLE `roles_menus` ( `menu_id` bigint(20) NOT NULL COMMENT '菜单ID', `role_id` bigint(20) NOT NULL COMMENT '角色ID', - PRIMARY KEY (`menu_id`,`role_id`) USING BTREE, - KEY `FKcngg2qadojhi3a651a5adkvbq` (`role_id`) USING BTREE, - CONSTRAINT `FKcngg2qadojhi3a651a5adkvbq` FOREIGN KEY (`role_id`) REFERENCES `role` (`id`), - CONSTRAINT `FKq1knxf8ykt26we8k331naabjx` FOREIGN KEY (`menu_id`) REFERENCES `menu` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; + PRIMARY KEY (`menu_id`, `role_id`) USING BTREE, + INDEX `FKcngg2qadojhi3a651a5adkvbq`(`role_id`) USING BTREE, + CONSTRAINT `FKcngg2qadojhi3a651a5adkvbq` FOREIGN KEY (`role_id`) REFERENCES `role` (`id`) ON DELETE RESTRICT ON UPDATE RESTRICT, + CONSTRAINT `FKq1knxf8ykt26we8k331naabjx` FOREIGN KEY (`menu_id`) REFERENCES `menu` (`id`) ON DELETE RESTRICT ON UPDATE RESTRICT +) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Compact; -- ---------------------------- -- Records of roles_menus -- ---------------------------- -INSERT INTO `roles_menus` VALUES ('1', '1'); -INSERT INTO `roles_menus` VALUES ('2', '1'); -INSERT INTO `roles_menus` VALUES ('3', '1'); -INSERT INTO `roles_menus` VALUES ('4', '1'); -INSERT INTO `roles_menus` VALUES ('5', '1'); -INSERT INTO `roles_menus` VALUES ('6', '1'); -INSERT INTO `roles_menus` VALUES ('7', '1'); -INSERT INTO `roles_menus` VALUES ('8', '1'); -INSERT INTO `roles_menus` VALUES ('9', '1'); -INSERT INTO `roles_menus` VALUES ('10', '1'); -INSERT INTO `roles_menus` VALUES ('11', '1'); -INSERT INTO `roles_menus` VALUES ('14', '1'); -INSERT INTO `roles_menus` VALUES ('15', '1'); -INSERT INTO `roles_menus` VALUES ('16', '1'); -INSERT INTO `roles_menus` VALUES ('17', '1'); -INSERT INTO `roles_menus` VALUES ('18', '1'); -INSERT INTO `roles_menus` VALUES ('19', '1'); -INSERT INTO `roles_menus` VALUES ('21', '1'); -INSERT INTO `roles_menus` VALUES ('22', '1'); -INSERT INTO `roles_menus` VALUES ('23', '1'); -INSERT INTO `roles_menus` VALUES ('24', '1'); -INSERT INTO `roles_menus` VALUES ('27', '1'); -INSERT INTO `roles_menus` VALUES ('28', '1'); -INSERT INTO `roles_menus` VALUES ('30', '1'); -INSERT INTO `roles_menus` VALUES ('32', '1'); -INSERT INTO `roles_menus` VALUES ('33', '1'); -INSERT INTO `roles_menus` VALUES ('34', '1'); -INSERT INTO `roles_menus` VALUES ('35', '1'); -INSERT INTO `roles_menus` VALUES ('36', '1'); -INSERT INTO `roles_menus` VALUES ('37', '1'); -INSERT INTO `roles_menus` VALUES ('38', '1'); -INSERT INTO `roles_menus` VALUES ('39', '1'); -INSERT INTO `roles_menus` VALUES ('1', '2'); -INSERT INTO `roles_menus` VALUES ('2', '2'); -INSERT INTO `roles_menus` VALUES ('3', '2'); -INSERT INTO `roles_menus` VALUES ('4', '2'); -INSERT INTO `roles_menus` VALUES ('5', '2'); -INSERT INTO `roles_menus` VALUES ('6', '2'); -INSERT INTO `roles_menus` VALUES ('8', '2'); -INSERT INTO `roles_menus` VALUES ('9', '2'); -INSERT INTO `roles_menus` VALUES ('10', '2'); -INSERT INTO `roles_menus` VALUES ('11', '2'); -INSERT INTO `roles_menus` VALUES ('14', '2'); -INSERT INTO `roles_menus` VALUES ('15', '2'); -INSERT INTO `roles_menus` VALUES ('16', '2'); -INSERT INTO `roles_menus` VALUES ('17', '2'); -INSERT INTO `roles_menus` VALUES ('18', '2'); -INSERT INTO `roles_menus` VALUES ('19', '2'); -INSERT INTO `roles_menus` VALUES ('21', '2'); -INSERT INTO `roles_menus` VALUES ('22', '2'); -INSERT INTO `roles_menus` VALUES ('23', '2'); -INSERT INTO `roles_menus` VALUES ('24', '2'); -INSERT INTO `roles_menus` VALUES ('27', '2'); -INSERT INTO `roles_menus` VALUES ('28', '2'); -INSERT INTO `roles_menus` VALUES ('30', '2'); -INSERT INTO `roles_menus` VALUES ('33', '2'); -INSERT INTO `roles_menus` VALUES ('34', '2'); -INSERT INTO `roles_menus` VALUES ('35', '2'); -INSERT INTO `roles_menus` VALUES ('36', '2'); -INSERT INTO `roles_menus` VALUES ('37', '2'); -INSERT INTO `roles_menus` VALUES ('38', '2'); -INSERT INTO `roles_menus` VALUES ('39', '2'); -INSERT INTO `roles_menus` VALUES ('1', '4'); -INSERT INTO `roles_menus` VALUES ('2', '4'); +INSERT INTO `roles_menus` VALUES (1, 1); +INSERT INTO `roles_menus` VALUES (2, 1); +INSERT INTO `roles_menus` VALUES (3, 1); +INSERT INTO `roles_menus` VALUES (4, 1); +INSERT INTO `roles_menus` VALUES (5, 1); +INSERT INTO `roles_menus` VALUES (6, 1); +INSERT INTO `roles_menus` VALUES (7, 1); +INSERT INTO `roles_menus` VALUES (8, 1); +INSERT INTO `roles_menus` VALUES (9, 1); +INSERT INTO `roles_menus` VALUES (10, 1); +INSERT INTO `roles_menus` VALUES (11, 1); +INSERT INTO `roles_menus` VALUES (14, 1); +INSERT INTO `roles_menus` VALUES (15, 1); +INSERT INTO `roles_menus` VALUES (16, 1); +INSERT INTO `roles_menus` VALUES (17, 1); +INSERT INTO `roles_menus` VALUES (18, 1); +INSERT INTO `roles_menus` VALUES (19, 1); +INSERT INTO `roles_menus` VALUES (21, 1); +INSERT INTO `roles_menus` VALUES (22, 1); +INSERT INTO `roles_menus` VALUES (23, 1); +INSERT INTO `roles_menus` VALUES (24, 1); +INSERT INTO `roles_menus` VALUES (27, 1); +INSERT INTO `roles_menus` VALUES (28, 1); +INSERT INTO `roles_menus` VALUES (30, 1); +INSERT INTO `roles_menus` VALUES (32, 1); +INSERT INTO `roles_menus` VALUES (33, 1); +INSERT INTO `roles_menus` VALUES (34, 1); +INSERT INTO `roles_menus` VALUES (35, 1); +INSERT INTO `roles_menus` VALUES (36, 1); +INSERT INTO `roles_menus` VALUES (37, 1); +INSERT INTO `roles_menus` VALUES (38, 1); +INSERT INTO `roles_menus` VALUES (39, 1); +INSERT INTO `roles_menus` VALUES (1, 2); +INSERT INTO `roles_menus` VALUES (2, 2); +INSERT INTO `roles_menus` VALUES (3, 2); +INSERT INTO `roles_menus` VALUES (4, 2); +INSERT INTO `roles_menus` VALUES (5, 2); +INSERT INTO `roles_menus` VALUES (6, 2); +INSERT INTO `roles_menus` VALUES (8, 2); +INSERT INTO `roles_menus` VALUES (9, 2); +INSERT INTO `roles_menus` VALUES (10, 2); +INSERT INTO `roles_menus` VALUES (11, 2); +INSERT INTO `roles_menus` VALUES (14, 2); +INSERT INTO `roles_menus` VALUES (15, 2); +INSERT INTO `roles_menus` VALUES (16, 2); +INSERT INTO `roles_menus` VALUES (17, 2); +INSERT INTO `roles_menus` VALUES (18, 2); +INSERT INTO `roles_menus` VALUES (19, 2); +INSERT INTO `roles_menus` VALUES (21, 2); +INSERT INTO `roles_menus` VALUES (22, 2); +INSERT INTO `roles_menus` VALUES (23, 2); +INSERT INTO `roles_menus` VALUES (24, 2); +INSERT INTO `roles_menus` VALUES (27, 2); +INSERT INTO `roles_menus` VALUES (28, 2); +INSERT INTO `roles_menus` VALUES (30, 2); +INSERT INTO `roles_menus` VALUES (33, 2); +INSERT INTO `roles_menus` VALUES (34, 2); +INSERT INTO `roles_menus` VALUES (35, 2); +INSERT INTO `roles_menus` VALUES (36, 2); +INSERT INTO `roles_menus` VALUES (37, 2); +INSERT INTO `roles_menus` VALUES (38, 2); +INSERT INTO `roles_menus` VALUES (39, 2); +INSERT INTO `roles_menus` VALUES (1, 4); +INSERT INTO `roles_menus` VALUES (2, 4); -- ---------------------------- -- Table structure for roles_permissions -- ---------------------------- DROP TABLE IF EXISTS `roles_permissions`; -CREATE TABLE `roles_permissions` ( +CREATE TABLE `roles_permissions` ( `role_id` bigint(20) NOT NULL COMMENT '角色ID', `permission_id` bigint(20) NOT NULL COMMENT '权限ID', - PRIMARY KEY (`role_id`,`permission_id`) USING BTREE, - KEY `FKboeuhl31go7wer3bpy6so7exi` (`permission_id`) USING BTREE, - CONSTRAINT `FK4hrolwj4ned5i7qe8kyiaak6m` FOREIGN KEY (`role_id`) REFERENCES `role` (`id`), - CONSTRAINT `FKboeuhl31go7wer3bpy6so7exi` FOREIGN KEY (`permission_id`) REFERENCES `permission` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; + PRIMARY KEY (`role_id`, `permission_id`) USING BTREE, + INDEX `FKboeuhl31go7wer3bpy6so7exi`(`permission_id`) USING BTREE, + CONSTRAINT `FK4hrolwj4ned5i7qe8kyiaak6m` FOREIGN KEY (`role_id`) REFERENCES `role` (`id`) ON DELETE RESTRICT ON UPDATE RESTRICT, + CONSTRAINT `FKboeuhl31go7wer3bpy6so7exi` FOREIGN KEY (`permission_id`) REFERENCES `permission` (`id`) ON DELETE RESTRICT ON UPDATE RESTRICT +) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Compact; -- ---------------------------- -- Records of roles_permissions -- ---------------------------- -INSERT INTO `roles_permissions` VALUES ('1', '1'); -INSERT INTO `roles_permissions` VALUES ('2', '3'); -INSERT INTO `roles_permissions` VALUES ('4', '3'); -INSERT INTO `roles_permissions` VALUES ('4', '4'); -INSERT INTO `roles_permissions` VALUES ('4', '5'); -INSERT INTO `roles_permissions` VALUES ('2', '8'); -INSERT INTO `roles_permissions` VALUES ('2', '14'); -INSERT INTO `roles_permissions` VALUES ('2', '20'); -INSERT INTO `roles_permissions` VALUES ('2', '23'); -INSERT INTO `roles_permissions` VALUES ('2', '24'); -INSERT INTO `roles_permissions` VALUES ('2', '25'); -INSERT INTO `roles_permissions` VALUES ('2', '26'); -INSERT INTO `roles_permissions` VALUES ('2', '30'); -INSERT INTO `roles_permissions` VALUES ('2', '36'); -INSERT INTO `roles_permissions` VALUES ('2', '41'); -INSERT INTO `roles_permissions` VALUES ('2', '46'); -INSERT INTO `roles_permissions` VALUES ('2', '51'); +INSERT INTO `roles_permissions` VALUES (1, 1); +INSERT INTO `roles_permissions` VALUES (2, 3); +INSERT INTO `roles_permissions` VALUES (4, 3); +INSERT INTO `roles_permissions` VALUES (4, 4); +INSERT INTO `roles_permissions` VALUES (4, 5); +INSERT INTO `roles_permissions` VALUES (2, 8); +INSERT INTO `roles_permissions` VALUES (2, 14); +INSERT INTO `roles_permissions` VALUES (2, 20); +INSERT INTO `roles_permissions` VALUES (2, 23); +INSERT INTO `roles_permissions` VALUES (2, 24); +INSERT INTO `roles_permissions` VALUES (2, 25); +INSERT INTO `roles_permissions` VALUES (2, 26); +INSERT INTO `roles_permissions` VALUES (2, 30); +INSERT INTO `roles_permissions` VALUES (2, 36); +INSERT INTO `roles_permissions` VALUES (2, 41); +INSERT INTO `roles_permissions` VALUES (2, 46); +INSERT INTO `roles_permissions` VALUES (2, 51); -- ---------------------------- -- Table structure for user -- ---------------------------- DROP TABLE IF EXISTS `user`; -CREATE TABLE `user` ( +CREATE TABLE `user` ( `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'ID', - `avatar` varchar(255) DEFAULT NULL COMMENT '头像地址', - `create_time` datetime DEFAULT NULL COMMENT '创建日期', - `email` varchar(255) DEFAULT NULL COMMENT '邮箱', - `enabled` bigint(20) DEFAULT NULL COMMENT '状态:1启用、0禁用', - `password` varchar(255) DEFAULT NULL COMMENT '密码', - `username` varchar(255) DEFAULT NULL COMMENT '用户名', - `last_password_reset_time` datetime DEFAULT NULL COMMENT '最后修改密码的日期', - `dept_id` bigint(20) DEFAULT NULL, - `phone` varchar(255) DEFAULT NULL, - `job_id` bigint(20) DEFAULT NULL, + `avatar` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '头像地址', + `create_time` datetime NULL DEFAULT NULL COMMENT '创建日期', + `email` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '邮箱', + `enabled` bigint(20) NULL DEFAULT NULL COMMENT '状态:1启用、0禁用', + `password` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '密码', + `username` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '用户名', + `last_password_reset_time` datetime NULL DEFAULT NULL COMMENT '最后修改密码的日期', + `dept_id` bigint(20) NULL DEFAULT NULL, + `phone` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, + `job_id` bigint(20) NULL DEFAULT NULL, PRIMARY KEY (`id`) USING BTREE, - UNIQUE KEY `UK_kpubos9gc2cvtkb0thktkbkes` (`email`) USING BTREE, - UNIQUE KEY `username` (`username`) USING BTREE, - KEY `FK5rwmryny6jthaaxkogownknqp` (`dept_id`), - KEY `FKfftoc2abhot8f2wu6cl9a5iky` (`job_id`), - CONSTRAINT `FK5rwmryny6jthaaxkogownknqp` FOREIGN KEY (`dept_id`) REFERENCES `dept` (`id`), - CONSTRAINT `FKfftoc2abhot8f2wu6cl9a5iky` FOREIGN KEY (`job_id`) REFERENCES `job` (`id`) -) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8; + UNIQUE INDEX `UK_kpubos9gc2cvtkb0thktkbkes`(`email`) USING BTREE, + UNIQUE INDEX `username`(`username`) USING BTREE, + INDEX `FK5rwmryny6jthaaxkogownknqp`(`dept_id`) USING BTREE, + INDEX `FKfftoc2abhot8f2wu6cl9a5iky`(`job_id`) USING BTREE, + CONSTRAINT `FK5rwmryny6jthaaxkogownknqp` FOREIGN KEY (`dept_id`) REFERENCES `dept` (`id`) ON DELETE RESTRICT ON UPDATE RESTRICT, + CONSTRAINT `FKfftoc2abhot8f2wu6cl9a5iky` FOREIGN KEY (`job_id`) REFERENCES `job` (`id`) ON DELETE RESTRICT ON UPDATE RESTRICT +) ENGINE = InnoDB AUTO_INCREMENT = 6 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Compact; -- ---------------------------- -- Records of user -- ---------------------------- -INSERT INTO `user` VALUES ('1', 'https://i.loli.net/2019/04/04/5ca5b971e1548.jpeg', '2018-08-23 09:11:56', 'admin@eladmin.net', '1', 'e10adc3949ba59abbe56e057f20f883e', 'admin', '2019-05-18 17:34:21', '2', '18888888888', '11'); -INSERT INTO `user` VALUES ('3', 'https://aurora-1255840532.cos.ap-chengdu.myqcloud.com/8918a306ea314404835a9196585c4b75.jpeg', '2018-12-27 20:05:26', 'test@eladmin.net', '1', 'e10adc3949ba59abbe56e057f20f883e', 'test', '2019-04-01 09:15:24', '2', '17777777777', '12'); -INSERT INTO `user` VALUES ('5', 'https://aurora-1255840532.cos.ap-chengdu.myqcloud.com/8918a306ea314404835a9196585c4b75.jpeg', '2019-04-02 10:07:12', 'hr@eladmin.net', '1', 'e10adc3949ba59abbe56e057f20f883e', 'hr', null, '11', '15555555555', '8'); +INSERT INTO `user` VALUES (1, 'https://i.loli.net/2019/04/04/5ca5b971e1548.jpeg', '2018-08-23 09:11:56', 'admin@eladmin.net', 1, 'e10adc3949ba59abbe56e057f20f883e', 'admin', '2019-05-18 17:34:21', 2, '18888888888', 11); +INSERT INTO `user` VALUES (3, 'https://aurora-1255840532.cos.ap-chengdu.myqcloud.com/8918a306ea314404835a9196585c4b75.jpeg', '2018-12-27 20:05:26', 'test@eladmin.net', 1, 'e10adc3949ba59abbe56e057f20f883e', 'test', '2019-04-01 09:15:24', 2, '17777777777', 12); +INSERT INTO `user` VALUES (5, 'https://aurora-1255840532.cos.ap-chengdu.myqcloud.com/8918a306ea314404835a9196585c4b75.jpeg', '2019-04-02 10:07:12', 'hr@eladmin.net', 1, 'e10adc3949ba59abbe56e057f20f883e', 'hr', NULL, 11, '15555555555', 8); -- ---------------------------- -- Table structure for users_roles -- ---------------------------- DROP TABLE IF EXISTS `users_roles`; -CREATE TABLE `users_roles` ( +CREATE TABLE `users_roles` ( `user_id` bigint(20) NOT NULL COMMENT '用户ID', `role_id` bigint(20) NOT NULL COMMENT '角色ID', - PRIMARY KEY (`user_id`,`role_id`) USING BTREE, - KEY `FKq4eq273l04bpu4efj0jd0jb98` (`role_id`) USING BTREE, - CONSTRAINT `users_roles_ibfk_1` FOREIGN KEY (`role_id`) REFERENCES `role` (`id`), - CONSTRAINT `users_roles_ibfk_2` FOREIGN KEY (`user_id`) REFERENCES `user` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; + PRIMARY KEY (`user_id`, `role_id`) USING BTREE, + INDEX `FKq4eq273l04bpu4efj0jd0jb98`(`role_id`) USING BTREE, + CONSTRAINT `users_roles_ibfk_1` FOREIGN KEY (`role_id`) REFERENCES `role` (`id`) ON DELETE RESTRICT ON UPDATE RESTRICT, + CONSTRAINT `users_roles_ibfk_2` FOREIGN KEY (`user_id`) REFERENCES `user` (`id`) ON DELETE RESTRICT ON UPDATE RESTRICT +) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Compact; -- ---------------------------- -- Records of users_roles -- ---------------------------- -INSERT INTO `users_roles` VALUES ('1', '1'); -INSERT INTO `users_roles` VALUES ('3', '2'); -INSERT INTO `users_roles` VALUES ('5', '4'); +INSERT INTO `users_roles` VALUES (1, 1); +INSERT INTO `users_roles` VALUES (3, 2); +INSERT INTO `users_roles` VALUES (5, 4); -- ---------------------------- -- Table structure for verification_code -- ---------------------------- DROP TABLE IF EXISTS `verification_code`; -CREATE TABLE `verification_code` ( +CREATE TABLE `verification_code` ( `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'ID', - `code` varchar(255) DEFAULT NULL COMMENT '验证码', - `create_time` datetime DEFAULT NULL COMMENT '创建日期', - `status` bit(1) DEFAULT NULL COMMENT '状态:1有效、0过期', - `type` varchar(255) DEFAULT NULL COMMENT '验证码类型:email或者短信', - `value` varchar(255) DEFAULT NULL COMMENT '接收邮箱或者手机号码', - `scenes` varchar(255) DEFAULT NULL COMMENT '业务名称:如重置邮箱、重置密码等', + `code` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '验证码', + `create_time` datetime NULL DEFAULT NULL COMMENT '创建日期', + `status` bit(1) NULL DEFAULT NULL COMMENT '状态:1有效、0过期', + `type` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '验证码类型:email或者短信', + `value` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '接收邮箱或者手机号码', + `scenes` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '业务名称:如重置邮箱、重置密码等', PRIMARY KEY (`id`) USING BTREE -) ENGINE=InnoDB DEFAULT CHARSET=utf8; - --- ---------------------------- --- Records of verification_code --- ---------------------------- +) ENGINE = InnoDB AUTO_INCREMENT = 2 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Compact; -- ---------------------------- -- Table structure for visits -- ---------------------------- DROP TABLE IF EXISTS `visits`; -CREATE TABLE `visits` ( +CREATE TABLE `visits` ( `id` bigint(20) NOT NULL AUTO_INCREMENT, - `create_time` datetime DEFAULT NULL, - `date` varchar(255) DEFAULT NULL, - `ip_counts` bigint(20) DEFAULT NULL, - `pv_counts` bigint(20) DEFAULT NULL, - `week_day` varchar(255) DEFAULT NULL, - PRIMARY KEY (`id`), - UNIQUE KEY `UK_11aksgq87euk9bcyeesfs4vtp` (`date`) -) ENGINE=InnoDB AUTO_INCREMENT=55 DEFAULT CHARSET=utf8; + `create_time` datetime NULL DEFAULT NULL, + `date` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, + `ip_counts` bigint(20) NULL DEFAULT NULL, + `pv_counts` bigint(20) NULL DEFAULT NULL, + `week_day` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, + PRIMARY KEY (`id`) USING BTREE, + UNIQUE INDEX `UK_11aksgq87euk9bcyeesfs4vtp`(`date`) USING BTREE +) ENGINE = InnoDB AUTO_INCREMENT = 81 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Compact; + +SET FOREIGN_KEY_CHECKS = 1; From 3595f182d11e1e8a1054486549d84fd512449d02 Mon Sep 17 00:00:00 2001 From: dqjdda <201507802@qq.com> Date: Tue, 27 Aug 2019 17:18:30 +0800 Subject: [PATCH 06/14] =?UTF-8?q?=E4=BF=AE=E5=A4=8D3=E7=BA=A7=E8=8F=9C?= =?UTF-8?q?=E5=8D=95=E5=88=A0=E9=99=A4=E4=B8=8D=E4=BA=86=E7=9A=84BUG?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../modules/system/rest/MenuController.java | 14 +++++------ .../modules/system/service/MenuService.java | 17 ++++++++++--- .../system/service/impl/MenuServiceImpl.java | 25 +++++++++++++++++-- sql/eladmin.sql | 2 +- 4 files changed, 43 insertions(+), 15 deletions(-) diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/rest/MenuController.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/rest/MenuController.java index 6d3f06c1..37a65a2b 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/rest/MenuController.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/rest/MenuController.java @@ -16,7 +16,9 @@ import org.springframework.http.ResponseEntity; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; +import java.util.HashSet; import java.util.List; +import java.util.Set; /** * @author Zheng Jie @@ -90,14 +92,10 @@ public class MenuController { @PreAuthorize("hasAnyRole('ADMIN','MENU_ALL','MENU_DELETE')") public ResponseEntity delete(@PathVariable Long id){ List menuList = menuService.findByPid(id); - - // 特殊情况,对级联删除进行处理 - for (Menu menu : menuList) { - roleService.untiedMenu(menu); - menuService.delete(menu.getId()); - } - roleService.untiedMenu(menuService.findOne(id)); - menuService.delete(id); + Set menuSet = new HashSet<>(); + menuSet.add(menuService.findOne(id)); + menuSet = menuService.getDeleteMenus(menuList, menuSet); + menuService.delete(menuSet); return new ResponseEntity(HttpStatus.OK); } } diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/MenuService.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/MenuService.java index 057b3755..17eb8205 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/MenuService.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/MenuService.java @@ -9,6 +9,7 @@ import org.springframework.cache.annotation.CacheEvict; import org.springframework.cache.annotation.Cacheable; import java.util.List; import java.util.Map; +import java.util.Set; /** * @author Zheng Jie @@ -49,11 +50,12 @@ public interface MenuService { void update(Menu resources); /** - * delete - * @param id + * getDeleteMenus + * @param menuList + * @param menuSet + * @return */ - @CacheEvict(allEntries = true) - void delete(Long id); + Set getDeleteMenus(List menuList, Set menuSet); /** * permission tree @@ -92,4 +94,11 @@ public interface MenuService { Object buildMenus(List byRoles); Menu findOne(Long id); + + /** + * delete + * @param menuSet + */ + @CacheEvict(allEntries = true) + void delete(Set menuSet); } diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/MenuServiceImpl.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/MenuServiceImpl.java index f997d5a9..01f28eac 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/MenuServiceImpl.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/MenuServiceImpl.java @@ -10,6 +10,7 @@ import me.zhengjie.exception.BadRequestException; import me.zhengjie.exception.EntityExistException; import me.zhengjie.modules.system.repository.MenuRepository; import me.zhengjie.modules.system.service.MenuService; +import me.zhengjie.modules.system.service.RoleService; import me.zhengjie.modules.system.service.dto.MenuDTO; import me.zhengjie.modules.system.service.dto.MenuQueryCriteria; import me.zhengjie.modules.system.service.dto.RoleSmallDTO; @@ -34,6 +35,9 @@ public class MenuServiceImpl implements MenuService { @Autowired private MenuMapper menuMapper; + @Autowired + private RoleService roleService; + @Override public List queryAll(MenuQueryCriteria criteria){ return menuMapper.toDto(menuRepository.findAll((root, criteriaQuery, criteriaBuilder) -> QueryHelp.getPredicate(root,criteria,criteriaBuilder))); @@ -114,8 +118,25 @@ public class MenuServiceImpl implements MenuService { } @Override - public void delete(Long id) { - menuRepository.deleteById(id); + public Set getDeleteMenus(List menuList, Set menuSet) { + // 递归找出待删除的菜单 + for (Menu menu1 : menuList) { + menuSet.add(menu1); + List menus = menuRepository.findByPid(menu1.getId()); + if(menus!=null && menus.size()!=0){ + getDeleteMenus(menus, menuSet); + } + } + return menuSet; + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void delete(Set menuSet) { + for (Menu menu : menuSet) { + roleService.untiedMenu(menu); + menuRepository.deleteById(menu.getId()); + } } @Override diff --git a/sql/eladmin.sql b/sql/eladmin.sql index fb7a4a39..2fb7431b 100644 --- a/sql/eladmin.sql +++ b/sql/eladmin.sql @@ -241,7 +241,7 @@ INSERT INTO `menu` VALUES (23, '2019-01-04 16:23:57', b'0', '二级菜单2', 'ne INSERT INTO `menu` VALUES (24, '2019-01-04 16:24:48', b'0', '三级菜单1', 'nested/menu1/menu1-1', 22, 999, 'menu', 'menu1-1', b'0', b'0', NULL); INSERT INTO `menu` VALUES (27, '2019-01-07 17:27:32', b'0', '三级菜单2', 'nested/menu1/menu1-2', 22, 999, 'menu', 'menu1-2', b'0', b'0', NULL); INSERT INTO `menu` VALUES (28, '2019-01-07 20:34:40', b'0', '定时任务', 'system/timing/index', 36, 21, 'timing', 'timing', b'0', b'0', 'Timing'); -INSERT INTO `menu` VALUES (30, '2019-01-11 15:45:55', b'0', '代码生成', 'generator/index', 36, 22, 'dev', 'generator', b'0', b'0', 'Generator'); +INSERT INTO `menu` VALUES (30, '2019-01-11 15:45:55', b'0', '代码生成', 'generator/index', 36, 22, 'dev', 'generator', b'0', b'0', 'GeneratorIndex'); INSERT INTO `menu` VALUES (32, '2019-01-13 13:49:03', b'0', '异常日志', 'monitor/log/errorLog', 6, 12, 'error', 'errorLog', b'0', b'0', 'ErrorLog'); INSERT INTO `menu` VALUES (33, '2019-03-08 13:46:44', b'0', 'Markdown', 'components/MarkDown', 10, 53, 'markdown', 'markdown', b'0', b'0', 'Markdown'); INSERT INTO `menu` VALUES (34, '2019-03-08 15:49:40', b'0', 'Yaml编辑器', 'components/YamlEdit', 10, 54, 'dev', 'yaml', b'0', b'0', 'YamlEdit'); From 2b1af497f5457a9eebdc97b85401f30d092c5812 Mon Sep 17 00:00:00 2001 From: dqjdda <201507802@qq.com> Date: Wed, 28 Aug 2019 21:29:40 +0800 Subject: [PATCH 07/14] =?UTF-8?q?=E4=BC=98=E5=8C=96=E5=B8=A6=E5=85=B3?= =?UTF-8?q?=E8=81=94=E9=A1=B9=E7=9A=84=E5=88=A0=E9=99=A4=EF=BC=9A=E8=A7=92?= =?UTF-8?q?=E8=89=B2=E3=80=81=E6=9D=83=E9=99=90=E3=80=81=E8=8F=9C=E5=8D=95?= =?UTF-8?q?=E3=80=81=E9=83=A8=E9=97=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/me/zhengjie/utils/ThrowableUtil.java | 14 +++++++++++ .../repository/PermissionRepository.java | 4 ---- .../system/repository/RoleRepository.java | 10 +++++++- .../modules/system/rest/DeptController.java | 7 +++++- .../system/rest/PermissionController.java | 12 +++++++++- .../modules/system/rest/RoleController.java | 9 ++++++- .../system/service/PermissionService.java | 7 ++++-- .../modules/system/service/RoleService.java | 7 +++--- .../system/service/impl/MenuServiceImpl.java | 2 +- .../service/impl/PermissionServiceImpl.java | 24 +++++++++++++++---- .../system/service/impl/RoleServiceImpl.java | 20 +++++++--------- 11 files changed, 87 insertions(+), 29 deletions(-) diff --git a/eladmin-common/src/main/java/me/zhengjie/utils/ThrowableUtil.java b/eladmin-common/src/main/java/me/zhengjie/utils/ThrowableUtil.java index 3725a1a1..6faa8c61 100644 --- a/eladmin-common/src/main/java/me/zhengjie/utils/ThrowableUtil.java +++ b/eladmin-common/src/main/java/me/zhengjie/utils/ThrowableUtil.java @@ -1,5 +1,8 @@ package me.zhengjie.utils; +import me.zhengjie.exception.BadRequestException; +import org.hibernate.exception.ConstraintViolationException; + import java.io.PrintWriter; import java.io.StringWriter; @@ -25,4 +28,15 @@ public class ThrowableUtil { pw.close(); } } + + public static void throwForeignKeyException(Throwable e, String msg){ + Throwable t = e.getCause(); + while ((t != null) && !(t instanceof ConstraintViolationException)) { + t = t.getCause(); + } + if (t instanceof ConstraintViolationException) { + throw new BadRequestException(msg); + } + throw new BadRequestException("删除失败:" + t.getMessage()); + } } diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/repository/PermissionRepository.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/repository/PermissionRepository.java index 3d586fcd..f27e8653 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/repository/PermissionRepository.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/repository/PermissionRepository.java @@ -1,13 +1,9 @@ package me.zhengjie.modules.system.repository; import me.zhengjie.modules.system.domain.Permission; -import me.zhengjie.modules.system.domain.Role; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.JpaSpecificationExecutor; - -import java.util.Collection; import java.util.List; -import java.util.Set; /** * @author Zheng Jie diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/repository/RoleRepository.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/repository/RoleRepository.java index 1cd840b7..1e2b15ae 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/repository/RoleRepository.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/repository/RoleRepository.java @@ -3,6 +3,8 @@ package me.zhengjie.modules.system.repository; import me.zhengjie.modules.system.domain.Role; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.JpaSpecificationExecutor; +import org.springframework.data.jpa.repository.Modifying; +import org.springframework.data.jpa.repository.Query; import java.util.Set; @@ -21,5 +23,11 @@ public interface RoleRepository extends JpaRepository, JpaSpecificat Set findByUsers_Id(Long id); - Set findByMenus_Id(Long id); + @Modifying + @Query(value = "delete from roles_permissions where permission_id = ?1",nativeQuery = true) + void untiedPermission(Long id); + + @Modifying + @Query(value = "delete from roles_menus where menu_id = ?1",nativeQuery = true) + void untiedMenu(Long id); } diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/rest/DeptController.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/rest/DeptController.java index 39d90436..b57946bf 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/rest/DeptController.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/rest/DeptController.java @@ -7,6 +7,7 @@ import me.zhengjie.modules.system.domain.Dept; import me.zhengjie.modules.system.service.DeptService; import me.zhengjie.modules.system.service.dto.DeptDTO; import me.zhengjie.modules.system.service.dto.DeptQueryCriteria; +import me.zhengjie.utils.ThrowableUtil; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; @@ -63,7 +64,11 @@ public class DeptController { @DeleteMapping(value = "/dept/{id}") @PreAuthorize("hasAnyRole('ADMIN','DEPT_ALL','DEPT_DELETE')") public ResponseEntity delete(@PathVariable Long id){ - deptService.delete(id); + try { + deptService.delete(id); + }catch (Throwable e){ + ThrowableUtil.throwForeignKeyException(e, "该部门存在岗位或者角色关联,请取消关联后再试"); + } return new ResponseEntity(HttpStatus.OK); } } \ No newline at end of file diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/rest/PermissionController.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/rest/PermissionController.java index b27ea7c3..216c838a 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/rest/PermissionController.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/rest/PermissionController.java @@ -6,6 +6,7 @@ import me.zhengjie.exception.BadRequestException; import me.zhengjie.modules.system.service.PermissionService; import me.zhengjie.modules.system.service.dto.PermissionDTO; import me.zhengjie.modules.system.service.dto.PermissionQueryCriteria; +import me.zhengjie.modules.system.service.mapper.PermissionMapper; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; @@ -13,7 +14,9 @@ import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; +import java.util.HashSet; import java.util.List; +import java.util.Set; /** * @author Zheng Jie @@ -26,6 +29,9 @@ public class PermissionController { @Autowired private PermissionService permissionService; + @Autowired + private PermissionMapper permissionMapper; + private static final String ENTITY_NAME = "permission"; /** @@ -68,7 +74,11 @@ public class PermissionController { @DeleteMapping(value = "/permissions/{id}") @PreAuthorize("hasAnyRole('ADMIN','PERMISSION_ALL','PERMISSION_DELETE')") public ResponseEntity delete(@PathVariable Long id){ - permissionService.delete(id); + List permissions = permissionService.findByPid(id); + Set permissionSet = new HashSet<>(); + permissionSet.add(permissionMapper.toEntity(permissionService.findById(id))); + permissionSet = permissionService.getDeletePermission(permissions, permissionSet); + permissionService.delete(permissionSet); return new ResponseEntity(HttpStatus.OK); } } diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/rest/RoleController.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/rest/RoleController.java index 66ef07db..340aa63c 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/rest/RoleController.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/rest/RoleController.java @@ -8,6 +8,8 @@ import me.zhengjie.modules.system.service.RoleService; import me.zhengjie.modules.system.service.dto.RoleQueryCriteria; import me.zhengjie.modules.system.service.dto.RoleSmallDTO; import me.zhengjie.utils.SecurityUtils; +import me.zhengjie.utils.ThrowableUtil; +import org.hibernate.exception.ConstraintViolationException; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.domain.Pageable; import org.springframework.data.domain.Sort; @@ -15,6 +17,7 @@ import org.springframework.data.web.PageableDefault; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.transaction.TransactionSystemException; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; import java.util.Collections; @@ -106,7 +109,11 @@ public class RoleController { @DeleteMapping(value = "/roles/{id}") @PreAuthorize("hasAnyRole('ADMIN','ROLES_ALL','ROLES_DELETE')") public ResponseEntity delete(@PathVariable Long id){ - roleService.delete(id); + try { + roleService.delete(id); + }catch (Throwable e){ + ThrowableUtil.throwForeignKeyException(e, "该角色存在用户关联,请取消关联后再试"); + } return new ResponseEntity(HttpStatus.OK); } } diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/PermissionService.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/PermissionService.java index eb424e5c..7873c11a 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/PermissionService.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/PermissionService.java @@ -8,6 +8,7 @@ import org.springframework.cache.annotation.CacheEvict; import org.springframework.cache.annotation.Cacheable; import java.util.List; +import java.util.Set; /** * @author Zheng Jie @@ -41,10 +42,10 @@ public interface PermissionService { /** * delete - * @param id + * @param permissions */ @CacheEvict(allEntries = true) - void delete(Long id); + void delete(Set permissions); /** * permission tree @@ -76,4 +77,6 @@ public interface PermissionService { */ @Cacheable(keyGenerator = "keyGenerator") List queryAll(PermissionQueryCriteria criteria); + + Set getDeletePermission(List permissions, Set permissionSet); } diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/RoleService.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/RoleService.java index d49870ef..d147417d 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/RoleService.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/RoleService.java @@ -1,6 +1,5 @@ package me.zhengjie.modules.system.service; -import me.zhengjie.modules.system.domain.Menu; import me.zhengjie.modules.system.domain.Role; import me.zhengjie.modules.system.service.dto.RoleDTO; import me.zhengjie.modules.system.service.dto.RoleQueryCriteria; @@ -10,7 +9,6 @@ import org.springframework.cache.annotation.CacheEvict; import org.springframework.cache.annotation.Cacheable; import org.springframework.data.domain.Pageable; -import javax.servlet.http.HttpServletResponse; import java.util.List; import java.util.Set; @@ -80,7 +78,7 @@ public interface RoleService { void updateMenu(Role resources, RoleDTO roleDTO); @CacheEvict(allEntries = true) - void untiedMenu(Menu menu); + void untiedMenu(Long id); /** * queryAll @@ -106,4 +104,7 @@ public interface RoleService { */ @Cacheable(keyGenerator = "keyGenerator") List queryAll(RoleQueryCriteria criteria); + + @CacheEvict(allEntries = true) + void untiedPermission(Long id); } diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/MenuServiceImpl.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/MenuServiceImpl.java index 01f28eac..8c2dce67 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/MenuServiceImpl.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/MenuServiceImpl.java @@ -134,7 +134,7 @@ public class MenuServiceImpl implements MenuService { @Transactional(rollbackFor = Exception.class) public void delete(Set menuSet) { for (Menu menu : menuSet) { - roleService.untiedMenu(menu); + roleService.untiedMenu(menu.getId()); menuRepository.deleteById(menu.getId()); } } diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/PermissionServiceImpl.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/PermissionServiceImpl.java index ea521a79..e8c48c76 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/PermissionServiceImpl.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/PermissionServiceImpl.java @@ -5,6 +5,7 @@ import me.zhengjie.exception.BadRequestException; import me.zhengjie.exception.EntityExistException; import me.zhengjie.modules.system.repository.PermissionRepository; import me.zhengjie.modules.system.service.PermissionService; +import me.zhengjie.modules.system.service.RoleService; import me.zhengjie.modules.system.service.dto.PermissionDTO; import me.zhengjie.modules.system.service.dto.PermissionQueryCriteria; import me.zhengjie.modules.system.service.mapper.PermissionMapper; @@ -30,6 +31,9 @@ public class PermissionServiceImpl implements PermissionService { @Autowired private PermissionMapper permissionMapper; + @Autowired + private RoleService roleService; + @Override public List queryAll(PermissionQueryCriteria criteria) { return permissionMapper.toDto(permissionRepository.findAll((root, criteriaQuery, criteriaBuilder) -> QueryHelp.getPredicate(root,criteria,criteriaBuilder))); @@ -74,14 +78,26 @@ public class PermissionServiceImpl implements PermissionService { permissionRepository.save(permission); } + @Override + public Set getDeletePermission(List permissions, Set permissionSet) { + // 递归找出待删除的菜单 + for (Permission permission : permissions) { + permissionSet.add(permission); + List permissionList = permissionRepository.findByPid(permission.getId()); + if(permissionList!=null && permissionList.size()!=0){ + getDeletePermission(permissionList, permissionSet); + } + } + return permissionSet; + } + @Override @Transactional(rollbackFor = Exception.class) - public void delete(Long id) { - List permissionList = permissionRepository.findByPid(id); - for (Permission permission : permissionList) { + public void delete(Set permissions) { + for (Permission permission : permissions) { + roleService.untiedPermission(permission.getId()); permissionRepository.delete(permission); } - permissionRepository.deleteById(id); } @Override diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/RoleServiceImpl.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/RoleServiceImpl.java index fdae7833..bc33f266 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/RoleServiceImpl.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/RoleServiceImpl.java @@ -1,6 +1,5 @@ package me.zhengjie.modules.system.service.impl; -import me.zhengjie.modules.system.domain.Menu; import me.zhengjie.modules.system.domain.Role; import me.zhengjie.exception.EntityExistException; import me.zhengjie.modules.system.repository.RoleRepository; @@ -10,7 +9,6 @@ import me.zhengjie.modules.system.service.dto.RoleQueryCriteria; import me.zhengjie.modules.system.service.dto.RoleSmallDTO; import me.zhengjie.modules.system.service.mapper.RoleMapper; import me.zhengjie.modules.system.service.mapper.RoleSmallMapper; -import me.zhengjie.utils.FileUtil; import me.zhengjie.utils.PageUtil; import me.zhengjie.utils.QueryHelp; import me.zhengjie.utils.ValidationUtil; @@ -20,8 +18,6 @@ import org.springframework.data.domain.Pageable; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Propagation; import org.springframework.transaction.annotation.Transactional; - -import javax.servlet.http.HttpServletResponse; import java.util.*; import java.util.stream.Collectors; @@ -112,13 +108,15 @@ public class RoleServiceImpl implements RoleService { } @Override - public void untiedMenu(Menu menu) { - Set roles = roleRepository.findByMenus_Id(menu.getId()); - for (Role role : roles) { - menu.getRoles().remove(role); - role.getMenus().remove(menu); - roleRepository.save(role); - } + @Transactional(rollbackFor = Exception.class) + public void untiedMenu(Long id) { + roleRepository.untiedMenu(id); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void untiedPermission(Long id) { + roleRepository.untiedPermission(id); } @Override From 08597902721c4032b686c25a069ce59668677347 Mon Sep 17 00:00:00 2001 From: dqjdda <201507802@qq.com> Date: Thu, 5 Sep 2019 16:05:59 +0800 Subject: [PATCH 08/14] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E8=8F=9C=E5=8D=95?= =?UTF-8?q?=E6=9F=A5=E8=AF=A2=E6=95=B0=E6=8D=AE=E9=87=8D=E5=A4=8D=E7=9A=84?= =?UTF-8?q?=E9=97=AE=E9=A2=98#112?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../modules/system/rest/JobController.java | 7 ++++++- .../system/service/dto/MenuSmallDTO.java | 18 ++++++++++++++++++ .../system/service/impl/MenuServiceImpl.java | 16 +++++++++------- .../system/service/mapper/MenuSmallMapper.java | 17 +++++++++++++++++ .../src/main/resources/generator.properties | 2 +- 5 files changed, 51 insertions(+), 9 deletions(-) create mode 100644 eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/MenuSmallDTO.java create mode 100644 eladmin-system/src/main/java/me/zhengjie/modules/system/service/mapper/MenuSmallMapper.java diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/rest/JobController.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/rest/JobController.java index 76d94886..5694ea0c 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/rest/JobController.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/rest/JobController.java @@ -6,6 +6,7 @@ import me.zhengjie.exception.BadRequestException; import me.zhengjie.modules.system.domain.Job; import me.zhengjie.modules.system.service.JobService; import me.zhengjie.modules.system.service.dto.JobQueryCriteria; +import me.zhengjie.utils.ThrowableUtil; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.domain.Pageable; import org.springframework.http.HttpStatus; @@ -64,7 +65,11 @@ public class JobController { @DeleteMapping(value = "/job/{id}") @PreAuthorize("hasAnyRole('ADMIN','USERJOB_ALL','USERJOB_DELETE')") public ResponseEntity delete(@PathVariable Long id){ - jobService.delete(id); + try { + jobService.delete(id); + }catch (Throwable e){ + ThrowableUtil.throwForeignKeyException(e, "该岗位存在用户关联,请取消关联后再试"); + } return new ResponseEntity(HttpStatus.OK); } } \ No newline at end of file diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/MenuSmallDTO.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/MenuSmallDTO.java new file mode 100644 index 00000000..90931281 --- /dev/null +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/MenuSmallDTO.java @@ -0,0 +1,18 @@ +package me.zhengjie.modules.system.service.dto; + +import lombok.Data; + +import java.sql.Timestamp; +import java.util.List; + +/** + * @author Zheng Jie + * @date 2018-12-17 + */ +@Data +public class MenuSmallDTO { + + private Long id; + + private String name; +} diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/MenuServiceImpl.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/MenuServiceImpl.java index 8c2dce67..da3242b7 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/MenuServiceImpl.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/MenuServiceImpl.java @@ -166,24 +166,26 @@ public class MenuServiceImpl implements MenuService { @Override public Map buildTree(List menuDTOS) { List trees = new ArrayList(); - + Set ids = new HashSet<>(); for (MenuDTO menuDTO : menuDTOS) { - - if ("0".equals(menuDTO.getPid().toString())) { + if (menuDTO.getPid() == 0) { trees.add(menuDTO); } - for (MenuDTO it : menuDTOS) { if (it.getPid().equals(menuDTO.getId())) { if (menuDTO.getChildren() == null) { menuDTO.setChildren(new ArrayList()); } menuDTO.getChildren().add(it); + ids.add(it.getId()); } } } Map map = new HashMap(); - map.put("content",trees.size() == 0?menuDTOS:trees); + if(trees.size() == 0){ + trees = menuDTOS.stream().filter(s -> !ids.contains(s.getId())).collect(Collectors.toList()); + } + map.put("content",trees); map.put("totalElements",menuDTOS!=null?menuDTOS.size():0); return map; } @@ -201,7 +203,7 @@ public class MenuServiceImpl implements MenuService { // 如果不是外链 if(!menuDTO.getIFrame()){ - if(menuDTO.getPid().equals(0L)){ + if(menuDTO.getPid() == 0){ //一级目录需要加斜杠,不然访问 会跳转404页面 menuVo.setPath("/" + menuDTO.getPath()); menuVo.setComponent(StrUtil.isEmpty(menuDTO.getComponent())?"Layout":menuDTO.getComponent()); @@ -215,7 +217,7 @@ public class MenuServiceImpl implements MenuService { menuVo.setRedirect("noredirect"); menuVo.setChildren(buildMenus(menuDTOList)); // 处理是一级菜单并且没有子菜单的情况 - } else if(menuDTO.getPid().equals(0L)){ + } else if(menuDTO.getPid() == 0){ MenuVo menuVo1 = new MenuVo(); menuVo1.setMeta(menuVo.getMeta()); // 非外链 diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/mapper/MenuSmallMapper.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/mapper/MenuSmallMapper.java new file mode 100644 index 00000000..a1581c3a --- /dev/null +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/mapper/MenuSmallMapper.java @@ -0,0 +1,17 @@ +package me.zhengjie.modules.system.service.mapper; + +import me.zhengjie.mapper.EntityMapper; +import me.zhengjie.modules.system.domain.Menu; +import me.zhengjie.modules.system.service.dto.MenuDTO; +import me.zhengjie.modules.system.service.dto.MenuSmallDTO; +import org.mapstruct.Mapper; +import org.mapstruct.ReportingPolicy; + +/** + * @author Zheng Jie + * @date 2018-12-17 + */ +@Mapper(componentModel = "spring",uses = {},unmappedTargetPolicy = ReportingPolicy.IGNORE) +public interface MenuSmallMapper extends EntityMapper { + +} diff --git a/eladmin-system/src/main/resources/generator.properties b/eladmin-system/src/main/resources/generator.properties index b4d3d644..2ed93706 100644 --- a/eladmin-system/src/main/resources/generator.properties +++ b/eladmin-system/src/main/resources/generator.properties @@ -1,4 +1,4 @@ -#ݿתjava +#数据库类型转Java类型 tinyint=Integer smallint=Integer mediumint=Integer From 76242d4d67bf33cbe06902640fadf5523b2288be Mon Sep 17 00:00:00 2001 From: dqjdda <201507802@qq.com> Date: Thu, 5 Sep 2019 16:07:19 +0800 Subject: [PATCH 09/14] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E8=8F=9C=E5=8D=95?= =?UTF-8?q?=E6=9F=A5=E8=AF=A2=E6=95=B0=E6=8D=AE=E9=87=8D=E5=A4=8D=E7=9A=84?= =?UTF-8?q?=E9=97=AE=E9=A2=98#112?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../system/service/dto/MenuSmallDTO.java | 18 ------------------ .../system/service/mapper/MenuSmallMapper.java | 17 ----------------- 2 files changed, 35 deletions(-) delete mode 100644 eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/MenuSmallDTO.java delete mode 100644 eladmin-system/src/main/java/me/zhengjie/modules/system/service/mapper/MenuSmallMapper.java diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/MenuSmallDTO.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/MenuSmallDTO.java deleted file mode 100644 index 90931281..00000000 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/MenuSmallDTO.java +++ /dev/null @@ -1,18 +0,0 @@ -package me.zhengjie.modules.system.service.dto; - -import lombok.Data; - -import java.sql.Timestamp; -import java.util.List; - -/** - * @author Zheng Jie - * @date 2018-12-17 - */ -@Data -public class MenuSmallDTO { - - private Long id; - - private String name; -} diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/mapper/MenuSmallMapper.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/mapper/MenuSmallMapper.java deleted file mode 100644 index a1581c3a..00000000 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/mapper/MenuSmallMapper.java +++ /dev/null @@ -1,17 +0,0 @@ -package me.zhengjie.modules.system.service.mapper; - -import me.zhengjie.mapper.EntityMapper; -import me.zhengjie.modules.system.domain.Menu; -import me.zhengjie.modules.system.service.dto.MenuDTO; -import me.zhengjie.modules.system.service.dto.MenuSmallDTO; -import org.mapstruct.Mapper; -import org.mapstruct.ReportingPolicy; - -/** - * @author Zheng Jie - * @date 2018-12-17 - */ -@Mapper(componentModel = "spring",uses = {},unmappedTargetPolicy = ReportingPolicy.IGNORE) -public interface MenuSmallMapper extends EntityMapper { - -} From a71243d9eba30bca63aff56f02f3fc8601fe8495 Mon Sep 17 00:00:00 2001 From: dqjdda <201507802@qq.com> Date: Sat, 7 Sep 2019 22:02:04 +0800 Subject: [PATCH 10/14] =?UTF-8?q?=E5=AE=8C=E6=88=90=E4=BA=86=E6=9C=AC?= =?UTF-8?q?=E5=9C=B0=E5=AD=98=E5=82=A8=E5=8A=9F=E8=83=BD=EF=BC=8C=E7=94=A8?= =?UTF-8?q?=E6=88=B7=E5=A4=B4=E5=83=8F=E5=AD=98=E5=82=A8=E6=96=B9=E5=BC=8F?= =?UTF-8?q?=E6=94=B9=E4=B8=BA=E6=9C=AC=E5=9C=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/me/zhengjie/redis/RedisConfig.java | 1 + .../main/java/me/zhengjie/utils/FileUtil.java | 69 +++++++++- .../me/zhengjie/config/ConfigurerAdapter.java | 30 ++--- .../security/config/SecurityConfig.java | 5 + .../zhengjie/modules/system/domain/User.java | 5 +- .../modules/system/domain/UserAvatar.java | 36 ++++++ .../repository/UserAvatarRepository.java | 15 +++ .../modules/system/rest/UserController.java | 3 +- .../modules/system/service/UserService.java | 6 +- .../system/service/impl/MenuServiceImpl.java | 8 +- .../system/service/impl/UserServiceImpl.java | 34 +++-- .../system/service/mapper/UserMapper.java | 5 + .../main/resources/config/application-dev.yml | 10 +- .../resources/config/application-prod.yml | 10 +- .../template/generator/front/eForm.ftl | 2 +- .../java/me/zhengjie/domain/LocalStorage.java | 83 ++++++++++++ .../repository/LocalStorageRepository.java | 12 ++ .../repository/QiNiuConfigRepository.java | 6 + .../zhengjie/rest/LocalStorageController.java | 70 +++++++++++ .../me/zhengjie/rest/QiniuController.java | 1 + .../zhengjie/service/LocalStorageService.java | 69 ++++++++++ .../me/zhengjie/service/QiNiuService.java | 4 + .../zhengjie/service/dto/LocalStorageDTO.java | 41 ++++++ .../dto/LocalStorageQueryCriteria.java | 17 +++ .../service/impl/LocalStorageServiceImpl.java | 118 ++++++++++++++++++ .../service/impl/QiNiuServiceImpl.java | 18 +-- .../service/mapper/LocalStorageMapper.java | 16 +++ sql/eladmin.sql | 86 +++++++++---- 28 files changed, 703 insertions(+), 77 deletions(-) create mode 100644 eladmin-system/src/main/java/me/zhengjie/modules/system/domain/UserAvatar.java create mode 100644 eladmin-system/src/main/java/me/zhengjie/modules/system/repository/UserAvatarRepository.java create mode 100644 eladmin-tools/src/main/java/me/zhengjie/domain/LocalStorage.java create mode 100644 eladmin-tools/src/main/java/me/zhengjie/repository/LocalStorageRepository.java create mode 100644 eladmin-tools/src/main/java/me/zhengjie/rest/LocalStorageController.java create mode 100644 eladmin-tools/src/main/java/me/zhengjie/service/LocalStorageService.java create mode 100644 eladmin-tools/src/main/java/me/zhengjie/service/dto/LocalStorageDTO.java create mode 100644 eladmin-tools/src/main/java/me/zhengjie/service/dto/LocalStorageQueryCriteria.java create mode 100644 eladmin-tools/src/main/java/me/zhengjie/service/impl/LocalStorageServiceImpl.java create mode 100644 eladmin-tools/src/main/java/me/zhengjie/service/mapper/LocalStorageMapper.java diff --git a/eladmin-common/src/main/java/me/zhengjie/redis/RedisConfig.java b/eladmin-common/src/main/java/me/zhengjie/redis/RedisConfig.java index a9486165..e72ae435 100644 --- a/eladmin-common/src/main/java/me/zhengjie/redis/RedisConfig.java +++ b/eladmin-common/src/main/java/me/zhengjie/redis/RedisConfig.java @@ -61,6 +61,7 @@ public class RedisConfig extends CachingConfigurerSupport { // 建议使用这种方式,小范围指定白名单 ParserConfig.getGlobalInstance().addAccept("me.zhengjie.domain"); ParserConfig.getGlobalInstance().addAccept("me.zhengjie.modules.system.service.dto"); + ParserConfig.getGlobalInstance().addAccept("me.zhengjie.service.dto"); ParserConfig.getGlobalInstance().addAccept("me.zhengjie.modules.system.domain"); ParserConfig.getGlobalInstance().addAccept("me.zhengjie.modules.quartz.domain"); ParserConfig.getGlobalInstance().addAccept("me.zhengjie.modules.monitor.domain"); diff --git a/eladmin-common/src/main/java/me/zhengjie/utils/FileUtil.java b/eladmin-common/src/main/java/me/zhengjie/utils/FileUtil.java index 011b92bf..5872c46c 100644 --- a/eladmin-common/src/main/java/me/zhengjie/utils/FileUtil.java +++ b/eladmin-common/src/main/java/me/zhengjie/utils/FileUtil.java @@ -4,12 +4,16 @@ import cn.hutool.core.io.IoUtil; import cn.hutool.core.util.IdUtil; import cn.hutool.poi.excel.ExcelUtil; import cn.hutool.poi.excel.ExcelWriter; +import me.zhengjie.exception.BadRequestException; import org.springframework.web.multipart.MultipartFile; +import sun.misc.BASE64Encoder; import javax.servlet.ServletOutputStream; import javax.servlet.http.HttpServletResponse; import java.io.*; import java.text.DecimalFormat; +import java.text.SimpleDateFormat; +import java.util.Date; import java.util.List; import java.util.Map; @@ -107,7 +111,7 @@ public class FileUtil extends cn.hutool.core.io.FileUtil { * @param size * @return */ - public static String getSize(int size){ + public static String getSize(long size){ String resultSize = ""; if (size / GB >= 1) { //如果当前Byte的值大于等于1GB @@ -147,6 +151,47 @@ public class FileUtil extends cn.hutool.core.io.FileUtil { return file; } + /** + * 将文件名解析成文件的上传路径 + * + * @param file + * @param filePath + * @return 上传到服务器的文件名 + */ + public static File upload(MultipartFile file, String filePath) { + Date date = new Date(); + SimpleDateFormat format = new SimpleDateFormat("yyyyMMddhhmmssS"); + String name = getFileNameNoEx(file.getOriginalFilename()); + String suffix = getExtensionName(file.getOriginalFilename()); + String nowStr = "-" + format.format(date); + try { + String fileName = name + nowStr + "." + suffix; + String path = filePath + fileName; + File dest = new File(path); + // 检测是否存在目录 + if (!dest.getParentFile().exists()) { + dest.getParentFile().mkdirs();// 新建文件夹 + } + String d = dest.getPath(); + file.transferTo(dest);// 文件写入 + return dest; + } catch (Exception e) { + e.printStackTrace(); + } + return null; + } + + public static String fileToBase64(File file) throws Exception { + FileInputStream inputFile = new FileInputStream(file); + String base64 =null; + byte[] buffer = new byte[(int)file.length()]; + inputFile.read(buffer); + inputFile.close(); + base64=new BASE64Encoder().encode(buffer); + String encoded = base64.replaceAll("[\\s*\t\n\r]", ""); + return encoded; + } + /** * 导出excel * @param list @@ -174,4 +219,26 @@ public class FileUtil extends cn.hutool.core.io.FileUtil { //此处记得关闭输出Servlet流 IoUtil.close(out); } + + public static String getFileType(String type) { + String documents = "txt doc pdf ppt pps xlsx xls"; + String music = "mp3 wav wma mpa ram ra aac aif m4a"; + String video = "avi mpg mpe mpeg asf wmv mov qt rm mp4 flv m4v webm ogv ogg"; + String image = "bmp dib pcp dif wmf gif jpg tif eps psd cdr iff tga pcd mpt png jpeg"; + if(image.indexOf(type) != -1){ + return "图片"; + } else if(documents.indexOf(type) != -1){ + return "文档"; + } else if(music.indexOf(type) != -1){ + return "音乐"; + } else if(video.indexOf(type) != -1){ + return "视频"; + } else return "其他"; + } + + public static void checkSize(long maxSize, long size) { + if(size > (maxSize * 1024 * 1024)){ + throw new BadRequestException("文件超出规定大小"); + } + } } diff --git a/eladmin-system/src/main/java/me/zhengjie/config/ConfigurerAdapter.java b/eladmin-system/src/main/java/me/zhengjie/config/ConfigurerAdapter.java index 24d0b831..87d2d15d 100644 --- a/eladmin-system/src/main/java/me/zhengjie/config/ConfigurerAdapter.java +++ b/eladmin-system/src/main/java/me/zhengjie/config/ConfigurerAdapter.java @@ -3,6 +3,7 @@ package me.zhengjie.config; import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.module.SimpleModule; import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; +import org.springframework.beans.factory.annotation.Value; import org.springframework.context.annotation.Configuration; import org.springframework.http.converter.HttpMessageConverter; import org.springframework.http.converter.StringHttpMessageConverter; @@ -25,6 +26,12 @@ import java.util.List; @EnableWebMvc public class ConfigurerAdapter implements WebMvcConfigurer { + @Value("${file.path}") + private String path; + + @Value("${file.avatar}") + private String avatar; + @Override public void addCorsMappings(CorsRegistry registry) { registry.addMapping("/**") @@ -35,27 +42,12 @@ public class ConfigurerAdapter implements WebMvcConfigurer { } -// 可解决Long 类型在 前端精度丢失的问题, 如不想全局 直接添加注解 @JsonSerialize(using= ToStringSerializer.class) 到相应的字段 - -// @Override -// public void configureMessageConverters(List> converters) { -// -// MappingJackson2HttpMessageConverter jackson2HttpMessageConverter = -// new MappingJackson2HttpMessageConverter(); -// -// ObjectMapper objectMapper = new ObjectMapper(); -// SimpleModule simpleModule = new SimpleModule(); -// simpleModule.addSerializer(BigInteger.class, ToStringSerializer.instance); -// simpleModule.addSerializer(Long.class, ToStringSerializer.instance); -// simpleModule.addSerializer(Long.TYPE, ToStringSerializer.instance); -// objectMapper.registerModule(simpleModule); -// jackson2HttpMessageConverter.setObjectMapper(objectMapper); -// converters.add(jackson2HttpMessageConverter); -// converters.add(new StringHttpMessageConverter(Charset.forName("UTF-8"))); -// } - @Override public void addResourceHandlers(ResourceHandlerRegistry registry) { + String avatarUtl = "file:" + avatar.replace("\\","/"); + String pathUtl = "file:" + path.replace("\\","/"); + registry.addResourceHandler("/avatar/**").addResourceLocations(avatarUtl).setCachePeriod(0); + registry.addResourceHandler("/file/**").addResourceLocations(pathUtl).setCachePeriod(0); registry.addResourceHandler("/**").addResourceLocations("classpath:/META-INF/resources/").setCachePeriod(0); } } diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/security/config/SecurityConfig.java b/eladmin-system/src/main/java/me/zhengjie/modules/security/config/SecurityConfig.java index d7f006c1..d10bd218 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/security/config/SecurityConfig.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/security/config/SecurityConfig.java @@ -106,6 +106,11 @@ public class SecurityConfig extends WebSecurityConfigurerAdapter { // 接口限流测试 .antMatchers("/test/**").anonymous() + // 文件 + .antMatchers("/avatar/**").anonymous() + .antMatchers("/file/**").anonymous() + + // 放行OPTIONS请求 .antMatchers(HttpMethod.OPTIONS, "/**").anonymous() .antMatchers("/druid/**").anonymous() diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/domain/User.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/domain/User.java index b801b558..0bb62850 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/domain/User.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/domain/User.java @@ -31,7 +31,9 @@ public class User implements Serializable { @Column(unique = true) private String username; - private String avatar; + @OneToOne + @JoinColumn(name = "avatar_id") + private UserAvatar userAvatar; @NotBlank @Pattern(regexp = "([a-z0-9A-Z]+[-|\\.]?)+[a-z0-9A-Z]@([a-z0-9A-Z]+(-[a-z0-9A-Z]+)?\\.)+[a-zA-Z]{2,}",message = "格式错误") @@ -69,7 +71,6 @@ public class User implements Serializable { return "User{" + "id=" + id + ", username='" + username + '\'' + - ", avatar='" + avatar + '\'' + ", email='" + email + '\'' + ", enabled=" + enabled + ", password='" + password + '\'' + diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/domain/UserAvatar.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/domain/UserAvatar.java new file mode 100644 index 00000000..bba30dc2 --- /dev/null +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/domain/UserAvatar.java @@ -0,0 +1,36 @@ +package me.zhengjie.modules.system.domain; + +import cn.hutool.core.util.ObjectUtil; +import lombok.Data; +import lombok.NoArgsConstructor; + +import javax.persistence.*; +import java.sql.Timestamp; + +/** + * @author Zheng Jie + * @date 2019年9月7日 16:16:59 + */ +@Entity +@Table(name = "user_avatar") +@Data +@NoArgsConstructor +public class UserAvatar { + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long id; + + private String realName; + + private String path; + + private String size; + + public UserAvatar(UserAvatar userAvatar,String realName, String path, String size) { + this.id = ObjectUtil.isNotEmpty(userAvatar) ? userAvatar.getId() : null; + this.realName = realName; + this.path = path; + this.size = size; + } +} diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/repository/UserAvatarRepository.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/repository/UserAvatarRepository.java new file mode 100644 index 00000000..38136f85 --- /dev/null +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/repository/UserAvatarRepository.java @@ -0,0 +1,15 @@ +package me.zhengjie.modules.system.repository; + +import me.zhengjie.modules.system.domain.UserAvatar; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.JpaSpecificationExecutor; + +import java.util.Date; + +/** + * @author Zheng Jie + * @date 2018-11-22 + */ +public interface UserAvatarRepository extends JpaRepository, JpaSpecificationExecutor { + +} diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/rest/UserController.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/rest/UserController.java index 9e4b8d44..35706f73 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/rest/UserController.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/rest/UserController.java @@ -155,8 +155,7 @@ public class UserController { */ @PostMapping(value = "/users/updateAvatar") public ResponseEntity updateAvatar(@RequestParam MultipartFile file){ - Picture picture = pictureService.upload(file, SecurityUtils.getUsername()); - userService.updateAvatar(SecurityUtils.getUsername(),picture.getUrl()); + userService.updateAvatar(file); return new ResponseEntity(HttpStatus.OK); } diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/UserService.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/UserService.java index fd16c599..1414e1f8 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/UserService.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/UserService.java @@ -8,6 +8,7 @@ import org.springframework.cache.annotation.CacheConfig; import org.springframework.cache.annotation.CacheEvict; import org.springframework.cache.annotation.Cacheable; import org.springframework.data.domain.Pageable; +import org.springframework.web.multipart.MultipartFile; import javax.servlet.http.HttpServletResponse; import java.util.List; @@ -67,11 +68,10 @@ public interface UserService { /** * 修改头像 - * @param username - * @param url + * @param file */ @CacheEvict(allEntries = true) - void updateAvatar(String username, String url); + void updateAvatar(MultipartFile file); /** * 修改邮箱 diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/MenuServiceImpl.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/MenuServiceImpl.java index da3242b7..1f8afdf4 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/MenuServiceImpl.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/MenuServiceImpl.java @@ -197,15 +197,13 @@ public class MenuServiceImpl implements MenuService { if (menuDTO!=null){ List menuDTOList = menuDTO.getChildren(); MenuVo menuVo = new MenuVo(); - menuVo.setName(ObjectUtil.isNotEmpty(menuDTO.getComponentName()) ? menuDTO.getComponentName() : RandomUtil.randomString(5)); - menuVo.setPath(menuDTO.getPath()); + menuVo.setName(ObjectUtil.isNotEmpty(menuDTO.getComponentName()) ? menuDTO.getComponentName() : menuDTO.getName()); + // 一级目录需要加斜杠,不然会报警告 + menuVo.setPath(menuDTO.getPid() == 0 ? "/" + menuDTO.getPath() :menuDTO.getPath()); menuVo.setHidden(menuDTO.getHidden()); - // 如果不是外链 if(!menuDTO.getIFrame()){ if(menuDTO.getPid() == 0){ - //一级目录需要加斜杠,不然访问 会跳转404页面 - menuVo.setPath("/" + menuDTO.getPath()); menuVo.setComponent(StrUtil.isEmpty(menuDTO.getComponent())?"Layout":menuDTO.getComponent()); }else if(!StrUtil.isEmpty(menuDTO.getComponent())){ menuVo.setComponent(menuDTO.getComponent()); diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/UserServiceImpl.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/UserServiceImpl.java index eeb40847..32921765 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/UserServiceImpl.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/UserServiceImpl.java @@ -7,24 +7,27 @@ import me.zhengjie.modules.monitor.service.RedisService; import me.zhengjie.modules.system.domain.User; import me.zhengjie.exception.EntityExistException; import me.zhengjie.exception.EntityNotFoundException; +import me.zhengjie.modules.system.domain.UserAvatar; +import me.zhengjie.modules.system.repository.UserAvatarRepository; import me.zhengjie.modules.system.repository.UserRepository; import me.zhengjie.modules.system.service.UserService; import me.zhengjie.modules.system.service.dto.RoleSmallDTO; import me.zhengjie.modules.system.service.dto.UserDTO; import me.zhengjie.modules.system.service.dto.UserQueryCriteria; import me.zhengjie.modules.system.service.mapper.UserMapper; -import me.zhengjie.utils.FileUtil; -import me.zhengjie.utils.PageUtil; -import me.zhengjie.utils.QueryHelp; -import me.zhengjie.utils.ValidationUtil; +import me.zhengjie.utils.*; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Propagation; import org.springframework.transaction.annotation.Transactional; +import org.springframework.web.multipart.MultipartFile; + import javax.servlet.ServletOutputStream; import javax.servlet.http.HttpServletResponse; +import java.io.File; import java.io.IOException; import java.util.*; import java.util.stream.Collectors; @@ -46,6 +49,12 @@ public class UserServiceImpl implements UserService { @Autowired private RedisService redisService; + @Autowired + private UserAvatarRepository userAvatarRepository; + + @Value("${file.avatar}") + private String avatar; + @Override public Object queryAll(UserQueryCriteria criteria, Pageable pageable) { Page page = userRepository.findAll((root, criteriaQuery, criteriaBuilder) -> QueryHelp.getPredicate(root,criteria,criteriaBuilder),pageable); @@ -79,7 +88,6 @@ public class UserServiceImpl implements UserService { // 默认密码 123456,此密码是加密后的字符 resources.setPassword("e10adc3949ba59abbe56e057f20f883e"); - resources.setAvatar("https://i.loli.net/2019/04/04/5ca5b971e1548.jpeg"); return userMapper.toDto(userRepository.save(resources)); } @@ -149,8 +157,20 @@ public class UserServiceImpl implements UserService { @Override @Transactional(rollbackFor = Exception.class) - public void updateAvatar(String username, String url) { - userRepository.updateAvatar(username,url); + public void updateAvatar(MultipartFile multipartFile) { + User user = userRepository.findByUsername(SecurityUtils.getUsername()); + UserAvatar userAvatar = user.getUserAvatar(); + String oldPath = ""; + if(userAvatar != null){ + oldPath = userAvatar.getPath(); + } + File file = FileUtil.upload(multipartFile, avatar); + userAvatar = userAvatarRepository.save(new UserAvatar(userAvatar,file.getName(), file.getPath(), FileUtil.getSize(multipartFile.getSize()))); + user.setUserAvatar(userAvatar); + userRepository.save(user); + if(StringUtils.isNotBlank(oldPath)){ + FileUtil.del(oldPath); + } } @Override diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/mapper/UserMapper.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/mapper/UserMapper.java index 50cbfb8f..248003a3 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/mapper/UserMapper.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/mapper/UserMapper.java @@ -4,8 +4,11 @@ import me.zhengjie.modules.system.domain.User; import me.zhengjie.mapper.EntityMapper; import me.zhengjie.modules.system.service.dto.UserDTO; import org.mapstruct.Mapper; +import org.mapstruct.Mapping; import org.mapstruct.ReportingPolicy; +import java.util.List; + /** * @author Zheng Jie * @date 2018-11-23 @@ -13,4 +16,6 @@ import org.mapstruct.ReportingPolicy; @Mapper(componentModel = "spring",uses = {RoleMapper.class, DeptMapper.class, JobMapper.class},unmappedTargetPolicy = ReportingPolicy.IGNORE) public interface UserMapper extends EntityMapper { + @Mapping(source = "user.userAvatar.realName",target = "avatar") + UserDTO toDto(User user); } diff --git a/eladmin-system/src/main/resources/config/application-dev.yml b/eladmin-system/src/main/resources/config/application-dev.yml index 58489bb7..45b7a500 100644 --- a/eladmin-system/src/main/resources/config/application-dev.yml +++ b/eladmin-system/src/main/resources/config/application-dev.yml @@ -59,4 +59,12 @@ generator: #是否开启 swagger-ui swagger: - enabled: true \ No newline at end of file + enabled: true + +# 文件存储路径 +file: + path: C:\eladmin\file\ + avatar: C:\eladmin\avatar\ + # 文件大小 /M + maxSize: 100 + avatarMaxSize: 5 \ No newline at end of file diff --git a/eladmin-system/src/main/resources/config/application-prod.yml b/eladmin-system/src/main/resources/config/application-prod.yml index dfd1d716..a1ae2b74 100644 --- a/eladmin-system/src/main/resources/config/application-prod.yml +++ b/eladmin-system/src/main/resources/config/application-prod.yml @@ -68,4 +68,12 @@ generator: #是否开启 swagger-ui swagger: - enabled: false \ No newline at end of file + enabled: false + +# 文件存储路径 +file: + path: /home/eladmin/file/ + avatar: /home/eladmin/avatar/ + # 文件大小 /M + maxSize: 100 + avatarMaxSize: 5 \ No newline at end of file diff --git a/eladmin-system/src/main/resources/template/generator/front/eForm.ftl b/eladmin-system/src/main/resources/template/generator/front/eForm.ftl index 84acd88f..1e8fbcd9 100644 --- a/eladmin-system/src/main/resources/template/generator/front/eForm.ftl +++ b/eladmin-system/src/main/resources/template/generator/front/eForm.ftl @@ -1,5 +1,5 @@