From bf7c1eebf08e362b478d00d0ef399d7a16f89ffc Mon Sep 17 00:00:00 2001 From: dqjdda <201507802@qq.com> Date: Thu, 24 Oct 2019 17:54:33 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BB=A3=E7=A0=81=E4=BC=98=E5=8C=96=E5=AE=8C?= =?UTF-8?q?=E6=88=90=EF=BC=8C=E5=8E=BB=E9=99=A4=E5=A4=A7=E9=87=8Fidea?= =?UTF-8?q?=E8=AD=A6=E5=91=8A,=E4=BB=A3=E7=A0=81=E7=94=9F=E6=88=90?= =?UTF-8?q?=E5=99=A8=E4=BC=98=E5=8C=96=E7=AD=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/me/zhengjie/annotation/Query.java | 4 +- .../redis/FastJsonRedisSerializer.java | 2 +- .../me/zhengjie/swagger2/SwaggerConfig.java | 2 +- .../java/me/zhengjie/utils/EncryptUtils.java | 3 - .../main/java/me/zhengjie/utils/FileUtil.java | 68 ++++++++++++++- .../java/me/zhengjie/utils/QueryHelp.java | 7 +- .../java/me/zhengjie/utils/SecurityUtils.java | 2 +- .../zhengjie/utils/SpringContextHolder.java | 14 +--- .../java/me/zhengjie/utils/StringUtils.java | 23 +----- .../me/zhengjie/utils/TranslatorUtil.java | 2 +- .../me/zhengjie/utils/ValidationUtil.java | 10 +-- .../me/zhengjie/utils/StringUtilsTest.java | 6 -- .../java/me/zhengjie/domain/GenConfig.java | 14 ++-- .../me/zhengjie/domain/vo/ColumnInfo.java | 16 ++-- .../java/me/zhengjie/domain/vo/TableInfo.java | 4 +- .../me/zhengjie/rest/GenConfigController.java | 27 +++--- .../me/zhengjie/rest/GeneratorController.java | 47 +++++------ .../me/zhengjie/service/GenConfigService.java | 12 --- .../me/zhengjie/service/GeneratorService.java | 16 ++-- .../service/impl/GenConfigServiceImpl.java | 31 +++---- .../service/impl/GeneratorServiceImpl.java | 14 ++-- .../main/java/me/zhengjie/utils/ColUtil.java | 7 +- .../main/java/me/zhengjie/utils/GenUtil.java | 33 +++++--- .../java/me/zhengjie/aspect/LogAspect.java | 2 +- .../src/main/java/me/zhengjie/domain/Log.java | 36 ++------ .../me/zhengjie/repository/LogRepository.java | 14 +--- .../java/me/zhengjie/rest/LogController.java | 33 +++++--- .../java/me/zhengjie/service/LogService.java | 23 +----- .../me/zhengjie/service/dto/LogErrorDTO.java | 24 ++---- .../me/zhengjie/service/dto/LogSmallDTO.java | 17 +--- .../zhengjie/service/impl/LogServiceImpl.java | 41 +++++----- .../service/mapper/LogErrorMapper.java | 2 +- .../service/mapper/LogSmallMapper.java | 2 +- .../java/me/zhengjie/config/DataScope.java | 17 ++-- .../monitor/config/VisitsInitialization.java | 8 +- .../monitor/repository/VisitsRepository.java | 14 ++-- .../modules/monitor/rest/LimitController.java | 8 +- .../modules/monitor/rest/RedisController.java | 25 ++++-- .../monitor/rest/VisitsController.java | 25 ++++-- .../modules/monitor/service/RedisService.java | 14 ++-- .../monitor/service/VisitsService.java | 7 +- .../service/impl/RedisServiceImpl.java | 26 +++--- .../service/impl/VisitsServiceImpl.java | 15 ++-- .../modules/quartz/config/JobRunner.java | 19 ++--- .../modules/quartz/config/QuartzConfig.java | 18 ++-- .../modules/quartz/domain/QuartzJob.java | 32 ++------ .../modules/quartz/domain/QuartzLog.java | 36 ++------ .../repository/QuartzJobRepository.java | 4 +- .../repository/QuartzLogRepository.java | 2 +- .../quartz/rest/QuartzJobController.java | 40 +++++---- .../quartz/service/QuartzJobService.java | 46 +---------- .../service/impl/QuartzJobServiceImpl.java | 33 +++++--- .../modules/quartz/task/VisitsTask.java | 8 +- .../modules/quartz/utils/ExecutionJob.java | 7 +- .../modules/quartz/utils/QuartzManage.java | 15 ++-- .../modules/quartz/utils/QuartzRunnable.java | 3 +- .../security/config/SecurityConfig.java | 23 +++--- .../rest/AuthenticationController.java | 46 +++++------ .../security/JwtAuthenticationEntryPoint.java | 4 +- .../service/JwtPermissionService.java | 12 +-- .../service/JwtUserDetailsService.java | 12 +-- .../modules/security/utils/JwtTokenUtil.java | 6 +- .../security/utils/VerifyCodeUtils.java | 46 +++++------ .../zhengjie/modules/system/domain/Dept.java | 9 -- .../zhengjie/modules/system/domain/Dict.java | 6 -- .../modules/system/domain/DictDetail.java | 16 +--- .../zhengjie/modules/system/domain/Job.java | 12 --- .../zhengjie/modules/system/domain/Menu.java | 8 +- .../modules/system/domain/Permission.java | 4 +- .../system/repository/DeptRepository.java | 8 +- .../repository/DictDetailRepository.java | 2 +- .../system/repository/DictRepository.java | 2 +- .../system/repository/JobRepository.java | 2 +- .../system/repository/MenuRepository.java | 21 +---- .../repository/PermissionRepository.java | 12 +-- .../system/repository/RoleRepository.java | 8 +- .../repository/UserAvatarRepository.java | 4 +- .../system/repository/UserRepository.java | 35 +------- .../modules/system/rest/DeptController.java | 33 +++++--- .../modules/system/rest/DictController.java | 28 +++++-- .../system/rest/DictDetailController.java | 35 +++++--- .../modules/system/rest/JobController.java | 32 +++++--- .../modules/system/rest/MenuController.java | 56 +++++++------ .../system/rest/PermissionController.java | 43 +++++----- .../modules/system/rest/RoleController.java | 61 +++++++------- .../modules/system/rest/UserController.java | 82 +++++++++---------- .../modules/system/service/DeptService.java | 45 ---------- .../system/service/DictDetailService.java | 28 ------- .../modules/system/service/DictService.java | 33 -------- .../modules/system/service/JobService.java | 32 -------- .../modules/system/service/MenuService.java | 66 +-------------- .../system/service/PermissionService.java | 50 ----------- .../modules/system/service/RoleService.java | 68 --------------- .../modules/system/service/UserService.java | 53 ------------ .../modules/system/service/dto/DeptDTO.java | 12 +-- .../system/service/dto/DeptSmallDTO.java | 6 -- .../modules/system/service/dto/DictDTO.java | 6 -- .../system/service/dto/DictDetailDTO.java | 9 -- .../modules/system/service/dto/JobDTO.java | 15 ---- .../system/service/dto/JobSmallDTO.java | 6 -- .../system/service/impl/DeptServiceImpl.java | 42 ++++++---- .../service/impl/DictDetailServiceImpl.java | 32 +++++--- .../system/service/impl/DictServiceImpl.java | 33 +++++--- .../system/service/impl/JobServiceImpl.java | 37 +++++---- .../system/service/impl/MenuServiceImpl.java | 61 ++++++++------ .../service/impl/PermissionServiceImpl.java | 48 +++++++---- .../system/service/impl/RoleServiceImpl.java | 48 +++++++---- .../system/service/impl/UserServiceImpl.java | 57 +++++++------ .../system/service/mapper/DeptMapper.java | 2 +- .../service/mapper/DeptSmallMapper.java | 2 +- .../service/mapper/DictDetailMapper.java | 2 +- .../system/service/mapper/DictMapper.java | 2 +- .../system/service/mapper/JobSmallMapper.java | 2 +- .../system/service/mapper/MenuMapper.java | 2 +- .../service/mapper/RoleSmallMapper.java | 2 +- .../main/resources/config/application-dev.yml | 5 -- .../resources/config/application-prod.yml | 5 -- .../template/generator/admin/Controller.ftl | 30 +++---- .../template/generator/admin/Mapper.ftl | 2 +- .../generator/admin/QueryCriteria.ftl | 4 +- .../template/generator/admin/Repository.ftl | 7 +- .../template/generator/admin/Service.ftl | 37 ++------- .../template/generator/admin/ServiceImpl.ftl | 34 +++++--- .../EladminSystemApplicationTests.java | 1 - .../main/java/me/zhengjie/domain/Picture.java | 3 + .../repository/PictureRepository.java | 4 + .../me/zhengjie/rest/AliPayController.java | 22 ++--- .../me/zhengjie/rest/EmailController.java | 6 +- .../zhengjie/rest/LocalStorageController.java | 12 +-- .../me/zhengjie/rest/PictureController.java | 10 +-- .../me/zhengjie/rest/QiniuController.java | 34 ++++---- .../rest/VerificationCodeController.java | 20 ++--- .../me/zhengjie/service/AlipayService.java | 3 - .../me/zhengjie/service/EmailService.java | 6 -- .../zhengjie/service/LocalStorageService.java | 45 ---------- .../me/zhengjie/service/PictureService.java | 35 +------- .../me/zhengjie/service/QiNiuService.java | 33 ++------ .../service/impl/AlipayServiceImpl.java | 18 ++-- .../service/impl/EmailServiceImpl.java | 6 ++ .../service/impl/LocalStorageServiceImpl.java | 34 +++++--- .../service/impl/PictureServiceImpl.java | 29 ++++--- .../service/impl/QiNiuServiceImpl.java | 28 +++++-- .../impl/VerificationCodeServiceImpl.java | 13 +-- .../me/zhengjie/utils/AliPayStatusEnum.java | 12 --- .../java/me/zhengjie/utils/AlipayUtils.java | 10 +-- .../java/me/zhengjie/utils/QiNiuUtil.java | 4 + 146 files changed, 1188 insertions(+), 1773 deletions(-) diff --git a/eladmin-common/src/main/java/me/zhengjie/annotation/Query.java b/eladmin-common/src/main/java/me/zhengjie/annotation/Query.java index 2375c26..0a58339 100644 --- a/eladmin-common/src/main/java/me/zhengjie/annotation/Query.java +++ b/eladmin-common/src/main/java/me/zhengjie/annotation/Query.java @@ -13,9 +13,9 @@ import java.lang.annotation.Target; @Retention(RetentionPolicy.RUNTIME) public @interface Query { - /** Dong ZhaoYang 2017/8/7 基本对象的属性名 */ + // Dong ZhaoYang 2017/8/7 基本对象的属性名 String propName() default ""; - /** Dong ZhaoYang 2017/8/7 查询方式 */ + // Dong ZhaoYang 2017/8/7 查询方式 Type type() default Type.EQUAL; /** diff --git a/eladmin-common/src/main/java/me/zhengjie/redis/FastJsonRedisSerializer.java b/eladmin-common/src/main/java/me/zhengjie/redis/FastJsonRedisSerializer.java index 23f7e9d..9465aec 100644 --- a/eladmin-common/src/main/java/me/zhengjie/redis/FastJsonRedisSerializer.java +++ b/eladmin-common/src/main/java/me/zhengjie/redis/FastJsonRedisSerializer.java @@ -35,7 +35,7 @@ public class FastJsonRedisSerializer implements RedisSerializer { return null; } String str = new String(bytes, StandardCharsets.UTF_8); - return (T) JSON.parseObject(str, clazz); + return JSON.parseObject(str, clazz); } } diff --git a/eladmin-common/src/main/java/me/zhengjie/swagger2/SwaggerConfig.java b/eladmin-common/src/main/java/me/zhengjie/swagger2/SwaggerConfig.java index d451bea..d587731 100644 --- a/eladmin-common/src/main/java/me/zhengjie/swagger2/SwaggerConfig.java +++ b/eladmin-common/src/main/java/me/zhengjie/swagger2/SwaggerConfig.java @@ -35,7 +35,7 @@ public class SwaggerConfig { @Bean public Docket createRestApi() { ParameterBuilder ticketPar = new ParameterBuilder(); - List pars = new ArrayList(); + List pars = new ArrayList<>(); ticketPar.name(tokenHeader).description("token") .modelRef(new ModelRef("string")) .parameterType("header") diff --git a/eladmin-common/src/main/java/me/zhengjie/utils/EncryptUtils.java b/eladmin-common/src/main/java/me/zhengjie/utils/EncryptUtils.java index a1d49c3..1cf6fa1 100644 --- a/eladmin-common/src/main/java/me/zhengjie/utils/EncryptUtils.java +++ b/eladmin-common/src/main/java/me/zhengjie/utils/EncryptUtils.java @@ -19,9 +19,6 @@ public class EncryptUtils { /** * 对称加密 - * @param source - * @return - * @throws Exception */ public static String desEncrypt(String source) throws Exception { if (source == null || source.length() == 0){ 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 1357952..ae526fd 100644 --- a/eladmin-common/src/main/java/me/zhengjie/utils/FileUtil.java +++ b/eladmin-common/src/main/java/me/zhengjie/utils/FileUtil.java @@ -11,6 +11,7 @@ import javax.activation.MimetypesFileTypeMap; import javax.servlet.ServletOutputStream; import javax.servlet.http.HttpServletResponse; import java.io.*; +import java.security.MessageDigest; import java.text.DecimalFormat; import java.text.SimpleDateFormat; import java.util.Date; @@ -92,7 +93,7 @@ public class FileUtil extends cn.hutool.core.io.FileUtil { * 文件大小转换 */ public static String getSize(long size){ - String resultSize = ""; + String resultSize; if (size / GB >= 1) { //如果当前Byte的值大于等于1GB resultSize = DF.format(size / (float) GB) + "GB "; @@ -117,7 +118,7 @@ public class FileUtil extends cn.hutool.core.io.FileUtil { return file; } OutputStream os = new FileOutputStream(file); - int bytesRead = 0; + int bytesRead; byte[] buffer = new byte[8192]; while ((bytesRead = ins.read(buffer, 0, 8192)) != -1) { os.write(buffer, 0, bytesRead); @@ -144,7 +145,6 @@ public class FileUtil extends cn.hutool.core.io.FileUtil { if (!dest.getParentFile().exists()) { dest.getParentFile().mkdirs(); } - String d = dest.getPath(); file.transferTo(dest);// 文件写入 return dest; } catch (Exception e) { @@ -155,7 +155,7 @@ public class FileUtil extends cn.hutool.core.io.FileUtil { public static String fileToBase64(File file) throws Exception { FileInputStream inputFile = new FileInputStream(file); - String base64 =null; + String base64; byte[] buffer = new byte[(int)file.length()]; inputFile.read(buffer); inputFile.close(); @@ -210,4 +210,64 @@ public class FileUtil extends cn.hutool.core.io.FileUtil { throw new BadRequestException("文件超出规定大小"); } } + + /** + * 判断两个文件是否相同 + */ + public static boolean check(File file1, File file2) { + String img1Md5 = getMD5(file1); + String img2Md5 = getMD5(file2); + return img1Md5.equals(img2Md5); + } + + /** + * 判断两个文件是否相同 + */ + public static boolean check(String file1Md5, String file2Md5) { + return file1Md5.equals(file2Md5); + } + + private static byte[] getByte(File file) { + // 得到文件长度 + byte[] b = new byte[(int) file.length()]; + try { + InputStream in = new FileInputStream(file); + try { + in.read(b); + } catch (IOException e) { + e.printStackTrace(); + } + } catch (FileNotFoundException e) { + e.printStackTrace(); + return null; + } + return b; + } + + private static String getMD5(byte[] bytes) { + // 16进制字符 + char[] hexDigits = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f'}; + try { + MessageDigest mdTemp = MessageDigest.getInstance("MD5"); + mdTemp.update(bytes); + byte[] md = mdTemp.digest(); + int j = md.length; + char[] str = new char[j * 2]; + int k = 0; + // 移位 输出字符串 + for (byte byte0 : md) { + str[k++] = hexDigits[byte0 >>> 4 & 0xf]; + str[k++] = hexDigits[byte0 & 0xf]; + } + return new String(str); + } catch (Exception e) { + e.printStackTrace(); + } + return null; + } + + public static String getMD5(File file) { + return getMD5(getByte(file)); + } + } diff --git a/eladmin-common/src/main/java/me/zhengjie/utils/QueryHelp.java b/eladmin-common/src/main/java/me/zhengjie/utils/QueryHelp.java index c467c47..fa66840 100644 --- a/eladmin-common/src/main/java/me/zhengjie/utils/QueryHelp.java +++ b/eladmin-common/src/main/java/me/zhengjie/utils/QueryHelp.java @@ -112,7 +112,8 @@ public class QueryHelp { } catch (Exception e) { log.error(e.getMessage(), e); } - return cb.and(list.toArray(new Predicate[list.size()])); + int size = list.size(); + return cb.and(list.toArray(new Predicate[size])); } @SuppressWarnings("unchecked") @@ -124,8 +125,7 @@ public class QueryHelp { } } - @SuppressWarnings("unchecked") - public static boolean isBlank(final CharSequence cs) { + private static boolean isBlank(final CharSequence cs) { int strLen; if (cs == null || (strLen = cs.length()) == 0) { return true; @@ -138,7 +138,6 @@ public class QueryHelp { return true; } - @SuppressWarnings("unchecked") private static List getAllFields(Class clazz, List fields) { if (clazz != null) { fields.addAll(Arrays.asList(clazz.getDeclaredFields())); diff --git a/eladmin-common/src/main/java/me/zhengjie/utils/SecurityUtils.java b/eladmin-common/src/main/java/me/zhengjie/utils/SecurityUtils.java index 1b0fc75..0799c96 100644 --- a/eladmin-common/src/main/java/me/zhengjie/utils/SecurityUtils.java +++ b/eladmin-common/src/main/java/me/zhengjie/utils/SecurityUtils.java @@ -13,7 +13,7 @@ import org.springframework.security.core.userdetails.UserDetails; public class SecurityUtils { public static UserDetails getUserDetails() { - UserDetails userDetails = null; + UserDetails userDetails; try { userDetails = (UserDetails) org.springframework.security.core.context.SecurityContextHolder.getContext().getAuthentication().getPrincipal(); } catch (Exception e) { diff --git a/eladmin-common/src/main/java/me/zhengjie/utils/SpringContextHolder.java b/eladmin-common/src/main/java/me/zhengjie/utils/SpringContextHolder.java index 7e1af48..fd25534 100644 --- a/eladmin-common/src/main/java/me/zhengjie/utils/SpringContextHolder.java +++ b/eladmin-common/src/main/java/me/zhengjie/utils/SpringContextHolder.java @@ -7,7 +7,7 @@ import org.springframework.context.ApplicationContext; import org.springframework.context.ApplicationContextAware; /** - * @author + * @author Jie * @date 2019-01-07 */ @Slf4j @@ -15,14 +15,6 @@ public class SpringContextHolder implements ApplicationContextAware, DisposableB private static ApplicationContext applicationContext = null; - /** - * 取得存储在静态变量中的ApplicationContext. - */ - public static ApplicationContext getApplicationContext() { - assertContextInjected(); - return applicationContext; - } - /** * 从静态变量applicationContext中取得Bean, 自动转型为所赋值对象的类型. */ @@ -53,14 +45,14 @@ public class SpringContextHolder implements ApplicationContextAware, DisposableB /** * 清除SpringContextHolder中的ApplicationContext为Null. */ - public static void clearHolder() { + private static void clearHolder() { log.debug("清除SpringContextHolder中的ApplicationContext:" + applicationContext); applicationContext = null; } @Override - public void destroy() throws Exception { + public void destroy(){ SpringContextHolder.clearHolder(); } diff --git a/eladmin-common/src/main/java/me/zhengjie/utils/StringUtils.java b/eladmin-common/src/main/java/me/zhengjie/utils/StringUtils.java index 3d6763e..e5f3c58 100644 --- a/eladmin-common/src/main/java/me/zhengjie/utils/StringUtils.java +++ b/eladmin-common/src/main/java/me/zhengjie/utils/StringUtils.java @@ -18,25 +18,6 @@ import java.util.Date; public class StringUtils extends org.apache.commons.lang3.StringUtils { private static final char SEPARATOR = '_'; - private static final String CHARSET_NAME = "UTF-8"; - - /** - * 是否包含字符串 - * - * @param str 验证字符串 - * @param strs 字符串组 - * @return 包含返回true - */ - static boolean inString(String str, String... strs) { - if (str != null) { - for (String s : strs) { - if (str.equals(trim(s))) { - return true; - } - } - } - return false; - } /** * 驼峰命名法工具 @@ -151,9 +132,9 @@ public class StringUtils extends org.apache.commons.lang3.StringUtils { DbConfig config = new DbConfig(); File file = FileUtil.inputStreamToFile(new ClassPathResource(path).getStream(), name); DbSearcher searcher = new DbSearcher(config, file.getPath()); - Method method = null; + Method method; method = searcher.getClass().getMethod("btreeSearch", String.class); - DataBlock dataBlock = null; + DataBlock dataBlock; dataBlock = (DataBlock) method.invoke(searcher, ip); String address = dataBlock.getRegion().replace("0|",""); if(address.charAt(address.length()-1) == '|'){ diff --git a/eladmin-common/src/main/java/me/zhengjie/utils/TranslatorUtil.java b/eladmin-common/src/main/java/me/zhengjie/utils/TranslatorUtil.java index 623e90b..7a45a81 100644 --- a/eladmin-common/src/main/java/me/zhengjie/utils/TranslatorUtil.java +++ b/eladmin-common/src/main/java/me/zhengjie/utils/TranslatorUtil.java @@ -36,7 +36,7 @@ public class TranslatorUtil { } } - private static String parseResult(String inputJson) throws Exception { + private static String parseResult(String inputJson){ JSONArray jsonArray2 = (JSONArray) new JSONArray(inputJson).get(0); StringBuilder result = new StringBuilder(); for (Object o : jsonArray2) { diff --git a/eladmin-common/src/main/java/me/zhengjie/utils/ValidationUtil.java b/eladmin-common/src/main/java/me/zhengjie/utils/ValidationUtil.java index 940a114..7d49adf 100644 --- a/eladmin-common/src/main/java/me/zhengjie/utils/ValidationUtil.java +++ b/eladmin-common/src/main/java/me/zhengjie/utils/ValidationUtil.java @@ -1,7 +1,7 @@ package me.zhengjie.utils; +import cn.hutool.core.util.ObjectUtil; import me.zhengjie.exception.BadRequestException; -import java.util.Optional; /** * 验证工具 @@ -13,11 +13,9 @@ public class ValidationUtil{ /** * 验证空 */ - public static void isNull(Optional optional, String entity,String parameter , Object value){ - if(!optional.isPresent()){ - String msg = entity - + " 不存在 " - +"{ "+ parameter +":"+ value.toString() +" }"; + public static void isNull(Object obj, String entity, String parameter , Object value){ + if(ObjectUtil.isNull(obj)){ + String msg = entity + " 不存在: "+ parameter +" is "+ value; throw new BadRequestException(msg); } } diff --git a/eladmin-common/src/test/java/me/zhengjie/utils/StringUtilsTest.java b/eladmin-common/src/test/java/me/zhengjie/utils/StringUtilsTest.java index f18fb1d..6811b9c 100644 --- a/eladmin-common/src/test/java/me/zhengjie/utils/StringUtilsTest.java +++ b/eladmin-common/src/test/java/me/zhengjie/utils/StringUtilsTest.java @@ -11,12 +11,6 @@ import static org.junit.Assert.*; public class StringUtilsTest { - @Test - public void testInString() { - assertTrue(inString("?", "?")); - assertFalse(inString("?", new String[]{})); - } - @Test public void testToCamelCase() { assertNull(toCamelCase(null)); diff --git a/eladmin-generator/src/main/java/me/zhengjie/domain/GenConfig.java b/eladmin-generator/src/main/java/me/zhengjie/domain/GenConfig.java index 1f79a91..30790e4 100644 --- a/eladmin-generator/src/main/java/me/zhengjie/domain/GenConfig.java +++ b/eladmin-generator/src/main/java/me/zhengjie/domain/GenConfig.java @@ -16,26 +16,26 @@ public class GenConfig { @Id private Long id; - /** 包路径 **/ + // 包路径 private String pack; - /** 模块名 **/ + // 模块名 @Column(name = "module_name") private String moduleName; - /** 前端文件路径 **/ + // 前端文件路径 private String path; - /** 前端文件路径 **/ + // 前端文件路径 @Column(name = "api_path") private String apiPath; - /** 作者 **/ + // 作者 private String author; - /** 表前缀 **/ + // 表前缀 private String prefix; - /** 是否覆盖 **/ + // 是否覆盖 private Boolean cover; } diff --git a/eladmin-generator/src/main/java/me/zhengjie/domain/vo/ColumnInfo.java b/eladmin-generator/src/main/java/me/zhengjie/domain/vo/ColumnInfo.java index 5a8475a..a22470a 100644 --- a/eladmin-generator/src/main/java/me/zhengjie/domain/vo/ColumnInfo.java +++ b/eladmin-generator/src/main/java/me/zhengjie/domain/vo/ColumnInfo.java @@ -14,27 +14,27 @@ import lombok.NoArgsConstructor; @NoArgsConstructor public class ColumnInfo { - /** 数据库字段名称 **/ + // 数据库字段名称 private Object columnName; - /** 允许空值 **/ + // 允许空值 private Object isNullable; - /** 数据库字段类型 **/ + // 数据库字段类型 private Object columnType; - /** 数据库字段注释 **/ + // 数据库字段注释 private Object columnComment; - /** 数据库字段键类型 **/ + // 数据库字段键类型 private Object columnKey; - /** 额外的参数 **/ + // 额外的参数 private Object extra; - /** 查询 1:模糊 2:精确 **/ + // 查询 1:模糊 2:精确 private String columnQuery; - /** 是否在列表显示 **/ + // 是否在列表显示 private String columnShow; } diff --git a/eladmin-generator/src/main/java/me/zhengjie/domain/vo/TableInfo.java b/eladmin-generator/src/main/java/me/zhengjie/domain/vo/TableInfo.java index 92712d7..b1b6ba4 100644 --- a/eladmin-generator/src/main/java/me/zhengjie/domain/vo/TableInfo.java +++ b/eladmin-generator/src/main/java/me/zhengjie/domain/vo/TableInfo.java @@ -14,10 +14,10 @@ import lombok.NoArgsConstructor; @NoArgsConstructor public class TableInfo { - /** 表名称 **/ + // 表名称 private Object tableName; - /** 创建日期 **/ + // 创建日期 private Object createTime; // 数据库引擎 diff --git a/eladmin-generator/src/main/java/me/zhengjie/rest/GenConfigController.java b/eladmin-generator/src/main/java/me/zhengjie/rest/GenConfigController.java index 19c092f..0650b95 100644 --- a/eladmin-generator/src/main/java/me/zhengjie/rest/GenConfigController.java +++ b/eladmin-generator/src/main/java/me/zhengjie/rest/GenConfigController.java @@ -1,8 +1,9 @@ package me.zhengjie.rest; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; import me.zhengjie.domain.GenConfig; import me.zhengjie.service.GenConfigService; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; import org.springframework.validation.annotation.Validated; @@ -13,23 +14,25 @@ import org.springframework.web.bind.annotation.*; * @date 2019-01-14 */ @RestController -@RequestMapping("api") +@RequestMapping("/api/genConfig") +@Api(tags = "系统:代码生成器配置管理") public class GenConfigController { - @Autowired - private GenConfigService genConfigService; + private final GenConfigService genConfigService; - /** - * 查询生成器配置 - * @return - */ - @GetMapping(value = "/genConfig") + public GenConfigController(GenConfigService genConfigService) { + this.genConfigService = genConfigService; + } + + @ApiOperation("查询") + @GetMapping public ResponseEntity get(){ - return new ResponseEntity(genConfigService.find(), HttpStatus.OK); + return new ResponseEntity<>(genConfigService.find(), HttpStatus.OK); } - @PutMapping(value = "/genConfig") + @ApiOperation("修改") + @PutMapping public ResponseEntity emailConfig(@Validated @RequestBody GenConfig genConfig){ - return new ResponseEntity(genConfigService.update(genConfig),HttpStatus.OK); + return new ResponseEntity<>(genConfigService.update(genConfig),HttpStatus.OK); } } diff --git a/eladmin-generator/src/main/java/me/zhengjie/rest/GeneratorController.java b/eladmin-generator/src/main/java/me/zhengjie/rest/GeneratorController.java index 6515898..3e10323 100644 --- a/eladmin-generator/src/main/java/me/zhengjie/rest/GeneratorController.java +++ b/eladmin-generator/src/main/java/me/zhengjie/rest/GeneratorController.java @@ -1,11 +1,12 @@ package me.zhengjie.rest; import cn.hutool.core.util.PageUtil; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; import me.zhengjie.domain.vo.ColumnInfo; import me.zhengjie.exception.BadRequestException; import me.zhengjie.service.GenConfigService; import me.zhengjie.service.GeneratorService; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; @@ -17,49 +18,39 @@ import java.util.List; * @date 2019-01-02 */ @RestController -@RequestMapping("api") +@RequestMapping("/api/generator") +@Api(tags = "系统:代码生成管理") public class GeneratorController { - @Autowired - private GeneratorService generatorService; + private final GeneratorService generatorService; - @Autowired - private GenConfigService genConfigService; + private final GenConfigService genConfigService; @Value("${generator.enabled}") private Boolean generatorEnabled; - /** - * 查询数据库元数据 - * @param name - * @param page - * @param size - * @return - */ - @GetMapping(value = "/generator/tables") + public GeneratorController(GeneratorService generatorService, GenConfigService genConfigService) { + this.generatorService = generatorService; + this.genConfigService = genConfigService; + } + + @ApiOperation("查询数据库元数据") + @GetMapping(value = "/tables") public ResponseEntity getTables(@RequestParam(defaultValue = "") String name, @RequestParam(defaultValue = "0")Integer page, @RequestParam(defaultValue = "10")Integer size){ int[] startEnd = PageUtil.transToStartEnd(page+1, size); - return new ResponseEntity(generatorService.getTables(name,startEnd), HttpStatus.OK); + return new ResponseEntity<>(generatorService.getTables(name,startEnd), HttpStatus.OK); } - /** - * 查询表内元数据 - * @param tableName - * @return - */ - @GetMapping(value = "/generator/columns") + @ApiOperation("查询表内元数据") + @GetMapping(value = "/columns") public ResponseEntity getTables(@RequestParam String tableName){ - return new ResponseEntity(generatorService.getColumns(tableName), HttpStatus.OK); + return new ResponseEntity<>(generatorService.getColumns(tableName), HttpStatus.OK); } - /** - * 生成代码 - * @param columnInfos - * @return - */ - @PostMapping(value = "/generator") + @ApiOperation("生成代码") + @PostMapping public ResponseEntity generator(@RequestBody List columnInfos, @RequestParam String tableName){ if(!generatorEnabled){ throw new BadRequestException("此环境不允许生成代码!"); diff --git a/eladmin-generator/src/main/java/me/zhengjie/service/GenConfigService.java b/eladmin-generator/src/main/java/me/zhengjie/service/GenConfigService.java index 3427654..e47fca9 100644 --- a/eladmin-generator/src/main/java/me/zhengjie/service/GenConfigService.java +++ b/eladmin-generator/src/main/java/me/zhengjie/service/GenConfigService.java @@ -10,21 +10,9 @@ import org.springframework.cache.annotation.Cacheable; * @author Zheng Jie * @date 2019-01-14 */ -@CacheConfig(cacheNames = "genConfig") public interface GenConfigService { - /** - * find - * @return - */ - @Cacheable(key = "'1'") GenConfig find(); - /** - * update - * @param genConfig - * @return - */ - @CacheEvict(allEntries = true) GenConfig update(GenConfig genConfig); } diff --git a/eladmin-generator/src/main/java/me/zhengjie/service/GeneratorService.java b/eladmin-generator/src/main/java/me/zhengjie/service/GeneratorService.java index 8b9158a..7ddb7f1 100644 --- a/eladmin-generator/src/main/java/me/zhengjie/service/GeneratorService.java +++ b/eladmin-generator/src/main/java/me/zhengjie/service/GeneratorService.java @@ -12,24 +12,24 @@ public interface GeneratorService { /** * 查询数据库元数据 - * @param name - * @param startEnd - * @return + * @param name 表名 + * @param startEnd 分页参数 + * @return / */ Object getTables(String name, int[] startEnd); /** * 得到数据表的元数据 - * @param name - * @return + * @param name 表名 + * @return / */ Object getColumns(String name); /** * 生成代码 - * @param columnInfos - * @param genConfig - * @param tableName + * @param columnInfos 表字段数据 + * @param genConfig 代码生成配置 + * @param tableName 表名 */ void generator(List columnInfos, GenConfig genConfig, String tableName); } 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 165cd5a..4dfa354 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 @@ -3,9 +3,10 @@ package me.zhengjie.service.impl; import me.zhengjie.domain.GenConfig; import me.zhengjie.repository.GenConfigRepository; import me.zhengjie.service.GenConfigService; -import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.cache.annotation.CacheConfig; +import org.springframework.cache.annotation.CacheEvict; +import org.springframework.cache.annotation.Cacheable; import org.springframework.stereotype.Service; - import java.io.File; import java.util.Optional; @@ -14,35 +15,37 @@ import java.util.Optional; * @date 2019-01-14 */ @Service +@CacheConfig(cacheNames = "genConfig") public class GenConfigServiceImpl implements GenConfigService { - @Autowired - private GenConfigRepository genConfigRepository; + private final GenConfigRepository genConfigRepository; + + public GenConfigServiceImpl(GenConfigRepository genConfigRepository) { + this.genConfigRepository = genConfigRepository; + } @Override + @Cacheable(key = "'1'") public GenConfig find() { Optional genConfig = genConfigRepository.findById(1L); - if(genConfig.isPresent()){ - return genConfig.get(); - } else { - return new GenConfig(); - } + return genConfig.orElseGet(GenConfig::new); } @Override + @CacheEvict(allEntries = true) public GenConfig update(GenConfig genConfig) { genConfig.setId(1L); // 自动设置Api路径,注释掉前需要同步取消前端的注释 String separator = File.separator; - String[] paths = null; + String[] paths; 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]); + StringBuilder api = new StringBuilder(); + for (String path : paths) { + api.append(path); api.append(separator); - if(paths[i].equals("src")){ + if (path.equals("src")) { api.append("api"); break; } 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 49e4e1c..1decf84 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 @@ -37,10 +37,11 @@ public class GeneratorServiceImpl implements GeneratorService { query.setFirstResult(startEnd[0]); query.setMaxResults(startEnd[1]-startEnd[0]); query.setParameter(1, StringUtils.isNotBlank(name) ? ("%" + name + "%") : "%%"); - List result = query.getResultList(); + List result = query.getResultList(); List tableInfos = new ArrayList<>(); - for (Object[] obj : result) { - tableInfos.add(new TableInfo(obj[0],obj[1],obj[2],obj[3], ObjectUtil.isNotEmpty(obj[4])? obj[4] : "-")); + for (Object obj : result) { + Object[] arr = (Object[]) obj; + tableInfos.add(new TableInfo(arr[0],arr[1],arr[2],arr[3], ObjectUtil.isNotEmpty(arr[4])? arr[4] : "-")); } Query query1 = em.createNativeQuery("SELECT COUNT(*) from information_schema.tables where table_schema = (select database())"); Object totalElements = query1.getSingleResult(); @@ -54,10 +55,11 @@ public class GeneratorServiceImpl implements GeneratorService { "where table_name = ? and table_schema = (select database()) order by ordinal_position"; Query query = em.createNativeQuery(sql); query.setParameter(1, StringUtils.isNotBlank(name) ? name : null); - List result = query.getResultList(); + List result = query.getResultList(); List columnInfos = new ArrayList<>(); - for (Object[] obj : result) { - columnInfos.add(new ColumnInfo(obj[0],obj[1],obj[2],obj[3],obj[4],obj[5],null,"true")); + for (Object obj : result) { + Object[] arr = (Object[]) obj; + columnInfos.add(new ColumnInfo(arr[0],arr[1],arr[2],arr[3],arr[4],arr[5],null,"true")); } return PageUtil.toPage(columnInfos,columnInfos.size()); } diff --git a/eladmin-generator/src/main/java/me/zhengjie/utils/ColUtil.java b/eladmin-generator/src/main/java/me/zhengjie/utils/ColUtil.java index 66026d9..9a119f2 100644 --- a/eladmin-generator/src/main/java/me/zhengjie/utils/ColUtil.java +++ b/eladmin-generator/src/main/java/me/zhengjie/utils/ColUtil.java @@ -12,11 +12,12 @@ public class ColUtil { /** * 转换mysql数据类型为java数据类型 - * @param type - * @return + * @param type 数据库字段类型 + * @return String */ - public static String cloToJava(String type){ + static String cloToJava(String type){ Configuration config = getConfig(); + assert config != null; return config.getString(type,"unknowType"); } diff --git a/eladmin-generator/src/main/java/me/zhengjie/utils/GenUtil.java b/eladmin-generator/src/main/java/me/zhengjie/utils/GenUtil.java index ca198b3..2fb826c 100644 --- a/eladmin-generator/src/main/java/me/zhengjie/utils/GenUtil.java +++ b/eladmin-generator/src/main/java/me/zhengjie/utils/GenUtil.java @@ -34,9 +34,9 @@ public class GenUtil { /** * 获取后端代码模板名称 - * @return + * @return List */ - public static List getAdminTemplateNames() { + private static List getAdminTemplateNames() { List templateNames = new ArrayList<>(); templateNames.add("Entity"); templateNames.add("Dto"); @@ -51,9 +51,9 @@ public class GenUtil { /** * 获取前端代码模板名称 - * @return + * @return List */ - public static List getFrontTemplateNames() { + private static List getFrontTemplateNames() { List templateNames = new ArrayList<>(); templateNames.add("api"); templateNames.add("index"); @@ -67,7 +67,7 @@ public class GenUtil { * @param genConfig 生成代码的参数配置,如包路径,作者 */ public static void generatorCode(List columnInfos, GenConfig genConfig, String tableName) throws IOException { - Map map = new HashMap(); + Map map = new HashMap<>(); map.put("package",genConfig.getPack()); map.put("moduleName",genConfig.getModuleName()); map.put("author",genConfig.getAuthor()); @@ -85,6 +85,8 @@ public class GenUtil { map.put("upperCaseClassName", className.toUpperCase()); map.put("changeClassName", changeClassName); map.put("hasTimestamp",false); + map.put("queryHasTimestamp",false); + map.put("queryHasBigDecimal",false); map.put("hasBigDecimal",false); map.put("hasQuery",false); map.put("auto",false); @@ -92,7 +94,7 @@ public class GenUtil { List> columns = new ArrayList<>(); List> queryColumns = new ArrayList<>(); for (ColumnInfo column : columnInfos) { - Map listMap = new HashMap(); + Map listMap = new HashMap<>(); listMap.put("columnComment",column.getColumnComment()); listMap.put("columnKey",column.getColumnKey()); @@ -124,6 +126,12 @@ public class GenUtil { if(!StringUtils.isBlank(column.getColumnQuery())){ listMap.put("columnQuery",column.getColumnQuery()); map.put("hasQuery",true); + if(TIMESTAMP.equals(colType)){ + map.put("queryHasTimestamp",true); + } + if(BIGDECIMAL.equals(colType)){ + map.put("queryHasBigDecimal",true); + } queryColumns.add(listMap); } columns.add(listMap); @@ -138,6 +146,7 @@ public class GenUtil { Template template = engine.getTemplate("generator/admin/"+templateName+".ftl"); String filePath = getAdminFilePath(templateName,genConfig,className); + assert filePath != null; File file = new File(filePath); // 如果非覆盖生成 @@ -154,6 +163,7 @@ public class GenUtil { Template template = engine.getTemplate("generator/front/"+templateName+".ftl"); String filePath = getFrontFilePath(templateName,genConfig,map.get("changeClassName").toString()); + assert filePath != null; File file = new File(filePath); // 如果非覆盖生成 @@ -168,7 +178,7 @@ public class GenUtil { /** * 定义后端文件路径以及名称 */ - public static String getAdminFilePath(String templateName, GenConfig genConfig, String className) { + private static String getAdminFilePath(String templateName, GenConfig genConfig, String className) { String projectPath = System.getProperty("user.dir") + File.separator + genConfig.getModuleName(); String packagePath = projectPath + File.separator + "src" +File.separator+ "main" + File.separator + "java" + File.separator; if (!ObjectUtils.isEmpty(genConfig.getPack())) { @@ -213,7 +223,7 @@ public class GenUtil { /** * 定义前端文件路径以及名称 */ - public static String getFrontFilePath(String templateName, GenConfig genConfig, String apiName) { + private static String getFrontFilePath(String templateName, GenConfig genConfig, String apiName) { String path = genConfig.getPath(); if ("api".equals(templateName)) { @@ -230,18 +240,17 @@ public class GenUtil { return null; } - public static void genFile(File file,Template template,Map map) throws IOException { + private static void genFile(File file, Template template, Map map) throws IOException { // 生成目标文件 Writer writer = null; try { FileUtil.touch(file); writer = new FileWriter(file); template.render(map, writer); - } catch (TemplateException e) { - throw new RuntimeException(e); - } catch (IOException e) { + } catch (TemplateException | IOException e) { throw new RuntimeException(e); } finally { + assert writer != null; writer.close(); } } diff --git a/eladmin-logging/src/main/java/me/zhengjie/aspect/LogAspect.java b/eladmin-logging/src/main/java/me/zhengjie/aspect/LogAspect.java index 1fbf7cf..ca2ad5b 100644 --- a/eladmin-logging/src/main/java/me/zhengjie/aspect/LogAspect.java +++ b/eladmin-logging/src/main/java/me/zhengjie/aspect/LogAspect.java @@ -48,7 +48,7 @@ public class LogAspect { */ @Around("logPointcut()") public Object logAround(ProceedingJoinPoint joinPoint) throws Throwable { - Object result = null; + Object result; currentTime = System.currentTimeMillis(); result = joinPoint.proceed(); Log log = new Log("INFO",System.currentTimeMillis() - currentTime); diff --git a/eladmin-logging/src/main/java/me/zhengjie/domain/Log.java b/eladmin-logging/src/main/java/me/zhengjie/domain/Log.java index a7146c0..564ab94 100644 --- a/eladmin-logging/src/main/java/me/zhengjie/domain/Log.java +++ b/eladmin-logging/src/main/java/me/zhengjie/domain/Log.java @@ -21,56 +21,38 @@ public class Log implements Serializable { @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; - /** - * 操作用户 - */ + // 操作用户 private String username; - /** - * 描述 - */ + // 描述 private String description; - /** - * 方法名 - */ + // 方法名 private String method; - /** - * 参数 - */ + // 参数 @Column(columnDefinition = "text") private String params; - /** - * 日志类型 - */ + // 日志类型 @Column(name = "log_type") private String logType; - /** - * 请求ip - */ + // 请求ip @Column(name = "request_ip") private String requestIp; @Column(name = "address") private String address; - /** - * 请求耗时 - */ + // 请求耗时 private Long time; - /** - * 异常详细 - */ + // 异常详细 @Column(name = "exception_detail", columnDefinition = "text") private byte[] exceptionDetail; - /** - * 创建日期 - */ + // 创建日期 @CreationTimestamp @Column(name = "create_time") private Timestamp createTime; diff --git a/eladmin-logging/src/main/java/me/zhengjie/repository/LogRepository.java b/eladmin-logging/src/main/java/me/zhengjie/repository/LogRepository.java index e557f8c..903386e 100644 --- a/eladmin-logging/src/main/java/me/zhengjie/repository/LogRepository.java +++ b/eladmin-logging/src/main/java/me/zhengjie/repository/LogRepository.java @@ -11,22 +11,14 @@ import org.springframework.stereotype.Repository; * @date 2018-11-24 */ @Repository -public interface LogRepository extends JpaRepository, JpaSpecificationExecutor { +public interface LogRepository extends JpaRepository, JpaSpecificationExecutor { /** * 获取一个时间段的IP记录 - * @param date1 - * @param date2 - * @return */ @Query(value = "select count(*) FROM (select request_ip FROM log where create_time between ?1 and ?2 GROUP BY request_ip) as s",nativeQuery = true) Long findIp(String date1, String date2); - /** - * findExceptionById - * @param id - * @return - */ - @Query(value = "select exception_detail FROM log where id = ?1",nativeQuery = true) - String findExceptionById(Long id); + @Query(value = "select l FROM Log l where l.id = ?1") + Log findExceptionById(Long id); } diff --git a/eladmin-logging/src/main/java/me/zhengjie/rest/LogController.java b/eladmin-logging/src/main/java/me/zhengjie/rest/LogController.java index 051c071..6731226 100644 --- a/eladmin-logging/src/main/java/me/zhengjie/rest/LogController.java +++ b/eladmin-logging/src/main/java/me/zhengjie/rest/LogController.java @@ -1,9 +1,10 @@ package me.zhengjie.rest; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; import me.zhengjie.service.LogService; import me.zhengjie.service.dto.LogQueryCriteria; import me.zhengjie.utils.SecurityUtils; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.domain.Pageable; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; @@ -18,36 +19,44 @@ import org.springframework.web.bind.annotation.RestController; * @date 2018-11-24 */ @RestController -@RequestMapping("api") +@RequestMapping("/api/logs") +@Api(tags = "监控:日志管理") public class LogController { - @Autowired - private LogService logService; + private final LogService logService; - @GetMapping(value = "/logs") + public LogController(LogService logService) { + this.logService = logService; + } + + @GetMapping + @ApiOperation("日志查询") @PreAuthorize("hasAnyRole('ADMIN')") public ResponseEntity getLogs(LogQueryCriteria criteria, Pageable pageable){ criteria.setLogType("INFO"); - return new ResponseEntity(logService.queryAll(criteria,pageable), HttpStatus.OK); + return new ResponseEntity<>(logService.queryAll(criteria,pageable), HttpStatus.OK); } - @GetMapping(value = "/logs/user") + @GetMapping(value = "/user") + @ApiOperation("用户日志查询") public ResponseEntity getUserLogs(LogQueryCriteria criteria, Pageable pageable){ criteria.setLogType("INFO"); criteria.setBlurry(SecurityUtils.getUsername()); - return new ResponseEntity(logService.queryAllByUser(criteria,pageable), HttpStatus.OK); + return new ResponseEntity<>(logService.queryAllByUser(criteria,pageable), HttpStatus.OK); } - @GetMapping(value = "/logs/error") + @GetMapping(value = "/error") + @ApiOperation("错误日志查询") @PreAuthorize("hasAnyRole('ADMIN')") public ResponseEntity getErrorLogs(LogQueryCriteria criteria, Pageable pageable){ criteria.setLogType("ERROR"); - return new ResponseEntity(logService.queryAll(criteria,pageable), HttpStatus.OK); + return new ResponseEntity<>(logService.queryAll(criteria,pageable), HttpStatus.OK); } - @GetMapping(value = "/logs/error/{id}") + @GetMapping(value = "/error/{id}") + @ApiOperation("日志异常详情查询") @PreAuthorize("hasAnyRole('ADMIN')") public ResponseEntity getErrorLogs(@PathVariable Long id){ - return new ResponseEntity(logService.findByErrDetail(id), HttpStatus.OK); + return new ResponseEntity<>(logService.findByErrDetail(id), HttpStatus.OK); } } diff --git a/eladmin-logging/src/main/java/me/zhengjie/service/LogService.java b/eladmin-logging/src/main/java/me/zhengjie/service/LogService.java index 3eb69de..b5e5273 100644 --- a/eladmin-logging/src/main/java/me/zhengjie/service/LogService.java +++ b/eladmin-logging/src/main/java/me/zhengjie/service/LogService.java @@ -12,36 +12,17 @@ import org.springframework.scheduling.annotation.Async; */ public interface LogService { - /** - * queryAll - * @param criteria - * @param pageable - * @return - */ Object queryAll(LogQueryCriteria criteria, Pageable pageable); - /** - * queryAllByUser - * @param criteria - * @param pageable - * @return - */ Object queryAllByUser(LogQueryCriteria criteria, Pageable pageable); - /** - * 新增日志 - * @param username - * @param ip - * @param joinPoint - * @param log - */ @Async void save(String username, String ip, ProceedingJoinPoint joinPoint, Log log); /** * 查询异常详情 - * @param id - * @return + * @param id 日志ID + * @return Object */ Object findByErrDetail(Long id); } diff --git a/eladmin-logging/src/main/java/me/zhengjie/service/dto/LogErrorDTO.java b/eladmin-logging/src/main/java/me/zhengjie/service/dto/LogErrorDTO.java index f23ae95..7aaa54b 100644 --- a/eladmin-logging/src/main/java/me/zhengjie/service/dto/LogErrorDTO.java +++ b/eladmin-logging/src/main/java/me/zhengjie/service/dto/LogErrorDTO.java @@ -13,36 +13,24 @@ public class LogErrorDTO implements Serializable { private Long id; - /** - * 操作用户 - */ + // 操作用户 private String username; - /** - * 描述 - */ + // 描述 private String description; - /** - * 方法名 - */ + // 方法名 private String method; - /** - * 参数 - */ + // 参数 private String params; - /** - * 请求ip - */ + // 请求ip private String requestIp; private String address; - /** - * 创建日期 - */ + // 创建日期 private Timestamp createTime; } \ No newline at end of file diff --git a/eladmin-logging/src/main/java/me/zhengjie/service/dto/LogSmallDTO.java b/eladmin-logging/src/main/java/me/zhengjie/service/dto/LogSmallDTO.java index 33b6abf..5d11c34 100644 --- a/eladmin-logging/src/main/java/me/zhengjie/service/dto/LogSmallDTO.java +++ b/eladmin-logging/src/main/java/me/zhengjie/service/dto/LogSmallDTO.java @@ -1,7 +1,6 @@ package me.zhengjie.service.dto; import lombok.Data; - import java.io.Serializable; import java.sql.Timestamp; @@ -12,25 +11,17 @@ import java.sql.Timestamp; @Data public class LogSmallDTO implements Serializable { - /** - * 描述 - */ + // 描述 private String description; - /** - * 请求ip - */ + // 请求ip private String requestIp; - /** - * 请求耗时 - */ + // 请求耗时 private Long time; private String address; - /** - * 创建日期 - */ + // 创建日期 private Timestamp createTime; } diff --git a/eladmin-logging/src/main/java/me/zhengjie/service/impl/LogServiceImpl.java b/eladmin-logging/src/main/java/me/zhengjie/service/impl/LogServiceImpl.java index 4d39206..66bff12 100644 --- a/eladmin-logging/src/main/java/me/zhengjie/service/impl/LogServiceImpl.java +++ b/eladmin-logging/src/main/java/me/zhengjie/service/impl/LogServiceImpl.java @@ -13,7 +13,6 @@ import me.zhengjie.utils.QueryHelp; import me.zhengjie.utils.StringUtils; import org.aspectj.lang.ProceedingJoinPoint; import org.aspectj.lang.reflect.MethodSignature; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable; import org.springframework.stereotype.Service; @@ -29,16 +28,17 @@ import java.lang.reflect.Method; @Transactional(propagation = Propagation.SUPPORTS, readOnly = true, rollbackFor = Exception.class) public class LogServiceImpl implements LogService { - @Autowired - private LogRepository logRepository; + private final LogRepository logRepository; - @Autowired - private LogErrorMapper logErrorMapper; + private final LogErrorMapper logErrorMapper; - @Autowired - private LogSmallMapper logSmallMapper; + private final LogSmallMapper logSmallMapper; - private final String LOGINPATH = "login"; + public LogServiceImpl(LogRepository logRepository, LogErrorMapper logErrorMapper, LogSmallMapper logSmallMapper) { + this.logRepository = logRepository; + this.logErrorMapper = logErrorMapper; + this.logSmallMapper = logSmallMapper; + } @Override public Object queryAll(LogQueryCriteria criteria, Pageable pageable){ @@ -63,32 +63,31 @@ public class LogServiceImpl implements LogService { Method method = signature.getMethod(); me.zhengjie.aop.log.Log aopLog = method.getAnnotation(me.zhengjie.aop.log.Log.class); - // 描述 - if (log != null) { - log.setDescription(aopLog.value()); - } - // 方法路径 String methodName = joinPoint.getTarget().getClass().getName()+"."+signature.getName()+"()"; - String params = "{"; + StringBuilder params = new StringBuilder("{"); //参数值 Object[] argValues = joinPoint.getArgs(); //参数名称 String[] argNames = ((MethodSignature)joinPoint.getSignature()).getParameterNames(); if(argValues != null){ for (int i = 0; i < argValues.length; i++) { - params += " " + argNames[i] + ": " + argValues[i]; + params.append(" ").append(argNames[i]).append(": ").append(argValues[i]); } } - - // 获取IP地址 + // 描述 + if (log != null) { + log.setDescription(aopLog.value()); + } + assert log != null; log.setRequestIp(ip); + String LOGINPATH = "login"; if(LOGINPATH.equals(signature.getName())){ try { - JSONObject jsonObject = new JSONObject(argValues[0]); - username = jsonObject.get("username").toString(); + assert argValues != null; + username = new JSONObject(argValues[0]).get("username").toString(); }catch (Exception e){ e.printStackTrace(); } @@ -96,12 +95,12 @@ public class LogServiceImpl implements LogService { log.setAddress(StringUtils.getCityInfo(log.getRequestIp())); log.setMethod(methodName); log.setUsername(username); - log.setParams(params + " }"); + log.setParams(params.toString() + " }"); logRepository.save(log); } @Override public Object findByErrDetail(Long id) { - return Dict.create().set("exception",logRepository.findExceptionById(id)); + return Dict.create().set("exception",logRepository.findExceptionById(id).getExceptionDetail()); } } diff --git a/eladmin-logging/src/main/java/me/zhengjie/service/mapper/LogErrorMapper.java b/eladmin-logging/src/main/java/me/zhengjie/service/mapper/LogErrorMapper.java index a2fc4b8..f4ca617 100644 --- a/eladmin-logging/src/main/java/me/zhengjie/service/mapper/LogErrorMapper.java +++ b/eladmin-logging/src/main/java/me/zhengjie/service/mapper/LogErrorMapper.java @@ -10,7 +10,7 @@ import org.mapstruct.ReportingPolicy; * @author Zheng Jie * @date 2019-5-22 */ -@Mapper(componentModel = "spring",uses = {},unmappedTargetPolicy = ReportingPolicy.IGNORE) +@Mapper(componentModel = "spring",unmappedTargetPolicy = ReportingPolicy.IGNORE) public interface LogErrorMapper extends EntityMapper { } \ No newline at end of file diff --git a/eladmin-logging/src/main/java/me/zhengjie/service/mapper/LogSmallMapper.java b/eladmin-logging/src/main/java/me/zhengjie/service/mapper/LogSmallMapper.java index 8c6d2c6..4d5d200 100644 --- a/eladmin-logging/src/main/java/me/zhengjie/service/mapper/LogSmallMapper.java +++ b/eladmin-logging/src/main/java/me/zhengjie/service/mapper/LogSmallMapper.java @@ -10,7 +10,7 @@ import org.mapstruct.ReportingPolicy; * @author Zheng Jie * @date 2019-5-22 */ -@Mapper(componentModel = "spring",uses = {},unmappedTargetPolicy = ReportingPolicy.IGNORE) +@Mapper(componentModel = "spring",unmappedTargetPolicy = ReportingPolicy.IGNORE) public interface LogSmallMapper extends EntityMapper { } \ No newline at end of file diff --git a/eladmin-system/src/main/java/me/zhengjie/config/DataScope.java b/eladmin-system/src/main/java/me/zhengjie/config/DataScope.java index 0ae0ff0..13daa45 100644 --- a/eladmin-system/src/main/java/me/zhengjie/config/DataScope.java +++ b/eladmin-system/src/main/java/me/zhengjie/config/DataScope.java @@ -25,14 +25,17 @@ public class DataScope { private final String[] scopeType = {"全部","本级","自定义"}; - @Autowired - private UserService userService; + private final UserService userService; - @Autowired - private RoleService roleService; + private final RoleService roleService; - @Autowired - private DeptService deptService; + private final DeptService deptService; + + public DataScope(UserService userService, RoleService roleService, DeptService deptService) { + this.userService = userService; + this.roleService = roleService; + this.deptService = deptService; + } public Set getDeptIds() { @@ -76,7 +79,7 @@ public class DataScope { deptList.forEach(dept -> { if (dept!=null && dept.getEnabled()){ List depts = deptService.findByPid(dept.getId()); - if(deptList!=null && deptList.size()!=0){ + if(deptList.size() != 0){ list.addAll(getDeptChildren(depts)); } list.add(dept.getId()); diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/monitor/config/VisitsInitialization.java b/eladmin-system/src/main/java/me/zhengjie/modules/monitor/config/VisitsInitialization.java index f44d72a..236a9c3 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/monitor/config/VisitsInitialization.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/monitor/config/VisitsInitialization.java @@ -1,7 +1,6 @@ package me.zhengjie.modules.monitor.config; import me.zhengjie.modules.monitor.service.VisitsService; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.ApplicationArguments; import org.springframework.boot.ApplicationRunner; import org.springframework.stereotype.Component; @@ -13,8 +12,11 @@ import org.springframework.stereotype.Component; @Component public class VisitsInitialization implements ApplicationRunner { - @Autowired - private VisitsService visitsService; + private final VisitsService visitsService; + + public VisitsInitialization(VisitsService visitsService) { + this.visitsService = visitsService; + } @Override public void run(ApplicationArguments args) throws Exception { diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/monitor/repository/VisitsRepository.java b/eladmin-system/src/main/java/me/zhengjie/modules/monitor/repository/VisitsRepository.java index 7a41c8f..8c13338 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/monitor/repository/VisitsRepository.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/monitor/repository/VisitsRepository.java @@ -4,7 +4,6 @@ import me.zhengjie.modules.monitor.domain.Visits; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.Query; import org.springframework.stereotype.Repository; - import java.util.List; /** @@ -16,18 +15,17 @@ public interface VisitsRepository extends JpaRepository { /** * findByDate - * @param date - * @return + * @param date 日期 + * @return Visits */ Visits findByDate(String date); /** * 获得一个时间段的记录 - * @param date1 - * @param date2 - * @return + * @param date1 日期1 + * @param date2 日期2 + * @return List */ - @Query(value = "select * FROM visits where " + - "create_time between ?1 and ?2",nativeQuery = true) + @Query(value = "select * FROM visits where create_time between ?1 and ?2",nativeQuery = true) List findAllVisits(String date1, String date2); } diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/monitor/rest/LimitController.java b/eladmin-system/src/main/java/me/zhengjie/modules/monitor/rest/LimitController.java index 3a742ca..00baee1 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/monitor/rest/LimitController.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/monitor/rest/LimitController.java @@ -1,5 +1,7 @@ package me.zhengjie.modules.monitor.rest; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; import me.zhengjie.annotation.Limit; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; @@ -12,15 +14,17 @@ import java.util.concurrent.atomic.AtomicInteger; * 接口限流测试类 */ @RestController -@RequestMapping("api") +@RequestMapping("/api/limit") +@Api(tags = "系统:限流测试管理") public class LimitController { private static final AtomicInteger ATOMIC_INTEGER = new AtomicInteger(); /** * 测试限流注解,下面配置说明该接口 60秒内最多只能访问 10次,保存到redis的键名为 limit_test, */ + @GetMapping + @ApiOperation("测试") @Limit(key = "test", period = 60, count = 10, name = "testLimit", prefix = "limit") - @GetMapping("/limit") public int testLimit() { return ATOMIC_INTEGER.incrementAndGet(); } diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/monitor/rest/RedisController.java b/eladmin-system/src/main/java/me/zhengjie/modules/monitor/rest/RedisController.java index f1cca13..724cb27 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/monitor/rest/RedisController.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/monitor/rest/RedisController.java @@ -1,14 +1,14 @@ package me.zhengjie.modules.monitor.rest; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; import me.zhengjie.aop.log.Log; import me.zhengjie.modules.monitor.domain.vo.RedisVo; import me.zhengjie.modules.monitor.service.RedisService; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.domain.Pageable; 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.*; /** @@ -16,21 +16,27 @@ import org.springframework.web.bind.annotation.*; * @date 2018-12-10 */ @RestController -@RequestMapping("api") +@RequestMapping("/api/redis") +@Api(tags = "系统:Redis缓存管理") public class RedisController { - @Autowired - private RedisService redisService; + private final RedisService redisService; + + public RedisController(RedisService redisService) { + this.redisService = redisService; + } @Log("查询Redis缓存") - @GetMapping(value = "/redis") + @GetMapping + @ApiOperation("查询Redis缓存") @PreAuthorize("hasAnyRole('ADMIN','REDIS_ALL','REDIS_SELECT')") public ResponseEntity getRedis(String key, Pageable pageable){ - return new ResponseEntity(redisService.findByKey(key,pageable), HttpStatus.OK); + return new ResponseEntity<>(redisService.findByKey(key,pageable), HttpStatus.OK); } @Log("删除Redis缓存") - @DeleteMapping(value = "/redis") + @DeleteMapping + @ApiOperation("删除Redis缓存") @PreAuthorize("hasAnyRole('ADMIN','REDIS_ALL','REDIS_DELETE')") public ResponseEntity delete(@RequestBody RedisVo resources){ redisService.delete(resources.getKey()); @@ -38,7 +44,8 @@ public class RedisController { } @Log("清空Redis缓存") - @DeleteMapping(value = "/redis/all") + @DeleteMapping(value = "/all") + @ApiOperation("清空Redis缓存") @PreAuthorize("hasAnyRole('ADMIN','REDIS_ALL','REDIS_DELETE')") public ResponseEntity deleteAll(){ redisService.flushdb(); diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/monitor/rest/VisitsController.java b/eladmin-system/src/main/java/me/zhengjie/modules/monitor/rest/VisitsController.java index bd73228..f8e3342 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/monitor/rest/VisitsController.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/monitor/rest/VisitsController.java @@ -1,5 +1,7 @@ package me.zhengjie.modules.monitor.rest; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; import me.zhengjie.modules.monitor.service.VisitsService; import me.zhengjie.utils.RequestHolder; import org.springframework.beans.factory.annotation.Autowired; @@ -15,25 +17,32 @@ import org.springframework.web.bind.annotation.RestController; * @date 2018-12-13 */ @RestController -@RequestMapping("api") +@RequestMapping("/api/visits") +@Api(tags = "系统:访问记录管理") public class VisitsController { - @Autowired - private VisitsService visitsService; + private final VisitsService visitsService; - @PostMapping(value = "/visits") + public VisitsController(VisitsService visitsService) { + this.visitsService = visitsService; + } + + @PostMapping + @ApiOperation("创建访问记录") public ResponseEntity create(){ visitsService.count(RequestHolder.getHttpServletRequest()); return new ResponseEntity(HttpStatus.CREATED); } - @GetMapping(value = "/visits") + @GetMapping + @ApiOperation("查询") public ResponseEntity get(){ - return new ResponseEntity(visitsService.get(),HttpStatus.OK); + return new ResponseEntity<>(visitsService.get(),HttpStatus.OK); } - @GetMapping(value = "/visits/chartData") + @GetMapping(value = "/chartData") + @ApiOperation("查询图表数据") public ResponseEntity getChartData(){ - return new ResponseEntity(visitsService.getChartData(),HttpStatus.OK); + return new ResponseEntity<>(visitsService.getChartData(),HttpStatus.OK); } } diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/monitor/service/RedisService.java b/eladmin-system/src/main/java/me/zhengjie/modules/monitor/service/RedisService.java index c31d05c..2065dfe 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/monitor/service/RedisService.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/monitor/service/RedisService.java @@ -13,28 +13,28 @@ public interface RedisService { /** * findById - * @param key - * @return + * @param key 键 + * @return / */ Page findByKey(String key, Pageable pageable); /** * 查询验证码的值 - * @param key - * @return + * @param key 键 + * @return / */ String getCodeVal(String key); /** * 保存验证码 - * @param key - * @param val + * @param key 键 + * @param val 值 */ void saveCode(String key, Object val); /** * delete - * @param key + * @param key 键 */ void delete(String key); diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/monitor/service/VisitsService.java b/eladmin-system/src/main/java/me/zhengjie/modules/monitor/service/VisitsService.java index 2f80df2..a403b08 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/monitor/service/VisitsService.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/monitor/service/VisitsService.java @@ -1,7 +1,6 @@ package me.zhengjie.modules.monitor.service; import org.springframework.scheduling.annotation.Async; - import javax.servlet.http.HttpServletRequest; /** @@ -17,20 +16,20 @@ public interface VisitsService { /** * 新增记录 - * @param request + * @param request / */ @Async void count(HttpServletRequest request); /** * 获取数据 - * @return + * @return / */ Object get(); /** * getChartData - * @return + * @return / */ Object getChartData(); } diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/monitor/service/impl/RedisServiceImpl.java b/eladmin-system/src/main/java/me/zhengjie/modules/monitor/service/impl/RedisServiceImpl.java index 249f147..2f22595 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/monitor/service/impl/RedisServiceImpl.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/monitor/service/impl/RedisServiceImpl.java @@ -3,7 +3,6 @@ package me.zhengjie.modules.monitor.service.impl; import me.zhengjie.modules.monitor.domain.vo.RedisVo; import me.zhengjie.modules.monitor.service.RedisService; import me.zhengjie.utils.PageUtil; -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.PageImpl; @@ -12,6 +11,7 @@ import org.springframework.data.redis.core.RedisTemplate; import org.springframework.stereotype.Service; import java.util.ArrayList; import java.util.List; +import java.util.Objects; import java.util.concurrent.TimeUnit; /** @@ -21,54 +21,58 @@ import java.util.concurrent.TimeUnit; @Service public class RedisServiceImpl implements RedisService { - @Autowired - RedisTemplate redisTemplate; + private final RedisTemplate redisTemplate; @Value("${loginCode.expiration}") private Long expiration; + public RedisServiceImpl(RedisTemplate redisTemplate) { + this.redisTemplate = redisTemplate; + } + @Override + @SuppressWarnings("unchecked") public Page findByKey(String key, Pageable pageable){ List redisVos = new ArrayList<>(); if(!"*".equals(key)){ key = "*" + key + "*"; } - for (Object s : redisTemplate.keys(key)) { + for (Object s : Objects.requireNonNull(redisTemplate.keys(key))) { // 过滤掉权限的缓存 - if (s.toString().indexOf("role::loadPermissionByUser") != -1 || s.toString().indexOf("user::loadUserByUsername") != -1) { + if (s.toString().contains("role::loadPermissionByUser") || s.toString().contains("user::loadUserByUsername")) { continue; } - RedisVo redisVo = new RedisVo(s.toString(),redisTemplate.opsForValue().get(s.toString()).toString()); + RedisVo redisVo = new RedisVo(s.toString(), Objects.requireNonNull(redisTemplate.opsForValue().get(s.toString())).toString()); redisVos.add(redisVo); } - Page page = new PageImpl( + return new PageImpl( PageUtil.toPage(pageable.getPageNumber(),pageable.getPageSize(),redisVos), pageable, redisVos.size()); - return page; } @Override + @SuppressWarnings("unchecked") public void delete(String key) { redisTemplate.delete(key); } @Override public void flushdb() { - redisTemplate.getConnectionFactory().getConnection().flushDb(); + Objects.requireNonNull(redisTemplate.getConnectionFactory()).getConnection().flushDb(); } @Override public String getCodeVal(String key) { try { - String value = redisTemplate.opsForValue().get(key).toString(); - return value; + return Objects.requireNonNull(redisTemplate.opsForValue().get(key)).toString(); }catch (Exception e){ return ""; } } @Override + @SuppressWarnings("unchecked") public void saveCode(String key, Object val) { redisTemplate.opsForValue().set(key,val); redisTemplate.expire(key,expiration, TimeUnit.MINUTES); diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/monitor/service/impl/VisitsServiceImpl.java b/eladmin-system/src/main/java/me/zhengjie/modules/monitor/service/impl/VisitsServiceImpl.java index fa00b02..ebf93bb 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/monitor/service/impl/VisitsServiceImpl.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/monitor/service/impl/VisitsServiceImpl.java @@ -26,11 +26,14 @@ import java.util.stream.Collectors; @Transactional(propagation = Propagation.SUPPORTS, readOnly = true, rollbackFor = Exception.class) public class VisitsServiceImpl implements VisitsService { - @Autowired - private VisitsRepository visitsRepository; + private final VisitsRepository visitsRepository; - @Autowired - private LogRepository logRepository; + private final LogRepository logRepository; + + public VisitsServiceImpl(VisitsRepository visitsRepository, LogRepository logRepository) { + this.visitsRepository = visitsRepository; + this.logRepository = logRepository; + } @Override public void save() { @@ -58,7 +61,7 @@ public class VisitsServiceImpl implements VisitsService { @Override public Object get() { - Map map = new HashMap(); + Map map = new HashMap<>(); LocalDate localDate = LocalDate.now(); Visits visits = visitsRepository.findByDate(localDate.toString()); List list = visitsRepository.findAllVisits(localDate.minusDays(6).toString(),localDate.plusDays(1).toString()); @@ -77,7 +80,7 @@ public class VisitsServiceImpl implements VisitsService { @Override public Object getChartData() { - Map map = new HashMap(); + Map map = new HashMap<>(); LocalDate localDate = LocalDate.now(); List list = visitsRepository.findAllVisits(localDate.minusDays(6).toString(),localDate.plusDays(1).toString()); map.put("weekDays",list.stream().map(Visits::getWeekDay).collect(Collectors.toList())); diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/quartz/config/JobRunner.java b/eladmin-system/src/main/java/me/zhengjie/modules/quartz/config/JobRunner.java index a66ec06..557df43 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/quartz/config/JobRunner.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/quartz/config/JobRunner.java @@ -3,7 +3,6 @@ package me.zhengjie.modules.quartz.config; import me.zhengjie.modules.quartz.domain.QuartzJob; import me.zhengjie.modules.quartz.repository.QuartzJobRepository; import me.zhengjie.modules.quartz.utils.QuartzManage; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.ApplicationArguments; import org.springframework.boot.ApplicationRunner; import org.springframework.stereotype.Component; @@ -17,24 +16,24 @@ import java.util.List; @Component public class JobRunner implements ApplicationRunner { - @Autowired - private QuartzJobRepository quartzJobRepository; + private final QuartzJobRepository quartzJobRepository; - @Autowired - private QuartzManage quartzManage; + private final QuartzManage quartzManage; + + public JobRunner(QuartzJobRepository quartzJobRepository, QuartzManage quartzManage) { + this.quartzJobRepository = quartzJobRepository; + this.quartzManage = quartzManage; + } /** * 项目启动时重新激活启用的定时任务 - * @param applicationArguments - * @throws Exception + * @param applicationArguments / */ @Override public void run(ApplicationArguments applicationArguments){ System.out.println("--------------------注入定时任务---------------------"); List quartzJobs = quartzJobRepository.findByIsPauseIsFalse(); - quartzJobs.forEach(quartzJob -> { - quartzManage.addJob(quartzJob); - }); + quartzJobs.forEach(quartzManage::addJob); System.out.println("--------------------定时任务注入完成---------------------"); } } diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/quartz/config/QuartzConfig.java b/eladmin-system/src/main/java/me/zhengjie/modules/quartz/config/QuartzConfig.java index 3486ad8..085534a 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/quartz/config/QuartzConfig.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/quartz/config/QuartzConfig.java @@ -2,7 +2,6 @@ package me.zhengjie.modules.quartz.config; import org.quartz.Scheduler; import org.quartz.spi.TriggerFiredBundle; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.config.AutowireCapableBeanFactory; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; @@ -12,7 +11,7 @@ import org.springframework.stereotype.Component; /** * 定时任务配置 - * @author + * @author / * @date 2019-01-07 */ @Configuration @@ -22,10 +21,13 @@ public class QuartzConfig { * 解决Job中注入Spring Bean为null的问题 */ @Component("quartzJobFactory") - public class QuartzJobFactory extends AdaptableJobFactory { + public static class QuartzJobFactory extends AdaptableJobFactory { - @Autowired - private AutowireCapableBeanFactory capableBeanFactory; + private final AutowireCapableBeanFactory capableBeanFactory; + + public QuartzJobFactory(AutowireCapableBeanFactory capableBeanFactory) { + this.capableBeanFactory = capableBeanFactory; + } @Override protected Object createJobInstance(TriggerFiredBundle bundle) throws Exception { @@ -39,9 +41,9 @@ public class QuartzConfig { /** * 注入scheduler到spring - * @param quartzJobFactory - * @return - * @throws Exception + * @param quartzJobFactory / + * @return Scheduler + * @throws Exception / */ @Bean(name = "scheduler") public Scheduler scheduler(QuartzJobFactory quartzJobFactory) throws Exception { diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/quartz/domain/QuartzJob.java b/eladmin-system/src/main/java/me/zhengjie/modules/quartz/domain/QuartzJob.java index 65692d0..faa62c2 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/quartz/domain/QuartzJob.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/quartz/domain/QuartzJob.java @@ -25,55 +25,39 @@ public class QuartzJob implements Serializable { @NotNull(groups = {Update.class}) private Long id; - /** - * 定时器名称 - */ + // 定时器名称 @Column(name = "job_name") private String jobName; - /** - * Bean名称 - */ + // Bean名称 @Column(name = "bean_name") @NotBlank private String beanName; - /** - * 方法名称 - */ + // 方法名称 @Column(name = "method_name") @NotBlank private String methodName; - /** - * 参数 - */ + // 参数 @Column(name = "params") private String params; - /** - * cron表达式 - */ + // cron表达式 @Column(name = "cron_expression") @NotBlank private String cronExpression; - /** - * 状态 - */ + // 状态 @Column(name = "is_pause") private Boolean isPause = false; - /** - * 备注 - */ + // 备注 @Column(name = "remark") @NotBlank private String remark; - /** - * 创建日期 - */ + // 创建日期 @UpdateTimestamp @Column(name = "update_time") private Timestamp updateTime; diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/quartz/domain/QuartzLog.java b/eladmin-system/src/main/java/me/zhengjie/modules/quartz/domain/QuartzLog.java index 9bd347a..9958ce6 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/quartz/domain/QuartzLog.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/quartz/domain/QuartzLog.java @@ -20,56 +20,38 @@ public class QuartzLog implements Serializable { @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; - /** - * 任务名称 - */ + // 任务名称 @Column(name = "job_name") private String jobName; - /** - * Bean名称 - */ + // Bean名称 @Column(name = "baen_name") private String beanName; - /** - * 方法名称 - */ + // 方法名称 @Column(name = "method_name") private String methodName; - /** - * 参数 - */ + // 参数 @Column(name = "params") private String params; - /** - * cron表达式 - */ + // cron表达式 @Column(name = "cron_expression") private String cronExpression; - /** - * 状态 - */ + // 状态 @Column(name = "is_success") private Boolean isSuccess; - /** - * 异常详细 - */ + // 异常详细 @Column(name = "exception_detail",columnDefinition = "text") private String exceptionDetail; - /** - * 耗时(毫秒) - */ + // 耗时(毫秒) private Long time; - /** - * 创建日期 - */ + // 创建日期 @CreationTimestamp @Column(name = "create_time") private Timestamp createTime; diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/quartz/repository/QuartzJobRepository.java b/eladmin-system/src/main/java/me/zhengjie/modules/quartz/repository/QuartzJobRepository.java index 087f061..e4143f9 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/quartz/repository/QuartzJobRepository.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/quartz/repository/QuartzJobRepository.java @@ -9,11 +9,11 @@ import java.util.List; * @author Zheng Jie * @date 2019-01-07 */ -public interface QuartzJobRepository extends JpaRepository, JpaSpecificationExecutor { +public interface QuartzJobRepository extends JpaRepository, JpaSpecificationExecutor { /** * 查询启用的任务 - * @return + * @return List */ List findByIsPauseIsFalse(); } diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/quartz/repository/QuartzLogRepository.java b/eladmin-system/src/main/java/me/zhengjie/modules/quartz/repository/QuartzLogRepository.java index 6b78d46..f0722a8 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/quartz/repository/QuartzLogRepository.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/quartz/repository/QuartzLogRepository.java @@ -8,6 +8,6 @@ import org.springframework.data.jpa.repository.JpaSpecificationExecutor; * @author Zheng Jie * @date 2019-01-07 */ -public interface QuartzLogRepository extends JpaRepository, JpaSpecificationExecutor { +public interface QuartzLogRepository extends JpaRepository, JpaSpecificationExecutor { } diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/quartz/rest/QuartzJobController.java b/eladmin-system/src/main/java/me/zhengjie/modules/quartz/rest/QuartzJobController.java index 1a60493..e8a860d 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/quartz/rest/QuartzJobController.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/quartz/rest/QuartzJobController.java @@ -1,12 +1,13 @@ package me.zhengjie.modules.quartz.rest; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; import lombok.extern.slf4j.Slf4j; import me.zhengjie.aop.log.Log; import me.zhengjie.exception.BadRequestException; import me.zhengjie.modules.quartz.domain.QuartzJob; import me.zhengjie.modules.quartz.service.QuartzJobService; import me.zhengjie.modules.quartz.service.dto.JobQueryCriteria; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.domain.Pageable; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; @@ -20,39 +21,47 @@ import org.springframework.web.bind.annotation.*; */ @Slf4j @RestController -@RequestMapping("/api") +@Api(tags = "系统:定时任务管理") +@RequestMapping("/api/jobs") public class QuartzJobController { private static final String ENTITY_NAME = "quartzJob"; - @Autowired - private QuartzJobService quartzJobService; + private final QuartzJobService quartzJobService; + + public QuartzJobController(QuartzJobService quartzJobService) { + this.quartzJobService = quartzJobService; + } @Log("查询定时任务") - @GetMapping(value = "/jobs") + @ApiOperation("查询定时任务") + @GetMapping @PreAuthorize("hasAnyRole('ADMIN','JOB_ALL','JOB_SELECT')") public ResponseEntity getJobs(JobQueryCriteria criteria, Pageable pageable){ - return new ResponseEntity(quartzJobService.queryAll(criteria,pageable), HttpStatus.OK); + return new ResponseEntity<>(quartzJobService.queryAll(criteria,pageable), HttpStatus.OK); } - @GetMapping(value = "/jobLogs") + @ApiOperation("查询任务执行日志") + @GetMapping(value = "/logs") @PreAuthorize("hasAnyRole('ADMIN','JOB_ALL','JOB_SELECT')") public ResponseEntity getJobLogs(JobQueryCriteria criteria, Pageable pageable){ - return new ResponseEntity(quartzJobService.queryAllLog(criteria,pageable), HttpStatus.OK); + return new ResponseEntity<>(quartzJobService.queryAllLog(criteria,pageable), HttpStatus.OK); } @Log("新增定时任务") - @PostMapping(value = "/jobs") + @ApiOperation("新增定时任务") + @PostMapping @PreAuthorize("hasAnyRole('ADMIN','JOB_ALL','JOB_CREATE')") public ResponseEntity create(@Validated @RequestBody QuartzJob resources){ if (resources.getId() != null) { throw new BadRequestException("A new "+ ENTITY_NAME +" cannot already have an ID"); } - return new ResponseEntity(quartzJobService.create(resources),HttpStatus.CREATED); + return new ResponseEntity<>(quartzJobService.create(resources),HttpStatus.CREATED); } @Log("修改定时任务") - @PutMapping(value = "/jobs") + @ApiOperation("修改定时任务") + @PutMapping @PreAuthorize("hasAnyRole('ADMIN','JOB_ALL','JOB_EDIT')") public ResponseEntity update(@Validated(QuartzJob.Update.class) @RequestBody QuartzJob resources){ quartzJobService.update(resources); @@ -60,7 +69,8 @@ public class QuartzJobController { } @Log("更改定时任务状态") - @PutMapping(value = "/jobs/{id}") + @ApiOperation("更改定时任务状态") + @PutMapping(value = "/{id}") @PreAuthorize("hasAnyRole('ADMIN','JOB_ALL','JOB_EDIT')") public ResponseEntity updateIsPause(@PathVariable Long id){ quartzJobService.updateIsPause(quartzJobService.findById(id)); @@ -68,7 +78,8 @@ public class QuartzJobController { } @Log("执行定时任务") - @PutMapping(value = "/jobs/exec/{id}") + @ApiOperation("执行定时任务") + @PutMapping(value = "/exec/{id}") @PreAuthorize("hasAnyRole('ADMIN','JOB_ALL','JOB_EDIT')") public ResponseEntity execution(@PathVariable Long id){ quartzJobService.execution(quartzJobService.findById(id)); @@ -76,7 +87,8 @@ public class QuartzJobController { } @Log("删除定时任务") - @DeleteMapping(value = "/jobs/{id}") + @ApiOperation("删除定时任务") + @DeleteMapping(value = "/{id}") @PreAuthorize("hasAnyRole('ADMIN','JOB_ALL','JOB_DELETE')") public ResponseEntity delete(@PathVariable Long id){ quartzJobService.delete(quartzJobService.findById(id)); diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/quartz/service/QuartzJobService.java b/eladmin-system/src/main/java/me/zhengjie/modules/quartz/service/QuartzJobService.java index a5ade06..d11aaf4 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/quartz/service/QuartzJobService.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/quartz/service/QuartzJobService.java @@ -1,78 +1,36 @@ package me.zhengjie.modules.quartz.service; import me.zhengjie.modules.quartz.domain.QuartzJob; -import me.zhengjie.modules.quartz.domain.QuartzLog; import me.zhengjie.modules.quartz.service.dto.JobQueryCriteria; -import org.springframework.cache.annotation.CacheConfig; -import org.springframework.cache.annotation.CacheEvict; -import org.springframework.cache.annotation.Cacheable; import org.springframework.data.domain.Pageable; /** * @author Zheng Jie * @date 2019-01-07 */ -@CacheConfig(cacheNames = "quartzJob") public interface QuartzJobService { - /** - * queryAll quartzJob - * @param criteria - * @param pageable - * @return - */ - @Cacheable Object queryAll(JobQueryCriteria criteria, Pageable pageable); - /** - * queryAll quartzLog - * @param criteria - * @param pageable - * @return - */ Object queryAllLog(JobQueryCriteria criteria, Pageable pageable); - /** - * create - * @param resources - * @return - */ - @CacheEvict(allEntries = true) QuartzJob create(QuartzJob resources); - /** - * update - * @param resources - * @return - */ - @CacheEvict(allEntries = true) void update(QuartzJob resources); - /** - * del - * @param quartzJob - */ - @CacheEvict(allEntries = true) void delete(QuartzJob quartzJob); - /** - * findById - * @param id - * @return - */ - @Cacheable(key = "#p0") QuartzJob findById(Long id); /** * 更改定时任务状态 - * @param quartzJob + * @param quartzJob / */ - @CacheEvict(allEntries = true) void updateIsPause(QuartzJob quartzJob); /** * 立即执行定时任务 - * @param quartzJob + * @param quartzJob / */ void execution(QuartzJob quartzJob); } diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/quartz/service/impl/QuartzJobServiceImpl.java b/eladmin-system/src/main/java/me/zhengjie/modules/quartz/service/impl/QuartzJobServiceImpl.java index b38c6c5..06058f8 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/quartz/service/impl/QuartzJobServiceImpl.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/quartz/service/impl/QuartzJobServiceImpl.java @@ -11,31 +11,37 @@ import me.zhengjie.utils.PageUtil; import me.zhengjie.utils.QueryHelp; import me.zhengjie.utils.ValidationUtil; import org.quartz.CronExpression; -import org.springframework.beans.factory.annotation.Autowired; +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.stereotype.Service; import org.springframework.transaction.annotation.Propagation; import org.springframework.transaction.annotation.Transactional; -import java.util.Optional; /** * @author Zheng Jie * @date 2019-01-07 */ @Service(value = "quartzJobService") +@CacheConfig(cacheNames = "quartzJob") @Transactional(propagation = Propagation.SUPPORTS, readOnly = true, rollbackFor = Exception.class) public class QuartzJobServiceImpl implements QuartzJobService { - @Autowired - private QuartzJobRepository quartzJobRepository; + private final QuartzJobRepository quartzJobRepository; - @Autowired - private QuartzLogRepository quartzLogRepository; + private final QuartzLogRepository quartzLogRepository; - @Autowired - private QuartzManage quartzManage; + private final QuartzManage quartzManage; + + public QuartzJobServiceImpl(QuartzJobRepository quartzJobRepository, QuartzLogRepository quartzLogRepository, QuartzManage quartzManage) { + this.quartzJobRepository = quartzJobRepository; + this.quartzLogRepository = quartzLogRepository; + this.quartzManage = quartzManage; + } @Override + @Cacheable public Object queryAll(JobQueryCriteria criteria, Pageable pageable){ return PageUtil.toPage(quartzJobRepository.findAll((root, criteriaQuery, criteriaBuilder) -> QueryHelp.getPredicate(root,criteria,criteriaBuilder),pageable)); } @@ -46,13 +52,15 @@ public class QuartzJobServiceImpl implements QuartzJobService { } @Override + @Cacheable(key = "#p0") public QuartzJob findById(Long id) { - Optional quartzJob = quartzJobRepository.findById(id); - ValidationUtil.isNull(quartzJob,"QuartzJob","id",id); - return quartzJob.get(); + QuartzJob quartzJob = quartzJobRepository.findById(id).orElseGet(QuartzJob::new); + ValidationUtil.isNull(quartzJob.getId(),"QuartzJob","id",id); + return quartzJob; } @Override + @CacheEvict(allEntries = true) @Transactional(rollbackFor = Exception.class) public QuartzJob create(QuartzJob resources) { if (!CronExpression.isValidExpression(resources.getCronExpression())){ @@ -64,6 +72,7 @@ public class QuartzJobServiceImpl implements QuartzJobService { } @Override + @CacheEvict(allEntries = true) @Transactional(rollbackFor = Exception.class) public void update(QuartzJob resources) { if(resources.getId().equals(1L)){ @@ -77,6 +86,7 @@ public class QuartzJobServiceImpl implements QuartzJobService { } @Override + @CacheEvict(allEntries = true) public void updateIsPause(QuartzJob quartzJob) { if(quartzJob.getId().equals(1L)){ throw new BadRequestException("该任务不可操作"); @@ -100,6 +110,7 @@ public class QuartzJobServiceImpl implements QuartzJobService { } @Override + @CacheEvict(allEntries = true) @Transactional(rollbackFor = Exception.class) public void delete(QuartzJob quartzJob) { if(quartzJob.getId().equals(1L)){ diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/quartz/task/VisitsTask.java b/eladmin-system/src/main/java/me/zhengjie/modules/quartz/task/VisitsTask.java index 01e238e..47bb66c 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/quartz/task/VisitsTask.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/quartz/task/VisitsTask.java @@ -1,7 +1,6 @@ package me.zhengjie.modules.quartz.task; import me.zhengjie.modules.monitor.service.VisitsService; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; /** @@ -11,8 +10,11 @@ import org.springframework.stereotype.Component; @Component public class VisitsTask { - @Autowired - private VisitsService visitsService; + private final VisitsService visitsService; + + public VisitsTask(VisitsService visitsService) { + this.visitsService = visitsService; + } public void run(){ visitsService.save(); diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/quartz/utils/ExecutionJob.java b/eladmin-system/src/main/java/me/zhengjie/modules/quartz/utils/ExecutionJob.java index 221d665..31209f0 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/quartz/utils/ExecutionJob.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/quartz/utils/ExecutionJob.java @@ -17,7 +17,7 @@ import java.util.concurrent.Future; /** * 参考人人开源,https://gitee.com/renrenio/renren-security - * @author + * @author / * @date 2019-01-07 */ @Async @@ -32,9 +32,8 @@ public class ExecutionJob extends QuartzJobBean { protected void executeInternal(JobExecutionContext context) { QuartzJob quartzJob = (QuartzJob) context.getMergedJobDataMap().get(QuartzJob.JOB_KEY); // 获取spring bean - QuartzLogRepository quartzLogRepository = SpringContextHolder.getBean("quartzLogRepository"); - QuartzJobService quartzJobService = SpringContextHolder.getBean("quartzJobService"); - QuartzManage quartzManage = SpringContextHolder.getBean("quartzManage"); + QuartzLogRepository quartzLogRepository = SpringContextHolder.getBean(QuartzLogRepository.class); + QuartzJobService quartzJobService = SpringContextHolder.getBean(QuartzJobService.class); QuartzLog log = new QuartzLog(); log.setJobName(quartzJob.getJobName()); diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/quartz/utils/QuartzManage.java b/eladmin-system/src/main/java/me/zhengjie/modules/quartz/utils/QuartzManage.java index a017df1..1cb6a2c 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/quartz/utils/QuartzManage.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/quartz/utils/QuartzManage.java @@ -56,8 +56,7 @@ public class QuartzManage { /** * 更新job cron表达式 - * @param quartzJob - * @throws SchedulerException + * @param quartzJob / */ public void updateJobCron(QuartzJob quartzJob){ try { @@ -88,8 +87,7 @@ public class QuartzManage { /** * 删除一个job - * @param quartzJob - * @throws SchedulerException + * @param quartzJob / */ public void deleteJob(QuartzJob quartzJob){ try { @@ -104,8 +102,7 @@ public class QuartzManage { /** * 恢复一个job - * @param quartzJob - * @throws SchedulerException + * @param quartzJob / */ public void resumeJob(QuartzJob quartzJob){ try { @@ -124,8 +121,7 @@ public class QuartzManage { /** * 立即执行job - * @param quartzJob - * @throws SchedulerException + * @param quartzJob / */ public void runAJobNow(QuartzJob quartzJob){ try { @@ -146,8 +142,7 @@ public class QuartzManage { /** * 暂停一个job - * @param quartzJob - * @throws SchedulerException + * @param quartzJob / */ public void pauseJob(QuartzJob quartzJob){ try { diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/quartz/utils/QuartzRunnable.java b/eladmin-system/src/main/java/me/zhengjie/modules/quartz/utils/QuartzRunnable.java index d940729..f3f8720 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/quartz/utils/QuartzRunnable.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/quartz/utils/QuartzRunnable.java @@ -1,7 +1,6 @@ package me.zhengjie.modules.quartz.utils; import lombok.extern.slf4j.Slf4j; -import me.zhengjie.exception.BadRequestException; import me.zhengjie.utils.SpringContextHolder; import org.apache.commons.lang3.StringUtils; import org.springframework.util.ReflectionUtils; @@ -10,7 +9,7 @@ import java.util.concurrent.Callable; /** * 执行定时任务 - * @author + * @author / */ @Slf4j public class QuartzRunnable implements Callable { 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 d10bd21..0e5f257 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 @@ -25,23 +25,21 @@ import org.springframework.security.web.authentication.UsernamePasswordAuthentic @EnableGlobalMethodSecurity(prePostEnabled = true) public class SecurityConfig extends WebSecurityConfigurerAdapter { - @Autowired - private JwtAuthenticationEntryPoint unauthorizedHandler; + private final JwtAuthenticationEntryPoint unauthorizedHandler; - @Autowired - private JwtUserDetailsService jwtUserDetailsService; + private final JwtUserDetailsService jwtUserDetailsService; - /** - * 自定义基于JWT的安全过滤器 - */ - @Autowired - JwtAuthorizationTokenFilter authenticationTokenFilter; + // 自定义基于JWT的安全过滤器 + private final JwtAuthorizationTokenFilter authenticationTokenFilter; @Value("${jwt.header}") private String tokenHeader; - @Value("${jwt.auth.path}") - private String loginPath; + public SecurityConfig(JwtAuthenticationEntryPoint unauthorizedHandler, JwtUserDetailsService jwtUserDetailsService, JwtAuthorizationTokenFilter authenticationTokenFilter) { + this.unauthorizedHandler = unauthorizedHandler; + this.jwtUserDetailsService = jwtUserDetailsService; + this.authenticationTokenFilter = authenticationTokenFilter; + } @Autowired public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception { @@ -70,6 +68,7 @@ public class SecurityConfig extends WebSecurityConfigurerAdapter { @Override protected void configure(HttpSecurity httpSecurity) throws Exception { + String loginPath = "login"; httpSecurity // 禁用 CSRF @@ -91,7 +90,7 @@ public class SecurityConfig extends WebSecurityConfigurerAdapter { "/**/*.js" ).anonymous() - .antMatchers( HttpMethod.POST,"/auth/"+loginPath).anonymous() + .antMatchers( HttpMethod.POST,"/auth/"+ loginPath).anonymous() .antMatchers("/auth/vCode").anonymous() // 支付宝回调 .antMatchers("/api/aliPay/return").anonymous() diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/security/rest/AuthenticationController.java b/eladmin-system/src/main/java/me/zhengjie/modules/security/rest/AuthenticationController.java index baf9915..de76fb7 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/security/rest/AuthenticationController.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/security/rest/AuthenticationController.java @@ -2,6 +2,8 @@ package me.zhengjie.modules.security.rest; import cn.hutool.core.codec.Base64; import cn.hutool.core.util.IdUtil; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; import lombok.extern.slf4j.Slf4j; import me.zhengjie.aop.log.Log; import me.zhengjie.exception.BadRequestException; @@ -15,7 +17,6 @@ import me.zhengjie.utils.EncryptUtils; import me.zhengjie.modules.security.utils.JwtTokenUtil; import me.zhengjie.utils.SecurityUtils; import me.zhengjie.utils.StringUtils; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.beans.factory.annotation.Value; import org.springframework.http.ResponseEntity; @@ -23,7 +24,6 @@ import org.springframework.security.authentication.AccountExpiredException; import org.springframework.security.core.userdetails.UserDetailsService; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; -import javax.servlet.http.HttpServletResponse; import java.io.ByteArrayOutputStream; import java.io.IOException; @@ -34,29 +34,28 @@ import java.io.IOException; */ @Slf4j @RestController -@RequestMapping("auth") +@RequestMapping("/auth") +@Api(tags = "系统:系统授权接口") public class AuthenticationController { @Value("${jwt.header}") private String tokenHeader; - @Autowired - private JwtTokenUtil jwtTokenUtil; + private final JwtTokenUtil jwtTokenUtil; - @Autowired - private RedisService redisService; + private final RedisService redisService; - @Autowired - @Qualifier("jwtUserDetailsService") - private UserDetailsService userDetailsService; + private final UserDetailsService userDetailsService; + + public AuthenticationController(JwtTokenUtil jwtTokenUtil, RedisService redisService, @Qualifier("jwtUserDetailsService") UserDetailsService userDetailsService) { + this.jwtTokenUtil = jwtTokenUtil; + this.redisService = redisService; + this.userDetailsService = userDetailsService; + } - /** - * 登录授权 - * @param authorizationUser - * @return - */ @Log("用户登录") - @PostMapping(value = "${jwt.auth.path}") + @ApiOperation("登录授权") + @PostMapping(value = "/login") public ResponseEntity login(@Validated @RequestBody AuthorizationUser authorizationUser){ // 查询验证码 @@ -86,21 +85,16 @@ public class AuthenticationController { return ResponseEntity.ok(new AuthenticationInfo(token,jwtUser)); } - /** - * 获取用户信息 - * @return - */ - @GetMapping(value = "${jwt.auth.account}") + @ApiOperation("获取用户信息") + @GetMapping(value = "/info") public ResponseEntity getUserInfo(){ JwtUser jwtUser = (JwtUser)userDetailsService.loadUserByUsername(SecurityUtils.getUsername()); return ResponseEntity.ok(jwtUser); } - /** - * 获取验证码 - */ - @GetMapping(value = "vCode") - public ImgResult getCode(HttpServletResponse response) throws IOException { + @ApiOperation("获取验证码") + @GetMapping(value = "/vCode") + public ImgResult getCode() throws IOException { //生成随机字串 String verifyCode = VerifyCodeUtils.generateVerifyCode(4); diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/security/security/JwtAuthenticationEntryPoint.java b/eladmin-system/src/main/java/me/zhengjie/modules/security/security/JwtAuthenticationEntryPoint.java index f150467..9569c8b 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/security/security/JwtAuthenticationEntryPoint.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/security/security/JwtAuthenticationEntryPoint.java @@ -18,9 +18,7 @@ public class JwtAuthenticationEntryPoint implements AuthenticationEntryPoint, Se public void commence(HttpServletRequest request, HttpServletResponse response, AuthenticationException authException) throws IOException { - /** - * 当用户尝试访问安全的REST资源而不提供任何凭据时,将调用此方法发送401 响应 - */ + // 当用户尝试访问安全的REST资源而不提供任何凭据时,将调用此方法发送401 响应 response.sendError(HttpServletResponse.SC_UNAUTHORIZED, authException==null?"Unauthorized":authException.getMessage()); } } diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/security/service/JwtPermissionService.java b/eladmin-system/src/main/java/me/zhengjie/modules/security/service/JwtPermissionService.java index c653d20..b161165 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/security/service/JwtPermissionService.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/security/service/JwtPermissionService.java @@ -3,7 +3,6 @@ package me.zhengjie.modules.security.service; import me.zhengjie.modules.system.domain.Role; import me.zhengjie.modules.system.repository.RoleRepository; import me.zhengjie.modules.system.service.dto.UserDTO; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.cache.annotation.CacheConfig; import org.springframework.cache.annotation.Cacheable; import org.springframework.security.core.GrantedAuthority; @@ -17,13 +16,16 @@ import java.util.stream.Collectors; @CacheConfig(cacheNames = "role") public class JwtPermissionService { - @Autowired - private RoleRepository roleRepository; + private final RoleRepository roleRepository; + + public JwtPermissionService(RoleRepository roleRepository) { + this.roleRepository = roleRepository; + } /** * key的名称如有修改,请同步修改 UserServiceImpl 中的 update 方法 - * @param user - * @return + * @param user 用户信息 + * @return Collection */ @Cacheable(key = "'loadPermissionByUser:' + #p0.username") public Collection mapToGrantedAuthorities(UserDTO user) { diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/security/service/JwtUserDetailsService.java b/eladmin-system/src/main/java/me/zhengjie/modules/security/service/JwtUserDetailsService.java index 91239a0..5165624 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/security/service/JwtUserDetailsService.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/security/service/JwtUserDetailsService.java @@ -4,7 +4,6 @@ import me.zhengjie.exception.BadRequestException; import me.zhengjie.modules.security.security.JwtUser; import me.zhengjie.modules.system.service.UserService; import me.zhengjie.modules.system.service.dto.*; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.security.core.userdetails.UserDetails; import org.springframework.security.core.userdetails.UserDetailsService; import org.springframework.stereotype.Service; @@ -20,11 +19,14 @@ import java.util.Optional; @Transactional(propagation = Propagation.SUPPORTS, readOnly = true, rollbackFor = Exception.class) public class JwtUserDetailsService implements UserDetailsService { - @Autowired - private UserService userService; + private final UserService userService; - @Autowired - private JwtPermissionService permissionService; + private final JwtPermissionService permissionService; + + public JwtUserDetailsService(UserService userService, JwtPermissionService permissionService) { + this.userService = userService; + this.permissionService = permissionService; + } @Override public UserDetails loadUserByUsername(String username){ diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/security/utils/JwtTokenUtil.java b/eladmin-system/src/main/java/me/zhengjie/modules/security/utils/JwtTokenUtil.java index ee7517a..dd2734a 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/security/utils/JwtTokenUtil.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/security/utils/JwtTokenUtil.java @@ -31,15 +31,15 @@ public class JwtTokenUtil implements Serializable { return getClaimFromToken(token, Claims::getSubject); } - public Date getIssuedAtDateFromToken(String token) { + private Date getIssuedAtDateFromToken(String token) { return getClaimFromToken(token, Claims::getIssuedAt); } - public Date getExpirationDateFromToken(String token) { + private Date getExpirationDateFromToken(String token) { return getClaimFromToken(token, Claims::getExpiration); } - public T getClaimFromToken(String token, Function claimsResolver) { + private T getClaimFromToken(String token, Function claimsResolver) { final Claims claims = getAllClaimsFromToken(token); return claimsResolver.apply(claims); } diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/security/utils/VerifyCodeUtils.java b/eladmin-system/src/main/java/me/zhengjie/modules/security/utils/VerifyCodeUtils.java index 74eb04a..406b2de 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/security/utils/VerifyCodeUtils.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/security/utils/VerifyCodeUtils.java @@ -1,5 +1,7 @@ package me.zhengjie.modules.security.utils; +import me.zhengjie.utils.StringUtils; + import java.awt.Color; import java.awt.Font; import java.awt.Graphics; @@ -20,26 +22,27 @@ import javax.imageio.ImageIO; public class VerifyCodeUtils{ //使用到Algerian字体,系统里没有的话需要安装字体,字体只显示大写,去掉了1,0,i,o几个容易混淆的字符 - public static final String VERIFY_CODES = "23456789ABCDEFGHJKLMNPQRSTUVWXYZ"; + private static final String VERIFY_CODES = "23456789ABCDEFGHJKLMNPQRSTUVWXYZ"; private static Random random = new Random(); /** * 使用系统默认字符源生成验证码 * @param verifySize 验证码长度 - * @return + * @return 验证码 */ public static String generateVerifyCode(int verifySize){ return generateVerifyCode(verifySize, VERIFY_CODES); } + /** * 使用指定源生成验证码 * @param verifySize 验证码长度 * @param sources 验证码字符源 - * @return + * @return 验证码 */ - public static String generateVerifyCode(int verifySize, String sources){ - if(sources == null || sources.length() == 0){ + private static String generateVerifyCode(int verifySize, String sources){ + if(StringUtils.isBlank(sources)){ sources = VERIFY_CODES; } int codesLen = sources.length(); @@ -53,11 +56,11 @@ public class VerifyCodeUtils{ /** * 输出指定验证码图片流 - * @param w - * @param h - * @param os - * @param code - * @throws IOException + * @param w / + * @param h / + * @param os / + * @param code / + * @throws IOException / */ public static void outputImage(int w, int h, OutputStream os, String code) throws IOException{ int verifySize = code.length(); @@ -157,33 +160,24 @@ public class VerifyCodeUtils{ } private static void shearX(Graphics g, int w1, int h1, Color color) { - int period = random.nextInt(2); - - boolean borderGap = true; int frames = 1; int phase = random.nextInt(2); - for (int i = 0; i < h1; i++) { double d = (double) (period >> 1) * Math.sin((double) i / (double) period + (6.2831853071795862D * (double) phase) / (double) frames); g.copyArea(0, i, w1, 1, (int) d, 0); - if (borderGap) { - g.setColor(color); - g.drawLine((int) d, i, 0, i); - g.drawLine((int) d + w1, i, w1, i); - } + g.setColor(color); + g.drawLine((int) d, i, 0, i); + g.drawLine((int) d + w1, i, w1, i); } } private static void shearY(Graphics g, int w1, int h1, Color color) { - int period = random.nextInt(40) + 10; // 50; - - boolean borderGap = true; int frames = 20; int phase = 7; for (int i = 0; i < w1; i++) { @@ -192,11 +186,9 @@ public class VerifyCodeUtils{ + (6.2831853071795862D * (double) phase) / (double) frames); g.copyArea(i, 0, 1, h1, 0, (int) d); - if (borderGap) { - g.setColor(color); - g.drawLine(i, (int) d, i, 0); - g.drawLine(i, (int) d + h1, i, h1); - } + g.setColor(color); + g.drawLine(i, (int) d, i, 0); + g.drawLine(i, (int) d + h1, i, h1); } } diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/domain/Dept.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/domain/Dept.java index 5fe611c..36dd186 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/domain/Dept.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/domain/Dept.java @@ -19,18 +19,12 @@ import java.util.Set; @Table(name="dept") public class Dept implements Serializable { - /** - * ID - */ @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "id") @NotNull(groups = Update.class) private Long id; - /** - * 名称 - */ @Column(name = "name",nullable = false) @NotBlank private String name; @@ -38,9 +32,6 @@ public class Dept implements Serializable { @NotNull private Boolean enabled; - /** - * 上级部门 - */ @Column(name = "pid",nullable = false) @NotNull private Long pid; diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/domain/Dict.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/domain/Dict.java index 83183d3..033681a 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/domain/Dict.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/domain/Dict.java @@ -22,16 +22,10 @@ public class Dict implements Serializable { @NotNull(groups = Update.class) private Long id; - /** - * 字典名称 - */ @Column(name = "name",nullable = false,unique = true) @NotBlank private String name; - /** - * 描述 - */ @Column(name = "remark") private String remark; diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/domain/DictDetail.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/domain/DictDetail.java index a3799a3..d6c7b3b 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/domain/DictDetail.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/domain/DictDetail.java @@ -20,27 +20,19 @@ public class DictDetail implements Serializable { @NotNull(groups = Update.class) private Long id; - /** - * 字典标签 - */ + // 字典标签 @Column(name = "label",nullable = false) private String label; - /** - * 字典值 - */ + // 字典值 @Column(name = "value",nullable = false) private String value; - /** - * 排序 - */ + // 排序 @Column(name = "sort") private String sort = "999"; - /** - * 字典id - */ + // 字典id @ManyToOne(fetch=FetchType.LAZY) @JoinColumn(name = "dict_id") private Dict dict; diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/domain/Job.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/domain/Job.java index 58f3fd9..940e1df 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/domain/Job.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/domain/Job.java @@ -19,18 +19,12 @@ import java.io.Serializable; @Table(name="job") public class Job implements Serializable { - /** - * ID - */ @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "id") @NotNull(groups = Update.class) private Long id; - /** - * 名称 - */ @Column(name = "name",nullable = false) @NotBlank private String name; @@ -39,9 +33,6 @@ public class Job implements Serializable { @NotNull private Long sort; - /** - * 状态 - */ @Column(name = "enabled",nullable = false) @NotNull private Boolean enabled; @@ -50,9 +41,6 @@ public class Job implements Serializable { @JoinColumn(name = "dept_id") private Dept dept; - /** - * 创建日期 - */ @Column(name = "create_time") @CreationTimestamp private Timestamp createTime; 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 5ac2e6c..addf5b1 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 @@ -51,15 +51,11 @@ public class Menu implements Serializable { @Column(columnDefinition = "bit(1) default 0") private Boolean hidden; - /** - * 上级菜单ID - */ + // 上级菜单ID @Column(name = "pid",nullable = false) private Long pid; - /** - * 是否为外链 true/false - */ + // 是否为外链 true/false @Column(name = "i_frame") private Boolean iFrame; diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/domain/Permission.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/domain/Permission.java index 6927218..1d97b55 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/domain/Permission.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/domain/Permission.java @@ -29,9 +29,7 @@ public class Permission implements Serializable{ @NotBlank private String name; - /** - * 上级类目 - */ + // 上级类目 @NotNull @Column(name = "pid",nullable = false) private Long pid; diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/repository/DeptRepository.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/repository/DeptRepository.java index 12feee1..d8817f7 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/repository/DeptRepository.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/repository/DeptRepository.java @@ -4,7 +4,6 @@ import me.zhengjie.modules.system.domain.Dept; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.JpaSpecificationExecutor; import org.springframework.data.jpa.repository.Query; - import java.util.List; import java.util.Set; @@ -12,13 +11,8 @@ import java.util.Set; * @author Zheng Jie * @date 2019-03-25 */ -public interface DeptRepository extends JpaRepository, JpaSpecificationExecutor { +public interface DeptRepository extends JpaRepository, JpaSpecificationExecutor { - /** - * findByPid - * @param id - * @return - */ List findByPid(Long id); @Query(value = "select name from dept where id = ?1",nativeQuery = true) diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/repository/DictDetailRepository.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/repository/DictDetailRepository.java index 6a8a036..b394a7b 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/repository/DictDetailRepository.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/repository/DictDetailRepository.java @@ -8,5 +8,5 @@ import org.springframework.data.jpa.repository.JpaSpecificationExecutor; * @author Zheng Jie * @date 2019-04-10 */ -public interface DictDetailRepository extends JpaRepository, JpaSpecificationExecutor { +public interface DictDetailRepository extends JpaRepository, JpaSpecificationExecutor { } \ No newline at end of file diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/repository/DictRepository.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/repository/DictRepository.java index 699f130..f472a01 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/repository/DictRepository.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/repository/DictRepository.java @@ -8,5 +8,5 @@ import org.springframework.data.jpa.repository.JpaSpecificationExecutor; * @author Zheng Jie * @date 2019-04-10 */ -public interface DictRepository extends JpaRepository, JpaSpecificationExecutor { +public interface DictRepository extends JpaRepository, JpaSpecificationExecutor { } \ No newline at end of file diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/repository/JobRepository.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/repository/JobRepository.java index 38908a2..46f4273 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/repository/JobRepository.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/repository/JobRepository.java @@ -8,5 +8,5 @@ import org.springframework.data.jpa.repository.JpaSpecificationExecutor; * @author Zheng Jie * @date 2019-03-29 */ -public interface JobRepository extends JpaRepository, JpaSpecificationExecutor { +public interface JobRepository extends JpaRepository, JpaSpecificationExecutor { } \ No newline at end of file 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 91c6d79..829e616 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 @@ -1,40 +1,21 @@ package me.zhengjie.modules.system.repository; import me.zhengjie.modules.system.domain.Menu; -import me.zhengjie.modules.system.domain.Role; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.JpaSpecificationExecutor; - -import java.util.Arrays; import java.util.LinkedHashSet; import java.util.List; -import java.util.Set; /** * @author Zheng Jie * @date 2018-12-17 */ -public interface MenuRepository extends JpaRepository, JpaSpecificationExecutor { +public interface MenuRepository extends JpaRepository, JpaSpecificationExecutor { - /** - * findByName - * @param name - * @return - */ Menu findByName(String name); - /** - * findByName - * @param name - * @return - */ Menu findByComponentName(String name); - /** - * findByPid - * @param pid - * @return - */ List findByPid(long pid); LinkedHashSet findByRoles_IdOrderBySortAsc(Long id); 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 f27e865..0e8ba8f 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 @@ -9,19 +9,9 @@ import java.util.List; * @author Zheng Jie * @date 2018-12-03 */ -public interface PermissionRepository extends JpaRepository, JpaSpecificationExecutor { +public interface PermissionRepository extends JpaRepository, JpaSpecificationExecutor { - /** - * findByName - * @param name - * @return - */ Permission findByName(String name); - /** - * findByPid - * @param pid - * @return - */ List findByPid(long pid); } 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 1e2b15a..98edaed 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 @@ -5,20 +5,14 @@ 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; /** * @author Zheng Jie * @date 2018-12-03 */ -public interface RoleRepository extends JpaRepository, JpaSpecificationExecutor { +public interface RoleRepository extends JpaRepository, JpaSpecificationExecutor { - /** - * findByName - * @param name - * @return - */ Role findByName(String name); Set findByUsers_Id(Long id); 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 index 38136f8..1e7e058 100644 --- 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 @@ -4,12 +4,10 @@ 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 { +public interface UserAvatarRepository extends JpaRepository, JpaSpecificationExecutor { } diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/repository/UserRepository.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/repository/UserRepository.java index 6ccf3fd..186ecf0 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/repository/UserRepository.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/repository/UserRepository.java @@ -1,59 +1,26 @@ package me.zhengjie.modules.system.repository; import me.zhengjie.modules.system.domain.User; -import org.springframework.data.domain.Page; -import org.springframework.data.domain.Pageable; -import org.springframework.data.jpa.domain.Specification; 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.Date; -import java.util.List; /** * @author Zheng Jie * @date 2018-11-22 */ -public interface UserRepository extends JpaRepository, JpaSpecificationExecutor { +public interface UserRepository extends JpaRepository, JpaSpecificationExecutor { - /** - * findByUsername - * @param username - * @return - */ User findByUsername(String username); - /** - * findByEmail - * @param email - * @return - */ User findByEmail(String email); - /** - * 修改密码 - * @param username - * @param pass - */ @Modifying @Query(value = "update user set password = ?2 , last_password_reset_time = ?3 where username = ?1",nativeQuery = true) void updatePass(String username, String pass, Date lastPasswordResetTime); - /** - * 修改头像 - * @param username - * @param url - */ - @Modifying - @Query(value = "update user set avatar = ?2 where username = ?1",nativeQuery = true) - void updateAvatar(String username, String url); - - /** - * 修改邮箱 - * @param username - * @param email - */ @Modifying @Query(value = "update user set email = ?2 where username = ?1",nativeQuery = true) void updateEmail(String username, String email); 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 b57946b..2f7a32f 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 @@ -1,5 +1,7 @@ package me.zhengjie.modules.system.rest; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; import me.zhengjie.aop.log.Log; import me.zhengjie.config.DataScope; import me.zhengjie.exception.BadRequestException; @@ -8,7 +10,6 @@ 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; import org.springframework.security.access.prepost.PreAuthorize; @@ -21,39 +22,46 @@ import java.util.List; * @date 2019-03-25 */ @RestController -@RequestMapping("api") +@Api(tags = "系统:部门管理") +@RequestMapping("/api/dept") public class DeptController { - @Autowired - private DeptService deptService; + private final DeptService deptService; - @Autowired - private DataScope dataScope; + private final DataScope dataScope; private static final String ENTITY_NAME = "dept"; + public DeptController(DeptService deptService, DataScope dataScope) { + this.deptService = deptService; + this.dataScope = dataScope; + } + @Log("查询部门") - @GetMapping(value = "/dept") + @ApiOperation("查询部门") + @GetMapping @PreAuthorize("hasAnyRole('ADMIN','USER_ALL','USER_SELECT','DEPT_ALL','DEPT_SELECT')") public ResponseEntity getDepts(DeptQueryCriteria criteria){ // 数据权限 criteria.setIds(dataScope.getDeptIds()); List deptDTOS = deptService.queryAll(criteria); - return new ResponseEntity(deptService.buildTree(deptDTOS),HttpStatus.OK); + return new ResponseEntity<>(deptService.buildTree(deptDTOS),HttpStatus.OK); } @Log("新增部门") - @PostMapping(value = "/dept") + @ApiOperation("新增部门") + @PostMapping @PreAuthorize("hasAnyRole('ADMIN','DEPT_ALL','DEPT_CREATE')") public ResponseEntity create(@Validated @RequestBody Dept resources){ if (resources.getId() != null) { throw new BadRequestException("A new "+ ENTITY_NAME +" cannot already have an ID"); } - return new ResponseEntity(deptService.create(resources),HttpStatus.CREATED); + return new ResponseEntity<>(deptService.create(resources),HttpStatus.CREATED); } @Log("修改部门") - @PutMapping(value = "/dept") + @ApiOperation("修改部门") + @PutMapping @PreAuthorize("hasAnyRole('ADMIN','DEPT_ALL','DEPT_EDIT')") public ResponseEntity update(@Validated(Dept.Update.class) @RequestBody Dept resources){ deptService.update(resources); @@ -61,7 +69,8 @@ public class DeptController { } @Log("删除部门") - @DeleteMapping(value = "/dept/{id}") + @ApiOperation("删除部门") + @DeleteMapping(value = "/{id}") @PreAuthorize("hasAnyRole('ADMIN','DEPT_ALL','DEPT_DELETE')") public ResponseEntity delete(@PathVariable Long id){ try { diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/rest/DictController.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/rest/DictController.java index 9480bb6..cd60339 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/rest/DictController.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/rest/DictController.java @@ -1,5 +1,7 @@ package me.zhengjie.modules.system.rest; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; import me.zhengjie.aop.log.Log; import me.zhengjie.exception.BadRequestException; import me.zhengjie.modules.system.domain.Dict; @@ -17,34 +19,41 @@ import org.springframework.web.bind.annotation.*; * @author Zheng Jie * @date 2019-04-10 */ +@Api(tags = "系统:字典管理") @RestController -@RequestMapping("api") +@RequestMapping("/api/dict") public class DictController { - @Autowired - private DictService dictService; + private final DictService dictService; private static final String ENTITY_NAME = "dict"; + public DictController(DictService dictService) { + this.dictService = dictService; + } + @Log("查询字典") - @GetMapping(value = "/dict") + @ApiOperation("查询字典") + @GetMapping @PreAuthorize("hasAnyRole('ADMIN','DICT_ALL','DICT_SELECT')") public ResponseEntity getDicts(DictQueryCriteria resources, Pageable pageable){ - return new ResponseEntity(dictService.queryAll(resources,pageable),HttpStatus.OK); + return new ResponseEntity<>(dictService.queryAll(resources,pageable),HttpStatus.OK); } @Log("新增字典") - @PostMapping(value = "/dict") + @ApiOperation("新增字典") + @PostMapping @PreAuthorize("hasAnyRole('ADMIN','DICT_ALL','DICT_CREATE')") public ResponseEntity create(@Validated @RequestBody Dict resources){ if (resources.getId() != null) { throw new BadRequestException("A new "+ ENTITY_NAME +" cannot already have an ID"); } - return new ResponseEntity(dictService.create(resources),HttpStatus.CREATED); + return new ResponseEntity<>(dictService.create(resources),HttpStatus.CREATED); } @Log("修改字典") - @PutMapping(value = "/dict") + @ApiOperation("修改字典") + @PutMapping @PreAuthorize("hasAnyRole('ADMIN','DICT_ALL','DICT_EDIT')") public ResponseEntity update(@Validated(Dict.Update.class) @RequestBody Dict resources){ dictService.update(resources); @@ -52,7 +61,8 @@ public class DictController { } @Log("删除字典") - @DeleteMapping(value = "/dict/{id}") + @ApiOperation("删除字典") + @DeleteMapping(value = "/{id}") @PreAuthorize("hasAnyRole('ADMIN','DICT_ALL','DICT_DELETE')") public ResponseEntity delete(@PathVariable Long id){ dictService.delete(id); diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/rest/DictDetailController.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/rest/DictDetailController.java index a15107f..02e78ff 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/rest/DictDetailController.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/rest/DictDetailController.java @@ -1,5 +1,7 @@ package me.zhengjie.modules.system.rest; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; import me.zhengjie.aop.log.Log; import me.zhengjie.exception.BadRequestException; import me.zhengjie.modules.system.domain.DictDetail; @@ -25,47 +27,55 @@ import java.util.stream.Collectors; * @date 2019-04-10 */ @RestController -@RequestMapping("api") +@Api(tags = "系统:字典详情管理") +@RequestMapping("/api/dictDetail") public class DictDetailController { - @Autowired - private DictDetailService dictDetailService; + private final DictDetailService dictDetailService; private static final String ENTITY_NAME = "dictDetail"; + public DictDetailController(DictDetailService dictDetailService) { + this.dictDetailService = dictDetailService; + } + @Log("查询字典详情") - @GetMapping(value = "/dictDetail") + @ApiOperation("查询字典详情") + @GetMapping public ResponseEntity getDictDetails(DictDetailQueryCriteria criteria, @PageableDefault(value = 10, sort = {"sort"}, direction = Sort.Direction.ASC) Pageable pageable){ String[] names = criteria.getDictName().split(","); - return new ResponseEntity(dictDetailService.queryAll(criteria,pageable),HttpStatus.OK); + return new ResponseEntity<>(dictDetailService.queryAll(criteria,pageable),HttpStatus.OK); } @Log("查询多个字典详情") - @GetMapping(value = "/dictDetail/map") + @ApiOperation("查询多个字典详情") + @GetMapping(value = "/map") public ResponseEntity getDictDetailMaps(DictDetailQueryCriteria criteria, @PageableDefault(value = 10, sort = {"sort"}, direction = Sort.Direction.ASC) Pageable pageable){ String[] names = criteria.getDictName().split(","); - Map map = new HashMap(names.length); + Map map = new HashMap<>(names.length); for (String name : names) { criteria.setDictName(name); map.put(name,dictDetailService.queryAll(criteria,pageable).get("content")); } - return new ResponseEntity(map,HttpStatus.OK); + return new ResponseEntity<>(map,HttpStatus.OK); } @Log("新增字典详情") - @PostMapping(value = "/dictDetail") + @ApiOperation("新增字典详情") + @PostMapping @PreAuthorize("hasAnyRole('ADMIN','DICT_ALL','DICT_CREATE')") public ResponseEntity create(@Validated @RequestBody DictDetail resources){ if (resources.getId() != null) { throw new BadRequestException("A new "+ ENTITY_NAME +" cannot already have an ID"); } - return new ResponseEntity(dictDetailService.create(resources),HttpStatus.CREATED); + return new ResponseEntity<>(dictDetailService.create(resources),HttpStatus.CREATED); } @Log("修改字典详情") - @PutMapping(value = "/dictDetail") + @ApiOperation("修改字典详情") + @PutMapping @PreAuthorize("hasAnyRole('ADMIN','DICT_ALL','DICT_EDIT')") public ResponseEntity update(@Validated(DictDetail.Update.class) @RequestBody DictDetail resources){ dictDetailService.update(resources); @@ -73,7 +83,8 @@ public class DictDetailController { } @Log("删除字典详情") - @DeleteMapping(value = "/dictDetail/{id}") + @ApiOperation("删除字典详情") + @DeleteMapping(value = "/{id}") @PreAuthorize("hasAnyRole('ADMIN','DICT_ALL','DICT_DELETE')") public ResponseEntity delete(@PathVariable Long id){ dictDetailService.delete(id); 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 5694ea0..1f455aa 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 @@ -1,5 +1,7 @@ package me.zhengjie.modules.system.rest; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; import me.zhengjie.aop.log.Log; import me.zhengjie.config.DataScope; import me.zhengjie.exception.BadRequestException; @@ -21,40 +23,47 @@ import java.util.Set; * @author Zheng Jie * @date 2019-03-29 */ +@Api(tags = "系统:岗位管理") @RestController -@RequestMapping("api") +@RequestMapping("/api/job") public class JobController { - @Autowired - private JobService jobService; + private final JobService jobService; - @Autowired - private DataScope dataScope; + private final DataScope dataScope; private static final String ENTITY_NAME = "job"; + public JobController(JobService jobService, DataScope dataScope) { + this.jobService = jobService; + this.dataScope = dataScope; + } + @Log("查询岗位") - @GetMapping(value = "/job") + @ApiOperation("查询岗位") + @GetMapping @PreAuthorize("hasAnyRole('ADMIN','USERJOB_ALL','USERJOB_SELECT','USER_ALL','USER_SELECT')") public ResponseEntity getJobs(JobQueryCriteria criteria, Pageable pageable){ // 数据权限 criteria.setDeptIds(dataScope.getDeptIds()); - return new ResponseEntity(jobService.queryAll(criteria, pageable),HttpStatus.OK); + return new ResponseEntity<>(jobService.queryAll(criteria, pageable),HttpStatus.OK); } @Log("新增岗位") - @PostMapping(value = "/job") + @ApiOperation("新增岗位") + @PostMapping @PreAuthorize("hasAnyRole('ADMIN','USERJOB_ALL','USERJOB_CREATE')") public ResponseEntity create(@Validated @RequestBody Job resources){ if (resources.getId() != null) { throw new BadRequestException("A new "+ ENTITY_NAME +" cannot already have an ID"); } - return new ResponseEntity(jobService.create(resources),HttpStatus.CREATED); + return new ResponseEntity<>(jobService.create(resources),HttpStatus.CREATED); } @Log("修改岗位") - @PutMapping(value = "/job") + @ApiOperation("修改岗位") + @PutMapping @PreAuthorize("hasAnyRole('ADMIN','USERJOB_ALL','USERJOB_EDIT')") public ResponseEntity update(@Validated(Job.Update.class) @RequestBody Job resources){ jobService.update(resources); @@ -62,7 +71,8 @@ public class JobController { } @Log("删除岗位") - @DeleteMapping(value = "/job/{id}") + @ApiOperation("删除岗位") + @DeleteMapping(value = "/{id}") @PreAuthorize("hasAnyRole('ADMIN','USERJOB_ALL','USERJOB_DELETE')") public ResponseEntity delete(@PathVariable Long id){ try { 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 37a65a2..03ce9ed 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 @@ -1,5 +1,7 @@ package me.zhengjie.modules.system.rest; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; import me.zhengjie.aop.log.Log; import me.zhengjie.modules.system.domain.Menu; import me.zhengjie.exception.BadRequestException; @@ -10,7 +12,6 @@ import me.zhengjie.modules.system.service.dto.MenuDTO; import me.zhengjie.modules.system.service.dto.MenuQueryCriteria; import me.zhengjie.modules.system.service.dto.UserDTO; import me.zhengjie.utils.SecurityUtils; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; import org.springframework.security.access.prepost.PreAuthorize; @@ -24,63 +25,63 @@ import java.util.Set; * @author Zheng Jie * @date 2018-12-03 */ +@Api(tags = "系统:菜单管理") @RestController -@RequestMapping("api") +@RequestMapping("/api/menus") public class MenuController { - @Autowired - private MenuService menuService; + private final MenuService menuService; - @Autowired - private UserService userService; + private final UserService userService; - @Autowired - private RoleService roleService; + private final RoleService roleService; private static final String ENTITY_NAME = "menu"; - /** - * 构建前端路由所需要的菜单 - * @return - */ - @GetMapping(value = "/menus/build") + public MenuController(MenuService menuService, UserService userService, RoleService roleService) { + this.menuService = menuService; + this.userService = userService; + this.roleService = roleService; + } + + @ApiOperation("获取菜单树") + @GetMapping(value = "/build") public ResponseEntity buildMenus(){ UserDTO user = userService.findByName(SecurityUtils.getUsername()); List menuDTOList = menuService.findByRoles(roleService.findByUsers_Id(user.getId())); - List menuDTOTree = (List)menuService.buildTree(menuDTOList).get("content"); - return new ResponseEntity(menuService.buildMenus(menuDTOTree),HttpStatus.OK); + return new ResponseEntity<>(menuService.buildMenus((List) menuService.buildTree(menuDTOList).get("content")),HttpStatus.OK); } - /** - * 返回全部的菜单 - * @return - */ - @GetMapping(value = "/menus/tree") + @ApiOperation("返回全部的菜单") + @GetMapping(value = "/tree") @PreAuthorize("hasAnyRole('ADMIN','MENU_ALL','MENU_CREATE','MENU_EDIT','ROLES_SELECT','ROLES_ALL')") public ResponseEntity getMenuTree(){ - return new ResponseEntity(menuService.getMenuTree(menuService.findByPid(0L)),HttpStatus.OK); + return new ResponseEntity<>(menuService.getMenuTree(menuService.findByPid(0L)),HttpStatus.OK); } @Log("查询菜单") - @GetMapping(value = "/menus") + @ApiOperation("查询菜单") + @GetMapping @PreAuthorize("hasAnyRole('ADMIN','MENU_ALL','MENU_SELECT')") public ResponseEntity getMenus(MenuQueryCriteria criteria){ List menuDTOList = menuService.queryAll(criteria); - return new ResponseEntity(menuService.buildTree(menuDTOList),HttpStatus.OK); + return new ResponseEntity<>(menuService.buildTree(menuDTOList),HttpStatus.OK); } @Log("新增菜单") - @PostMapping(value = "/menus") + @ApiOperation("新增菜单") + @PostMapping @PreAuthorize("hasAnyRole('ADMIN','MENU_ALL','MENU_CREATE')") public ResponseEntity create(@Validated @RequestBody Menu resources){ if (resources.getId() != null) { throw new BadRequestException("A new "+ ENTITY_NAME +" cannot already have an ID"); } - return new ResponseEntity(menuService.create(resources),HttpStatus.CREATED); + return new ResponseEntity<>(menuService.create(resources),HttpStatus.CREATED); } @Log("修改菜单") - @PutMapping(value = "/menus") + @ApiOperation("修改菜单") + @PutMapping @PreAuthorize("hasAnyRole('ADMIN','MENU_ALL','MENU_EDIT')") public ResponseEntity update(@Validated(Menu.Update.class) @RequestBody Menu resources){ menuService.update(resources); @@ -88,7 +89,8 @@ public class MenuController { } @Log("删除菜单") - @DeleteMapping(value = "/menus/{id}") + @ApiOperation("删除菜单") + @DeleteMapping(value = "/{id}") @PreAuthorize("hasAnyRole('ADMIN','MENU_ALL','MENU_DELETE')") public ResponseEntity delete(@PathVariable Long id){ List menuList = menuService.findByPid(id); 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 216c838..fdae182 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 @@ -1,5 +1,7 @@ package me.zhengjie.modules.system.rest; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; import me.zhengjie.aop.log.Log; import me.zhengjie.modules.system.domain.Permission; import me.zhengjie.exception.BadRequestException; @@ -7,13 +9,11 @@ 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; 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; @@ -22,48 +22,52 @@ import java.util.Set; * @author Zheng Jie * @date 2018-12-03 */ +@Api(tags = "系统:权限管理") @RestController -@RequestMapping("api") +@RequestMapping("/api/permissions") public class PermissionController { - @Autowired - private PermissionService permissionService; + private final PermissionService permissionService; - @Autowired - private PermissionMapper permissionMapper; + private final PermissionMapper permissionMapper; private static final String ENTITY_NAME = "permission"; - /** - * 返回全部的权限,新增角色时下拉选择 - * @return - */ - @GetMapping(value = "/permissions/tree") + public PermissionController(PermissionService permissionService, PermissionMapper permissionMapper) { + this.permissionService = permissionService; + this.permissionMapper = permissionMapper; + } + + @ApiOperation("返回全部的权限,新增角色时下拉选择") + @GetMapping(value = "/tree") @PreAuthorize("hasAnyRole('ADMIN','PERMISSION_ALL','PERMISSION_CREATE','PERMISSION_EDIT','ROLES_SELECT','ROLES_ALL')") public ResponseEntity getTree(){ - return new ResponseEntity(permissionService.getPermissionTree(permissionService.findByPid(0L)),HttpStatus.OK); + return new ResponseEntity<>(permissionService.getPermissionTree(permissionService.findByPid(0L)),HttpStatus.OK); } @Log("查询权限") - @GetMapping(value = "/permissions") + @ApiOperation("查询权限") + @GetMapping @PreAuthorize("hasAnyRole('ADMIN','PERMISSION_ALL','PERMISSION_SELECT')") public ResponseEntity getPermissions(PermissionQueryCriteria criteria){ List permissionDTOS = permissionService.queryAll(criteria); - return new ResponseEntity(permissionService.buildTree(permissionDTOS),HttpStatus.OK); + return new ResponseEntity<>(permissionService.buildTree(permissionDTOS),HttpStatus.OK); } @Log("新增权限") - @PostMapping(value = "/permissions") + @ApiOperation("新增权限") + @PostMapping @PreAuthorize("hasAnyRole('ADMIN','PERMISSION_ALL','PERMISSION_CREATE')") public ResponseEntity create(@Validated @RequestBody Permission resources){ if (resources.getId() != null) { throw new BadRequestException("A new "+ ENTITY_NAME +" cannot already have an ID"); } - return new ResponseEntity(permissionService.create(resources),HttpStatus.CREATED); + return new ResponseEntity<>(permissionService.create(resources),HttpStatus.CREATED); } @Log("修改权限") - @PutMapping(value = "/permissions") + @ApiOperation("修改权限") + @PutMapping @PreAuthorize("hasAnyRole('ADMIN','PERMISSION_ALL','PERMISSION_EDIT')") public ResponseEntity update(@Validated(Permission.Update.class) @RequestBody Permission resources){ permissionService.update(resources); @@ -71,7 +75,8 @@ public class PermissionController { } @Log("删除权限") - @DeleteMapping(value = "/permissions/{id}") + @ApiOperation("删除权限") + @DeleteMapping(value = "/{id}") @PreAuthorize("hasAnyRole('ADMIN','PERMISSION_ALL','PERMISSION_DELETE')") public ResponseEntity delete(@PathVariable Long id){ List permissions = permissionService.findByPid(id); 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 340aa63..99f59d0 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,6 +1,8 @@ package me.zhengjie.modules.system.rest; import cn.hutool.core.lang.Dict; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; import me.zhengjie.aop.log.Log; import me.zhengjie.modules.system.domain.Role; import me.zhengjie.exception.BadRequestException; @@ -9,15 +11,12 @@ 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; 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; @@ -28,61 +27,62 @@ import java.util.stream.Collectors; * @author Zheng Jie * @date 2018-12-03 */ +@Api(tags = "系统:角色管理") @RestController -@RequestMapping("api") +@RequestMapping("/api/roles") public class RoleController { - @Autowired - private RoleService roleService; + private final RoleService roleService; private static final String ENTITY_NAME = "role"; - /** - * 获取单个role - * @param id - * @return - */ - @GetMapping(value = "/roles/{id}") + public RoleController(RoleService roleService) { + this.roleService = roleService; + } + + @ApiOperation("获取单个role") + @GetMapping(value = "/{id}") @PreAuthorize("hasAnyRole('ADMIN','ROLES_ALL','ROLES_SELECT')") public ResponseEntity getRoles(@PathVariable Long id){ - return new ResponseEntity(roleService.findById(id), HttpStatus.OK); + return new ResponseEntity<>(roleService.findById(id), HttpStatus.OK); } - /** - * 返回全部的角色,新增用户时下拉选择 - * @return - */ - @GetMapping(value = "/roles/all") + @ApiOperation("返回全部的角色") + @GetMapping(value = "/all") @PreAuthorize("hasAnyRole('ADMIN','ROLES_ALL','USER_ALL','USER_CREATE','USER_EDIT')") public ResponseEntity getAll(@PageableDefault(value = 2000, sort = {"level"}, direction = Sort.Direction.ASC) Pageable pageable){ - return new ResponseEntity(roleService.queryAll(pageable),HttpStatus.OK); + return new ResponseEntity<>(roleService.queryAll(pageable),HttpStatus.OK); } @Log("查询角色") - @GetMapping(value = "/roles") + @ApiOperation("查询角色") + @GetMapping @PreAuthorize("hasAnyRole('ADMIN','ROLES_ALL','ROLES_SELECT')") public ResponseEntity getRoles(RoleQueryCriteria criteria, Pageable pageable){ - return new ResponseEntity(roleService.queryAll(criteria,pageable),HttpStatus.OK); + return new ResponseEntity<>(roleService.queryAll(criteria,pageable),HttpStatus.OK); } - @GetMapping(value = "/roles/level") + @ApiOperation("获取用户级别") + @GetMapping(value = "/level") public ResponseEntity getLevel(){ List levels = roleService.findByUsers_Id(SecurityUtils.getUserId()).stream().map(RoleSmallDTO::getLevel).collect(Collectors.toList()); - return new ResponseEntity(Dict.create().set("level", Collections.min(levels)),HttpStatus.OK); + return new ResponseEntity<>(Dict.create().set("level", Collections.min(levels)),HttpStatus.OK); } @Log("新增角色") - @PostMapping(value = "/roles") + @ApiOperation("新增角色") + @PostMapping @PreAuthorize("hasAnyRole('ADMIN','ROLES_ALL','ROLES_CREATE')") public ResponseEntity create(@Validated @RequestBody Role resources){ if (resources.getId() != null) { throw new BadRequestException("A new "+ ENTITY_NAME +" cannot already have an ID"); } - return new ResponseEntity(roleService.create(resources),HttpStatus.CREATED); + return new ResponseEntity<>(roleService.create(resources),HttpStatus.CREATED); } @Log("修改角色") - @PutMapping(value = "/roles") + @ApiOperation("修改角色") + @PutMapping @PreAuthorize("hasAnyRole('ADMIN','ROLES_ALL','ROLES_EDIT')") public ResponseEntity update(@Validated(Role.Update.class) @RequestBody Role resources){ roleService.update(resources); @@ -90,7 +90,8 @@ public class RoleController { } @Log("修改角色权限") - @PutMapping(value = "/roles/permission") + @ApiOperation("修改角色权限") + @PutMapping(value = "/permission") @PreAuthorize("hasAnyRole('ADMIN','ROLES_ALL','ROLES_EDIT')") public ResponseEntity updatePermission(@RequestBody Role resources){ roleService.updatePermission(resources,roleService.findById(resources.getId())); @@ -98,7 +99,8 @@ public class RoleController { } @Log("修改角色菜单") - @PutMapping(value = "/roles/menu") + @ApiOperation("修改角色菜单") + @PutMapping(value = "/menu") @PreAuthorize("hasAnyRole('ADMIN','ROLES_ALL','ROLES_EDIT')") public ResponseEntity updateMenu(@RequestBody Role resources){ roleService.updateMenu(resources,roleService.findById(resources.getId())); @@ -106,7 +108,8 @@ public class RoleController { } @Log("删除角色") - @DeleteMapping(value = "/roles/{id}") + @ApiOperation("删除角色") + @DeleteMapping(value = "/{id}") @PreAuthorize("hasAnyRole('ADMIN','ROLES_ALL','ROLES_DELETE')") public ResponseEntity delete(@PathVariable Long id){ try { 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 96bf765..780d44b 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 @@ -1,8 +1,9 @@ package me.zhengjie.modules.system.rest; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; 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.User; import me.zhengjie.exception.BadRequestException; @@ -11,11 +12,9 @@ import me.zhengjie.modules.system.service.DeptService; import me.zhengjie.modules.system.service.RoleService; import me.zhengjie.modules.system.service.dto.RoleSmallDTO; import me.zhengjie.modules.system.service.dto.UserQueryCriteria; -import me.zhengjie.service.PictureService; import me.zhengjie.service.VerificationCodeService; import me.zhengjie.utils.*; import me.zhengjie.modules.system.service.UserService; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.domain.Pageable; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; @@ -35,37 +34,40 @@ import java.util.stream.Collectors; * @author Zheng Jie * @date 2018-11-23 */ +@Api(tags = "系统:用户管理") @RestController -@RequestMapping("api") +@RequestMapping("/api/users") public class UserController { - @Autowired - private UserService userService; + private final UserService userService; - @Autowired - private PictureService pictureService; + private final DataScope dataScope; - @Autowired - private DataScope dataScope; + private final DeptService deptService; - @Autowired - private DeptService deptService; + private final RoleService roleService; - @Autowired - private RoleService roleService; + private final VerificationCodeService verificationCodeService; - @Autowired - private VerificationCodeService verificationCodeService; + public UserController(UserService userService, DataScope dataScope, DeptService deptService, RoleService roleService, VerificationCodeService verificationCodeService) { + this.userService = userService; + this.dataScope = dataScope; + this.deptService = deptService; + this.roleService = roleService; + this.verificationCodeService = verificationCodeService; + } @Log("导出用户数据") - @GetMapping(value = "/users/download") + @ApiOperation("导出用户数据") + @GetMapping(value = "/download") @PreAuthorize("hasAnyRole('ADMIN','USER_ALL','USER_SELECT')") public void update(HttpServletResponse response, UserQueryCriteria criteria) throws IOException { userService.download(userService.queryAll(criteria), response); } @Log("查询用户") - @GetMapping(value = "/users") + @ApiOperation("查询用户") + @GetMapping @PreAuthorize("hasAnyRole('ADMIN','USER_ALL','USER_SELECT')") public ResponseEntity getUsers(UserQueryCriteria criteria, Pageable pageable){ Set deptSet = new HashSet<>(); @@ -89,27 +91,29 @@ public class UserController { // 若无交集,则代表无数据权限 criteria.setDeptIds(result); if(result.size() == 0){ - return new ResponseEntity(PageUtil.toPage(null,0),HttpStatus.OK); - } else return new ResponseEntity(userService.queryAll(criteria,pageable),HttpStatus.OK); + return new ResponseEntity<>(PageUtil.toPage(null,0),HttpStatus.OK); + } else return new ResponseEntity<>(userService.queryAll(criteria,pageable),HttpStatus.OK); // 否则取并集 } else { result.addAll(deptSet); result.addAll(deptIds); criteria.setDeptIds(result); - return new ResponseEntity(userService.queryAll(criteria,pageable),HttpStatus.OK); + return new ResponseEntity<>(userService.queryAll(criteria,pageable),HttpStatus.OK); } } @Log("新增用户") - @PostMapping(value = "/users") + @ApiOperation("新增用户") + @PostMapping @PreAuthorize("hasAnyRole('ADMIN','USER_ALL','USER_CREATE')") public ResponseEntity create(@Validated @RequestBody User resources){ checkLevel(resources); - return new ResponseEntity(userService.create(resources),HttpStatus.CREATED); + return new ResponseEntity<>(userService.create(resources),HttpStatus.CREATED); } @Log("修改用户") - @PutMapping(value = "/users") + @ApiOperation("修改用户") + @PutMapping @PreAuthorize("hasAnyRole('ADMIN','USER_ALL','USER_EDIT')") public ResponseEntity update(@Validated(User.Update.class) @RequestBody User resources){ checkLevel(resources); @@ -118,7 +122,8 @@ public class UserController { } @Log("删除用户") - @DeleteMapping(value = "/users/{id}") + @ApiOperation("删除用户") + @DeleteMapping(value = "/{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(RoleSmallDTO::getLevel).collect(Collectors.toList())); @@ -131,12 +136,8 @@ public class UserController { return new ResponseEntity(HttpStatus.OK); } - /** - * 修改密码 - * @param user - * @return - */ - @PostMapping(value = "/users/updatePass") + @ApiOperation("修改密码") + @PostMapping(value = "/updatePass") public ResponseEntity updatePass(@RequestBody UserPassVo user){ UserDetails userDetails = SecurityUtils.getUserDetails(); if(!userDetails.getPassword().equals(EncryptUtils.encryptPassword(user.getOldPass()))){ @@ -149,25 +150,16 @@ public class UserController { return new ResponseEntity(HttpStatus.OK); } - /** - * 修改头像 - * @param file - * @return - */ - @PostMapping(value = "/users/updateAvatar") + @ApiOperation("修改头像") + @PostMapping(value = "/updateAvatar") public ResponseEntity updateAvatar(@RequestParam MultipartFile file){ userService.updateAvatar(file); return new ResponseEntity(HttpStatus.OK); } - /** - * 修改邮箱 - * @param user - * @param user - * @return - */ @Log("修改邮箱") - @PostMapping(value = "/users/updateEmail/{code}") + @ApiOperation("修改邮箱") + @PostMapping(value = "/updateEmail/{code}") public ResponseEntity updateEmail(@PathVariable String code,@RequestBody User user){ UserDetails userDetails = SecurityUtils.getUserDetails(); if(!userDetails.getPassword().equals(EncryptUtils.encryptPassword(user.getPassword()))){ @@ -183,7 +175,7 @@ public class UserController { /** * 如果当前用户的角色级别低于创建用户的角色级别,则抛出权限不足的错误 - * @param resources + * @param resources / */ private void checkLevel(User resources) { Integer currentLevel = Collections.min(roleService.findByUsers_Id(SecurityUtils.getUserId()).stream().map(RoleSmallDTO::getLevel).collect(Collectors.toList())); diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/DeptService.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/DeptService.java index 792ea13..e648474 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/DeptService.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/DeptService.java @@ -3,10 +3,6 @@ package me.zhengjie.modules.system.service; import me.zhengjie.modules.system.domain.Dept; import me.zhengjie.modules.system.service.dto.DeptDTO; import me.zhengjie.modules.system.service.dto.DeptQueryCriteria; -import org.springframework.cache.annotation.CacheConfig; -import org.springframework.cache.annotation.CacheEvict; -import org.springframework.cache.annotation.Cacheable; - import java.util.List; import java.util.Set; @@ -14,61 +10,20 @@ import java.util.Set; * @author Zheng Jie * @date 2019-03-25 */ -@CacheConfig(cacheNames = "dept") public interface DeptService { - /** - * queryAll - * @param criteria - * @return - */ - @Cacheable List queryAll(DeptQueryCriteria criteria); - /** - * findById - * @param id - * @return - */ - @Cacheable(key = "#p0") DeptDTO findById(Long id); - /** - * create - * @param resources - * @return - */ - @CacheEvict(allEntries = true) DeptDTO create(Dept resources); - /** - * update - * @param resources - */ - @CacheEvict(allEntries = true) void update(Dept resources); - /** - * delete - * @param id - */ - @CacheEvict(allEntries = true) void delete(Long id); - /** - * buildTree - * @param deptDTOS - * @return - */ - @Cacheable Object buildTree(List deptDTOS); - /** - * findByPid - * @param pid - * @return - */ - @Cacheable List findByPid(long pid); Set findByRoleIds(Long id); diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/DictDetailService.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/DictDetailService.java index fe89a02..f6811de 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/DictDetailService.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/DictDetailService.java @@ -3,50 +3,22 @@ package me.zhengjie.modules.system.service; import me.zhengjie.modules.system.domain.DictDetail; import me.zhengjie.modules.system.service.dto.DictDetailDTO; import me.zhengjie.modules.system.service.dto.DictDetailQueryCriteria; -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 java.util.Map; /** * @author Zheng Jie * @date 2019-04-10 */ -@CacheConfig(cacheNames = "dictDetail") public interface DictDetailService { - /** - * findById - * @param id - * @return - */ - @Cacheable(key = "#p0") DictDetailDTO findById(Long id); - /** - * create - * @param resources - * @return - */ - @CacheEvict(allEntries = true) DictDetailDTO create(DictDetail resources); - /** - * update - * @param resources - */ - @CacheEvict(allEntries = true) void update(DictDetail resources); - /** - * delete - * @param id - */ - @CacheEvict(allEntries = true) void delete(Long id); - @Cacheable Map queryAll(DictDetailQueryCriteria criteria, Pageable pageable); } \ No newline at end of file diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/DictService.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/DictService.java index e6f1053..55d3344 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/DictService.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/DictService.java @@ -3,54 +3,21 @@ package me.zhengjie.modules.system.service; import me.zhengjie.modules.system.domain.Dict; import me.zhengjie.modules.system.service.dto.DictDTO; import me.zhengjie.modules.system.service.dto.DictQueryCriteria; -import org.springframework.cache.annotation.CacheConfig; -import org.springframework.cache.annotation.CacheEvict; -import org.springframework.cache.annotation.Cacheable; import org.springframework.data.domain.Pageable; /** * @author Zheng Jie * @date 2019-04-10 */ -@CacheConfig(cacheNames = "dict") public interface DictService { - /** - * 查询 - * @param dict - * @param pageable - * @return - */ - @Cacheable Object queryAll(DictQueryCriteria dict, Pageable pageable); - /** - * findById - * @param id - * @return - */ - @Cacheable(key = "#p0") DictDTO findById(Long id); - /** - * create - * @param resources - * @return - */ - @CacheEvict(allEntries = true) DictDTO create(Dict resources); - /** - * update - * @param resources - */ - @CacheEvict(allEntries = true) void update(Dict resources); - /** - * delete - * @param id - */ - @CacheEvict(allEntries = true) void delete(Long id); } \ No newline at end of file diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/JobService.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/JobService.java index ecd92a0..03f18aa 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/JobService.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/JobService.java @@ -3,53 +3,21 @@ package me.zhengjie.modules.system.service; import me.zhengjie.modules.system.domain.Job; import me.zhengjie.modules.system.service.dto.JobDTO; import me.zhengjie.modules.system.service.dto.JobQueryCriteria; -import org.springframework.cache.annotation.CacheConfig; -import org.springframework.cache.annotation.CacheEvict; -import org.springframework.cache.annotation.Cacheable; import org.springframework.data.domain.Pageable; /** * @author Zheng Jie * @date 2019-03-29 */ -@CacheConfig(cacheNames = "job") public interface JobService { - /** - * findById - * @param id - * @return - */ - @Cacheable(key = "#p0") JobDTO findById(Long id); - /** - * create - * @param resources - * @return - */ - @CacheEvict(allEntries = true) JobDTO create(Job resources); - /** - * update - * @param resources - */ - @CacheEvict(allEntries = true) void update(Job resources); - /** - * delete - * @param id - */ - @CacheEvict(allEntries = true) void delete(Long id); - /** - * queryAll - * @param criteria - * @param pageable - * @return - */ Object queryAll(JobQueryCriteria criteria, Pageable pageable); } \ No newline at end of file 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 3958c05..3ca9d2b 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 @@ -4,9 +4,6 @@ import me.zhengjie.modules.system.domain.Menu; import me.zhengjie.modules.system.service.dto.MenuDTO; import me.zhengjie.modules.system.service.dto.MenuQueryCriteria; import me.zhengjie.modules.system.service.dto.RoleSmallDTO; -import org.springframework.cache.annotation.CacheConfig; -import org.springframework.cache.annotation.CacheEvict; -import org.springframework.cache.annotation.Cacheable; import java.util.List; import java.util.Map; import java.util.Set; @@ -15,90 +12,29 @@ import java.util.Set; * @author Zheng Jie * @date 2018-12-17 */ -@CacheConfig(cacheNames = "menu") public interface MenuService { - /** - * queryAll - * @param criteria - * @return - */ - @Cacheable List queryAll(MenuQueryCriteria criteria); - /** - * get - * @param id - * @return - */ - @Cacheable(key = "#p0") MenuDTO findById(long id); - /** - * create - * @param resources - * @return - */ - @CacheEvict(allEntries = true) MenuDTO create(Menu resources); - /** - * update - * @param resources - */ - @CacheEvict(allEntries = true) void update(Menu resources); - /** - * getDeleteMenus - * @param menuList - * @param menuSet - * @return - */ Set getDeleteMenus(List menuList, Set menuSet); - /** - * permission tree - * @return - */ - @Cacheable(key = "'tree'") Object getMenuTree(List menus); - /** - * findByPid - * @param pid - * @return - */ - @Cacheable(key = "'pid:'+#p0") List findByPid(long pid); - /** - * build Tree - * @param menuDTOS - * @return - */ - Map buildTree(List menuDTOS); + Map buildTree(List menuDTOS); - /** - * findByRoles - * @param roles - * @return - */ List findByRoles(List roles); - /** - * buildMenus - * @param byRoles - * @return - */ 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/PermissionService.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/PermissionService.java index ec6ebc2..e83b9df 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 @@ -3,10 +3,6 @@ package me.zhengjie.modules.system.service; import me.zhengjie.modules.system.domain.Permission; import me.zhengjie.modules.system.service.dto.PermissionDTO; import me.zhengjie.modules.system.service.dto.PermissionQueryCriteria; -import org.springframework.cache.annotation.CacheConfig; -import org.springframework.cache.annotation.CacheEvict; -import org.springframework.cache.annotation.Cacheable; - import java.util.List; import java.util.Set; @@ -14,68 +10,22 @@ import java.util.Set; * @author Zheng Jie * @date 2018-12-08 */ -@CacheConfig(cacheNames = "permission") public interface PermissionService { - /** - * get - * @param id - * @return - */ - @Cacheable(key = "#p0") PermissionDTO findById(long id); - /** - * create - * @param resources - * @return - */ - @CacheEvict(allEntries = true) PermissionDTO create(Permission resources); - /** - * update - * @param resources - */ - @CacheEvict(allEntries = true) void update(Permission resources); - /** - * delete - * @param permissions - */ - @CacheEvict(allEntries = true) void delete(Set permissions); - /** - * permission tree - * @return - */ - @Cacheable(key = "'tree'") Object getPermissionTree(List permissions); - /** - * findByPid - * @param pid - * @return - */ - @Cacheable(key = "'pid:'+#p0") List findByPid(long pid); - /** - * build Tree - * @param permissionDTOS - * @return - */ - @Cacheable Object buildTree(List permissionDTOS); - /** - * queryAll - * @param criteria - * @return - */ - @Cacheable 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 39973fc..c65be1f 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 @@ -4,11 +4,7 @@ import me.zhengjie.modules.system.domain.Role; import me.zhengjie.modules.system.service.dto.RoleDTO; import me.zhengjie.modules.system.service.dto.RoleQueryCriteria; import me.zhengjie.modules.system.service.dto.RoleSmallDTO; -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 java.util.List; import java.util.Set; @@ -16,95 +12,31 @@ import java.util.Set; * @author Zheng Jie * @date 2018-12-03 */ -@CacheConfig(cacheNames = "role") public interface RoleService { - /** - * get - * @param id - * @return - */ - @Cacheable(key = "#p0") RoleDTO findById(long id); - /** - * create - * @param resources - * @return - */ - @CacheEvict(allEntries = true) RoleDTO create(Role resources); - /** - * update - * @param resources - */ - @CacheEvict(allEntries = true) void update(Role resources); - /** - * delete - * @param id - */ - @CacheEvict(allEntries = true) void delete(Long id); - /** - * key的名称如有修改,请同步修改 UserServiceImpl 中的 update 方法 - * findByUsers_Id - * @param id - * @return - */ - @Cacheable(key = "'findByUsers_Id:' + #p0") List findByUsers_Id(Long id); - @Cacheable Integer findByRoles(Set roles); - /** - * updatePermission - * @param resources - * @param roleDTO - */ - @CacheEvict(allEntries = true) void updatePermission(Role resources, RoleDTO roleDTO); - /** - * updateMenu - * @param resources - * @param roleDTO - */ - @CacheEvict(allEntries = true) void updateMenu(Role resources, RoleDTO roleDTO); - @CacheEvict(allEntries = true) void untiedMenu(Long id); - /** - * queryAll - * @param pageable - * @return - */ - @Cacheable Object queryAll(Pageable pageable); - /** - * queryAll - * @param pageable - * @param criteria - * @return - */ - @Cacheable Object queryAll(RoleQueryCriteria criteria, Pageable pageable); - /** - * queryAll - * @param criteria - * @return - */ - @Cacheable List queryAll(RoleQueryCriteria criteria); - @CacheEvict(allEntries = true) void untiedPermission(Long id); } 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 bedae91..c404900 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 @@ -1,15 +1,10 @@ package me.zhengjie.modules.system.service; import me.zhengjie.modules.system.domain.User; -import me.zhengjie.modules.security.security.JwtUser; import me.zhengjie.modules.system.service.dto.UserDTO; import me.zhengjie.modules.system.service.dto.UserQueryCriteria; -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.io.IOException; import java.util.List; @@ -18,74 +13,26 @@ import java.util.List; * @author Zheng Jie * @date 2018-11-23 */ -@CacheConfig(cacheNames = "user") public interface UserService { - /** - * get - * @param id - * @return - */ - @Cacheable(key = "#p0") UserDTO findById(long id); - /** - * create - * @param resources - * @return - */ - @CacheEvict(allEntries = true) UserDTO create(User resources); - /** - * update - * @param resources - */ - @CacheEvict(allEntries = true) void update(User resources); - /** - * delete - * @param id - */ - @CacheEvict(allEntries = true) void delete(Long id); - /** - * findByName - * @param userName - * @return - */ - @Cacheable(key = "'loadUserByUsername:'+#p0") UserDTO findByName(String userName); - /** - * 修改密码 - * @param username - * @param encryptPassword - */ - @CacheEvict(allEntries = true) void updatePass(String username, String encryptPassword); - /** - * 修改头像 - * @param file - */ - @CacheEvict(allEntries = true) void updateAvatar(MultipartFile file); - /** - * 修改邮箱 - * @param username - * @param email - */ - @CacheEvict(allEntries = true) void updateEmail(String username, String email); - @Cacheable Object queryAll(UserQueryCriteria criteria, Pageable pageable); - @Cacheable List queryAll(UserQueryCriteria criteria); void download(List queryAll, HttpServletResponse response) throws IOException; diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/DeptDTO.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/DeptDTO.java index 47e808e..23f151e 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/DeptDTO.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/DeptDTO.java @@ -15,22 +15,16 @@ import java.util.List; @Data public class DeptDTO implements Serializable { - /** - * ID - */ + // ID private Long id; - /** - * 名称 - */ + // 名称 private String name; @NotNull private Boolean enabled; - /** - * 上级部门 - */ + // 上级部门 private Long pid; @JsonInclude(JsonInclude.Include.NON_EMPTY) diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/DeptSmallDTO.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/DeptSmallDTO.java index 1062026..0956825 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/DeptSmallDTO.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/DeptSmallDTO.java @@ -10,13 +10,7 @@ import java.io.Serializable; @Data public class DeptSmallDTO implements Serializable { - /** - * ID - */ private Long id; - /** - * 名称 - */ private String name; } \ No newline at end of file diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/DictDTO.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/DictDTO.java index a96a489..e05ff4e 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/DictDTO.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/DictDTO.java @@ -12,13 +12,7 @@ public class DictDTO implements Serializable { private Long id; - /** - * 字典名称 - */ private String name; - /** - * 描述 - */ private String remark; } diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/DictDetailDTO.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/DictDetailDTO.java index b39fbb2..71add09 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/DictDetailDTO.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/DictDetailDTO.java @@ -12,18 +12,9 @@ public class DictDetailDTO implements Serializable { private Long id; - /** - * 字典标签 - */ private String label; - /** - * 字典值 - */ private String value; - /** - * 排序 - */ private String sort; } \ No newline at end of file diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/JobDTO.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/JobDTO.java index d61c5ee..c9c1259 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/JobDTO.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/JobDTO.java @@ -16,33 +16,18 @@ import java.io.Serializable; @NoArgsConstructor public class JobDTO implements Serializable { - /** - * ID - */ private Long id; private Long sort; - /** - * 名称 - */ private String name; - /** - * 状态 - */ private Boolean enabled; private DeptDTO dept; - /** - * 如果分公司存在相同部门,则显示上级部门名称 - */ private String deptSuperiorName; - /** - * 创建日期 - */ private Timestamp createTime; public JobDTO(String name, Boolean enabled) { diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/JobSmallDTO.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/JobSmallDTO.java index 2a36454..53c7c92 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/JobSmallDTO.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/JobSmallDTO.java @@ -12,13 +12,7 @@ import java.io.Serializable; @NoArgsConstructor public class JobSmallDTO implements Serializable { - /** - * ID - */ private Long id; - /** - * 名称 - */ private String name; } \ No newline at end of file diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/DeptServiceImpl.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/DeptServiceImpl.java index f56e190..88b2efc 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/DeptServiceImpl.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/DeptServiceImpl.java @@ -9,7 +9,9 @@ import me.zhengjie.modules.system.repository.DeptRepository; import me.zhengjie.modules.system.service.DeptService; import me.zhengjie.modules.system.service.dto.DeptDTO; import me.zhengjie.modules.system.service.mapper.DeptMapper; -import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.cache.annotation.CacheConfig; +import org.springframework.cache.annotation.CacheEvict; +import org.springframework.cache.annotation.Cacheable; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Propagation; import org.springframework.transaction.annotation.Transactional; @@ -22,28 +24,35 @@ import java.util.stream.Collectors; * @date 2019-03-25 */ @Service +@CacheConfig(cacheNames = "dept") @Transactional(propagation = Propagation.SUPPORTS, readOnly = true, rollbackFor = Exception.class) public class DeptServiceImpl implements DeptService { - @Autowired - private DeptRepository deptRepository; + private final DeptRepository deptRepository; - @Autowired - private DeptMapper deptMapper; + private final DeptMapper deptMapper; + + public DeptServiceImpl(DeptRepository deptRepository, DeptMapper deptMapper) { + this.deptRepository = deptRepository; + this.deptMapper = deptMapper; + } @Override + @Cacheable public List queryAll(DeptQueryCriteria criteria) { return deptMapper.toDto(deptRepository.findAll((root, criteriaQuery, criteriaBuilder) -> QueryHelp.getPredicate(root,criteria,criteriaBuilder))); } @Override + @Cacheable(key = "#p0") public DeptDTO findById(Long id) { - Optional dept = deptRepository.findById(id); - ValidationUtil.isNull(dept,"Dept","id",id); - return deptMapper.toDto(dept.get()); + Dept dept = deptRepository.findById(id).orElseGet(Dept::new); + ValidationUtil.isNull(dept.getId(),"Dept","id",id); + return deptMapper.toDto(dept); } @Override + @Cacheable public List findByPid(long pid) { return deptRepository.findByPid(pid); } @@ -54,11 +63,12 @@ public class DeptServiceImpl implements DeptService { } @Override + @Cacheable public Object buildTree(List deptDTOS) { Set trees = new LinkedHashSet<>(); Set depts= new LinkedHashSet<>(); List deptNames = deptDTOS.stream().map(DeptDTO::getName).collect(Collectors.toList()); - Boolean isChild; + boolean isChild; for (DeptDTO deptDTO : deptDTOS) { isChild = false; if ("0".equals(deptDTO.getPid().toString())) { @@ -68,7 +78,7 @@ public class DeptServiceImpl implements DeptService { if (it.getPid().equals(deptDTO.getId())) { isChild = true; if (deptDTO.getChildren() == null) { - deptDTO.setChildren(new ArrayList()); + deptDTO.setChildren(new ArrayList<>()); } deptDTO.getChildren().add(it); } @@ -83,34 +93,36 @@ public class DeptServiceImpl implements DeptService { trees = depts; } - Integer totalElements = deptDTOS!=null?deptDTOS.size():0; + Integer totalElements = deptDTOS.size(); - Map map = new HashMap(); + Map map = new HashMap<>(); map.put("totalElements",totalElements); map.put("content",CollectionUtils.isEmpty(trees)?deptDTOS:trees); return map; } @Override + @CacheEvict(allEntries = true) @Transactional(rollbackFor = Exception.class) public DeptDTO create(Dept resources) { return deptMapper.toDto(deptRepository.save(resources)); } @Override + @CacheEvict(allEntries = true) @Transactional(rollbackFor = Exception.class) public void update(Dept resources) { if(resources.getId().equals(resources.getPid())) { throw new BadRequestException("上级不能为自己"); } - Optional optionalDept = deptRepository.findById(resources.getId()); - ValidationUtil.isNull( optionalDept,"Dept","id",resources.getId()); - Dept dept = optionalDept.get(); + Dept dept = deptRepository.findById(resources.getId()).orElseGet(Dept::new); + ValidationUtil.isNull( dept.getId(),"Dept","id",resources.getId()); resources.setId(dept.getId()); deptRepository.save(resources); } @Override + @CacheEvict(allEntries = true) @Transactional(rollbackFor = Exception.class) public void delete(Long id) { deptRepository.deleteById(id); diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/DictDetailServiceImpl.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/DictDetailServiceImpl.java index d897021..a977dfe 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/DictDetailServiceImpl.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/DictDetailServiceImpl.java @@ -9,7 +9,9 @@ import me.zhengjie.modules.system.repository.DictDetailRepository; import me.zhengjie.modules.system.service.DictDetailService; import me.zhengjie.modules.system.service.dto.DictDetailDTO; import me.zhengjie.modules.system.service.mapper.DictDetailMapper; -import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.cache.annotation.CacheConfig; +import org.springframework.cache.annotation.CacheEvict; +import org.springframework.cache.annotation.Cacheable; import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable; import org.springframework.stereotype.Service; @@ -24,45 +26,53 @@ import java.util.Optional; * @date 2019-04-10 */ @Service +@CacheConfig(cacheNames = "dictDetail") @Transactional(propagation = Propagation.SUPPORTS, readOnly = true, rollbackFor = Exception.class) public class DictDetailServiceImpl implements DictDetailService { - @Autowired - private DictDetailRepository dictDetailRepository; + private final DictDetailRepository dictDetailRepository; - @Autowired - private DictDetailMapper dictDetailMapper; + private final DictDetailMapper dictDetailMapper; + + public DictDetailServiceImpl(DictDetailRepository dictDetailRepository, DictDetailMapper dictDetailMapper) { + this.dictDetailRepository = dictDetailRepository; + this.dictDetailMapper = dictDetailMapper; + } @Override + @Cacheable public Map queryAll(DictDetailQueryCriteria criteria, Pageable pageable) { Page page = dictDetailRepository.findAll((root, criteriaQuery, criteriaBuilder) -> QueryHelp.getPredicate(root,criteria,criteriaBuilder),pageable); return PageUtil.toPage(page.map(dictDetailMapper::toDto)); } @Override + @Cacheable(key = "#p0") public DictDetailDTO findById(Long id) { - Optional dictDetail = dictDetailRepository.findById(id); - ValidationUtil.isNull(dictDetail,"DictDetail","id",id); - return dictDetailMapper.toDto(dictDetail.get()); + DictDetail dictDetail = dictDetailRepository.findById(id).orElseGet(DictDetail::new); + ValidationUtil.isNull(dictDetail.getId(),"DictDetail","id",id); + return dictDetailMapper.toDto(dictDetail); } @Override + @CacheEvict(allEntries = true) @Transactional(rollbackFor = Exception.class) public DictDetailDTO create(DictDetail resources) { return dictDetailMapper.toDto(dictDetailRepository.save(resources)); } @Override + @CacheEvict(allEntries = true) @Transactional(rollbackFor = Exception.class) public void update(DictDetail resources) { - Optional optionalDictDetail = dictDetailRepository.findById(resources.getId()); - ValidationUtil.isNull( optionalDictDetail,"DictDetail","id",resources.getId()); - DictDetail dictDetail = optionalDictDetail.get(); + DictDetail dictDetail = dictDetailRepository.findById(resources.getId()).orElseGet(DictDetail::new); + ValidationUtil.isNull( dictDetail.getId(),"DictDetail","id",resources.getId()); resources.setId(dictDetail.getId()); dictDetailRepository.save(resources); } @Override + @CacheEvict(allEntries = true) @Transactional(rollbackFor = Exception.class) public void delete(Long id) { dictDetailRepository.deleteById(id); diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/DictServiceImpl.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/DictServiceImpl.java index 12ad1da..06a4587 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/DictServiceImpl.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/DictServiceImpl.java @@ -9,58 +9,67 @@ import me.zhengjie.modules.system.repository.DictRepository; import me.zhengjie.modules.system.service.DictService; import me.zhengjie.modules.system.service.dto.DictDTO; import me.zhengjie.modules.system.service.mapper.DictMapper; -import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.cache.annotation.CacheConfig; +import org.springframework.cache.annotation.CacheEvict; +import org.springframework.cache.annotation.Cacheable; 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 java.util.Optional; /** * @author Zheng Jie * @date 2019-04-10 */ @Service +@CacheConfig(cacheNames = "dict") @Transactional(propagation = Propagation.SUPPORTS, readOnly = true, rollbackFor = Exception.class) public class DictServiceImpl implements DictService { - @Autowired - private DictRepository dictRepository; + private final DictRepository dictRepository; - @Autowired - private DictMapper dictMapper; + private final DictMapper dictMapper; + + public DictServiceImpl(DictRepository dictRepository, DictMapper dictMapper) { + this.dictRepository = dictRepository; + this.dictMapper = dictMapper; + } @Override + @Cacheable public Object queryAll(DictQueryCriteria dict, Pageable pageable){ Page page = dictRepository.findAll((root, query, cb) -> QueryHelp.getPredicate(root, dict, cb), pageable); return PageUtil.toPage(page.map(dictMapper::toDto)); } @Override + @Cacheable(key = "#p0") public DictDTO findById(Long id) { - Optional dict = dictRepository.findById(id); - ValidationUtil.isNull(dict,"Dict","id",id); - return dictMapper.toDto(dict.get()); + Dict dict = dictRepository.findById(id).orElseGet(Dict::new); + ValidationUtil.isNull(dict.getId(),"Dict","id",id); + return dictMapper.toDto(dict); } @Override + @CacheEvict(allEntries = true) @Transactional(rollbackFor = Exception.class) public DictDTO create(Dict resources) { return dictMapper.toDto(dictRepository.save(resources)); } @Override + @CacheEvict(allEntries = true) @Transactional(rollbackFor = Exception.class) public void update(Dict resources) { - Optional optionalDict = dictRepository.findById(resources.getId()); - ValidationUtil.isNull( optionalDict,"Dict","id",resources.getId()); - Dict dict = optionalDict.get(); + Dict dict = dictRepository.findById(resources.getId()).orElseGet(Dict::new); + ValidationUtil.isNull( dict.getId(),"Dict","id",resources.getId()); resources.setId(dict.getId()); dictRepository.save(resources); } @Override + @CacheEvict(allEntries = true) @Transactional(rollbackFor = Exception.class) public void delete(Long id) { dictRepository.deleteById(id); diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/JobServiceImpl.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/JobServiceImpl.java index 64c9097..27f72dd 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/JobServiceImpl.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/JobServiceImpl.java @@ -10,7 +10,9 @@ import me.zhengjie.modules.system.repository.JobRepository; import me.zhengjie.modules.system.service.JobService; import me.zhengjie.modules.system.service.dto.JobDTO; import me.zhengjie.modules.system.service.mapper.JobMapper; -import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.cache.annotation.CacheConfig; +import org.springframework.cache.annotation.CacheEvict; +import org.springframework.cache.annotation.Cacheable; import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable; import org.springframework.stereotype.Service; @@ -18,24 +20,27 @@ import org.springframework.transaction.annotation.Propagation; import org.springframework.transaction.annotation.Transactional; import java.util.ArrayList; import java.util.List; -import java.util.Optional; /** * @author Zheng Jie * @date 2019-03-29 */ @Service +@CacheConfig(cacheNames = "job") @Transactional(propagation = Propagation.SUPPORTS, readOnly = true, rollbackFor = Exception.class) public class JobServiceImpl implements JobService { - @Autowired - private JobRepository jobRepository; + private final JobRepository jobRepository; - @Autowired - private JobMapper jobMapper; + private final JobMapper jobMapper; - @Autowired - private DeptRepository deptRepository; + private final DeptRepository deptRepository; + + public JobServiceImpl(JobRepository jobRepository, JobMapper jobMapper, DeptRepository deptRepository) { + this.jobRepository = jobRepository; + this.jobMapper = jobMapper; + this.deptRepository = deptRepository; + } @Override public Object queryAll(JobQueryCriteria criteria, Pageable pageable) { @@ -48,30 +53,32 @@ public class JobServiceImpl implements JobService { } @Override + @Cacheable(key = "#p0") public JobDTO findById(Long id) { - Optional job = jobRepository.findById(id); - ValidationUtil.isNull(job,"Job","id",id); - return jobMapper.toDto(job.get()); + Job job = jobRepository.findById(id).orElseGet(Job::new); + ValidationUtil.isNull(job.getId(),"Job","id",id); + return jobMapper.toDto(job); } @Override + @CacheEvict(allEntries = true) @Transactional(rollbackFor = Exception.class) public JobDTO create(Job resources) { return jobMapper.toDto(jobRepository.save(resources)); } @Override + @CacheEvict(allEntries = true) @Transactional(rollbackFor = Exception.class) public void update(Job resources) { - Optional optionalJob = jobRepository.findById(resources.getId()); - ValidationUtil.isNull( optionalJob,"Job","id",resources.getId()); - - Job job = optionalJob.get(); + Job job = jobRepository.findById(resources.getId()).orElseGet(Job::new); + ValidationUtil.isNull( job.getId(),"Job","id",resources.getId()); resources.setId(job.getId()); jobRepository.save(resources); } @Override + @CacheEvict(allEntries = true) @Transactional(rollbackFor = Exception.class) public void delete(Long id) { jobRepository.deleteById(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 1f8afdf..d78eadf 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,7 +1,6 @@ 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; @@ -18,7 +17,9 @@ 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.cache.annotation.CacheConfig; +import org.springframework.cache.annotation.CacheEvict; +import org.springframework.cache.annotation.Cacheable; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Propagation; import org.springframework.transaction.annotation.Transactional; @@ -26,41 +27,48 @@ import java.util.*; import java.util.stream.Collectors; @Service +@CacheConfig(cacheNames = "menu") @Transactional(propagation = Propagation.SUPPORTS, readOnly = true, rollbackFor = Exception.class) public class MenuServiceImpl implements MenuService { - @Autowired - private MenuRepository menuRepository; + private final MenuRepository menuRepository; - @Autowired - private MenuMapper menuMapper; + private final MenuMapper menuMapper; - @Autowired - private RoleService roleService; + private final RoleService roleService; + + public MenuServiceImpl(MenuRepository menuRepository, MenuMapper menuMapper, RoleService roleService) { + this.menuRepository = menuRepository; + this.menuMapper = menuMapper; + this.roleService = roleService; + } @Override - public List queryAll(MenuQueryCriteria criteria){ + @Cacheable + public List queryAll(MenuQueryCriteria criteria){ return menuMapper.toDto(menuRepository.findAll((root, criteriaQuery, criteriaBuilder) -> QueryHelp.getPredicate(root,criteria,criteriaBuilder))); } @Override + @Cacheable(key = "#p0") public MenuDTO findById(long id) { - Optional menu = menuRepository.findById(id); - ValidationUtil.isNull(menu,"Menu","id",id); - return menuMapper.toDto(menu.get()); + Menu menu = menuRepository.findById(id).orElseGet(Menu::new); + ValidationUtil.isNull(menu.getId(),"Menu","id",id); + return menuMapper.toDto(menu); } @Override public List findByRoles(List roles) { Set menus = new LinkedHashSet<>(); for (RoleSmallDTO role : roles) { - List menus1 = menuRepository.findByRoles_IdOrderBySortAsc(role.getId()).stream().collect(Collectors.toList()); + List menus1 = new ArrayList<>(menuRepository.findByRoles_IdOrderBySortAsc(role.getId())); menus.addAll(menus1); } return menus.stream().map(menuMapper::toDto).collect(Collectors.toList()); } @Override + @CacheEvict(allEntries = true) public MenuDTO create(Menu resources) { if(menuRepository.findByName(resources.getName()) != null){ throw new EntityExistException(Menu.class,"name",resources.getName()); @@ -79,19 +87,19 @@ public class MenuServiceImpl implements MenuService { } @Override + @CacheEvict(allEntries = true) public void update(Menu resources) { if(resources.getId().equals(resources.getPid())) { throw new BadRequestException("上级不能为自己"); } - Optional optionalPermission = menuRepository.findById(resources.getId()); - ValidationUtil.isNull(optionalPermission,"Permission","id",resources.getId()); + Menu menu = menuRepository.findById(resources.getId()).orElseGet(Menu::new); + ValidationUtil.isNull(menu.getId(),"Permission","id",resources.getId()); if(resources.getIFrame()){ if (!(resources.getPath().toLowerCase().startsWith("http://")||resources.getPath().toLowerCase().startsWith("https://"))) { throw new BadRequestException("外链必须以http://或者https://开头"); } } - Menu menu = optionalPermission.get(); Menu menu1 = menuRepository.findByName(resources.getName()); if(menu1 != null && !menu1.getId().equals(menu.getId())){ @@ -131,6 +139,7 @@ public class MenuServiceImpl implements MenuService { } @Override + @CacheEvict(allEntries = true) @Transactional(rollbackFor = Exception.class) public void delete(Set menuSet) { for (Menu menu : menuSet) { @@ -140,6 +149,7 @@ public class MenuServiceImpl implements MenuService { } @Override + @Cacheable(key = "'tree'") public Object getMenuTree(List menus) { List> list = new LinkedList<>(); menus.forEach(menu -> { @@ -159,13 +169,14 @@ public class MenuServiceImpl implements MenuService { } @Override + @Cacheable(key = "'pid:'+#p0") public List findByPid(long pid) { return menuRepository.findByPid(pid); } @Override - public Map buildTree(List menuDTOS) { - List trees = new ArrayList(); + public Map buildTree(List menuDTOS) { + List trees = new ArrayList<>(); Set ids = new HashSet<>(); for (MenuDTO menuDTO : menuDTOS) { if (menuDTO.getPid() == 0) { @@ -174,19 +185,19 @@ public class MenuServiceImpl implements MenuService { for (MenuDTO it : menuDTOS) { if (it.getPid().equals(menuDTO.getId())) { if (menuDTO.getChildren() == null) { - menuDTO.setChildren(new ArrayList()); + menuDTO.setChildren(new ArrayList<>()); } menuDTO.getChildren().add(it); ids.add(it.getId()); } } } - Map map = new HashMap(); + Map map = new HashMap<>(); 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); + map.put("totalElements", menuDTOS.size()); return map; } @@ -229,7 +240,7 @@ public class MenuServiceImpl implements MenuService { menuVo.setName(null); menuVo.setMeta(null); menuVo.setComponent("Layout"); - List list1 = new ArrayList(); + List list1 = new ArrayList<>(); list1.add(menuVo1); menuVo.setChildren(list1); } @@ -242,8 +253,8 @@ public class MenuServiceImpl implements MenuService { @Override public Menu findOne(Long id) { - Optional menu = menuRepository.findById(id); - ValidationUtil.isNull(menu,"Menu","id",id); - return menu.get(); + Menu menu = menuRepository.findById(id).orElseGet(Menu::new); + ValidationUtil.isNull(menu.getId(),"Menu","id",id); + return menu; } } 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 e8c48c7..f1ed9e2 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 @@ -11,7 +11,9 @@ import me.zhengjie.modules.system.service.dto.PermissionQueryCriteria; import me.zhengjie.modules.system.service.mapper.PermissionMapper; import me.zhengjie.utils.QueryHelp; import me.zhengjie.utils.ValidationUtil; -import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.cache.annotation.CacheConfig; +import org.springframework.cache.annotation.CacheEvict; +import org.springframework.cache.annotation.Cacheable; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Propagation; import org.springframework.transaction.annotation.Transactional; @@ -22,31 +24,38 @@ import java.util.*; * @date 2018-12-03 */ @Service +@CacheConfig(cacheNames = "permission") @Transactional(propagation = Propagation.SUPPORTS, readOnly = true, rollbackFor = Exception.class) public class PermissionServiceImpl implements PermissionService { - @Autowired - private PermissionRepository permissionRepository; + private final PermissionRepository permissionRepository; - @Autowired - private PermissionMapper permissionMapper; + private final PermissionMapper permissionMapper; - @Autowired - private RoleService roleService; + private final RoleService roleService; + + public PermissionServiceImpl(PermissionRepository permissionRepository, PermissionMapper permissionMapper, RoleService roleService) { + this.permissionRepository = permissionRepository; + this.permissionMapper = permissionMapper; + this.roleService = roleService; + } @Override + @Cacheable public List queryAll(PermissionQueryCriteria criteria) { return permissionMapper.toDto(permissionRepository.findAll((root, criteriaQuery, criteriaBuilder) -> QueryHelp.getPredicate(root,criteria,criteriaBuilder))); } @Override + @Cacheable(key = "#p0") public PermissionDTO findById(long id) { - Optional permission = permissionRepository.findById(id); - ValidationUtil.isNull(permission,"Permission","id",id); - return permissionMapper.toDto(permission.get()); + Permission permission = permissionRepository.findById(id).orElseGet(Permission::new); + ValidationUtil.isNull(permission.getId(),"Permission","id",id); + return permissionMapper.toDto(permission); } @Override + @CacheEvict(allEntries = true) @Transactional(rollbackFor = Exception.class) public PermissionDTO create(Permission resources) { if(permissionRepository.findByName(resources.getName()) != null){ @@ -56,15 +65,14 @@ public class PermissionServiceImpl implements PermissionService { } @Override + @CacheEvict(allEntries = true) @Transactional(rollbackFor = Exception.class) public void update(Permission resources) { - Optional optionalPermission = permissionRepository.findById(resources.getId()); + Permission permission = permissionRepository.findById(resources.getId()).orElseGet(Permission::new); if(resources.getId().equals(resources.getPid())) { throw new BadRequestException("上级不能为自己"); } - ValidationUtil.isNull(optionalPermission,"Permission","id",resources.getId()); - - Permission permission = optionalPermission.get(); + ValidationUtil.isNull(permission.getId(),"Permission","id",resources.getId()); Permission permission1 = permissionRepository.findByName(resources.getName()); @@ -92,6 +100,7 @@ public class PermissionServiceImpl implements PermissionService { } @Override + @CacheEvict(allEntries = true) @Transactional(rollbackFor = Exception.class) public void delete(Set permissions) { for (Permission permission : permissions) { @@ -101,6 +110,7 @@ public class PermissionServiceImpl implements PermissionService { } @Override + @Cacheable(key = "'tree'") public Object getPermissionTree(List permissions) { List> list = new LinkedList<>(); permissions.forEach(permission -> { @@ -120,14 +130,16 @@ public class PermissionServiceImpl implements PermissionService { } @Override + @Cacheable(key = "'pid:'+#p0") public List findByPid(long pid) { return permissionRepository.findByPid(pid); } @Override + @Cacheable public Object buildTree(List permissionDTOS) { - List trees = new ArrayList(); + List trees = new ArrayList<>(); for (PermissionDTO permissionDTO : permissionDTOS) { @@ -138,16 +150,16 @@ public class PermissionServiceImpl implements PermissionService { for (PermissionDTO it : permissionDTOS) { if (it.getPid().equals(permissionDTO.getId())) { if (permissionDTO.getChildren() == null) { - permissionDTO.setChildren(new ArrayList()); + permissionDTO.setChildren(new ArrayList<>()); } permissionDTO.getChildren().add(it); } } } - Integer totalElements = permissionDTOS!=null?permissionDTOS.size():0; + Integer totalElements = permissionDTOS.size(); - Map map = new HashMap(); + Map map = new HashMap<>(); map.put("content",trees.size() == 0?permissionDTOS:trees); map.put("totalElements",totalElements); return map; 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 bc33f26..d1aaca5 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 @@ -12,7 +12,9 @@ import me.zhengjie.modules.system.service.mapper.RoleSmallMapper; import me.zhengjie.utils.PageUtil; import me.zhengjie.utils.QueryHelp; import me.zhengjie.utils.ValidationUtil; -import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.cache.annotation.CacheConfig; +import org.springframework.cache.annotation.CacheEvict; +import org.springframework.cache.annotation.Cacheable; import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable; import org.springframework.stereotype.Service; @@ -26,42 +28,51 @@ import java.util.stream.Collectors; * @date 2018-12-03 */ @Service +@CacheConfig(cacheNames = "role") @Transactional(propagation = Propagation.SUPPORTS, readOnly = true, rollbackFor = Exception.class) public class RoleServiceImpl implements RoleService { - @Autowired - private RoleRepository roleRepository; + private final RoleRepository roleRepository; - @Autowired - private RoleMapper roleMapper; + private final RoleMapper roleMapper; - @Autowired - private RoleSmallMapper roleSmallMapper; + private final RoleSmallMapper roleSmallMapper; + + public RoleServiceImpl(RoleRepository roleRepository, RoleMapper roleMapper, RoleSmallMapper roleSmallMapper) { + this.roleRepository = roleRepository; + this.roleMapper = roleMapper; + this.roleSmallMapper = roleSmallMapper; + } @Override + @Cacheable public Object queryAll(Pageable pageable) { return roleMapper.toDto(roleRepository.findAll(pageable).getContent()); } @Override + @Cacheable public List queryAll(RoleQueryCriteria criteria) { return roleMapper.toDto(roleRepository.findAll((root, criteriaQuery, criteriaBuilder) -> QueryHelp.getPredicate(root,criteria,criteriaBuilder))); } @Override + @Cacheable public Object queryAll(RoleQueryCriteria criteria, Pageable pageable) { Page page = roleRepository.findAll((root, criteriaQuery, criteriaBuilder) -> QueryHelp.getPredicate(root,criteria,criteriaBuilder),pageable); return PageUtil.toPage(page.map(roleMapper::toDto)); } @Override + @Cacheable(key = "#p0") public RoleDTO findById(long id) { - Optional role = roleRepository.findById(id); - ValidationUtil.isNull(role,"Role","id",id); - return roleMapper.toDto(role.get()); + Role role = roleRepository.findById(id).orElseGet(Role::new); + ValidationUtil.isNull(role.getId(),"Role","id",id); + return roleMapper.toDto(role); } @Override + @CacheEvict(allEntries = true) @Transactional(rollbackFor = Exception.class) public RoleDTO create(Role resources) { if(roleRepository.findByName(resources.getName()) != null){ @@ -71,13 +82,11 @@ public class RoleServiceImpl implements RoleService { } @Override + @CacheEvict(allEntries = true) @Transactional(rollbackFor = Exception.class) public void update(Role resources) { - - Optional optionalRole = roleRepository.findById(resources.getId()); - ValidationUtil.isNull(optionalRole,"Role","id",resources.getId()); - - Role role = optionalRole.get(); + Role role = roleRepository.findById(resources.getId()).orElseGet(Role::new); + ValidationUtil.isNull(role.getId(),"Role","id",resources.getId()); Role role1 = roleRepository.findByName(resources.getName()); @@ -94,6 +103,7 @@ public class RoleServiceImpl implements RoleService { } @Override + @CacheEvict(allEntries = true) public void updatePermission(Role resources, RoleDTO roleDTO) { Role role = roleMapper.toEntity(roleDTO); role.setPermissions(resources.getPermissions()); @@ -101,6 +111,7 @@ public class RoleServiceImpl implements RoleService { } @Override + @CacheEvict(allEntries = true) public void updateMenu(Role resources, RoleDTO roleDTO) { Role role = roleMapper.toEntity(roleDTO); role.setMenus(resources.getMenus()); @@ -108,29 +119,34 @@ public class RoleServiceImpl implements RoleService { } @Override + @CacheEvict(allEntries = true) @Transactional(rollbackFor = Exception.class) public void untiedMenu(Long id) { roleRepository.untiedMenu(id); } @Override + @CacheEvict(allEntries = true) @Transactional(rollbackFor = Exception.class) public void untiedPermission(Long id) { roleRepository.untiedPermission(id); } @Override + @CacheEvict(allEntries = true) @Transactional(rollbackFor = Exception.class) public void delete(Long id) { roleRepository.deleteById(id); } @Override + @Cacheable(key = "'findByUsers_Id:' + #p0") public List findByUsers_Id(Long id) { - return roleSmallMapper.toDto(roleRepository.findByUsers_Id(id).stream().collect(Collectors.toList())); + return roleSmallMapper.toDto(new ArrayList<>(roleRepository.findByUsers_Id(id))); } @Override + @Cacheable public Integer findByRoles(Set roles) { Set roleDTOS = new HashSet<>(); for (Role role : roles) { 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 2685d74..ee64b6b 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,8 +1,5 @@ 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; @@ -16,16 +13,16 @@ 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.*; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; +import org.springframework.cache.annotation.CacheConfig; +import org.springframework.cache.annotation.CacheEvict; +import org.springframework.cache.annotation.Cacheable; 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; @@ -37,44 +34,52 @@ import java.util.stream.Collectors; * @date 2018-11-23 */ @Service +@CacheConfig(cacheNames = "user") @Transactional(propagation = Propagation.SUPPORTS, readOnly = true, rollbackFor = Exception.class) public class UserServiceImpl implements UserService { - @Autowired - private UserRepository userRepository; + private final UserRepository userRepository; - @Autowired - private UserMapper userMapper; + private final UserMapper userMapper; - @Autowired - private RedisService redisService; + private final RedisService redisService; - @Autowired - private UserAvatarRepository userAvatarRepository; + private final UserAvatarRepository userAvatarRepository; @Value("${file.avatar}") private String avatar; + public UserServiceImpl(UserRepository userRepository, UserMapper userMapper, RedisService redisService, UserAvatarRepository userAvatarRepository) { + this.userRepository = userRepository; + this.userMapper = userMapper; + this.redisService = redisService; + this.userAvatarRepository = userAvatarRepository; + } + @Override + @Cacheable public Object queryAll(UserQueryCriteria criteria, Pageable pageable) { Page page = userRepository.findAll((root, criteriaQuery, criteriaBuilder) -> QueryHelp.getPredicate(root,criteria,criteriaBuilder),pageable); return PageUtil.toPage(page.map(userMapper::toDto)); } @Override + @Cacheable public List queryAll(UserQueryCriteria criteria) { List users = userRepository.findAll((root, criteriaQuery, criteriaBuilder) -> QueryHelp.getPredicate(root,criteria,criteriaBuilder)); return userMapper.toDto(users); } @Override + @Cacheable(key = "#p0") public UserDTO findById(long id) { - Optional user = userRepository.findById(id); - ValidationUtil.isNull(user,"User","id",id); - return userMapper.toDto(user.get()); + User user = userRepository.findById(id).orElseGet(User::new); + ValidationUtil.isNull(user.getId(),"User","id",id); + return userMapper.toDto(user); } @Override + @CacheEvict(allEntries = true) @Transactional(rollbackFor = Exception.class) public UserDTO create(User resources) { @@ -92,13 +97,11 @@ public class UserServiceImpl implements UserService { } @Override + @CacheEvict(allEntries = true) @Transactional(rollbackFor = Exception.class) public void update(User resources) { - Optional userOptional = userRepository.findById(resources.getId()); - ValidationUtil.isNull(userOptional,"User","id",resources.getId()); - - User user = userOptional.get(); - + User user = userRepository.findById(resources.getId()).orElseGet(User::new); + ValidationUtil.isNull(user.getId(),"User","id",resources.getId()); User user1 = userRepository.findByUsername(user.getUsername()); User user2 = userRepository.findByEmail(user.getEmail()); @@ -129,14 +132,16 @@ public class UserServiceImpl implements UserService { } @Override + @CacheEvict(allEntries = true) @Transactional(rollbackFor = Exception.class) public void delete(Long id) { userRepository.deleteById(id); } @Override + @Cacheable(key = "'loadUserByUsername:'+#p0") public UserDTO findByName(String userName) { - User user = null; + User user; if(ValidationUtil.isEmail(userName)){ user = userRepository.findByEmail(userName); } else { @@ -150,12 +155,14 @@ public class UserServiceImpl implements UserService { } @Override + @CacheEvict(allEntries = true) @Transactional(rollbackFor = Exception.class) public void updatePass(String username, String pass) { userRepository.updatePass(username,pass,new Date()); } @Override + @CacheEvict(allEntries = true) @Transactional(rollbackFor = Exception.class) public void updateAvatar(MultipartFile multipartFile) { User user = userRepository.findByUsername(SecurityUtils.getUsername()); @@ -165,6 +172,7 @@ public class UserServiceImpl implements UserService { oldPath = userAvatar.getPath(); } File file = FileUtil.upload(multipartFile, avatar); + assert file != null; userAvatar = userAvatarRepository.save(new UserAvatar(userAvatar,file.getName(), file.getPath(), FileUtil.getSize(multipartFile.getSize()))); user.setUserAvatar(userAvatar); userRepository.save(user); @@ -174,6 +182,7 @@ public class UserServiceImpl implements UserService { } @Override + @CacheEvict(allEntries = true) @Transactional(rollbackFor = Exception.class) public void updateEmail(String username, String email) { userRepository.updateEmail(username,email); @@ -184,7 +193,7 @@ public class UserServiceImpl implements UserService { List> list = new ArrayList<>(); for (UserDTO userDTO : queryAll) { List roles = userDTO.getRoles().stream().map(RoleSmallDTO::getName).collect(Collectors.toList()); - Map map = new LinkedHashMap(); + Map map = new LinkedHashMap<>(); map.put("用户名", userDTO.getUsername()); map.put("头像", userDTO.getAvatar()); map.put("邮箱", userDTO.getEmail()); diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/mapper/DeptMapper.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/mapper/DeptMapper.java index 46da4c2..75eadbf 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/mapper/DeptMapper.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/mapper/DeptMapper.java @@ -10,7 +10,7 @@ import org.mapstruct.ReportingPolicy; * @author Zheng Jie * @date 2019-03-25 */ -@Mapper(componentModel = "spring",uses = {},unmappedTargetPolicy = ReportingPolicy.IGNORE) +@Mapper(componentModel = "spring",unmappedTargetPolicy = ReportingPolicy.IGNORE) public interface DeptMapper extends EntityMapper { } \ No newline at end of file diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/mapper/DeptSmallMapper.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/mapper/DeptSmallMapper.java index 338d55a..ede9aad 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/mapper/DeptSmallMapper.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/mapper/DeptSmallMapper.java @@ -10,7 +10,7 @@ import org.mapstruct.ReportingPolicy; * @author Zheng Jie * @date 2019-03-25 */ -@Mapper(componentModel = "spring",uses = {},unmappedTargetPolicy = ReportingPolicy.IGNORE) +@Mapper(componentModel = "spring",unmappedTargetPolicy = ReportingPolicy.IGNORE) public interface DeptSmallMapper extends EntityMapper { } \ No newline at end of file diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/mapper/DictDetailMapper.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/mapper/DictDetailMapper.java index 797c1da..7f48319 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/mapper/DictDetailMapper.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/mapper/DictDetailMapper.java @@ -10,7 +10,7 @@ import org.mapstruct.ReportingPolicy; * @author Zheng Jie * @date 2019-04-10 */ -@Mapper(componentModel = "spring",uses = {},unmappedTargetPolicy = ReportingPolicy.IGNORE) +@Mapper(componentModel = "spring",unmappedTargetPolicy = ReportingPolicy.IGNORE) public interface DictDetailMapper extends EntityMapper { } \ No newline at end of file diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/mapper/DictMapper.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/mapper/DictMapper.java index 1d1f93d..ab5a4bd 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/mapper/DictMapper.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/mapper/DictMapper.java @@ -10,7 +10,7 @@ import org.mapstruct.ReportingPolicy; * @author Zheng Jie * @date 2019-04-10 */ -@Mapper(componentModel = "spring",uses = {},unmappedTargetPolicy = ReportingPolicy.IGNORE) +@Mapper(componentModel = "spring",unmappedTargetPolicy = ReportingPolicy.IGNORE) public interface DictMapper extends EntityMapper { } \ No newline at end of file diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/mapper/JobSmallMapper.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/mapper/JobSmallMapper.java index c48b4d3..425cb4a 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/mapper/JobSmallMapper.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/mapper/JobSmallMapper.java @@ -10,7 +10,7 @@ import org.mapstruct.ReportingPolicy; * @author Zheng Jie * @date 2019-03-29 */ -@Mapper(componentModel = "spring",uses = {},unmappedTargetPolicy = ReportingPolicy.IGNORE) +@Mapper(componentModel = "spring",unmappedTargetPolicy = ReportingPolicy.IGNORE) public interface JobSmallMapper extends EntityMapper { } \ No newline at end of file diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/mapper/MenuMapper.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/mapper/MenuMapper.java index 513f1bc..8cdaf63 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/mapper/MenuMapper.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/mapper/MenuMapper.java @@ -10,7 +10,7 @@ import org.mapstruct.ReportingPolicy; * @author Zheng Jie * @date 2018-12-17 */ -@Mapper(componentModel = "spring",uses = {},unmappedTargetPolicy = ReportingPolicy.IGNORE) +@Mapper(componentModel = "spring",unmappedTargetPolicy = ReportingPolicy.IGNORE) public interface MenuMapper extends EntityMapper { } diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/mapper/RoleSmallMapper.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/mapper/RoleSmallMapper.java index c5858fb..53d97cc 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/mapper/RoleSmallMapper.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/mapper/RoleSmallMapper.java @@ -11,7 +11,7 @@ import org.mapstruct.ReportingPolicy; * @author Zheng Jie * @date 2019-5-23 */ -@Mapper(componentModel = "spring", uses = {}, unmappedTargetPolicy = ReportingPolicy.IGNORE) +@Mapper(componentModel = "spring",unmappedTargetPolicy = ReportingPolicy.IGNORE) public interface RoleSmallMapper extends EntityMapper { } diff --git a/eladmin-system/src/main/resources/config/application-dev.yml b/eladmin-system/src/main/resources/config/application-dev.yml index 45b7a50..45635db 100644 --- a/eladmin-system/src/main/resources/config/application-dev.yml +++ b/eladmin-system/src/main/resources/config/application-dev.yml @@ -47,11 +47,6 @@ jwt: secret: mySecret # token 过期时间 6个小时 expiration: 21000000 - auth: - # 授权路径 - path: /login - # 获取用户信息 - account: /info #是否允许生成代码,生产环境设置为false generator: diff --git a/eladmin-system/src/main/resources/config/application-prod.yml b/eladmin-system/src/main/resources/config/application-prod.yml index a1ae2b7..04ff30c 100644 --- a/eladmin-system/src/main/resources/config/application-prod.yml +++ b/eladmin-system/src/main/resources/config/application-prod.yml @@ -49,11 +49,6 @@ jwt: secret: mySecret # token 过期时间 2个小时 expiration: 7200000 - auth: - # 授权路径 - path: /login - # 获取用户信息 - account: /info #是否允许生成代码,生产环境设置为false generator: diff --git a/eladmin-system/src/main/resources/template/generator/admin/Controller.ftl b/eladmin-system/src/main/resources/template/generator/admin/Controller.ftl index 9ec0b10..8dbe6bc 100644 --- a/eladmin-system/src/main/resources/template/generator/admin/Controller.ftl +++ b/eladmin-system/src/main/resources/template/generator/admin/Controller.ftl @@ -4,7 +4,6 @@ import me.zhengjie.aop.log.Log; import ${package}.domain.${className}; import ${package}.service.${className}Service; import ${package}.service.dto.${className}QueryCriteria; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.domain.Pageable; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; @@ -19,40 +18,43 @@ import io.swagger.annotations.*; */ @Api(tags = "${className}管理") @RestController -@RequestMapping("api") +@RequestMapping("/api/${changeClassName}") public class ${className}Controller { - @Autowired - private ${className}Service ${changeClassName}Service; + private final ${className}Service ${changeClassName}Service; + public ${className}Controller(${className}Service ${changeClassName}Service) { + this.${changeClassName}Service = ${changeClassName}Service; + } + + @GetMapping @Log("查询${className}") - @ApiOperation(value = "查询${className}") - @GetMapping(value = "/${changeClassName}") + @ApiOperation("查询${className}") @PreAuthorize("hasAnyRole('ADMIN','${upperCaseClassName}_ALL','${upperCaseClassName}_SELECT')") public ResponseEntity get${className}s(${className}QueryCriteria criteria, Pageable pageable){ - return new ResponseEntity(${changeClassName}Service.queryAll(criteria,pageable),HttpStatus.OK); + return new ResponseEntity<>(${changeClassName}Service.queryAll(criteria,pageable),HttpStatus.OK); } + @PostMapping @Log("新增${className}") - @ApiOperation(value = "新增${className}") - @PostMapping(value = "/${changeClassName}") + @ApiOperation("新增${className}") @PreAuthorize("hasAnyRole('ADMIN','${upperCaseClassName}_ALL','${upperCaseClassName}_CREATE')") public ResponseEntity create(@Validated @RequestBody ${className} resources){ - return new ResponseEntity(${changeClassName}Service.create(resources),HttpStatus.CREATED); + return new ResponseEntity<>(${changeClassName}Service.create(resources),HttpStatus.CREATED); } + @PutMapping @Log("修改${className}") - @ApiOperation(value = "修改${className}") - @PutMapping(value = "/${changeClassName}") + @ApiOperation("修改${className}") @PreAuthorize("hasAnyRole('ADMIN','${upperCaseClassName}_ALL','${upperCaseClassName}_EDIT')") public ResponseEntity update(@Validated @RequestBody ${className} resources){ ${changeClassName}Service.update(resources); return new ResponseEntity(HttpStatus.NO_CONTENT); } + @DeleteMapping(value = "/{${pkChangeColName}}") @Log("删除${className}") - @ApiOperation(value = "删除${className}") - @DeleteMapping(value = "/${changeClassName}/{${pkChangeColName}}") + @ApiOperation("删除${className}") @PreAuthorize("hasAnyRole('ADMIN','${upperCaseClassName}_ALL','${upperCaseClassName}_DELETE')") public ResponseEntity delete(@PathVariable ${pkColumnType} ${pkChangeColName}){ ${changeClassName}Service.delete(${pkChangeColName}); diff --git a/eladmin-system/src/main/resources/template/generator/admin/Mapper.ftl b/eladmin-system/src/main/resources/template/generator/admin/Mapper.ftl index 2f067d3..bf4f3e9 100644 --- a/eladmin-system/src/main/resources/template/generator/admin/Mapper.ftl +++ b/eladmin-system/src/main/resources/template/generator/admin/Mapper.ftl @@ -10,7 +10,7 @@ import org.mapstruct.ReportingPolicy; * @author ${author} * @date ${date} */ -@Mapper(componentModel = "spring",uses = {},unmappedTargetPolicy = ReportingPolicy.IGNORE) +@Mapper(componentModel = "spring", unmappedTargetPolicy = ReportingPolicy.IGNORE) public interface ${className}Mapper extends EntityMapper<${className}DTO, ${className}> { } \ No newline at end of file diff --git a/eladmin-system/src/main/resources/template/generator/admin/QueryCriteria.ftl b/eladmin-system/src/main/resources/template/generator/admin/QueryCriteria.ftl index 514e92c..2f5e20a 100644 --- a/eladmin-system/src/main/resources/template/generator/admin/QueryCriteria.ftl +++ b/eladmin-system/src/main/resources/template/generator/admin/QueryCriteria.ftl @@ -1,10 +1,10 @@ package ${package}.service.dto; import lombok.Data; -<#if hasTimestamp> +<#if queryHasTimestamp> import java.sql.Timestamp; -<#if hasBigDecimal> +<#if queryHasBigDecimal> import java.math.BigDecimal; <#if queryColumns??> diff --git a/eladmin-system/src/main/resources/template/generator/admin/Repository.ftl b/eladmin-system/src/main/resources/template/generator/admin/Repository.ftl index 9b89681..73d4e9e 100644 --- a/eladmin-system/src/main/resources/template/generator/admin/Repository.ftl +++ b/eladmin-system/src/main/resources/template/generator/admin/Repository.ftl @@ -8,16 +8,11 @@ import org.springframework.data.jpa.repository.JpaSpecificationExecutor; * @author ${author} * @date ${date} */ -public interface ${className}Repository extends JpaRepository<${className}, ${pkColumnType}>, JpaSpecificationExecutor { +public interface ${className}Repository extends JpaRepository<${className}, ${pkColumnType}>, JpaSpecificationExecutor<${className}> { <#if columns??> <#list columns as column> <#if column.columnKey = 'UNI'> - /** - * findBy${column.capitalColumnName} - * @param ${column.columnName} - * @return - */ ${className} findBy${column.capitalColumnName}(${column.columnType} ${column.columnName}); diff --git a/eladmin-system/src/main/resources/template/generator/admin/Service.ftl b/eladmin-system/src/main/resources/template/generator/admin/Service.ftl index ba236c1..3c04d74 100644 --- a/eladmin-system/src/main/resources/template/generator/admin/Service.ftl +++ b/eladmin-system/src/main/resources/template/generator/admin/Service.ftl @@ -3,9 +3,6 @@ package ${package}.service; import ${package}.domain.${className}; import ${package}.service.dto.${className}DTO; import ${package}.service.dto.${className}QueryCriteria; -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 java.util.Map; import java.util.List; @@ -14,53 +11,33 @@ import java.util.List; * @author ${author} * @date ${date} */ -//@CacheConfig(cacheNames = "${changeClassName}") public interface ${className}Service { /** * 查询数据分页 - * @param criteria - * @param pageable - * @return + * @param criteria 条件参数 + * @param pageable 分页参数 + * @return Map */ - //@Cacheable Map queryAll(${className}QueryCriteria criteria, Pageable pageable); /** * 查询所有数据不分页 - * @param criteria - * @return + * @param criteria 条件参数 + * @return List<${className}DTO> */ - //@Cacheable List<${className}DTO> queryAll(${className}QueryCriteria criteria); /** * 根据ID查询 - * @param ${pkChangeColName} - * @return + * @param ${pkChangeColName} ID + * @return ${className}DTO */ - //@Cacheable(key = "#p0") ${className}DTO findById(${pkColumnType} ${pkChangeColName}); - /** - * 创建 - * @param resources - * @return - */ - //@CacheEvict(allEntries = true) ${className}DTO create(${className} resources); - /** - * 编辑 - * @param resources - */ - //@CacheEvict(allEntries = true) void update(${className} resources); - /** - * 删除 - * @param ${pkChangeColName} - */ - //@CacheEvict(allEntries = true) void delete(${pkColumnType} ${pkChangeColName}); } \ No newline at end of file diff --git a/eladmin-system/src/main/resources/template/generator/admin/ServiceImpl.ftl b/eladmin-system/src/main/resources/template/generator/admin/ServiceImpl.ftl index d22a953..cf869c4 100644 --- a/eladmin-system/src/main/resources/template/generator/admin/ServiceImpl.ftl +++ b/eladmin-system/src/main/resources/template/generator/admin/ServiceImpl.ftl @@ -16,11 +16,9 @@ import ${package}.service.${className}Service; import ${package}.service.dto.${className}DTO; import ${package}.service.dto.${className}QueryCriteria; import ${package}.service.mapper.${className}Mapper; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Propagation; import org.springframework.transaction.annotation.Transactional; -import java.util.Optional; <#if !auto && pkColumnType = 'Long'> import cn.hutool.core.lang.Snowflake; import cn.hutool.core.util.IdUtil; @@ -28,6 +26,9 @@ import cn.hutool.core.util.IdUtil; <#if !auto && pkColumnType = 'String'> import cn.hutool.core.util.IdUtil; +import org.springframework.cache.annotation.CacheConfig; +import org.springframework.cache.annotation.CacheEvict; +import org.springframework.cache.annotation.Cacheable; import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable; import me.zhengjie.utils.PageUtil; @@ -40,34 +41,42 @@ import java.util.Map; * @date ${date} */ @Service +@CacheConfig(cacheNames = "${changeClassName}") @Transactional(propagation = Propagation.SUPPORTS, readOnly = true, rollbackFor = Exception.class) public class ${className}ServiceImpl implements ${className}Service { - @Autowired - private ${className}Repository ${changeClassName}Repository; + private final ${className}Repository ${changeClassName}Repository; - @Autowired - private ${className}Mapper ${changeClassName}Mapper; + private final ${className}Mapper ${changeClassName}Mapper; + + public ${className}ServiceImpl(${className}Repository ${changeClassName}Repository, ${className}Mapper ${changeClassName}Mapper) { + this.${changeClassName}Repository = ${changeClassName}Repository; + this.${changeClassName}Mapper = ${changeClassName}Mapper; + } @Override + @Cacheable public Map queryAll(${className}QueryCriteria criteria, Pageable pageable){ Page<${className}> page = ${changeClassName}Repository.findAll((root, criteriaQuery, criteriaBuilder) -> QueryHelp.getPredicate(root,criteria,criteriaBuilder),pageable); return PageUtil.toPage(page.map(${changeClassName}Mapper::toDto)); } @Override + @Cacheable public List<${className}DTO> queryAll(${className}QueryCriteria criteria){ return ${changeClassName}Mapper.toDto(${changeClassName}Repository.findAll((root, criteriaQuery, criteriaBuilder) -> QueryHelp.getPredicate(root,criteria,criteriaBuilder))); } @Override + @Cacheable(key = "#p0") public ${className}DTO findById(${pkColumnType} ${pkChangeColName}) { - Optional<${className}> ${changeClassName} = ${changeClassName}Repository.findById(${pkChangeColName}); - ValidationUtil.isNull(${changeClassName},"${className}","${pkChangeColName}",${pkChangeColName}); - return ${changeClassName}Mapper.toDto(${changeClassName}.get()); + ${className} ${changeClassName} = ${changeClassName}Repository.findById(${pkChangeColName}).orElseGet(${className}::new); + ValidationUtil.isNull(${changeClassName}.get${pkCapitalColName}(),"${className}","${pkChangeColName}",${pkChangeColName}); + return ${changeClassName}Mapper.toDto(${changeClassName}); } @Override + @CacheEvict(allEntries = true) @Transactional(rollbackFor = Exception.class) public ${className}DTO create(${className} resources) { <#if !auto && pkColumnType = 'Long'> @@ -90,11 +99,11 @@ public class ${className}ServiceImpl implements ${className}Service { } @Override + @CacheEvict(allEntries = true) @Transactional(rollbackFor = Exception.class) public void update(${className} resources) { - Optional<${className}> optional${className} = ${changeClassName}Repository.findById(resources.get${pkCapitalColName}()); - ValidationUtil.isNull( optional${className},"${className}","id",resources.get${pkCapitalColName}()); - ${className} ${changeClassName} = optional${className}.get(); + ${className} ${changeClassName} = ${changeClassName}Repository.findById(resources.get${pkCapitalColName}()).orElseGet(${className}::new); + ValidationUtil.isNull( ${changeClassName}.get${pkCapitalColName}(),"${className}","id",resources.get${pkCapitalColName}()); <#if columns??> <#list columns as column> <#if column.columnKey = 'UNI'> @@ -113,6 +122,7 @@ public class ${className}ServiceImpl implements ${className}Service { } @Override + @CacheEvict(allEntries = true) @Transactional(rollbackFor = Exception.class) public void delete(${pkColumnType} ${pkChangeColName}) { ${changeClassName}Repository.deleteById(${pkChangeColName}); diff --git a/eladmin-system/src/test/java/me/zhengjie/EladminSystemApplicationTests.java b/eladmin-system/src/test/java/me/zhengjie/EladminSystemApplicationTests.java index 3b6df74..793ee5c 100644 --- a/eladmin-system/src/test/java/me/zhengjie/EladminSystemApplicationTests.java +++ b/eladmin-system/src/test/java/me/zhengjie/EladminSystemApplicationTests.java @@ -13,6 +13,5 @@ public class EladminSystemApplicationTests { public void contextLoads() { } - } diff --git a/eladmin-tools/src/main/java/me/zhengjie/domain/Picture.java b/eladmin-tools/src/main/java/me/zhengjie/domain/Picture.java index 289cc08..09a2867 100644 --- a/eladmin-tools/src/main/java/me/zhengjie/domain/Picture.java +++ b/eladmin-tools/src/main/java/me/zhengjie/domain/Picture.java @@ -41,6 +41,9 @@ public class Picture implements Serializable { @Column(name = "create_time") private Timestamp createTime; + // 用于检测文件是否重复 + private String md5Code; + @Override public String toString() { return "Picture{" + diff --git a/eladmin-tools/src/main/java/me/zhengjie/repository/PictureRepository.java b/eladmin-tools/src/main/java/me/zhengjie/repository/PictureRepository.java index 6f3fbc7..60bdc60 100644 --- a/eladmin-tools/src/main/java/me/zhengjie/repository/PictureRepository.java +++ b/eladmin-tools/src/main/java/me/zhengjie/repository/PictureRepository.java @@ -9,4 +9,8 @@ import org.springframework.data.jpa.repository.JpaSpecificationExecutor; * @date 2018-12-27 */ public interface PictureRepository extends JpaRepository, JpaSpecificationExecutor { + + Picture findByUrl(String url); + + Picture findByMd5Code(String code); } diff --git a/eladmin-tools/src/main/java/me/zhengjie/rest/AliPayController.java b/eladmin-tools/src/main/java/me/zhengjie/rest/AliPayController.java index 1bb063c..ce0add9 100644 --- a/eladmin-tools/src/main/java/me/zhengjie/rest/AliPayController.java +++ b/eladmin-tools/src/main/java/me/zhengjie/rest/AliPayController.java @@ -9,7 +9,6 @@ import me.zhengjie.domain.vo.TradeVo; import me.zhengjie.service.AlipayService; import me.zhengjie.utils.AliPayStatusEnum; import me.zhengjie.utils.AlipayUtils; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; import org.springframework.validation.annotation.Validated; @@ -27,7 +26,7 @@ import java.util.Map; @Slf4j @RestController @RequestMapping("/api/aliPay") -@Api(tags = "支付宝支付管理") +@Api(tags = "工具:支付宝管理") public class AliPayController { private final AlipayUtils alipayUtils; @@ -45,6 +44,7 @@ public class AliPayController { } @Log("配置支付宝") + @ApiOperation("配置支付宝") @PutMapping public ResponseEntity payConfig(@Validated @RequestBody AlipayConfig alipayConfig){ alipayConfig.setId(1L); @@ -53,7 +53,7 @@ public class AliPayController { } @Log("支付宝PC网页支付") - @ApiOperation(value = "PC网页支付") + @ApiOperation("PC网页支付") @PostMapping(value = "/toPayAsPC") public ResponseEntity toPayAsPC(@Validated@RequestBody TradeVo trade) throws Exception{ AlipayConfig alipay = alipayService.find(); @@ -63,7 +63,7 @@ public class AliPayController { } @Log("支付宝手机网页支付") - @ApiOperation(value = "手机网页支付") + @ApiOperation("手机网页支付") @PostMapping(value = "/toPayAsWeb") public ResponseEntity toPayAsWeb(@Validated @RequestBody TradeVo trade) throws Exception{ AlipayConfig alipay = alipayService.find(); @@ -74,8 +74,8 @@ public class AliPayController { @ApiIgnore @GetMapping("/return") - @ApiOperation(value = "支付之后跳转的链接") - public ResponseEntity returnPage(HttpServletRequest request, HttpServletResponse response) throws Exception { + @ApiOperation("支付之后跳转的链接") + public ResponseEntity returnPage(HttpServletRequest request, HttpServletResponse response){ AlipayConfig alipay = alipayService.find(); response.setContentType("text/html;charset=" + alipay.getCharset()); //内容验签,防止黑客篡改参数 @@ -96,8 +96,8 @@ public class AliPayController { @ApiIgnore @RequestMapping("/notify") - @ApiOperation(value = "支付异步通知(要公网访问),接收异步通知,检查通知内容app_id、out_trade_no、total_amount是否与请求中的一致,根据trade_status进行后续业务处理") - public ResponseEntity notify(HttpServletRequest request) throws Exception{ + @ApiOperation("支付异步通知(要公网访问),接收异步通知,检查通知内容app_id、out_trade_no、total_amount是否与请求中的一致,根据trade_status进行后续业务处理") + public ResponseEntity notify(HttpServletRequest request){ AlipayConfig alipay = alipayService.find(); Map parameterMap = request.getParameterMap(); //内容验签,防止黑客篡改参数 @@ -111,9 +111,9 @@ public class AliPayController { //付款金额 String totalAmount = new String(request.getParameter("total_amount").getBytes(StandardCharsets.ISO_8859_1), StandardCharsets.UTF_8); //验证 -// if(tradeStatus.equals(AliPayStatusEnum.SUCCESS.getValue())||tradeStatus.equals(AliPayStatusEnum.FINISHED.getValue())){ -// // 验证通过后应该根据业务需要处理订单 -// } + if(tradeStatus.equals(AliPayStatusEnum.SUCCESS.getValue())||tradeStatus.equals(AliPayStatusEnum.FINISHED.getValue())){ + // 验证通过后应该根据业务需要处理订单 + } return new ResponseEntity(HttpStatus.OK); } return new ResponseEntity(HttpStatus.BAD_REQUEST); diff --git a/eladmin-tools/src/main/java/me/zhengjie/rest/EmailController.java b/eladmin-tools/src/main/java/me/zhengjie/rest/EmailController.java index ff3f15f..ade9d3e 100644 --- a/eladmin-tools/src/main/java/me/zhengjie/rest/EmailController.java +++ b/eladmin-tools/src/main/java/me/zhengjie/rest/EmailController.java @@ -18,7 +18,7 @@ import org.springframework.web.bind.annotation.*; */ @RestController @RequestMapping("api/email") -@Api(tags = "邮件管理") +@Api(tags = "工具:邮件管理") public class EmailController { private final EmailService emailService; @@ -34,7 +34,7 @@ public class EmailController { @Log("配置邮件") @PutMapping - @ApiOperation(value = "配置邮件") + @ApiOperation("配置邮件") public ResponseEntity emailConfig(@Validated @RequestBody EmailConfig emailConfig){ emailService.update(emailConfig,emailService.find()); return new ResponseEntity(HttpStatus.OK); @@ -42,7 +42,7 @@ public class EmailController { @Log("发送邮件") @PostMapping - @ApiOperation(value = "发送邮件") + @ApiOperation("发送邮件") public ResponseEntity send(@Validated @RequestBody EmailVo emailVo) throws Exception { emailService.send(emailVo,emailService.find()); return new ResponseEntity(HttpStatus.OK); diff --git a/eladmin-tools/src/main/java/me/zhengjie/rest/LocalStorageController.java b/eladmin-tools/src/main/java/me/zhengjie/rest/LocalStorageController.java index 425cef3..c150815 100644 --- a/eladmin-tools/src/main/java/me/zhengjie/rest/LocalStorageController.java +++ b/eladmin-tools/src/main/java/me/zhengjie/rest/LocalStorageController.java @@ -17,7 +17,7 @@ import org.springframework.web.multipart.MultipartFile; * @author Zheng Jie * @date 2019-09-05 */ -@Api(tags = "本地存储管理") +@Api(tags = "工具:本地存储管理") @RestController @RequestMapping("/api/localStorage") public class LocalStorageController { @@ -28,21 +28,21 @@ public class LocalStorageController { this.localStorageService = localStorageService; } - @ApiOperation(value = "查询文件") + @ApiOperation("查询文件") @GetMapping @PreAuthorize("hasAnyRole('ADMIN','LOCALSTORAGE_ALL','LOCALSTORAGE_SELECT')") public ResponseEntity getLocalStorages(LocalStorageQueryCriteria criteria, Pageable pageable){ return new ResponseEntity<>(localStorageService.queryAll(criteria,pageable),HttpStatus.OK); } - @ApiOperation(value = "上传文件") + @ApiOperation("上传文件") @PostMapping @PreAuthorize("hasAnyRole('ADMIN','LOCALSTORAGE_ALL','LOCALSTORAGE_CREATE')") public ResponseEntity create(@RequestParam String name, @RequestParam("file") MultipartFile file){ return new ResponseEntity<>(localStorageService.create(name, file),HttpStatus.CREATED); } - @ApiOperation(value = "修改文件") + @ApiOperation("修改文件") @PutMapping @PreAuthorize("hasAnyRole('ADMIN','LOCALSTORAGE_ALL','LOCALSTORAGE_EDIT')") public ResponseEntity update(@Validated @RequestBody LocalStorage resources){ @@ -50,7 +50,7 @@ public class LocalStorageController { return new ResponseEntity(HttpStatus.NO_CONTENT); } - @ApiOperation(value = "删除文件") + @ApiOperation("删除文件") @DeleteMapping(value = "/{id}") @PreAuthorize("hasAnyRole('ADMIN','LOCALSTORAGE_ALL','LOCALSTORAGE_DELETE')") public ResponseEntity delete(@PathVariable Long id){ @@ -60,7 +60,7 @@ public class LocalStorageController { @Log("多选删除") @DeleteMapping - @ApiOperation(value = "多选删除") + @ApiOperation("多选删除") public ResponseEntity deleteAll(@RequestBody Long[] ids) { localStorageService.deleteAll(ids); return new ResponseEntity(HttpStatus.OK); 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 f5168f1..0c792d9 100644 --- a/eladmin-tools/src/main/java/me/zhengjie/rest/PictureController.java +++ b/eladmin-tools/src/main/java/me/zhengjie/rest/PictureController.java @@ -22,7 +22,7 @@ import java.util.Map; */ @RestController @RequestMapping("/api/pictures") -@Api(tags = "免费图床管理") +@Api(tags = "工具:免费图床管理") public class PictureController { private final PictureService pictureService; @@ -34,7 +34,7 @@ public class PictureController { @Log("查询图片") @PreAuthorize("hasAnyRole('ADMIN','PICTURE_ALL','PICTURE_SELECT')") @GetMapping - @ApiOperation(value = "查询图片") + @ApiOperation("查询图片") public ResponseEntity getRoles(PictureQueryCriteria criteria, Pageable pageable){ return new ResponseEntity<>(pictureService.queryAll(criteria,pageable),HttpStatus.OK); } @@ -42,7 +42,7 @@ public class PictureController { @Log("上传图片") @PreAuthorize("hasAnyRole('ADMIN','PICTURE_ALL','PICTURE_UPLOAD')") @PostMapping - @ApiOperation(value = "上传图片") + @ApiOperation("上传图片") public ResponseEntity upload(@RequestParam MultipartFile file){ String userName = SecurityUtils.getUsername(); Picture picture = pictureService.upload(file,userName); @@ -54,7 +54,7 @@ public class PictureController { } @Log("删除图片") - @ApiOperation(value = "删除图片") + @ApiOperation("删除图片") @PreAuthorize("hasAnyRole('ADMIN','PICTURE_ALL','PICTURE_DELETE')") @DeleteMapping(value = "/{id}") public ResponseEntity delete(@PathVariable Long id) { @@ -63,7 +63,7 @@ public class PictureController { } @Log("多选删除图片") - @ApiOperation(value = "多选删除图片") + @ApiOperation("多选删除图片") @PreAuthorize("hasAnyRole('ADMIN','PICTURE_ALL','PICTURE_DELETE')") @DeleteMapping public ResponseEntity deleteAll(@RequestBody Long[] ids) { 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 371c050..2d8b227 100644 --- a/eladmin-tools/src/main/java/me/zhengjie/rest/QiniuController.java +++ b/eladmin-tools/src/main/java/me/zhengjie/rest/QiniuController.java @@ -24,8 +24,8 @@ import java.util.Map; */ @Slf4j @RestController -@RequestMapping("api") -@Api(tags = "七牛云存储管理") +@RequestMapping("/api/qiNiuContent") +@Api(tags = "工具:七牛云存储管理") public class QiniuController { private final QiNiuService qiNiuService; @@ -34,14 +34,14 @@ public class QiniuController { this.qiNiuService = qiNiuService; } - @GetMapping(value = "/qiNiuConfig") + @GetMapping(value = "/config") public ResponseEntity get(){ return new ResponseEntity<>(qiNiuService.find(), HttpStatus.OK); } @Log("配置七牛云存储") - @ApiOperation(value = "配置七牛云存储") - @PutMapping(value = "/qiNiuConfig") + @ApiOperation("配置七牛云存储") + @PutMapping(value = "/config") public ResponseEntity emailConfig(@Validated @RequestBody QiniuConfig qiniuConfig){ qiNiuService.update(qiniuConfig); qiNiuService.update(qiniuConfig.getType()); @@ -49,15 +49,15 @@ public class QiniuController { } @Log("查询文件") - @ApiOperation(value = "查询文件") - @GetMapping(value = "/qiNiuContent") + @ApiOperation("查询文件") + @GetMapping public ResponseEntity getRoles(QiniuQueryCriteria criteria, Pageable pageable){ return new ResponseEntity<>(qiNiuService.queryAll(criteria,pageable),HttpStatus.OK); } @Log("上传文件") - @ApiOperation(value = "上传文件") - @PostMapping(value = "/qiNiuContent") + @ApiOperation("上传文件") + @PostMapping public ResponseEntity upload(@RequestParam MultipartFile file){ QiniuContent qiniuContent = qiNiuService.upload(file,qiNiuService.find()); Map map = new HashMap<>(3); @@ -68,16 +68,16 @@ public class QiniuController { } @Log("同步七牛云数据") - @ApiOperation(value = "同步七牛云数据") - @PostMapping(value = "/qiNiuContent/synchronize") + @ApiOperation("同步七牛云数据") + @PostMapping(value = "/synchronize") public ResponseEntity synchronize(){ qiNiuService.synchronize(qiNiuService.find()); return new ResponseEntity(HttpStatus.OK); } @Log("下载文件") - @ApiOperation(value = "下载文件") - @GetMapping(value = "/qiNiuContent/download/{id}") + @ApiOperation("下载文件") + @GetMapping(value = "/download/{id}") public ResponseEntity download(@PathVariable Long id){ Map map = new HashMap<>(1); map.put("url", qiNiuService.download(qiNiuService.findByContentId(id),qiNiuService.find())); @@ -85,16 +85,16 @@ public class QiniuController { } @Log("删除文件") - @ApiOperation(value = "删除文件") - @DeleteMapping(value = "/qiNiuContent/{id}") + @ApiOperation("删除文件") + @DeleteMapping(value = "/{id}") public ResponseEntity delete(@PathVariable Long id){ qiNiuService.delete(qiNiuService.findByContentId(id),qiNiuService.find()); return new ResponseEntity(HttpStatus.OK); } @Log("删除多张图片") - @ApiOperation(value = "删除多张图片") - @DeleteMapping(value = "/qiNiuContent") + @ApiOperation("删除多张图片") + @DeleteMapping 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/rest/VerificationCodeController.java b/eladmin-tools/src/main/java/me/zhengjie/rest/VerificationCodeController.java index 718b257..bffa094 100644 --- a/eladmin-tools/src/main/java/me/zhengjie/rest/VerificationCodeController.java +++ b/eladmin-tools/src/main/java/me/zhengjie/rest/VerificationCodeController.java @@ -7,10 +7,8 @@ import me.zhengjie.domain.vo.EmailVo; import me.zhengjie.service.EmailService; import me.zhengjie.service.VerificationCodeService; import me.zhengjie.utils.ElAdminConstant; -import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; -import org.springframework.security.core.userdetails.UserDetailsService; import org.springframework.web.bind.annotation.*; /** @@ -18,21 +16,21 @@ import org.springframework.web.bind.annotation.*; * @date 2018-12-26 */ @RestController -@RequestMapping("api") -@Api(tags = "验证码管理") +@RequestMapping("/api/code") +@Api(tags = "工具:验证码管理") public class VerificationCodeController { private final VerificationCodeService verificationCodeService; private final EmailService emailService; - public VerificationCodeController(VerificationCodeService verificationCodeService, @Qualifier("jwtUserDetailsService") UserDetailsService userDetailsService, EmailService emailService) { + public VerificationCodeController(VerificationCodeService verificationCodeService, EmailService emailService) { this.verificationCodeService = verificationCodeService; this.emailService = emailService; } - @PostMapping(value = "/code/resetEmail") - @ApiOperation(value = "重置邮箱,发送验证码") + @PostMapping(value = "/resetEmail") + @ApiOperation("重置邮箱,发送验证码") public ResponseEntity resetEmail(@RequestBody VerificationCode code) throws Exception { code.setScenes(ElAdminConstant.RESET_MAIL); EmailVo emailVo = verificationCodeService.sendEmail(code); @@ -40,8 +38,8 @@ public class VerificationCodeController { return new ResponseEntity(HttpStatus.OK); } - @PostMapping(value = "/code/email/resetPass") - @ApiOperation(value = "重置密码,发送验证码") + @PostMapping(value = "/email/resetPass") + @ApiOperation("重置密码,发送验证码") public ResponseEntity resetPass(@RequestParam String email) throws Exception { VerificationCode code = new VerificationCode(); code.setType("email"); @@ -52,8 +50,8 @@ public class VerificationCodeController { return new ResponseEntity(HttpStatus.OK); } - @GetMapping(value = "/code/validated") - @ApiOperation(value = "验证码验证") + @GetMapping(value = "/validated") + @ApiOperation("验证码验证") public ResponseEntity validated(VerificationCode code){ verificationCodeService.validated(code); return new ResponseEntity(HttpStatus.OK); diff --git a/eladmin-tools/src/main/java/me/zhengjie/service/AlipayService.java b/eladmin-tools/src/main/java/me/zhengjie/service/AlipayService.java index 69629d3..9cebe56 100644 --- a/eladmin-tools/src/main/java/me/zhengjie/service/AlipayService.java +++ b/eladmin-tools/src/main/java/me/zhengjie/service/AlipayService.java @@ -10,7 +10,6 @@ import org.springframework.cache.annotation.Cacheable; * @author Zheng Jie * @date 2018-12-31 */ -@CacheConfig(cacheNames = "alipay") public interface AlipayService { /** @@ -35,7 +34,6 @@ public interface AlipayService { * 查询配置 * @return AlipayConfig */ - @Cacheable(key = "'1'") AlipayConfig find(); /** @@ -43,6 +41,5 @@ public interface AlipayService { * @param alipayConfig 支付宝配置 * @return AlipayConfig */ - @CachePut(key = "'1'") AlipayConfig update(AlipayConfig alipayConfig); } diff --git a/eladmin-tools/src/main/java/me/zhengjie/service/EmailService.java b/eladmin-tools/src/main/java/me/zhengjie/service/EmailService.java index ed0d943..bd716d2 100644 --- a/eladmin-tools/src/main/java/me/zhengjie/service/EmailService.java +++ b/eladmin-tools/src/main/java/me/zhengjie/service/EmailService.java @@ -2,16 +2,12 @@ package me.zhengjie.service; import me.zhengjie.domain.EmailConfig; import me.zhengjie.domain.vo.EmailVo; -import org.springframework.cache.annotation.CacheConfig; -import org.springframework.cache.annotation.CachePut; -import org.springframework.cache.annotation.Cacheable; import org.springframework.scheduling.annotation.Async; /** * @author Zheng Jie * @date 2018-12-26 */ -@CacheConfig(cacheNames = "email") public interface EmailService { /** @@ -20,14 +16,12 @@ public interface EmailService { * @param old 旧的配置 * @return EmailConfig */ - @CachePut(key = "'1'") EmailConfig update(EmailConfig emailConfig, EmailConfig old); /** * 查询配置 * @return EmailConfig 邮件配置 */ - @Cacheable(key = "'1'") EmailConfig find(); /** diff --git a/eladmin-tools/src/main/java/me/zhengjie/service/LocalStorageService.java b/eladmin-tools/src/main/java/me/zhengjie/service/LocalStorageService.java index 504997e..93f063c 100644 --- a/eladmin-tools/src/main/java/me/zhengjie/service/LocalStorageService.java +++ b/eladmin-tools/src/main/java/me/zhengjie/service/LocalStorageService.java @@ -3,9 +3,6 @@ package me.zhengjie.service; import me.zhengjie.domain.LocalStorage; import me.zhengjie.service.dto.LocalStorageDTO; import me.zhengjie.service.dto.LocalStorageQueryCriteria; -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; @@ -13,61 +10,19 @@ import org.springframework.web.multipart.MultipartFile; * @author Zheng Jie * @date 2019-09-05 */ -@CacheConfig(cacheNames = "localStorage") public interface LocalStorageService { - /** - * queryAll 分页 - * @param criteria 条件参数 - * @param pageable 分页参数 - * @return Object - */ - @Cacheable Object queryAll(LocalStorageQueryCriteria criteria, Pageable pageable); - /** - * queryAll 不分页 - * @param criteria 条件参数 - * @return Object - */ - @Cacheable Object queryAll(LocalStorageQueryCriteria criteria); - /** - * findById - * @param id - * @return LocalStorageDTO - */ - @Cacheable(key = "#p0") LocalStorageDTO findById(Long id); - /** - * create - * @param name 文件名称 - * @param file 文件资源 - * @return LocalStorageDTO - */ - @CacheEvict(allEntries = true) LocalStorageDTO create(String name, MultipartFile file); - /** - * update - * @param resources 资源实体 - */ - @CacheEvict(allEntries = true) void update(LocalStorage resources); - /** - * delete - * @param id 文件ID - */ - @CacheEvict(allEntries = true) void delete(Long id); - /** - * 多文件删除 - * @param ids 文件数组 - */ - @CacheEvict(allEntries = true) void deleteAll(Long[] ids); } \ No newline at end of file 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 eb8a0e5..00052ff 100644 --- a/eladmin-tools/src/main/java/me/zhengjie/service/PictureService.java +++ b/eladmin-tools/src/main/java/me/zhengjie/service/PictureService.java @@ -2,55 +2,22 @@ package me.zhengjie.service; import me.zhengjie.domain.Picture; import me.zhengjie.service.dto.PictureQueryCriteria; -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; + /** * @author Zheng Jie * @date 2018-12-27 */ -@CacheConfig(cacheNames = "picture") public interface PictureService { - /** - * 查询图片 - * @param criteria 条件参数 - * @param pageable 分页参数 - * @return Object - */ - @Cacheable Object queryAll(PictureQueryCriteria criteria, Pageable pageable); - /** - * 上传图片 - * @param file 文件 - * @param username 用户名 - * @return - */ - @CacheEvict(allEntries = true) Picture upload(MultipartFile file, String username); - /** - * 根据ID查询 - * @param id 文件ID - * @return - */ - @Cacheable(key = "#p0") Picture findById(Long id); - /** - * 删除图片 - * @param picture 图片实体 - */ - @CacheEvict(allEntries = true) void delete(Picture picture); - /** - * 删除图片 - * @param ids 文件ID数组 - */ - @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 16e37ad..717d511 100644 --- a/eladmin-tools/src/main/java/me/zhengjie/service/QiNiuService.java +++ b/eladmin-tools/src/main/java/me/zhengjie/service/QiNiuService.java @@ -3,66 +3,49 @@ package me.zhengjie.service; import me.zhengjie.domain.QiniuConfig; import me.zhengjie.domain.QiniuContent; import me.zhengjie.service.dto.QiniuQueryCriteria; -import org.springframework.cache.annotation.CacheConfig; -import org.springframework.cache.annotation.CacheEvict; -import org.springframework.cache.annotation.CachePut; -import org.springframework.cache.annotation.Cacheable; import org.springframework.data.domain.Pageable; -import org.springframework.scheduling.annotation.Async; import org.springframework.web.multipart.MultipartFile; /** * @author Zheng Jie * @date 2018-12-31 */ -@CacheConfig(cacheNames = "qiNiu") public interface QiNiuService { - /** - * 查询文件 - * @param criteria 条件参数 - * @param pageable 分页参数 - * @return Object - */ - @Cacheable Object queryAll(QiniuQueryCriteria criteria, Pageable pageable); /** * 查配置 * @return Cacheable */ - @Cacheable(cacheNames = "qiNiuConfig", key = "'1'") QiniuConfig find(); /** * 修改配置 - * @param qiniuConfig + * @param qiniuConfig 配置 * @return QiniuConfig */ - @CachePut(cacheNames = "qiNiuConfig", key = "'1'") QiniuConfig update(QiniuConfig qiniuConfig); /** * 上传文件 - * @param file - * @param qiniuConfig + * @param file 文件 + * @param qiniuConfig 配置 * @return QiniuContent */ - @CacheEvict(allEntries = true) QiniuContent upload(MultipartFile file, QiniuConfig qiniuConfig); /** * 查询文件 - * @param id + * @param id 文件ID * @return QiniuContent */ - @Cacheable(key = "'content:'+#p0") QiniuContent findByContentId(Long id); /** * 下载文件 - * @param content - * @param config + * @param content 文件信息 + * @param config 配置 * @return String */ String download(QiniuContent content, QiniuConfig config); @@ -72,14 +55,12 @@ public interface QiNiuService { * @param content 文件 * @param config 配置 */ - @CacheEvict(allEntries = true) void delete(QiniuContent content, QiniuConfig config); /** * 同步数据 * @param config 配置 */ - @CacheEvict(allEntries = true) void synchronize(QiniuConfig config); /** @@ -87,13 +68,11 @@ public interface QiNiuService { * @param ids 文件ID数组 * @param config 配置 */ - @CacheEvict(allEntries = true) void deleteAll(Long[] ids, QiniuConfig config); /** * 更新数据 * @param type 类型 */ - @CacheEvict(allEntries = true) void update(String type); } diff --git a/eladmin-tools/src/main/java/me/zhengjie/service/impl/AlipayServiceImpl.java b/eladmin-tools/src/main/java/me/zhengjie/service/impl/AlipayServiceImpl.java index 611b9a0..cfef7a2 100644 --- a/eladmin-tools/src/main/java/me/zhengjie/service/impl/AlipayServiceImpl.java +++ b/eladmin-tools/src/main/java/me/zhengjie/service/impl/AlipayServiceImpl.java @@ -9,8 +9,9 @@ import me.zhengjie.domain.vo.TradeVo; import me.zhengjie.exception.BadRequestException; import me.zhengjie.repository.AlipayRepository; import me.zhengjie.service.AlipayService; -import me.zhengjie.utils.AlipayUtils; -import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.cache.annotation.CacheConfig; +import org.springframework.cache.annotation.CachePut; +import org.springframework.cache.annotation.Cacheable; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Propagation; import org.springframework.transaction.annotation.Transactional; @@ -21,14 +22,15 @@ import java.util.Optional; * @date 2018-12-31 */ @Service +@CacheConfig(cacheNames = "alipay") @Transactional(propagation = Propagation.SUPPORTS, readOnly = true, rollbackFor = Exception.class) public class AlipayServiceImpl implements AlipayService { - @Autowired - AlipayUtils alipayUtils; + private final AlipayRepository alipayRepository; - @Autowired - private AlipayRepository alipayRepository; + public AlipayServiceImpl(AlipayRepository alipayRepository) { + this.alipayRepository = alipayRepository; + } @Override public String toPayAsPC(AlipayConfig alipay, TradeVo trade) throws Exception { @@ -38,7 +40,7 @@ public class AlipayServiceImpl implements AlipayService { } AlipayClient alipayClient = new DefaultAlipayClient(alipay.getGatewayUrl(), alipay.getAppID(), alipay.getPrivateKey(), alipay.getFormat(), alipay.getCharset(), alipay.getPublicKey(), alipay.getSignType()); - double money = Double.parseDouble(trade.getTotalAmount()); +// double money = Double.parseDouble(trade.getTotalAmount()); // 创建API对应的request(电脑网页版) AlipayTradePagePayRequest request = new AlipayTradePagePayRequest(); @@ -91,12 +93,14 @@ public class AlipayServiceImpl implements AlipayService { } @Override + @Cacheable(key = "'1'") public AlipayConfig find() { Optional alipayConfig = alipayRepository.findById(1L); return alipayConfig.orElseGet(AlipayConfig::new); } @Override + @CachePut(key = "'1'") @Transactional(rollbackFor = Exception.class) public AlipayConfig update(AlipayConfig alipayConfig) { return alipayRepository.save(alipayConfig); diff --git a/eladmin-tools/src/main/java/me/zhengjie/service/impl/EmailServiceImpl.java b/eladmin-tools/src/main/java/me/zhengjie/service/impl/EmailServiceImpl.java index 56ac2ac..fee562d 100644 --- a/eladmin-tools/src/main/java/me/zhengjie/service/impl/EmailServiceImpl.java +++ b/eladmin-tools/src/main/java/me/zhengjie/service/impl/EmailServiceImpl.java @@ -8,6 +8,9 @@ import me.zhengjie.exception.BadRequestException; import me.zhengjie.repository.EmailRepository; import me.zhengjie.service.EmailService; import me.zhengjie.utils.EncryptUtils; +import org.springframework.cache.annotation.CacheConfig; +import org.springframework.cache.annotation.CachePut; +import org.springframework.cache.annotation.Cacheable; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Propagation; import org.springframework.transaction.annotation.Transactional; @@ -18,6 +21,7 @@ import java.util.Optional; * @date 2018-12-26 */ @Service +@CacheConfig(cacheNames = "email") @Transactional(propagation = Propagation.SUPPORTS, readOnly = true, rollbackFor = Exception.class) public class EmailServiceImpl implements EmailService { @@ -28,6 +32,7 @@ public class EmailServiceImpl implements EmailService { } @Override + @CachePut(key = "'1'") @Transactional(rollbackFor = Exception.class) public EmailConfig update(EmailConfig emailConfig, EmailConfig old) { try { @@ -42,6 +47,7 @@ public class EmailServiceImpl implements EmailService { } @Override + @Cacheable(key = "'1'") public EmailConfig find() { Optional emailConfig = emailRepository.findById(1L); return emailConfig.orElseGet(EmailConfig::new); diff --git a/eladmin-tools/src/main/java/me/zhengjie/service/impl/LocalStorageServiceImpl.java b/eladmin-tools/src/main/java/me/zhengjie/service/impl/LocalStorageServiceImpl.java index e3119df..716bf3d 100644 --- a/eladmin-tools/src/main/java/me/zhengjie/service/impl/LocalStorageServiceImpl.java +++ b/eladmin-tools/src/main/java/me/zhengjie/service/impl/LocalStorageServiceImpl.java @@ -1,6 +1,8 @@ package me.zhengjie.service.impl; +import cn.hutool.core.util.ObjectUtil; import me.zhengjie.domain.LocalStorage; +import me.zhengjie.exception.BadRequestException; import me.zhengjie.utils.*; import me.zhengjie.repository.LocalStorageRepository; import me.zhengjie.service.LocalStorageService; @@ -8,11 +10,13 @@ import me.zhengjie.service.dto.LocalStorageDTO; import me.zhengjie.service.dto.LocalStorageQueryCriteria; import me.zhengjie.service.mapper.LocalStorageMapper; import org.springframework.beans.factory.annotation.Value; +import org.springframework.cache.annotation.CacheConfig; +import org.springframework.cache.annotation.CacheEvict; +import org.springframework.cache.annotation.Cacheable; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Propagation; import org.springframework.transaction.annotation.Transactional; import java.io.File; -import java.util.Optional; import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable; import org.springframework.web.multipart.MultipartFile; @@ -22,6 +26,7 @@ import org.springframework.web.multipart.MultipartFile; * @date 2019-09-05 */ @Service +@CacheConfig(cacheNames = "localStorage") @Transactional(propagation = Propagation.SUPPORTS, readOnly = true, rollbackFor = Exception.class) public class LocalStorageServiceImpl implements LocalStorageService { @@ -41,24 +46,28 @@ public class LocalStorageServiceImpl implements LocalStorageService { } @Override + @Cacheable public Object queryAll(LocalStorageQueryCriteria criteria, Pageable pageable){ Page page = localStorageRepository.findAll((root, criteriaQuery, criteriaBuilder) -> QueryHelp.getPredicate(root,criteria,criteriaBuilder),pageable); return PageUtil.toPage(page.map(localStorageMapper::toDto)); } @Override + @Cacheable public Object queryAll(LocalStorageQueryCriteria criteria){ return localStorageMapper.toDto(localStorageRepository.findAll((root, criteriaQuery, criteriaBuilder) -> QueryHelp.getPredicate(root,criteria,criteriaBuilder))); } @Override - public LocalStorageDTO findById(Long id) { - Optional localStorage = localStorageRepository.findById(id); - ValidationUtil.isNull(localStorage,"LocalStorage","id",id); - return localStorageMapper.toDto(localStorage.get()); + @Cacheable(key = "#p0") + public LocalStorageDTO findById(Long id){ + LocalStorage localStorage = localStorageRepository.findById(id).orElseGet(LocalStorage::new); + ValidationUtil.isNull(localStorage.getId(),"LocalStorage","id",id); + return localStorageMapper.toDto(localStorage); } @Override + @CacheEvict(allEntries = true) @Transactional(rollbackFor = Exception.class) public LocalStorageDTO create(String name, MultipartFile multipartFile) { FileUtil.checkSize(maxSize, multipartFile.getSize()); @@ -67,6 +76,9 @@ public class LocalStorageServiceImpl implements LocalStorageService { // String type = FileUtil.getFileTypeByMimeType(suffix); String type = FileUtil.getFileType(suffix); File file = FileUtil.upload(multipartFile, path + type + File.separator); + if(ObjectUtil.isNull(file)){ + throw new BadRequestException("上传失败"); + } try { name = StringUtils.isBlank(name) ? FileUtil.getFileNameNoEx(multipartFile.getOriginalFilename()) : name; LocalStorage localStorage = new LocalStorage( @@ -86,28 +98,30 @@ public class LocalStorageServiceImpl implements LocalStorageService { } @Override + @CacheEvict(allEntries = true) @Transactional(rollbackFor = Exception.class) public void update(LocalStorage resources) { - Optional optionalLocalStorage = localStorageRepository.findById(resources.getId()); - ValidationUtil.isNull( optionalLocalStorage,"LocalStorage","id",resources.getId()); - LocalStorage localStorage = optionalLocalStorage.get(); + LocalStorage localStorage = localStorageRepository.findById(resources.getId()).orElseGet(LocalStorage::new); + ValidationUtil.isNull( localStorage.getId(),"LocalStorage","id",resources.getId()); localStorage.copy(resources); localStorageRepository.save(localStorage); } @Override + @CacheEvict(allEntries = true) @Transactional(rollbackFor = Exception.class) public void delete(Long id) { - LocalStorage storage = localStorageRepository.findById(id).get(); + LocalStorage storage = localStorageRepository.findById(id).orElseGet(LocalStorage::new); FileUtil.del(storage.getPath()); localStorageRepository.delete(storage); } @Override + @CacheEvict(allEntries = true) @Transactional(rollbackFor = Exception.class) public void deleteAll(Long[] ids) { for (Long id : ids) { - LocalStorage storage = localStorageRepository.findById(id).get(); + LocalStorage storage = localStorageRepository.findById(id).orElseGet(LocalStorage::new); FileUtil.del(storage.getPath()); localStorageRepository.delete(storage); } 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 185ff14..f6b56c3 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 @@ -11,7 +11,9 @@ import me.zhengjie.repository.PictureRepository; import me.zhengjie.service.PictureService; import me.zhengjie.service.dto.PictureQueryCriteria; import me.zhengjie.utils.*; -import org.springframework.beans.factory.annotation.Autowired; +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.stereotype.Service; import org.springframework.transaction.annotation.Propagation; @@ -19,7 +21,6 @@ import org.springframework.transaction.annotation.Transactional; import org.springframework.web.multipart.MultipartFile; import java.io.File; import java.util.HashMap; -import java.util.Optional; /** * @author Zheng Jie @@ -27,6 +28,7 @@ import java.util.Optional; */ @Slf4j @Service(value = "pictureService") +@CacheConfig(cacheNames = "picture") @Transactional(propagation = Propagation.SUPPORTS, readOnly = true, rollbackFor = Exception.class) public class PictureServiceImpl implements PictureService { @@ -43,28 +45,32 @@ public class PictureServiceImpl implements PictureService { } @Override + @Cacheable public Object queryAll(PictureQueryCriteria criteria, Pageable pageable){ return PageUtil.toPage(pictureRepository.findAll((root, criteriaQuery, criteriaBuilder) -> QueryHelp.getPredicate(root,criteria,criteriaBuilder),pageable)); } @Override + @CacheEvict(allEntries = true) @Transactional(rollbackFor = Throwable.class) public Picture upload(MultipartFile multipartFile, String username) { File file = FileUtil.toFile(multipartFile); + // 验证是否重复上传 + Picture picture = pictureRepository.findByMd5Code(FileUtil.getMD5(file)); + if(picture != null){ + return picture; + } HashMap paramMap = new HashMap<>(1); - paramMap.put("smfile", file); String result= HttpUtil.post(ElAdminConstant.Url.SM_MS_URL, paramMap); - JSONObject jsonObject = JSONUtil.parseObj(result); - Picture picture = null; if(!jsonObject.get(CODE).toString().equals(SUCCESS)){ throw new BadRequestException(TranslatorUtil.translate(jsonObject.get(MSG).toString())); } - //转成实体类 picture = JSON.parseObject(jsonObject.get("data").toString(), Picture.class); picture.setSize(FileUtil.getSize(Integer.parseInt(picture.getSize()))); picture.setUsername(username); + picture.setMd5Code(FileUtil.getMD5(file)); picture.setFilename(FileUtil.getFileNameNoEx(multipartFile.getOriginalFilename())+"."+FileUtil.getExtensionName(multipartFile.getOriginalFilename())); pictureRepository.save(picture); //删除临时文件 @@ -74,17 +80,19 @@ public class PictureServiceImpl implements PictureService { } @Override + @Cacheable(key = "#p0") public Picture findById(Long id) { - Optional picture = pictureRepository.findById(id); - ValidationUtil.isNull(picture,"Picture","id",id); - return picture.get(); + Picture picture = pictureRepository.findById(id).orElseGet(Picture::new); + ValidationUtil.isNull(picture.getId(),"Picture","id",id); + return picture; } @Override + @CacheEvict(allEntries = true) @Transactional(rollbackFor = Exception.class) public void delete(Picture picture) { try { - String result= HttpUtil.get(picture.getDelete()); + HttpUtil.get(picture.getDelete()); pictureRepository.delete(picture); } catch(Exception e){ pictureRepository.delete(picture); @@ -93,6 +101,7 @@ public class PictureServiceImpl implements PictureService { } @Override + @CacheEvict(allEntries = true) 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 505dfc3..8731a8f 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 @@ -21,15 +21,16 @@ import me.zhengjie.utils.PageUtil; import me.zhengjie.utils.QiNiuUtil; import me.zhengjie.utils.QueryHelp; import me.zhengjie.utils.ValidationUtil; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; +import org.springframework.cache.annotation.CacheConfig; +import org.springframework.cache.annotation.CacheEvict; +import org.springframework.cache.annotation.CachePut; +import org.springframework.cache.annotation.Cacheable; 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 java.util.Map; import java.util.Optional; /** @@ -37,6 +38,7 @@ import java.util.Optional; * @date 2018-12-31 */ @Service +@CacheConfig(cacheNames = "qiNiu") @Transactional(propagation = Propagation.SUPPORTS, readOnly = true, rollbackFor = Exception.class) public class QiNiuServiceImpl implements QiNiuService { @@ -53,17 +55,20 @@ public class QiNiuServiceImpl implements QiNiuService { private Long maxSize; @Override + @Cacheable public Object queryAll(QiniuQueryCriteria criteria, Pageable pageable){ return PageUtil.toPage(qiniuContentRepository.findAll((root, criteriaQuery, criteriaBuilder) -> QueryHelp.getPredicate(root,criteria,criteriaBuilder),pageable)); } @Override + @Cacheable(key = "'1'") public QiniuConfig find() { Optional qiniuConfig = qiNiuConfigRepository.findById(1L); return qiniuConfig.orElseGet(QiniuConfig::new); } @Override + @CachePut(cacheNames = "qiNiuConfig", key = "'1'") @Transactional(rollbackFor = Exception.class) public QiniuConfig update(QiniuConfig qiniuConfig) { if (!(qiniuConfig.getHost().toLowerCase().startsWith("http://")||qiniuConfig.getHost().toLowerCase().startsWith("https://"))) { @@ -74,6 +79,7 @@ public class QiNiuServiceImpl implements QiNiuService { } @Override + @CacheEvict(allEntries = true) @Transactional(rollbackFor = Exception.class) public QiniuContent upload(MultipartFile file, QiniuConfig qiniuConfig) { FileUtil.checkSize(maxSize, file.getSize()); @@ -109,15 +115,17 @@ public class QiNiuServiceImpl implements QiNiuService { } @Override + @Cacheable public QiniuContent findByContentId(Long id) { - Optional qiniuContent = qiniuContentRepository.findById(id); - ValidationUtil.isNull(qiniuContent,"QiniuContent", "id",id); - return qiniuContent.get(); + QiniuContent qiniuContent = qiniuContentRepository.findById(id).orElseGet(QiniuContent::new); + ValidationUtil.isNull(qiniuContent.getId(),"QiniuContent", "id",id); + return qiniuContent; } @Override + @Cacheable public String download(QiniuContent content,QiniuConfig config){ - String finalUrl = null; + String finalUrl; String TYPE = "公开"; if(TYPE.equals(content.getType())){ finalUrl = content.getUrl(); @@ -131,6 +139,7 @@ public class QiNiuServiceImpl implements QiNiuService { } @Override + @CacheEvict(allEntries = true) @Transactional(rollbackFor = Exception.class) public void delete(QiniuContent content, QiniuConfig config) { //构造一个带指定Zone对象的配置类 @@ -146,6 +155,7 @@ public class QiNiuServiceImpl implements QiNiuService { } @Override + @CacheEvict(allEntries = true) @Transactional(rollbackFor = Exception.class) public void synchronize(QiniuConfig config) { if(config.getId() == null){ @@ -165,7 +175,7 @@ public class QiNiuServiceImpl implements QiNiuService { BucketManager.FileListIterator fileListIterator = bucketManager.createFileListIterator(config.getBucket(), prefix, limit, delimiter); while (fileListIterator.hasNext()) { //处理获取的file list结果 - QiniuContent qiniuContent = null; + QiniuContent qiniuContent; FileInfo[] items = fileListIterator.next(); for (FileInfo item : items) { if(qiniuContentRepository.findByKey(FileUtil.getFileNameNoEx(item.key)) == null){ @@ -183,6 +193,7 @@ public class QiNiuServiceImpl implements QiNiuService { } @Override + @CacheEvict(allEntries = true) public void deleteAll(Long[] ids, QiniuConfig config) { for (Long id : ids) { delete(findByContentId(id), config); @@ -190,6 +201,7 @@ public class QiNiuServiceImpl implements QiNiuService { } @Override + @CacheEvict(allEntries = true) @Transactional(rollbackFor = Exception.class) public void update(String type) { qiNiuConfigRepository.update(type); diff --git a/eladmin-tools/src/main/java/me/zhengjie/service/impl/VerificationCodeServiceImpl.java b/eladmin-tools/src/main/java/me/zhengjie/service/impl/VerificationCodeServiceImpl.java index 0dda045..1b69d4d 100644 --- a/eladmin-tools/src/main/java/me/zhengjie/service/impl/VerificationCodeServiceImpl.java +++ b/eladmin-tools/src/main/java/me/zhengjie/service/impl/VerificationCodeServiceImpl.java @@ -11,12 +11,10 @@ import me.zhengjie.domain.vo.EmailVo; import me.zhengjie.exception.BadRequestException; import me.zhengjie.repository.VerificationCodeRepository; import me.zhengjie.service.VerificationCodeService; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Propagation; import org.springframework.transaction.annotation.Transactional; -import java.util.Arrays; import java.util.Collections; import java.util.concurrent.*; @@ -28,17 +26,20 @@ import java.util.concurrent.*; @Transactional(propagation = Propagation.SUPPORTS, readOnly = true, rollbackFor = Exception.class) public class VerificationCodeServiceImpl implements VerificationCodeService { - @Autowired - private VerificationCodeRepository verificationCodeRepository; + private final VerificationCodeRepository verificationCodeRepository; @Value("${code.expiration}") private Integer expiration; + public VerificationCodeServiceImpl(VerificationCodeRepository verificationCodeRepository) { + this.verificationCodeRepository = verificationCodeRepository; + } + @Override @Transactional(rollbackFor = Exception.class) public EmailVo sendEmail(VerificationCode code) { - EmailVo emailVo = null; - String content = ""; + EmailVo emailVo; + String content; VerificationCode verificationCode = verificationCodeRepository.findByScenesAndTypeAndValueAndStatusIsTrue(code.getScenes(),code.getType(),code.getValue()); // 如果不存在有效的验证码,就创建一个新的 TemplateEngine engine = TemplateUtil.createEngine(new TemplateConfig("template", TemplateConfig.ResourceMode.CLASSPATH)); diff --git a/eladmin-tools/src/main/java/me/zhengjie/utils/AliPayStatusEnum.java b/eladmin-tools/src/main/java/me/zhengjie/utils/AliPayStatusEnum.java index 39713cd..9bda06e 100644 --- a/eladmin-tools/src/main/java/me/zhengjie/utils/AliPayStatusEnum.java +++ b/eladmin-tools/src/main/java/me/zhengjie/utils/AliPayStatusEnum.java @@ -7,24 +7,12 @@ package me.zhengjie.utils; */ public enum AliPayStatusEnum { - /** - * 交易成功 - */ FINISHED("交易成功", "TRADE_FINISHED"), - /** - * 支付成功 - */ SUCCESS("支付成功", "TRADE_SUCCESS"), - /** - * 交易创建 - */ BUYER_PAY("交易创建", "WAIT_BUYER_PAY"), - /** - * 交易关闭 - */ CLOSED("交易关闭", "TRADE_CLOSED"); private String value; diff --git a/eladmin-tools/src/main/java/me/zhengjie/utils/AlipayUtils.java b/eladmin-tools/src/main/java/me/zhengjie/utils/AlipayUtils.java index 5b7d6db..bf38d29 100644 --- a/eladmin-tools/src/main/java/me/zhengjie/utils/AlipayUtils.java +++ b/eladmin-tools/src/main/java/me/zhengjie/utils/AlipayUtils.java @@ -1,6 +1,5 @@ package me.zhengjie.utils; -import cn.hutool.core.util.StrUtil; import com.alipay.api.AlipayApiException; import com.alipay.api.internal.util.AlipaySignature; import me.zhengjie.domain.AlipayConfig; @@ -9,7 +8,6 @@ import javax.servlet.http.HttpServletRequest; import java.text.SimpleDateFormat; import java.util.Date; import java.util.HashMap; -import java.util.Iterator; import java.util.Map; /** @@ -22,6 +20,7 @@ public class AlipayUtils { /** * 生成订单号 + * @return String */ public String getOrderCode() { SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); @@ -39,6 +38,9 @@ public class AlipayUtils { /** * 校验签名 + * @param request HttpServletRequest + * @param alipay 阿里云配置 + * @return boolean */ public boolean rsaCheck(HttpServletRequest request, AlipayConfig alipay){ @@ -65,8 +67,4 @@ public class AlipayUtils { return false; } } - - public boolean isEmpty(String str){ - return StrUtil.isEmpty(str); - } } diff --git a/eladmin-tools/src/main/java/me/zhengjie/utils/QiNiuUtil.java b/eladmin-tools/src/main/java/me/zhengjie/utils/QiNiuUtil.java index 8ae059b..3759e4a 100644 --- a/eladmin-tools/src/main/java/me/zhengjie/utils/QiNiuUtil.java +++ b/eladmin-tools/src/main/java/me/zhengjie/utils/QiNiuUtil.java @@ -21,6 +21,8 @@ public class QiNiuUtil { /** * 得到机房的对应关系 + * @param zone 机房名称 + * @return Region */ public static Region getRegion(String zone){ @@ -40,6 +42,8 @@ public class QiNiuUtil { /** * 默认不指定key的情况下,以文件内容的hash值作为文件名 + * @param file 文件名 + * @return String */ public static String getKey(String file){ SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss"); -- GitLab