From 343ce346db731482c1e1042b8f925e486b3acad0 Mon Sep 17 00:00:00 2001 From: zhengjie Date: Sat, 18 May 2019 12:21:45 +0800 Subject: [PATCH] =?UTF-8?q?v1.9=20=E5=8F=91=E5=B8=83=EF=BC=8C=E8=AF=A6?= =?UTF-8?q?=E6=83=85=E6=9F=A5=E7=9C=8B=E5=8F=91=E8=A1=8C=E7=89=88=E8=AF=B4?= =?UTF-8?q?=E6=98=8E?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 19 +++-- eladmin-common/pom.xml | 2 +- eladmin-generator/pom.xml | 4 +- .../service/impl/GeneratorServiceImpl.java | 2 +- eladmin-logging/pom.xml | 4 +- eladmin-system/pom.xml | 6 +- eladmin-system/sql/eladmin.sql | 69 ++++++++++++------- .../zhengjie/modules/system/domain/Role.java | 4 ++ .../modules/system/rest/RoleController.java | 26 ++++++- .../modules/system/rest/UserController.java | 26 +++++++ .../modules/system/service/RoleService.java | 3 + .../modules/system/service/dto/RoleDTO.java | 2 + .../system/service/impl/RoleServiceImpl.java | 10 +++ .../system/service/impl/UserServiceImpl.java | 2 +- .../service/query/MenuQueryService.java | 3 - .../service/query/RoleQueryService.java | 4 +- .../template/generator/front/edit.ftl | 2 +- .../template/generator/front/header.ftl | 2 +- .../template/generator/front/index.ftl | 2 +- eladmin-tools/pom.xml | 4 +- .../me/zhengjie/rest/PictureController.java | 13 ++++ .../me/zhengjie/rest/QiniuController.java | 16 +++-- .../me/zhengjie/service/PictureService.java | 7 ++ .../me/zhengjie/service/QiNiuService.java | 8 +++ .../service/impl/PictureServiceImpl.java | 7 ++ .../service/impl/QiNiuServiceImpl.java | 7 ++ .../service/query/PictureQueryService.java | 7 ++ pom.xml | 2 +- 28 files changed, 201 insertions(+), 62 deletions(-) diff --git a/README.md b/README.md index 66273189..4876b103 100644 --- a/README.md +++ b/README.md @@ -109,23 +109,20 @@ #### 系统预览 - - + + - - + + - - + + - - - - - + +
diff --git a/eladmin-common/pom.xml b/eladmin-common/pom.xml index 672f4467..72927a26 100644 --- a/eladmin-common/pom.xml +++ b/eladmin-common/pom.xml @@ -5,7 +5,7 @@ eladmin me.zhengjie - 1.8 + 1.9 4.0.0 diff --git a/eladmin-generator/pom.xml b/eladmin-generator/pom.xml index 403f4012..17dde4e3 100644 --- a/eladmin-generator/pom.xml +++ b/eladmin-generator/pom.xml @@ -5,7 +5,7 @@ eladmin me.zhengjie - 1.8 + 1.9 4.0.0 @@ -19,7 +19,7 @@ me.zhengjie eladmin-common - 1.8 + 1.9 diff --git a/eladmin-generator/src/main/java/me/zhengjie/service/impl/GeneratorServiceImpl.java b/eladmin-generator/src/main/java/me/zhengjie/service/impl/GeneratorServiceImpl.java index 02a189e8..6f2b3aec 100644 --- a/eladmin-generator/src/main/java/me/zhengjie/service/impl/GeneratorServiceImpl.java +++ b/eladmin-generator/src/main/java/me/zhengjie/service/impl/GeneratorServiceImpl.java @@ -35,7 +35,7 @@ public class GeneratorServiceImpl implements GeneratorService { sql.append("order by table_name"); Query query = em.createNativeQuery(sql.toString()); query.setFirstResult(startEnd[0]); - query.setMaxResults(startEnd[1]); + query.setMaxResults(startEnd[1]-startEnd[0]); System.out.println(sql.toString()); List result = query.getResultList(); diff --git a/eladmin-logging/pom.xml b/eladmin-logging/pom.xml index c4a944dd..76335681 100644 --- a/eladmin-logging/pom.xml +++ b/eladmin-logging/pom.xml @@ -5,7 +5,7 @@ eladmin me.zhengjie - 1.8 + 1.9 4.0.0 @@ -15,7 +15,7 @@ me.zhengjie eladmin-common - 1.8 + 1.9 \ No newline at end of file diff --git a/eladmin-system/pom.xml b/eladmin-system/pom.xml index df5f5c4b..359eed50 100644 --- a/eladmin-system/pom.xml +++ b/eladmin-system/pom.xml @@ -5,7 +5,7 @@ eladmin me.zhengjie - 1.8 + 1.9 4.0.0 @@ -20,7 +20,7 @@ me.zhengjie eladmin-generator - 1.8 + 1.9 me.zhengjie @@ -32,7 +32,7 @@ me.zhengjie eladmin-tools - 1.8 + 1.9 diff --git a/eladmin-system/sql/eladmin.sql b/eladmin-system/sql/eladmin.sql index 00234a59..d9ce7a38 100644 --- a/eladmin-system/sql/eladmin.sql +++ b/eladmin-system/sql/eladmin.sql @@ -10,7 +10,7 @@ Target Server Type : MYSQL Target Server Version : 50562 File Encoding : 65001 -Date: 2019-04-11 11:11:09 +Date: 2019-05-18 11:18:44 */ SET FOREIGN_KEY_CHECKS=0; @@ -34,11 +34,6 @@ CREATE TABLE `alipay_config` ( PRIMARY KEY (`id`) USING BTREE ) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8; --- ---------------------------- --- 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', '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', 'http://api.auauz.net/api/aliPay/return', 'RSA2', '2088102176044281'); - -- ---------------------------- -- Table structure for dept -- ---------------------------- @@ -185,7 +180,7 @@ CREATE TABLE `log` ( `time` bigint(20) DEFAULT NULL, `username` varchar(255) DEFAULT NULL, PRIMARY KEY (`id`) -) ENGINE=InnoDB AUTO_INCREMENT=4954 DEFAULT CHARSET=utf8; +) ENGINE=InnoDB AUTO_INCREMENT=8176 DEFAULT CHARSET=utf8; -- ---------------------------- -- Records of log @@ -256,7 +251,7 @@ CREATE TABLE `permission` ( `name` varchar(255) 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=56 DEFAULT CHARSET=utf8; -- ---------------------------- -- Records of permission @@ -327,7 +322,11 @@ CREATE TABLE `picture` ( `username` varchar(255) DEFAULT NULL COMMENT '用户名称', `width` varchar(255) DEFAULT NULL COMMENT '图片宽度', PRIMARY KEY (`id`) USING BTREE -) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8; +) ENGINE=InnoDB AUTO_INCREMENT=12 DEFAULT CHARSET=utf8; + +-- ---------------------------- +-- Records of picture +-- ---------------------------- -- ---------------------------- -- Table structure for qiniu_config @@ -357,7 +356,11 @@ CREATE TABLE `qiniu_content` ( `update_time` datetime DEFAULT NULL COMMENT '上传或同步的时间', `url` varchar(255) DEFAULT NULL COMMENT '文件url', PRIMARY KEY (`id`) USING BTREE -) ENGINE=InnoDB AUTO_INCREMENT=21 DEFAULT CHARSET=utf8; +) ENGINE=InnoDB AUTO_INCREMENT=99 DEFAULT CHARSET=utf8; + +-- ---------------------------- +-- Records of qiniu_content +-- ---------------------------- -- ---------------------------- -- Table structure for quartz_job @@ -399,7 +402,7 @@ CREATE TABLE `quartz_log` ( `params` varchar(255) DEFAULT NULL, `time` bigint(20) DEFAULT NULL, PRIMARY KEY (`id`) USING BTREE -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8; -- ---------------------------- -- Records of quartz_log @@ -415,14 +418,16 @@ CREATE TABLE `role` ( `name` varchar(255) NOT NULL COMMENT '名称', `remark` varchar(255) DEFAULT NULL COMMENT '备注', `data_scope` varchar(255) DEFAULT NULL, + `level` int(255) DEFAULT NULL, PRIMARY KEY (`id`) USING BTREE -) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8; +) ENGINE=InnoDB AUTO_INCREMENT=14 DEFAULT CHARSET=utf8; -- ---------------------------- -- Records of role -- ---------------------------- -INSERT INTO `role` VALUES ('1', '2018-11-23 11:04:37', '管理员', '系统所有权', '全部'); -INSERT INTO `role` VALUES ('2', '2018-11-23 13:09:06', '普通用户', '用于测试菜单与权限', '自定义'); +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 @@ -440,7 +445,6 @@ CREATE TABLE `roles_depts` ( -- ---------------------------- -- Records of roles_depts -- ---------------------------- -INSERT INTO `roles_depts` VALUES ('2', '7'); -- ---------------------------- -- Table structure for roles_menus @@ -497,9 +501,13 @@ 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 ('7', '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 ('12', '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'); @@ -510,12 +518,18 @@ 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 ('32', '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 @@ -534,17 +548,24 @@ CREATE TABLE `roles_permissions` ( -- Records of roles_permissions -- ---------------------------- INSERT INTO `roles_permissions` VALUES ('1', '1'); +INSERT INTO `roles_permissions` VALUES ('4', '2'); INSERT INTO `roles_permissions` VALUES ('2', '3'); -INSERT INTO `roles_permissions` VALUES ('2', '4'); +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 ('4', '6'); 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 @@ -575,8 +596,8 @@ CREATE TABLE `user` ( -- 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-04-04 16:00:46', '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 ('3', 'https://i.loli.net/2019/04/04/5ca5b971e1548.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://i.loli.net/2019/04/04/5ca5b971e1548.jpeg', '2019-04-02 10:07:12', 'hr@eladmin.net', '1', 'e10adc3949ba59abbe56e057f20f883e', 'hr', null, '11', '15555555555', '8'); -- ---------------------------- -- Table structure for users_roles @@ -596,7 +617,7 @@ CREATE TABLE `users_roles` ( -- ---------------------------- INSERT INTO `users_roles` VALUES ('1', '1'); INSERT INTO `users_roles` VALUES ('3', '2'); -INSERT INTO `users_roles` VALUES ('5', '2'); +INSERT INTO `users_roles` VALUES ('5', '4'); -- ---------------------------- -- Table structure for verification_code @@ -613,6 +634,10 @@ CREATE TABLE `verification_code` ( PRIMARY KEY (`id`) USING BTREE ) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8; +-- ---------------------------- +-- Records of verification_code +-- ---------------------------- + -- ---------------------------- -- Table structure for visits -- ---------------------------- @@ -626,8 +651,4 @@ CREATE TABLE `visits` ( `week_day` varchar(255) DEFAULT NULL, PRIMARY KEY (`id`), UNIQUE KEY `UK_11aksgq87euk9bcyeesfs4vtp` (`date`) -) ENGINE=InnoDB AUTO_INCREMENT=20 DEFAULT CHARSET=utf8; - --- ---------------------------- --- Records of visits --- ---------------------------- +) ENGINE=InnoDB AUTO_INCREMENT=39 DEFAULT CHARSET=utf8; diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/domain/Role.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/domain/Role.java index 50cee209..56f363bd 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/domain/Role.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/domain/Role.java @@ -37,6 +37,10 @@ public class Role implements Serializable { @Column(name = "data_scope") private String dataScope = "本级"; + // 数值越小,级别越大 + @Column(name = "level") + private Integer level = 3; + @Column private String remark; 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 faddafe1..fa673d82 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 @@ -1,19 +1,29 @@ package me.zhengjie.modules.system.rest; +import cn.hutool.core.lang.Dict; import me.zhengjie.aop.log.Log; import me.zhengjie.modules.system.domain.Role; import me.zhengjie.exception.BadRequestException; +import me.zhengjie.modules.system.domain.User; import me.zhengjie.modules.system.service.RoleService; import me.zhengjie.modules.system.service.dto.RoleDTO; import me.zhengjie.modules.system.service.query.RoleQueryService; +import me.zhengjie.utils.SecurityUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.domain.Pageable; +import org.springframework.data.domain.Sort; +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.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; +import java.util.Collections; +import java.util.List; +import java.util.Set; +import java.util.stream.Collectors; + /** * @author jie * @date 2018-12-03 @@ -30,6 +40,11 @@ public class RoleController { private static final String ENTITY_NAME = "role"; + /** + * 获取单个role + * @param id + * @return + */ @GetMapping(value = "/roles/{id}") @PreAuthorize("hasAnyRole('ADMIN','ROLES_ALL','ROLES_SELECT')") public ResponseEntity getRoles(@PathVariable Long id){ @@ -42,8 +57,9 @@ public class RoleController { */ @GetMapping(value = "/roles/all") @PreAuthorize("hasAnyRole('ADMIN','ROLES_ALL','USER_ALL','USER_CREATE','USER_EDIT')") - public ResponseEntity getAll(){ - return new ResponseEntity(roleQueryService.queryAll(),HttpStatus.OK); + public ResponseEntity getAll(@PageableDefault(value = 2000, sort = {"level"}, direction = Sort.Direction.ASC) Pageable pageable){ + + return new ResponseEntity(roleQueryService.queryAll(pageable),HttpStatus.OK); } @Log("查询角色") @@ -53,6 +69,12 @@ public class RoleController { return new ResponseEntity(roleQueryService.queryAll(name,pageable),HttpStatus.OK); } + @GetMapping(value = "/roles/level") + public ResponseEntity getLevel(){ + List levels = roleService.findByUsers_Id(SecurityUtils.getUserId()).stream().map(Role::getLevel).collect(Collectors.toList()); + return new ResponseEntity(Dict.create().set("level", Collections.min(levels)),HttpStatus.OK); + } + @Log("新增角色") @PostMapping(value = "/roles") @PreAuthorize("hasAnyRole('ADMIN','ROLES_ALL','ROLES_CREATE')") 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 f5e6e6da..1440c142 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 @@ -4,9 +4,11 @@ import me.zhengjie.aop.log.Log; import me.zhengjie.config.DataScope; import me.zhengjie.domain.Picture; import me.zhengjie.domain.VerificationCode; +import me.zhengjie.modules.system.domain.Role; import me.zhengjie.modules.system.domain.User; import me.zhengjie.exception.BadRequestException; import me.zhengjie.modules.system.service.DeptService; +import me.zhengjie.modules.system.service.RoleService; import me.zhengjie.service.PictureService; import me.zhengjie.service.VerificationCodeService; import me.zhengjie.utils.*; @@ -25,6 +27,7 @@ import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; import java.util.*; +import java.util.stream.Collectors; /** * @author jie @@ -49,6 +52,9 @@ public class UserController { @Autowired private DeptService deptService; + @Autowired + private RoleService roleService; + @Autowired private VerificationCodeService verificationCodeService; @@ -96,6 +102,7 @@ public class UserController { if (resources.getId() != null) { throw new BadRequestException("A new "+ ENTITY_NAME +" cannot already have an ID"); } + checkLevel(resources); return new ResponseEntity(userService.create(resources),HttpStatus.CREATED); } @@ -103,6 +110,7 @@ public class UserController { @PutMapping(value = "/users") @PreAuthorize("hasAnyRole('ADMIN','USER_ALL','USER_EDIT')") public ResponseEntity update(@Validated(User.Update.class) @RequestBody User resources){ + checkLevel(resources); userService.update(resources); return new ResponseEntity(HttpStatus.NO_CONTENT); } @@ -111,6 +119,12 @@ public class UserController { @DeleteMapping(value = "/users/{id}") @PreAuthorize("hasAnyRole('ADMIN','USER_ALL','USER_DELETE')") public ResponseEntity delete(@PathVariable Long id){ + Integer currentLevel = Collections.min(roleService.findByUsers_Id(SecurityUtils.getUserId()).stream().map(Role::getLevel).collect(Collectors.toList())); + Integer optLevel = Collections.min(roleService.findByUsers_Id(id).stream().map(Role::getLevel).collect(Collectors.toList())); + + if (currentLevel > optLevel) { + throw new BadRequestException("角色权限不足"); + } userService.delete(id); return new ResponseEntity(HttpStatus.OK); } @@ -176,4 +190,16 @@ public class UserController { userService.updateEmail(userDetails.getUsername(),user.getEmail()); return new ResponseEntity(HttpStatus.OK); } + + /** + * 如果当前用户的角色级别低于创建用户的角色级别,则抛出权限不足的错误 + * @param resources + */ + private void checkLevel(User resources) { + Integer currentLevel = Collections.min(roleService.findByUsers_Id(SecurityUtils.getUserId()).stream().map(Role::getLevel).collect(Collectors.toList())); + Integer optLevel = roleService.findByRoles(resources.getRoles()); + if (currentLevel > optLevel) { + throw new BadRequestException("角色权限不足"); + } + } } 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 2771dabd..eb25d0aa 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 @@ -56,6 +56,9 @@ public interface RoleService { @Cacheable(key = "'findByUsers_Id:' + #p0") List findByUsers_Id(Long id); + @Cacheable(keyGenerator = "keyGenerator") + Integer findByRoles(Set roles); + /** * updatePermission * @param resources diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/RoleDTO.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/RoleDTO.java index e6ae2477..6055eb73 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/RoleDTO.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/RoleDTO.java @@ -18,6 +18,8 @@ public class RoleDTO implements Serializable { private String dataScope; + private Integer level; + private String remark; private Set permissions; 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 0edd8b92..2f56ef9d 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 @@ -65,6 +65,7 @@ public class RoleServiceImpl implements RoleService { role.setRemark(resources.getRemark()); role.setDataScope(resources.getDataScope()); role.setDepts(resources.getDepts()); + role.setLevel(resources.getLevel()); roleRepository.save(role); } @@ -102,4 +103,13 @@ public class RoleServiceImpl implements RoleService { public List findByUsers_Id(Long id) { return roleRepository.findByUsers_Id(id).stream().collect(Collectors.toList()); } + + @Override + public Integer findByRoles(Set roles) { + Set roleDTOS = new HashSet<>(); + for (Role role : roles) { + roleDTOS.add(findById(role.getId())); + } + return Collections.min(roleDTOS.stream().map(RoleDTO::getLevel).collect(Collectors.toList())); + } } 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 dec49693..1645911b 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 @@ -54,7 +54,7 @@ public class UserServiceImpl implements UserService { // 默认密码 123456,此密码是加密后的字符 resources.setPassword("e10adc3949ba59abbe56e057f20f883e"); - resources.setAvatar("https://aurora-1255840532.cos.ap-chengdu.myqcloud.com/8918a306ea314404835a9196585c4b75.jpeg"); + resources.setAvatar("https://i.loli.net/2019/04/04/5ca5b971e1548.jpeg"); return userMapper.toDto(userRepository.save(resources)); } diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/query/MenuQueryService.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/query/MenuQueryService.java index ae4ed6a3..6e9098ab 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/query/MenuQueryService.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/query/MenuQueryService.java @@ -55,9 +55,6 @@ public class MenuQueryService { List list = new ArrayList(); if(!ObjectUtils.isEmpty(name)){ - /** - * 模糊 - */ list.add(cb.like(root.get("name").as(String.class),"%"+name+"%")); } diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/query/RoleQueryService.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/query/RoleQueryService.java index 11c99316..1aaabef4 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/query/RoleQueryService.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/query/RoleQueryService.java @@ -49,8 +49,8 @@ public class RoleQueryService { * 分页 */ @Cacheable(keyGenerator = "keyGenerator") - public Object queryAll(){ - List roles = roleRepository.findAll(new Spec(null)); + public Object queryAll(Pageable pageable){ + List roles = roleRepository.findAll(new Spec(null),pageable).getContent(); return roleMapper.toDto(roles); } diff --git a/eladmin-system/src/main/resources/template/generator/front/edit.ftl b/eladmin-system/src/main/resources/template/generator/front/edit.ftl index 04a72fd1..c486b0c5 100644 --- a/eladmin-system/src/main/resources/template/generator/front/edit.ftl +++ b/eladmin-system/src/main/resources/template/generator/front/edit.ftl @@ -1,6 +1,6 @@ diff --git a/eladmin-system/src/main/resources/template/generator/front/header.ftl b/eladmin-system/src/main/resources/template/generator/front/header.ftl index ba4d334b..2045a0a1 100644 --- a/eladmin-system/src/main/resources/template/generator/front/header.ftl +++ b/eladmin-system/src/main/resources/template/generator/front/header.ftl @@ -6,7 +6,7 @@ - 搜索 + 搜索
diff --git a/eladmin-system/src/main/resources/template/generator/front/index.ftl b/eladmin-system/src/main/resources/template/generator/front/index.ftl index 26ed70d5..5b9e8601 100644 --- a/eladmin-system/src/main/resources/template/generator/front/index.ftl +++ b/eladmin-system/src/main/resources/template/generator/front/index.ftl @@ -32,7 +32,7 @@ 取消 确定
- 删除 + diff --git a/eladmin-tools/pom.xml b/eladmin-tools/pom.xml index 349e1fcf..2ee029bd 100644 --- a/eladmin-tools/pom.xml +++ b/eladmin-tools/pom.xml @@ -5,7 +5,7 @@ eladmin me.zhengjie - 1.8 + 1.9 4.0.0 @@ -22,7 +22,7 @@ me.zhengjie eladmin-logging - 1.8 + 1.9 diff --git a/eladmin-tools/src/main/java/me/zhengjie/rest/PictureController.java b/eladmin-tools/src/main/java/me/zhengjie/rest/PictureController.java index 285c6693..dc24ed8b 100644 --- a/eladmin-tools/src/main/java/me/zhengjie/rest/PictureController.java +++ b/eladmin-tools/src/main/java/me/zhengjie/rest/PictureController.java @@ -67,4 +67,17 @@ public class PictureController { pictureService.delete(pictureService.findById(id)); return new ResponseEntity(HttpStatus.OK); } + + /** + * 删除多张图片 + * @param ids + * @return + */ + @Log("删除图片") + @PreAuthorize("hasAnyRole('ADMIN','PICTURE_ALL','PICTURE_DELETE')") + @DeleteMapping(value = "/pictures") + public ResponseEntity deleteAll(@RequestBody Long[] ids) { + pictureService.deleteAll(ids); + return new ResponseEntity(HttpStatus.OK); + } } diff --git a/eladmin-tools/src/main/java/me/zhengjie/rest/QiniuController.java b/eladmin-tools/src/main/java/me/zhengjie/rest/QiniuController.java index db4b736c..2b523777 100644 --- a/eladmin-tools/src/main/java/me/zhengjie/rest/QiniuController.java +++ b/eladmin-tools/src/main/java/me/zhengjie/rest/QiniuController.java @@ -8,15 +8,11 @@ import me.zhengjie.service.QiNiuService; import me.zhengjie.service.query.QiNiuQueryService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.domain.Pageable; -import org.springframework.http.HttpHeaders; import org.springframework.http.HttpStatus; -import org.springframework.http.MediaType; import org.springframework.http.ResponseEntity; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; - -import java.nio.charset.Charset; import java.util.HashMap; import java.util.Map; @@ -108,4 +104,16 @@ public class QiniuController { qiNiuService.delete(qiNiuService.findByContentId(id),qiNiuService.find()); return new ResponseEntity(HttpStatus.OK); } + + /** + * 删除多张图片 + * @param ids + * @return + */ + @Log("删除图片") + @DeleteMapping(value = "/qiNiuContent") + public ResponseEntity deleteAll(@RequestBody Long[] ids) { + qiNiuService.deleteAll(ids, qiNiuService.find()); + return new ResponseEntity(HttpStatus.OK); + } } diff --git a/eladmin-tools/src/main/java/me/zhengjie/service/PictureService.java b/eladmin-tools/src/main/java/me/zhengjie/service/PictureService.java index 523ef270..9aac0fdd 100644 --- a/eladmin-tools/src/main/java/me/zhengjie/service/PictureService.java +++ b/eladmin-tools/src/main/java/me/zhengjie/service/PictureService.java @@ -36,4 +36,11 @@ public interface PictureService { */ @CacheEvict(allEntries = true) void delete(Picture picture); + + /** + * 删除图片 + * @param ids + */ + @CacheEvict(allEntries = true) + void deleteAll(Long[] ids); } diff --git a/eladmin-tools/src/main/java/me/zhengjie/service/QiNiuService.java b/eladmin-tools/src/main/java/me/zhengjie/service/QiNiuService.java index 31dd1251..64e419a0 100644 --- a/eladmin-tools/src/main/java/me/zhengjie/service/QiNiuService.java +++ b/eladmin-tools/src/main/java/me/zhengjie/service/QiNiuService.java @@ -69,4 +69,12 @@ public interface QiNiuService { */ @CacheEvict(allEntries = true) void synchronize(QiniuConfig config); + + /** + * 删除文件 + * @param ids + * @return + */ + @CacheEvict(allEntries = true) + void deleteAll(Long[] ids, QiniuConfig config); } diff --git a/eladmin-tools/src/main/java/me/zhengjie/service/impl/PictureServiceImpl.java b/eladmin-tools/src/main/java/me/zhengjie/service/impl/PictureServiceImpl.java index 8af6a892..cc5a9ec9 100644 --- a/eladmin-tools/src/main/java/me/zhengjie/service/impl/PictureServiceImpl.java +++ b/eladmin-tools/src/main/java/me/zhengjie/service/impl/PictureServiceImpl.java @@ -84,4 +84,11 @@ public class PictureServiceImpl implements PictureService { } } + + @Override + public void deleteAll(Long[] ids) { + for (Long id : ids) { + delete(findById(id)); + } + } } diff --git a/eladmin-tools/src/main/java/me/zhengjie/service/impl/QiNiuServiceImpl.java b/eladmin-tools/src/main/java/me/zhengjie/service/impl/QiNiuServiceImpl.java index 027782f8..083b3904 100644 --- a/eladmin-tools/src/main/java/me/zhengjie/service/impl/QiNiuServiceImpl.java +++ b/eladmin-tools/src/main/java/me/zhengjie/service/impl/QiNiuServiceImpl.java @@ -179,4 +179,11 @@ public class QiNiuServiceImpl implements QiNiuService { } } + + @Override + public void deleteAll(Long[] ids, QiniuConfig config) { + for (Long id : ids) { + delete(findByContentId(id), config); + } + } } diff --git a/eladmin-tools/src/main/java/me/zhengjie/service/query/PictureQueryService.java b/eladmin-tools/src/main/java/me/zhengjie/service/query/PictureQueryService.java index 4624b1a2..14574060 100644 --- a/eladmin-tools/src/main/java/me/zhengjie/service/query/PictureQueryService.java +++ b/eladmin-tools/src/main/java/me/zhengjie/service/query/PictureQueryService.java @@ -59,6 +59,13 @@ public class PictureQueryService { list.add(cb.like(root.get("filename").as(String.class),"%"+picture.getFilename()+"%")); } + if(!ObjectUtils.isEmpty(picture.getUsername())){ + /** + * 模糊 + */ + list.add(cb.like(root.get("username").as(String.class),"%"+picture.getUsername()+"%")); + } + Predicate[] p = new Predicate[list.size()]; return cb.and(list.toArray(p)); } diff --git a/pom.xml b/pom.xml index 1e9dc2ab..ef11dbcf 100644 --- a/pom.xml +++ b/pom.xml @@ -7,7 +7,7 @@ me.zhengjie eladmin pom - 1.8 + 1.9 eladmin-common