From d2f081758cedd5d2507690dac4cd2b42e5c46638 Mon Sep 17 00:00:00 2001 From: Parker Date: Sun, 13 Dec 2020 00:34:48 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AF=BC=E5=87=BAExcel?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../opsli/api/base/warpper/ApiWrapper.java | 2 + .../org/opsli/api/utils/ValidationUtil.java | 2 +- .../api/web/gentest/user/TestUserRestApi.java | 10 +-- .../api/web/system/area/SysAreaRestApi.java | 10 +-- .../opsli/api/web/system/dict/DictApi.java | 10 +-- .../api/web/system/dict/DictDetailApi.java | 10 +-- .../opsli/api/web/system/menu/MenuApi.java | 10 +-- .../api/web/system/org/SysOrgRestApi.java | 10 +-- .../opsli/api/web/system/role/RoleApi.java | 10 +-- .../api/web/system/tenant/TenantApi.java | 10 +-- .../opsli/api/web/system/user/UserApi.java | 10 +-- .../java/org/opsli/api/web/test/TestApi.java | 10 +-- .../org/opsli/api/web/test/TestRestApi.java | 10 +-- .../wrapper/gentest/user/TestUserModel.java | 2 +- .../wrapper/system/dict/DictDetailModel.java | 2 +- .../api/wrapper/system/dict/DictModel.java | 2 +- .../api/wrapper/system/role/RoleModel.java | 2 +- .../wrapper/system/tenant/TenantModel.java | 2 +- .../wrapper/system/user/UserAndOrgModel.java | 2 +- .../api/wrapper/system/user/UserModel.java | 2 +- .../annotation/RequiresPermissionsCus.java | 19 ++++ .../common/constants/MyBatisConstants.java | 8 +- .../base/concroller/BaseRestController.java | 43 +++++++-- .../java/org/opsli/core/conf/ShiroConfig.java | 16 +++- .../security/shiro/realm/OAuth2Realm.java | 90 ++++++++++++++++++- .../tpl/backend/api/TemplateRestApi.html | 10 +-- .../backend/web/TemplateRestController.html | 32 ++++--- .../area/web/SysAreaRestController.java | 24 +++-- .../modulars/system/dict/entity/SysDict.java | 2 +- .../system/dict/entity/SysDictDetail.java | 2 +- .../dict/web/DictDetailRestController.java | 31 ++++--- .../system/dict/web/DictRestController.java | 31 ++++--- .../system/login/web/LoginRestController.java | 4 +- .../system/menu/web/MenuRestController.java | 23 +++-- .../system/org/mapper/xml/SysOrgMapper.xml | 12 --- .../system/org/web/SysOrgRestController.java | 23 +++-- .../modulars/system/role/entity/SysRole.java | 2 +- .../role/web/RoleMenuRefRestController.java | 4 +- .../system/role/web/RoleRestController.java | 31 ++++--- .../system/tenant/entity/SysTenant.java | 2 +- .../tenant/web/TenantRestController.java | 25 ++++-- .../system/user/web/UserRestController.java | 23 +++-- .../gentest/user/entity/TestUser.java | 2 +- .../user/web/TestUserRestController.java | 26 +++--- .../modulars/test/web/TestRestController.java | 25 ++++-- .../test/web/TestRestRestController.java | 18 ++-- 46 files changed, 439 insertions(+), 217 deletions(-) create mode 100644 opsli-base-support/opsli-common/src/main/java/org/opsli/common/annotation/RequiresPermissionsCus.java diff --git a/opsli-api/src/main/java/org/opsli/api/base/warpper/ApiWrapper.java b/opsli-api/src/main/java/org/opsli/api/base/warpper/ApiWrapper.java index 23c3096b..a61a7318 100644 --- a/opsli-api/src/main/java/org/opsli/api/base/warpper/ApiWrapper.java +++ b/opsli-api/src/main/java/org/opsli/api/base/warpper/ApiWrapper.java @@ -110,10 +110,12 @@ public abstract class ApiWrapper implements Serializable { /** 是否是内部Api调用 */ @JsonIgnore @TableField(exist = false) + @ExcelIgnore private Boolean izApi = false; /** 是否 手动操控 (如果为true 则可以手动指定创建人和修改人 如果为空则默认) */ @JsonIgnore @TableField(exist = false) + @ExcelIgnore private Boolean izManual = false; } diff --git a/opsli-api/src/main/java/org/opsli/api/utils/ValidationUtil.java b/opsli-api/src/main/java/org/opsli/api/utils/ValidationUtil.java index a46841aa..c5adc658 100644 --- a/opsli-api/src/main/java/org/opsli/api/utils/ValidationUtil.java +++ b/opsli-api/src/main/java/org/opsli/api/utils/ValidationUtil.java @@ -388,7 +388,7 @@ public final class ValidationUtil { dictModel.setTypeCode("asdsa"); dictModel.setTypeName("阿哈哈哈哈"); dictModel.setRemark("测试11232131231231223123"); - dictModel.setIzLock('1'); + dictModel.setIzLock("1"); ValidationUtil.verify(dictModel); } diff --git a/opsli-api/src/main/java/org/opsli/api/web/gentest/user/TestUserRestApi.java b/opsli-api/src/main/java/org/opsli/api/web/gentest/user/TestUserRestApi.java index 95615991..557f17c6 100755 --- a/opsli-api/src/main/java/org/opsli/api/web/gentest/user/TestUserRestApi.java +++ b/opsli-api/src/main/java/org/opsli/api/web/gentest/user/TestUserRestApi.java @@ -107,22 +107,22 @@ public interface TestUserRestApi { * @return ResultVo */ @GetMapping("/exportExcel") - ResultVo exportExcel(HttpServletRequest request, HttpServletResponse response); + void exportExcel(HttpServletRequest request, HttpServletResponse response); /** * 某系统用户 Excel 导入 * @param request 文件流 request * @return ResultVo */ - @GetMapping("/exportImport") - ResultVo excelImport(MultipartHttpServletRequest request); + @GetMapping("/importExcel") + ResultVo importExcel(MultipartHttpServletRequest request); /** * 某系统用户 Excel 下载导入模版 * @param response response * @return ResultVo */ - @GetMapping("/exportImport/template") - ResultVo importTemplate(HttpServletResponse response); + @GetMapping("/importExcel/template") + void importTemplate(HttpServletResponse response); } diff --git a/opsli-api/src/main/java/org/opsli/api/web/system/area/SysAreaRestApi.java b/opsli-api/src/main/java/org/opsli/api/web/system/area/SysAreaRestApi.java index fe3eea42..f0ec749d 100755 --- a/opsli-api/src/main/java/org/opsli/api/web/system/area/SysAreaRestApi.java +++ b/opsli-api/src/main/java/org/opsli/api/web/system/area/SysAreaRestApi.java @@ -100,22 +100,22 @@ public interface SysAreaRestApi { * @return ResultVo */ @GetMapping("/exportExcel") - ResultVo exportExcel(HttpServletRequest request, HttpServletResponse response); + void exportExcel(HttpServletRequest request, HttpServletResponse response); /** * 组织机构表 Excel 导入 * @param request 文件流 request * @return ResultVo */ - @GetMapping("/exportImport") - ResultVo excelImport(MultipartHttpServletRequest request); + @GetMapping("/importExcel") + ResultVo importExcel(MultipartHttpServletRequest request); /** * 组织机构表 Excel 下载导入模版 * @param response response * @return ResultVo */ - @GetMapping("/exportImport/template") - ResultVo importTemplate(HttpServletResponse response); + @GetMapping("/importExcel/template") + void importTemplate(HttpServletResponse response); } diff --git a/opsli-api/src/main/java/org/opsli/api/web/system/dict/DictApi.java b/opsli-api/src/main/java/org/opsli/api/web/system/dict/DictApi.java index c8138606..d3d3c1c9 100644 --- a/opsli-api/src/main/java/org/opsli/api/web/system/dict/DictApi.java +++ b/opsli-api/src/main/java/org/opsli/api/web/system/dict/DictApi.java @@ -107,23 +107,23 @@ public interface DictApi { * @return ResultVo */ @GetMapping("/exportExcel") - ResultVo exportExcel(HttpServletRequest request, HttpServletResponse response); + void exportExcel(HttpServletRequest request, HttpServletResponse response); /** * 数据字典 Excel 导入 * @param request 文件流 request * @return ResultVo */ - @GetMapping("/exportImport") - ResultVo excelImport(MultipartHttpServletRequest request); + @GetMapping("/importExcel") + ResultVo importExcel(MultipartHttpServletRequest request); /** * 数据字典 Excel 下载导入模版 * @param response response * @return ResultVo */ - @GetMapping("/exportImport/template") - ResultVo importTemplate(HttpServletResponse response); + @GetMapping("/importExcel/template") + void importTemplate(HttpServletResponse response); /** diff --git a/opsli-api/src/main/java/org/opsli/api/web/system/dict/DictDetailApi.java b/opsli-api/src/main/java/org/opsli/api/web/system/dict/DictDetailApi.java index 854efa76..3a919e41 100644 --- a/opsli-api/src/main/java/org/opsli/api/web/system/dict/DictDetailApi.java +++ b/opsli-api/src/main/java/org/opsli/api/web/system/dict/DictDetailApi.java @@ -107,23 +107,23 @@ public interface DictDetailApi { * @return ResultVo */ @GetMapping("/exportExcel") - ResultVo exportExcel(HttpServletRequest request, HttpServletResponse response); + void exportExcel(HttpServletRequest request, HttpServletResponse response); /** * 数据字典 Excel 导入 * @param request 文件流 request * @return ResultVo */ - @GetMapping("/exportImport") - ResultVo excelImport(MultipartHttpServletRequest request); + @GetMapping("/importExcel") + ResultVo importExcel(MultipartHttpServletRequest request); /** * 数据字典 Excel 下载导入模版 * @param response response * @return ResultVo */ - @GetMapping("/exportImport/template") - ResultVo importTemplate(HttpServletResponse response); + @GetMapping("/importExcel/template") + void importTemplate(HttpServletResponse response); // ================================ diff --git a/opsli-api/src/main/java/org/opsli/api/web/system/menu/MenuApi.java b/opsli-api/src/main/java/org/opsli/api/web/system/menu/MenuApi.java index 06a0b484..2d0245d3 100644 --- a/opsli-api/src/main/java/org/opsli/api/web/system/menu/MenuApi.java +++ b/opsli-api/src/main/java/org/opsli/api/web/system/menu/MenuApi.java @@ -139,23 +139,23 @@ public interface MenuApi { * @return ResultVo */ @GetMapping("/exportExcel") - ResultVo exportExcel(HttpServletRequest request, HttpServletResponse response); + void exportExcel(HttpServletRequest request, HttpServletResponse response); /** * 菜单 Excel 导入 * @param request 文件流 request * @return ResultVo */ - @GetMapping("/exportImport") - ResultVo excelImport(MultipartHttpServletRequest request); + @GetMapping("/importExcel") + ResultVo importExcel(MultipartHttpServletRequest request); /** * 菜单 Excel 下载导入模版 * @param response response * @return ResultVo */ - @GetMapping("/exportImport/template") - ResultVo importTemplate(HttpServletResponse response); + @GetMapping("/importExcel/template") + void importTemplate(HttpServletResponse response); diff --git a/opsli-api/src/main/java/org/opsli/api/web/system/org/SysOrgRestApi.java b/opsli-api/src/main/java/org/opsli/api/web/system/org/SysOrgRestApi.java index 7c4ea5c3..b58fe499 100755 --- a/opsli-api/src/main/java/org/opsli/api/web/system/org/SysOrgRestApi.java +++ b/opsli-api/src/main/java/org/opsli/api/web/system/org/SysOrgRestApi.java @@ -113,22 +113,22 @@ public interface SysOrgRestApi { * @return ResultVo */ @GetMapping("/exportExcel") - ResultVo exportExcel(HttpServletRequest request, HttpServletResponse response); + void exportExcel(HttpServletRequest request, HttpServletResponse response); /** * 组织机构表 Excel 导入 * @param request 文件流 request * @return ResultVo */ - @GetMapping("/exportImport") - ResultVo excelImport(MultipartHttpServletRequest request); + @GetMapping("/importExcel") + ResultVo importExcel(MultipartHttpServletRequest request); /** * 组织机构表 Excel 下载导入模版 * @param response response * @return ResultVo */ - @GetMapping("/exportImport/template") - ResultVo importTemplate(HttpServletResponse response); + @GetMapping("/importExcel/template") + void importTemplate(HttpServletResponse response); } diff --git a/opsli-api/src/main/java/org/opsli/api/web/system/role/RoleApi.java b/opsli-api/src/main/java/org/opsli/api/web/system/role/RoleApi.java index 655b888e..ecc2fc7a 100644 --- a/opsli-api/src/main/java/org/opsli/api/web/system/role/RoleApi.java +++ b/opsli-api/src/main/java/org/opsli/api/web/system/role/RoleApi.java @@ -107,22 +107,22 @@ public interface RoleApi { * @return ResultVo */ @GetMapping("/exportExcel") - ResultVo exportExcel(HttpServletRequest request, HttpServletResponse response); + void exportExcel(HttpServletRequest request, HttpServletResponse response); /** * 角色 Excel 导入 * @param request 文件流 request * @return ResultVo */ - @GetMapping("/exportImport") - ResultVo excelImport(MultipartHttpServletRequest request); + @GetMapping("/importExcel") + ResultVo importExcel(MultipartHttpServletRequest request); /** * 角色 Excel 下载导入模版 * @param response response * @return ResultVo */ - @GetMapping("/exportImport/template") - ResultVo importTemplate(HttpServletResponse response); + @GetMapping("/importExcel/template") + void importTemplate(HttpServletResponse response); } diff --git a/opsli-api/src/main/java/org/opsli/api/web/system/tenant/TenantApi.java b/opsli-api/src/main/java/org/opsli/api/web/system/tenant/TenantApi.java index 915c9ff9..65038d92 100644 --- a/opsli-api/src/main/java/org/opsli/api/web/system/tenant/TenantApi.java +++ b/opsli-api/src/main/java/org/opsli/api/web/system/tenant/TenantApi.java @@ -107,22 +107,22 @@ public interface TenantApi { * @return ResultVo */ @GetMapping("/exportExcel") - ResultVo exportExcel(HttpServletRequest request, HttpServletResponse response); + void exportExcel(HttpServletRequest request, HttpServletResponse response); /** * 租户 Excel 导入 * @param request 文件流 request * @return ResultVo */ - @GetMapping("/exportImport") - ResultVo excelImport(MultipartHttpServletRequest request); + @GetMapping("/importExcel") + ResultVo importExcel(MultipartHttpServletRequest request); /** * 租户 Excel 下载导入模版 * @param response response * @return ResultVo */ - @GetMapping("/exportImport/template") - ResultVo importTemplate(HttpServletResponse response); + @GetMapping("/importExcel/template") + void importTemplate(HttpServletResponse response); } diff --git a/opsli-api/src/main/java/org/opsli/api/web/system/user/UserApi.java b/opsli-api/src/main/java/org/opsli/api/web/system/user/UserApi.java index 32032334..c15c838b 100644 --- a/opsli-api/src/main/java/org/opsli/api/web/system/user/UserApi.java +++ b/opsli-api/src/main/java/org/opsli/api/web/system/user/UserApi.java @@ -174,15 +174,15 @@ public interface UserApi { * @return ResultVo */ @GetMapping("/exportExcel") - ResultVo exportExcel(HttpServletRequest request, HttpServletResponse response); + void exportExcel(HttpServletRequest request, HttpServletResponse response); /** * 用户信息 Excel 导入 * @param request 文件流 request * @return ResultVo */ - @GetMapping("/exportImport") - ResultVo excelImport(MultipartHttpServletRequest request); + @GetMapping("/importExcel") + ResultVo importExcel(MultipartHttpServletRequest request); /** @@ -190,8 +190,8 @@ public interface UserApi { * @param response response * @return ResultVo */ - @GetMapping("/exportImport/template") - ResultVo importTemplate(HttpServletResponse response); + @GetMapping("/importExcel/template") + void importTemplate(HttpServletResponse response); /** diff --git a/opsli-api/src/main/java/org/opsli/api/web/test/TestApi.java b/opsli-api/src/main/java/org/opsli/api/web/test/TestApi.java index efb619c9..816bc52b 100644 --- a/opsli-api/src/main/java/org/opsli/api/web/test/TestApi.java +++ b/opsli-api/src/main/java/org/opsli/api/web/test/TestApi.java @@ -128,20 +128,20 @@ public interface TestApi { * @return */ @GetMapping("/exportExcel") - ResultVo exportExcel(HttpServletRequest request, HttpServletResponse response); + void exportExcel(HttpServletRequest request, HttpServletResponse response); /** * Excel 导入 * @return */ - @GetMapping("/exportImport") - ResultVo excelImport(MultipartHttpServletRequest request); + @GetMapping("/importExcel") + ResultVo importExcel(MultipartHttpServletRequest request); /** * Excel 下载导入模版 * @return */ - @GetMapping("/exportImport/template") - ResultVo importTemplate(HttpServletResponse response); + @GetMapping("/importExcel/template") + void importTemplate(HttpServletResponse response); } diff --git a/opsli-api/src/main/java/org/opsli/api/web/test/TestRestApi.java b/opsli-api/src/main/java/org/opsli/api/web/test/TestRestApi.java index 90ec4f54..01c89cae 100644 --- a/opsli-api/src/main/java/org/opsli/api/web/test/TestRestApi.java +++ b/opsli-api/src/main/java/org/opsli/api/web/test/TestRestApi.java @@ -107,22 +107,22 @@ public interface TestRestApi { * @return ResultVo */ @GetMapping("/exportExcel") - ResultVo exportExcel(HttpServletRequest request, HttpServletResponse response); + void exportExcel(HttpServletRequest request, HttpServletResponse response); /** * 测试 Excel 导入 * @param request 文件流 request * @return ResultVo */ - @GetMapping("/exportImport") - ResultVo excelImport(MultipartHttpServletRequest request); + @GetMapping("/importExcel") + ResultVo importExcel(MultipartHttpServletRequest request); /** * 测试 Excel 下载导入模版 * @param response response * @return ResultVo */ - @GetMapping("/exportImport/template") - ResultVo importTemplate(HttpServletResponse response); + @GetMapping("/importExcel/template") + void importTemplate(HttpServletResponse response); } diff --git a/opsli-api/src/main/java/org/opsli/api/wrapper/gentest/user/TestUserModel.java b/opsli-api/src/main/java/org/opsli/api/wrapper/gentest/user/TestUserModel.java index f6692eec..da30ed33 100755 --- a/opsli-api/src/main/java/org/opsli/api/wrapper/gentest/user/TestUserModel.java +++ b/opsli-api/src/main/java/org/opsli/api/wrapper/gentest/user/TestUserModel.java @@ -84,7 +84,7 @@ public class TestUserModel extends ApiWrapper { // 验证器 @ValidationArgs({ValiArgsType.IS_NOT_NULL, }) @ValidationArgsLenMax(1) - private Character izUsable; + private String izUsable; diff --git a/opsli-api/src/main/java/org/opsli/api/wrapper/system/dict/DictDetailModel.java b/opsli-api/src/main/java/org/opsli/api/wrapper/system/dict/DictDetailModel.java index f1c75993..5fef4ff0 100644 --- a/opsli-api/src/main/java/org/opsli/api/wrapper/system/dict/DictDetailModel.java +++ b/opsli-api/src/main/java/org/opsli/api/wrapper/system/dict/DictDetailModel.java @@ -77,7 +77,7 @@ public class DictDetailModel extends ApiWrapper { // 验证器 @ValidationArgs({ValiArgsType.IS_NOT_NULL}) @ValidationArgsLenMax(1) - private Character izLock; + private String izLock; /** 排序 */ @ApiModelProperty(value = "排序") diff --git a/opsli-api/src/main/java/org/opsli/api/wrapper/system/dict/DictModel.java b/opsli-api/src/main/java/org/opsli/api/wrapper/system/dict/DictModel.java index d86ab8d9..982d1452 100644 --- a/opsli-api/src/main/java/org/opsli/api/wrapper/system/dict/DictModel.java +++ b/opsli-api/src/main/java/org/opsli/api/wrapper/system/dict/DictModel.java @@ -63,7 +63,7 @@ public class DictModel extends ApiWrapper { // 验证器 @ValidationArgs(ValiArgsType.IS_NOT_NULL) @ValidationArgsLenMax(1) - private Character izLock; + private String izLock; /** 备注 */ @ApiModelProperty(value = "备注") diff --git a/opsli-api/src/main/java/org/opsli/api/wrapper/system/role/RoleModel.java b/opsli-api/src/main/java/org/opsli/api/wrapper/system/role/RoleModel.java index 0832b0d2..92afbfbb 100644 --- a/opsli-api/src/main/java/org/opsli/api/wrapper/system/role/RoleModel.java +++ b/opsli-api/src/main/java/org/opsli/api/wrapper/system/role/RoleModel.java @@ -64,7 +64,7 @@ public class RoleModel extends ApiWrapper { // 验证器 @ValidationArgs({ValiArgsType.IS_NOT_NULL}) @ValidationArgsLenMax(1) - private Character izLock; + private String izLock; /** 备注 */ @ApiModelProperty(value = "备注") diff --git a/opsli-api/src/main/java/org/opsli/api/wrapper/system/tenant/TenantModel.java b/opsli-api/src/main/java/org/opsli/api/wrapper/system/tenant/TenantModel.java index 19f87e3f..bd01c6cf 100644 --- a/opsli-api/src/main/java/org/opsli/api/wrapper/system/tenant/TenantModel.java +++ b/opsli-api/src/main/java/org/opsli/api/wrapper/system/tenant/TenantModel.java @@ -53,7 +53,7 @@ public class TenantModel extends ApiWrapper { // 验证器 @ValidationArgs({ValiArgsType.IS_NOT_NULL}) @ValidationArgsLenMax(1) - private Character izUsable; + private String izUsable; /** 备注 */ @ApiModelProperty(value = "备注") diff --git a/opsli-api/src/main/java/org/opsli/api/wrapper/system/user/UserAndOrgModel.java b/opsli-api/src/main/java/org/opsli/api/wrapper/system/user/UserAndOrgModel.java index 1f226f6e..09191a1c 100644 --- a/opsli-api/src/main/java/org/opsli/api/wrapper/system/user/UserAndOrgModel.java +++ b/opsli-api/src/main/java/org/opsli/api/wrapper/system/user/UserAndOrgModel.java @@ -66,7 +66,7 @@ public class UserAndOrgModel extends ApiWrapper { // 验证器 @ValidationArgs({ValiArgsType.IS_NOT_NULL}) @ValidationArgsLenMax(1) - private Character locked; + private String locked; /** 真实姓名 */ @ApiModelProperty(value = "真实姓名") diff --git a/opsli-api/src/main/java/org/opsli/api/wrapper/system/user/UserModel.java b/opsli-api/src/main/java/org/opsli/api/wrapper/system/user/UserModel.java index 710f5bc4..e5e70baa 100644 --- a/opsli-api/src/main/java/org/opsli/api/wrapper/system/user/UserModel.java +++ b/opsli-api/src/main/java/org/opsli/api/wrapper/system/user/UserModel.java @@ -66,7 +66,7 @@ public class UserModel extends ApiWrapper { // 验证器 @ValidationArgs({ValiArgsType.IS_NOT_NULL}) @ValidationArgsLenMax(1) - private Character locked; + private String locked; /** 真实姓名 */ @ApiModelProperty(value = "真实姓名") diff --git a/opsli-base-support/opsli-common/src/main/java/org/opsli/common/annotation/RequiresPermissionsCus.java b/opsli-base-support/opsli-common/src/main/java/org/opsli/common/annotation/RequiresPermissionsCus.java new file mode 100644 index 00000000..7614dddb --- /dev/null +++ b/opsli-base-support/opsli-common/src/main/java/org/opsli/common/annotation/RequiresPermissionsCus.java @@ -0,0 +1,19 @@ +package org.opsli.common.annotation; + +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +/** + * @author Parker + * + * 自定义权限验证 + */ +@Target({ElementType.TYPE, ElementType.METHOD}) +@Retention(RetentionPolicy.RUNTIME) +public @interface RequiresPermissionsCus { + + String[] value(); + +} diff --git a/opsli-base-support/opsli-common/src/main/java/org/opsli/common/constants/MyBatisConstants.java b/opsli-base-support/opsli-common/src/main/java/org/opsli/common/constants/MyBatisConstants.java index 8e6852c5..0e421baf 100644 --- a/opsli-base-support/opsli-common/src/main/java/org/opsli/common/constants/MyBatisConstants.java +++ b/opsli-base-support/opsli-common/src/main/java/org/opsli/common/constants/MyBatisConstants.java @@ -29,9 +29,9 @@ public final class MyBatisConstants { /** 逻辑删除值 */ - public static final char LOGIC_DELETE_VALUE; + public static final String LOGIC_DELETE_VALUE; /** 逻辑不删除值 */ - public static final char LOGIC_NOT_DELETE_VALUE; + public static final String LOGIC_NOT_DELETE_VALUE; /** ID */ @@ -56,8 +56,8 @@ public final class MyBatisConstants { static { Props props = new Props("application.yaml"); - LOGIC_DELETE_VALUE = props.getChar("mybatis-plus.global-config.db-config.logic-delete-value",'1'); - LOGIC_NOT_DELETE_VALUE = props.getChar("mybatis-plus.global-config.db-config.logic-not-delete-value",'0'); + LOGIC_DELETE_VALUE = props.getStr("mybatis-plus.global-config.db-config.logic-delete-value","1"); + LOGIC_NOT_DELETE_VALUE = props.getStr("mybatis-plus.global-config.db-config.logic-not-delete-value","0"); } private MyBatisConstants(){} diff --git a/opsli-base-support/opsli-core/src/main/java/org/opsli/core/base/concroller/BaseRestController.java b/opsli-base-support/opsli-core/src/main/java/org/opsli/core/base/concroller/BaseRestController.java index ccf66cb4..06b1ef65 100644 --- a/opsli-base-support/opsli-core/src/main/java/org/opsli/core/base/concroller/BaseRestController.java +++ b/opsli-base-support/opsli-core/src/main/java/org/opsli/core/base/concroller/BaseRestController.java @@ -29,14 +29,18 @@ import org.apache.commons.lang3.StringUtils; import org.opsli.api.base.result.ResultVo; import org.opsli.api.base.warpper.ApiWrapper; import org.opsli.api.wrapper.system.user.UserModel; +import org.opsli.common.annotation.RequiresPermissionsCus; import org.opsli.common.annotation.hotdata.EnableHotData; import org.opsli.common.exception.ServiceException; +import org.opsli.common.exception.TokenException; import org.opsli.common.msg.CommonMsg; import org.opsli.common.utils.WrapperUtil; import org.opsli.core.base.entity.BaseEntity; import org.opsli.core.base.service.interfaces.CrudServiceInterface; import org.opsli.core.cache.local.CacheUtil; import org.opsli.core.msg.CoreMsg; +import org.opsli.core.msg.TokenMsg; +import org.opsli.core.security.shiro.realm.OAuth2Realm; import org.opsli.core.utils.ExcelUtil; import org.opsli.core.utils.UserUtil; import org.opsli.plugins.excel.exception.ExcelPluginException; @@ -52,6 +56,7 @@ import org.springframework.web.multipart.MultipartHttpServletRequest; import javax.annotation.PostConstruct; import javax.servlet.http.HttpServletResponse; +import java.lang.reflect.Method; import java.lang.reflect.Type; import java.util.Iterator; import java.util.List; @@ -184,7 +189,7 @@ public abstract class BaseRestController excelImport(MultipartHttpServletRequest request){ + protected ResultVo importExcel(MultipartHttpServletRequest request){ // 计时器 TimeInterval timer = DateUtil.timer(); Iterator itr = request.getFileNames(); @@ -228,8 +233,8 @@ public abstract class BaseRestController importTemplate(String fileName, HttpServletResponse response){ - return this.excelExport(fileName + " 模版 ",null, response); + protected void importTemplate(String fileName, HttpServletResponse response, Method method){ + this.excelExport(fileName + " 模版 ",null, response, method); } /** @@ -238,7 +243,30 @@ public abstract class BaseRestController excelExport(String fileName, QueryWrapper queryWrapper, HttpServletResponse response){ + protected void excelExport(String fileName, QueryWrapper queryWrapper, HttpServletResponse response, + Method method){ + // 权限认证 + try { + if(method == null){ + // 无权访问该方法 + throw new TokenException(TokenMsg.EXCEPTION_NOT_AUTH); + + } + + // Token 认证 + OAuth2Realm.authToken(); + + RequiresPermissionsCus permissionsCus = method.getAnnotation(RequiresPermissionsCus.class); + if(permissionsCus != null){ + // 方法权限认证 + OAuth2Realm.authPerms(permissionsCus.value()); + } + }catch (TokenException e){ + // 推送错误信息 + OAuth2Realm.exceptionResponse(e.getMessage(), response); + return; + } + // 计时器 TimeInterval timer = DateUtil.timer(); String msgInfo = ""; @@ -269,7 +297,12 @@ public abstract class BaseRestController URL_EXCLUSION; + /** API前缀 */ + private static final String API_URL_PREFIX; static{ Props props = new Props("application.yaml"); URL_EXCLUSION = props.getList("opsli.token-auth.url-exclusion"); + API_URL_PREFIX = props.getStr("server.servlet.api.path.global-prefix",""); } /** @@ -85,18 +88,23 @@ public class ShiroConfig { } } + // 登录接口拦截 + filterMap.put("/sys/login", "anon"); + filterMap.put("/sys/slipCount", "anon"); + filterMap.put("/captcha.jpg", "anon"); + + // 导出Excel\模版 不做自动拦截 手动拦截 + filterMap.put(API_URL_PREFIX + "/**/exportExcel", "anon"); + filterMap.put(API_URL_PREFIX + "/**/importExcel/template", "anon"); + filterMap.put("/webjars/**", "anon"); filterMap.put("/druid/**", "anon"); filterMap.put("/app/**", "anon"); - filterMap.put("/sys/login", "anon"); - filterMap.put("/sys/slipCount", "anon"); filterMap.put("/swagger/**", "anon"); filterMap.put("/v2/api-docs", "anon"); filterMap.put("/doc.html", "anon"); filterMap.put("/swagger-ui.html", "anon"); filterMap.put("/swagger-resources/**", "anon"); - filterMap.put("/captcha.jpg", "anon"); - filterMap.put("/ueditor/**", "anon"); filterMap.put("/static/file/**", "anon"); filterMap.put("/**", "oauth2"); diff --git a/opsli-base-support/opsli-core/src/main/java/org/opsli/core/security/shiro/realm/OAuth2Realm.java b/opsli-base-support/opsli-core/src/main/java/org/opsli/core/security/shiro/realm/OAuth2Realm.java index c2ea4176..5c56f8f8 100644 --- a/opsli-base-support/opsli-core/src/main/java/org/opsli/core/security/shiro/realm/OAuth2Realm.java +++ b/opsli-base-support/opsli-core/src/main/java/org/opsli/core/security/shiro/realm/OAuth2Realm.java @@ -1,11 +1,15 @@ package org.opsli.core.security.shiro.realm; +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.io.IoUtil; +import lombok.extern.slf4j.Slf4j; import org.apache.shiro.authc.*; import org.apache.shiro.authz.AuthorizationInfo; import org.apache.shiro.authz.SimpleAuthorizationInfo; import org.apache.shiro.realm.AuthorizingRealm; import org.apache.shiro.subject.PrincipalCollection; import org.opsli.api.wrapper.system.user.UserModel; +import org.opsli.common.api.TokenThreadLocal; import org.opsli.common.exception.TokenException; import org.opsli.core.msg.TokenMsg; import org.opsli.core.security.shiro.token.OAuth2Token; @@ -13,6 +17,8 @@ import org.opsli.core.utils.UserTokenUtil; import org.opsli.core.utils.UserUtil; import org.springframework.stereotype.Component; +import javax.servlet.http.HttpServletResponse; +import java.io.PrintWriter; import java.util.List; /** @@ -23,10 +29,11 @@ import java.util.List; * @date 2017-05-20 14:00 */ @Component +@Slf4j public class OAuth2Realm extends AuthorizingRealm { /** 账号锁定状态 */ - private static final char LOCK_VAL = '1'; + public static final String LOCK_VAL = "1"; @Override public boolean supports(AuthenticationToken token) { @@ -85,4 +92,85 @@ public class OAuth2Realm extends AuthorizingRealm { return new SimpleAuthenticationInfo(user, accessToken, getName()); } + + + /** + * Token 认证 + */ + public static void authToken() + throws TokenException { + + String accessToken = TokenThreadLocal.get(); + + // 1. 校验 token 是否有效 + boolean verify = UserTokenUtil.verify(accessToken); + if(!verify){ + // token失效,请重新登录 + throw new TokenException( + TokenMsg.EXCEPTION_TOKEN_LOSE_EFFICACY); + } + + // 2. 查询 用户信息 + String userId = UserTokenUtil.getUserIdByToken(accessToken); + UserModel user = UserUtil.getUser(userId); + + // 3. 校验账户是否锁定 + if(user == null || user.getLocked().equals(OAuth2Realm.LOCK_VAL)){ + // 账号已被锁定,请联系管理员 + // token失效,请重新登录 + throw new TokenException( + TokenMsg.EXCEPTION_TOKEN_LOSE_EFFICACY); + } + } + + /** + * 按钮权限 认证 + */ + public static void authPerms(String[] currPerms) + throws TokenException { + if(currPerms == null ){ + return; + } + + String accessToken = TokenThreadLocal.get(); + + // 查询 用户信息 + String userId = UserTokenUtil.getUserIdByToken(accessToken); + + //用户权限列表 + List permsSet = UserUtil.getUserAllPermsByUserId(userId); + + if(CollUtil.isEmpty(permsSet)){ + // 无权访问该方法 + throw new TokenException( + TokenMsg.EXCEPTION_NOT_AUTH); + } + + for (String currPerm : currPerms) { + if(!permsSet.contains(currPerm)){ + // 无权访问该方法 + throw new TokenException( + TokenMsg.EXCEPTION_NOT_AUTH); + } + } + } + + + /** + * 返回异常值 + */ + public static void exceptionResponse(String msg, HttpServletResponse response){ + try { + response.setCharacterEncoding("utf-8"); + response.setContentType("text/html;charset=utf-8;"); + PrintWriter writer = response.getWriter(); + writer.write( + ""); + writer.flush(); + // 关闭流 + IoUtil.close(writer); + }catch (Exception e){ + log.error(e.getMessage(), e); + } + } } diff --git a/opsli-modulars/opsli-modulars-creater/src/main/resources/tpl/backend/api/TemplateRestApi.html b/opsli-modulars/opsli-modulars-creater/src/main/resources/tpl/backend/api/TemplateRestApi.html index 3d0b4c31..ac33ad02 100644 --- a/opsli-modulars/opsli-modulars-creater/src/main/resources/tpl/backend/api/TemplateRestApi.html +++ b/opsli-modulars/opsli-modulars-creater/src/main/resources/tpl/backend/api/TemplateRestApi.html @@ -119,22 +119,22 @@ public interface #(data.model.tableName)RestApi { * @return ResultVo */ @GetMapping("/exportExcel") - ResultVo exportExcel(HttpServletRequest request, HttpServletResponse response); + void exportExcel(HttpServletRequest request, HttpServletResponse response); /** * #(data.codeTitle) Excel 导入 * @param request 文件流 request * @return ResultVo */ - @GetMapping("/exportImport") - ResultVo excelImport(MultipartHttpServletRequest request); + @GetMapping("/importExcel") + ResultVo importExcel(MultipartHttpServletRequest request); /** * #(data.codeTitle) Excel 下载导入模版 * @param response response * @return ResultVo */ - @GetMapping("/exportImport/template") - ResultVo importTemplate(HttpServletResponse response); + @GetMapping("/importExcel/template") + void importTemplate(HttpServletResponse response); } diff --git a/opsli-modulars/opsli-modulars-creater/src/main/resources/tpl/backend/web/TemplateRestController.html b/opsli-modulars/opsli-modulars-creater/src/main/resources/tpl/backend/web/TemplateRestController.html index 0da36aaa..8382dfa6 100644 --- a/opsli-modulars/opsli-modulars-creater/src/main/resources/tpl/backend/web/TemplateRestController.html +++ b/opsli-modulars/opsli-modulars-creater/src/main/resources/tpl/backend/web/TemplateRestController.html @@ -19,9 +19,11 @@ package #(data.packageName+"."+data.moduleName+"."+data.subModuleName).web; package #(data.packageName+"."+data.moduleName).web; #end +import cn.hutool.core.util.ReflectUtil; import org.opsli.core.base.service.interfaces.CrudServiceInterface; import io.swagger.annotations.ApiOperation; import lombok.extern.slf4j.Slf4j; +import org.opsli.common.annotation.RequiresPermissionsCus; import org.apache.shiro.authz.annotation.RequiresPermissions; import #(apiPath).base.result.ResultVo; import org.opsli.common.annotation.ApiRestController; @@ -195,15 +197,17 @@ public class #(data.model.tableName)RestController extends BaseRestController<#( */ @ApiOperation(value = "导出Excel", notes = "导出Excel") #if(data.subModuleName != null && data.subModuleName != "") - @RequiresPermissions("#(data.moduleName.toLowerCase())_#(data.subModuleName.toLowerCase())_export") + @RequiresPermissionsCus("#(data.moduleName.toLowerCase())_#(data.subModuleName.toLowerCase())_export") #else - @RequiresPermissions("#(data.moduleName.toLowerCase())_export") + @RequiresPermissionsCus("#(data.moduleName.toLowerCase())_export") #end @EnableLog @Override - public ResultVo exportExcel(HttpServletRequest request, HttpServletResponse response) { + public void exportExcel(HttpServletRequest request, HttpServletResponse response) { + // 当前方法 + Method method = ReflectUtil.getMethodByName(this.getClass(), "exportExcel"); QueryBuilder<#(data.model.tableName)> queryBuilder = new WebQueryBuilder<>(#(data.model.tableName).class, request.getParameterMap()); - return super.excelExport(#(data.model.tableName)RestApi.TITLE, queryBuilder.build(), response); + super.excelExport(#(data.model.tableName)RestApi.TITLE, queryBuilder.build(), response, method); } /** @@ -213,14 +217,16 @@ public class #(data.model.tableName)RestController extends BaseRestController<#( */ @ApiOperation(value = "导入Excel", notes = "导入Excel") #if(data.subModuleName != null && data.subModuleName != "") - @RequiresPermissions("#(data.moduleName.toLowerCase())_#(data.subModuleName.toLowerCase())_import") + @RequiresPermissionsCus("#(data.moduleName.toLowerCase())_#(data.subModuleName.toLowerCase())_import") #else - @RequiresPermissions("#(data.moduleName.toLowerCase())_import") + @RequiresPermissionsCus("#(data.moduleName.toLowerCase())_import") #end @EnableLog @Override - public ResultVo excelImport(MultipartHttpServletRequest request) { - return super.excelImport(request); + public ResultVo importExcel(MultipartHttpServletRequest request) { + // 当前方法 + Method method = ReflectUtil.getMethodByName(this.getClass(), "importExcel"); + return super.excelImport(request, method); } /** @@ -230,13 +236,15 @@ public class #(data.model.tableName)RestController extends BaseRestController<#( */ @ApiOperation(value = "导出Excel模版", notes = "导出Excel模版") #if(data.subModuleName != null && data.subModuleName != "") - @RequiresPermissions("#(data.moduleName.toLowerCase())_#(data.subModuleName.toLowerCase())_import") + @RequiresPermissionsCus("#(data.moduleName.toLowerCase())_#(data.subModuleName.toLowerCase())_import") #else - @RequiresPermissions("#(data.moduleName.toLowerCase())_import") + @RequiresPermissionsCus("#(data.moduleName.toLowerCase())_import") #end @Override - public ResultVo importTemplate(HttpServletResponse response) { - return super.importTemplate(#(data.model.tableName)RestApi.TITLE, response); + public void importTemplate(HttpServletResponse response) { + // 当前方法 + Method method = ReflectUtil.getMethodByName(this.getClass(), "importTemplate"); + super.importTemplate(#(data.model.tableName)RestApi.TITLE, response, method); } } diff --git a/opsli-modulars/opsli-modulars-system/src/main/java/org/opsli/modulars/system/area/web/SysAreaRestController.java b/opsli-modulars/opsli-modulars-system/src/main/java/org/opsli/modulars/system/area/web/SysAreaRestController.java index 9c67d025..c7e06bc5 100755 --- a/opsli-modulars/opsli-modulars-system/src/main/java/org/opsli/modulars/system/area/web/SysAreaRestController.java +++ b/opsli-modulars/opsli-modulars-system/src/main/java/org/opsli/modulars/system/area/web/SysAreaRestController.java @@ -19,8 +19,8 @@ import cn.hutool.core.collection.CollUtil; import cn.hutool.core.lang.tree.Tree; import cn.hutool.core.lang.tree.TreeNodeConfig; import cn.hutool.core.lang.tree.TreeUtil; +import cn.hutool.core.util.ReflectUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.google.common.collect.Lists; import com.google.common.collect.Maps; import com.google.common.collect.Sets; import io.swagger.annotations.ApiOperation; @@ -32,6 +32,7 @@ import org.opsli.api.web.system.area.SysAreaRestApi; import org.opsli.api.wrapper.system.area.SysAreaModel; import org.opsli.common.annotation.ApiRestController; import org.opsli.common.annotation.EnableLog; +import org.opsli.common.annotation.RequiresPermissionsCus; import org.opsli.common.constants.MyBatisConstants; import org.opsli.common.utils.HumpUtil; import org.opsli.core.base.concroller.BaseRestController; @@ -45,6 +46,7 @@ import org.springframework.web.multipart.MultipartHttpServletRequest; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; +import java.lang.reflect.Method; import java.util.List; import java.util.Map; import java.util.Set; @@ -228,12 +230,14 @@ public class SysAreaRestController extends BaseRestController exportExcel(HttpServletRequest request, HttpServletResponse response) { + public void exportExcel(HttpServletRequest request, HttpServletResponse response) { + // 当前方法 + Method method = ReflectUtil.getMethodByName(this.getClass(), "exportExcel"); QueryBuilder queryBuilder = new WebQueryBuilder<>(SysArea.class, request.getParameterMap()); - return super.excelExport(SysAreaRestApi.TITLE, queryBuilder.build(), response); + super.excelExport(SysAreaRestApi.TITLE, queryBuilder.build(), response, method); } /** @@ -245,8 +249,8 @@ public class SysAreaRestController extends BaseRestController excelImport(MultipartHttpServletRequest request) { - return super.excelImport(request); + public ResultVo importExcel(MultipartHttpServletRequest request) { + return super.importExcel(request); } /** @@ -255,10 +259,12 @@ public class SysAreaRestController extends BaseRestController importTemplate(HttpServletResponse response) { - return super.importTemplate(SysAreaRestApi.TITLE, response); + public void importTemplate(HttpServletResponse response) { + // 当前方法 + Method method = ReflectUtil.getMethodByName(this.getClass(), "importTemplate"); + super.importTemplate(SysAreaRestApi.TITLE, response, method); } } diff --git a/opsli-modulars/opsli-modulars-system/src/main/java/org/opsli/modulars/system/dict/entity/SysDict.java b/opsli-modulars/opsli-modulars-system/src/main/java/org/opsli/modulars/system/dict/entity/SysDict.java index 170d6580..4b789b91 100644 --- a/opsli-modulars/opsli-modulars-system/src/main/java/org/opsli/modulars/system/dict/entity/SysDict.java +++ b/opsli-modulars/opsli-modulars-system/src/main/java/org/opsli/modulars/system/dict/entity/SysDict.java @@ -42,7 +42,7 @@ public class SysDict extends BaseEntity { private String typeName; /** 是否内置数据 0是 1否*/ - private Character izLock; + private String izLock; /** 备注 */ @TableField(updateStrategy = FieldStrategy.IGNORED) diff --git a/opsli-modulars/opsli-modulars-system/src/main/java/org/opsli/modulars/system/dict/entity/SysDictDetail.java b/opsli-modulars/opsli-modulars-system/src/main/java/org/opsli/modulars/system/dict/entity/SysDictDetail.java index 3f899962..415567d8 100644 --- a/opsli-modulars/opsli-modulars-system/src/main/java/org/opsli/modulars/system/dict/entity/SysDictDetail.java +++ b/opsli-modulars/opsli-modulars-system/src/main/java/org/opsli/modulars/system/dict/entity/SysDictDetail.java @@ -47,7 +47,7 @@ public class SysDictDetail extends BaseEntity { private String dictValue; /** 是否内置数据 0是 1否*/ - private Character izLock; + private String izLock; /** 排序 */ private Integer sortNo; diff --git a/opsli-modulars/opsli-modulars-system/src/main/java/org/opsli/modulars/system/dict/web/DictDetailRestController.java b/opsli-modulars/opsli-modulars-system/src/main/java/org/opsli/modulars/system/dict/web/DictDetailRestController.java index a1ad29e0..dbca5a06 100644 --- a/opsli-modulars/opsli-modulars-system/src/main/java/org/opsli/modulars/system/dict/web/DictDetailRestController.java +++ b/opsli-modulars/opsli-modulars-system/src/main/java/org/opsli/modulars/system/dict/web/DictDetailRestController.java @@ -16,6 +16,7 @@ package org.opsli.modulars.system.dict.web; import cn.hutool.core.convert.Convert; +import cn.hutool.core.util.ReflectUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import io.swagger.annotations.ApiOperation; import lombok.extern.slf4j.Slf4j; @@ -26,6 +27,7 @@ import org.opsli.api.wrapper.system.dict.DictDetailModel; import org.opsli.api.wrapper.system.user.UserModel; import org.opsli.common.annotation.ApiRestController; import org.opsli.common.annotation.EnableLog; +import org.opsli.common.annotation.RequiresPermissionsCus; import org.opsli.common.constants.MyBatisConstants; import org.opsli.common.exception.ServiceException; import org.opsli.core.base.concroller.BaseRestController; @@ -41,6 +43,7 @@ import org.springframework.web.multipart.MultipartHttpServletRequest; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; +import java.lang.reflect.Method; import java.util.List; @@ -58,7 +61,7 @@ public class DictDetailRestController extends BaseRestController dictList = IService.findList(wrapper); for (SysDictDetail sysDictDetail : dictList) { // 内置数据 只有超级管理员可以修改 - if(LOCK_DATA == sysDictDetail.getIzLock() ){ + if(LOCK_DATA.equals(sysDictDetail.getIzLock()) ){ UserModel user = UserUtil.getUser(); if(!UserUtil.SUPER_ADMIN.equals(user.getUsername())){ throw new ServiceException(SystemMsg.EXCEPTION_LOCK_DATA); @@ -205,12 +208,14 @@ public class DictDetailRestController extends BaseRestController exportExcel(HttpServletRequest request, HttpServletResponse response) { + public void exportExcel(HttpServletRequest request, HttpServletResponse response) { + // 当前方法 + Method method = ReflectUtil.getMethodByName(this.getClass(), "exportExcel"); QueryBuilder queryBuilder = new WebQueryBuilder<>(SysDictDetail.class, request.getParameterMap()); - return super.excelExport(DictDetailApi.TITLE, queryBuilder.build(), response); + super.excelExport(DictDetailApi.TITLE, queryBuilder.build(), response, method); } /** @@ -222,8 +227,8 @@ public class DictDetailRestController extends BaseRestController excelImport(MultipartHttpServletRequest request) { - return super.excelImport(request); + public ResultVo importExcel(MultipartHttpServletRequest request) { + return super.importExcel(request); } /** @@ -232,10 +237,12 @@ public class DictDetailRestController extends BaseRestController importTemplate(HttpServletResponse response) { - return super.importTemplate(DictDetailApi.TITLE, response); + public void importTemplate(HttpServletResponse response) { + // 当前方法 + Method method = ReflectUtil.getMethodByName(this.getClass(), "importTemplate"); + super.importTemplate(DictDetailApi.TITLE, response, method); } /** diff --git a/opsli-modulars/opsli-modulars-system/src/main/java/org/opsli/modulars/system/dict/web/DictRestController.java b/opsli-modulars/opsli-modulars-system/src/main/java/org/opsli/modulars/system/dict/web/DictRestController.java index 26a0dc1a..0537626a 100644 --- a/opsli-modulars/opsli-modulars-system/src/main/java/org/opsli/modulars/system/dict/web/DictRestController.java +++ b/opsli-modulars/opsli-modulars-system/src/main/java/org/opsli/modulars/system/dict/web/DictRestController.java @@ -16,6 +16,7 @@ package org.opsli.modulars.system.dict.web; import cn.hutool.core.convert.Convert; +import cn.hutool.core.util.ReflectUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import io.swagger.annotations.ApiOperation; import lombok.extern.slf4j.Slf4j; @@ -27,6 +28,7 @@ import org.opsli.api.wrapper.system.dict.DictWrapper; import org.opsli.api.wrapper.system.user.UserModel; import org.opsli.common.annotation.ApiRestController; import org.opsli.common.annotation.EnableLog; +import org.opsli.common.annotation.RequiresPermissionsCus; import org.opsli.common.api.TokenThreadLocal; import org.opsli.common.constants.MyBatisConstants; import org.opsli.common.exception.ServiceException; @@ -44,6 +46,7 @@ import org.springframework.web.multipart.MultipartHttpServletRequest; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; +import java.lang.reflect.Method; import java.util.List; @@ -60,7 +63,7 @@ public class DictRestController extends BaseRestController dictList = IService.findList(wrapper); for (SysDict sysDict : dictList) { // 内置数据 只有超级管理员可以修改 - if(LOCK_DATA == sysDict.getIzLock() ){ + if(LOCK_DATA.equals(sysDict.getIzLock()) ){ UserModel user = UserUtil.getUser(); if(!UserUtil.SUPER_ADMIN.equals(user.getUsername())){ throw new ServiceException(SystemMsg.EXCEPTION_LOCK_DATA); @@ -207,12 +210,14 @@ public class DictRestController extends BaseRestController exportExcel(HttpServletRequest request, HttpServletResponse response) { + public void exportExcel(HttpServletRequest request, HttpServletResponse response) { + // 当前方法 + Method method = ReflectUtil.getMethodByName(this.getClass(), "exportExcel"); QueryBuilder queryBuilder = new WebQueryBuilder<>(SysDict.class, request.getParameterMap()); - return super.excelExport(DictApi.TITLE, queryBuilder.build(), response); + super.excelExport(DictApi.TITLE, queryBuilder.build(), response, method); } /** @@ -224,8 +229,8 @@ public class DictRestController extends BaseRestController excelImport(MultipartHttpServletRequest request) { - return super.excelImport(request); + public ResultVo importExcel(MultipartHttpServletRequest request) { + return super.importExcel(request); } /** @@ -234,10 +239,12 @@ public class DictRestController extends BaseRestController importTemplate(HttpServletResponse response) { - return super.importTemplate(DictApi.TITLE, response); + public void importTemplate(HttpServletResponse response) { + // 当前方法 + Method method = ReflectUtil.getMethodByName(this.getClass(), "importTemplate"); + super.importTemplate(DictApi.TITLE, response, method); } /** diff --git a/opsli-modulars/opsli-modulars-system/src/main/java/org/opsli/modulars/system/login/web/LoginRestController.java b/opsli-modulars/opsli-modulars-system/src/main/java/org/opsli/modulars/system/login/web/LoginRestController.java index 9fb8c99f..1b1281ff 100644 --- a/opsli-modulars/opsli-modulars-system/src/main/java/org/opsli/modulars/system/login/web/LoginRestController.java +++ b/opsli-modulars/opsli-modulars-system/src/main/java/org/opsli/modulars/system/login/web/LoginRestController.java @@ -29,6 +29,7 @@ import org.opsli.common.utils.IPUtil; import org.opsli.core.msg.TokenMsg; import org.opsli.core.persistence.querybuilder.GenQueryBuilder; import org.opsli.core.persistence.querybuilder.QueryBuilder; +import org.opsli.core.security.shiro.realm.OAuth2Realm; import org.opsli.core.utils.CaptchaUtil; import org.opsli.core.utils.UserTokenUtil; import org.opsli.core.utils.UserUtil; @@ -64,6 +65,7 @@ import java.util.Map; @RestController public class LoginRestController { + @Autowired private ITenantService iTenantService; @Autowired @@ -108,7 +110,7 @@ public class LoginRestController { UserTokenUtil.clearLockAccount(form.getUsername()); // 账号锁定 - if(user.getLocked() == 1){ + if(OAuth2Realm.LOCK_VAL.equals(user.getLocked())){ throw new TokenException(TokenMsg.EXCEPTION_LOGIN_ACCOUNT_LOCKED); } diff --git a/opsli-modulars/opsli-modulars-system/src/main/java/org/opsli/modulars/system/menu/web/MenuRestController.java b/opsli-modulars/opsli-modulars-system/src/main/java/org/opsli/modulars/system/menu/web/MenuRestController.java index 28b628f6..cdd0d3ec 100644 --- a/opsli-modulars/opsli-modulars-system/src/main/java/org/opsli/modulars/system/menu/web/MenuRestController.java +++ b/opsli-modulars/opsli-modulars-system/src/main/java/org/opsli/modulars/system/menu/web/MenuRestController.java @@ -18,6 +18,7 @@ package org.opsli.modulars.system.menu.web; import cn.hutool.core.lang.tree.Tree; import cn.hutool.core.lang.tree.TreeNodeConfig; import cn.hutool.core.lang.tree.TreeUtil; +import cn.hutool.core.util.ReflectUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.google.common.collect.Maps; import io.swagger.annotations.ApiOperation; @@ -30,6 +31,7 @@ import org.opsli.api.wrapper.system.menu.MenuModel; import org.opsli.api.wrapper.system.user.UserModel; import org.opsli.common.annotation.ApiRestController; import org.opsli.common.annotation.EnableLog; +import org.opsli.common.annotation.RequiresPermissionsCus; import org.opsli.common.utils.WrapperUtil; import org.opsli.core.base.concroller.BaseRestController; import org.opsli.core.general.StartPrint; @@ -45,6 +47,7 @@ import org.springframework.web.multipart.MultipartHttpServletRequest; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; +import java.lang.reflect.Method; import java.util.List; import java.util.Map; @@ -388,12 +391,14 @@ public class MenuRestController extends BaseRestController exportExcel(HttpServletRequest request, HttpServletResponse response) { + public void exportExcel(HttpServletRequest request, HttpServletResponse response) { + // 当前方法 + Method method = ReflectUtil.getMethodByName(this.getClass(), "exportExcel"); QueryBuilder queryBuilder = new WebQueryBuilder<>(SysMenu.class, request.getParameterMap()); - return super.excelExport(MenuApi.TITLE, queryBuilder.build(), response); + super.excelExport(MenuApi.TITLE, queryBuilder.build(), response, method); } /** @@ -405,8 +410,8 @@ public class MenuRestController extends BaseRestController excelImport(MultipartHttpServletRequest request) { - return super.excelImport(request); + public ResultVo importExcel(MultipartHttpServletRequest request) { + return super.importExcel(request); } /** @@ -415,11 +420,13 @@ public class MenuRestController extends BaseRestController importTemplate(HttpServletResponse response) { - return super.importTemplate(MenuApi.TITLE, response); + public void importTemplate(HttpServletResponse response) { + // 当前方法 + Method method = ReflectUtil.getMethodByName(this.getClass(), "importTemplate"); + super.importTemplate(MenuApi.TITLE, response, method); } diff --git a/opsli-modulars/opsli-modulars-system/src/main/java/org/opsli/modulars/system/org/mapper/xml/SysOrgMapper.xml b/opsli-modulars/opsli-modulars-system/src/main/java/org/opsli/modulars/system/org/mapper/xml/SysOrgMapper.xml index f71d3968..93f07d7d 100755 --- a/opsli-modulars/opsli-modulars-system/src/main/java/org/opsli/modulars/system/org/mapper/xml/SysOrgMapper.xml +++ b/opsli-modulars/opsli-modulars-system/src/main/java/org/opsli/modulars/system/org/mapper/xml/SysOrgMapper.xml @@ -23,18 +23,6 @@ - - -